aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/alpha/kernel/pci-noop.c2
-rw-r--r--arch/alpha/kernel/pci_iommu.c2
-rw-r--r--arch/alpha/kernel/time.c4
-rw-r--r--arch/alpha/mm/numa.c3
-rw-r--r--arch/alpha/mm/remap.c6
-rw-r--r--arch/arm/Kconfig4
-rw-r--r--arch/arm/Makefile14
-rw-r--r--arch/arm/boot/compressed/head.S3
-rw-r--r--arch/arm/boot/compressed/misc.c2
-rw-r--r--arch/arm/common/amba.c2
-rw-r--r--arch/arm/common/dmabounce.c165
-rw-r--r--arch/arm/common/locomo.c10
-rw-r--r--arch/arm/common/sa1111.c11
-rw-r--r--arch/arm/common/scoop.c27
-rw-r--r--arch/arm/configs/ixdp2400_defconfig2
-rw-r--r--arch/arm/configs/ixdp2800_defconfig2
-rw-r--r--arch/arm/configs/mp1000_defconfig897
-rw-r--r--arch/arm/kernel/Makefile2
-rw-r--r--arch/arm/kernel/arthur.c1
-rw-r--r--arch/arm/kernel/asm-offsets.c1
-rw-r--r--arch/arm/kernel/entry-armv.S3
-rw-r--r--arch/arm/kernel/head.S57
-rw-r--r--arch/arm/kernel/module.c1
-rw-r--r--arch/arm/kernel/ptrace.c2
-rw-r--r--arch/arm/kernel/signal.c96
-rw-r--r--arch/arm/kernel/time.c4
-rw-r--r--arch/arm/kernel/traps.c47
-rw-r--r--arch/arm/kernel/vmlinux.lds.S11
-rw-r--r--arch/arm/lib/Makefile2
-rw-r--r--arch/arm/lib/ashldi3.S48
-rw-r--r--arch/arm/lib/ashldi3.c56
-rw-r--r--arch/arm/lib/ashrdi3.S48
-rw-r--r--arch/arm/lib/ashrdi3.c57
-rw-r--r--arch/arm/lib/gcclib.h22
-rw-r--r--arch/arm/lib/lshrdi3.S48
-rw-r--r--arch/arm/lib/lshrdi3.c56
-rw-r--r--arch/arm/lib/muldi3.S44
-rw-r--r--arch/arm/lib/muldi3.c72
-rw-r--r--arch/arm/lib/sha1.S206
-rw-r--r--arch/arm/lib/ucmpdi2.S35
-rw-r--r--arch/arm/lib/ucmpdi2.c49
-rw-r--r--arch/arm/mach-aaec2000/Makefile2
-rw-r--r--arch/arm/mach-aaec2000/aaed2000.c50
-rw-r--r--arch/arm/mach-aaec2000/clock.c110
-rw-r--r--arch/arm/mach-aaec2000/clock.h23
-rw-r--r--arch/arm/mach-aaec2000/core.c135
-rw-r--r--arch/arm/mach-aaec2000/core.h11
-rw-r--r--arch/arm/mach-clps711x/Kconfig11
-rw-r--r--arch/arm/mach-clps711x/Makefile1
-rw-r--r--arch/arm/mach-clps711x/autcpu12.c12
-rw-r--r--arch/arm/mach-clps711x/cdb89712.c7
-rw-r--r--arch/arm/mach-clps711x/ceiva.c12
-rw-r--r--arch/arm/mach-clps711x/edb7211-mm.c30
-rw-r--r--arch/arm/mach-clps711x/mm.c8
-rw-r--r--arch/arm/mach-clps711x/mp1000-mach.c49
-rw-r--r--arch/arm/mach-clps711x/mp1000-mm.c47
-rw-r--r--arch/arm/mach-clps711x/mp1000-seprom.c195
-rw-r--r--arch/arm/mach-clps711x/p720t.c14
-rw-r--r--arch/arm/mach-clps7500/core.c25
-rw-r--r--arch/arm/mach-ebsa110/core.c38
-rw-r--r--arch/arm/mach-ebsa110/io.c1
-rw-r--r--arch/arm/mach-epxa10db/mm.c37
-rw-r--r--arch/arm/mach-footbridge/common.c57
-rw-r--r--arch/arm/mach-h720x/common.c7
-rw-r--r--arch/arm/mach-imx/generic.c10
-rw-r--r--arch/arm/mach-imx/mx1ads.c38
-rw-r--r--arch/arm/mach-integrator/clock.c1
-rw-r--r--arch/arm/mach-integrator/integrator_ap.c80
-rw-r--r--arch/arm/mach-integrator/integrator_cp.c67
-rw-r--r--arch/arm/mach-integrator/lm.c1
-rw-r--r--arch/arm/mach-iop3xx/iop321-setup.c18
-rw-r--r--arch/arm/mach-iop3xx/iop331-setup.c18
-rw-r--r--arch/arm/mach-iop3xx/iq31244-mm.c10
-rw-r--r--arch/arm/mach-iop3xx/iq31244-pci.c2
-rw-r--r--arch/arm/mach-iop3xx/iq80321-mm.c10
-rw-r--r--arch/arm/mach-iop3xx/iq80321-pci.c2
-rw-r--r--arch/arm/mach-iop3xx/iq80331-pci.c2
-rw-r--r--arch/arm/mach-iop3xx/iq80332-pci.c2
-rw-r--r--arch/arm/mach-ixp2000/core.c16
-rw-r--r--arch/arm/mach-ixp2000/ixdp2x00.c2
-rw-r--r--arch/arm/mach-ixp2000/ixdp2x01.c2
-rw-r--r--arch/arm/mach-ixp4xx/common.c8
-rw-r--r--arch/arm/mach-lh7a40x/arch-kev7a400.c13
-rw-r--r--arch/arm/mach-lh7a40x/arch-lpd7a40x.c86
-rw-r--r--arch/arm/mach-omap1/board-innovator.c8
-rw-r--r--arch/arm/mach-omap1/board-perseus2.c8
-rw-r--r--arch/arm/mach-omap1/io.c46
-rw-r--r--arch/arm/mach-pxa/corgi.c20
-rw-r--r--arch/arm/mach-pxa/corgi_ssp.c24
-rw-r--r--arch/arm/mach-pxa/generic.c83
-rw-r--r--arch/arm/mach-pxa/idp.c21
-rw-r--r--arch/arm/mach-pxa/lubbock.c27
-rw-r--r--arch/arm/mach-pxa/mainstone.c32
-rw-r--r--arch/arm/mach-pxa/poodle.c21
-rw-r--r--arch/arm/mach-pxa/pxa25x.c2
-rw-r--r--arch/arm/mach-pxa/pxa27x.c2
-rw-r--r--arch/arm/mach-pxa/sleep.S7
-rw-r--r--arch/arm/mach-pxa/spitz.c19
-rw-r--r--arch/arm/mach-pxa/standby.S2
-rw-r--r--arch/arm/mach-rpc/riscpc.c19
-rw-r--r--arch/arm/mach-s3c2410/cpu.h2
-rw-r--r--arch/arm/mach-s3c2410/devs.c36
-rw-r--r--arch/arm/mach-s3c2410/gpio.c22
-rw-r--r--arch/arm/mach-s3c2410/mach-bast.c40
-rw-r--r--arch/arm/mach-s3c2410/mach-h1940.c3
-rw-r--r--arch/arm/mach-s3c2410/mach-smdk2440.c70
-rw-r--r--arch/arm/mach-sa1100/assabet.c14
-rw-r--r--arch/arm/mach-sa1100/badge4.c20
-rw-r--r--arch/arm/mach-sa1100/cerf.c8
-rw-r--r--arch/arm/mach-sa1100/collie.c14
-rw-r--r--arch/arm/mach-sa1100/generic.c29
-rw-r--r--arch/arm/mach-sa1100/h3600.c20
-rw-r--r--arch/arm/mach-sa1100/hackkit.c8
-rw-r--r--arch/arm/mach-sa1100/jornada720.c84
-rw-r--r--arch/arm/mach-sa1100/lart.c14
-rw-r--r--arch/arm/mach-sa1100/neponset.c44
-rw-r--r--arch/arm/mach-sa1100/simpad.c16
-rw-r--r--arch/arm/mach-shark/core.c7
-rw-r--r--arch/arm/mach-versatile/clock.c1
-rw-r--r--arch/arm/mach-versatile/core.c83
-rw-r--r--arch/arm/mm/consistent.c14
-rw-r--r--arch/arm/mm/copypage-v6.c16
-rw-r--r--arch/arm/mm/fault-armv.c7
-rw-r--r--arch/arm/mm/init.c488
-rw-r--r--arch/arm/mm/ioremap.c5
-rw-r--r--arch/arm/mm/mm-armv.c187
-rw-r--r--arch/arm/oprofile/Makefile4
-rw-r--r--arch/arm/oprofile/backtrace.c46
-rw-r--r--arch/arm/oprofile/common.c185
-rw-r--r--arch/arm/oprofile/init.c33
-rw-r--r--arch/arm/oprofile/op_arm_model.h4
-rw-r--r--arch/arm/plat-omap/clock.c1
-rw-r--r--arch/arm/plat-omap/sram.c6
-rw-r--r--arch/arm26/kernel/ptrace.c2
-rw-r--r--arch/arm26/kernel/time.c4
-rw-r--r--arch/arm26/mm/memc.c18
-rw-r--r--arch/cris/arch-v10/drivers/axisflashmap.c1
-rw-r--r--arch/cris/arch-v32/drivers/axisflashmap.c1
-rw-r--r--arch/cris/arch-v32/mm/tlb.c6
-rw-r--r--arch/cris/kernel/time.c5
-rw-r--r--arch/cris/mm/ioremap.c4
-rw-r--r--arch/frv/kernel/ptrace.c2
-rw-r--r--arch/frv/kernel/time.c4
-rw-r--r--arch/frv/mb93090-mb00/pci-dma-nommu.c2
-rw-r--r--arch/frv/mb93090-mb00/pci-dma.c2
-rw-r--r--arch/frv/mm/dma-alloc.c7
-rw-r--r--arch/frv/mm/pgalloc.c4
-rw-r--r--arch/h8300/kernel/ptrace.c2
-rw-r--r--arch/h8300/kernel/time.c4
-rw-r--r--arch/i386/Kconfig310
-rw-r--r--arch/i386/Kconfig.cpu309
-rw-r--r--arch/i386/Makefile31
-rw-r--r--arch/i386/Makefile.cpu41
-rw-r--r--arch/i386/kernel/apic.c82
-rw-r--r--arch/i386/kernel/apm.c40
-rw-r--r--arch/i386/kernel/cpu/common.c15
-rw-r--r--arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c1
-rw-r--r--arch/i386/kernel/cpu/cpufreq/p4-clockmod.c1
-rw-r--r--arch/i386/kernel/cpu/cpufreq/powernow-k8.c1
-rw-r--r--arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c1
-rw-r--r--arch/i386/kernel/cpu/intel_cacheinfo.c87
-rw-r--r--arch/i386/kernel/cpu/mcheck/p6.c11
-rw-r--r--arch/i386/kernel/cpu/mtrr/if.c119
-rw-r--r--arch/i386/kernel/cpu/proc.c2
-rw-r--r--arch/i386/kernel/cpuid.c2
-rw-r--r--arch/i386/kernel/crash.c7
-rw-r--r--arch/i386/kernel/i8259.c4
-rw-r--r--arch/i386/kernel/io_apic.c153
-rw-r--r--arch/i386/kernel/irq.c8
-rw-r--r--arch/i386/kernel/mpparse.c41
-rw-r--r--arch/i386/kernel/msr.c2
-rw-r--r--arch/i386/kernel/nmi.c39
-rw-r--r--arch/i386/kernel/ptrace.c2
-rw-r--r--arch/i386/kernel/reboot_fixups.c2
-rw-r--r--arch/i386/kernel/setup.c24
-rw-r--r--arch/i386/kernel/smpboot.c72
-rw-r--r--arch/i386/kernel/srat.c7
-rw-r--r--arch/i386/kernel/time.c16
-rw-r--r--arch/i386/kernel/time_hpet.c20
-rw-r--r--arch/i386/kernel/timers/timer_hpet.c17
-rw-r--r--arch/i386/kernel/timers/timer_tsc.c21
-rw-r--r--arch/i386/kernel/traps.c1
-rw-r--r--arch/i386/kernel/vm86.c17
-rw-r--r--arch/i386/mach-es7000/es7000.h11
-rw-r--r--arch/i386/mach-es7000/es7000plat.c11
-rw-r--r--arch/i386/mm/discontig.c4
-rw-r--r--arch/i386/mm/fault.c2
-rw-r--r--arch/i386/mm/init.c62
-rw-r--r--arch/i386/mm/ioremap.c4
-rw-r--r--arch/i386/mm/pgtable.c11
-rw-r--r--arch/i386/oprofile/backtrace.c38
-rw-r--r--arch/i386/pci/fixup.c59
-rw-r--r--arch/i386/pci/irq.c55
-rw-r--r--arch/i386/power/cpu.c12
-rw-r--r--arch/ia64/Kconfig98
-rw-r--r--arch/ia64/configs/bigsur_defconfig395
-rw-r--r--arch/ia64/configs/gensparse_defconfig1319
-rw-r--r--arch/ia64/configs/tiger_defconfig86
-rw-r--r--arch/ia64/configs/zx1_defconfig92
-rw-r--r--arch/ia64/defconfig265
-rw-r--r--arch/ia64/hp/common/hwsw_iommu.c15
-rw-r--r--arch/ia64/hp/common/sba_iommu.c47
-rw-r--r--arch/ia64/hp/sim/simscsi.c13
-rw-r--r--arch/ia64/ia32/sys_ia32.c1
-rw-r--r--arch/ia64/kernel/acpi.c13
-rw-r--r--arch/ia64/kernel/cyclone.c1
-rw-r--r--arch/ia64/kernel/efi.c510
-rw-r--r--arch/ia64/kernel/irq.c12
-rw-r--r--arch/ia64/kernel/mca.c4
-rw-r--r--arch/ia64/kernel/module.c6
-rw-r--r--arch/ia64/kernel/patch.c16
-rw-r--r--arch/ia64/kernel/perfmon.c3
-rw-r--r--arch/ia64/kernel/ptrace.c28
-rw-r--r--arch/ia64/kernel/setup.c63
-rw-r--r--arch/ia64/kernel/smp.c10
-rw-r--r--arch/ia64/kernel/smpboot.c6
-rw-r--r--arch/ia64/kernel/time.c4
-rw-r--r--arch/ia64/kernel/uncached.c17
-rw-r--r--arch/ia64/lib/swiotlb.c104
-rw-r--r--arch/ia64/mm/Makefile5
-rw-r--r--arch/ia64/mm/contig.c4
-rw-r--r--arch/ia64/mm/discontig.c50
-rw-r--r--arch/ia64/mm/fault.c34
-rw-r--r--arch/ia64/mm/init.c15
-rw-r--r--arch/ia64/mm/numa.c24
-rw-r--r--arch/ia64/mm/tlb.c23
-rw-r--r--arch/ia64/pci/pci.c58
-rw-r--r--arch/ia64/sn/kernel/bte.c2
-rw-r--r--arch/ia64/sn/kernel/io_init.c4
-rw-r--r--arch/ia64/sn/kernel/setup.c160
-rw-r--r--arch/ia64/sn/kernel/sn2/sn2_smp.c31
-rw-r--r--arch/ia64/sn/kernel/sn2/sn_hwperf.c4
-rw-r--r--arch/ia64/sn/kernel/tiocx.c67
-rw-r--r--arch/ia64/sn/kernel/xpc.h368
-rw-r--r--arch/ia64/sn/kernel/xpc_channel.c329
-rw-r--r--arch/ia64/sn/kernel/xpc_main.c330
-rw-r--r--arch/ia64/sn/kernel/xpc_partition.c475
-rw-r--r--arch/ia64/sn/pci/pci_dma.c48
-rw-r--r--arch/ia64/sn/pci/pcibr/pcibr_reg.c59
-rw-r--r--arch/ia64/sn/pci/tioca_provider.c32
-rw-r--r--arch/ia64/sn/pci/tioce_provider.c30
-rw-r--r--arch/m32r/kernel/entry.S2
-rw-r--r--arch/m32r/kernel/io_m32700ut.c6
-rw-r--r--arch/m32r/kernel/io_mappi.c2
-rw-r--r--arch/m32r/kernel/io_mappi2.c11
-rw-r--r--arch/m32r/kernel/io_mappi3.c7
-rw-r--r--arch/m32r/kernel/io_oaks32r.c2
-rw-r--r--arch/m32r/kernel/io_opsput.c8
-rw-r--r--arch/m32r/kernel/io_usrv.c2
-rw-r--r--arch/m32r/kernel/ptrace.c2
-rw-r--r--arch/m32r/kernel/setup.c24
-rw-r--r--arch/m32r/kernel/time.c4
-rw-r--r--arch/m32r/lib/csum_partial_copy.c2
-rw-r--r--arch/m32r/mm/init.c9
-rw-r--r--arch/m32r/mm/ioremap.c4
-rw-r--r--arch/m68k/Kconfig24
-rw-r--r--arch/m68k/atari/stram.c918
-rw-r--r--arch/m68k/kernel/ptrace.c2
-rw-r--r--arch/m68k/kernel/time.c4
-rw-r--r--arch/m68k/mm/kmap.c2
-rw-r--r--arch/m68k/sun3x/dvma.c2
-rw-r--r--arch/m68knommu/kernel/ptrace.c2
-rw-r--r--arch/m68knommu/kernel/time.c4
-rw-r--r--arch/mips/Kconfig1510
-rw-r--r--arch/mips/Makefile118
-rw-r--r--arch/mips/arc/Makefile2
-rw-r--r--arch/mips/arc/identify.c5
-rw-r--r--arch/mips/au1000/common/Makefile2
-rw-r--r--arch/mips/au1000/common/au1xxx_irqmap.c32
-rw-r--r--arch/mips/au1000/common/cputable.c3
-rw-r--r--arch/mips/au1000/common/dbdma.c319
-rw-r--r--arch/mips/au1000/common/dma.c1
-rw-r--r--arch/mips/au1000/common/gpio.c119
-rw-r--r--arch/mips/au1000/common/irq.c105
-rw-r--r--arch/mips/au1000/common/platform.c248
-rw-r--r--arch/mips/au1000/common/power.c19
-rw-r--r--arch/mips/au1000/common/prom.c3
-rw-r--r--arch/mips/au1000/common/puts.c77
-rw-r--r--arch/mips/au1000/common/setup.c12
-rw-r--r--arch/mips/au1000/common/time.c26
-rw-r--r--arch/mips/au1000/common/usbdev.c12
-rw-r--r--arch/mips/au1000/csb250/init.c1
-rw-r--r--arch/mips/au1000/db1x00/irqmap.c32
-rw-r--r--arch/mips/au1000/db1x00/mirage_ts.c16
-rw-r--r--arch/mips/au1000/hydrogen3/init.c1
-rw-r--r--arch/mips/au1000/mtx-1/init.c1
-rw-r--r--arch/mips/au1000/mtx-1/irqmap.c11
-rw-r--r--arch/mips/au1000/pb1000/init.c1
-rw-r--r--arch/mips/au1000/pb1200/Makefile5
-rw-r--r--arch/mips/au1000/pb1200/board_setup.c193
-rw-r--r--arch/mips/au1000/pb1200/init.c69
-rw-r--r--arch/mips/au1000/pb1200/irqmap.c182
-rw-r--r--arch/mips/au1000/pb1500/irqmap.c5
-rw-r--r--arch/mips/au1000/pb1550/irqmap.c5
-rw-r--r--arch/mips/boot/Makefile4
-rw-r--r--arch/mips/cobalt/Makefile2
-rw-r--r--arch/mips/cobalt/int-handler.S4
-rw-r--r--arch/mips/cobalt/irq.c111
-rw-r--r--arch/mips/cobalt/promcon.c87
-rw-r--r--arch/mips/cobalt/reset.c59
-rw-r--r--arch/mips/cobalt/setup.c104
-rw-r--r--arch/mips/configs/atlas_defconfig660
-rw-r--r--arch/mips/configs/bigsur_defconfig881
-rw-r--r--arch/mips/configs/capcella_defconfig450
-rw-r--r--arch/mips/configs/cobalt_defconfig367
-rw-r--r--arch/mips/configs/db1000_defconfig498
-rw-r--r--arch/mips/configs/db1100_defconfig558
-rw-r--r--arch/mips/configs/db1200_defconfig987
-rw-r--r--arch/mips/configs/db1500_defconfig459
-rw-r--r--arch/mips/configs/db1550_defconfig441
-rw-r--r--arch/mips/configs/ddb5476_defconfig389
-rw-r--r--arch/mips/configs/ddb5477_defconfig377
-rw-r--r--arch/mips/configs/decstation_defconfig463
-rw-r--r--arch/mips/configs/e55_defconfig403
-rw-r--r--arch/mips/configs/ev64120_defconfig376
-rw-r--r--arch/mips/configs/ev96100_defconfig359
-rw-r--r--arch/mips/configs/ip22_defconfig479
-rw-r--r--arch/mips/configs/ip27_defconfig466
-rw-r--r--arch/mips/configs/ip32_defconfig390
-rw-r--r--arch/mips/configs/it8172_defconfig372
-rw-r--r--arch/mips/configs/ivr_defconfig376
-rw-r--r--arch/mips/configs/jaguar-atx_defconfig339
-rw-r--r--arch/mips/configs/jmr3927_defconfig388
-rw-r--r--arch/mips/configs/lasat200_defconfig378
-rw-r--r--arch/mips/configs/malta_defconfig724
-rw-r--r--arch/mips/configs/mipssim_defconfig775
-rw-r--r--arch/mips/configs/mpc30x_defconfig607
-rw-r--r--arch/mips/configs/ocelot_3_defconfig457
-rw-r--r--arch/mips/configs/ocelot_c_defconfig372
-rw-r--r--arch/mips/configs/ocelot_defconfig359
-rw-r--r--arch/mips/configs/ocelot_g_defconfig372
-rw-r--r--arch/mips/configs/pb1100_defconfig434
-rw-r--r--arch/mips/configs/pb1500_defconfig512
-rw-r--r--arch/mips/configs/pb1550_defconfig508
-rw-r--r--arch/mips/configs/pnx8550-jbs_defconfig1069
-rw-r--r--arch/mips/configs/pnx8550-v2pci_defconfig1251
-rw-r--r--arch/mips/configs/qemu_defconfig106
-rw-r--r--arch/mips/configs/rbhma4500_defconfig1259
-rw-r--r--arch/mips/configs/rm200_defconfig801
-rw-r--r--arch/mips/configs/sb1250-swarm_defconfig397
-rw-r--r--arch/mips/configs/sead_defconfig234
-rw-r--r--arch/mips/configs/tb0226_defconfig684
-rw-r--r--arch/mips/configs/tb0229_defconfig541
-rw-r--r--arch/mips/configs/tb0287_defconfig170
-rw-r--r--arch/mips/configs/workpad_defconfig416
-rw-r--r--arch/mips/configs/yosemite_defconfig346
-rw-r--r--arch/mips/ddb5xxx/Kconfig4
-rw-r--r--arch/mips/ddb5xxx/ddb5074/nile4_pic.c15
-rw-r--r--arch/mips/ddb5xxx/ddb5074/setup.c4
-rw-r--r--arch/mips/ddb5xxx/ddb5476/setup.c4
-rw-r--r--arch/mips/ddb5xxx/ddb5476/vrc5476_irq.c15
-rw-r--r--arch/mips/ddb5xxx/ddb5477/irq_5477.c15
-rw-r--r--arch/mips/ddb5xxx/ddb5477/setup.c6
-rw-r--r--arch/mips/dec/Makefile4
-rw-r--r--arch/mips/dec/ecc-berr.c48
-rw-r--r--arch/mips/dec/int-handler.S18
-rw-r--r--arch/mips/dec/kn01-berr.c201
-rw-r--r--arch/mips/dec/kn02-irq.c13
-rw-r--r--arch/mips/dec/kn02xa-berr.c139
-rw-r--r--arch/mips/dec/prom/identify.c28
-rw-r--r--arch/mips/dec/prom/init.c16
-rw-r--r--arch/mips/dec/prom/memory.c14
-rw-r--r--arch/mips/dec/reset.c2
-rw-r--r--arch/mips/dec/setup.c57
-rw-r--r--arch/mips/defconfig479
-rw-r--r--arch/mips/galileo-boards/ev96100/setup.c4
-rw-r--r--arch/mips/gt64120/ev64120/Kconfig3
-rw-r--r--arch/mips/gt64120/ev64120/setup.c4
-rw-r--r--arch/mips/gt64120/momenco_ocelot/setup.c4
-rw-r--r--arch/mips/ite-boards/Kconfig8
-rw-r--r--arch/mips/ite-boards/generic/irq.c30
-rw-r--r--arch/mips/ite-boards/generic/it8172_setup.c4
-rw-r--r--arch/mips/jazz/Kconfig33
-rw-r--r--arch/mips/jazz/irq.c15
-rw-r--r--arch/mips/jazz/setup.c4
-rw-r--r--arch/mips/jmr3927/rbhma3100/irq.c14
-rw-r--r--arch/mips/jmr3927/rbhma3100/setup.c38
-rw-r--r--arch/mips/kernel/Makefile14
-rw-r--r--arch/mips/kernel/asm-offsets.c25
-rw-r--r--arch/mips/kernel/binfmt_elfn32.c4
-rw-r--r--arch/mips/kernel/binfmt_elfo32.c35
-rw-r--r--arch/mips/kernel/branch.c29
-rw-r--r--arch/mips/kernel/cpu-probe.c256
-rw-r--r--arch/mips/kernel/dma-no-isa.c28
-rw-r--r--arch/mips/kernel/entry.S54
-rw-r--r--arch/mips/kernel/gdb-low.S5
-rw-r--r--arch/mips/kernel/gdb-stub.c23
-rw-r--r--arch/mips/kernel/genex.S44
-rw-r--r--arch/mips/kernel/genrtc.c64
-rw-r--r--arch/mips/kernel/head.S70
-rw-r--r--arch/mips/kernel/i8259.c21
-rw-r--r--arch/mips/kernel/ioctl32.c6
-rw-r--r--arch/mips/kernel/irixelf.c254
-rw-r--r--arch/mips/kernel/irixinv.c7
-rw-r--r--arch/mips/kernel/irixioctl.c63
-rw-r--r--arch/mips/kernel/irixsig.c408
-rw-r--r--arch/mips/kernel/irq-msc01.c38
-rw-r--r--arch/mips/kernel/irq-mv6434x.c15
-rw-r--r--arch/mips/kernel/irq-rm7000.c14
-rw-r--r--arch/mips/kernel/irq-rm9000.c28
-rw-r--r--arch/mips/kernel/irq_cpu.c91
-rw-r--r--arch/mips/kernel/linux32.c164
-rw-r--r--arch/mips/kernel/module-elf32.c250
-rw-r--r--arch/mips/kernel/module-elf64.c274
-rw-r--r--arch/mips/kernel/module.c336
-rw-r--r--arch/mips/kernel/proc.c135
-rw-r--r--arch/mips/kernel/process.c213
-rw-r--r--arch/mips/kernel/ptrace.c244
-rw-r--r--arch/mips/kernel/ptrace32.c150
-rw-r--r--arch/mips/kernel/r4k_fpu.S5
-rw-r--r--arch/mips/kernel/rtlx.c341
-rw-r--r--arch/mips/kernel/scall32-o32.S13
-rw-r--r--arch/mips/kernel/scall64-64.S4
-rw-r--r--arch/mips/kernel/scall64-n32.S32
-rw-r--r--arch/mips/kernel/scall64-o32.S14
-rw-r--r--arch/mips/kernel/semaphore.c12
-rw-r--r--arch/mips/kernel/setup.c46
-rw-r--r--arch/mips/kernel/signal-common.h90
-rw-r--r--arch/mips/kernel/signal.c143
-rw-r--r--arch/mips/kernel/signal32.c114
-rw-r--r--arch/mips/kernel/signal_n32.c37
-rw-r--r--arch/mips/kernel/smp.c51
-rw-r--r--arch/mips/kernel/smp_mt.c366
-rw-r--r--arch/mips/kernel/syscall.c34
-rw-r--r--arch/mips/kernel/sysirix.c539
-rw-r--r--arch/mips/kernel/time.c16
-rw-r--r--arch/mips/kernel/traps.c499
-rw-r--r--arch/mips/kernel/unaligned.c10
-rw-r--r--arch/mips/kernel/vmlinux.lds.S13
-rw-r--r--arch/mips/kernel/vpe.c1296
-rw-r--r--arch/mips/lasat/Kconfig15
-rw-r--r--arch/mips/lasat/interrupt.c15
-rw-r--r--arch/mips/lasat/setup.c6
-rw-r--r--arch/mips/lib-32/dump_tlb.c106
-rw-r--r--arch/mips/lib-32/r3k_dump_tlb.c10
-rw-r--r--arch/mips/lib-64/dump_tlb.c10
-rw-r--r--arch/mips/lib/Makefile4
-rw-r--r--arch/mips/lib/csum_partial_copy.c8
-rw-r--r--arch/mips/lib/memcpy.S15
-rw-r--r--arch/mips/lib/uncached.c76
-rw-r--r--arch/mips/math-emu/cp1emu.c229
-rw-r--r--arch/mips/math-emu/dp_sqrt.c2
-rw-r--r--arch/mips/math-emu/dsemul.c17
-rw-r--r--arch/mips/math-emu/dsemul.h10
-rw-r--r--arch/mips/math-emu/ieee754.c16
-rw-r--r--arch/mips/math-emu/ieee754.h180
-rw-r--r--arch/mips/math-emu/kernel_linkage.c6
-rw-r--r--arch/mips/mips-boards/atlas/atlas_int.c15
-rw-r--r--arch/mips/mips-boards/atlas/atlas_setup.c8
-rw-r--r--arch/mips/mips-boards/generic/init.c91
-rw-r--r--arch/mips/mips-boards/generic/memory.c29
-rw-r--r--arch/mips/mips-boards/generic/mipsIRQ.S110
-rw-r--r--arch/mips/mips-boards/generic/pci.c167
-rw-r--r--arch/mips/mips-boards/generic/time.c88
-rw-r--r--arch/mips/mips-boards/malta/malta_int.c153
-rw-r--r--arch/mips/mips-boards/malta/malta_setup.c8
-rw-r--r--arch/mips/mips-boards/sead/sead_int.c12
-rw-r--r--arch/mips/mips-boards/sead/sead_setup.c2
-rw-r--r--arch/mips/mips-boards/sim/Makefile20
-rw-r--r--arch/mips/mips-boards/sim/cmdline.c59
-rw-r--r--arch/mips/mips-boards/sim/sim_IRQ.c148
-rw-r--r--arch/mips/mips-boards/sim/sim_cmdline.c33
-rw-r--r--arch/mips/mips-boards/sim/sim_int.c41
-rw-r--r--arch/mips/mips-boards/sim/sim_irq.S99
-rw-r--r--arch/mips/mips-boards/sim/sim_mem.c129
-rw-r--r--arch/mips/mips-boards/sim/sim_printf.c74
-rw-r--r--arch/mips/mips-boards/sim/sim_setup.c101
-rw-r--r--arch/mips/mips-boards/sim/sim_smp.c151
-rw-r--r--arch/mips/mips-boards/sim/sim_time.c215
-rw-r--r--arch/mips/mm/Makefile2
-rw-r--r--arch/mips/mm/c-r3k.c6
-rw-r--r--arch/mips/mm/c-r4k.c145
-rw-r--r--arch/mips/mm/c-sb1.c10
-rw-r--r--arch/mips/mm/c-tx39.c16
-rw-r--r--arch/mips/mm/cache.c106
-rw-r--r--arch/mips/mm/cerr-sb1.c54
-rw-r--r--arch/mips/mm/cex-sb1.S5
-rw-r--r--arch/mips/mm/dma-coherent.c6
-rw-r--r--arch/mips/mm/dma-ip27.c4
-rw-r--r--arch/mips/mm/dma-ip32.c4
-rw-r--r--arch/mips/mm/dma-noncoherent.c50
-rw-r--r--arch/mips/mm/fault.c17
-rw-r--r--arch/mips/mm/highmem.c19
-rw-r--r--arch/mips/mm/init.c34
-rw-r--r--arch/mips/mm/ioremap.c32
-rw-r--r--arch/mips/mm/pg-r4k.c21
-rw-r--r--arch/mips/mm/pg-sb1.c65
-rw-r--r--arch/mips/mm/pgtable-32.c36
-rw-r--r--arch/mips/mm/sc-rm7k.c39
-rw-r--r--arch/mips/mm/tlb-andes.c4
-rw-r--r--arch/mips/mm/tlb-r4k.c70
-rw-r--r--arch/mips/mm/tlb-sb1.c376
-rw-r--r--arch/mips/mm/tlbex.c245
-rw-r--r--arch/mips/momentum/Kconfig6
-rw-r--r--arch/mips/momentum/jaguar_atx/prom.c3
-rw-r--r--arch/mips/momentum/jaguar_atx/setup.c6
-rw-r--r--arch/mips/momentum/ocelot_3/prom.c3
-rw-r--r--arch/mips/momentum/ocelot_3/setup.c6
-rw-r--r--arch/mips/momentum/ocelot_c/cpci-irq.c15
-rw-r--r--arch/mips/momentum/ocelot_c/setup.c4
-rw-r--r--arch/mips/momentum/ocelot_c/uart-irq.c15
-rw-r--r--arch/mips/momentum/ocelot_g/setup.c6
-rw-r--r--arch/mips/oprofile/Kconfig2
-rw-r--r--arch/mips/oprofile/common.c28
-rw-r--r--arch/mips/oprofile/op_impl.h5
-rw-r--r--arch/mips/oprofile/op_model_mipsxx.c215
-rw-r--r--arch/mips/oprofile/op_model_rm9000.c3
-rw-r--r--arch/mips/pci/Makefile3
-rw-r--r--arch/mips/pci/fixup-atlas.c41
-rw-r--r--arch/mips/pci/fixup-au1000.c78
-rw-r--r--arch/mips/pci/fixup-cobalt.c55
-rw-r--r--arch/mips/pci/fixup-pnx8550.c57
-rw-r--r--arch/mips/pci/fixup-tx4938.c92
-rw-r--r--arch/mips/pci/ops-au1000.c14
-rw-r--r--arch/mips/pci/ops-bonito64.c14
-rw-r--r--arch/mips/pci/ops-gt64111.c10
-rw-r--r--arch/mips/pci/ops-gt64120.c10
-rw-r--r--arch/mips/pci/ops-msc.c31
-rw-r--r--arch/mips/pci/ops-nile4.c2
-rw-r--r--arch/mips/pci/ops-pnx8550.c284
-rw-r--r--arch/mips/pci/ops-tx4938.c198
-rw-r--r--arch/mips/pci/pci-bcm1480.c265
-rw-r--r--arch/mips/pci/pci-bcm1480ht.c224
-rw-r--r--arch/mips/pci/pci-ip27.c7
-rw-r--r--arch/mips/pci/pci-ip32.c4
-rw-r--r--arch/mips/pci/pci-lasat.c56
-rw-r--r--arch/mips/pci/pci.c19
-rw-r--r--arch/mips/philips/pnx8550/common/Kconfig1
-rw-r--r--arch/mips/philips/pnx8550/common/Makefile27
-rw-r--r--arch/mips/philips/pnx8550/common/gdb_hook.c109
-rw-r--r--arch/mips/philips/pnx8550/common/int.c293
-rw-r--r--arch/mips/philips/pnx8550/common/mipsIRQ.S76
-rw-r--r--arch/mips/philips/pnx8550/common/pci.c133
-rw-r--r--arch/mips/philips/pnx8550/common/platform.c135
-rw-r--r--arch/mips/philips/pnx8550/common/proc.c113
-rw-r--r--arch/mips/philips/pnx8550/common/prom.c138
-rw-r--r--arch/mips/philips/pnx8550/common/reset.c49
-rw-r--r--arch/mips/philips/pnx8550/common/setup.c149
-rw-r--r--arch/mips/philips/pnx8550/common/time.c105
-rw-r--r--arch/mips/philips/pnx8550/jbs/Makefile4
-rw-r--r--arch/mips/philips/pnx8550/jbs/board_setup.c65
-rw-r--r--arch/mips/philips/pnx8550/jbs/init.c57
-rw-r--r--arch/mips/philips/pnx8550/jbs/irqmap.c36
-rw-r--r--arch/mips/pmc-sierra/Kconfig3
-rw-r--r--arch/mips/pmc-sierra/yosemite/atmel_read_eeprom.h1
-rw-r--r--arch/mips/pmc-sierra/yosemite/ht-irq.c1
-rw-r--r--arch/mips/pmc-sierra/yosemite/ht.c1
-rw-r--r--arch/mips/pmc-sierra/yosemite/prom.c3
-rw-r--r--arch/mips/pmc-sierra/yosemite/setup.c6
-rw-r--r--arch/mips/pmc-sierra/yosemite/smp.c2
-rw-r--r--arch/mips/qemu/q-setup.c5
-rw-r--r--arch/mips/sgi-ip22/ip22-eisa.c148
-rw-r--r--arch/mips/sgi-ip22/ip22-setup.c6
-rw-r--r--arch/mips/sgi-ip27/Kconfig54
-rw-r--r--arch/mips/sgi-ip27/ip27-berr.c1
-rw-r--r--arch/mips/sgi-ip27/ip27-console.c4
-rw-r--r--arch/mips/sgi-ip27/ip27-init.c50
-rw-r--r--arch/mips/sgi-ip27/ip27-irq.c66
-rw-r--r--arch/mips/sgi-ip27/ip27-smp.c25
-rw-r--r--arch/mips/sgi-ip32/ip32-irq.c75
-rw-r--r--arch/mips/sgi-ip32/ip32-memory.c4
-rw-r--r--arch/mips/sgi-ip32/ip32-setup.c6
-rw-r--r--arch/mips/sibyte/Kconfig161
-rw-r--r--arch/mips/sibyte/bcm1480/Makefile5
-rw-r--r--arch/mips/sibyte/bcm1480/irq.c476
-rw-r--r--arch/mips/sibyte/bcm1480/irq_handler.S165
-rw-r--r--arch/mips/sibyte/bcm1480/setup.c136
-rw-r--r--arch/mips/sibyte/bcm1480/smp.c110
-rw-r--r--arch/mips/sibyte/bcm1480/time.c138
-rw-r--r--arch/mips/sibyte/cfe/smp.c14
-rw-r--r--arch/mips/sibyte/sb1250/bcm1250_tbprof.c154
-rw-r--r--arch/mips/sibyte/sb1250/bus_watcher.c2
-rw-r--r--arch/mips/sibyte/sb1250/irq.c121
-rw-r--r--arch/mips/sibyte/sb1250/setup.c4
-rw-r--r--arch/mips/sibyte/sb1250/smp.c18
-rw-r--r--arch/mips/sibyte/sb1250/time.c44
-rw-r--r--arch/mips/sibyte/swarm/rtc_m41t81.c47
-rw-r--r--arch/mips/sibyte/swarm/rtc_xicor1241.c42
-rw-r--r--arch/mips/sibyte/swarm/setup.c41
-rw-r--r--arch/mips/sibyte/swarm/time.c44
-rw-r--r--arch/mips/sni/irq.c15
-rw-r--r--arch/mips/sni/setup.c6
-rw-r--r--arch/mips/tx4927/Kconfig3
-rw-r--r--arch/mips/tx4927/common/tx4927_setup.c6
-rw-r--r--arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c23
-rw-r--r--arch/mips/tx4938/Kconfig24
-rw-r--r--arch/mips/tx4938/common/Makefile11
-rw-r--r--arch/mips/tx4938/common/dbgio.c50
-rw-r--r--arch/mips/tx4938/common/irq.c424
-rw-r--r--arch/mips/tx4938/common/irq_handler.S84
-rw-r--r--arch/mips/tx4938/common/prom.c129
-rw-r--r--arch/mips/tx4938/common/rtc_rx5c348.c202
-rw-r--r--arch/mips/tx4938/common/setup.c91
-rw-r--r--arch/mips/tx4938/toshiba_rbtx4938/Makefile9
-rw-r--r--arch/mips/tx4938/toshiba_rbtx4938/irq.c244
-rw-r--r--arch/mips/tx4938/toshiba_rbtx4938/prom.c78
-rw-r--r--arch/mips/tx4938/toshiba_rbtx4938/setup.c1035
-rw-r--r--arch/mips/tx4938/toshiba_rbtx4938/spi_eeprom.c219
-rw-r--r--arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c159
-rw-r--r--arch/mips/vr41xx/Kconfig88
-rw-r--r--arch/mips/vr41xx/common/cmu.c2
-rw-r--r--arch/mips/vr41xx/common/init.c14
-rw-r--r--arch/mips/vr41xx/common/vrc4173.c4
-rw-r--r--arch/mips/vr41xx/nec-cmbvr4133/setup.c5
-rw-r--r--arch/parisc/Kconfig5
-rw-r--r--arch/parisc/Makefile13
-rw-r--r--arch/parisc/configs/712_defconfig456
-rw-r--r--arch/parisc/configs/a500_defconfig551
-rw-r--r--arch/parisc/configs/b180_defconfig309
-rw-r--r--arch/parisc/configs/c3000_defconfig676
-rw-r--r--arch/parisc/defconfig618
-rw-r--r--arch/parisc/kernel/cache.c34
-rw-r--r--arch/parisc/kernel/drivers.c273
-rw-r--r--arch/parisc/kernel/entry.S188
-rw-r--r--arch/parisc/kernel/firmware.c16
-rw-r--r--arch/parisc/kernel/head.S73
-rw-r--r--arch/parisc/kernel/ioctl32.c37
-rw-r--r--arch/parisc/kernel/pacache.S186
-rw-r--r--arch/parisc/kernel/pci-dma.c56
-rw-r--r--arch/parisc/kernel/pci.c3
-rw-r--r--arch/parisc/kernel/pdc_cons.c46
-rw-r--r--arch/parisc/kernel/perf.c12
-rw-r--r--arch/parisc/kernel/process.c34
-rw-r--r--arch/parisc/kernel/processor.c8
-rw-r--r--arch/parisc/kernel/ptrace.c2
-rw-r--r--arch/parisc/kernel/real2.S36
-rw-r--r--arch/parisc/kernel/signal.c22
-rw-r--r--arch/parisc/kernel/smp.c2
-rw-r--r--arch/parisc/kernel/syscall.S37
-rw-r--r--arch/parisc/kernel/syscall_table.S10
-rw-r--r--arch/parisc/kernel/time.c30
-rw-r--r--arch/parisc/kernel/traps.c37
-rw-r--r--arch/parisc/kernel/unaligned.c16
-rw-r--r--arch/parisc/lib/fixup.S4
-rw-r--r--arch/parisc/lib/memcpy.c2
-rw-r--r--arch/parisc/mm/init.c3
-rw-r--r--arch/parisc/mm/ioremap.c6
-rw-r--r--arch/powerpc/mm/mem.c80
-rw-r--r--arch/powerpc/mm/pgtable_64.c4
-rw-r--r--arch/ppc/8xx_io/cs4218.h2
-rw-r--r--arch/ppc/8xx_io/cs4218_tdm.c4
-rw-r--r--arch/ppc/kernel/dma-mapping.c10
-rw-r--r--arch/ppc/kernel/time.c5
-rw-r--r--arch/ppc/mm/4xx_mmu.c4
-rw-r--r--arch/ppc/mm/pgtable.c8
-rw-r--r--arch/ppc/platforms/hdpu.c5
-rw-r--r--arch/ppc64/kernel/hvcserver.c2
-rw-r--r--arch/ppc64/kernel/ioctl32.c4
-rw-r--r--arch/ppc64/kernel/vdso.c12
-rw-r--r--arch/s390/kernel/compat_ioctl.c9
-rw-r--r--arch/s390/kernel/head.S72
-rw-r--r--arch/s390/kernel/head64.S66
-rw-r--r--arch/s390/kernel/setup.c186
-rw-r--r--arch/s390/kernel/time.c4
-rw-r--r--arch/s390/kernel/vtime.c18
-rw-r--r--arch/s390/mm/ioremap.c4
-rw-r--r--arch/sh/boards/renesas/rts7751r2d/mach.c2
-rw-r--r--arch/sh/cchips/voyagergx/consistent.c2
-rw-r--r--arch/sh/drivers/dma/dma-sysfs.c1
-rw-r--r--arch/sh/drivers/pci/dma-dreamcast.c2
-rw-r--r--arch/sh/kernel/cpufreq.c1
-rw-r--r--arch/sh/kernel/ptrace.c2
-rw-r--r--arch/sh/kernel/time.c4
-rw-r--r--arch/sh/mm/consistent.c2
-rw-r--r--arch/sh/mm/fault.c40
-rw-r--r--arch/sh/mm/hugetlbpage.c2
-rw-r--r--arch/sh/mm/ioremap.c4
-rw-r--r--arch/sh64/kernel/ptrace.c2
-rw-r--r--arch/sh64/kernel/time.c3
-rw-r--r--arch/sh64/mm/cache.c68
-rw-r--r--arch/sh64/mm/hugetlbpage.c188
-rw-r--r--arch/sh64/mm/ioremap.c4
-rw-r--r--arch/sparc/kernel/pcic.c4
-rw-r--r--arch/sparc/kernel/time.c4
-rw-r--r--arch/sparc/mm/generic.c7
-rw-r--r--arch/sparc64/kernel/binfmt_aout32.c1
-rw-r--r--arch/sparc64/kernel/ioctl32.c3
-rw-r--r--arch/sparc64/kernel/time.c4
-rw-r--r--arch/sparc64/mm/generic.c9
-rw-r--r--arch/sparc64/mm/tlb.c7
-rw-r--r--arch/sparc64/solaris/socksys.c2
-rw-r--r--arch/sparc64/solaris/timod.c2
-rw-r--r--arch/um/Kconfig10
-rw-r--r--arch/um/Kconfig.x86_645
-rw-r--r--arch/um/Makefile-i38612
-rw-r--r--arch/um/include/sysdep-i386/syscalls.h1
-rw-r--r--arch/um/include/tlb.h1
-rw-r--r--arch/um/kernel/mem.c2
-rw-r--r--arch/um/kernel/process_kern.c10
-rw-r--r--arch/um/kernel/skas/mmu.c4
-rw-r--r--arch/um/kernel/time_kern.c4
-rw-r--r--arch/um/kernel/tt/tlb.c36
-rw-r--r--arch/v850/kernel/ptrace.c2
-rw-r--r--arch/v850/kernel/time.c4
-rw-r--r--arch/x86_64/ia32/ia32_aout.c1
-rw-r--r--arch/x86_64/ia32/ia32_ioctl.c125
-rw-r--r--arch/x86_64/kernel/i8259.c8
-rw-r--r--arch/x86_64/kernel/pci-gart.c4
-rw-r--r--arch/x86_64/kernel/pci-nommu.c2
-rw-r--r--arch/x86_64/kernel/setup.c2
-rw-r--r--arch/x86_64/kernel/suspend.c95
-rw-r--r--arch/x86_64/kernel/time.c32
-rw-r--r--arch/x86_64/mm/ioremap.c4
-rw-r--r--arch/xtensa/kernel/pci-dma.c2
-rw-r--r--arch/xtensa/kernel/platform.c1
-rw-r--r--arch/xtensa/kernel/ptrace.c2
-rw-r--r--arch/xtensa/kernel/time.c3
707 files changed, 47666 insertions, 18067 deletions
diff --git a/arch/alpha/kernel/pci-noop.c b/arch/alpha/kernel/pci-noop.c
index 582a3519fb28..9903e3a79102 100644
--- a/arch/alpha/kernel/pci-noop.c
+++ b/arch/alpha/kernel/pci-noop.c
@@ -154,7 +154,7 @@ pci_dma_supported(struct pci_dev *hwdev, dma_addr_t mask)
154 154
155void * 155void *
156dma_alloc_coherent(struct device *dev, size_t size, 156dma_alloc_coherent(struct device *dev, size_t size,
157 dma_addr_t *dma_handle, int gfp) 157 dma_addr_t *dma_handle, gfp_t gfp)
158{ 158{
159 void *ret; 159 void *ret;
160 160
diff --git a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c
index 7cb23f12ecbd..c468e312e5f8 100644
--- a/arch/alpha/kernel/pci_iommu.c
+++ b/arch/alpha/kernel/pci_iommu.c
@@ -397,7 +397,7 @@ pci_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp)
397{ 397{
398 void *cpu_addr; 398 void *cpu_addr;
399 long order = get_order(size); 399 long order = get_order(size);
400 int gfp = GFP_ATOMIC; 400 gfp_t gfp = GFP_ATOMIC;
401 401
402try_again: 402try_again:
403 cpu_addr = (void *)__get_free_pages(gfp, order); 403 cpu_addr = (void *)__get_free_pages(gfp, order);
diff --git a/arch/alpha/kernel/time.c b/arch/alpha/kernel/time.c
index 67be50b7d80a..6b2921be1909 100644
--- a/arch/alpha/kernel/time.c
+++ b/arch/alpha/kernel/time.c
@@ -55,10 +55,6 @@
55#include "proto.h" 55#include "proto.h"
56#include "irq_impl.h" 56#include "irq_impl.h"
57 57
58u64 jiffies_64 = INITIAL_JIFFIES;
59
60EXPORT_SYMBOL(jiffies_64);
61
62extern unsigned long wall_jiffies; /* kernel/timer.c */ 58extern unsigned long wall_jiffies; /* kernel/timer.c */
63 59
64static int set_rtc_mmss(unsigned long); 60static int set_rtc_mmss(unsigned long);
diff --git a/arch/alpha/mm/numa.c b/arch/alpha/mm/numa.c
index c7481d59b6df..6d5251254f68 100644
--- a/arch/alpha/mm/numa.c
+++ b/arch/alpha/mm/numa.c
@@ -371,6 +371,8 @@ show_mem(void)
371 show_free_areas(); 371 show_free_areas();
372 printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); 372 printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
373 for_each_online_node(nid) { 373 for_each_online_node(nid) {
374 unsigned long flags;
375 pgdat_resize_lock(NODE_DATA(nid), &flags);
374 i = node_spanned_pages(nid); 376 i = node_spanned_pages(nid);
375 while (i-- > 0) { 377 while (i-- > 0) {
376 struct page *page = nid_page_nr(nid, i); 378 struct page *page = nid_page_nr(nid, i);
@@ -384,6 +386,7 @@ show_mem(void)
384 else 386 else
385 shared += page_count(page) - 1; 387 shared += page_count(page) - 1;
386 } 388 }
389 pgdat_resize_unlock(NODE_DATA(nid), &flags);
387 } 390 }
388 printk("%ld pages of RAM\n",total); 391 printk("%ld pages of RAM\n",total);
389 printk("%ld free pages\n",free); 392 printk("%ld free pages\n",free);
diff --git a/arch/alpha/mm/remap.c b/arch/alpha/mm/remap.c
index 19817ad3d89b..a78356c3ead5 100644
--- a/arch/alpha/mm/remap.c
+++ b/arch/alpha/mm/remap.c
@@ -2,7 +2,6 @@
2#include <asm/pgalloc.h> 2#include <asm/pgalloc.h>
3#include <asm/cacheflush.h> 3#include <asm/cacheflush.h>
4 4
5/* called with the page_table_lock held */
6static inline void 5static inline void
7remap_area_pte(pte_t * pte, unsigned long address, unsigned long size, 6remap_area_pte(pte_t * pte, unsigned long address, unsigned long size,
8 unsigned long phys_addr, unsigned long flags) 7 unsigned long phys_addr, unsigned long flags)
@@ -31,7 +30,6 @@ remap_area_pte(pte_t * pte, unsigned long address, unsigned long size,
31 } while (address && (address < end)); 30 } while (address && (address < end));
32} 31}
33 32
34/* called with the page_table_lock held */
35static inline int 33static inline int
36remap_area_pmd(pmd_t * pmd, unsigned long address, unsigned long size, 34remap_area_pmd(pmd_t * pmd, unsigned long address, unsigned long size,
37 unsigned long phys_addr, unsigned long flags) 35 unsigned long phys_addr, unsigned long flags)
@@ -46,7 +44,7 @@ remap_area_pmd(pmd_t * pmd, unsigned long address, unsigned long size,
46 if (address >= end) 44 if (address >= end)
47 BUG(); 45 BUG();
48 do { 46 do {
49 pte_t * pte = pte_alloc_kernel(&init_mm, pmd, address); 47 pte_t * pte = pte_alloc_kernel(pmd, address);
50 if (!pte) 48 if (!pte)
51 return -ENOMEM; 49 return -ENOMEM;
52 remap_area_pte(pte, address, end - address, 50 remap_area_pte(pte, address, end - address,
@@ -70,7 +68,6 @@ __alpha_remap_area_pages(unsigned long address, unsigned long phys_addr,
70 flush_cache_all(); 68 flush_cache_all();
71 if (address >= end) 69 if (address >= end)
72 BUG(); 70 BUG();
73 spin_lock(&init_mm.page_table_lock);
74 do { 71 do {
75 pmd_t *pmd; 72 pmd_t *pmd;
76 pmd = pmd_alloc(&init_mm, dir, address); 73 pmd = pmd_alloc(&init_mm, dir, address);
@@ -84,7 +81,6 @@ __alpha_remap_area_pages(unsigned long address, unsigned long phys_addr,
84 address = (address + PGDIR_SIZE) & PGDIR_MASK; 81 address = (address + PGDIR_SIZE) & PGDIR_MASK;
85 dir++; 82 dir++;
86 } while (address && (address < end)); 83 } while (address && (address < end));
87 spin_unlock(&init_mm.page_table_lock);
88 return error; 84 return error;
89} 85}
90 86
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 11fff042aa81..682367bd0f65 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -204,6 +204,7 @@ config ARCH_H720X
204 204
205config ARCH_AAEC2000 205config ARCH_AAEC2000
206 bool "Agilent AAEC-2000 based" 206 bool "Agilent AAEC-2000 based"
207 select ARM_AMBA
207 help 208 help
208 This enables support for systems based on the Agilent AAEC-2000 209 This enables support for systems based on the Agilent AAEC-2000
209 210
@@ -687,7 +688,8 @@ source "drivers/acorn/block/Kconfig"
687 688
688if PCMCIA || ARCH_CLPS7500 || ARCH_IOP3XX || ARCH_IXP4XX \ 689if PCMCIA || ARCH_CLPS7500 || ARCH_IOP3XX || ARCH_IXP4XX \
689 || ARCH_L7200 || ARCH_LH7A40X || ARCH_PXA || ARCH_RPC \ 690 || ARCH_L7200 || ARCH_LH7A40X || ARCH_PXA || ARCH_RPC \
690 || ARCH_S3C2410 || ARCH_SA1100 || ARCH_SHARK || FOOTBRIDGE 691 || ARCH_S3C2410 || ARCH_SA1100 || ARCH_SHARK || FOOTBRIDGE \
692 || MACH_MP1000
691source "drivers/ide/Kconfig" 693source "drivers/ide/Kconfig"
692endif 694endif
693 695
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 299bc0468702..64cf480b0b02 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -8,7 +8,7 @@
8# Copyright (C) 1995-2001 by Russell King 8# Copyright (C) 1995-2001 by Russell King
9 9
10LDFLAGS_vmlinux :=-p --no-undefined -X 10LDFLAGS_vmlinux :=-p --no-undefined -X
11CPPFLAGS_vmlinux.lds = -DTEXTADDR=$(TEXTADDR) -DDATAADDR=$(DATAADDR) 11CPPFLAGS_vmlinux.lds = -DKERNEL_RAM_ADDR=$(TEXTADDR)
12OBJCOPYFLAGS :=-O binary -R .note -R .comment -S 12OBJCOPYFLAGS :=-O binary -R .note -R .comment -S
13GZFLAGS :=-9 13GZFLAGS :=-9
14#CFLAGS +=-pipe 14#CFLAGS +=-pipe
@@ -108,27 +108,19 @@ export CFLAGS_3c589_cs.o
108endif 108endif
109 109
110TEXTADDR := $(textaddr-y) 110TEXTADDR := $(textaddr-y)
111ifeq ($(CONFIG_XIP_KERNEL),y)
112 DATAADDR := $(TEXTADDR)
113 xipaddr-$(CONFIG_ARCH_CO285) := 0x5f000000
114 xipaddr-y ?= 0xbf000000
115 # Replace phys addr with virt addr while keeping offset from base.
116 TEXTADDR := $(shell echo $(CONFIG_XIP_PHYS_ADDR) $(xipaddr-y) | \
117 awk --non-decimal-data '/[:xdigit:]/ \
118 { printf("0x%x\n", and($$1, 0x000fffff) + $$2) }' )
119endif
120 111
121ifeq ($(incdir-y),) 112ifeq ($(incdir-y),)
122incdir-y := $(machine-y) 113incdir-y := $(machine-y)
123endif 114endif
124INCDIR := arch-$(incdir-y) 115INCDIR := arch-$(incdir-y)
116
125ifneq ($(machine-y),) 117ifneq ($(machine-y),)
126MACHINE := arch/arm/mach-$(machine-y)/ 118MACHINE := arch/arm/mach-$(machine-y)/
127else 119else
128MACHINE := 120MACHINE :=
129endif 121endif
130 122
131export TEXTADDR DATAADDR GZFLAGS 123export TEXTADDR GZFLAGS
132 124
133# Do we have FASTFPE? 125# Do we have FASTFPE?
134FASTFPE :=arch/arm/fastfpe 126FASTFPE :=arch/arm/fastfpe
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
index 7c7f475e213e..a54d2eb64892 100644
--- a/arch/arm/boot/compressed/head.S
+++ b/arch/arm/boot/compressed/head.S
@@ -39,7 +39,8 @@
39 defined(CONFIG_ARCH_IXP4XX) || \ 39 defined(CONFIG_ARCH_IXP4XX) || \
40 defined(CONFIG_ARCH_IXP2000) || \ 40 defined(CONFIG_ARCH_IXP2000) || \
41 defined(CONFIG_ARCH_LH7A40X) || \ 41 defined(CONFIG_ARCH_LH7A40X) || \
42 defined(CONFIG_ARCH_OMAP) 42 defined(CONFIG_ARCH_OMAP) || \
43 defined(CONFIG_MACH_MP1000)
43 .macro loadsp, rb 44 .macro loadsp, rb
44 addruart \rb 45 addruart \rb
45 .endm 46 .endm
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c
index 23434b56786a..50f13eec6cd7 100644
--- a/arch/arm/boot/compressed/misc.c
+++ b/arch/arm/boot/compressed/misc.c
@@ -30,7 +30,7 @@ unsigned int __machine_arch_type;
30#define putstr icedcc_putstr 30#define putstr icedcc_putstr
31#define putc icedcc_putc 31#define putc icedcc_putc
32 32
33extern void idedcc_putc(int ch); 33extern void icedcc_putc(int ch);
34 34
35static void 35static void
36icedcc_putstr(const char *ptr) 36icedcc_putstr(const char *ptr)
diff --git a/arch/arm/common/amba.c b/arch/arm/common/amba.c
index c6beb751f2a9..e1013112c354 100644
--- a/arch/arm/common/amba.c
+++ b/arch/arm/common/amba.c
@@ -10,6 +10,8 @@
10#include <linux/module.h> 10#include <linux/module.h>
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/device.h> 12#include <linux/device.h>
13#include <linux/string.h>
14#include <linux/slab.h>
13 15
14#include <asm/io.h> 16#include <asm/io.h>
15#include <asm/irq.h> 17#include <asm/irq.h>
diff --git a/arch/arm/common/dmabounce.c b/arch/arm/common/dmabounce.c
index cbf2165476b0..ad6c89a555bb 100644
--- a/arch/arm/common/dmabounce.c
+++ b/arch/arm/common/dmabounce.c
@@ -33,8 +33,8 @@
33#include <asm/cacheflush.h> 33#include <asm/cacheflush.h>
34 34
35#undef DEBUG 35#undef DEBUG
36
37#undef STATS 36#undef STATS
37
38#ifdef STATS 38#ifdef STATS
39#define DO_STATS(X) do { X ; } while (0) 39#define DO_STATS(X) do { X ; } while (0)
40#else 40#else
@@ -52,26 +52,31 @@ struct safe_buffer {
52 int direction; 52 int direction;
53 53
54 /* safe buffer info */ 54 /* safe buffer info */
55 struct dma_pool *pool; 55 struct dmabounce_pool *pool;
56 void *safe; 56 void *safe;
57 dma_addr_t safe_dma_addr; 57 dma_addr_t safe_dma_addr;
58}; 58};
59 59
60struct dmabounce_pool {
61 unsigned long size;
62 struct dma_pool *pool;
63#ifdef STATS
64 unsigned long allocs;
65#endif
66};
67
60struct dmabounce_device_info { 68struct dmabounce_device_info {
61 struct list_head node; 69 struct list_head node;
62 70
63 struct device *dev; 71 struct device *dev;
64 struct dma_pool *small_buffer_pool;
65 struct dma_pool *large_buffer_pool;
66 struct list_head safe_buffers; 72 struct list_head safe_buffers;
67 unsigned long small_buffer_size, large_buffer_size;
68#ifdef STATS 73#ifdef STATS
69 unsigned long sbp_allocs;
70 unsigned long lbp_allocs;
71 unsigned long total_allocs; 74 unsigned long total_allocs;
72 unsigned long map_op_count; 75 unsigned long map_op_count;
73 unsigned long bounce_count; 76 unsigned long bounce_count;
74#endif 77#endif
78 struct dmabounce_pool small;
79 struct dmabounce_pool large;
75}; 80};
76 81
77static LIST_HEAD(dmabounce_devs); 82static LIST_HEAD(dmabounce_devs);
@@ -82,9 +87,9 @@ static void print_alloc_stats(struct dmabounce_device_info *device_info)
82 printk(KERN_INFO 87 printk(KERN_INFO
83 "%s: dmabounce: sbp: %lu, lbp: %lu, other: %lu, total: %lu\n", 88 "%s: dmabounce: sbp: %lu, lbp: %lu, other: %lu, total: %lu\n",
84 device_info->dev->bus_id, 89 device_info->dev->bus_id,
85 device_info->sbp_allocs, device_info->lbp_allocs, 90 device_info->small.allocs, device_info->large.allocs,
86 device_info->total_allocs - device_info->sbp_allocs - 91 device_info->total_allocs - device_info->small.allocs -
87 device_info->lbp_allocs, 92 device_info->large.allocs,
88 device_info->total_allocs); 93 device_info->total_allocs);
89} 94}
90#endif 95#endif
@@ -106,18 +111,22 @@ find_dmabounce_dev(struct device *dev)
106/* allocate a 'safe' buffer and keep track of it */ 111/* allocate a 'safe' buffer and keep track of it */
107static inline struct safe_buffer * 112static inline struct safe_buffer *
108alloc_safe_buffer(struct dmabounce_device_info *device_info, void *ptr, 113alloc_safe_buffer(struct dmabounce_device_info *device_info, void *ptr,
109 size_t size, enum dma_data_direction dir) 114 size_t size, enum dma_data_direction dir)
110{ 115{
111 struct safe_buffer *buf; 116 struct safe_buffer *buf;
112 struct dma_pool *pool; 117 struct dmabounce_pool *pool;
113 struct device *dev = device_info->dev; 118 struct device *dev = device_info->dev;
114 void *safe;
115 dma_addr_t safe_dma_addr;
116 119
117 dev_dbg(dev, "%s(ptr=%p, size=%d, dir=%d)\n", 120 dev_dbg(dev, "%s(ptr=%p, size=%d, dir=%d)\n",
118 __func__, ptr, size, dir); 121 __func__, ptr, size, dir);
119 122
120 DO_STATS ( device_info->total_allocs++ ); 123 if (size <= device_info->small.size) {
124 pool = &device_info->small;
125 } else if (size <= device_info->large.size) {
126 pool = &device_info->large;
127 } else {
128 pool = NULL;
129 }
121 130
122 buf = kmalloc(sizeof(struct safe_buffer), GFP_ATOMIC); 131 buf = kmalloc(sizeof(struct safe_buffer), GFP_ATOMIC);
123 if (buf == NULL) { 132 if (buf == NULL) {
@@ -125,41 +134,35 @@ alloc_safe_buffer(struct dmabounce_device_info *device_info, void *ptr,
125 return NULL; 134 return NULL;
126 } 135 }
127 136
128 if (size <= device_info->small_buffer_size) { 137 buf->ptr = ptr;
129 pool = device_info->small_buffer_pool; 138 buf->size = size;
130 safe = dma_pool_alloc(pool, GFP_ATOMIC, &safe_dma_addr); 139 buf->direction = dir;
131 140 buf->pool = pool;
132 DO_STATS ( device_info->sbp_allocs++ );
133 } else if (size <= device_info->large_buffer_size) {
134 pool = device_info->large_buffer_pool;
135 safe = dma_pool_alloc(pool, GFP_ATOMIC, &safe_dma_addr);
136 141
137 DO_STATS ( device_info->lbp_allocs++ ); 142 if (pool) {
143 buf->safe = dma_pool_alloc(pool->pool, GFP_ATOMIC,
144 &buf->safe_dma_addr);
138 } else { 145 } else {
139 pool = NULL; 146 buf->safe = dma_alloc_coherent(dev, size, &buf->safe_dma_addr,
140 safe = dma_alloc_coherent(dev, size, &safe_dma_addr, GFP_ATOMIC); 147 GFP_ATOMIC);
141 } 148 }
142 149
143 if (safe == NULL) { 150 if (buf->safe == NULL) {
144 dev_warn(device_info->dev, 151 dev_warn(dev,
145 "%s: could not alloc dma memory (size=%d)\n", 152 "%s: could not alloc dma memory (size=%d)\n",
146 __func__, size); 153 __func__, size);
147 kfree(buf); 154 kfree(buf);
148 return NULL; 155 return NULL;
149 } 156 }
150 157
151#ifdef STATS 158#ifdef STATS
159 if (pool)
160 pool->allocs++;
161 device_info->total_allocs++;
152 if (device_info->total_allocs % 1000 == 0) 162 if (device_info->total_allocs % 1000 == 0)
153 print_alloc_stats(device_info); 163 print_alloc_stats(device_info);
154#endif 164#endif
155 165
156 buf->ptr = ptr;
157 buf->size = size;
158 buf->direction = dir;
159 buf->pool = pool;
160 buf->safe = safe;
161 buf->safe_dma_addr = safe_dma_addr;
162
163 list_add(&buf->node, &device_info->safe_buffers); 166 list_add(&buf->node, &device_info->safe_buffers);
164 167
165 return buf; 168 return buf;
@@ -186,7 +189,7 @@ free_safe_buffer(struct dmabounce_device_info *device_info, struct safe_buffer *
186 list_del(&buf->node); 189 list_del(&buf->node);
187 190
188 if (buf->pool) 191 if (buf->pool)
189 dma_pool_free(buf->pool, buf->safe, buf->safe_dma_addr); 192 dma_pool_free(buf->pool->pool, buf->safe, buf->safe_dma_addr);
190 else 193 else
191 dma_free_coherent(device_info->dev, buf->size, buf->safe, 194 dma_free_coherent(device_info->dev, buf->size, buf->safe,
192 buf->safe_dma_addr); 195 buf->safe_dma_addr);
@@ -197,12 +200,10 @@ free_safe_buffer(struct dmabounce_device_info *device_info, struct safe_buffer *
197/* ************************************************** */ 200/* ************************************************** */
198 201
199#ifdef STATS 202#ifdef STATS
200
201static void print_map_stats(struct dmabounce_device_info *device_info) 203static void print_map_stats(struct dmabounce_device_info *device_info)
202{ 204{
203 printk(KERN_INFO 205 dev_info(device_info->dev,
204 "%s: dmabounce: map_op_count=%lu, bounce_count=%lu\n", 206 "dmabounce: map_op_count=%lu, bounce_count=%lu\n",
205 device_info->dev->bus_id,
206 device_info->map_op_count, device_info->bounce_count); 207 device_info->map_op_count, device_info->bounce_count);
207} 208}
208#endif 209#endif
@@ -258,13 +259,13 @@ map_single(struct device *dev, void *ptr, size_t size,
258 __func__, ptr, buf->safe, size); 259 __func__, ptr, buf->safe, size);
259 memcpy(buf->safe, ptr, size); 260 memcpy(buf->safe, ptr, size);
260 } 261 }
261 consistent_sync(buf->safe, size, dir); 262 ptr = buf->safe;
262 263
263 dma_addr = buf->safe_dma_addr; 264 dma_addr = buf->safe_dma_addr;
264 } else {
265 consistent_sync(ptr, size, dir);
266 } 265 }
267 266
267 consistent_sync(ptr, size, dir);
268
268 return dma_addr; 269 return dma_addr;
269} 270}
270 271
@@ -278,7 +279,7 @@ unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,
278 /* 279 /*
279 * Trying to unmap an invalid mapping 280 * Trying to unmap an invalid mapping
280 */ 281 */
281 if (dma_addr == ~0) { 282 if (dma_mapping_error(dma_addr)) {
282 dev_err(dev, "Trying to unmap invalid mapping\n"); 283 dev_err(dev, "Trying to unmap invalid mapping\n");
283 return; 284 return;
284 } 285 }
@@ -570,11 +571,25 @@ dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nents,
570 local_irq_restore(flags); 571 local_irq_restore(flags);
571} 572}
572 573
574static int
575dmabounce_init_pool(struct dmabounce_pool *pool, struct device *dev, const char *name,
576 unsigned long size)
577{
578 pool->size = size;
579 DO_STATS(pool->allocs = 0);
580 pool->pool = dma_pool_create(name, dev, size,
581 0 /* byte alignment */,
582 0 /* no page-crossing issues */);
583
584 return pool->pool ? 0 : -ENOMEM;
585}
586
573int 587int
574dmabounce_register_dev(struct device *dev, unsigned long small_buffer_size, 588dmabounce_register_dev(struct device *dev, unsigned long small_buffer_size,
575 unsigned long large_buffer_size) 589 unsigned long large_buffer_size)
576{ 590{
577 struct dmabounce_device_info *device_info; 591 struct dmabounce_device_info *device_info;
592 int ret;
578 593
579 device_info = kmalloc(sizeof(struct dmabounce_device_info), GFP_ATOMIC); 594 device_info = kmalloc(sizeof(struct dmabounce_device_info), GFP_ATOMIC);
580 if (!device_info) { 595 if (!device_info) {
@@ -584,45 +599,31 @@ dmabounce_register_dev(struct device *dev, unsigned long small_buffer_size,
584 return -ENOMEM; 599 return -ENOMEM;
585 } 600 }
586 601
587 device_info->small_buffer_pool = 602 ret = dmabounce_init_pool(&device_info->small, dev,
588 dma_pool_create("small_dmabounce_pool", 603 "small_dmabounce_pool", small_buffer_size);
589 dev, 604 if (ret) {
590 small_buffer_size, 605 dev_err(dev,
591 0 /* byte alignment */, 606 "dmabounce: could not allocate DMA pool for %ld byte objects\n",
592 0 /* no page-crossing issues */); 607 small_buffer_size);
593 if (!device_info->small_buffer_pool) { 608 goto err_free;
594 printk(KERN_ERR
595 "dmabounce: could not allocate small DMA pool for %s\n",
596 dev->bus_id);
597 kfree(device_info);
598 return -ENOMEM;
599 } 609 }
600 610
601 if (large_buffer_size) { 611 if (large_buffer_size) {
602 device_info->large_buffer_pool = 612 ret = dmabounce_init_pool(&device_info->large, dev,
603 dma_pool_create("large_dmabounce_pool", 613 "large_dmabounce_pool",
604 dev, 614 large_buffer_size);
605 large_buffer_size, 615 if (ret) {
606 0 /* byte alignment */, 616 dev_err(dev,
607 0 /* no page-crossing issues */); 617 "dmabounce: could not allocate DMA pool for %ld byte objects\n",
608 if (!device_info->large_buffer_pool) { 618 large_buffer_size);
609 printk(KERN_ERR 619 goto err_destroy;
610 "dmabounce: could not allocate large DMA pool for %s\n",
611 dev->bus_id);
612 dma_pool_destroy(device_info->small_buffer_pool);
613
614 return -ENOMEM;
615 } 620 }
616 } 621 }
617 622
618 device_info->dev = dev; 623 device_info->dev = dev;
619 device_info->small_buffer_size = small_buffer_size;
620 device_info->large_buffer_size = large_buffer_size;
621 INIT_LIST_HEAD(&device_info->safe_buffers); 624 INIT_LIST_HEAD(&device_info->safe_buffers);
622 625
623#ifdef STATS 626#ifdef STATS
624 device_info->sbp_allocs = 0;
625 device_info->lbp_allocs = 0;
626 device_info->total_allocs = 0; 627 device_info->total_allocs = 0;
627 device_info->map_op_count = 0; 628 device_info->map_op_count = 0;
628 device_info->bounce_count = 0; 629 device_info->bounce_count = 0;
@@ -634,6 +635,12 @@ dmabounce_register_dev(struct device *dev, unsigned long small_buffer_size,
634 dev->bus_id, dev->bus->name); 635 dev->bus_id, dev->bus->name);
635 636
636 return 0; 637 return 0;
638
639 err_destroy:
640 dma_pool_destroy(device_info->small.pool);
641 err_free:
642 kfree(device_info);
643 return ret;
637} 644}
638 645
639void 646void
@@ -655,10 +662,10 @@ dmabounce_unregister_dev(struct device *dev)
655 BUG(); 662 BUG();
656 } 663 }
657 664
658 if (device_info->small_buffer_pool) 665 if (device_info->small.pool)
659 dma_pool_destroy(device_info->small_buffer_pool); 666 dma_pool_destroy(device_info->small.pool);
660 if (device_info->large_buffer_pool) 667 if (device_info->large.pool)
661 dma_pool_destroy(device_info->large_buffer_pool); 668 dma_pool_destroy(device_info->large.pool);
662 669
663#ifdef STATS 670#ifdef STATS
664 print_alloc_stats(device_info); 671 print_alloc_stats(device_info);
diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
index e8053d16829b..5cdb4122f057 100644
--- a/arch/arm/common/locomo.c
+++ b/arch/arm/common/locomo.c
@@ -550,15 +550,12 @@ struct locomo_save_data {
550 u16 LCM_SPIMD; 550 u16 LCM_SPIMD;
551}; 551};
552 552
553static int locomo_suspend(struct device *dev, pm_message_t state, u32 level) 553static int locomo_suspend(struct device *dev, pm_message_t state)
554{ 554{
555 struct locomo *lchip = dev_get_drvdata(dev); 555 struct locomo *lchip = dev_get_drvdata(dev);
556 struct locomo_save_data *save; 556 struct locomo_save_data *save;
557 unsigned long flags; 557 unsigned long flags;
558 558
559 if (level != SUSPEND_DISABLE)
560 return 0;
561
562 save = kmalloc(sizeof(struct locomo_save_data), GFP_KERNEL); 559 save = kmalloc(sizeof(struct locomo_save_data), GFP_KERNEL);
563 if (!save) 560 if (!save)
564 return -ENOMEM; 561 return -ENOMEM;
@@ -597,16 +594,13 @@ static int locomo_suspend(struct device *dev, pm_message_t state, u32 level)
597 return 0; 594 return 0;
598} 595}
599 596
600static int locomo_resume(struct device *dev, u32 level) 597static int locomo_resume(struct device *dev)
601{ 598{
602 struct locomo *lchip = dev_get_drvdata(dev); 599 struct locomo *lchip = dev_get_drvdata(dev);
603 struct locomo_save_data *save; 600 struct locomo_save_data *save;
604 unsigned long r; 601 unsigned long r;
605 unsigned long flags; 602 unsigned long flags;
606 603
607 if (level != RESUME_ENABLE)
608 return 0;
609
610 save = (struct locomo_save_data *) dev->power.saved_state; 604 save = (struct locomo_save_data *) dev->power.saved_state;
611 if (!save) 605 if (!save)
612 return 0; 606 return 0;
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
index 1a47fbf9cbbc..21e2a518ad3a 100644
--- a/arch/arm/common/sa1111.c
+++ b/arch/arm/common/sa1111.c
@@ -801,7 +801,7 @@ struct sa1111_save_data {
801 801
802#ifdef CONFIG_PM 802#ifdef CONFIG_PM
803 803
804static int sa1111_suspend(struct device *dev, pm_message_t state, u32 level) 804static int sa1111_suspend(struct device *dev, pm_message_t state)
805{ 805{
806 struct sa1111 *sachip = dev_get_drvdata(dev); 806 struct sa1111 *sachip = dev_get_drvdata(dev);
807 struct sa1111_save_data *save; 807 struct sa1111_save_data *save;
@@ -809,9 +809,6 @@ static int sa1111_suspend(struct device *dev, pm_message_t state, u32 level)
809 unsigned int val; 809 unsigned int val;
810 void __iomem *base; 810 void __iomem *base;
811 811
812 if (level != SUSPEND_DISABLE)
813 return 0;
814
815 save = kmalloc(sizeof(struct sa1111_save_data), GFP_KERNEL); 812 save = kmalloc(sizeof(struct sa1111_save_data), GFP_KERNEL);
816 if (!save) 813 if (!save)
817 return -ENOMEM; 814 return -ENOMEM;
@@ -856,23 +853,19 @@ static int sa1111_suspend(struct device *dev, pm_message_t state, u32 level)
856/* 853/*
857 * sa1111_resume - Restore the SA1111 device state. 854 * sa1111_resume - Restore the SA1111 device state.
858 * @dev: device to restore 855 * @dev: device to restore
859 * @level: resume level
860 * 856 *
861 * Restore the general state of the SA1111; clock control and 857 * Restore the general state of the SA1111; clock control and
862 * interrupt controller. Other parts of the SA1111 must be 858 * interrupt controller. Other parts of the SA1111 must be
863 * restored by their respective drivers, and must be called 859 * restored by their respective drivers, and must be called
864 * via LDM after this function. 860 * via LDM after this function.
865 */ 861 */
866static int sa1111_resume(struct device *dev, u32 level) 862static int sa1111_resume(struct device *dev)
867{ 863{
868 struct sa1111 *sachip = dev_get_drvdata(dev); 864 struct sa1111 *sachip = dev_get_drvdata(dev);
869 struct sa1111_save_data *save; 865 struct sa1111_save_data *save;
870 unsigned long flags, id; 866 unsigned long flags, id;
871 void __iomem *base; 867 void __iomem *base;
872 868
873 if (level != RESUME_ENABLE)
874 return 0;
875
876 save = (struct sa1111_save_data *)dev->power.saved_state; 869 save = (struct sa1111_save_data *)dev->power.saved_state;
877 if (!save) 870 if (!save)
878 return 0; 871 return 0;
diff --git a/arch/arm/common/scoop.c b/arch/arm/common/scoop.c
index 9e5245c702de..4af0cf5f3bfb 100644
--- a/arch/arm/common/scoop.c
+++ b/arch/arm/common/scoop.c
@@ -12,6 +12,9 @@
12 */ 12 */
13 13
14#include <linux/device.h> 14#include <linux/device.h>
15#include <linux/string.h>
16#include <linux/slab.h>
17
15#include <asm/io.h> 18#include <asm/io.h>
16#include <asm/hardware/scoop.h> 19#include <asm/hardware/scoop.h>
17 20
@@ -102,26 +105,24 @@ static void check_scoop_reg(struct scoop_dev *sdev)
102} 105}
103 106
104#ifdef CONFIG_PM 107#ifdef CONFIG_PM
105static int scoop_suspend(struct device *dev, pm_message_t state, uint32_t level) 108static int scoop_suspend(struct device *dev, pm_message_t state)
106{ 109{
107 if (level == SUSPEND_POWER_DOWN) { 110 struct scoop_dev *sdev = dev_get_drvdata(dev);
108 struct scoop_dev *sdev = dev_get_drvdata(dev); 111
112 check_scoop_reg(sdev);
113 sdev->scoop_gpwr = SCOOP_REG(sdev->base, SCOOP_GPWR);
114 SCOOP_REG(sdev->base, SCOOP_GPWR) = (sdev->scoop_gpwr & ~sdev->suspend_clr) | sdev->suspend_set;
109 115
110 check_scoop_reg(sdev);
111 sdev->scoop_gpwr = SCOOP_REG(sdev->base, SCOOP_GPWR);
112 SCOOP_REG(sdev->base, SCOOP_GPWR) = (sdev->scoop_gpwr & ~sdev->suspend_clr) | sdev->suspend_set;
113 }
114 return 0; 116 return 0;
115} 117}
116 118
117static int scoop_resume(struct device *dev, uint32_t level) 119static int scoop_resume(struct device *dev)
118{ 120{
119 if (level == RESUME_POWER_ON) { 121 struct scoop_dev *sdev = dev_get_drvdata(dev);
120 struct scoop_dev *sdev = dev_get_drvdata(dev); 122
123 check_scoop_reg(sdev);
124 SCOOP_REG(sdev->base,SCOOP_GPWR) = sdev->scoop_gpwr;
121 125
122 check_scoop_reg(sdev);
123 SCOOP_REG(sdev->base,SCOOP_GPWR) = sdev->scoop_gpwr;
124 }
125 return 0; 126 return 0;
126} 127}
127#else 128#else
diff --git a/arch/arm/configs/ixdp2400_defconfig b/arch/arm/configs/ixdp2400_defconfig
index 678720fa2e2e..ddeb9f99d662 100644
--- a/arch/arm/configs/ixdp2400_defconfig
+++ b/arch/arm/configs/ixdp2400_defconfig
@@ -559,7 +559,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
559# 559#
560CONFIG_SERIAL_8250=y 560CONFIG_SERIAL_8250=y
561CONFIG_SERIAL_8250_CONSOLE=y 561CONFIG_SERIAL_8250_CONSOLE=y
562CONFIG_SERIAL_8250_NR_UARTS=2 562CONFIG_SERIAL_8250_NR_UARTS=1
563# CONFIG_SERIAL_8250_EXTENDED is not set 563# CONFIG_SERIAL_8250_EXTENDED is not set
564 564
565# 565#
diff --git a/arch/arm/configs/ixdp2800_defconfig b/arch/arm/configs/ixdp2800_defconfig
index 261e2343903b..81d3a0606f95 100644
--- a/arch/arm/configs/ixdp2800_defconfig
+++ b/arch/arm/configs/ixdp2800_defconfig
@@ -559,7 +559,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
559# 559#
560CONFIG_SERIAL_8250=y 560CONFIG_SERIAL_8250=y
561CONFIG_SERIAL_8250_CONSOLE=y 561CONFIG_SERIAL_8250_CONSOLE=y
562CONFIG_SERIAL_8250_NR_UARTS=2 562CONFIG_SERIAL_8250_NR_UARTS=1
563# CONFIG_SERIAL_8250_EXTENDED is not set 563# CONFIG_SERIAL_8250_EXTENDED is not set
564 564
565# 565#
diff --git a/arch/arm/configs/mp1000_defconfig b/arch/arm/configs/mp1000_defconfig
new file mode 100644
index 000000000000..d2cbc6fada1d
--- /dev/null
+++ b/arch/arm/configs/mp1000_defconfig
@@ -0,0 +1,897 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.14-rc1
4# Fri Sep 16 15:48:13 2005
5#
6CONFIG_ARM=y
7CONFIG_MMU=y
8CONFIG_UID16=y
9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y
11
12#
13# Code maturity level options
14#
15CONFIG_EXPERIMENTAL=y
16# CONFIG_CLEAN_COMPILE is not set
17CONFIG_BROKEN=y
18CONFIG_BROKEN_ON_SMP=y
19CONFIG_LOCK_KERNEL=y
20CONFIG_INIT_ENV_ARG_LIMIT=32
21
22#
23# General setup
24#
25CONFIG_LOCALVERSION=""
26CONFIG_LOCALVERSION_AUTO=y
27CONFIG_SWAP=y
28CONFIG_SYSVIPC=y
29# CONFIG_POSIX_MQUEUE is not set
30# CONFIG_BSD_PROCESS_ACCT is not set
31CONFIG_SYSCTL=y
32# CONFIG_AUDIT is not set
33# CONFIG_HOTPLUG is not set
34CONFIG_KOBJECT_UEVENT=y
35CONFIG_IKCONFIG=y
36CONFIG_IKCONFIG_PROC=y
37CONFIG_INITRAMFS_SOURCE=""
38CONFIG_EMBEDDED=y
39CONFIG_KALLSYMS=y
40# CONFIG_KALLSYMS_ALL is not set
41# CONFIG_KALLSYMS_EXTRA_PASS is not set
42CONFIG_PRINTK=y
43CONFIG_BUG=y
44CONFIG_BASE_FULL=y
45CONFIG_FUTEX=y
46CONFIG_EPOLL=y
47CONFIG_CC_OPTIMIZE_FOR_SIZE=y
48CONFIG_SHMEM=y
49CONFIG_CC_ALIGN_FUNCTIONS=0
50CONFIG_CC_ALIGN_LABELS=0
51CONFIG_CC_ALIGN_LOOPS=0
52CONFIG_CC_ALIGN_JUMPS=0
53# CONFIG_TINY_SHMEM is not set
54CONFIG_BASE_SMALL=0
55
56#
57# Loadable module support
58#
59CONFIG_MODULES=y
60CONFIG_MODULE_UNLOAD=y
61# CONFIG_MODULE_FORCE_UNLOAD is not set
62CONFIG_OBSOLETE_MODPARM=y
63# CONFIG_MODVERSIONS is not set
64# CONFIG_MODULE_SRCVERSION_ALL is not set
65CONFIG_KMOD=y
66
67#
68# System Type
69#
70# CONFIG_ARCH_CLPS7500 is not set
71CONFIG_ARCH_CLPS711X=y
72# CONFIG_ARCH_CO285 is not set
73# CONFIG_ARCH_EBSA110 is not set
74# CONFIG_ARCH_CAMELOT is not set
75# CONFIG_ARCH_FOOTBRIDGE is not set
76# CONFIG_ARCH_INTEGRATOR is not set
77# CONFIG_ARCH_IOP3XX is not set
78# CONFIG_ARCH_IXP4XX is not set
79# CONFIG_ARCH_IXP2000 is not set
80# CONFIG_ARCH_L7200 is not set
81# CONFIG_ARCH_PXA is not set
82# CONFIG_ARCH_RPC is not set
83# CONFIG_ARCH_SA1100 is not set
84# CONFIG_ARCH_S3C2410 is not set
85# CONFIG_ARCH_SHARK is not set
86# CONFIG_ARCH_LH7A40X is not set
87# CONFIG_ARCH_OMAP is not set
88# CONFIG_ARCH_VERSATILE is not set
89# CONFIG_ARCH_IMX is not set
90# CONFIG_ARCH_H720X is not set
91# CONFIG_ARCH_AAEC2000 is not set
92
93#
94# CLPS711X/EP721X Implementations
95#
96# CONFIG_ARCH_AUTCPU12 is not set
97# CONFIG_ARCH_CDB89712 is not set
98# CONFIG_ARCH_CEIVA is not set
99# CONFIG_ARCH_CLEP7312 is not set
100# CONFIG_ARCH_EDB7211 is not set
101# CONFIG_ARCH_P720T is not set
102# CONFIG_ARCH_FORTUNET is not set
103CONFIG_MACH_MP1000=y
104CONFIG_MP1000_90MHZ=y
105
106#
107# Processor Type
108#
109CONFIG_CPU_32=y
110CONFIG_CPU_ARM720T=y
111CONFIG_CPU_32v4=y
112CONFIG_CPU_ABRT_LV4T=y
113CONFIG_CPU_CACHE_V4=y
114CONFIG_CPU_CACHE_VIVT=y
115CONFIG_CPU_COPY_V4WT=y
116CONFIG_CPU_TLB_V4WT=y
117
118#
119# Processor Features
120#
121CONFIG_ARM_THUMB=y
122
123#
124# Bus support
125#
126CONFIG_ISA_DMA_API=y
127
128#
129# PCCARD (PCMCIA/CardBus) support
130#
131# CONFIG_PCCARD is not set
132
133#
134# Kernel Features
135#
136# CONFIG_SMP is not set
137CONFIG_PREEMPT=y
138# CONFIG_NO_IDLE_HZ is not set
139# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
140CONFIG_SELECT_MEMORY_MODEL=y
141CONFIG_FLATMEM_MANUAL=y
142# CONFIG_DISCONTIGMEM_MANUAL is not set
143# CONFIG_SPARSEMEM_MANUAL is not set
144CONFIG_FLATMEM=y
145CONFIG_FLAT_NODE_MEM_MAP=y
146# CONFIG_SPARSEMEM_STATIC is not set
147CONFIG_ALIGNMENT_TRAP=y
148
149#
150# Boot options
151#
152CONFIG_ZBOOT_ROM_TEXT=0x0
153CONFIG_ZBOOT_ROM_BSS=0x0
154CONFIG_CMDLINE="console=ttyCL,38400 root=/dev/discs/disc0/part1 ip=any cs89x0_media=rj45"
155# CONFIG_XIP_KERNEL is not set
156
157#
158# Floating point emulation
159#
160
161#
162# At least one emulation must be selected
163#
164CONFIG_FPE_NWFPE=y
165# CONFIG_FPE_NWFPE_XP is not set
166# CONFIG_FPE_FASTFPE is not set
167
168#
169# Userspace binary formats
170#
171CONFIG_BINFMT_ELF=y
172# CONFIG_BINFMT_AOUT is not set
173CONFIG_BINFMT_MISC=y
174# CONFIG_ARTHUR is not set
175
176#
177# Power management options
178#
179# CONFIG_PM is not set
180
181#
182# Networking
183#
184CONFIG_NET=y
185
186#
187# Networking options
188#
189CONFIG_PACKET=y
190# CONFIG_PACKET_MMAP is not set
191CONFIG_UNIX=y
192# CONFIG_NET_KEY is not set
193CONFIG_INET=y
194# CONFIG_IP_MULTICAST is not set
195# CONFIG_IP_ADVANCED_ROUTER is not set
196CONFIG_IP_FIB_HASH=y
197CONFIG_IP_PNP=y
198CONFIG_IP_PNP_DHCP=y
199CONFIG_IP_PNP_BOOTP=y
200CONFIG_IP_PNP_RARP=y
201# CONFIG_NET_IPIP is not set
202# CONFIG_NET_IPGRE is not set
203# CONFIG_ARPD is not set
204# CONFIG_SYN_COOKIES is not set
205# CONFIG_INET_AH is not set
206# CONFIG_INET_ESP is not set
207# CONFIG_INET_IPCOMP is not set
208# CONFIG_INET_TUNNEL is not set
209CONFIG_INET_DIAG=y
210CONFIG_INET_TCP_DIAG=y
211# CONFIG_TCP_CONG_ADVANCED is not set
212CONFIG_TCP_CONG_BIC=y
213CONFIG_IPV6=y
214# CONFIG_IPV6_PRIVACY is not set
215# CONFIG_INET6_AH is not set
216# CONFIG_INET6_ESP is not set
217# CONFIG_INET6_IPCOMP is not set
218# CONFIG_INET6_TUNNEL is not set
219# CONFIG_IPV6_TUNNEL is not set
220# CONFIG_NETFILTER is not set
221
222#
223# DCCP Configuration (EXPERIMENTAL)
224#
225# CONFIG_IP_DCCP is not set
226
227#
228# SCTP Configuration (EXPERIMENTAL)
229#
230# CONFIG_IP_SCTP is not set
231# CONFIG_ATM is not set
232# CONFIG_BRIDGE is not set
233# CONFIG_VLAN_8021Q is not set
234# CONFIG_DECNET is not set
235# CONFIG_LLC2 is not set
236# CONFIG_IPX is not set
237# CONFIG_ATALK is not set
238# CONFIG_X25 is not set
239# CONFIG_LAPB is not set
240# CONFIG_NET_DIVERT is not set
241# CONFIG_ECONET is not set
242# CONFIG_WAN_ROUTER is not set
243# CONFIG_NET_SCHED is not set
244# CONFIG_NET_CLS_ROUTE is not set
245
246#
247# Network testing
248#
249# CONFIG_NET_PKTGEN is not set
250# CONFIG_NETFILTER_NETLINK is not set
251# CONFIG_HAMRADIO is not set
252# CONFIG_IRDA is not set
253# CONFIG_BT is not set
254# CONFIG_IEEE80211 is not set
255
256#
257# Device Drivers
258#
259
260#
261# Generic Driver Options
262#
263CONFIG_STANDALONE=y
264CONFIG_PREVENT_FIRMWARE_BUILD=y
265# CONFIG_FW_LOADER is not set
266# CONFIG_DEBUG_DRIVER is not set
267
268#
269# Memory Technology Devices (MTD)
270#
271CONFIG_MTD=y
272CONFIG_MTD_DEBUG=y
273CONFIG_MTD_DEBUG_VERBOSE=3
274# CONFIG_MTD_CONCAT is not set
275CONFIG_MTD_PARTITIONS=y
276CONFIG_MTD_REDBOOT_PARTS=m
277CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-2
278CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
279# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
280CONFIG_MTD_CMDLINE_PARTS=y
281# CONFIG_MTD_AFS_PARTS is not set
282
283#
284# User Modules And Translation Layers
285#
286CONFIG_MTD_CHAR=y
287CONFIG_MTD_BLOCK=y
288# CONFIG_FTL is not set
289# CONFIG_NFTL is not set
290# CONFIG_INFTL is not set
291
292#
293# RAM/ROM/Flash chip drivers
294#
295CONFIG_MTD_CFI=m
296# CONFIG_MTD_JEDECPROBE is not set
297CONFIG_MTD_GEN_PROBE=m
298CONFIG_MTD_CFI_ADV_OPTIONS=y
299CONFIG_MTD_CFI_NOSWAP=y
300# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
301# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
302CONFIG_MTD_CFI_GEOMETRY=y
303# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
304# CONFIG_MTD_MAP_BANK_WIDTH_2 is not set
305CONFIG_MTD_MAP_BANK_WIDTH_4=y
306# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
307# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
308# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
309# CONFIG_MTD_CFI_I1 is not set
310CONFIG_MTD_CFI_I2=y
311# CONFIG_MTD_CFI_I4 is not set
312# CONFIG_MTD_CFI_I8 is not set
313# CONFIG_MTD_OTP is not set
314CONFIG_MTD_CFI_INTELEXT=m
315# CONFIG_MTD_CFI_AMDSTD is not set
316# CONFIG_MTD_CFI_STAA is not set
317CONFIG_MTD_CFI_UTIL=m
318# CONFIG_MTD_RAM is not set
319# CONFIG_MTD_ROM is not set
320# CONFIG_MTD_ABSENT is not set
321# CONFIG_MTD_OBSOLETE_CHIPS is not set
322# CONFIG_MTD_XIP is not set
323
324#
325# Mapping drivers for chip access
326#
327# CONFIG_MTD_COMPLEX_MAPPINGS is not set
328CONFIG_MTD_PHYSMAP=m
329CONFIG_MTD_PHYSMAP_START=0x0000000
330CONFIG_MTD_PHYSMAP_LEN=0x4000000
331CONFIG_MTD_PHYSMAP_BANKWIDTH=2
332# CONFIG_MTD_ARM_INTEGRATOR is not set
333CONFIG_MTD_EDB7312=m
334# CONFIG_MTD_PLATRAM is not set
335
336#
337# Self-contained MTD device drivers
338#
339# CONFIG_MTD_SLRAM is not set
340# CONFIG_MTD_PHRAM is not set
341# CONFIG_MTD_MTDRAM is not set
342# CONFIG_MTD_BLKMTD is not set
343# CONFIG_MTD_BLOCK2MTD is not set
344
345#
346# Disk-On-Chip Device Drivers
347#
348# CONFIG_MTD_DOC2000 is not set
349# CONFIG_MTD_DOC2001 is not set
350# CONFIG_MTD_DOC2001PLUS is not set
351
352#
353# NAND Flash Device Drivers
354#
355CONFIG_MTD_NAND=y
356# CONFIG_MTD_NAND_VERIFY_WRITE is not set
357CONFIG_MTD_NAND_MP1000=y
358CONFIG_MTD_NAND_IDS=y
359# CONFIG_MTD_NAND_DISKONCHIP is not set
360# CONFIG_MTD_NAND_NANDSIM is not set
361
362#
363# Parallel port support
364#
365# CONFIG_PARPORT is not set
366
367#
368# Plug and Play support
369#
370
371#
372# Block devices
373#
374# CONFIG_BLK_DEV_COW_COMMON is not set
375CONFIG_BLK_DEV_LOOP=m
376# CONFIG_BLK_DEV_CRYPTOLOOP is not set
377# CONFIG_BLK_DEV_NBD is not set
378CONFIG_BLK_DEV_RAM=y
379CONFIG_BLK_DEV_RAM_COUNT=2
380CONFIG_BLK_DEV_RAM_SIZE=16384
381CONFIG_BLK_DEV_INITRD=y
382# CONFIG_CDROM_PKTCDVD is not set
383
384#
385# IO Schedulers
386#
387CONFIG_IOSCHED_NOOP=y
388CONFIG_IOSCHED_AS=y
389CONFIG_IOSCHED_DEADLINE=y
390CONFIG_IOSCHED_CFQ=y
391# CONFIG_ATA_OVER_ETH is not set
392
393#
394# ATA/ATAPI/MFM/RLL support
395#
396CONFIG_IDE=y
397CONFIG_BLK_DEV_IDE=y
398
399#
400# Please see Documentation/ide.txt for help/info on IDE drives
401#
402# CONFIG_BLK_DEV_IDE_SATA is not set
403# CONFIG_BLK_DEV_HD_IDE is not set
404CONFIG_BLK_DEV_IDEDISK=y
405# CONFIG_IDEDISK_MULTI_MODE is not set
406# CONFIG_BLK_DEV_IDECD is not set
407# CONFIG_BLK_DEV_IDETAPE is not set
408# CONFIG_BLK_DEV_IDEFLOPPY is not set
409# CONFIG_IDE_TASK_IOCTL is not set
410
411#
412# IDE chipset support/bugfixes
413#
414# CONFIG_IDE_GENERIC is not set
415CONFIG_IDE_ARM=y
416CONFIG_BLK_DEV_IDE_MP1000=y
417# CONFIG_BLK_DEV_IDEDMA is not set
418# CONFIG_IDEDMA_AUTO is not set
419# CONFIG_BLK_DEV_HD is not set
420
421#
422# SCSI device support
423#
424# CONFIG_RAID_ATTRS is not set
425# CONFIG_SCSI is not set
426
427#
428# Multi-device support (RAID and LVM)
429#
430CONFIG_MD=y
431# CONFIG_BLK_DEV_MD is not set
432CONFIG_BLK_DEV_DM=y
433# CONFIG_DM_CRYPT is not set
434# CONFIG_DM_SNAPSHOT is not set
435# CONFIG_DM_MIRROR is not set
436# CONFIG_DM_ZERO is not set
437# CONFIG_DM_MULTIPATH is not set
438
439#
440# Fusion MPT device support
441#
442# CONFIG_FUSION is not set
443
444#
445# IEEE 1394 (FireWire) support
446#
447# CONFIG_IEEE1394 is not set
448
449#
450# I2O device support
451#
452
453#
454# Network device support
455#
456CONFIG_NETDEVICES=y
457# CONFIG_DUMMY is not set
458# CONFIG_BONDING is not set
459# CONFIG_EQUALIZER is not set
460# CONFIG_TUN is not set
461
462#
463# PHY device support
464#
465# CONFIG_PHYLIB is not set
466
467#
468# Ethernet (10 or 100Mbit)
469#
470CONFIG_NET_ETHERNET=y
471# CONFIG_MII is not set
472# CONFIG_SMC91X is not set
473# CONFIG_DM9000 is not set
474CONFIG_CS89x0=y
475
476#
477# Ethernet (1000 Mbit)
478#
479
480#
481# Ethernet (10000 Mbit)
482#
483
484#
485# Token Ring devices
486#
487
488#
489# Wireless LAN (non-hamradio)
490#
491# CONFIG_NET_RADIO is not set
492
493#
494# Wan interfaces
495#
496# CONFIG_WAN is not set
497# CONFIG_PPP is not set
498# CONFIG_SLIP is not set
499# CONFIG_SHAPER is not set
500# CONFIG_NETCONSOLE is not set
501# CONFIG_NETPOLL is not set
502# CONFIG_NET_POLL_CONTROLLER is not set
503
504#
505# ISDN subsystem
506#
507# CONFIG_ISDN is not set
508
509#
510# Input device support
511#
512CONFIG_INPUT=y
513
514#
515# Userland interfaces
516#
517# CONFIG_INPUT_MOUSEDEV is not set
518# CONFIG_INPUT_JOYDEV is not set
519# CONFIG_INPUT_TSDEV is not set
520# CONFIG_INPUT_EVDEV is not set
521CONFIG_INPUT_EVBUG=y
522
523#
524# Input Device Drivers
525#
526# CONFIG_INPUT_KEYBOARD is not set
527# CONFIG_INPUT_MOUSE is not set
528# CONFIG_INPUT_JOYSTICK is not set
529# CONFIG_INPUT_TOUCHSCREEN is not set
530# CONFIG_INPUT_MISC is not set
531
532#
533# Hardware I/O ports
534#
535CONFIG_SERIO=y
536CONFIG_SERIO_SERPORT=y
537# CONFIG_SERIO_LIBPS2 is not set
538# CONFIG_SERIO_RAW is not set
539# CONFIG_GAMEPORT is not set
540
541#
542# Character devices
543#
544CONFIG_VT=y
545CONFIG_VT_CONSOLE=y
546CONFIG_HW_CONSOLE=y
547# CONFIG_SERIAL_NONSTANDARD is not set
548
549#
550# Serial drivers
551#
552CONFIG_SERIAL_8250=y
553CONFIG_SERIAL_8250_CONSOLE=y
554CONFIG_SERIAL_8250_NR_UARTS=2
555# CONFIG_SERIAL_8250_EXTENDED is not set
556
557#
558# Non-8250 serial port support
559#
560CONFIG_SERIAL_CLPS711X=y
561CONFIG_SERIAL_CLPS711X_CONSOLE=y
562CONFIG_SERIAL_CORE=y
563CONFIG_SERIAL_CORE_CONSOLE=y
564CONFIG_UNIX98_PTYS=y
565CONFIG_LEGACY_PTYS=y
566CONFIG_LEGACY_PTY_COUNT=256
567
568#
569# IPMI
570#
571# CONFIG_IPMI_HANDLER is not set
572
573#
574# Watchdog Cards
575#
576# CONFIG_WATCHDOG is not set
577CONFIG_NVRAM=y
578CONFIG_RTC=y
579# CONFIG_DTLK is not set
580# CONFIG_R3964 is not set
581
582#
583# Ftape, the floppy tape device driver
584#
585# CONFIG_RAW_DRIVER is not set
586
587#
588# TPM devices
589#
590
591#
592# I2C support
593#
594# CONFIG_I2C is not set
595
596#
597# Hardware Monitoring support
598#
599CONFIG_HWMON=y
600# CONFIG_HWMON_VID is not set
601# CONFIG_HWMON_DEBUG_CHIP is not set
602
603#
604# Misc devices
605#
606
607#
608# Multimedia Capabilities Port drivers
609#
610
611#
612# Multimedia devices
613#
614# CONFIG_VIDEO_DEV is not set
615
616#
617# Digital Video Broadcasting Devices
618#
619# CONFIG_DVB is not set
620
621#
622# Graphics support
623#
624# CONFIG_FB is not set
625
626#
627# Console display driver support
628#
629# CONFIG_VGA_CONSOLE is not set
630CONFIG_DUMMY_CONSOLE=y
631
632#
633# Sound
634#
635# CONFIG_SOUND is not set
636
637#
638# USB support
639#
640CONFIG_USB_ARCH_HAS_HCD=y
641# CONFIG_USB_ARCH_HAS_OHCI is not set
642# CONFIG_USB is not set
643
644#
645# USB Gadget Support
646#
647# CONFIG_USB_GADGET is not set
648
649#
650# MMC/SD Card support
651#
652# CONFIG_MMC is not set
653
654#
655# File systems
656#
657CONFIG_EXT2_FS=y
658CONFIG_EXT2_FS_XATTR=y
659# CONFIG_EXT2_FS_POSIX_ACL is not set
660# CONFIG_EXT2_FS_SECURITY is not set
661# CONFIG_EXT2_FS_XIP is not set
662CONFIG_EXT3_FS=y
663CONFIG_EXT3_FS_XATTR=y
664# CONFIG_EXT3_FS_POSIX_ACL is not set
665# CONFIG_EXT3_FS_SECURITY is not set
666CONFIG_JBD=y
667# CONFIG_JBD_DEBUG is not set
668CONFIG_FS_MBCACHE=y
669CONFIG_REISERFS_FS=m
670# CONFIG_REISERFS_CHECK is not set
671# CONFIG_REISERFS_PROC_INFO is not set
672# CONFIG_REISERFS_FS_XATTR is not set
673# CONFIG_JFS_FS is not set
674CONFIG_FS_POSIX_ACL=y
675# CONFIG_XFS_FS is not set
676# CONFIG_MINIX_FS is not set
677# CONFIG_ROMFS_FS is not set
678CONFIG_INOTIFY=y
679CONFIG_QUOTA=y
680# CONFIG_QFMT_V1 is not set
681# CONFIG_QFMT_V2 is not set
682CONFIG_QUOTACTL=y
683CONFIG_DNOTIFY=y
684# CONFIG_AUTOFS_FS is not set
685# CONFIG_AUTOFS4_FS is not set
686# CONFIG_FUSE_FS is not set
687
688#
689# CD-ROM/DVD Filesystems
690#
691# CONFIG_ISO9660_FS is not set
692# CONFIG_UDF_FS is not set
693
694#
695# DOS/FAT/NT Filesystems
696#
697# CONFIG_MSDOS_FS is not set
698# CONFIG_VFAT_FS is not set
699# CONFIG_NTFS_FS is not set
700
701#
702# Pseudo filesystems
703#
704CONFIG_PROC_FS=y
705CONFIG_SYSFS=y
706CONFIG_TMPFS=y
707# CONFIG_HUGETLBFS is not set
708# CONFIG_HUGETLB_PAGE is not set
709CONFIG_RAMFS=y
710# CONFIG_RELAYFS_FS is not set
711
712#
713# Miscellaneous filesystems
714#
715# CONFIG_ADFS_FS is not set
716# CONFIG_AFFS_FS is not set
717# CONFIG_HFS_FS is not set
718# CONFIG_HFSPLUS_FS is not set
719# CONFIG_BEFS_FS is not set
720# CONFIG_BFS_FS is not set
721# CONFIG_EFS_FS is not set
722# CONFIG_JFFS_FS is not set
723CONFIG_JFFS2_FS=m
724CONFIG_JFFS2_FS_DEBUG=0
725CONFIG_JFFS2_FS_WRITEBUFFER=y
726# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
727CONFIG_JFFS2_ZLIB=y
728CONFIG_JFFS2_RTIME=y
729# CONFIG_JFFS2_RUBIN is not set
730CONFIG_CRAMFS=m
731# CONFIG_VXFS_FS is not set
732# CONFIG_HPFS_FS is not set
733# CONFIG_QNX4FS_FS is not set
734# CONFIG_SYSV_FS is not set
735# CONFIG_UFS_FS is not set
736
737#
738# Network File Systems
739#
740CONFIG_NFS_FS=y
741CONFIG_NFS_V3=y
742# CONFIG_NFS_V3_ACL is not set
743CONFIG_NFS_V4=y
744# CONFIG_NFS_DIRECTIO is not set
745CONFIG_NFSD=y
746CONFIG_NFSD_V3=y
747# CONFIG_NFSD_V3_ACL is not set
748CONFIG_NFSD_V4=y
749CONFIG_NFSD_TCP=y
750CONFIG_ROOT_NFS=y
751CONFIG_LOCKD=y
752CONFIG_LOCKD_V4=y
753CONFIG_EXPORTFS=y
754CONFIG_NFS_COMMON=y
755CONFIG_SUNRPC=y
756CONFIG_SUNRPC_GSS=y
757CONFIG_RPCSEC_GSS_KRB5=y
758# CONFIG_RPCSEC_GSS_SPKM3 is not set
759CONFIG_SMB_FS=m
760# CONFIG_SMB_NLS_DEFAULT is not set
761CONFIG_CIFS=m
762# CONFIG_CIFS_STATS is not set
763# CONFIG_CIFS_XATTR is not set
764# CONFIG_CIFS_EXPERIMENTAL is not set
765# CONFIG_NCP_FS is not set
766# CONFIG_CODA_FS is not set
767# CONFIG_AFS_FS is not set
768# CONFIG_9P_FS is not set
769
770#
771# Partition Types
772#
773# CONFIG_PARTITION_ADVANCED is not set
774CONFIG_MSDOS_PARTITION=y
775
776#
777# Native Language Support
778#
779CONFIG_NLS=y
780CONFIG_NLS_DEFAULT="iso8859-1"
781CONFIG_NLS_CODEPAGE_437=y
782# CONFIG_NLS_CODEPAGE_737 is not set
783# CONFIG_NLS_CODEPAGE_775 is not set
784# CONFIG_NLS_CODEPAGE_850 is not set
785# CONFIG_NLS_CODEPAGE_852 is not set
786# CONFIG_NLS_CODEPAGE_855 is not set
787# CONFIG_NLS_CODEPAGE_857 is not set
788# CONFIG_NLS_CODEPAGE_860 is not set
789# CONFIG_NLS_CODEPAGE_861 is not set
790# CONFIG_NLS_CODEPAGE_862 is not set
791# CONFIG_NLS_CODEPAGE_863 is not set
792# CONFIG_NLS_CODEPAGE_864 is not set
793# CONFIG_NLS_CODEPAGE_865 is not set
794# CONFIG_NLS_CODEPAGE_866 is not set
795# CONFIG_NLS_CODEPAGE_869 is not set
796# CONFIG_NLS_CODEPAGE_936 is not set
797# CONFIG_NLS_CODEPAGE_950 is not set
798# CONFIG_NLS_CODEPAGE_932 is not set
799# CONFIG_NLS_CODEPAGE_949 is not set
800# CONFIG_NLS_CODEPAGE_874 is not set
801# CONFIG_NLS_ISO8859_8 is not set
802# CONFIG_NLS_CODEPAGE_1250 is not set
803# CONFIG_NLS_CODEPAGE_1251 is not set
804# CONFIG_NLS_ASCII is not set
805# CONFIG_NLS_ISO8859_1 is not set
806# CONFIG_NLS_ISO8859_2 is not set
807# CONFIG_NLS_ISO8859_3 is not set
808# CONFIG_NLS_ISO8859_4 is not set
809# CONFIG_NLS_ISO8859_5 is not set
810# CONFIG_NLS_ISO8859_6 is not set
811# CONFIG_NLS_ISO8859_7 is not set
812# CONFIG_NLS_ISO8859_9 is not set
813# CONFIG_NLS_ISO8859_13 is not set
814# CONFIG_NLS_ISO8859_14 is not set
815# CONFIG_NLS_ISO8859_15 is not set
816# CONFIG_NLS_KOI8_R is not set
817# CONFIG_NLS_KOI8_U is not set
818# CONFIG_NLS_UTF8 is not set
819
820#
821# Profiling support
822#
823# CONFIG_PROFILING is not set
824
825#
826# Kernel hacking
827#
828CONFIG_PRINTK_TIME=y
829CONFIG_DEBUG_KERNEL=y
830# CONFIG_MAGIC_SYSRQ is not set
831CONFIG_LOG_BUF_SHIFT=14
832CONFIG_DETECT_SOFTLOCKUP=y
833# CONFIG_SCHEDSTATS is not set
834# CONFIG_DEBUG_SLAB is not set
835CONFIG_DEBUG_PREEMPT=y
836# CONFIG_DEBUG_SPINLOCK is not set
837# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
838# CONFIG_DEBUG_KOBJECT is not set
839# CONFIG_DEBUG_BUGVERBOSE is not set
840CONFIG_DEBUG_INFO=y
841# CONFIG_DEBUG_FS is not set
842CONFIG_FRAME_POINTER=y
843CONFIG_DEBUG_USER=y
844CONFIG_DEBUG_WAITQ=y
845CONFIG_DEBUG_ERRORS=y
846CONFIG_DEBUG_LL=y
847# CONFIG_DEBUG_ICEDCC is not set
848# CONFIG_DEBUG_CLPS711X_UART2 is not set
849
850#
851# Security options
852#
853# CONFIG_KEYS is not set
854# CONFIG_SECURITY is not set
855
856#
857# Cryptographic options
858#
859CONFIG_CRYPTO=y
860# CONFIG_CRYPTO_HMAC is not set
861# CONFIG_CRYPTO_NULL is not set
862# CONFIG_CRYPTO_MD4 is not set
863CONFIG_CRYPTO_MD5=y
864# CONFIG_CRYPTO_SHA1 is not set
865# CONFIG_CRYPTO_SHA256 is not set
866# CONFIG_CRYPTO_SHA512 is not set
867# CONFIG_CRYPTO_WP512 is not set
868# CONFIG_CRYPTO_TGR192 is not set
869CONFIG_CRYPTO_DES=y
870# CONFIG_CRYPTO_BLOWFISH is not set
871# CONFIG_CRYPTO_TWOFISH is not set
872# CONFIG_CRYPTO_SERPENT is not set
873# CONFIG_CRYPTO_AES is not set
874# CONFIG_CRYPTO_CAST5 is not set
875# CONFIG_CRYPTO_CAST6 is not set
876# CONFIG_CRYPTO_TEA is not set
877# CONFIG_CRYPTO_ARC4 is not set
878# CONFIG_CRYPTO_KHAZAD is not set
879# CONFIG_CRYPTO_ANUBIS is not set
880# CONFIG_CRYPTO_DEFLATE is not set
881# CONFIG_CRYPTO_MICHAEL_MIC is not set
882# CONFIG_CRYPTO_CRC32C is not set
883# CONFIG_CRYPTO_TEST is not set
884
885#
886# Hardware crypto devices
887#
888
889#
890# Library routines
891#
892# CONFIG_CRC_CCITT is not set
893# CONFIG_CRC16 is not set
894CONFIG_CRC32=y
895# CONFIG_LIBCRC32C is not set
896CONFIG_ZLIB_INFLATE=m
897CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile
index 3e1b0327e4d7..c11169b5ed9a 100644
--- a/arch/arm/kernel/Makefile
+++ b/arch/arm/kernel/Makefile
@@ -2,7 +2,7 @@
2# Makefile for the linux kernel. 2# Makefile for the linux kernel.
3# 3#
4 4
5AFLAGS_head.o := -DTEXTADDR=$(TEXTADDR) -DDATAADDR=$(DATAADDR) 5AFLAGS_head.o := -DKERNEL_RAM_ADDR=$(TEXTADDR)
6 6
7# Object file lists. 7# Object file lists.
8 8
diff --git a/arch/arm/kernel/arthur.c b/arch/arm/kernel/arthur.c
index a418dad6692c..0ee2e9819631 100644
--- a/arch/arm/kernel/arthur.c
+++ b/arch/arm/kernel/arthur.c
@@ -18,6 +18,7 @@
18#include <linux/stddef.h> 18#include <linux/stddef.h>
19#include <linux/signal.h> 19#include <linux/signal.h>
20#include <linux/init.h> 20#include <linux/init.h>
21#include <linux/sched.h>
21 22
22#include <asm/ptrace.h> 23#include <asm/ptrace.h>
23 24
diff --git a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c
index c1ff4d1f1bfd..04d3082a7b94 100644
--- a/arch/arm/kernel/asm-offsets.c
+++ b/arch/arm/kernel/asm-offsets.c
@@ -94,7 +94,6 @@ int main(void)
94 DEFINE(VM_EXEC, VM_EXEC); 94 DEFINE(VM_EXEC, VM_EXEC);
95 BLANK(); 95 BLANK();
96 DEFINE(PAGE_SZ, PAGE_SIZE); 96 DEFINE(PAGE_SZ, PAGE_SIZE);
97 DEFINE(VIRT_OFFSET, PAGE_OFFSET);
98 BLANK(); 97 BLANK();
99 DEFINE(SYS_ERROR0, 0x9f0000); 98 DEFINE(SYS_ERROR0, 0x9f0000);
100 BLANK(); 99 BLANK();
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index 93b5e8e5292e..be439cab92c6 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -15,6 +15,7 @@
15 */ 15 */
16#include <linux/config.h> 16#include <linux/config.h>
17 17
18#include <asm/memory.h>
18#include <asm/glue.h> 19#include <asm/glue.h>
19#include <asm/vfpmacros.h> 20#include <asm/vfpmacros.h>
20#include <asm/hardware.h> /* should be moved into entry-macro.S */ 21#include <asm/hardware.h> /* should be moved into entry-macro.S */
@@ -310,7 +311,7 @@ __pabt_svc:
310 311
311#if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG) 312#if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG)
312 @ make sure our user space atomic helper is aborted 313 @ make sure our user space atomic helper is aborted
313 cmp r2, #VIRT_OFFSET 314 cmp r2, #TASK_SIZE
314 bichs r3, r3, #PSR_Z_BIT 315 bichs r3, r3, #PSR_Z_BIT
315#endif 316#endif
316 317
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
index 539626351348..8d8748407cbe 100644
--- a/arch/arm/kernel/head.S
+++ b/arch/arm/kernel/head.S
@@ -21,6 +21,7 @@
21#include <asm/procinfo.h> 21#include <asm/procinfo.h>
22#include <asm/ptrace.h> 22#include <asm/ptrace.h>
23#include <asm/asm-offsets.h> 23#include <asm/asm-offsets.h>
24#include <asm/memory.h>
24#include <asm/thread_info.h> 25#include <asm/thread_info.h>
25#include <asm/system.h> 26#include <asm/system.h>
26 27
@@ -33,52 +34,28 @@
33#define MACHINFO_PGOFFIO 12 34#define MACHINFO_PGOFFIO 12
34#define MACHINFO_NAME 16 35#define MACHINFO_NAME 16
35 36
36#ifndef CONFIG_XIP_KERNEL
37/* 37/*
38 * We place the page tables 16K below TEXTADDR. Therefore, we must make sure 38 * swapper_pg_dir is the virtual address of the initial page table.
39 * that TEXTADDR is correctly set. Currently, we expect the least significant 39 * We place the page tables 16K below KERNEL_RAM_ADDR. Therefore, we must
40 * 16 bits to be 0x8000, but we could probably relax this restriction to 40 * make sure that KERNEL_RAM_ADDR is correctly set. Currently, we expect
41 * TEXTADDR >= PAGE_OFFSET + 0x4000 41 * the least significant 16 bits to be 0x8000, but we could probably
42 * 42 * relax this restriction to KERNEL_RAM_ADDR >= PAGE_OFFSET + 0x4000.
43 * Note that swapper_pg_dir is the virtual address of the page tables, and
44 * pgtbl gives us a position-independent reference to these tables. We can
45 * do this because stext == TEXTADDR
46 */ 43 */
47#if (TEXTADDR & 0xffff) != 0x8000 44#if (KERNEL_RAM_ADDR & 0xffff) != 0x8000
48#error TEXTADDR must start at 0xXXXX8000 45#error KERNEL_RAM_ADDR must start at 0xXXXX8000
49#endif 46#endif
50 47
51 .globl swapper_pg_dir 48 .globl swapper_pg_dir
52 .equ swapper_pg_dir, TEXTADDR - 0x4000 49 .equ swapper_pg_dir, KERNEL_RAM_ADDR - 0x4000
53 50
54 .macro pgtbl, rd, phys 51 .macro pgtbl, rd
55 adr \rd, stext 52 ldr \rd, =(__virt_to_phys(KERNEL_RAM_ADDR - 0x4000))
56 sub \rd, \rd, #0x4000
57 .endm 53 .endm
58#else
59/*
60 * XIP Kernel:
61 *
62 * We place the page tables 16K below DATAADDR. Therefore, we must make sure
63 * that DATAADDR is correctly set. Currently, we expect the least significant
64 * 16 bits to be 0x8000, but we could probably relax this restriction to
65 * DATAADDR >= PAGE_OFFSET + 0x4000
66 *
67 * Note that pgtbl is meant to return the physical address of swapper_pg_dir.
68 * We can't make it relative to the kernel position in this case since
69 * the kernel can physically be anywhere.
70 */
71#if (DATAADDR & 0xffff) != 0x8000
72#error DATAADDR must start at 0xXXXX8000
73#endif
74
75 .globl swapper_pg_dir
76 .equ swapper_pg_dir, DATAADDR - 0x4000
77 54
78 .macro pgtbl, rd, phys 55#ifdef CONFIG_XIP_KERNEL
79 ldr \rd, =((DATAADDR - 0x4000) - VIRT_OFFSET) 56#define TEXTADDR XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR)
80 add \rd, \rd, \phys 57#else
81 .endm 58#define TEXTADDR KERNEL_RAM_ADDR
82#endif 59#endif
83 60
84/* 61/*
@@ -279,7 +256,7 @@ __turn_mmu_on:
279 .type __create_page_tables, %function 256 .type __create_page_tables, %function
280__create_page_tables: 257__create_page_tables:
281 ldr r5, [r8, #MACHINFO_PHYSRAM] @ physram 258 ldr r5, [r8, #MACHINFO_PHYSRAM] @ physram
282 pgtbl r4, r5 @ page table address 259 pgtbl r4 @ page table address
283 260
284 /* 261 /*
285 * Clear the 16K level 1 swapper page table 262 * Clear the 16K level 1 swapper page table
@@ -324,7 +301,7 @@ __create_page_tables:
324 /* 301 /*
325 * Then map first 1MB of ram in case it contains our boot params. 302 * Then map first 1MB of ram in case it contains our boot params.
326 */ 303 */
327 add r0, r4, #VIRT_OFFSET >> 18 304 add r0, r4, #PAGE_OFFSET >> 18
328 orr r6, r5, r7 305 orr r6, r5, r7
329 str r6, [r0] 306 str r6, [r0]
330 307
diff --git a/arch/arm/kernel/module.c b/arch/arm/kernel/module.c
index 1a85cfdad5ac..6055e1427ba3 100644
--- a/arch/arm/kernel/module.c
+++ b/arch/arm/kernel/module.c
@@ -11,6 +11,7 @@
11 */ 11 */
12#include <linux/config.h> 12#include <linux/config.h>
13#include <linux/module.h> 13#include <linux/module.h>
14#include <linux/moduleloader.h>
14#include <linux/kernel.h> 15#include <linux/kernel.h>
15#include <linux/elf.h> 16#include <linux/elf.h>
16#include <linux/vmalloc.h> 17#include <linux/vmalloc.h>
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c
index cd99b83f14c2..9bd8609a2926 100644
--- a/arch/arm/kernel/ptrace.c
+++ b/arch/arm/kernel/ptrace.c
@@ -782,7 +782,7 @@ static int do_ptrace(int request, struct task_struct *child, long addr, long dat
782 return ret; 782 return ret;
783} 783}
784 784
785asmlinkage int sys_ptrace(long request, long pid, long addr, long data) 785asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
786{ 786{
787 struct task_struct *child; 787 struct task_struct *child;
788 int ret; 788 int ret;
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
index a94d75fef598..a917e3dd3666 100644
--- a/arch/arm/kernel/signal.c
+++ b/arch/arm/kernel/signal.c
@@ -139,93 +139,33 @@ struct iwmmxt_sigframe {
139 unsigned long storage[0x98/4]; 139 unsigned long storage[0x98/4];
140}; 140};
141 141
142static int page_present(struct mm_struct *mm, void __user *uptr, int wr)
143{
144 unsigned long addr = (unsigned long)uptr;
145 pgd_t *pgd = pgd_offset(mm, addr);
146 if (pgd_present(*pgd)) {
147 pmd_t *pmd = pmd_offset(pgd, addr);
148 if (pmd_present(*pmd)) {
149 pte_t *pte = pte_offset_map(pmd, addr);
150 return (pte_present(*pte) && (!wr || pte_write(*pte)));
151 }
152 }
153 return 0;
154}
155
156static int copy_locked(void __user *uptr, void *kptr, size_t size, int write,
157 void (*copyfn)(void *, void __user *))
158{
159 unsigned char v, __user *userptr = uptr;
160 int err = 0;
161
162 do {
163 struct mm_struct *mm;
164
165 if (write) {
166 __put_user_error(0, userptr, err);
167 __put_user_error(0, userptr + size - 1, err);
168 } else {
169 __get_user_error(v, userptr, err);
170 __get_user_error(v, userptr + size - 1, err);
171 }
172
173 if (err)
174 break;
175
176 mm = current->mm;
177 spin_lock(&mm->page_table_lock);
178 if (page_present(mm, userptr, write) &&
179 page_present(mm, userptr + size - 1, write)) {
180 copyfn(kptr, uptr);
181 } else
182 err = 1;
183 spin_unlock(&mm->page_table_lock);
184 } while (err);
185
186 return err;
187}
188
189static int preserve_iwmmxt_context(struct iwmmxt_sigframe *frame) 142static int preserve_iwmmxt_context(struct iwmmxt_sigframe *frame)
190{ 143{
191 int err = 0; 144 char kbuf[sizeof(*frame) + 8];
145 struct iwmmxt_sigframe *kframe;
192 146
193 /* the iWMMXt context must be 64 bit aligned */ 147 /* the iWMMXt context must be 64 bit aligned */
194 WARN_ON((unsigned long)frame & 7); 148 kframe = (struct iwmmxt_sigframe *)((unsigned long)(kbuf + 8) & ~7);
195 149 kframe->magic0 = IWMMXT_MAGIC0;
196 __put_user_error(IWMMXT_MAGIC0, &frame->magic0, err); 150 kframe->magic1 = IWMMXT_MAGIC1;
197 __put_user_error(IWMMXT_MAGIC1, &frame->magic1, err); 151 iwmmxt_task_copy(current_thread_info(), &kframe->storage);
198 152 return __copy_to_user(frame, kframe, sizeof(*frame));
199 /*
200 * iwmmxt_task_copy() doesn't check user permissions.
201 * Let's do a dummy write on the upper boundary to ensure
202 * access to user mem is OK all way up.
203 */
204 err |= copy_locked(&frame->storage, current_thread_info(),
205 sizeof(frame->storage), 1, iwmmxt_task_copy);
206 return err;
207} 153}
208 154
209static int restore_iwmmxt_context(struct iwmmxt_sigframe *frame) 155static int restore_iwmmxt_context(struct iwmmxt_sigframe *frame)
210{ 156{
211 unsigned long magic0, magic1; 157 char kbuf[sizeof(*frame) + 8];
212 int err = 0; 158 struct iwmmxt_sigframe *kframe;
213 159
214 /* the iWMMXt context is 64 bit aligned */ 160 /* the iWMMXt context must be 64 bit aligned */
215 WARN_ON((unsigned long)frame & 7); 161 kframe = (struct iwmmxt_sigframe *)((unsigned long)(kbuf + 8) & ~7);
216 162 if (__copy_from_user(kframe, frame, sizeof(*frame)))
217 /* 163 return -1;
218 * Validate iWMMXt context signature. 164 if (kframe->magic0 != IWMMXT_MAGIC0 ||
219 * Also, iwmmxt_task_restore() doesn't check user permissions. 165 kframe->magic1 != IWMMXT_MAGIC1)
220 * Let's do a dummy write on the upper boundary to ensure 166 return -1;
221 * access to user mem is OK all way up. 167 iwmmxt_task_restore(current_thread_info(), &kframe->storage);
222 */ 168 return 0;
223 __get_user_error(magic0, &frame->magic0, err);
224 __get_user_error(magic1, &frame->magic1, err);
225 if (!err && magic0 == IWMMXT_MAGIC0 && magic1 == IWMMXT_MAGIC1)
226 err = copy_locked(&frame->storage, current_thread_info(),
227 sizeof(frame->storage), 0, iwmmxt_task_restore);
228 return err;
229} 169}
230 170
231#endif 171#endif
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c
index 69449a818dcc..fc4729106a32 100644
--- a/arch/arm/kernel/time.c
+++ b/arch/arm/kernel/time.c
@@ -36,10 +36,6 @@
36#include <asm/thread_info.h> 36#include <asm/thread_info.h>
37#include <asm/mach/time.h> 37#include <asm/mach/time.h>
38 38
39u64 jiffies_64 = INITIAL_JIFFIES;
40
41EXPORT_SYMBOL(jiffies_64);
42
43/* 39/*
44 * Our system timer. 40 * Our system timer.
45 */ 41 */
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
index f6de76e0a45d..45e9ea6cd2a5 100644
--- a/arch/arm/kernel/traps.c
+++ b/arch/arm/kernel/traps.c
@@ -198,25 +198,16 @@ void show_stack(struct task_struct *tsk, unsigned long *sp)
198 barrier(); 198 barrier();
199} 199}
200 200
201DEFINE_SPINLOCK(die_lock); 201static void __die(const char *str, int err, struct thread_info *thread, struct pt_regs *regs)
202
203/*
204 * This function is protected against re-entrancy.
205 */
206NORET_TYPE void die(const char *str, struct pt_regs *regs, int err)
207{ 202{
208 struct task_struct *tsk = current; 203 struct task_struct *tsk = thread->task;
209 static int die_counter; 204 static int die_counter;
210 205
211 console_verbose();
212 spin_lock_irq(&die_lock);
213 bust_spinlocks(1);
214
215 printk("Internal error: %s: %x [#%d]\n", str, err, ++die_counter); 206 printk("Internal error: %s: %x [#%d]\n", str, err, ++die_counter);
216 print_modules(); 207 print_modules();
217 __show_regs(regs); 208 __show_regs(regs);
218 printk("Process %s (pid: %d, stack limit = 0x%p)\n", 209 printk("Process %s (pid: %d, stack limit = 0x%p)\n",
219 tsk->comm, tsk->pid, tsk->thread_info + 1); 210 tsk->comm, tsk->pid, thread + 1);
220 211
221 if (!user_mode(regs) || in_interrupt()) { 212 if (!user_mode(regs) || in_interrupt()) {
222 dump_mem("Stack: ", regs->ARM_sp, 213 dump_mem("Stack: ", regs->ARM_sp,
@@ -224,7 +215,21 @@ NORET_TYPE void die(const char *str, struct pt_regs *regs, int err)
224 dump_backtrace(regs, tsk); 215 dump_backtrace(regs, tsk);
225 dump_instr(regs); 216 dump_instr(regs);
226 } 217 }
218}
219
220DEFINE_SPINLOCK(die_lock);
221
222/*
223 * This function is protected against re-entrancy.
224 */
225NORET_TYPE void die(const char *str, struct pt_regs *regs, int err)
226{
227 struct thread_info *thread = current_thread_info();
227 228
229 console_verbose();
230 spin_lock_irq(&die_lock);
231 bust_spinlocks(1);
232 __die(str, err, thread, regs);
228 bust_spinlocks(0); 233 bust_spinlocks(0);
229 spin_unlock_irq(&die_lock); 234 spin_unlock_irq(&die_lock);
230 do_exit(SIGSEGV); 235 do_exit(SIGSEGV);
@@ -345,7 +350,9 @@ static int bad_syscall(int n, struct pt_regs *regs)
345 struct thread_info *thread = current_thread_info(); 350 struct thread_info *thread = current_thread_info();
346 siginfo_t info; 351 siginfo_t info;
347 352
348 if (current->personality != PER_LINUX && thread->exec_domain->handler) { 353 if (current->personality != PER_LINUX &&
354 current->personality != PER_LINUX_32BIT &&
355 thread->exec_domain->handler) {
349 thread->exec_domain->handler(n, regs); 356 thread->exec_domain->handler(n, regs);
350 return regs->ARM_r0; 357 return regs->ARM_r0;
351 } 358 }
@@ -481,29 +488,33 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
481 unsigned long addr = regs->ARM_r2; 488 unsigned long addr = regs->ARM_r2;
482 struct mm_struct *mm = current->mm; 489 struct mm_struct *mm = current->mm;
483 pgd_t *pgd; pmd_t *pmd; pte_t *pte; 490 pgd_t *pgd; pmd_t *pmd; pte_t *pte;
491 spinlock_t *ptl;
484 492
485 regs->ARM_cpsr &= ~PSR_C_BIT; 493 regs->ARM_cpsr &= ~PSR_C_BIT;
486 spin_lock(&mm->page_table_lock); 494 down_read(&mm->mmap_sem);
487 pgd = pgd_offset(mm, addr); 495 pgd = pgd_offset(mm, addr);
488 if (!pgd_present(*pgd)) 496 if (!pgd_present(*pgd))
489 goto bad_access; 497 goto bad_access;
490 pmd = pmd_offset(pgd, addr); 498 pmd = pmd_offset(pgd, addr);
491 if (!pmd_present(*pmd)) 499 if (!pmd_present(*pmd))
492 goto bad_access; 500 goto bad_access;
493 pte = pte_offset_map(pmd, addr); 501 pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
494 if (!pte_present(*pte) || !pte_write(*pte)) 502 if (!pte_present(*pte) || !pte_write(*pte)) {
503 pte_unmap_unlock(pte, ptl);
495 goto bad_access; 504 goto bad_access;
505 }
496 val = *(unsigned long *)addr; 506 val = *(unsigned long *)addr;
497 val -= regs->ARM_r0; 507 val -= regs->ARM_r0;
498 if (val == 0) { 508 if (val == 0) {
499 *(unsigned long *)addr = regs->ARM_r1; 509 *(unsigned long *)addr = regs->ARM_r1;
500 regs->ARM_cpsr |= PSR_C_BIT; 510 regs->ARM_cpsr |= PSR_C_BIT;
501 } 511 }
502 spin_unlock(&mm->page_table_lock); 512 pte_unmap_unlock(pte, ptl);
513 up_read(&mm->mmap_sem);
503 return val; 514 return val;
504 515
505 bad_access: 516 bad_access:
506 spin_unlock(&mm->page_table_lock); 517 up_read(&mm->mmap_sem);
507 /* simulate a write access fault */ 518 /* simulate a write access fault */
508 do_DataAbort(addr, 15 + (1 << 11), regs); 519 do_DataAbort(addr, 15 + (1 << 11), regs);
509 return -1; 520 return -1;
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
index 0d5db5279c5c..80c8e4c8cefa 100644
--- a/arch/arm/kernel/vmlinux.lds.S
+++ b/arch/arm/kernel/vmlinux.lds.S
@@ -6,14 +6,23 @@
6#include <asm-generic/vmlinux.lds.h> 6#include <asm-generic/vmlinux.lds.h>
7#include <linux/config.h> 7#include <linux/config.h>
8#include <asm/thread_info.h> 8#include <asm/thread_info.h>
9#include <asm/memory.h>
9 10
10OUTPUT_ARCH(arm) 11OUTPUT_ARCH(arm)
11ENTRY(stext) 12ENTRY(stext)
13
12#ifndef __ARMEB__ 14#ifndef __ARMEB__
13jiffies = jiffies_64; 15jiffies = jiffies_64;
14#else 16#else
15jiffies = jiffies_64 + 4; 17jiffies = jiffies_64 + 4;
16#endif 18#endif
19
20#ifdef CONFIG_XIP_KERNEL
21#define TEXTADDR XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR)
22#else
23#define TEXTADDR KERNEL_RAM_ADDR
24#endif
25
17SECTIONS 26SECTIONS
18{ 27{
19 . = TEXTADDR; 28 . = TEXTADDR;
@@ -95,7 +104,7 @@ SECTIONS
95 104
96#ifdef CONFIG_XIP_KERNEL 105#ifdef CONFIG_XIP_KERNEL
97 __data_loc = ALIGN(4); /* location in binary */ 106 __data_loc = ALIGN(4); /* location in binary */
98 . = DATAADDR; 107 . = KERNEL_RAM_ADDR;
99#else 108#else
100 . = ALIGN(THREAD_SIZE); 109 . = ALIGN(THREAD_SIZE);
101 __data_loc = .; 110 __data_loc = .;
diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
index 8725d63e4219..71e5b99e519e 100644
--- a/arch/arm/lib/Makefile
+++ b/arch/arm/lib/Makefile
@@ -11,7 +11,7 @@ lib-y := backtrace.o changebit.o csumipv6.o csumpartial.o \
11 strnlen_user.o strchr.o strrchr.o testchangebit.o \ 11 strnlen_user.o strchr.o strrchr.o testchangebit.o \
12 testclearbit.o testsetbit.o uaccess.o getuser.o \ 12 testclearbit.o testsetbit.o uaccess.o getuser.o \
13 putuser.o ashldi3.o ashrdi3.o lshrdi3.o muldi3.o \ 13 putuser.o ashldi3.o ashrdi3.o lshrdi3.o muldi3.o \
14 ucmpdi2.o lib1funcs.o div64.o \ 14 ucmpdi2.o lib1funcs.o div64.o sha1.o \
15 io-readsb.o io-writesb.o io-readsl.o io-writesl.o 15 io-readsb.o io-writesb.o io-readsl.o io-writesl.o
16 16
17ifeq ($(CONFIG_CPU_32v3),y) 17ifeq ($(CONFIG_CPU_32v3),y)
diff --git a/arch/arm/lib/ashldi3.S b/arch/arm/lib/ashldi3.S
new file mode 100644
index 000000000000..561e20717b30
--- /dev/null
+++ b/arch/arm/lib/ashldi3.S
@@ -0,0 +1,48 @@
1/* Copyright 1995, 1996, 1998, 1999, 2000, 2003, 2004, 2005
2 Free Software Foundation, Inc.
3
4This file is free software; you can redistribute it and/or modify it
5under the terms of the GNU General Public License as published by the
6Free Software Foundation; either version 2, or (at your option) any
7later version.
8
9In addition to the permissions in the GNU General Public License, the
10Free Software Foundation gives you unlimited permission to link the
11compiled version of this file into combinations with other programs,
12and to distribute those combinations without any restriction coming
13from the use of this file. (The General Public License restrictions
14do apply in other respects; for example, they cover modification of
15the file, and distribution when not linked into a combine
16executable.)
17
18This file is distributed in the hope that it will be useful, but
19WITHOUT ANY WARRANTY; without even the implied warranty of
20MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21General Public License for more details.
22
23You should have received a copy of the GNU General Public License
24along with this program; see the file COPYING. If not, write to
25the Free Software Foundation, 51 Franklin Street, Fifth Floor,
26Boston, MA 02110-1301, USA. */
27
28
29#include <linux/linkage.h>
30
31#ifdef __ARMEB__
32#define al r1
33#define ah r0
34#else
35#define al r0
36#define ah r1
37#endif
38
39ENTRY(__ashldi3)
40
41 subs r3, r2, #32
42 rsb ip, r2, #32
43 movmi ah, ah, lsl r2
44 movpl ah, al, lsl r3
45 orrmi ah, ah, al, lsr ip
46 mov al, al, lsl r2
47 mov pc, lr
48
diff --git a/arch/arm/lib/ashldi3.c b/arch/arm/lib/ashldi3.c
deleted file mode 100644
index b62875cfd8f8..000000000000
--- a/arch/arm/lib/ashldi3.c
+++ /dev/null
@@ -1,56 +0,0 @@
1/* More subroutines needed by GCC output code on some machines. */
2/* Compile this one with gcc. */
3/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc.
4
5This file is part of GNU CC.
6
7GNU CC is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 2, or (at your option)
10any later version.
11
12GNU CC is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with GNU CC; see the file COPYING. If not, write to
19the Free Software Foundation, 59 Temple Place - Suite 330,
20Boston, MA 02111-1307, USA. */
21
22/* As a special exception, if you link this library with other files,
23 some of which are compiled with GCC, to produce an executable,
24 this library does not by itself cause the resulting executable
25 to be covered by the GNU General Public License.
26 This exception does not however invalidate any other reasons why
27 the executable file might be covered by the GNU General Public License.
28 */
29/* support functions required by the kernel. based on code from gcc-2.95.3 */
30/* I Molton 29/07/01 */
31
32#include "gcclib.h"
33
34s64 __ashldi3(s64 u, int b)
35{
36 DIunion w;
37 int bm;
38 DIunion uu;
39
40 if (b == 0)
41 return u;
42
43 uu.ll = u;
44
45 bm = (sizeof(s32) * BITS_PER_UNIT) - b;
46 if (bm <= 0) {
47 w.s.low = 0;
48 w.s.high = (u32) uu.s.low << -bm;
49 } else {
50 u32 carries = (u32) uu.s.low >> bm;
51 w.s.low = (u32) uu.s.low << b;
52 w.s.high = ((u32) uu.s.high << b) | carries;
53 }
54
55 return w.ll;
56}
diff --git a/arch/arm/lib/ashrdi3.S b/arch/arm/lib/ashrdi3.S
new file mode 100644
index 000000000000..86fb2a90c301
--- /dev/null
+++ b/arch/arm/lib/ashrdi3.S
@@ -0,0 +1,48 @@
1/* Copyright 1995, 1996, 1998, 1999, 2000, 2003, 2004, 2005
2 Free Software Foundation, Inc.
3
4This file is free software; you can redistribute it and/or modify it
5under the terms of the GNU General Public License as published by the
6Free Software Foundation; either version 2, or (at your option) any
7later version.
8
9In addition to the permissions in the GNU General Public License, the
10Free Software Foundation gives you unlimited permission to link the
11compiled version of this file into combinations with other programs,
12and to distribute those combinations without any restriction coming
13from the use of this file. (The General Public License restrictions
14do apply in other respects; for example, they cover modification of
15the file, and distribution when not linked into a combine
16executable.)
17
18This file is distributed in the hope that it will be useful, but
19WITHOUT ANY WARRANTY; without even the implied warranty of
20MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21General Public License for more details.
22
23You should have received a copy of the GNU General Public License
24along with this program; see the file COPYING. If not, write to
25the Free Software Foundation, 51 Franklin Street, Fifth Floor,
26Boston, MA 02110-1301, USA. */
27
28
29#include <linux/linkage.h>
30
31#ifdef __ARMEB__
32#define al r1
33#define ah r0
34#else
35#define al r0
36#define ah r1
37#endif
38
39ENTRY(__ashrdi3)
40
41 subs r3, r2, #32
42 rsb ip, r2, #32
43 movmi al, al, lsr r2
44 movpl al, ah, asr r3
45 orrmi al, al, ah, lsl ip
46 mov ah, ah, asr r2
47 mov pc, lr
48
diff --git a/arch/arm/lib/ashrdi3.c b/arch/arm/lib/ashrdi3.c
deleted file mode 100644
index 9a8600a7543f..000000000000
--- a/arch/arm/lib/ashrdi3.c
+++ /dev/null
@@ -1,57 +0,0 @@
1/* More subroutines needed by GCC output code on some machines. */
2/* Compile this one with gcc. */
3/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc.
4
5This file is part of GNU CC.
6
7GNU CC is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 2, or (at your option)
10any later version.
11
12GNU CC is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with GNU CC; see the file COPYING. If not, write to
19the Free Software Foundation, 59 Temple Place - Suite 330,
20Boston, MA 02111-1307, USA. */
21
22/* As a special exception, if you link this library with other files,
23 some of which are compiled with GCC, to produce an executable,
24 this library does not by itself cause the resulting executable
25 to be covered by the GNU General Public License.
26 This exception does not however invalidate any other reasons why
27 the executable file might be covered by the GNU General Public License.
28 */
29/* support functions required by the kernel. based on code from gcc-2.95.3 */
30/* I Molton 29/07/01 */
31
32#include "gcclib.h"
33
34s64 __ashrdi3(s64 u, int b)
35{
36 DIunion w;
37 int bm;
38 DIunion uu;
39
40 if (b == 0)
41 return u;
42
43 uu.ll = u;
44
45 bm = (sizeof(s32) * BITS_PER_UNIT) - b;
46 if (bm <= 0) {
47 /* w.s.high = 1..1 or 0..0 */
48 w.s.high = uu.s.high >> (sizeof(s32) * BITS_PER_UNIT - 1);
49 w.s.low = uu.s.high >> -bm;
50 } else {
51 u32 carries = (u32) uu.s.high << bm;
52 w.s.high = uu.s.high >> b;
53 w.s.low = ((u32) uu.s.low >> b) | carries;
54 }
55
56 return w.ll;
57}
diff --git a/arch/arm/lib/gcclib.h b/arch/arm/lib/gcclib.h
deleted file mode 100644
index 8b6dcc656de7..000000000000
--- a/arch/arm/lib/gcclib.h
+++ /dev/null
@@ -1,22 +0,0 @@
1/* gcclib.h -- definitions for various functions 'borrowed' from gcc-2.95.3 */
2/* I Molton 29/07/01 */
3
4#include <linux/types.h>
5
6#define BITS_PER_UNIT 8
7#define SI_TYPE_SIZE (sizeof(s32) * BITS_PER_UNIT)
8
9#ifdef __ARMEB__
10struct DIstruct {
11 s32 high, low;
12};
13#else
14struct DIstruct {
15 s32 low, high;
16};
17#endif
18
19typedef union {
20 struct DIstruct s;
21 s64 ll;
22} DIunion;
diff --git a/arch/arm/lib/lshrdi3.S b/arch/arm/lib/lshrdi3.S
new file mode 100644
index 000000000000..46c2ed19ec95
--- /dev/null
+++ b/arch/arm/lib/lshrdi3.S
@@ -0,0 +1,48 @@
1/* Copyright 1995, 1996, 1998, 1999, 2000, 2003, 2004, 2005
2 Free Software Foundation, Inc.
3
4This file is free software; you can redistribute it and/or modify it
5under the terms of the GNU General Public License as published by the
6Free Software Foundation; either version 2, or (at your option) any
7later version.
8
9In addition to the permissions in the GNU General Public License, the
10Free Software Foundation gives you unlimited permission to link the
11compiled version of this file into combinations with other programs,
12and to distribute those combinations without any restriction coming
13from the use of this file. (The General Public License restrictions
14do apply in other respects; for example, they cover modification of
15the file, and distribution when not linked into a combine
16executable.)
17
18This file is distributed in the hope that it will be useful, but
19WITHOUT ANY WARRANTY; without even the implied warranty of
20MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21General Public License for more details.
22
23You should have received a copy of the GNU General Public License
24along with this program; see the file COPYING. If not, write to
25the Free Software Foundation, 51 Franklin Street, Fifth Floor,
26Boston, MA 02110-1301, USA. */
27
28
29#include <linux/linkage.h>
30
31#ifdef __ARMEB__
32#define al r1
33#define ah r0
34#else
35#define al r0
36#define ah r1
37#endif
38
39ENTRY(__lshrdi3)
40
41 subs r3, r2, #32
42 rsb ip, r2, #32
43 movmi al, al, lsr r2
44 movpl al, ah, lsr r3
45 orrmi al, al, ah, lsl ip
46 mov ah, ah, lsr r2
47 mov pc, lr
48
diff --git a/arch/arm/lib/lshrdi3.c b/arch/arm/lib/lshrdi3.c
deleted file mode 100644
index 3681f49d2b6e..000000000000
--- a/arch/arm/lib/lshrdi3.c
+++ /dev/null
@@ -1,56 +0,0 @@
1/* More subroutines needed by GCC output code on some machines. */
2/* Compile this one with gcc. */
3/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc.
4
5This file is part of GNU CC.
6
7GNU CC is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 2, or (at your option)
10any later version.
11
12GNU CC is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with GNU CC; see the file COPYING. If not, write to
19the Free Software Foundation, 59 Temple Place - Suite 330,
20Boston, MA 02111-1307, USA. */
21
22/* As a special exception, if you link this library with other files,
23 some of which are compiled with GCC, to produce an executable,
24 this library does not by itself cause the resulting executable
25 to be covered by the GNU General Public License.
26 This exception does not however invalidate any other reasons why
27 the executable file might be covered by the GNU General Public License.
28 */
29/* support functions required by the kernel. based on code from gcc-2.95.3 */
30/* I Molton 29/07/01 */
31
32#include "gcclib.h"
33
34s64 __lshrdi3(s64 u, int b)
35{
36 DIunion w;
37 int bm;
38 DIunion uu;
39
40 if (b == 0)
41 return u;
42
43 uu.ll = u;
44
45 bm = (sizeof(s32) * BITS_PER_UNIT) - b;
46 if (bm <= 0) {
47 w.s.high = 0;
48 w.s.low = (u32) uu.s.high >> -bm;
49 } else {
50 u32 carries = (u32) uu.s.high << bm;
51 w.s.high = (u32) uu.s.high >> b;
52 w.s.low = ((u32) uu.s.low >> b) | carries;
53 }
54
55 return w.ll;
56}
diff --git a/arch/arm/lib/muldi3.S b/arch/arm/lib/muldi3.S
new file mode 100644
index 000000000000..c7fbdf005319
--- /dev/null
+++ b/arch/arm/lib/muldi3.S
@@ -0,0 +1,44 @@
1/*
2 * linux/arch/arm/lib/muldi3.S
3 *
4 * Author: Nicolas Pitre
5 * Created: Oct 19, 2005
6 * Copyright: Monta Vista Software, Inc.
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 */
12
13#include <linux/linkage.h>
14
15#ifdef __ARMEB__
16#define xh r0
17#define xl r1
18#define yh r2
19#define yl r3
20#else
21#define xl r0
22#define xh r1
23#define yl r2
24#define yh r3
25#endif
26
27ENTRY(__muldi3)
28
29 mul xh, yl, xh
30 mla xh, xl, yh, xh
31 mov ip, xl, asr #16
32 mov yh, yl, asr #16
33 bic xl, xl, ip, lsl #16
34 bic yl, yl, yh, lsl #16
35 mla xh, yh, ip, xh
36 mul yh, xl, yh
37 mul xl, yl, xl
38 mul ip, yl, ip
39 adds xl, xl, yh, lsl #16
40 adc xh, xh, yh, lsr #16
41 adds xl, xl, ip, lsl #16
42 adc xh, xh, ip, lsr #16
43 mov pc, lr
44
diff --git a/arch/arm/lib/muldi3.c b/arch/arm/lib/muldi3.c
deleted file mode 100644
index 0a3b93313f18..000000000000
--- a/arch/arm/lib/muldi3.c
+++ /dev/null
@@ -1,72 +0,0 @@
1/* More subroutines needed by GCC output code on some machines. */
2/* Compile this one with gcc. */
3/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc.
4
5This file is part of GNU CC.
6
7GNU CC is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 2, or (at your option)
10any later version.
11
12GNU CC is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with GNU CC; see the file COPYING. If not, write to
19the Free Software Foundation, 59 Temple Place - Suite 330,
20Boston, MA 02111-1307, USA. */
21
22/* As a special exception, if you link this library with other files,
23 some of which are compiled with GCC, to produce an executable,
24 this library does not by itself cause the resulting executable
25 to be covered by the GNU General Public License.
26 This exception does not however invalidate any other reasons why
27 the executable file might be covered by the GNU General Public License.
28 */
29/* support functions required by the kernel. based on code from gcc-2.95.3 */
30/* I Molton 29/07/01 */
31
32#include "gcclib.h"
33
34#define umul_ppmm(xh, xl, a, b) \
35{register u32 __t0, __t1, __t2; \
36 __asm__ ("%@ Inlined umul_ppmm \n\
37 mov %2, %5, lsr #16 \n\
38 mov %0, %6, lsr #16 \n\
39 bic %3, %5, %2, lsl #16 \n\
40 bic %4, %6, %0, lsl #16 \n\
41 mul %1, %3, %4 \n\
42 mul %4, %2, %4 \n\
43 mul %3, %0, %3 \n\
44 mul %0, %2, %0 \n\
45 adds %3, %4, %3 \n\
46 addcs %0, %0, #65536 \n\
47 adds %1, %1, %3, lsl #16 \n\
48 adc %0, %0, %3, lsr #16" \
49 : "=&r" ((u32) (xh)), \
50 "=r" ((u32) (xl)), \
51 "=&r" (__t0), "=&r" (__t1), "=r" (__t2) \
52 : "r" ((u32) (a)), \
53 "r" ((u32) (b)));}
54
55#define __umulsidi3(u, v) \
56 ({DIunion __w; \
57 umul_ppmm (__w.s.high, __w.s.low, u, v); \
58 __w.ll; })
59
60s64 __muldi3(s64 u, s64 v)
61{
62 DIunion w;
63 DIunion uu, vv;
64
65 uu.ll = u, vv.ll = v;
66
67 w.ll = __umulsidi3(uu.s.low, vv.s.low);
68 w.s.high += ((u32) uu.s.low * (u32) vv.s.high
69 + (u32) uu.s.high * (u32) vv.s.low);
70
71 return w.ll;
72}
diff --git a/arch/arm/lib/sha1.S b/arch/arm/lib/sha1.S
new file mode 100644
index 000000000000..ff6ece487ffc
--- /dev/null
+++ b/arch/arm/lib/sha1.S
@@ -0,0 +1,206 @@
1/*
2 * linux/arch/arm/lib/sha1.S
3 *
4 * SHA transform optimized for ARM
5 *
6 * Copyright: (C) 2005 by Nicolas Pitre <nico@cam.org>
7 * Created: September 17, 2005
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as
11 * published by the Free Software Foundation.
12 *
13 * The reference implementation for this code is linux/lib/sha1.c
14 */
15
16#include <linux/linkage.h>
17
18 .text
19
20
21/*
22 * void sha_transform(__u32 *digest, const char *in, __u32 *W)
23 *
24 * Note: the "in" ptr may be unaligned.
25 */
26
27ENTRY(sha_transform)
28
29 stmfd sp!, {r4 - r8, lr}
30
31 @ for (i = 0; i < 16; i++)
32 @ W[i] = be32_to_cpu(in[i]); */
33
34#ifdef __ARMEB__
35 mov r4, r0
36 mov r0, r2
37 mov r2, #64
38 bl memcpy
39 mov r2, r0
40 mov r0, r4
41#else
42 mov r3, r2
43 mov lr, #16
441: ldrb r4, [r1], #1
45 ldrb r5, [r1], #1
46 ldrb r6, [r1], #1
47 ldrb r7, [r1], #1
48 subs lr, lr, #1
49 orr r5, r5, r4, lsl #8
50 orr r6, r6, r5, lsl #8
51 orr r7, r7, r6, lsl #8
52 str r7, [r3], #4
53 bne 1b
54#endif
55
56 @ for (i = 0; i < 64; i++)
57 @ W[i+16] = ror(W[i+13] ^ W[i+8] ^ W[i+2] ^ W[i], 31);
58
59 sub r3, r2, #4
60 mov lr, #64
612: ldr r4, [r3, #4]!
62 subs lr, lr, #1
63 ldr r5, [r3, #8]
64 ldr r6, [r3, #32]
65 ldr r7, [r3, #52]
66 eor r4, r4, r5
67 eor r4, r4, r6
68 eor r4, r4, r7
69 mov r4, r4, ror #31
70 str r4, [r3, #64]
71 bne 2b
72
73 /*
74 * The SHA functions are:
75 *
76 * f1(B,C,D) = (D ^ (B & (C ^ D)))
77 * f2(B,C,D) = (B ^ C ^ D)
78 * f3(B,C,D) = ((B & C) | (D & (B | C)))
79 *
80 * Then the sub-blocks are processed as follows:
81 *
82 * A' = ror(A, 27) + f(B,C,D) + E + K + *W++
83 * B' = A
84 * C' = ror(B, 2)
85 * D' = C
86 * E' = D
87 *
88 * We therefore unroll each loop 5 times to avoid register shuffling.
89 * Also the ror for C (and also D and E which are successivelyderived
90 * from it) is applied in place to cut on an additional mov insn for
91 * each round.
92 */
93
94 .macro sha_f1, A, B, C, D, E
95 ldr r3, [r2], #4
96 eor ip, \C, \D
97 add \E, r1, \E, ror #2
98 and ip, \B, ip, ror #2
99 add \E, \E, \A, ror #27
100 eor ip, ip, \D, ror #2
101 add \E, \E, r3
102 add \E, \E, ip
103 .endm
104
105 .macro sha_f2, A, B, C, D, E
106 ldr r3, [r2], #4
107 add \E, r1, \E, ror #2
108 eor ip, \B, \C, ror #2
109 add \E, \E, \A, ror #27
110 eor ip, ip, \D, ror #2
111 add \E, \E, r3
112 add \E, \E, ip
113 .endm
114
115 .macro sha_f3, A, B, C, D, E
116 ldr r3, [r2], #4
117 add \E, r1, \E, ror #2
118 orr ip, \B, \C, ror #2
119 add \E, \E, \A, ror #27
120 and ip, ip, \D, ror #2
121 add \E, \E, r3
122 and r3, \B, \C, ror #2
123 orr ip, ip, r3
124 add \E, \E, ip
125 .endm
126
127 ldmia r0, {r4 - r8}
128
129 mov lr, #4
130 ldr r1, .L_sha_K + 0
131
132 /* adjust initial values */
133 mov r6, r6, ror #30
134 mov r7, r7, ror #30
135 mov r8, r8, ror #30
136
1373: subs lr, lr, #1
138 sha_f1 r4, r5, r6, r7, r8
139 sha_f1 r8, r4, r5, r6, r7
140 sha_f1 r7, r8, r4, r5, r6
141 sha_f1 r6, r7, r8, r4, r5
142 sha_f1 r5, r6, r7, r8, r4
143 bne 3b
144
145 ldr r1, .L_sha_K + 4
146 mov lr, #4
147
1484: subs lr, lr, #1
149 sha_f2 r4, r5, r6, r7, r8
150 sha_f2 r8, r4, r5, r6, r7
151 sha_f2 r7, r8, r4, r5, r6
152 sha_f2 r6, r7, r8, r4, r5
153 sha_f2 r5, r6, r7, r8, r4
154 bne 4b
155
156 ldr r1, .L_sha_K + 8
157 mov lr, #4
158
1595: subs lr, lr, #1
160 sha_f3 r4, r5, r6, r7, r8
161 sha_f3 r8, r4, r5, r6, r7
162 sha_f3 r7, r8, r4, r5, r6
163 sha_f3 r6, r7, r8, r4, r5
164 sha_f3 r5, r6, r7, r8, r4
165 bne 5b
166
167 ldr r1, .L_sha_K + 12
168 mov lr, #4
169
1706: subs lr, lr, #1
171 sha_f2 r4, r5, r6, r7, r8
172 sha_f2 r8, r4, r5, r6, r7
173 sha_f2 r7, r8, r4, r5, r6
174 sha_f2 r6, r7, r8, r4, r5
175 sha_f2 r5, r6, r7, r8, r4
176 bne 6b
177
178 ldmia r0, {r1, r2, r3, ip, lr}
179 add r4, r1, r4
180 add r5, r2, r5
181 add r6, r3, r6, ror #2
182 add r7, ip, r7, ror #2
183 add r8, lr, r8, ror #2
184 stmia r0, {r4 - r8}
185
186 ldmfd sp!, {r4 - r8, pc}
187
188.L_sha_K:
189 .word 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6
190
191
192/*
193 * void sha_init(__u32 *buf)
194 */
195
196.L_sha_initial_digest:
197 .word 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0
198
199ENTRY(sha_init)
200
201 str lr, [sp, #-4]!
202 adr r1, .L_sha_initial_digest
203 ldmia r1, {r1, r2, r3, ip, lr}
204 stmia r0, {r1, r2, r3, ip, lr}
205 ldr pc, [sp], #4
206
diff --git a/arch/arm/lib/ucmpdi2.S b/arch/arm/lib/ucmpdi2.S
new file mode 100644
index 000000000000..112630f93e5d
--- /dev/null
+++ b/arch/arm/lib/ucmpdi2.S
@@ -0,0 +1,35 @@
1/*
2 * linux/arch/arm/lib/ucmpdi2.S
3 *
4 * Author: Nicolas Pitre
5 * Created: Oct 19, 2005
6 * Copyright: Monta Vista Software, Inc.
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 */
12
13#include <linux/linkage.h>
14
15#ifdef __ARMEB__
16#define xh r0
17#define xl r1
18#define yh r2
19#define yl r3
20#else
21#define xl r0
22#define xh r1
23#define yl r2
24#define yh r3
25#endif
26
27ENTRY(__ucmpdi2)
28
29 cmp xh, yh
30 cmpeq xl, yl
31 movlo r0, #0
32 moveq r0, #1
33 movhi r0, #2
34 mov pc, lr
35
diff --git a/arch/arm/lib/ucmpdi2.c b/arch/arm/lib/ucmpdi2.c
deleted file mode 100644
index 57f3f2df3850..000000000000
--- a/arch/arm/lib/ucmpdi2.c
+++ /dev/null
@@ -1,49 +0,0 @@
1/* More subroutines needed by GCC output code on some machines. */
2/* Compile this one with gcc. */
3/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc.
4
5This file is part of GNU CC.
6
7GNU CC is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 2, or (at your option)
10any later version.
11
12GNU CC is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with GNU CC; see the file COPYING. If not, write to
19the Free Software Foundation, 59 Temple Place - Suite 330,
20Boston, MA 02111-1307, USA. */
21
22/* As a special exception, if you link this library with other files,
23 some of which are compiled with GCC, to produce an executable,
24 this library does not by itself cause the resulting executable
25 to be covered by the GNU General Public License.
26 This exception does not however invalidate any other reasons why
27 the executable file might be covered by the GNU General Public License.
28 */
29/* support functions required by the kernel. based on code from gcc-2.95.3 */
30/* I Molton 29/07/01 */
31
32#include "gcclib.h"
33
34int __ucmpdi2(s64 a, s64 b)
35{
36 DIunion au, bu;
37
38 au.ll = a, bu.ll = b;
39
40 if ((u32) au.s.high < (u32) bu.s.high)
41 return 0;
42 else if ((u32) au.s.high > (u32) bu.s.high)
43 return 2;
44 if ((u32) au.s.low < (u32) bu.s.low)
45 return 0;
46 else if ((u32) au.s.low > (u32) bu.s.low)
47 return 2;
48 return 1;
49}
diff --git a/arch/arm/mach-aaec2000/Makefile b/arch/arm/mach-aaec2000/Makefile
index 20ec83896c37..a8e462f58bc9 100644
--- a/arch/arm/mach-aaec2000/Makefile
+++ b/arch/arm/mach-aaec2000/Makefile
@@ -3,7 +3,7 @@
3# 3#
4 4
5# Common support (must be linked before board specific support) 5# Common support (must be linked before board specific support)
6obj-y += core.o 6obj-y += core.o clock.o
7 7
8# Specific board support 8# Specific board support
9obj-$(CONFIG_MACH_AAED2000) += aaed2000.o 9obj-$(CONFIG_MACH_AAED2000) += aaed2000.o
diff --git a/arch/arm/mach-aaec2000/aaed2000.c b/arch/arm/mach-aaec2000/aaed2000.c
index c9d899886648..f5ef69702296 100644
--- a/arch/arm/mach-aaec2000/aaed2000.c
+++ b/arch/arm/mach-aaec2000/aaed2000.c
@@ -27,16 +27,65 @@
27#include <asm/mach/map.h> 27#include <asm/mach/map.h>
28#include <asm/mach/irq.h> 28#include <asm/mach/irq.h>
29 29
30#include <asm/arch/aaed2000.h>
31
30#include "core.h" 32#include "core.h"
31 33
34static void aaed2000_clcd_disable(struct clcd_fb *fb)
35{
36 AAED_EXT_GPIO &= ~AAED_EGPIO_LCD_PWR_EN;
37}
38
39static void aaed2000_clcd_enable(struct clcd_fb *fb)
40{
41 AAED_EXT_GPIO |= AAED_EGPIO_LCD_PWR_EN;
42}
43
44struct aaec2000_clcd_info clcd_info = {
45 .enable = aaed2000_clcd_enable,
46 .disable = aaed2000_clcd_disable,
47 .panel = {
48 .mode = {
49 .name = "Sharp",
50 .refresh = 60,
51 .xres = 640,
52 .yres = 480,
53 .pixclock = 39721,
54 .left_margin = 20,
55 .right_margin = 44,
56 .upper_margin = 21,
57 .lower_margin = 34,
58 .hsync_len = 96,
59 .vsync_len = 2,
60 .sync = 0,
61 .vmode = FB_VMODE_NONINTERLACED,
62 },
63 .width = -1,
64 .height = -1,
65 .tim2 = TIM2_IVS | TIM2_IHS,
66 .cntl = CNTL_LCDTFT,
67 .bpp = 16,
68 },
69};
70
32static void __init aaed2000_init_irq(void) 71static void __init aaed2000_init_irq(void)
33{ 72{
34 aaec2000_init_irq(); 73 aaec2000_init_irq();
35} 74}
36 75
76static void __init aaed2000_init(void)
77{
78 aaec2000_set_clcd_plat_data(&clcd_info);
79}
80
81static struct map_desc aaed2000_io_desc[] __initdata = {
82 { EXT_GPIO_VBASE, EXT_GPIO_PBASE, EXT_GPIO_LENGTH, MT_DEVICE }, /* Ext GPIO */
83};
84
37static void __init aaed2000_map_io(void) 85static void __init aaed2000_map_io(void)
38{ 86{
39 aaec2000_map_io(); 87 aaec2000_map_io();
88 iotable_init(aaed2000_io_desc, ARRAY_SIZE(aaed2000_io_desc));
40} 89}
41 90
42MACHINE_START(AAED2000, "Agilent AAED-2000 Development Platform") 91MACHINE_START(AAED2000, "Agilent AAED-2000 Development Platform")
@@ -47,4 +96,5 @@ MACHINE_START(AAED2000, "Agilent AAED-2000 Development Platform")
47 .map_io = aaed2000_map_io, 96 .map_io = aaed2000_map_io,
48 .init_irq = aaed2000_init_irq, 97 .init_irq = aaed2000_init_irq,
49 .timer = &aaec2000_timer, 98 .timer = &aaec2000_timer,
99 .init_machine = aaed2000_init,
50MACHINE_END 100MACHINE_END
diff --git a/arch/arm/mach-aaec2000/clock.c b/arch/arm/mach-aaec2000/clock.c
new file mode 100644
index 000000000000..99e019169dda
--- /dev/null
+++ b/arch/arm/mach-aaec2000/clock.c
@@ -0,0 +1,110 @@
1/*
2 * linux/arch/arm/mach-aaec2000/clock.c
3 *
4 * Copyright (C) 2005 Nicolas Bellido Y Ortega
5 *
6 * Based on linux/arch/arm/mach-integrator/clock.c
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 */
12#include <linux/module.h>
13#include <linux/kernel.h>
14#include <linux/list.h>
15#include <linux/errno.h>
16#include <linux/err.h>
17
18#include <asm/semaphore.h>
19#include <asm/hardware/clock.h>
20
21#include "clock.h"
22
23static LIST_HEAD(clocks);
24static DECLARE_MUTEX(clocks_sem);
25
26struct clk *clk_get(struct device *dev, const char *id)
27{
28 struct clk *p, *clk = ERR_PTR(-ENOENT);
29
30 down(&clocks_sem);
31 list_for_each_entry(p, &clocks, node) {
32 if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) {
33 clk = p;
34 break;
35 }
36 }
37 up(&clocks_sem);
38
39 return clk;
40}
41EXPORT_SYMBOL(clk_get);
42
43void clk_put(struct clk *clk)
44{
45 module_put(clk->owner);
46}
47EXPORT_SYMBOL(clk_put);
48
49int clk_enable(struct clk *clk)
50{
51 return 0;
52}
53EXPORT_SYMBOL(clk_enable);
54
55void clk_disable(struct clk *clk)
56{
57}
58EXPORT_SYMBOL(clk_disable);
59
60int clk_use(struct clk *clk)
61{
62 return 0;
63}
64EXPORT_SYMBOL(clk_use);
65
66void clk_unuse(struct clk *clk)
67{
68}
69EXPORT_SYMBOL(clk_unuse);
70
71unsigned long clk_get_rate(struct clk *clk)
72{
73 return clk->rate;
74}
75EXPORT_SYMBOL(clk_get_rate);
76
77long clk_round_rate(struct clk *clk, unsigned long rate)
78{
79 return rate;
80}
81EXPORT_SYMBOL(clk_round_rate);
82
83int clk_set_rate(struct clk *clk, unsigned long rate)
84{
85 return 0;
86}
87EXPORT_SYMBOL(clk_set_rate);
88
89int clk_register(struct clk *clk)
90{
91 down(&clocks_sem);
92 list_add(&clk->node, &clocks);
93 up(&clocks_sem);
94 return 0;
95}
96EXPORT_SYMBOL(clk_register);
97
98void clk_unregister(struct clk *clk)
99{
100 down(&clocks_sem);
101 list_del(&clk->node);
102 up(&clocks_sem);
103}
104EXPORT_SYMBOL(clk_unregister);
105
106static int __init clk_init(void)
107{
108 return 0;
109}
110arch_initcall(clk_init);
diff --git a/arch/arm/mach-aaec2000/clock.h b/arch/arm/mach-aaec2000/clock.h
new file mode 100644
index 000000000000..d4bb74ff613f
--- /dev/null
+++ b/arch/arm/mach-aaec2000/clock.h
@@ -0,0 +1,23 @@
1/*
2 * linux/arch/arm/mach-aaec2000/clock.h
3 *
4 * Copyright (C) 2005 Nicolas Bellido Y Ortega
5 *
6 * Based on linux/arch/arm/mach-integrator/clock.h
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 */
12struct module;
13
14struct clk {
15 struct list_head node;
16 unsigned long rate;
17 struct module *owner;
18 const char *name;
19 void *data;
20};
21
22int clk_register(struct clk *clk);
23void clk_unregister(struct clk *clk);
diff --git a/arch/arm/mach-aaec2000/core.c b/arch/arm/mach-aaec2000/core.c
index aece0cd4f0a3..0c53dab80905 100644
--- a/arch/arm/mach-aaec2000/core.c
+++ b/arch/arm/mach-aaec2000/core.c
@@ -13,19 +13,27 @@
13#include <linux/module.h> 13#include <linux/module.h>
14#include <linux/kernel.h> 14#include <linux/kernel.h>
15#include <linux/init.h> 15#include <linux/init.h>
16#include <linux/device.h>
16#include <linux/list.h> 17#include <linux/list.h>
17#include <linux/errno.h> 18#include <linux/errno.h>
19#include <linux/dma-mapping.h>
18#include <linux/interrupt.h> 20#include <linux/interrupt.h>
19#include <linux/timex.h> 21#include <linux/timex.h>
20#include <linux/signal.h> 22#include <linux/signal.h>
21 23
22#include <asm/hardware.h> 24#include <asm/hardware.h>
23#include <asm/irq.h> 25#include <asm/irq.h>
26#include <asm/sizes.h>
27#include <asm/hardware/amba.h>
24 28
29#include <asm/mach/flash.h>
25#include <asm/mach/irq.h> 30#include <asm/mach/irq.h>
26#include <asm/mach/time.h> 31#include <asm/mach/time.h>
27#include <asm/mach/map.h> 32#include <asm/mach/map.h>
28 33
34#include "core.h"
35#include "clock.h"
36
29/* 37/*
30 * Common I/O mapping: 38 * Common I/O mapping:
31 * 39 *
@@ -40,9 +48,17 @@
40 * default mapping provided here. 48 * default mapping provided here.
41 */ 49 */
42static struct map_desc standard_io_desc[] __initdata = { 50static struct map_desc standard_io_desc[] __initdata = {
43 /* virtual physical length type */ 51 {
44 { VIO_APB_BASE, PIO_APB_BASE, IO_APB_LENGTH, MT_DEVICE }, 52 .virtual = VIO_APB_BASE,
45 { VIO_AHB_BASE, PIO_AHB_BASE, IO_AHB_LENGTH, MT_DEVICE } 53 .physical = __phys_to_pfn(PIO_APB_BASE),
54 .length = IO_APB_LENGTH,
55 .type = MT_DEVICE
56 }, {
57 .virtual = VIO_AHB_BASE,
58 .physical = __phys_to_pfn(PIO_AHB_BASE),
59 .length = IO_AHB_LENGTH,
60 .type = MT_DEVICE
61 }
46}; 62};
47 63
48void __init aaec2000_map_io(void) 64void __init aaec2000_map_io(void)
@@ -155,3 +171,116 @@ struct sys_timer aaec2000_timer = {
155 .offset = aaec2000_gettimeoffset, 171 .offset = aaec2000_gettimeoffset,
156}; 172};
157 173
174static struct clcd_panel mach_clcd_panel;
175
176static int aaec2000_clcd_setup(struct clcd_fb *fb)
177{
178 dma_addr_t dma;
179
180 fb->panel = &mach_clcd_panel;
181
182 fb->fb.screen_base = dma_alloc_writecombine(&fb->dev->dev, SZ_1M,
183 &dma, GFP_KERNEL);
184
185 if (!fb->fb.screen_base) {
186 printk(KERN_ERR "CLCD: unable to map framebuffer\n");
187 return -ENOMEM;
188 }
189
190 fb->fb.fix.smem_start = dma;
191 fb->fb.fix.smem_len = SZ_1M;
192
193 return 0;
194}
195
196static int aaec2000_clcd_mmap(struct clcd_fb *fb, struct vm_area_struct *vma)
197{
198 return dma_mmap_writecombine(&fb->dev->dev, vma,
199 fb->fb.screen_base,
200 fb->fb.fix.smem_start,
201 fb->fb.fix.smem_len);
202}
203
204static void aaec2000_clcd_remove(struct clcd_fb *fb)
205{
206 dma_free_writecombine(&fb->dev->dev, fb->fb.fix.smem_len,
207 fb->fb.screen_base, fb->fb.fix.smem_start);
208}
209
210static struct clcd_board clcd_plat_data = {
211 .name = "AAEC-2000",
212 .check = clcdfb_check,
213 .decode = clcdfb_decode,
214 .setup = aaec2000_clcd_setup,
215 .mmap = aaec2000_clcd_mmap,
216 .remove = aaec2000_clcd_remove,
217};
218
219static struct amba_device clcd_device = {
220 .dev = {
221 .bus_id = "mb:16",
222 .coherent_dma_mask = ~0,
223 .platform_data = &clcd_plat_data,
224 },
225 .res = {
226 .start = AAEC_CLCD_PHYS,
227 .end = AAEC_CLCD_PHYS + SZ_4K - 1,
228 .flags = IORESOURCE_MEM,
229 },
230 .irq = { INT_LCD, NO_IRQ },
231 .periphid = 0x41110,
232};
233
234static struct amba_device *amba_devs[] __initdata = {
235 &clcd_device,
236};
237
238static struct clk aaec2000_clcd_clk = {
239 .name = "CLCDCLK",
240};
241
242void __init aaec2000_set_clcd_plat_data(struct aaec2000_clcd_info *clcd)
243{
244 clcd_plat_data.enable = clcd->enable;
245 clcd_plat_data.disable = clcd->disable;
246 memcpy(&mach_clcd_panel, &clcd->panel, sizeof(struct clcd_panel));
247}
248
249static struct flash_platform_data aaec2000_flash_data = {
250 .map_name = "cfi_probe",
251 .width = 4,
252};
253
254static struct resource aaec2000_flash_resource = {
255 .start = AAEC_FLASH_BASE,
256 .end = AAEC_FLASH_BASE + AAEC_FLASH_SIZE,
257 .flags = IORESOURCE_MEM,
258};
259
260static struct platform_device aaec2000_flash_device = {
261 .name = "armflash",
262 .id = 0,
263 .dev = {
264 .platform_data = &aaec2000_flash_data,
265 },
266 .num_resources = 1,
267 .resource = &aaec2000_flash_resource,
268};
269
270static int __init aaec2000_init(void)
271{
272 int i;
273
274 clk_register(&aaec2000_clcd_clk);
275
276 for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
277 struct amba_device *d = amba_devs[i];
278 amba_device_register(d, &iomem_resource);
279 }
280
281 platform_device_register(&aaec2000_flash_device);
282
283 return 0;
284};
285arch_initcall(aaec2000_init);
286
diff --git a/arch/arm/mach-aaec2000/core.h b/arch/arm/mach-aaec2000/core.h
index 91893d848c16..daefc0ea14a1 100644
--- a/arch/arm/mach-aaec2000/core.h
+++ b/arch/arm/mach-aaec2000/core.h
@@ -9,8 +9,19 @@
9 * 9 *
10 */ 10 */
11 11
12#include <asm/hardware/amba_clcd.h>
13
12struct sys_timer; 14struct sys_timer;
13 15
14extern struct sys_timer aaec2000_timer; 16extern struct sys_timer aaec2000_timer;
15extern void __init aaec2000_map_io(void); 17extern void __init aaec2000_map_io(void);
16extern void __init aaec2000_init_irq(void); 18extern void __init aaec2000_init_irq(void);
19
20struct aaec2000_clcd_info {
21 struct clcd_panel panel;
22 void (*disable)(struct clcd_fb *);
23 void (*enable)(struct clcd_fb *);
24};
25
26extern void __init aaec2000_set_clcd_plat_data(struct aaec2000_clcd_info *);
27
diff --git a/arch/arm/mach-clps711x/Kconfig b/arch/arm/mach-clps711x/Kconfig
index 0793dcf54f2e..d5c155045762 100644
--- a/arch/arm/mach-clps711x/Kconfig
+++ b/arch/arm/mach-clps711x/Kconfig
@@ -69,6 +69,17 @@ config EP72XX_ROM_BOOT
69 69
70 You almost surely want to say N here. 70 You almost surely want to say N here.
71 71
72config MACH_MP1000
73 bool "MACH_MP1000"
74 help
75 Say Y if you intend to run the kernel on the Comdial MP1000 platform.
76
77config MP1000_90MHZ
78 bool "MP1000_90MHZ"
79 depends on MACH_MP1000
80 help
81 Say Y if you have the MP1000 configured to be set at 90MHZ rather than 74MHZ
82
72endmenu 83endmenu
73 84
74endif 85endif
diff --git a/arch/arm/mach-clps711x/Makefile b/arch/arm/mach-clps711x/Makefile
index 4a197315f0cf..8a6dc1ccf8fe 100644
--- a/arch/arm/mach-clps711x/Makefile
+++ b/arch/arm/mach-clps711x/Makefile
@@ -15,6 +15,7 @@ obj-$(CONFIG_ARCH_CDB89712) += cdb89712.o
15obj-$(CONFIG_ARCH_CLEP7312) += clep7312.o 15obj-$(CONFIG_ARCH_CLEP7312) += clep7312.o
16obj-$(CONFIG_ARCH_EDB7211) += edb7211-arch.o edb7211-mm.o 16obj-$(CONFIG_ARCH_EDB7211) += edb7211-arch.o edb7211-mm.o
17obj-$(CONFIG_ARCH_FORTUNET) += fortunet.o 17obj-$(CONFIG_ARCH_FORTUNET) += fortunet.o
18obj-$(CONFIG_MACH_MP1000) += mp1000-mach.o mp1000-mm.o mp1000-seprom.o
18obj-$(CONFIG_ARCH_P720T) += p720t.o 19obj-$(CONFIG_ARCH_P720T) += p720t.o
19leds-$(CONFIG_ARCH_P720T) += p720t-leds.o 20leds-$(CONFIG_ARCH_P720T) += p720t-leds.o
20obj-$(CONFIG_LEDS) += $(leds-y) 21obj-$(CONFIG_LEDS) += $(leds-y)
diff --git a/arch/arm/mach-clps711x/autcpu12.c b/arch/arm/mach-clps711x/autcpu12.c
index dc73feb1ffb0..43b9423d1440 100644
--- a/arch/arm/mach-clps711x/autcpu12.c
+++ b/arch/arm/mach-clps711x/autcpu12.c
@@ -46,10 +46,14 @@
46*/ 46*/
47 47
48static struct map_desc autcpu12_io_desc[] __initdata = { 48static struct map_desc autcpu12_io_desc[] __initdata = {
49 /* virtual, physical, length, type */ 49 /* memory-mapped extra io and CS8900A Ethernet chip */
50 /* memory-mapped extra io and CS8900A Ethernet chip */ 50 /* ethernet chip */
51 /* ethernet chip */ 51 {
52 { AUTCPU12_VIRT_CS8900A, AUTCPU12_PHYS_CS8900A, SZ_1M, MT_DEVICE } 52 .virtual = AUTCPU12_VIRT_CS8900A,
53 .pfn = __phys_to_pfn(AUTCPU12_PHYS_CS8900A),
54 .length = SZ_1M,
55 .type = MT_DEVICE
56 }
53}; 57};
54 58
55void __init autcpu12_map_io(void) 59void __init autcpu12_map_io(void)
diff --git a/arch/arm/mach-clps711x/cdb89712.c b/arch/arm/mach-clps711x/cdb89712.c
index a46c82cd2711..cba7be5a06c3 100644
--- a/arch/arm/mach-clps711x/cdb89712.c
+++ b/arch/arm/mach-clps711x/cdb89712.c
@@ -39,7 +39,12 @@
39 * ethernet driver, perhaps. 39 * ethernet driver, perhaps.
40 */ 40 */
41static struct map_desc cdb89712_io_desc[] __initdata = { 41static struct map_desc cdb89712_io_desc[] __initdata = {
42 { ETHER_BASE, ETHER_START, ETHER_SIZE, MT_DEVICE } 42 {
43 .virtual = ETHER_BASE,
44 .pfn =__phys_to_pfn(ETHER_START),
45 .length = ETHER_SIZE,
46 .type = MT_DEVICE
47 }
43}; 48};
44 49
45static void __init cdb89712_map_io(void) 50static void __init cdb89712_map_io(void)
diff --git a/arch/arm/mach-clps711x/ceiva.c b/arch/arm/mach-clps711x/ceiva.c
index 780d91805984..35d51a759b59 100644
--- a/arch/arm/mach-clps711x/ceiva.c
+++ b/arch/arm/mach-clps711x/ceiva.c
@@ -37,11 +37,13 @@
37#include "common.h" 37#include "common.h"
38 38
39static struct map_desc ceiva_io_desc[] __initdata = { 39static struct map_desc ceiva_io_desc[] __initdata = {
40 /* virtual, physical, length, type */ 40 /* SED1355 controlled video RAM & registers */
41 41 {
42 /* SED1355 controlled video RAM & registers */ 42 .virtual = CEIVA_VIRT_SED1355,
43 { CEIVA_VIRT_SED1355, CEIVA_PHYS_SED1355, SZ_2M, MT_DEVICE } 43 .pfn = __phys_to_pfn(CEIVA_PHYS_SED1355),
44 44 .length = SZ_2M,
45 .type = MT_DEVICE
46 }
45}; 47};
46 48
47 49
diff --git a/arch/arm/mach-clps711x/edb7211-mm.c b/arch/arm/mach-clps711x/edb7211-mm.c
index 7fd7b01822d0..72f8bb05d55e 100644
--- a/arch/arm/mach-clps711x/edb7211-mm.c
+++ b/arch/arm/mach-clps711x/edb7211-mm.c
@@ -51,15 +51,27 @@ extern void clps711x_map_io(void);
51 * happens). 51 * happens).
52 */ 52 */
53static struct map_desc edb7211_io_desc[] __initdata = { 53static struct map_desc edb7211_io_desc[] __initdata = {
54 /* virtual, physical, length, type */ 54 { /* memory-mapped extra keyboard row */
55 55 .virtual = EP7211_VIRT_EXTKBD,
56 /* memory-mapped extra keyboard row and CS8900A Ethernet chip */ 56 .pfn = __phys_to_pfn(EP7211_PHYS_EXTKBD),
57 { EP7211_VIRT_EXTKBD, EP7211_PHYS_EXTKBD, SZ_1M, MT_DEVICE }, 57 .length = SZ_1M,
58 { EP7211_VIRT_CS8900A, EP7211_PHYS_CS8900A, SZ_1M, MT_DEVICE }, 58 .type - MT_DEVICE
59 59 }, { /* and CS8900A Ethernet chip */
60 /* flash banks */ 60 .virtual = EP7211_VIRT_CS8900A,
61 { EP7211_VIRT_FLASH1, EP7211_PHYS_FLASH1, SZ_8M, MT_DEVICE }, 61 .pfn = __phys_to_pfn(EP7211_PHYS_CS8900A),
62 { EP7211_VIRT_FLASH2, EP7211_PHYS_FLASH2, SZ_8M, MT_DEVICE } 62 .length = SZ_1M,
63 .type = MT_DEVICE
64 }, { /* flash banks */
65 .virtual = EP7211_VIRT_FLASH1,
66 .pfn = __phys_to_pfn(EP7211_PHYS_FLASH1),
67 .length = SZ_8M,
68 .type = MT_DEVICE
69 }, {
70 .virtual = EP7211_VIRT_FLASH2,
71 .pfn = __phys_to_pfn(EP7211_PHYS_FLASH2),
72 .length = SZ_8M,
73 .type = MT_DEVICE
74 }
63}; 75};
64 76
65void __init edb7211_map_io(void) 77void __init edb7211_map_io(void)
diff --git a/arch/arm/mach-clps711x/mm.c b/arch/arm/mach-clps711x/mm.c
index 120b7cac84b5..a00f77ef8df8 100644
--- a/arch/arm/mach-clps711x/mm.c
+++ b/arch/arm/mach-clps711x/mm.c
@@ -24,6 +24,7 @@
24#include <linux/init.h> 24#include <linux/init.h>
25#include <linux/bootmem.h> 25#include <linux/bootmem.h>
26 26
27#include <asm/sizes.h>
27#include <asm/hardware.h> 28#include <asm/hardware.h>
28#include <asm/pgtable.h> 29#include <asm/pgtable.h>
29#include <asm/page.h> 30#include <asm/page.h>
@@ -34,7 +35,12 @@
34 * This maps the generic CLPS711x registers 35 * This maps the generic CLPS711x registers
35 */ 36 */
36static struct map_desc clps711x_io_desc[] __initdata = { 37static struct map_desc clps711x_io_desc[] __initdata = {
37 { CLPS7111_VIRT_BASE, CLPS7111_PHYS_BASE, 1048576, MT_DEVICE } 38 {
39 .virtual = CLPS7111_VIRT_BASE,
40 .pfn = __phys_to_pfn(CLPS7111_PHYS_BASE),
41 .length = SZ_1M,
42 .type = MT_DEVICE
43 }
38}; 44};
39 45
40void __init clps711x_map_io(void) 46void __init clps711x_map_io(void)
diff --git a/arch/arm/mach-clps711x/mp1000-mach.c b/arch/arm/mach-clps711x/mp1000-mach.c
new file mode 100644
index 000000000000..c2816bcde5e7
--- /dev/null
+++ b/arch/arm/mach-clps711x/mp1000-mach.c
@@ -0,0 +1,49 @@
1/*
2 * linux/arch/arm/mach-mp1000/mp1000.c
3 *
4 * Copyright (C) 2005 Comdial Corporation
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20#include <linux/init.h>
21#include <linux/types.h>
22#include <linux/string.h>
23
24#include <asm/setup.h>
25#include <asm/mach-types.h>
26#include <asm/mach/arch.h>
27#include <asm/arch/mp1000-seprom.h>
28
29#include "common.h"
30
31extern void mp1000_map_io(void);
32
33static void __init mp1000_init(void)
34{
35 seprom_init();
36}
37
38MACHINE_START(MP1000, "Comdial MP1000")
39 /* Maintainer: Jon Ringle */
40 .phys_ram = 0xc0000000,
41 .phys_io = 0x80000000,
42 .io_pg_offst = ((0xff000000) >> 18) & 0xfffc,
43 .boot_params = 0xc0015100,
44 .map_io = mp1000_map_io,
45 .init_irq = clps711x_init_irq,
46 .init_machine = mp1000_init,
47 .timer = &clps711x_timer,
48MACHINE_END
49
diff --git a/arch/arm/mach-clps711x/mp1000-mm.c b/arch/arm/mach-clps711x/mp1000-mm.c
new file mode 100644
index 000000000000..20e810b0ec0c
--- /dev/null
+++ b/arch/arm/mach-clps711x/mp1000-mm.c
@@ -0,0 +1,47 @@
1/*
2 * linux/arch/arm/mach-mp1000/mm.c
3 *
4 * Extra MM routines for the MP1000
5 *
6 * Copyright (C) 2005 Comdial Corporation
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 */
22#include <linux/kernel.h>
23#include <linux/init.h>
24
25#include <asm/hardware.h>
26#include <asm/page.h>
27#include <asm/pgtable.h>
28#include <asm/sizes.h>
29
30#include <asm/mach/map.h>
31
32extern void clps711x_map_io(void);
33
34static struct map_desc mp1000_io_desc[] __initdata = {
35 { MP1000_EIO_BASE, MP1000_EIO_START, MP1000_EIO_SIZE, MT_DEVICE },
36 { MP1000_FIO_BASE, MP1000_FIO_START, MP1000_FIO_SIZE, MT_DEVICE },
37 { MP1000_LIO_BASE, MP1000_LIO_START, MP1000_LIO_SIZE, MT_DEVICE },
38 { MP1000_NIO_BASE, MP1000_NIO_START, MP1000_NIO_SIZE, MT_DEVICE },
39 { MP1000_IDE_BASE, MP1000_IDE_START, MP1000_IDE_SIZE, MT_DEVICE },
40 { MP1000_DSP_BASE, MP1000_DSP_START, MP1000_DSP_SIZE, MT_DEVICE }
41};
42
43void __init mp1000_map_io(void)
44{
45 clps711x_map_io();
46 iotable_init(mp1000_io_desc, ARRAY_SIZE(mp1000_io_desc));
47}
diff --git a/arch/arm/mach-clps711x/mp1000-seprom.c b/arch/arm/mach-clps711x/mp1000-seprom.c
new file mode 100644
index 000000000000..b22d0bebb851
--- /dev/null
+++ b/arch/arm/mach-clps711x/mp1000-seprom.c
@@ -0,0 +1,195 @@
1/*`
2 * mp1000-seprom.c
3 *
4 * This file contains the Serial EEPROM code for the MP1000 board
5 *
6 * Copyright (C) 2005 Comdial Corporation
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 *
22 */
23
24#include <linux/kernel.h>
25#include <linux/init.h>
26#include <asm/hardware.h>
27#include <asm/hardware/clps7111.h>
28#include <asm/arch/mp1000-seprom.h>
29
30/* If SepromInit() can initialize and checksum the seprom successfully, */
31/* then it will point seprom_data_ptr at the shadow copy. */
32
33static eeprom_struct seprom_data; /* shadow copy of seprom content */
34
35eeprom_struct *seprom_data_ptr = 0; /* 0 => not initialized */
36
37/*
38 * Port D Bit 5 is Chip Select for EEPROM
39 * Port E Bit 0 is Input, Data out from EEPROM
40 * Port E Bit 1 is Output, Data in to EEPROM
41 * Port E Bit 2 is Output, CLK to EEPROM
42 */
43
44static char *port_d_ptr = (char *)(CLPS7111_VIRT_BASE + PDDR);
45static char *port_e_ptr = (char *)(CLPS7111_VIRT_BASE + PEDR);
46
47#define NO_OF_SHORTS 64 // Device is 64 x 16 bits
48#define ENABLE_RW 0
49#define DISABLE_RW 1
50
51static inline void toggle_seprom_clock(void)
52{
53 *port_e_ptr |= HwPortESepromCLK;
54 *port_e_ptr &= ~(HwPortESepromCLK);
55}
56
57static inline void select_eeprom(void)
58{
59 *port_d_ptr |= HwPortDEECS;
60 *port_e_ptr &= ~(HwPortESepromCLK);
61}
62
63static inline void deselect_eeprom(void)
64{
65 *port_d_ptr &= ~(HwPortDEECS);
66 *port_e_ptr &= ~(HwPortESepromDIn);
67}
68
69/*
70 * GetSepromDataPtr - returns pointer to shadow (RAM) copy of seprom
71 * and returns 0 if seprom is not initialized or
72 * has a checksum error.
73 */
74
75eeprom_struct* get_seprom_ptr(void)
76{
77 return seprom_data_ptr;
78}
79
80unsigned char* get_eeprom_mac_address(void)
81{
82 return seprom_data_ptr->variant.eprom_struct.mac_Address;
83}
84
85/*
86 * ReadSProm, Physically reads data from the Serial PROM
87 */
88static void read_sprom(short address, int length, eeprom_struct *buffer)
89{
90 short data = COMMAND_READ | (address & 0x3F);
91 short bit;
92 int i;
93
94 select_eeprom();
95
96 // Clock in 9 bits of the command
97 for (i = 0, bit = 0x100; i < 9; i++, bit >>= 1) {
98 if (data & bit)
99 *port_e_ptr |= HwPortESepromDIn;
100 else
101 *port_e_ptr &= ~(HwPortESepromDIn);
102
103 toggle_seprom_clock();
104 }
105
106 //
107 // Now read one or more shorts of data from the Seprom
108 //
109 while (length-- > 0) {
110 data = 0;
111
112 // Read 16 bits at a time
113 for (i = 0; i < 16; i++) {
114 data <<= 1;
115 toggle_seprom_clock();
116 data |= *port_e_ptr & HwPortESepromDOut;
117
118 }
119
120 buffer->variant.eprom_short_data[address++] = data;
121 }
122
123 deselect_eeprom();
124
125 return;
126}
127
128
129
130/*
131 * ReadSerialPROM
132 *
133 * Input: Pointer to array of 64 x 16 Bits
134 *
135 * Output: if no problem reading data is filled in
136 */
137static void read_serial_prom(eeprom_struct *data)
138{
139 read_sprom(0, 64, data);
140}
141
142
143//
144// Compute Serial EEPROM checksum
145//
146// Input: Pointer to struct with Eprom data
147//
148// Output: The computed Eprom checksum
149//
150static short compute_seprom_checksum(eeprom_struct *data)
151{
152 short checksum = 0;
153 int i;
154
155 for (i = 0; i < 126; i++) {
156 checksum += (short)data->variant.eprom_byte_data[i];
157 }
158
159 return((short)(0x5555 - (checksum & 0xFFFF)));
160}
161
162//
163// Make sure the data port bits for the SEPROM are correctly initialised
164//
165
166void __init seprom_init(void)
167{
168 short checksum;
169
170 // Init Port D
171 *(char *)(CLPS7111_VIRT_BASE + PDDDR) = 0x0;
172 *(char *)(CLPS7111_VIRT_BASE + PDDR) = 0x15;
173
174 // Init Port E
175 *(int *)(CLPS7111_VIRT_BASE + PEDDR) = 0x06;
176 *(int *)(CLPS7111_VIRT_BASE + PEDR) = 0x04;
177
178 //
179 // Make sure that EEPROM struct size never exceeds 128 bytes
180 //
181 if (sizeof(eeprom_struct) > 128) {
182 panic("Serial PROM struct size > 128, aborting read\n");
183 }
184
185 read_serial_prom(&seprom_data);
186
187 checksum = compute_seprom_checksum(&seprom_data);
188
189 if (checksum != seprom_data.variant.eprom_short_data[63]) {
190 panic("Serial EEPROM checksum failed\n");
191 }
192
193 seprom_data_ptr = &seprom_data;
194}
195
diff --git a/arch/arm/mach-clps711x/p720t.c b/arch/arm/mach-clps711x/p720t.c
index 5bdb90edf992..a1acb945fb51 100644
--- a/arch/arm/mach-clps711x/p720t.c
+++ b/arch/arm/mach-clps711x/p720t.c
@@ -29,6 +29,7 @@
29#include <asm/pgtable.h> 29#include <asm/pgtable.h>
30#include <asm/page.h> 30#include <asm/page.h>
31#include <asm/setup.h> 31#include <asm/setup.h>
32#include <asm/sizes.h>
32#include <asm/mach-types.h> 33#include <asm/mach-types.h>
33#include <asm/mach/arch.h> 34#include <asm/mach/arch.h>
34#include <asm/mach/map.h> 35#include <asm/mach/map.h>
@@ -42,8 +43,17 @@
42 * We map both here. 43 * We map both here.
43 */ 44 */
44static struct map_desc p720t_io_desc[] __initdata = { 45static struct map_desc p720t_io_desc[] __initdata = {
45 { SYSPLD_VIRT_BASE, SYSPLD_PHYS_BASE, 1048576, MT_DEVICE }, 46 {
46 { 0xfe400000, 0x10400000, 1048576, MT_DEVICE } 47 .virtual = SYSPLD_VIRT_BASE,
48 .pfn = __phys_to_pfn(SYSPLD_PHYS_BASE),
49 .length = SZ_1M,
50 .type = MT_DEVICE
51 }, {
52 .virtual = 0xfe400000,
53 .pfn = __phys_to_pfn(0x10400000),
54 .length = SZ_1M,
55 .type = MT_DEVICE
56 }
47}; 57};
48 58
49static void __init 59static void __init
diff --git a/arch/arm/mach-clps7500/core.c b/arch/arm/mach-clps7500/core.c
index e216ab8b9e8f..0364ba4b539e 100644
--- a/arch/arm/mach-clps7500/core.c
+++ b/arch/arm/mach-clps7500/core.c
@@ -259,10 +259,27 @@ static void __init clps7500_init_irq(void)
259} 259}
260 260
261static struct map_desc cl7500_io_desc[] __initdata = { 261static struct map_desc cl7500_io_desc[] __initdata = {
262 { IO_BASE, IO_START, IO_SIZE, MT_DEVICE }, /* IO space */ 262 { /* IO space */
263 { ISA_BASE, ISA_START, ISA_SIZE, MT_DEVICE }, /* ISA space */ 263 .virtual = IO_BASE,
264 { FLASH_BASE, FLASH_START, FLASH_SIZE, MT_DEVICE }, /* Flash */ 264 .pfn = __phys_to_pfn(IO_START),
265 { LED_BASE, LED_START, LED_SIZE, MT_DEVICE } /* LED */ 265 .length = IO_SIZE,
266 .type = MT_DEVICE
267 }, { /* ISA space */
268 .virtual = ISA_BASE,
269 .pfn = __phys_to_pfn(ISA_START),
270 .length = ISA_SIZE,
271 .type = MT_DEVICE
272 }, { /* Flash */
273 .virtual = FLASH_BASE,
274 .pfn = __phys_to_pfn(FLASH_START),
275 .length = FLASH_SIZE,
276 .type = MT_DEVICE
277 }, { /* LED */
278 .virtual = LED_BASE,
279 .pfn = __phys_to_pfn(LED_START),
280 .length = LED_SIZE,
281 .type = MT_DEVICE
282 }
266}; 283};
267 284
268static void __init clps7500_map_io(void) 285static void __init clps7500_map_io(void)
diff --git a/arch/arm/mach-ebsa110/core.c b/arch/arm/mach-ebsa110/core.c
index 5aeadfd72143..15261646dcdd 100644
--- a/arch/arm/mach-ebsa110/core.c
+++ b/arch/arm/mach-ebsa110/core.c
@@ -76,16 +76,42 @@ static struct map_desc ebsa110_io_desc[] __initdata = {
76 /* 76 /*
77 * sparse external-decode ISAIO space 77 * sparse external-decode ISAIO space
78 */ 78 */
79 { IRQ_STAT, TRICK4_PHYS, PGDIR_SIZE, MT_DEVICE }, /* IRQ_STAT/IRQ_MCLR */ 79 { /* IRQ_STAT/IRQ_MCLR */
80 { IRQ_MASK, TRICK3_PHYS, PGDIR_SIZE, MT_DEVICE }, /* IRQ_MASK/IRQ_MSET */ 80 .virtual = IRQ_STAT,
81 { SOFT_BASE, TRICK1_PHYS, PGDIR_SIZE, MT_DEVICE }, /* SOFT_BASE */ 81 .pfn = __phys_to_pfn(TRICK4_PHYS),
82 { PIT_BASE, TRICK0_PHYS, PGDIR_SIZE, MT_DEVICE }, /* PIT_BASE */ 82 .length = PGDIR_SIZE,
83 .type = MT_DEVICE
84 }, { /* IRQ_MASK/IRQ_MSET */
85 .virtual = IRQ_MASK,
86 .pfn = __phys_to_pfn(TRICK3_PHYS),
87 .length = PGDIR_SIZE,
88 .type = MT_DEVICE
89 }, { /* SOFT_BASE */
90 .virtual = SOFT_BASE,
91 .pfn = __phys_to_pfn(TRICK1_PHYS),
92 .length = PGDIR_SIZE,
93 .type = MT_DEVICE
94 }, { /* PIT_BASE */
95 .virtual = PIT_BASE,
96 .pfn = __phys_to_pfn(TRICK0_PHYS),
97 .length = PGDIR_SIZE,
98 .type = MT_DEVICE
99 },
83 100
84 /* 101 /*
85 * self-decode ISAIO space 102 * self-decode ISAIO space
86 */ 103 */
87 { ISAIO_BASE, ISAIO_PHYS, ISAIO_SIZE, MT_DEVICE }, 104 {
88 { ISAMEM_BASE, ISAMEM_PHYS, ISAMEM_SIZE, MT_DEVICE } 105 .virtual = ISAIO_BASE,
106 .pfn = __phys_to_pfn(ISAIO_PHYS),
107 .length = ISAIO_SIZE,
108 .type = MT_DEVICE
109 }, {
110 .virtual = ISAMEM_BASE,
111 .pfn = __phys_to_pfn(ISAMEM_PHYS),
112 .length = ISAMEM_SIZE,
113 .type = MT_DEVICE
114 }
89}; 115};
90 116
91static void __init ebsa110_map_io(void) 117static void __init ebsa110_map_io(void)
diff --git a/arch/arm/mach-ebsa110/io.c b/arch/arm/mach-ebsa110/io.c
index ef7eb5dc91bd..c648bfb676a1 100644
--- a/arch/arm/mach-ebsa110/io.c
+++ b/arch/arm/mach-ebsa110/io.c
@@ -24,6 +24,7 @@
24#include <linux/kernel.h> 24#include <linux/kernel.h>
25#include <linux/types.h> 25#include <linux/types.h>
26 26
27#include <asm/hardware.h>
27#include <asm/io.h> 28#include <asm/io.h>
28#include <asm/page.h> 29#include <asm/page.h>
29 30
diff --git a/arch/arm/mach-epxa10db/mm.c b/arch/arm/mach-epxa10db/mm.c
index 2aa57fa46da3..e8832d0910ee 100644
--- a/arch/arm/mach-epxa10db/mm.c
+++ b/arch/arm/mach-epxa10db/mm.c
@@ -31,12 +31,37 @@
31/* Page table mapping for I/O region */ 31/* Page table mapping for I/O region */
32 32
33static struct map_desc epxa10db_io_desc[] __initdata = { 33static struct map_desc epxa10db_io_desc[] __initdata = {
34 { IO_ADDRESS(EXC_REGISTERS_BASE), EXC_REGISTERS_BASE, SZ_16K, MT_DEVICE }, 34 {
35 { IO_ADDRESS(EXC_PLD_BLOCK0_BASE), EXC_PLD_BLOCK0_BASE, SZ_16K, MT_DEVICE }, 35 .virtual = IO_ADDRESS(EXC_REGISTERS_BASE),
36 { IO_ADDRESS(EXC_PLD_BLOCK1_BASE), EXC_PLD_BLOCK1_BASE, SZ_16K, MT_DEVICE }, 36 .pfn = __phys_to_pfn(EXC_REGISTERS_BASE),
37 { IO_ADDRESS(EXC_PLD_BLOCK2_BASE), EXC_PLD_BLOCK2_BASE, SZ_16K, MT_DEVICE }, 37 .length = SZ_16K,
38 { IO_ADDRESS(EXC_PLD_BLOCK3_BASE), EXC_PLD_BLOCK3_BASE, SZ_16K, MT_DEVICE }, 38 .type = MT_DEVICE
39 { FLASH_VADDR(EXC_EBI_BLOCK0_BASE), EXC_EBI_BLOCK0_BASE, SZ_16M, MT_DEVICE } 39 }, {
40 .virtual = IO_ADDRESS(EXC_PLD_BLOCK0_BASE),
41 .pfn = __phys_to_pfn(EXC_PLD_BLOCK0_BASE),
42 .length = SZ_16K,
43 .type = MT_DEVICE
44 }, {
45 .virtual = IO_ADDRESS(EXC_PLD_BLOCK1_BASE),
46 .pfn =__phys_to_pfn(EXC_PLD_BLOCK1_BASE),
47 .length = SZ_16K,
48 .type = MT_DEVICE
49 }, {
50 .virtual = IO_ADDRESS(EXC_PLD_BLOCK2_BASE),
51 .physical = __phys_to_pfn(EXC_PLD_BLOCK2_BASE),
52 .length = SZ_16K,
53 .type = MT_DEVICE
54 }, {
55 .virtual = IO_ADDRESS(EXC_PLD_BLOCK3_BASE),
56 .pfn = __phys_to_pfn(EXC_PLD_BLOCK3_BASE),
57 .length = SZ_16K,
58 .type = MT_DEVICE
59 }, {
60 .virtual = FLASH_VADDR(EXC_EBI_BLOCK0_BASE),
61 .pfn = __phys_to_pfn(EXC_EBI_BLOCK0_BASE),
62 .length = SZ_16M,
63 .type = MT_DEVICE
64 }
40}; 65};
41 66
42void __init epxa10db_map_io(void) 67void __init epxa10db_map_io(void)
diff --git a/arch/arm/mach-footbridge/common.c b/arch/arm/mach-footbridge/common.c
index eb8238c1ef06..dc09fd200c16 100644
--- a/arch/arm/mach-footbridge/common.c
+++ b/arch/arm/mach-footbridge/common.c
@@ -130,8 +130,17 @@ void __init footbridge_init_irq(void)
130 * it means that we have extra bullet protection on our feet. 130 * it means that we have extra bullet protection on our feet.
131 */ 131 */
132static struct map_desc fb_common_io_desc[] __initdata = { 132static struct map_desc fb_common_io_desc[] __initdata = {
133 { ARMCSR_BASE, DC21285_ARMCSR_BASE, ARMCSR_SIZE, MT_DEVICE }, 133 {
134 { XBUS_BASE, 0x40000000, XBUS_SIZE, MT_DEVICE } 134 .virtual = ARMCSR_BASE,
135 .pfn = DC21285_ARMCSR_BASE,
136 .length = ARMCSR_SIZE,
137 .type = MT_DEVICE
138 }, {
139 .virtual = XBUS_BASE,
140 .pfn = __phys_to_pfn(0x40000000),
141 .length = XBUS_SIZE,
142 .type = MT_DEVICE
143 }
135}; 144};
136 145
137/* 146/*
@@ -140,11 +149,32 @@ static struct map_desc fb_common_io_desc[] __initdata = {
140 */ 149 */
141static struct map_desc ebsa285_host_io_desc[] __initdata = { 150static struct map_desc ebsa285_host_io_desc[] __initdata = {
142#if defined(CONFIG_ARCH_FOOTBRIDGE) && defined(CONFIG_FOOTBRIDGE_HOST) 151#if defined(CONFIG_ARCH_FOOTBRIDGE) && defined(CONFIG_FOOTBRIDGE_HOST)
143 { PCIMEM_BASE, DC21285_PCI_MEM, PCIMEM_SIZE, MT_DEVICE }, 152 {
144 { PCICFG0_BASE, DC21285_PCI_TYPE_0_CONFIG, PCICFG0_SIZE, MT_DEVICE }, 153 .virtual = PCIMEM_BASE,
145 { PCICFG1_BASE, DC21285_PCI_TYPE_1_CONFIG, PCICFG1_SIZE, MT_DEVICE }, 154 .pfn = __phys_to_pfn(DC21285_PCI_MEM),
146 { PCIIACK_BASE, DC21285_PCI_IACK, PCIIACK_SIZE, MT_DEVICE }, 155 .length = PCIMEM_SIZE,
147 { PCIO_BASE, DC21285_PCI_IO, PCIO_SIZE, MT_DEVICE } 156 .type = MT_DEVICE
157 }, {
158 .virtual = PCICFG0_BASE,
159 .pfn = __phys_to_pfn(DC21285_PCI_TYPE_0_CONFIG),
160 .length = PCICFG0_SIZE,
161 .type = MT_DEVICE
162 }, {
163 .virtual = PCICFG1_BASE,
164 .pfn = __phys_to_pfn(DC21285_PCI_TYPE_1_CONFIG),
165 .length = PCICFG1_SIZE,
166 .type = MT_DEVICE
167 }, {
168 .virtual = PCIIACK_BASE,
169 .pfn = __phys_to_pfn(DC21285_PCI_IACK),
170 .length = PCIIACK_SIZE,
171 .type = MT_DEVICE
172 }, {
173 .virtual = PCIO_BASE,
174 .pfn = __phys_to_pfn(DC21285_PCI_IO),
175 .length = PCIO_SIZE,
176 .type = MT_DEVICE
177 }
148#endif 178#endif
149}; 179};
150 180
@@ -153,8 +183,17 @@ static struct map_desc ebsa285_host_io_desc[] __initdata = {
153 */ 183 */
154static struct map_desc co285_io_desc[] __initdata = { 184static struct map_desc co285_io_desc[] __initdata = {
155#ifdef CONFIG_ARCH_CO285 185#ifdef CONFIG_ARCH_CO285
156 { PCIO_BASE, DC21285_PCI_IO, PCIO_SIZE, MT_DEVICE }, 186 {
157 { PCIMEM_BASE, DC21285_PCI_MEM, PCIMEM_SIZE, MT_DEVICE } 187 .virtual = PCIO_BASE,
188 .pfn = __phys_to_pfn(DC21285_PCI_IO),
189 .length = PCIO_SIZE,
190 .type = MT_DEVICE
191 }, {
192 .virtual = PCIMEM_BASE,
193 .pfn = __phys_to_pfn(DC21285_PCI_MEM),
194 .length = PCIMEM_SIZE,
195 .type = MT_DEVICE
196 }
158#endif 197#endif
159}; 198};
160 199
diff --git a/arch/arm/mach-h720x/common.c b/arch/arm/mach-h720x/common.c
index 5110e2e65ddd..c096b4569308 100644
--- a/arch/arm/mach-h720x/common.c
+++ b/arch/arm/mach-h720x/common.c
@@ -237,7 +237,12 @@ void __init h720x_init_irq (void)
237} 237}
238 238
239static struct map_desc h720x_io_desc[] __initdata = { 239static struct map_desc h720x_io_desc[] __initdata = {
240 { IO_VIRT, IO_PHYS, IO_SIZE, MT_DEVICE }, 240 {
241 .virtual = IO_VIRT,
242 .pfn = __phys_to_pfn(IO_PHYS),
243 .length = IO_SIZE,
244 .type = MT_DEVICE
245 },
241}; 246};
242 247
243/* Initialize io tables */ 248/* Initialize io tables */
diff --git a/arch/arm/mach-imx/generic.c b/arch/arm/mach-imx/generic.c
index f8a742bb2d5b..837d7f0bda4c 100644
--- a/arch/arm/mach-imx/generic.c
+++ b/arch/arm/mach-imx/generic.c
@@ -26,6 +26,8 @@
26#include <linux/init.h> 26#include <linux/init.h>
27#include <linux/kernel.h> 27#include <linux/kernel.h>
28#include <linux/module.h> 28#include <linux/module.h>
29#include <linux/string.h>
30
29#include <asm/arch/imxfb.h> 31#include <asm/arch/imxfb.h>
30#include <asm/hardware.h> 32#include <asm/hardware.h>
31#include <asm/arch/imx-regs.h> 33#include <asm/arch/imx-regs.h>
@@ -273,8 +275,12 @@ static struct platform_device *devices[] __initdata = {
273}; 275};
274 276
275static struct map_desc imx_io_desc[] __initdata = { 277static struct map_desc imx_io_desc[] __initdata = {
276 /* virtual physical length type */ 278 {
277 {IMX_IO_BASE, IMX_IO_PHYS, IMX_IO_SIZE, MT_DEVICE}, 279 .virtual = IMX_IO_BASE,
280 .pfn = __phys_to_pfn(IMX_IO_PHYS),
281 .length = IMX_IO_SIZE,
282 .type = MT_DEVICE
283 }
278}; 284};
279 285
280void __init 286void __init
diff --git a/arch/arm/mach-imx/mx1ads.c b/arch/arm/mach-imx/mx1ads.c
index a7511ddfe364..4cbdc1fe04b1 100644
--- a/arch/arm/mach-imx/mx1ads.c
+++ b/arch/arm/mach-imx/mx1ads.c
@@ -61,13 +61,37 @@ mx1ads_init(void)
61} 61}
62 62
63static struct map_desc mx1ads_io_desc[] __initdata = { 63static struct map_desc mx1ads_io_desc[] __initdata = {
64 /* virtual physical length type */ 64 {
65 {IMX_CS0_VIRT, IMX_CS0_PHYS, IMX_CS0_SIZE, MT_DEVICE}, 65 .virtual = IMX_CS0_VIRT,
66 {IMX_CS1_VIRT, IMX_CS1_PHYS, IMX_CS1_SIZE, MT_DEVICE}, 66 .pfn = __phys_to_pfn(IMX_CS0_PHYS),
67 {IMX_CS2_VIRT, IMX_CS2_PHYS, IMX_CS2_SIZE, MT_DEVICE}, 67 .length = IMX_CS0_SIZE,
68 {IMX_CS3_VIRT, IMX_CS3_PHYS, IMX_CS3_SIZE, MT_DEVICE}, 68 .type = MT_DEVICE
69 {IMX_CS4_VIRT, IMX_CS4_PHYS, IMX_CS4_SIZE, MT_DEVICE}, 69 }, {
70 {IMX_CS5_VIRT, IMX_CS5_PHYS, IMX_CS5_SIZE, MT_DEVICE}, 70 .virtual = IMX_CS1_VIRT,
71 .pfn = __phys_to_pfn(IMX_CS1_PHYS),
72 .length = IMX_CS1_SIZE,
73 .type = MT_DEVICE
74 }, {
75 .virtual = IMX_CS2_VIRT,
76 .pfn = __phys_to_pfn(IMX_CS2_PHYS),
77 .length = IMX_CS2_SIZE,
78 .type = MT_DEVICE
79 }, {
80 .virtual = IMX_CS3_VIRT,
81 .pfn = __phys_to_pfn(IMX_CS3_PHYS),
82 .length = IMX_CS3_SIZE,
83 .type = MT_DEVICE
84 }, {
85 .virtual = IMX_CS4_VIRT,
86 .pfn = __phys_to_pfn(IMX_CS4_PHYS),
87 .length = IMX_CS4_SIZE,
88 .type = MT_DEVICE
89 }, {
90 .virtual = IMX_CS5_VIRT,
91 .pfn = __phys_to_pfn(IMX_CS5_PHYS),
92 .length = IMX_CS5_SIZE,
93 .type = MT_DEVICE
94 }
71}; 95};
72 96
73static void __init 97static void __init
diff --git a/arch/arm/mach-integrator/clock.c b/arch/arm/mach-integrator/clock.c
index 56200594db3c..73c360685cad 100644
--- a/arch/arm/mach-integrator/clock.c
+++ b/arch/arm/mach-integrator/clock.c
@@ -13,6 +13,7 @@
13#include <linux/list.h> 13#include <linux/list.h>
14#include <linux/errno.h> 14#include <linux/errno.h>
15#include <linux/err.h> 15#include <linux/err.h>
16#include <linux/string.h>
16 17
17#include <asm/semaphore.h> 18#include <asm/semaphore.h>
18#include <asm/hardware/clock.h> 19#include <asm/hardware/clock.h>
diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c
index 36e2b6eb67b7..764ceb49470a 100644
--- a/arch/arm/mach-integrator/integrator_ap.c
+++ b/arch/arm/mach-integrator/integrator_ap.c
@@ -30,6 +30,7 @@
30#include <asm/io.h> 30#include <asm/io.h>
31#include <asm/irq.h> 31#include <asm/irq.h>
32#include <asm/setup.h> 32#include <asm/setup.h>
33#include <asm/param.h> /* HZ */
33#include <asm/mach-types.h> 34#include <asm/mach-types.h>
34#include <asm/hardware/amba.h> 35#include <asm/hardware/amba.h>
35#include <asm/hardware/amba_kmi.h> 36#include <asm/hardware/amba_kmi.h>
@@ -75,19 +76,72 @@
75 */ 76 */
76 77
77static struct map_desc ap_io_desc[] __initdata = { 78static struct map_desc ap_io_desc[] __initdata = {
78 { IO_ADDRESS(INTEGRATOR_HDR_BASE), INTEGRATOR_HDR_BASE, SZ_4K, MT_DEVICE }, 79 {
79 { IO_ADDRESS(INTEGRATOR_SC_BASE), INTEGRATOR_SC_BASE, SZ_4K, MT_DEVICE }, 80 .virtual = IO_ADDRESS(INTEGRATOR_HDR_BASE),
80 { IO_ADDRESS(INTEGRATOR_EBI_BASE), INTEGRATOR_EBI_BASE, SZ_4K, MT_DEVICE }, 81 .pfn = __phys_to_pfn(INTEGRATOR_HDR_BASE),
81 { IO_ADDRESS(INTEGRATOR_CT_BASE), INTEGRATOR_CT_BASE, SZ_4K, MT_DEVICE }, 82 .length = SZ_4K,
82 { IO_ADDRESS(INTEGRATOR_IC_BASE), INTEGRATOR_IC_BASE, SZ_4K, MT_DEVICE }, 83 .type = MT_DEVICE
83 { IO_ADDRESS(INTEGRATOR_UART0_BASE), INTEGRATOR_UART0_BASE, SZ_4K, MT_DEVICE }, 84 }, {
84 { IO_ADDRESS(INTEGRATOR_UART1_BASE), INTEGRATOR_UART1_BASE, SZ_4K, MT_DEVICE }, 85 .virtual = IO_ADDRESS(INTEGRATOR_SC_BASE),
85 { IO_ADDRESS(INTEGRATOR_DBG_BASE), INTEGRATOR_DBG_BASE, SZ_4K, MT_DEVICE }, 86 .pfn = __phys_to_pfn(INTEGRATOR_SC_BASE),
86 { IO_ADDRESS(INTEGRATOR_GPIO_BASE), INTEGRATOR_GPIO_BASE, SZ_4K, MT_DEVICE }, 87 .length = SZ_4K,
87 { PCI_MEMORY_VADDR, PHYS_PCI_MEM_BASE, SZ_16M, MT_DEVICE }, 88 .type = MT_DEVICE
88 { PCI_CONFIG_VADDR, PHYS_PCI_CONFIG_BASE, SZ_16M, MT_DEVICE }, 89 }, {
89 { PCI_V3_VADDR, PHYS_PCI_V3_BASE, SZ_64K, MT_DEVICE }, 90 .virtual = IO_ADDRESS(INTEGRATOR_EBI_BASE),
90 { PCI_IO_VADDR, PHYS_PCI_IO_BASE, SZ_64K, MT_DEVICE } 91 .pfn = __phys_to_pfn(INTEGRATOR_EBI_BASE),
92 .length = SZ_4K,
93 .type = MT_DEVICE
94 }, {
95 .virtual = IO_ADDRESS(INTEGRATOR_CT_BASE),
96 .pfn = __phys_to_pfn(INTEGRATOR_CT_BASE),
97 .length = SZ_4K,
98 .type = MT_DEVICE
99 }, {
100 .virtual = IO_ADDRESS(INTEGRATOR_IC_BASE),
101 .pfn = __phys_to_pfn(INTEGRATOR_IC_BASE),
102 .length = SZ_4K,
103 .type = MT_DEVICE
104 }, {
105 .virtual = IO_ADDRESS(INTEGRATOR_UART0_BASE),
106 .pfn = __phys_to_pfn(INTEGRATOR_UART0_BASE),
107 .length = SZ_4K,
108 .type = MT_DEVICE
109 }, {
110 .virtual = IO_ADDRESS(INTEGRATOR_UART1_BASE),
111 .pfn = __phys_to_pfn(INTEGRATOR_UART1_BASE),
112 .length = SZ_4K,
113 .type = MT_DEVICE
114 }, {
115 .virtual = IO_ADDRESS(INTEGRATOR_DBG_BASE),
116 .pfn = __phys_to_pfn(INTEGRATOR_DBG_BASE),
117 .length = SZ_4K,
118 .type = MT_DEVICE
119 }, {
120 .virtual = IO_ADDRESS(INTEGRATOR_GPIO_BASE),
121 .pfn = __phys_to_pfn(INTEGRATOR_GPIO_BASE),
122 .length = SZ_4K,
123 .type = MT_DEVICE
124 }, {
125 .virtual = PCI_MEMORY_VADDR,
126 .pfn = __phys_to_pfn(PHYS_PCI_MEM_BASE),
127 .length = SZ_16M,
128 .type = MT_DEVICE
129 }, {
130 .virtual = PCI_CONFIG_VADDR,
131 .pfn = __phys_to_pfn(PHYS_PCI_CONFIG_BASE),
132 .length = SZ_16M,
133 .type = MT_DEVICE
134 }, {
135 .virtual = PCI_V3_VADDR,
136 .pfn = __phys_to_pfn(PHYS_PCI_V3_BASE),
137 .length = SZ_64K,
138 .type = MT_DEVICE
139 }, {
140 .virtual = PCI_IO_VADDR,
141 .pfn = __phys_to_pfn(PHYS_PCI_IO_BASE),
142 .length = SZ_64K,
143 .type = MT_DEVICE
144 }
91}; 145};
92 146
93static void __init ap_map_io(void) 147static void __init ap_map_io(void)
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c
index 2be5c03ab87f..aa34c58b96c4 100644
--- a/arch/arm/mach-integrator/integrator_cp.c
+++ b/arch/arm/mach-integrator/integrator_cp.c
@@ -74,17 +74,62 @@
74 */ 74 */
75 75
76static struct map_desc intcp_io_desc[] __initdata = { 76static struct map_desc intcp_io_desc[] __initdata = {
77 { IO_ADDRESS(INTEGRATOR_HDR_BASE), INTEGRATOR_HDR_BASE, SZ_4K, MT_DEVICE }, 77 {
78 { IO_ADDRESS(INTEGRATOR_SC_BASE), INTEGRATOR_SC_BASE, SZ_4K, MT_DEVICE }, 78 .virtual = IO_ADDRESS(INTEGRATOR_HDR_BASE),
79 { IO_ADDRESS(INTEGRATOR_EBI_BASE), INTEGRATOR_EBI_BASE, SZ_4K, MT_DEVICE }, 79 .pfn = __phys_to_pfn(INTEGRATOR_HDR_BASE),
80 { IO_ADDRESS(INTEGRATOR_CT_BASE), INTEGRATOR_CT_BASE, SZ_4K, MT_DEVICE }, 80 .length = SZ_4K,
81 { IO_ADDRESS(INTEGRATOR_IC_BASE), INTEGRATOR_IC_BASE, SZ_4K, MT_DEVICE }, 81 .type = MT_DEVICE
82 { IO_ADDRESS(INTEGRATOR_UART0_BASE), INTEGRATOR_UART0_BASE, SZ_4K, MT_DEVICE }, 82 }, {
83 { IO_ADDRESS(INTEGRATOR_UART1_BASE), INTEGRATOR_UART1_BASE, SZ_4K, MT_DEVICE }, 83 .virtual = IO_ADDRESS(INTEGRATOR_SC_BASE),
84 { IO_ADDRESS(INTEGRATOR_DBG_BASE), INTEGRATOR_DBG_BASE, SZ_4K, MT_DEVICE }, 84 .pfn = __phys_to_pfn(INTEGRATOR_SC_BASE),
85 { IO_ADDRESS(INTEGRATOR_GPIO_BASE), INTEGRATOR_GPIO_BASE, SZ_4K, MT_DEVICE }, 85 .length = SZ_4K,
86 { 0xfca00000, 0xca000000, SZ_4K, MT_DEVICE }, 86 .type = MT_DEVICE
87 { 0xfcb00000, 0xcb000000, SZ_4K, MT_DEVICE }, 87 }, {
88 .virtual = IO_ADDRESS(INTEGRATOR_EBI_BASE),
89 .pfn = __phys_to_pfn(INTEGRATOR_EBI_BASE),
90 .length = SZ_4K,
91 .type = MT_DEVICE
92 }, {
93 .virtual = IO_ADDRESS(INTEGRATOR_CT_BASE),
94 .pfn = __phys_to_pfn(INTEGRATOR_CT_BASE),
95 .length = SZ_4K,
96 .type = MT_DEVICE
97 }, {
98 .virtual = IO_ADDRESS(INTEGRATOR_IC_BASE),
99 .pfn = __phys_to_pfn(INTEGRATOR_IC_BASE),
100 .length = SZ_4K,
101 .type = MT_DEVICE
102 }, {
103 .virtual = IO_ADDRESS(INTEGRATOR_UART0_BASE),
104 .pfn = __phys_to_pfn(INTEGRATOR_UART0_BASE),
105 .length = SZ_4K,
106 .type = MT_DEVICE
107 }, {
108 .virtual = IO_ADDRESS(INTEGRATOR_UART1_BASE),
109 .pfn = __phys_to_pfn(INTEGRATOR_UART1_BASE),
110 .length = SZ_4K,
111 .type = MT_DEVICE
112 }, {
113 .virtual = IO_ADDRESS(INTEGRATOR_DBG_BASE),
114 .pfn = __phys_to_pfn(INTEGRATOR_DBG_BASE),
115 .length = SZ_4K,
116 .type = MT_DEVICE
117 }, {
118 .virtual = IO_ADDRESS(INTEGRATOR_GPIO_BASE),
119 .pfn = __phys_to_pfn(INTEGRATOR_GPIO_BASE),
120 .length = SZ_4K,
121 .type = MT_DEVICE
122 }, {
123 .virtual = 0xfca00000,
124 .pfn = __phys_to_pfn(0xca000000),
125 .length = SZ_4K,
126 .type = MT_DEVICE
127 }, {
128 .virtual = 0xfcb00000,
129 .pfn = __phys_to_pfn(0xcb000000),
130 .length = SZ_4K,
131 .type = MT_DEVICE
132 }
88}; 133};
89 134
90static void __init intcp_map_io(void) 135static void __init intcp_map_io(void)
diff --git a/arch/arm/mach-integrator/lm.c b/arch/arm/mach-integrator/lm.c
index c5f19d160598..5b41e3a724e1 100644
--- a/arch/arm/mach-integrator/lm.c
+++ b/arch/arm/mach-integrator/lm.c
@@ -10,6 +10,7 @@
10#include <linux/module.h> 10#include <linux/module.h>
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/device.h> 12#include <linux/device.h>
13#include <linux/slab.h>
13 14
14#include <asm/arch/lm.h> 15#include <asm/arch/lm.h>
15 16
diff --git a/arch/arm/mach-iop3xx/iop321-setup.c b/arch/arm/mach-iop3xx/iop321-setup.c
index 0f921ba2750c..bb5091223b63 100644
--- a/arch/arm/mach-iop3xx/iop321-setup.c
+++ b/arch/arm/mach-iop3xx/iop321-setup.c
@@ -38,13 +38,17 @@
38 * Standard IO mapping for all IOP321 based systems 38 * Standard IO mapping for all IOP321 based systems
39 */ 39 */
40static struct map_desc iop321_std_desc[] __initdata = { 40static struct map_desc iop321_std_desc[] __initdata = {
41 /* virtual physical length type */ 41 { /* mem mapped registers */
42 42 .virtual = IOP321_VIRT_MEM_BASE,
43 /* mem mapped registers */ 43 .pfn = __phys_to_pfn(IOP321_PHYS_MEM_BASE),
44 { IOP321_VIRT_MEM_BASE, IOP321_PHYS_MEM_BASE, 0x00002000, MT_DEVICE }, 44 .length = 0x00002000,
45 45 .type = MT_DEVICE
46 /* PCI IO space */ 46 }, { /* PCI IO space */
47 { IOP321_PCI_LOWER_IO_VA, IOP321_PCI_LOWER_IO_PA, IOP321_PCI_IO_WINDOW_SIZE, MT_DEVICE } 47 .virtual = IOP321_PCI_LOWER_IO_VA,
48 .pfn = __phys_to_pfn(IOP321_PCI_LOWER_IO_PA),
49 .length = IOP321_PCI_IO_WINDOW_SIZE,
50 .type = MT_DEVICE
51 }
48}; 52};
49 53
50#ifdef CONFIG_ARCH_IQ80321 54#ifdef CONFIG_ARCH_IQ80321
diff --git a/arch/arm/mach-iop3xx/iop331-setup.c b/arch/arm/mach-iop3xx/iop331-setup.c
index fc74b722f72f..a2533c3ab42f 100644
--- a/arch/arm/mach-iop3xx/iop331-setup.c
+++ b/arch/arm/mach-iop3xx/iop331-setup.c
@@ -37,13 +37,17 @@
37 * Standard IO mapping for all IOP331 based systems 37 * Standard IO mapping for all IOP331 based systems
38 */ 38 */
39static struct map_desc iop331_std_desc[] __initdata = { 39static struct map_desc iop331_std_desc[] __initdata = {
40 /* virtual physical length type */ 40 { /* mem mapped registers */
41 41 .virtual = IOP331_VIRT_MEM_BASE,
42 /* mem mapped registers */ 42 .pfn = __phys_to_pfn(IOP331_PHYS_MEM_BASE),
43 { IOP331_VIRT_MEM_BASE, IOP331_PHYS_MEM_BASE, 0x00002000, MT_DEVICE }, 43 .length = 0x00002000,
44 44 .type = MT_DEVICE
45 /* PCI IO space */ 45 }, { /* PCI IO space */
46 { IOP331_PCI_LOWER_IO_VA, IOP331_PCI_LOWER_IO_PA, IOP331_PCI_IO_WINDOW_SIZE, MT_DEVICE } 46 .virtual = IOP331_PCI_LOWER_IO_VA,
47 .pfn = __phys_to_pfn(IOP331_PCI_LOWER_IO_PA),
48 .length = IOP331_PCI_IO_WINDOW_SIZE,
49 .type = MT_DEVICE
50 }
47}; 51};
48 52
49static struct uart_port iop331_serial_ports[] = { 53static struct uart_port iop331_serial_ports[] = {
diff --git a/arch/arm/mach-iop3xx/iq31244-mm.c b/arch/arm/mach-iop3xx/iq31244-mm.c
index 55992ab586ba..e874b54eefe3 100644
--- a/arch/arm/mach-iop3xx/iq31244-mm.c
+++ b/arch/arm/mach-iop3xx/iq31244-mm.c
@@ -29,10 +29,12 @@
29 * We use RedBoot's setup for the onboard devices. 29 * We use RedBoot's setup for the onboard devices.
30 */ 30 */
31static struct map_desc iq31244_io_desc[] __initdata = { 31static struct map_desc iq31244_io_desc[] __initdata = {
32 /* virtual physical length type */ 32 { /* on-board devices */
33 33 .virtual = IQ31244_UART,
34 /* on-board devices */ 34 .pfn = __phys_to_pfn(IQ31244_UART),
35 { IQ31244_UART, IQ31244_UART, 0x00100000, MT_DEVICE } 35 .length = 0x00100000,
36 .type = MT_DEVICE
37 }
36}; 38};
37 39
38void __init iq31244_map_io(void) 40void __init iq31244_map_io(void)
diff --git a/arch/arm/mach-iop3xx/iq31244-pci.c b/arch/arm/mach-iop3xx/iq31244-pci.c
index f997daa800bf..c6a973ba8fc6 100644
--- a/arch/arm/mach-iop3xx/iq31244-pci.c
+++ b/arch/arm/mach-iop3xx/iq31244-pci.c
@@ -14,6 +14,8 @@
14#include <linux/kernel.h> 14#include <linux/kernel.h>
15#include <linux/pci.h> 15#include <linux/pci.h>
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/string.h>
18#include <linux/slab.h>
17 19
18#include <asm/hardware.h> 20#include <asm/hardware.h>
19#include <asm/irq.h> 21#include <asm/irq.h>
diff --git a/arch/arm/mach-iop3xx/iq80321-mm.c b/arch/arm/mach-iop3xx/iq80321-mm.c
index bb3e9e5a9aff..d9cac5e1fc3d 100644
--- a/arch/arm/mach-iop3xx/iq80321-mm.c
+++ b/arch/arm/mach-iop3xx/iq80321-mm.c
@@ -29,10 +29,12 @@
29 * We use RedBoot's setup for the onboard devices. 29 * We use RedBoot's setup for the onboard devices.
30 */ 30 */
31static struct map_desc iq80321_io_desc[] __initdata = { 31static struct map_desc iq80321_io_desc[] __initdata = {
32 /* virtual physical length type */ 32 { /* on-board devices */
33 33 .virtual = IQ80321_UART,
34 /* on-board devices */ 34 .pfn = __phys_to_pfn(IQ80321_UART),
35 { IQ80321_UART, IQ80321_UART, 0x00100000, MT_DEVICE } 35 .length = 0x00100000,
36 .type = MT_DEVICE
37 }
36}; 38};
37 39
38void __init iq80321_map_io(void) 40void __init iq80321_map_io(void)
diff --git a/arch/arm/mach-iop3xx/iq80321-pci.c b/arch/arm/mach-iop3xx/iq80321-pci.c
index 79fea3d20b66..802f6d091b75 100644
--- a/arch/arm/mach-iop3xx/iq80321-pci.c
+++ b/arch/arm/mach-iop3xx/iq80321-pci.c
@@ -14,6 +14,8 @@
14#include <linux/kernel.h> 14#include <linux/kernel.h>
15#include <linux/pci.h> 15#include <linux/pci.h>
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/string.h>
18#include <linux/slab.h>
17 19
18#include <asm/hardware.h> 20#include <asm/hardware.h>
19#include <asm/irq.h> 21#include <asm/irq.h>
diff --git a/arch/arm/mach-iop3xx/iq80331-pci.c b/arch/arm/mach-iop3xx/iq80331-pci.c
index f37a0e26b466..654e450a1311 100644
--- a/arch/arm/mach-iop3xx/iq80331-pci.c
+++ b/arch/arm/mach-iop3xx/iq80331-pci.c
@@ -13,6 +13,8 @@
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/pci.h> 14#include <linux/pci.h>
15#include <linux/init.h> 15#include <linux/init.h>
16#include <linux/string.h>
17#include <linux/slab.h>
16 18
17#include <asm/hardware.h> 19#include <asm/hardware.h>
18#include <asm/irq.h> 20#include <asm/irq.h>
diff --git a/arch/arm/mach-iop3xx/iq80332-pci.c b/arch/arm/mach-iop3xx/iq80332-pci.c
index b9807aa2aade..65951ffe4631 100644
--- a/arch/arm/mach-iop3xx/iq80332-pci.c
+++ b/arch/arm/mach-iop3xx/iq80332-pci.c
@@ -13,6 +13,8 @@
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/pci.h> 14#include <linux/pci.h>
15#include <linux/init.h> 15#include <linux/init.h>
16#include <linux/string.h>
17#include <linux/slab.h>
16 18
17#include <asm/hardware.h> 19#include <asm/hardware.h>
18#include <asm/irq.h> 20#include <asm/irq.h>
diff --git a/arch/arm/mach-ixp2000/core.c b/arch/arm/mach-ixp2000/core.c
index f4d7f1f6ef85..01c393c504d0 100644
--- a/arch/arm/mach-ixp2000/core.c
+++ b/arch/arm/mach-ixp2000/core.c
@@ -83,42 +83,42 @@ void ixp2000_release_slowport(struct slowport_cfg *old_cfg)
83static struct map_desc ixp2000_io_desc[] __initdata = { 83static struct map_desc ixp2000_io_desc[] __initdata = {
84 { 84 {
85 .virtual = IXP2000_CAP_VIRT_BASE, 85 .virtual = IXP2000_CAP_VIRT_BASE,
86 .physical = IXP2000_CAP_PHYS_BASE, 86 .pfn = __phys_to_pfn(IXP2000_CAP_PHYS_BASE),
87 .length = IXP2000_CAP_SIZE, 87 .length = IXP2000_CAP_SIZE,
88 .type = MT_DEVICE 88 .type = MT_DEVICE
89 }, { 89 }, {
90 .virtual = IXP2000_INTCTL_VIRT_BASE, 90 .virtual = IXP2000_INTCTL_VIRT_BASE,
91 .physical = IXP2000_INTCTL_PHYS_BASE, 91 .pfn = __phys_to_pfn(IXP2000_INTCTL_PHYS_BASE),
92 .length = IXP2000_INTCTL_SIZE, 92 .length = IXP2000_INTCTL_SIZE,
93 .type = MT_DEVICE 93 .type = MT_DEVICE
94 }, { 94 }, {
95 .virtual = IXP2000_PCI_CREG_VIRT_BASE, 95 .virtual = IXP2000_PCI_CREG_VIRT_BASE,
96 .physical = IXP2000_PCI_CREG_PHYS_BASE, 96 .pfn = __phys_to_pfn(IXP2000_PCI_CREG_PHYS_BASE),
97 .length = IXP2000_PCI_CREG_SIZE, 97 .length = IXP2000_PCI_CREG_SIZE,
98 .type = MT_DEVICE 98 .type = MT_DEVICE
99 }, { 99 }, {
100 .virtual = IXP2000_PCI_CSR_VIRT_BASE, 100 .virtual = IXP2000_PCI_CSR_VIRT_BASE,
101 .physical = IXP2000_PCI_CSR_PHYS_BASE, 101 .pfn = __phys_to_pfn(IXP2000_PCI_CSR_PHYS_BASE),
102 .length = IXP2000_PCI_CSR_SIZE, 102 .length = IXP2000_PCI_CSR_SIZE,
103 .type = MT_DEVICE 103 .type = MT_DEVICE
104 }, { 104 }, {
105 .virtual = IXP2000_MSF_VIRT_BASE, 105 .virtual = IXP2000_MSF_VIRT_BASE,
106 .physical = IXP2000_MSF_PHYS_BASE, 106 .pfn = __phys_to_pfn(IXP2000_MSF_PHYS_BASE),
107 .length = IXP2000_MSF_SIZE, 107 .length = IXP2000_MSF_SIZE,
108 .type = MT_DEVICE 108 .type = MT_DEVICE
109 }, { 109 }, {
110 .virtual = IXP2000_PCI_IO_VIRT_BASE, 110 .virtual = IXP2000_PCI_IO_VIRT_BASE,
111 .physical = IXP2000_PCI_IO_PHYS_BASE, 111 .pfn = __phys_to_pfn(IXP2000_PCI_IO_PHYS_BASE),
112 .length = IXP2000_PCI_IO_SIZE, 112 .length = IXP2000_PCI_IO_SIZE,
113 .type = MT_DEVICE 113 .type = MT_DEVICE
114 }, { 114 }, {
115 .virtual = IXP2000_PCI_CFG0_VIRT_BASE, 115 .virtual = IXP2000_PCI_CFG0_VIRT_BASE,
116 .physical = IXP2000_PCI_CFG0_PHYS_BASE, 116 .pfn = __phys_to_pfn(IXP2000_PCI_CFG0_PHYS_BASE),
117 .length = IXP2000_PCI_CFG0_SIZE, 117 .length = IXP2000_PCI_CFG0_SIZE,
118 .type = MT_DEVICE 118 .type = MT_DEVICE
119 }, { 119 }, {
120 .virtual = IXP2000_PCI_CFG1_VIRT_BASE, 120 .virtual = IXP2000_PCI_CFG1_VIRT_BASE,
121 .physical = IXP2000_PCI_CFG1_PHYS_BASE, 121 .pfn = __phys_to_pfn(IXP2000_PCI_CFG1_PHYS_BASE),
122 .length = IXP2000_PCI_CFG1_SIZE, 122 .length = IXP2000_PCI_CFG1_SIZE,
123 .type = MT_DEVICE 123 .type = MT_DEVICE
124 } 124 }
diff --git a/arch/arm/mach-ixp2000/ixdp2x00.c b/arch/arm/mach-ixp2000/ixdp2x00.c
index 63ba0191aa65..8b4a839b6279 100644
--- a/arch/arm/mach-ixp2000/ixdp2x00.c
+++ b/arch/arm/mach-ixp2000/ixdp2x00.c
@@ -176,7 +176,7 @@ void ixdp2x00_init_irq(volatile unsigned long *stat_reg, volatile unsigned long
176 *************************************************************************/ 176 *************************************************************************/
177static struct map_desc ixdp2x00_io_desc __initdata = { 177static struct map_desc ixdp2x00_io_desc __initdata = {
178 .virtual = IXDP2X00_VIRT_CPLD_BASE, 178 .virtual = IXDP2X00_VIRT_CPLD_BASE,
179 .physical = IXDP2X00_PHYS_CPLD_BASE, 179 .pfn = __phys_to_pfn(IXDP2X00_PHYS_CPLD_BASE),
180 .length = IXDP2X00_CPLD_SIZE, 180 .length = IXDP2X00_CPLD_SIZE,
181 .type = MT_DEVICE 181 .type = MT_DEVICE
182}; 182};
diff --git a/arch/arm/mach-ixp2000/ixdp2x01.c b/arch/arm/mach-ixp2000/ixdp2x01.c
index 7a5109921287..fee1d7b73503 100644
--- a/arch/arm/mach-ixp2000/ixdp2x01.c
+++ b/arch/arm/mach-ixp2000/ixdp2x01.c
@@ -136,7 +136,7 @@ void __init ixdp2x01_init_irq(void)
136 *************************************************************************/ 136 *************************************************************************/
137static struct map_desc ixdp2x01_io_desc __initdata = { 137static struct map_desc ixdp2x01_io_desc __initdata = {
138 .virtual = IXDP2X01_VIRT_CPLD_BASE, 138 .virtual = IXDP2X01_VIRT_CPLD_BASE,
139 .physical = IXDP2X01_PHYS_CPLD_BASE, 139 .pfn = __phys_to_pfn(IXDP2X01_PHYS_CPLD_BASE),
140 .length = IXDP2X01_CPLD_REGION_SIZE, 140 .length = IXDP2X01_CPLD_REGION_SIZE,
141 .type = MT_DEVICE 141 .type = MT_DEVICE
142}; 142};
diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c
index 36b6045213ee..6c396447c4e0 100644
--- a/arch/arm/mach-ixp4xx/common.c
+++ b/arch/arm/mach-ixp4xx/common.c
@@ -44,24 +44,24 @@
44static struct map_desc ixp4xx_io_desc[] __initdata = { 44static struct map_desc ixp4xx_io_desc[] __initdata = {
45 { /* UART, Interrupt ctrl, GPIO, timers, NPEs, MACs, USB .... */ 45 { /* UART, Interrupt ctrl, GPIO, timers, NPEs, MACs, USB .... */
46 .virtual = IXP4XX_PERIPHERAL_BASE_VIRT, 46 .virtual = IXP4XX_PERIPHERAL_BASE_VIRT,
47 .physical = IXP4XX_PERIPHERAL_BASE_PHYS, 47 .pfn = __phys_to_pfn(IXP4XX_PERIPHERAL_BASE_PHYS),
48 .length = IXP4XX_PERIPHERAL_REGION_SIZE, 48 .length = IXP4XX_PERIPHERAL_REGION_SIZE,
49 .type = MT_DEVICE 49 .type = MT_DEVICE
50 }, { /* Expansion Bus Config Registers */ 50 }, { /* Expansion Bus Config Registers */
51 .virtual = IXP4XX_EXP_CFG_BASE_VIRT, 51 .virtual = IXP4XX_EXP_CFG_BASE_VIRT,
52 .physical = IXP4XX_EXP_CFG_BASE_PHYS, 52 .pfn = __phys_to_pfn(IXP4XX_EXP_CFG_BASE_PHYS),
53 .length = IXP4XX_EXP_CFG_REGION_SIZE, 53 .length = IXP4XX_EXP_CFG_REGION_SIZE,
54 .type = MT_DEVICE 54 .type = MT_DEVICE
55 }, { /* PCI Registers */ 55 }, { /* PCI Registers */
56 .virtual = IXP4XX_PCI_CFG_BASE_VIRT, 56 .virtual = IXP4XX_PCI_CFG_BASE_VIRT,
57 .physical = IXP4XX_PCI_CFG_BASE_PHYS, 57 .pfn = __phys_to_pfn(IXP4XX_PCI_CFG_BASE_PHYS),
58 .length = IXP4XX_PCI_CFG_REGION_SIZE, 58 .length = IXP4XX_PCI_CFG_REGION_SIZE,
59 .type = MT_DEVICE 59 .type = MT_DEVICE
60 }, 60 },
61#ifdef CONFIG_DEBUG_LL 61#ifdef CONFIG_DEBUG_LL
62 { /* Debug UART mapping */ 62 { /* Debug UART mapping */
63 .virtual = IXP4XX_DEBUG_UART_BASE_VIRT, 63 .virtual = IXP4XX_DEBUG_UART_BASE_VIRT,
64 .physical = IXP4XX_DEBUG_UART_BASE_PHYS, 64 .pfn = __phys_to_pfn(IXP4XX_DEBUG_UART_BASE_PHYS),
65 .length = IXP4XX_DEBUG_UART_REGION_SIZE, 65 .length = IXP4XX_DEBUG_UART_REGION_SIZE,
66 .type = MT_DEVICE 66 .type = MT_DEVICE
67 } 67 }
diff --git a/arch/arm/mach-lh7a40x/arch-kev7a400.c b/arch/arm/mach-lh7a40x/arch-kev7a400.c
index cb3dcd3bd00a..19f2fa2244c4 100644
--- a/arch/arm/mach-lh7a40x/arch-kev7a400.c
+++ b/arch/arm/mach-lh7a40x/arch-kev7a400.c
@@ -26,8 +26,17 @@
26 /* This function calls the board specific IRQ initialization function. */ 26 /* This function calls the board specific IRQ initialization function. */
27 27
28static struct map_desc kev7a400_io_desc[] __initdata = { 28static struct map_desc kev7a400_io_desc[] __initdata = {
29 { IO_VIRT, IO_PHYS, IO_SIZE, MT_DEVICE }, 29 {
30 { CPLD_VIRT, CPLD_PHYS, CPLD_SIZE, MT_DEVICE }, 30 .virtual = IO_VIRT,
31 .pfn = __phys_to_pfn(IO_PHYS),
32 .length = IO_SIZE,
33 .type = MT_DEVICE
34 }, {
35 .virtual = CPLD_VIRT,
36 .pfn = __phys_to_pfn(CPLD_PHYS),
37 .length = CPLD_SIZE,
38 .type = MT_DEVICE
39 }
31}; 40};
32 41
33void __init kev7a400_map_io(void) 42void __init kev7a400_map_io(void)
diff --git a/arch/arm/mach-lh7a40x/arch-lpd7a40x.c b/arch/arm/mach-lh7a40x/arch-lpd7a40x.c
index 6eb61a17c63b..a20eabc132b0 100644
--- a/arch/arm/mach-lh7a40x/arch-lpd7a40x.c
+++ b/arch/arm/mach-lh7a40x/arch-lpd7a40x.c
@@ -227,23 +227,79 @@ void __init lh7a40x_init_board_irq (void)
227} 227}
228 228
229static struct map_desc lpd7a400_io_desc[] __initdata = { 229static struct map_desc lpd7a400_io_desc[] __initdata = {
230 { IO_VIRT, IO_PHYS, IO_SIZE, MT_DEVICE }, 230 {
231 /* Mapping added to work around chip select problems */ 231 .virtual = IO_VIRT,
232 { IOBARRIER_VIRT, IOBARRIER_PHYS, IOBARRIER_SIZE, MT_DEVICE }, 232 .pfn = __phys_to_pfn(IO_PHYS),
233 { CF_VIRT, CF_PHYS, CF_SIZE, MT_DEVICE }, 233 .length = IO_SIZE,
234 .type = MT_DEVICE
235 }, { /* Mapping added to work around chip select problems */
236 .virtual = IOBARRIER_VIRT,
237 .pfn = __phys_to_pfn(IOBARRIER_PHYS),
238 .length = IOBARRIER_SIZE,
239 .type = MT_DEVICE
240 }, {
241 .virtual = CF_VIRT,
242 .pfn = __phys_to_pfn(CF_PHYS),
243 .length = CF_SIZE,
244 .type = MT_DEVICE
245 }, {
246 .virtual = CPLD02_VIRT,
247 .pfn = __phys_to_pfn(CPLD02_PHYS),
248 .length = CPLD02_SIZE,
249 .type = MT_DEVICE
250 }, {
251 .virtual = CPLD06_VIRT,
252 .pfn = __phys_to_pfn(CPLD06_PHYS),
253 .length = CPLD06_SIZE,
254 .type = MT_DEVICE
255 }, {
256 .virtual = CPLD08_VIRT,
257 .pfn = __phys_to_pfn(CPLD08_PHYS),
258 .length = CPLD08_SIZE,
259 .type = MT_DEVICE
260 }, {
261 .virtual = CPLD0C_VIRT,
262 .pfn = __phys_to_pfn(CPLD0C_PHYS),
263 .length = CPLD0C_SIZE,
264 .type = MT_DEVICE
265 }, {
266 .virtual = CPLD0E_VIRT,
267 .pfn = __phys_to_pfn(CPLD0E_PHYS),
268 .length = CPLD0E_SIZE,
269 .type = MT_DEVICE
270 }, {
271 .virtual = CPLD10_VIRT,
272 .pfn = __phys_to_pfn(CPLD10_PHYS),
273 .length = CPLD10_SIZE,
274 .type = MT_DEVICE
275 }, {
276 .virtual = CPLD12_VIRT,
277 .pfn = __phys_to_pfn(CPLD12_PHYS),
278 .length = CPLD12_SIZE,
279 .type = MT_DEVICE
280 }, {
281 .virtual = CPLD14_VIRT,
282 .pfn = __phys_to_pfn(CPLD14_PHYS),
283 .length = CPLD14_SIZE,
284 .type = MT_DEVICE
285 }, {
286 .virtual = CPLD16_VIRT,
287 .pfn = __phys_to_pfn(CPLD16_PHYS),
288 .length = CPLD16_SIZE,
289 .type = MT_DEVICE
290 }, {
291 .virtual = CPLD18_VIRT,
292 .pfn = __phys_to_pfn(CPLD18_PHYS),
293 .length = CPLD18_SIZE,
294 .type = MT_DEVICE
295 }, {
296 .virtual = CPLD1A_VIRT,
297 .pfn = __phys_to_pfn(CPLD1A_PHYS),
298 .length = CPLD1A_SIZE,
299 .type = MT_DEVICE
300 },
234 /* This mapping is redundant since the smc driver performs another. */ 301 /* This mapping is redundant since the smc driver performs another. */
235/* { CPLD00_VIRT, CPLD00_PHYS, CPLD00_SIZE, MT_DEVICE }, */ 302/* { CPLD00_VIRT, CPLD00_PHYS, CPLD00_SIZE, MT_DEVICE }, */
236 { CPLD02_VIRT, CPLD02_PHYS, CPLD02_SIZE, MT_DEVICE },
237 { CPLD06_VIRT, CPLD06_PHYS, CPLD06_SIZE, MT_DEVICE },
238 { CPLD08_VIRT, CPLD08_PHYS, CPLD08_SIZE, MT_DEVICE },
239 { CPLD0C_VIRT, CPLD0C_PHYS, CPLD0C_SIZE, MT_DEVICE },
240 { CPLD0E_VIRT, CPLD0E_PHYS, CPLD0E_SIZE, MT_DEVICE },
241 { CPLD10_VIRT, CPLD10_PHYS, CPLD10_SIZE, MT_DEVICE },
242 { CPLD12_VIRT, CPLD12_PHYS, CPLD12_SIZE, MT_DEVICE },
243 { CPLD14_VIRT, CPLD14_PHYS, CPLD14_SIZE, MT_DEVICE },
244 { CPLD16_VIRT, CPLD16_PHYS, CPLD16_SIZE, MT_DEVICE },
245 { CPLD18_VIRT, CPLD18_PHYS, CPLD18_SIZE, MT_DEVICE },
246 { CPLD1A_VIRT, CPLD1A_PHYS, CPLD1A_SIZE, MT_DEVICE },
247}; 303};
248 304
249void __init 305void __init
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c
index df0312b596e4..fd9183ff2ed5 100644
--- a/arch/arm/mach-omap1/board-innovator.c
+++ b/arch/arm/mach-omap1/board-innovator.c
@@ -103,8 +103,12 @@ static struct platform_device innovator_flash_device = {
103 103
104/* Only FPGA needs to be mapped here. All others are done with ioremap */ 104/* Only FPGA needs to be mapped here. All others are done with ioremap */
105static struct map_desc innovator1510_io_desc[] __initdata = { 105static struct map_desc innovator1510_io_desc[] __initdata = {
106{ OMAP1510_FPGA_BASE, OMAP1510_FPGA_START, OMAP1510_FPGA_SIZE, 106 {
107 MT_DEVICE }, 107 .virtual = OMAP1510_FPGA_BASE,
108 .pfn = __phys_to_pfn(OMAP1510_FPGA_START),
109 .length = OMAP1510_FPGA_SIZE,
110 .type = MT_DEVICE
111 }
108}; 112};
109 113
110static struct resource innovator1510_smc91x_resources[] = { 114static struct resource innovator1510_smc91x_resources[] = {
diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c
index 107c68c8ab54..2ba26e239108 100644
--- a/arch/arm/mach-omap1/board-perseus2.c
+++ b/arch/arm/mach-omap1/board-perseus2.c
@@ -134,8 +134,12 @@ void omap_perseus2_init_irq(void)
134 134
135/* Only FPGA needs to be mapped here. All others are done with ioremap */ 135/* Only FPGA needs to be mapped here. All others are done with ioremap */
136static struct map_desc omap_perseus2_io_desc[] __initdata = { 136static struct map_desc omap_perseus2_io_desc[] __initdata = {
137 {H2P2_DBG_FPGA_BASE, H2P2_DBG_FPGA_START, H2P2_DBG_FPGA_SIZE, 137 {
138 MT_DEVICE}, 138 .virtual = H2P2_DBG_FPGA_BASE,
139 .pfn = __phys_to_pfn(H2P2_DBG_FPGA_START),
140 .length = H2P2_DBG_FPGA_SIZE,
141 .type = MT_DEVICE
142 }
139}; 143};
140 144
141static void __init omap_perseus2_map_io(void) 145static void __init omap_perseus2_map_io(void)
diff --git a/arch/arm/mach-omap1/io.c b/arch/arm/mach-omap1/io.c
index eb8261d7dead..79fb86535ebc 100644
--- a/arch/arm/mach-omap1/io.c
+++ b/arch/arm/mach-omap1/io.c
@@ -26,27 +26,59 @@ extern void omap_sram_init(void);
26 * default mapping provided here. 26 * default mapping provided here.
27 */ 27 */
28static struct map_desc omap_io_desc[] __initdata = { 28static struct map_desc omap_io_desc[] __initdata = {
29 { IO_VIRT, IO_PHYS, IO_SIZE, MT_DEVICE }, 29 {
30 .virtual = IO_VIRT,
31 .pfn = __phys_to_pfn(IO_PHYS),
32 .length = IO_SIZE,
33 .type = MT_DEVICE
34 }
30}; 35};
31 36
32#ifdef CONFIG_ARCH_OMAP730 37#ifdef CONFIG_ARCH_OMAP730
33static struct map_desc omap730_io_desc[] __initdata = { 38static struct map_desc omap730_io_desc[] __initdata = {
34 { OMAP730_DSP_BASE, OMAP730_DSP_START, OMAP730_DSP_SIZE, MT_DEVICE }, 39 {
35 { OMAP730_DSPREG_BASE, OMAP730_DSPREG_START, OMAP730_DSPREG_SIZE, MT_DEVICE }, 40 .virtual = OMAP730_DSP_BASE,
41 .pfn = __phys_to_pfn(OMAP730_DSP_START),
42 .length = OMAP730_DSP_SIZE,
43 .type = MT_DEVICE
44 }, {
45 .virtual = OMAP730_DSPREG_BASE,
46 .pfn = __phys_to_pfn(OMAP730_DSPREG_START),
47 .length = OMAP730_DSPREG_SIZE,
48 .type = MT_DEVICE
49 }
36}; 50};
37#endif 51#endif
38 52
39#ifdef CONFIG_ARCH_OMAP1510 53#ifdef CONFIG_ARCH_OMAP1510
40static struct map_desc omap1510_io_desc[] __initdata = { 54static struct map_desc omap1510_io_desc[] __initdata = {
41 { OMAP1510_DSP_BASE, OMAP1510_DSP_START, OMAP1510_DSP_SIZE, MT_DEVICE }, 55 {
42 { OMAP1510_DSPREG_BASE, OMAP1510_DSPREG_START, OMAP1510_DSPREG_SIZE, MT_DEVICE }, 56 .virtual = OMAP1510_DSP_BASE,
57 .pfn = __phys_to_pfn(OMAP1510_DSP_START),
58 .length = OMAP1510_DSP_SIZE,
59 .type = MT_DEVICE
60 }, {
61 .virtual = OMAP1510_DSPREG_BASE,
62 .pfn = __phys_to_pfn(OMAP1510_DSPREG_START),
63 .length = OMAP1510_DSPREG_SIZE,
64 .type = MT_DEVICE
65 }
43}; 66};
44#endif 67#endif
45 68
46#if defined(CONFIG_ARCH_OMAP16XX) 69#if defined(CONFIG_ARCH_OMAP16XX)
47static struct map_desc omap16xx_io_desc[] __initdata = { 70static struct map_desc omap16xx_io_desc[] __initdata = {
48 { OMAP16XX_DSP_BASE, OMAP16XX_DSP_START, OMAP16XX_DSP_SIZE, MT_DEVICE }, 71 {
49 { OMAP16XX_DSPREG_BASE, OMAP16XX_DSPREG_START, OMAP16XX_DSPREG_SIZE, MT_DEVICE }, 72 .virtual = OMAP16XX_DSP_BASE,
73 .pfn = __phys_to_pfn(OMAP16XX_DSP_START),
74 .length = OMAP16XX_DSP_SIZE,
75 .type = MT_DEVICE
76 }, {
77 .virtual = OMAP16XX_DSPREG_BASE,
78 .pfn = __phys_to_pfn(OMAP16XX_DSPREG_START),
79 .length = OMAP16XX_DSPREG_SIZE,
80 .type = MT_DEVICE
81 }
50}; 82};
51#endif 83#endif
52 84
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c
index 60c8b9d8bb9c..656f73bbcb5a 100644
--- a/arch/arm/mach-pxa/corgi.c
+++ b/arch/arm/mach-pxa/corgi.c
@@ -33,6 +33,7 @@
33 33
34#include <asm/arch/pxa-regs.h> 34#include <asm/arch/pxa-regs.h>
35#include <asm/arch/irq.h> 35#include <asm/arch/irq.h>
36#include <asm/arch/irda.h>
36#include <asm/arch/mmc.h> 37#include <asm/arch/mmc.h>
37#include <asm/arch/udc.h> 38#include <asm/arch/udc.h>
38#include <asm/arch/corgi.h> 39#include <asm/arch/corgi.h>
@@ -224,6 +225,22 @@ static struct pxamci_platform_data corgi_mci_platform_data = {
224}; 225};
225 226
226 227
228/*
229 * Irda
230 */
231static void corgi_irda_transceiver_mode(struct device *dev, int mode)
232{
233 if (mode & IR_OFF)
234 GPSR(CORGI_GPIO_IR_ON) = GPIO_bit(CORGI_GPIO_IR_ON);
235 else
236 GPCR(CORGI_GPIO_IR_ON) = GPIO_bit(CORGI_GPIO_IR_ON);
237}
238
239static struct pxaficp_platform_data corgi_ficp_platform_data = {
240 .transceiver_cap = IR_SIRMODE | IR_OFF,
241 .transceiver_mode = corgi_irda_transceiver_mode,
242};
243
227 244
228/* 245/*
229 * USB Device Controller 246 * USB Device Controller
@@ -269,10 +286,13 @@ static void __init corgi_init(void)
269 286
270 corgi_ssp_set_machinfo(&corgi_ssp_machinfo); 287 corgi_ssp_set_machinfo(&corgi_ssp_machinfo);
271 288
289 pxa_gpio_mode(CORGI_GPIO_IR_ON | GPIO_OUT);
272 pxa_gpio_mode(CORGI_GPIO_USB_PULLUP | GPIO_OUT); 290 pxa_gpio_mode(CORGI_GPIO_USB_PULLUP | GPIO_OUT);
273 pxa_gpio_mode(CORGI_GPIO_HSYNC | GPIO_IN); 291 pxa_gpio_mode(CORGI_GPIO_HSYNC | GPIO_IN);
292
274 pxa_set_udc_info(&udc_info); 293 pxa_set_udc_info(&udc_info);
275 pxa_set_mci_info(&corgi_mci_platform_data); 294 pxa_set_mci_info(&corgi_mci_platform_data);
295 pxa_set_ficp_info(&corgi_ficp_platform_data);
276 296
277 scoop_num = 1; 297 scoop_num = 1;
278 scoop_devs = &corgi_pcmcia_scoop[0]; 298 scoop_devs = &corgi_pcmcia_scoop[0];
diff --git a/arch/arm/mach-pxa/corgi_ssp.c b/arch/arm/mach-pxa/corgi_ssp.c
index 0ef428287055..136c269db0b7 100644
--- a/arch/arm/mach-pxa/corgi_ssp.c
+++ b/arch/arm/mach-pxa/corgi_ssp.c
@@ -222,24 +222,22 @@ static int corgi_ssp_remove(struct device *dev)
222 return 0; 222 return 0;
223} 223}
224 224
225static int corgi_ssp_suspend(struct device *dev, pm_message_t state, u32 level) 225static int corgi_ssp_suspend(struct device *dev, pm_message_t state)
226{ 226{
227 if (level == SUSPEND_POWER_DOWN) { 227 ssp_flush(&corgi_ssp_dev);
228 ssp_flush(&corgi_ssp_dev); 228 ssp_save_state(&corgi_ssp_dev,&corgi_ssp_state);
229 ssp_save_state(&corgi_ssp_dev,&corgi_ssp_state); 229
230 }
231 return 0; 230 return 0;
232} 231}
233 232
234static int corgi_ssp_resume(struct device *dev, u32 level) 233static int corgi_ssp_resume(struct device *dev)
235{ 234{
236 if (level == RESUME_POWER_ON) { 235 GPSR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon); /* High - Disable LCD Control/Timing Gen */
237 GPSR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon); /* High - Disable LCD Control/Timing Gen */ 236 GPSR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111); /* High - Disable MAX1111*/
238 GPSR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111); /* High - Disable MAX1111*/ 237 GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846); /* High - Disable ADS7846*/
239 GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846); /* High - Disable ADS7846*/ 238 ssp_restore_state(&corgi_ssp_dev,&corgi_ssp_state);
240 ssp_restore_state(&corgi_ssp_dev,&corgi_ssp_state); 239 ssp_enable(&corgi_ssp_dev);
241 ssp_enable(&corgi_ssp_dev); 240
242 }
243 return 0; 241 return 0;
244} 242}
245 243
diff --git a/arch/arm/mach-pxa/generic.c b/arch/arm/mach-pxa/generic.c
index 1d7677669a76..9c0289333301 100644
--- a/arch/arm/mach-pxa/generic.c
+++ b/arch/arm/mach-pxa/generic.c
@@ -23,6 +23,7 @@
23#include <linux/device.h> 23#include <linux/device.h>
24#include <linux/ioport.h> 24#include <linux/ioport.h>
25#include <linux/pm.h> 25#include <linux/pm.h>
26#include <linux/string.h>
26 27
27#include <asm/hardware.h> 28#include <asm/hardware.h>
28#include <asm/irq.h> 29#include <asm/irq.h>
@@ -34,6 +35,7 @@
34#include <asm/arch/udc.h> 35#include <asm/arch/udc.h>
35#include <asm/arch/pxafb.h> 36#include <asm/arch/pxafb.h>
36#include <asm/arch/mmc.h> 37#include <asm/arch/mmc.h>
38#include <asm/arch/irda.h>
37#include <asm/arch/i2c.h> 39#include <asm/arch/i2c.h>
38 40
39#include "generic.h" 41#include "generic.h"
@@ -92,14 +94,42 @@ EXPORT_SYMBOL(pxa_set_cken);
92 * and cache flush area. 94 * and cache flush area.
93 */ 95 */
94static struct map_desc standard_io_desc[] __initdata = { 96static struct map_desc standard_io_desc[] __initdata = {
95 /* virtual physical length type */ 97 { /* Devs */
96 { 0xf2000000, 0x40000000, 0x02000000, MT_DEVICE }, /* Devs */ 98 .virtual = 0xf2000000,
97 { 0xf4000000, 0x44000000, 0x00100000, MT_DEVICE }, /* LCD */ 99 .pfn = __phys_to_pfn(0x40000000),
98 { 0xf6000000, 0x48000000, 0x00100000, MT_DEVICE }, /* Mem Ctl */ 100 .length = 0x02000000,
99 { 0xf8000000, 0x4c000000, 0x00100000, MT_DEVICE }, /* USB host */ 101 .type = MT_DEVICE
100 { 0xfa000000, 0x50000000, 0x00100000, MT_DEVICE }, /* Camera */ 102 }, { /* LCD */
101 { 0xfe000000, 0x58000000, 0x00100000, MT_DEVICE }, /* IMem ctl */ 103 .virtual = 0xf4000000,
102 { 0xff000000, 0x00000000, 0x00100000, MT_DEVICE } /* UNCACHED_PHYS_0 */ 104 .pfn = __phys_to_pfn(0x44000000),
105 .length = 0x00100000,
106 .type = MT_DEVICE
107 }, { /* Mem Ctl */
108 .virtual = 0xf6000000,
109 .pfn = __phys_to_pfn(0x48000000),
110 .length = 0x00100000,
111 .type = MT_DEVICE
112 }, { /* USB host */
113 .virtual = 0xf8000000,
114 .pfn = __phys_to_pfn(0x4c000000),
115 .length = 0x00100000,
116 .type = MT_DEVICE
117 }, { /* Camera */
118 .virtual = 0xfa000000,
119 .pfn = __phys_to_pfn(0x50000000),
120 .length = 0x00100000,
121 .type = MT_DEVICE
122 }, { /* IMem ctl */
123 .virtual = 0xfe000000,
124 .pfn = __phys_to_pfn(0x58000000),
125 .length = 0x00100000,
126 .type = MT_DEVICE
127 }, { /* UNCACHED_PHYS_0 */
128 .virtual = 0xff000000,
129 .pfn = __phys_to_pfn(0x00000000),
130 .length = 0x00100000,
131 .type = MT_DEVICE
132 }
103}; 133};
104 134
105void __init pxa_map_io(void) 135void __init pxa_map_io(void)
@@ -225,6 +255,10 @@ static struct platform_device stuart_device = {
225 .name = "pxa2xx-uart", 255 .name = "pxa2xx-uart",
226 .id = 2, 256 .id = 2,
227}; 257};
258static struct platform_device hwuart_device = {
259 .name = "pxa2xx-uart",
260 .id = 3,
261};
228 262
229static struct resource i2c_resources[] = { 263static struct resource i2c_resources[] = {
230 { 264 {
@@ -265,10 +299,26 @@ static struct resource i2s_resources[] = {
265static struct platform_device i2s_device = { 299static struct platform_device i2s_device = {
266 .name = "pxa2xx-i2s", 300 .name = "pxa2xx-i2s",
267 .id = -1, 301 .id = -1,
268 .resource = i2c_resources, 302 .resource = i2s_resources,
269 .num_resources = ARRAY_SIZE(i2s_resources), 303 .num_resources = ARRAY_SIZE(i2s_resources),
270}; 304};
271 305
306static u64 pxaficp_dmamask = ~(u32)0;
307
308static struct platform_device pxaficp_device = {
309 .name = "pxa2xx-ir",
310 .id = -1,
311 .dev = {
312 .dma_mask = &pxaficp_dmamask,
313 .coherent_dma_mask = 0xffffffff,
314 },
315};
316
317void __init pxa_set_ficp_info(struct pxaficp_platform_data *info)
318{
319 pxaficp_device.dev.platform_data = info;
320}
321
272static struct platform_device *devices[] __initdata = { 322static struct platform_device *devices[] __initdata = {
273 &pxamci_device, 323 &pxamci_device,
274 &udc_device, 324 &udc_device,
@@ -276,13 +326,26 @@ static struct platform_device *devices[] __initdata = {
276 &ffuart_device, 326 &ffuart_device,
277 &btuart_device, 327 &btuart_device,
278 &stuart_device, 328 &stuart_device,
329 &pxaficp_device,
279 &i2c_device, 330 &i2c_device,
280 &i2s_device, 331 &i2s_device,
281}; 332};
282 333
283static int __init pxa_init(void) 334static int __init pxa_init(void)
284{ 335{
285 return platform_add_devices(devices, ARRAY_SIZE(devices)); 336 int cpuid, ret;
337
338 ret = platform_add_devices(devices, ARRAY_SIZE(devices));
339 if (ret)
340 return ret;
341
342 /* Only add HWUART for PXA255/26x; PXA210/250/27x do not have it. */
343 cpuid = read_cpuid(CPUID_ID);
344 if (((cpuid >> 4) & 0xfff) == 0x2d0 ||
345 ((cpuid >> 4) & 0xfff) == 0x290)
346 ret = platform_device_register(&hwuart_device);
347
348 return ret;
286} 349}
287 350
288subsys_initcall(pxa_init); 351subsys_initcall(pxa_init);
diff --git a/arch/arm/mach-pxa/idp.c b/arch/arm/mach-pxa/idp.c
index 386e107b53cc..01a83ab09ac3 100644
--- a/arch/arm/mach-pxa/idp.c
+++ b/arch/arm/mach-pxa/idp.c
@@ -152,16 +152,17 @@ static void __init idp_init_irq(void)
152} 152}
153 153
154static struct map_desc idp_io_desc[] __initdata = { 154static struct map_desc idp_io_desc[] __initdata = {
155 /* virtual physical length type */ 155 {
156 156 .virtual = IDP_COREVOLT_VIRT,
157 { IDP_COREVOLT_VIRT, 157 .pfn = __phys_to_pfn(IDP_COREVOLT_PHYS),
158 IDP_COREVOLT_PHYS, 158 .length = IDP_COREVOLT_SIZE,
159 IDP_COREVOLT_SIZE, 159 .type = MT_DEVICE
160 MT_DEVICE }, 160 }, {
161 { IDP_CPLD_VIRT, 161 .virtual = IDP_CPLD_VIRT,
162 IDP_CPLD_PHYS, 162 .pfn = __phys_to_pfn(IDP_CPLD_PHYS),
163 IDP_CPLD_SIZE, 163 .length = IDP_CPLD_SIZE,
164 MT_DEVICE } 164 .type = MT_DEVICE
165 }
165}; 166};
166 167
167static void __init idp_map_io(void) 168static void __init idp_map_io(void)
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c
index 1f38033921e9..beccf455f796 100644
--- a/arch/arm/mach-pxa/lubbock.c
+++ b/arch/arm/mach-pxa/lubbock.c
@@ -35,6 +35,7 @@
35#include <asm/arch/pxa-regs.h> 35#include <asm/arch/pxa-regs.h>
36#include <asm/arch/lubbock.h> 36#include <asm/arch/lubbock.h>
37#include <asm/arch/udc.h> 37#include <asm/arch/udc.h>
38#include <asm/arch/irda.h>
38#include <asm/arch/pxafb.h> 39#include <asm/arch/pxafb.h>
39#include <asm/arch/mmc.h> 40#include <asm/arch/mmc.h>
40 41
@@ -237,16 +238,40 @@ static struct pxamci_platform_data lubbock_mci_platform_data = {
237 .init = lubbock_mci_init, 238 .init = lubbock_mci_init,
238}; 239};
239 240
241static void lubbock_irda_transceiver_mode(struct device *dev, int mode)
242{
243 unsigned long flags;
244
245 local_irq_save(flags);
246 if (mode & IR_SIRMODE) {
247 LUB_MISC_WR &= ~(1 << 4);
248 } else if (mode & IR_FIRMODE) {
249 LUB_MISC_WR |= 1 << 4;
250 }
251 local_irq_restore(flags);
252}
253
254static struct pxaficp_platform_data lubbock_ficp_platform_data = {
255 .transceiver_cap = IR_SIRMODE | IR_FIRMODE,
256 .transceiver_mode = lubbock_irda_transceiver_mode,
257};
258
240static void __init lubbock_init(void) 259static void __init lubbock_init(void)
241{ 260{
242 pxa_set_udc_info(&udc_info); 261 pxa_set_udc_info(&udc_info);
243 set_pxa_fb_info(&sharp_lm8v31); 262 set_pxa_fb_info(&sharp_lm8v31);
244 pxa_set_mci_info(&lubbock_mci_platform_data); 263 pxa_set_mci_info(&lubbock_mci_platform_data);
264 pxa_set_ficp_info(&lubbock_ficp_platform_data);
245 (void) platform_add_devices(devices, ARRAY_SIZE(devices)); 265 (void) platform_add_devices(devices, ARRAY_SIZE(devices));
246} 266}
247 267
248static struct map_desc lubbock_io_desc[] __initdata = { 268static struct map_desc lubbock_io_desc[] __initdata = {
249 { LUBBOCK_FPGA_VIRT, LUBBOCK_FPGA_PHYS, 0x00100000, MT_DEVICE }, /* CPLD */ 269 { /* CPLD */
270 .virtual = LUBBOCK_FPGA_VIRT,
271 .pfn = __phys_to_pfn(LUBBOCK_FPGA_PHYS),
272 .length = 0x00100000,
273 .type = MT_DEVICE
274 }
250}; 275};
251 276
252static void __init lubbock_map_io(void) 277static void __init lubbock_map_io(void)
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c
index 85fdb5b1470a..a48c64026e1f 100644
--- a/arch/arm/mach-pxa/mainstone.c
+++ b/arch/arm/mach-pxa/mainstone.c
@@ -37,6 +37,7 @@
37#include <asm/arch/audio.h> 37#include <asm/arch/audio.h>
38#include <asm/arch/pxafb.h> 38#include <asm/arch/pxafb.h>
39#include <asm/arch/mmc.h> 39#include <asm/arch/mmc.h>
40#include <asm/arch/irda.h>
40 41
41#include "generic.h" 42#include "generic.h"
42 43
@@ -294,6 +295,29 @@ static struct pxamci_platform_data mainstone_mci_platform_data = {
294 .exit = mainstone_mci_exit, 295 .exit = mainstone_mci_exit,
295}; 296};
296 297
298static void mainstone_irda_transceiver_mode(struct device *dev, int mode)
299{
300 unsigned long flags;
301
302 local_irq_save(flags);
303 if (mode & IR_SIRMODE) {
304 MST_MSCWR1 &= ~MST_MSCWR1_IRDA_FIR;
305 } else if (mode & IR_FIRMODE) {
306 MST_MSCWR1 |= MST_MSCWR1_IRDA_FIR;
307 }
308 if (mode & IR_OFF) {
309 MST_MSCWR1 = (MST_MSCWR1 & ~MST_MSCWR1_IRDA_MASK) | MST_MSCWR1_IRDA_OFF;
310 } else {
311 MST_MSCWR1 = (MST_MSCWR1 & ~MST_MSCWR1_IRDA_MASK) | MST_MSCWR1_IRDA_FULL;
312 }
313 local_irq_restore(flags);
314}
315
316static struct pxaficp_platform_data mainstone_ficp_platform_data = {
317 .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF,
318 .transceiver_mode = mainstone_irda_transceiver_mode,
319};
320
297static void __init mainstone_init(void) 321static void __init mainstone_init(void)
298{ 322{
299 /* 323 /*
@@ -313,11 +337,17 @@ static void __init mainstone_init(void)
313 set_pxa_fb_info(&toshiba_ltm035a776c); 337 set_pxa_fb_info(&toshiba_ltm035a776c);
314 338
315 pxa_set_mci_info(&mainstone_mci_platform_data); 339 pxa_set_mci_info(&mainstone_mci_platform_data);
340 pxa_set_ficp_info(&mainstone_ficp_platform_data);
316} 341}
317 342
318 343
319static struct map_desc mainstone_io_desc[] __initdata = { 344static struct map_desc mainstone_io_desc[] __initdata = {
320 { MST_FPGA_VIRT, MST_FPGA_PHYS, 0x00100000, MT_DEVICE }, /* CPLD */ 345 { /* CPLD */
346 .virtual = MST_FPGA_VIRT,
347 .pfn = __phys_to_pfn(MST_FPGA_PHYS),
348 .length = 0x00100000,
349 .type = MT_DEVICE
350 }
321}; 351};
322 352
323static void __init mainstone_map_io(void) 353static void __init mainstone_map_io(void)
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c
index f25638810017..6d413f6701a7 100644
--- a/arch/arm/mach-pxa/poodle.c
+++ b/arch/arm/mach-pxa/poodle.c
@@ -32,6 +32,7 @@
32#include <asm/arch/irq.h> 32#include <asm/arch/irq.h>
33#include <asm/arch/mmc.h> 33#include <asm/arch/mmc.h>
34#include <asm/arch/udc.h> 34#include <asm/arch/udc.h>
35#include <asm/arch/irda.h>
35#include <asm/arch/poodle.h> 36#include <asm/arch/poodle.h>
36#include <asm/arch/pxafb.h> 37#include <asm/arch/pxafb.h>
37 38
@@ -152,6 +153,24 @@ static struct pxamci_platform_data poodle_mci_platform_data = {
152 153
153 154
154/* 155/*
156 * Irda
157 */
158static void poodle_irda_transceiver_mode(struct device *dev, int mode)
159{
160 if (mode & IR_OFF) {
161 GPSR(POODLE_GPIO_IR_ON) = GPIO_bit(POODLE_GPIO_IR_ON);
162 } else {
163 GPCR(POODLE_GPIO_IR_ON) = GPIO_bit(POODLE_GPIO_IR_ON);
164 }
165}
166
167static struct pxaficp_platform_data poodle_ficp_platform_data = {
168 .transceiver_cap = IR_SIRMODE | IR_OFF,
169 .transceiver_mode = poodle_irda_transceiver_mode,
170};
171
172
173/*
155 * USB Device Controller 174 * USB Device Controller
156 */ 175 */
157static void poodle_udc_command(int cmd) 176static void poodle_udc_command(int cmd)
@@ -244,8 +263,10 @@ static void __init poodle_init(void)
244 263
245 set_pxa_fb_info(&poodle_fb_info); 264 set_pxa_fb_info(&poodle_fb_info);
246 pxa_gpio_mode(POODLE_GPIO_USB_PULLUP | GPIO_OUT); 265 pxa_gpio_mode(POODLE_GPIO_USB_PULLUP | GPIO_OUT);
266 pxa_gpio_mode(POODLE_GPIO_IR_ON | GPIO_OUT);
247 pxa_set_udc_info(&udc_info); 267 pxa_set_udc_info(&udc_info);
248 pxa_set_mci_info(&poodle_mci_platform_data); 268 pxa_set_mci_info(&poodle_mci_platform_data);
269 pxa_set_ficp_info(&poodle_ficp_platform_data);
249 270
250 scoop_num = 1; 271 scoop_num = 1;
251 scoop_devs = &poodle_pcmcia_scoop[0]; 272 scoop_devs = &poodle_pcmcia_scoop[0];
diff --git a/arch/arm/mach-pxa/pxa25x.c b/arch/arm/mach-pxa/pxa25x.c
index 7869c3b4e62f..573a5758e781 100644
--- a/arch/arm/mach-pxa/pxa25x.c
+++ b/arch/arm/mach-pxa/pxa25x.c
@@ -129,7 +129,7 @@ void pxa_cpu_pm_enter(suspend_state_t state)
129 case PM_SUSPEND_MEM: 129 case PM_SUSPEND_MEM:
130 /* set resume return address */ 130 /* set resume return address */
131 PSPR = virt_to_phys(pxa_cpu_resume); 131 PSPR = virt_to_phys(pxa_cpu_resume);
132 pxa_cpu_suspend(3); 132 pxa_cpu_suspend(PWRMODE_SLEEP);
133 break; 133 break;
134 } 134 }
135} 135}
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c
index 9a791b07118d..09a5d593f04b 100644
--- a/arch/arm/mach-pxa/pxa27x.c
+++ b/arch/arm/mach-pxa/pxa27x.c
@@ -157,7 +157,7 @@ void pxa_cpu_pm_enter(suspend_state_t state)
157 case PM_SUSPEND_MEM: 157 case PM_SUSPEND_MEM:
158 /* set resume return address */ 158 /* set resume return address */
159 PSPR = virt_to_phys(pxa_cpu_resume); 159 PSPR = virt_to_phys(pxa_cpu_resume);
160 pxa_cpu_suspend(3); 160 pxa_cpu_suspend(PWRMODE_SLEEP);
161 break; 161 break;
162 } 162 }
163} 163}
diff --git a/arch/arm/mach-pxa/sleep.S b/arch/arm/mach-pxa/sleep.S
index 5786ccad938c..c9862688ff3d 100644
--- a/arch/arm/mach-pxa/sleep.S
+++ b/arch/arm/mach-pxa/sleep.S
@@ -28,7 +28,9 @@
28/* 28/*
29 * pxa_cpu_suspend() 29 * pxa_cpu_suspend()
30 * 30 *
31 * Forces CPU into sleep state 31 * Forces CPU into sleep state.
32 *
33 * r0 = value for PWRMODE M field for desired sleep state
32 */ 34 */
33 35
34ENTRY(pxa_cpu_suspend) 36ENTRY(pxa_cpu_suspend)
@@ -53,6 +55,7 @@ ENTRY(pxa_cpu_suspend)
53 mov r10, sp 55 mov r10, sp
54 stmfd sp!, {r3 - r10} 56 stmfd sp!, {r3 - r10}
55 57
58 mov r5, r0 @ save sleep mode
56 @ preserve phys address of stack 59 @ preserve phys address of stack
57 mov r0, sp 60 mov r0, sp
58 bl sleep_phys_sp 61 bl sleep_phys_sp
@@ -66,7 +69,7 @@ ENTRY(pxa_cpu_suspend)
66 @ (also workaround for sighting 28071) 69 @ (also workaround for sighting 28071)
67 70
68 @ prepare value for sleep mode 71 @ prepare value for sleep mode
69 mov r1, #3 @ sleep mode 72 mov r1, r5 @ sleep mode
70 73
71 @ prepare pointer to physical address 0 (virtual mapping in generic.c) 74 @ prepare pointer to physical address 0 (virtual mapping in generic.c)
72 mov r2, #UNCACHED_PHYS_0 75 mov r2, #UNCACHED_PHYS_0
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c
index d0ab428c2d7d..b838842b6a20 100644
--- a/arch/arm/mach-pxa/spitz.c
+++ b/arch/arm/mach-pxa/spitz.c
@@ -34,6 +34,7 @@
34 34
35#include <asm/arch/pxa-regs.h> 35#include <asm/arch/pxa-regs.h>
36#include <asm/arch/irq.h> 36#include <asm/arch/irq.h>
37#include <asm/arch/irda.h>
37#include <asm/arch/mmc.h> 38#include <asm/arch/mmc.h>
38#include <asm/arch/udc.h> 39#include <asm/arch/udc.h>
39#include <asm/arch/pxafb.h> 40#include <asm/arch/pxafb.h>
@@ -277,6 +278,23 @@ static struct pxamci_platform_data spitz_mci_platform_data = {
277 278
278 279
279/* 280/*
281 * Irda
282 */
283static void spitz_irda_transceiver_mode(struct device *dev, int mode)
284{
285 if (mode & IR_OFF)
286 set_scoop_gpio(&spitzscoop2_device.dev, SPITZ_SCP2_IR_ON);
287 else
288 reset_scoop_gpio(&spitzscoop2_device.dev, SPITZ_SCP2_IR_ON);
289}
290
291static struct pxaficp_platform_data spitz_ficp_platform_data = {
292 .transceiver_cap = IR_SIRMODE | IR_OFF,
293 .transceiver_mode = spitz_irda_transceiver_mode,
294};
295
296
297/*
280 * Spitz PXA Framebuffer 298 * Spitz PXA Framebuffer
281 */ 299 */
282static struct pxafb_mach_info spitz_pxafb_info __initdata = { 300static struct pxafb_mach_info spitz_pxafb_info __initdata = {
@@ -326,6 +344,7 @@ static void __init common_init(void)
326 344
327 platform_add_devices(devices, ARRAY_SIZE(devices)); 345 platform_add_devices(devices, ARRAY_SIZE(devices));
328 pxa_set_mci_info(&spitz_mci_platform_data); 346 pxa_set_mci_info(&spitz_mci_platform_data);
347 pxa_set_ficp_info(&spitz_ficp_platform_data);
329 set_pxa_fb_parent(&spitzssp_device.dev); 348 set_pxa_fb_parent(&spitzssp_device.dev);
330 set_pxa_fb_info(&spitz_pxafb_info); 349 set_pxa_fb_info(&spitz_pxafb_info);
331} 350}
diff --git a/arch/arm/mach-pxa/standby.S b/arch/arm/mach-pxa/standby.S
index 8a3f27b76784..6f6dbbd08021 100644
--- a/arch/arm/mach-pxa/standby.S
+++ b/arch/arm/mach-pxa/standby.S
@@ -21,7 +21,7 @@
21ENTRY(pxa_cpu_standby) 21ENTRY(pxa_cpu_standby)
22 ldr r0, =PSSR 22 ldr r0, =PSSR
23 mov r1, #(PSSR_PH | PSSR_STS) 23 mov r1, #(PSSR_PH | PSSR_STS)
24 mov r2, #2 24 mov r2, #PWRMODE_STANDBY
25 mov r3, #UNCACHED_PHYS_0 @ Read mem context in. 25 mov r3, #UNCACHED_PHYS_0 @ Read mem context in.
26 ldr ip, [r3] 26 ldr ip, [r3]
27 b 1f 27 b 1f
diff --git a/arch/arm/mach-rpc/riscpc.c b/arch/arm/mach-rpc/riscpc.c
index e3587efec4bf..5c4ac1c008a6 100644
--- a/arch/arm/mach-rpc/riscpc.c
+++ b/arch/arm/mach-rpc/riscpc.c
@@ -61,9 +61,22 @@ static int __init parse_tag_acorn(const struct tag *tag)
61__tagtable(ATAG_ACORN, parse_tag_acorn); 61__tagtable(ATAG_ACORN, parse_tag_acorn);
62 62
63static struct map_desc rpc_io_desc[] __initdata = { 63static struct map_desc rpc_io_desc[] __initdata = {
64 { SCREEN_BASE, SCREEN_START, 2*1048576, MT_DEVICE }, /* VRAM */ 64 { /* VRAM */
65 { (u32)IO_BASE, IO_START, IO_SIZE , MT_DEVICE }, /* IO space */ 65 .virtual = SCREEN_BASE,
66 { EASI_BASE, EASI_START, EASI_SIZE, MT_DEVICE } /* EASI space */ 66 .pfn = __phys_to_pfn(SCREEN_START),
67 .length = 2*1048576,
68 .type = MT_DEVICE
69 }, { /* IO space */
70 .virtual = (u32)IO_BASE,
71 .pfn = __phys_to_pfn(IO_START),
72 .length = IO_SIZE ,
73 .type = MT_DEVICE
74 }, { /* EASI space */
75 .virtual = EASI_BASE,
76 .pfn = __phys_to_pfn(EASI_START),
77 .length = EASI_SIZE,
78 .type = MT_DEVICE
79 }
67}; 80};
68 81
69static void __init rpc_map_io(void) 82static void __init rpc_map_io(void)
diff --git a/arch/arm/mach-s3c2410/cpu.h b/arch/arm/mach-s3c2410/cpu.h
index 478c15c0e36a..9cbe5eef492b 100644
--- a/arch/arm/mach-s3c2410/cpu.h
+++ b/arch/arm/mach-s3c2410/cpu.h
@@ -21,7 +21,7 @@
21 21
22/* todo - fix when rmk changes iodescs to use `void __iomem *` */ 22/* todo - fix when rmk changes iodescs to use `void __iomem *` */
23 23
24#define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x, S3C2410_PA_##x, S3C24XX_SZ_##x, MT_DEVICE } 24#define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x, __phys_to_pfn(S3C2410_PA_##x), S3C24XX_SZ_##x, MT_DEVICE }
25 25
26#ifndef MHZ 26#ifndef MHZ
27#define MHZ (1000*1000) 27#define MHZ (1000*1000)
diff --git a/arch/arm/mach-s3c2410/devs.c b/arch/arm/mach-s3c2410/devs.c
index 0077937a7ab8..08bc7d95a45d 100644
--- a/arch/arm/mach-s3c2410/devs.c
+++ b/arch/arm/mach-s3c2410/devs.c
@@ -47,7 +47,7 @@ struct platform_device *s3c24xx_uart_devs[3];
47static struct resource s3c_usb_resource[] = { 47static struct resource s3c_usb_resource[] = {
48 [0] = { 48 [0] = {
49 .start = S3C2410_PA_USBHOST, 49 .start = S3C2410_PA_USBHOST,
50 .end = S3C2410_PA_USBHOST + S3C24XX_SZ_USBHOST, 50 .end = S3C2410_PA_USBHOST + S3C24XX_SZ_USBHOST - 1,
51 .flags = IORESOURCE_MEM, 51 .flags = IORESOURCE_MEM,
52 }, 52 },
53 [1] = { 53 [1] = {
@@ -77,7 +77,7 @@ EXPORT_SYMBOL(s3c_device_usb);
77static struct resource s3c_lcd_resource[] = { 77static struct resource s3c_lcd_resource[] = {
78 [0] = { 78 [0] = {
79 .start = S3C2410_PA_LCD, 79 .start = S3C2410_PA_LCD,
80 .end = S3C2410_PA_LCD + S3C24XX_SZ_LCD, 80 .end = S3C2410_PA_LCD + S3C24XX_SZ_LCD - 1,
81 .flags = IORESOURCE_MEM, 81 .flags = IORESOURCE_MEM,
82 }, 82 },
83 [1] = { 83 [1] = {
@@ -103,21 +103,25 @@ struct platform_device s3c_device_lcd = {
103 103
104EXPORT_SYMBOL(s3c_device_lcd); 104EXPORT_SYMBOL(s3c_device_lcd);
105 105
106static struct s3c2410fb_mach_info s3c2410fb_info; 106void __init s3c24xx_fb_set_platdata(struct s3c2410fb_mach_info *pd)
107
108void __init set_s3c2410fb_info(struct s3c2410fb_mach_info *hard_s3c2410fb_info)
109{ 107{
110 memcpy(&s3c2410fb_info,hard_s3c2410fb_info,sizeof(struct s3c2410fb_mach_info)); 108 struct s3c2410fb_mach_info *npd;
111 s3c_device_lcd.dev.platform_data = &s3c2410fb_info; 109
110 npd = kmalloc(sizeof(*npd), GFP_KERNEL);
111 if (npd) {
112 memcpy(npd, pd, sizeof(*npd));
113 s3c_device_lcd.dev.platform_data = npd;
114 } else {
115 printk(KERN_ERR "no memory for LCD platform data\n");
116 }
112} 117}
113EXPORT_SYMBOL(set_s3c2410fb_info);
114 118
115/* NAND Controller */ 119/* NAND Controller */
116 120
117static struct resource s3c_nand_resource[] = { 121static struct resource s3c_nand_resource[] = {
118 [0] = { 122 [0] = {
119 .start = S3C2410_PA_NAND, 123 .start = S3C2410_PA_NAND,
120 .end = S3C2410_PA_NAND + S3C24XX_SZ_NAND, 124 .end = S3C2410_PA_NAND + S3C24XX_SZ_NAND - 1,
121 .flags = IORESOURCE_MEM, 125 .flags = IORESOURCE_MEM,
122 } 126 }
123}; 127};
@@ -136,7 +140,7 @@ EXPORT_SYMBOL(s3c_device_nand);
136static struct resource s3c_usbgadget_resource[] = { 140static struct resource s3c_usbgadget_resource[] = {
137 [0] = { 141 [0] = {
138 .start = S3C2410_PA_USBDEV, 142 .start = S3C2410_PA_USBDEV,
139 .end = S3C2410_PA_USBDEV + S3C24XX_SZ_USBDEV, 143 .end = S3C2410_PA_USBDEV + S3C24XX_SZ_USBDEV - 1,
140 .flags = IORESOURCE_MEM, 144 .flags = IORESOURCE_MEM,
141 }, 145 },
142 [1] = { 146 [1] = {
@@ -161,7 +165,7 @@ EXPORT_SYMBOL(s3c_device_usbgadget);
161static struct resource s3c_wdt_resource[] = { 165static struct resource s3c_wdt_resource[] = {
162 [0] = { 166 [0] = {
163 .start = S3C2410_PA_WATCHDOG, 167 .start = S3C2410_PA_WATCHDOG,
164 .end = S3C2410_PA_WATCHDOG + S3C24XX_SZ_WATCHDOG, 168 .end = S3C2410_PA_WATCHDOG + S3C24XX_SZ_WATCHDOG - 1,
165 .flags = IORESOURCE_MEM, 169 .flags = IORESOURCE_MEM,
166 }, 170 },
167 [1] = { 171 [1] = {
@@ -186,7 +190,7 @@ EXPORT_SYMBOL(s3c_device_wdt);
186static struct resource s3c_i2c_resource[] = { 190static struct resource s3c_i2c_resource[] = {
187 [0] = { 191 [0] = {
188 .start = S3C2410_PA_IIC, 192 .start = S3C2410_PA_IIC,
189 .end = S3C2410_PA_IIC + S3C24XX_SZ_IIC, 193 .end = S3C2410_PA_IIC + S3C24XX_SZ_IIC - 1,
190 .flags = IORESOURCE_MEM, 194 .flags = IORESOURCE_MEM,
191 }, 195 },
192 [1] = { 196 [1] = {
@@ -211,7 +215,7 @@ EXPORT_SYMBOL(s3c_device_i2c);
211static struct resource s3c_iis_resource[] = { 215static struct resource s3c_iis_resource[] = {
212 [0] = { 216 [0] = {
213 .start = S3C2410_PA_IIS, 217 .start = S3C2410_PA_IIS,
214 .end = S3C2410_PA_IIS + S3C24XX_SZ_IIS, 218 .end = S3C2410_PA_IIS + S3C24XX_SZ_IIS -1,
215 .flags = IORESOURCE_MEM, 219 .flags = IORESOURCE_MEM,
216 } 220 }
217}; 221};
@@ -265,7 +269,7 @@ EXPORT_SYMBOL(s3c_device_rtc);
265static struct resource s3c_adc_resource[] = { 269static struct resource s3c_adc_resource[] = {
266 [0] = { 270 [0] = {
267 .start = S3C2410_PA_ADC, 271 .start = S3C2410_PA_ADC,
268 .end = S3C2410_PA_ADC + S3C24XX_SZ_ADC, 272 .end = S3C2410_PA_ADC + S3C24XX_SZ_ADC - 1,
269 .flags = IORESOURCE_MEM, 273 .flags = IORESOURCE_MEM,
270 }, 274 },
271 [1] = { 275 [1] = {
@@ -288,7 +292,7 @@ struct platform_device s3c_device_adc = {
288static struct resource s3c_sdi_resource[] = { 292static struct resource s3c_sdi_resource[] = {
289 [0] = { 293 [0] = {
290 .start = S3C2410_PA_SDI, 294 .start = S3C2410_PA_SDI,
291 .end = S3C2410_PA_SDI + S3C24XX_SZ_SDI, 295 .end = S3C2410_PA_SDI + S3C24XX_SZ_SDI - 1,
292 .flags = IORESOURCE_MEM, 296 .flags = IORESOURCE_MEM,
293 }, 297 },
294 [1] = { 298 [1] = {
@@ -465,7 +469,7 @@ EXPORT_SYMBOL(s3c_device_timer3);
465static struct resource s3c_camif_resource[] = { 469static struct resource s3c_camif_resource[] = {
466 [0] = { 470 [0] = {
467 .start = S3C2440_PA_CAMIF, 471 .start = S3C2440_PA_CAMIF,
468 .end = S3C2440_PA_CAMIF + S3C2440_SZ_CAMIF, 472 .end = S3C2440_PA_CAMIF + S3C2440_SZ_CAMIF - 1,
469 .flags = IORESOURCE_MEM, 473 .flags = IORESOURCE_MEM,
470 }, 474 },
471 [1] = { 475 [1] = {
diff --git a/arch/arm/mach-s3c2410/gpio.c b/arch/arm/mach-s3c2410/gpio.c
index 94f1776cf312..23ea3d5fa09c 100644
--- a/arch/arm/mach-s3c2410/gpio.c
+++ b/arch/arm/mach-s3c2410/gpio.c
@@ -30,6 +30,7 @@
30 * 04-Oct-2004 BJD Added irq filter controls for GPIO 30 * 04-Oct-2004 BJD Added irq filter controls for GPIO
31 * 05-Nov-2004 BJD EXPORT_SYMBOL() added for all code 31 * 05-Nov-2004 BJD EXPORT_SYMBOL() added for all code
32 * 13-Mar-2005 BJD Updates for __iomem 32 * 13-Mar-2005 BJD Updates for __iomem
33 * 26-Oct-2005 BJD Added generic configuration types
33 */ 34 */
34 35
35 36
@@ -58,6 +59,27 @@ void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function)
58 mask = 3 << S3C2410_GPIO_OFFSET(pin)*2; 59 mask = 3 << S3C2410_GPIO_OFFSET(pin)*2;
59 } 60 }
60 61
62 switch (function) {
63 case S3C2410_GPIO_LEAVE:
64 mask = 0;
65 function = 0;
66 break;
67
68 case S3C2410_GPIO_INPUT:
69 case S3C2410_GPIO_OUTPUT:
70 case S3C2410_GPIO_SFN2:
71 case S3C2410_GPIO_SFN3:
72 if (pin < S3C2410_GPIO_BANKB) {
73 function &= 1;
74 function <<= S3C2410_GPIO_OFFSET(pin);
75 } else {
76 function &= 3;
77 function <<= S3C2410_GPIO_OFFSET(pin)*2;
78 }
79 }
80
81 /* modify the specified register wwith IRQs off */
82
61 local_irq_save(flags); 83 local_irq_save(flags);
62 84
63 con = __raw_readl(base + 0x00); 85 con = __raw_readl(base + 0x00);
diff --git a/arch/arm/mach-s3c2410/mach-bast.c b/arch/arm/mach-s3c2410/mach-bast.c
index 7b51bfd0ba6d..c1b5c63ec24a 100644
--- a/arch/arm/mach-s3c2410/mach-bast.c
+++ b/arch/arm/mach-s3c2410/mach-bast.c
@@ -32,6 +32,7 @@
32 * 25-Jul-2005 BJD Removed ASIX static mappings 32 * 25-Jul-2005 BJD Removed ASIX static mappings
33 * 27-Jul-2005 BJD Ensure maximum frequency of i2c bus 33 * 27-Jul-2005 BJD Ensure maximum frequency of i2c bus
34 * 20-Sep-2005 BJD Added static to non-exported items 34 * 20-Sep-2005 BJD Added static to non-exported items
35 * 26-Oct-2005 BJD Added FB platform data
35*/ 36*/
36 37
37#include <linux/kernel.h> 38#include <linux/kernel.h>
@@ -61,8 +62,10 @@
61#include <asm/arch/regs-gpio.h> 62#include <asm/arch/regs-gpio.h>
62#include <asm/arch/regs-mem.h> 63#include <asm/arch/regs-mem.h>
63#include <asm/arch/regs-lcd.h> 64#include <asm/arch/regs-lcd.h>
65
64#include <asm/arch/nand.h> 66#include <asm/arch/nand.h>
65#include <asm/arch/iic.h> 67#include <asm/arch/iic.h>
68#include <asm/arch/fb.h>
66 69
67#include <linux/mtd/mtd.h> 70#include <linux/mtd/mtd.h>
68#include <linux/mtd/nand.h> 71#include <linux/mtd/nand.h>
@@ -399,6 +402,38 @@ static struct s3c2410_platform_i2c bast_i2c_info = {
399 .max_freq = 130*1000, 402 .max_freq = 130*1000,
400}; 403};
401 404
405
406static struct s3c2410fb_mach_info __initdata bast_lcd_info = {
407 .width = 640,
408 .height = 480,
409
410 .xres = {
411 .min = 320,
412 .max = 1024,
413 .defval = 640,
414 },
415
416 .yres = {
417 .min = 240,
418 .max = 600,
419 .defval = 480,
420 },
421
422 .bpp = {
423 .min = 4,
424 .max = 16,
425 .defval = 8,
426 },
427
428 .regs = {
429 .lcdcon1 = 0x00000176,
430 .lcdcon2 = 0x1d77c7c2,
431 .lcdcon3 = 0x013a7f13,
432 .lcdcon4 = 0x00000057,
433 .lcdcon5 = 0x00014b02,
434 }
435};
436
402/* Standard BAST devices */ 437/* Standard BAST devices */
403 438
404static struct platform_device *bast_devices[] __initdata = { 439static struct platform_device *bast_devices[] __initdata = {
@@ -454,6 +489,10 @@ static void __init bast_map_io(void)
454 usb_simtec_init(); 489 usb_simtec_init();
455} 490}
456 491
492static void __init bast_init(void)
493{
494 s3c24xx_fb_set_platdata(&bast_lcd_info);
495}
457 496
458MACHINE_START(BAST, "Simtec-BAST") 497MACHINE_START(BAST, "Simtec-BAST")
459 /* Maintainer: Ben Dooks <ben@simtec.co.uk> */ 498 /* Maintainer: Ben Dooks <ben@simtec.co.uk> */
@@ -463,5 +502,6 @@ MACHINE_START(BAST, "Simtec-BAST")
463 .boot_params = S3C2410_SDRAM_PA + 0x100, 502 .boot_params = S3C2410_SDRAM_PA + 0x100,
464 .map_io = bast_map_io, 503 .map_io = bast_map_io,
465 .init_irq = s3c24xx_init_irq, 504 .init_irq = s3c24xx_init_irq,
505 .init_machine = bast_init,
466 .timer = &s3c24xx_timer, 506 .timer = &s3c24xx_timer,
467MACHINE_END 507MACHINE_END
diff --git a/arch/arm/mach-s3c2410/mach-h1940.c b/arch/arm/mach-s3c2410/mach-h1940.c
index fb3cb01266e5..7efeaaad2361 100644
--- a/arch/arm/mach-s3c2410/mach-h1940.c
+++ b/arch/arm/mach-s3c2410/mach-h1940.c
@@ -25,6 +25,7 @@
25 * 14-Jan-2005 BJD Added clock init 25 * 14-Jan-2005 BJD Added clock init
26 * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA 26 * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA
27 * 20-Sep-2005 BJD Added static to non-exported items 27 * 20-Sep-2005 BJD Added static to non-exported items
28 * 26-Oct-2005 BJD Changed name of fb init call
28*/ 29*/
29 30
30#include <linux/kernel.h> 31#include <linux/kernel.h>
@@ -164,7 +165,7 @@ static void __init h1940_init_irq(void)
164 165
165static void __init h1940_init(void) 166static void __init h1940_init(void)
166{ 167{
167 set_s3c2410fb_info(&h1940_lcdcfg); 168 s3c24xx_fb_set_platdata(&h1940_lcdcfg);
168} 169}
169 170
170MACHINE_START(H1940, "IPAQ-H1940") 171MACHINE_START(H1940, "IPAQ-H1940")
diff --git a/arch/arm/mach-s3c2410/mach-smdk2440.c b/arch/arm/mach-s3c2410/mach-smdk2440.c
index 722ef46b630a..6950e61b7914 100644
--- a/arch/arm/mach-s3c2410/mach-smdk2440.c
+++ b/arch/arm/mach-s3c2410/mach-smdk2440.c
@@ -19,6 +19,7 @@
19 * 10-Mar-2005 LCVR Replaced S3C2410_VA by S3C24XX_VA 19 * 10-Mar-2005 LCVR Replaced S3C2410_VA by S3C24XX_VA
20 * 14-Mar-2005 BJD void __iomem fixes 20 * 14-Mar-2005 BJD void __iomem fixes
21 * 20-Sep-2005 BJD Added static to non-exported items 21 * 20-Sep-2005 BJD Added static to non-exported items
22 * 26-Oct-2005 BJD Added framebuffer data
22*/ 23*/
23 24
24#include <linux/kernel.h> 25#include <linux/kernel.h>
@@ -41,7 +42,10 @@
41//#include <asm/debug-ll.h> 42//#include <asm/debug-ll.h>
42#include <asm/arch/regs-serial.h> 43#include <asm/arch/regs-serial.h>
43#include <asm/arch/regs-gpio.h> 44#include <asm/arch/regs-gpio.h>
45#include <asm/arch/regs-lcd.h>
46
44#include <asm/arch/idle.h> 47#include <asm/arch/idle.h>
48#include <asm/arch/fb.h>
45 49
46#include "s3c2410.h" 50#include "s3c2410.h"
47#include "s3c2440.h" 51#include "s3c2440.h"
@@ -86,6 +90,70 @@ static struct s3c2410_uartcfg smdk2440_uartcfgs[] = {
86 } 90 }
87}; 91};
88 92
93/* LCD driver info */
94
95static struct s3c2410fb_mach_info smdk2440_lcd_cfg __initdata = {
96 .regs = {
97
98 .lcdcon1 = S3C2410_LCDCON1_TFT16BPP |
99 S3C2410_LCDCON1_TFT |
100 S3C2410_LCDCON1_CLKVAL(0x04),
101
102 .lcdcon2 = S3C2410_LCDCON2_VBPD(7) |
103 S3C2410_LCDCON2_LINEVAL(319) |
104 S3C2410_LCDCON2_VFPD(6) |
105 S3C2410_LCDCON2_VSPW(3),
106
107 .lcdcon3 = S3C2410_LCDCON3_HBPD(19) |
108 S3C2410_LCDCON3_HOZVAL(239) |
109 S3C2410_LCDCON3_HFPD(7),
110
111 .lcdcon4 = S3C2410_LCDCON4_MVAL(0) |
112 S3C2410_LCDCON4_HSPW(3),
113
114 .lcdcon5 = S3C2410_LCDCON5_FRM565 |
115 S3C2410_LCDCON5_INVVLINE |
116 S3C2410_LCDCON5_INVVFRAME |
117 S3C2410_LCDCON5_PWREN |
118 S3C2410_LCDCON5_HWSWP,
119 },
120
121#if 0
122 /* currently setup by downloader */
123 .gpccon = 0xaa940659,
124 .gpccon_mask = 0xffffffff,
125 .gpcup = 0x0000ffff,
126 .gpcup_mask = 0xffffffff,
127 .gpdcon = 0xaa84aaa0,
128 .gpdcon_mask = 0xffffffff,
129 .gpdup = 0x0000faff,
130 .gpdup_mask = 0xffffffff,
131#endif
132
133 .lpcsel = ((0xCE6) & ~7) | 1<<4,
134
135 .width = 240,
136 .height = 320,
137
138 .xres = {
139 .min = 240,
140 .max = 240,
141 .defval = 240,
142 },
143
144 .yres = {
145 .min = 320,
146 .max = 320,
147 .defval = 320,
148 },
149
150 .bpp = {
151 .min = 16,
152 .max = 16,
153 .defval = 16,
154 },
155};
156
89static struct platform_device *smdk2440_devices[] __initdata = { 157static struct platform_device *smdk2440_devices[] __initdata = {
90 &s3c_device_usb, 158 &s3c_device_usb,
91 &s3c_device_lcd, 159 &s3c_device_lcd,
@@ -121,6 +189,8 @@ static void __init smdk2440_machine_init(void)
121 s3c2410_gpio_setpin(S3C2410_GPF6, 0); 189 s3c2410_gpio_setpin(S3C2410_GPF6, 0);
122 s3c2410_gpio_setpin(S3C2410_GPF7, 0); 190 s3c2410_gpio_setpin(S3C2410_GPF7, 0);
123 191
192 s3c24xx_fb_set_platdata(&smdk2440_lcd_cfg);
193
124 s3c2410_pm_init(); 194 s3c2410_pm_init();
125} 195}
126 196
diff --git a/arch/arm/mach-sa1100/assabet.c b/arch/arm/mach-sa1100/assabet.c
index 24687f511bf5..75efb5da5b6d 100644
--- a/arch/arm/mach-sa1100/assabet.c
+++ b/arch/arm/mach-sa1100/assabet.c
@@ -388,9 +388,17 @@ static struct sa1100_port_fns assabet_port_fns __initdata = {
388}; 388};
389 389
390static struct map_desc assabet_io_desc[] __initdata = { 390static struct map_desc assabet_io_desc[] __initdata = {
391 /* virtual physical length type */ 391 { /* Board Control Register */
392 { 0xf1000000, 0x12000000, 0x00100000, MT_DEVICE }, /* Board Control Register */ 392 .virtual = 0xf1000000,
393 { 0xf2800000, 0x4b800000, 0x00800000, MT_DEVICE } /* MQ200 */ 393 .pfn = __phys_to_pfn(0x12000000),
394 .length = 0x00100000,
395 .type = MT_DEVICE
396 }, { /* MQ200 */
397 .virtual = 0xf2800000,
398 .pfn = __phys_to_pfn(0x4b800000),
399 .length = 0x00800000,
400 .type = MT_DEVICE
401 }
394}; 402};
395 403
396static void __init assabet_map_io(void) 404static void __init assabet_map_io(void)
diff --git a/arch/arm/mach-sa1100/badge4.c b/arch/arm/mach-sa1100/badge4.c
index b6169cb09196..c92cebff7f8e 100644
--- a/arch/arm/mach-sa1100/badge4.c
+++ b/arch/arm/mach-sa1100/badge4.c
@@ -254,10 +254,22 @@ EXPORT_SYMBOL(badge4_set_5V);
254 254
255 255
256static struct map_desc badge4_io_desc[] __initdata = { 256static struct map_desc badge4_io_desc[] __initdata = {
257 /* virtual physical length type */ 257 { /* SRAM bank 1 */
258 {0xf1000000, 0x08000000, 0x00100000, MT_DEVICE },/* SRAM bank 1 */ 258 .virtual = 0xf1000000,
259 {0xf2000000, 0x10000000, 0x00100000, MT_DEVICE },/* SRAM bank 2 */ 259 .pfn = __phys_to_pfn(0x08000000),
260 {0xf4000000, 0x48000000, 0x00100000, MT_DEVICE } /* SA-1111 */ 260 .length = 0x00100000,
261 .type = MT_DEVICE
262 }, { /* SRAM bank 2 */
263 .virtual = 0xf2000000,
264 .pfn = __phys_to_pfn(0x10000000),
265 .length = 0x00100000,
266 .type = MT_DEVICE
267 }, { /* SA-1111 */
268 .virtual = 0xf4000000,
269 .pfn = __phys_to_pfn(0x48000000),
270 .length = 0x00100000,
271 .type = MT_DEVICE
272 }
261}; 273};
262 274
263static void 275static void
diff --git a/arch/arm/mach-sa1100/cerf.c b/arch/arm/mach-sa1100/cerf.c
index 9484be7dc671..23cb74885275 100644
--- a/arch/arm/mach-sa1100/cerf.c
+++ b/arch/arm/mach-sa1100/cerf.c
@@ -100,8 +100,12 @@ static void __init cerf_init_irq(void)
100} 100}
101 101
102static struct map_desc cerf_io_desc[] __initdata = { 102static struct map_desc cerf_io_desc[] __initdata = {
103 /* virtual physical length type */ 103 { /* Crystal Ethernet Chip */
104 { 0xf0000000, 0x08000000, 0x00100000, MT_DEVICE } /* Crystal Ethernet Chip */ 104 .virtual = 0xf0000000,
105 .pfn = __phys_to_pfn(0x08000000),
106 .length = 0x00100000,
107 .type = MT_DEVICE
108 }
105}; 109};
106 110
107static void __init cerf_map_io(void) 111static void __init cerf_map_io(void)
diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c
index 6ecab7e2c238..7fd6e29c36b7 100644
--- a/arch/arm/mach-sa1100/collie.c
+++ b/arch/arm/mach-sa1100/collie.c
@@ -171,9 +171,17 @@ static void __init collie_init(void)
171} 171}
172 172
173static struct map_desc collie_io_desc[] __initdata = { 173static struct map_desc collie_io_desc[] __initdata = {
174 /* virtual physical length type */ 174 { /* 32M main flash (cs0) */
175 {0xe8000000, 0x00000000, 0x02000000, MT_DEVICE}, /* 32M main flash (cs0) */ 175 .virtual = 0xe8000000,
176 {0xea000000, 0x08000000, 0x02000000, MT_DEVICE}, /* 32M boot flash (cs1) */ 176 .pfn = __phys_to_pfn(0x00000000),
177 .length = 0x02000000,
178 .type = MT_DEVICE
179 }, { /* 32M boot flash (cs1) */
180 .virtual = 0xea000000,
181 .pfn = __phys_to_pfn(0x08000000),
182 .length = 0x02000000,
183 .type = MT_DEVICE
184 }
177}; 185};
178 186
179static void __init collie_map_io(void) 187static void __init collie_map_io(void)
diff --git a/arch/arm/mach-sa1100/generic.c b/arch/arm/mach-sa1100/generic.c
index 3f1e358455e5..83eba8b54816 100644
--- a/arch/arm/mach-sa1100/generic.c
+++ b/arch/arm/mach-sa1100/generic.c
@@ -17,12 +17,14 @@
17#include <linux/pm.h> 17#include <linux/pm.h>
18#include <linux/cpufreq.h> 18#include <linux/cpufreq.h>
19#include <linux/ioport.h> 19#include <linux/ioport.h>
20#include <linux/sched.h> /* just for sched_clock() - funny that */
20 21
21#include <asm/div64.h> 22#include <asm/div64.h>
22#include <asm/hardware.h> 23#include <asm/hardware.h>
23#include <asm/system.h> 24#include <asm/system.h>
24#include <asm/pgtable.h> 25#include <asm/pgtable.h>
25#include <asm/mach/map.h> 26#include <asm/mach/map.h>
27#include <asm/mach/flash.h>
26#include <asm/irq.h> 28#include <asm/irq.h>
27 29
28#include "generic.h" 30#include "generic.h"
@@ -283,6 +285,7 @@ static struct platform_device sa11x0mtd_device = {
283void sa11x0_set_flash_data(struct flash_platform_data *flash, 285void sa11x0_set_flash_data(struct flash_platform_data *flash,
284 struct resource *res, int nr) 286 struct resource *res, int nr)
285{ 287{
288 flash->name = "sa1100";
286 sa11x0mtd_device.dev.platform_data = flash; 289 sa11x0mtd_device.dev.platform_data = flash;
287 sa11x0mtd_device.resource = res; 290 sa11x0mtd_device.resource = res;
288 sa11x0mtd_device.num_resources = nr; 291 sa11x0mtd_device.num_resources = nr;
@@ -369,11 +372,27 @@ EXPORT_SYMBOL(sa1100fb_lcd_power);
369 */ 372 */
370 373
371static struct map_desc standard_io_desc[] __initdata = { 374static struct map_desc standard_io_desc[] __initdata = {
372 /* virtual physical length type */ 375 { /* PCM */
373 { 0xf8000000, 0x80000000, 0x00100000, MT_DEVICE }, /* PCM */ 376 .virtual = 0xf8000000,
374 { 0xfa000000, 0x90000000, 0x00100000, MT_DEVICE }, /* SCM */ 377 .pfn = __phys_to_pfn(0x80000000),
375 { 0xfc000000, 0xa0000000, 0x00100000, MT_DEVICE }, /* MER */ 378 .length = 0x00100000,
376 { 0xfe000000, 0xb0000000, 0x00200000, MT_DEVICE } /* LCD + DMA */ 379 .type = MT_DEVICE
380 }, { /* SCM */
381 .virtual = 0xfa000000,
382 .pfn = __phys_to_pfn(0x90000000),
383 .length = 0x00100000,
384 .type = MT_DEVICE
385 }, { /* MER */
386 .virtual = 0xfc000000,
387 .pfn = __phys_to_pfn(0xa0000000),
388 .length = 0x00100000,
389 .type = MT_DEVICE
390 }, { /* LCD + DMA */
391 .virtual = 0xfe000000,
392 .pfn = __phys_to_pfn(0xb0000000),
393 .length = 0x00200000,
394 .type = MT_DEVICE
395 },
377}; 396};
378 397
379void __init sa1100_map_io(void) 398void __init sa1100_map_io(void)
diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c
index e7aa2681ca64..e8352b7f74b0 100644
--- a/arch/arm/mach-sa1100/h3600.c
+++ b/arch/arm/mach-sa1100/h3600.c
@@ -223,10 +223,22 @@ static void h3xxx_lcd_power(int enable)
223} 223}
224 224
225static struct map_desc h3600_io_desc[] __initdata = { 225static struct map_desc h3600_io_desc[] __initdata = {
226 /* virtual physical length type */ 226 { /* static memory bank 2 CS#2 */
227 { H3600_BANK_2_VIRT, SA1100_CS2_PHYS, 0x02800000, MT_DEVICE }, /* static memory bank 2 CS#2 */ 227 .virtual = H3600_BANK_2_VIRT,
228 { H3600_BANK_4_VIRT, SA1100_CS4_PHYS, 0x00800000, MT_DEVICE }, /* static memory bank 4 CS#4 */ 228 .pfn = __phys_to_pfn(SA1100_CS2_PHYS),
229 { H3600_EGPIO_VIRT, H3600_EGPIO_PHYS, 0x01000000, MT_DEVICE }, /* EGPIO 0 CS#5 */ 229 .length = 0x02800000,
230 .type = MT_DEVICE
231 }, { /* static memory bank 4 CS#4 */
232 .virtual = H3600_BANK_4_VIRT,
233 .pfn = __phys_to_pfn(SA1100_CS4_PHYS),
234 .length = 0x00800000,
235 .type = MT_DEVICE
236 }, { /* EGPIO 0 CS#5 */
237 .virtual = H3600_EGPIO_VIRT,
238 .pfn = __phys_to_pfn(H3600_EGPIO_PHYS),
239 .length = 0x01000000,
240 .type = MT_DEVICE
241 }
230}; 242};
231 243
232/* 244/*
diff --git a/arch/arm/mach-sa1100/hackkit.c b/arch/arm/mach-sa1100/hackkit.c
index 502d65cfe654..c922e043c424 100644
--- a/arch/arm/mach-sa1100/hackkit.c
+++ b/arch/arm/mach-sa1100/hackkit.c
@@ -57,8 +57,12 @@ static void hackkit_uart_pm(struct uart_port *port, u_int state, u_int oldstate)
57 */ 57 */
58 58
59static struct map_desc hackkit_io_desc[] __initdata = { 59static struct map_desc hackkit_io_desc[] __initdata = {
60 /* virtual physical length type */ 60 { /* Flash bank 0 */
61 { 0xe8000000, 0x00000000, 0x01000000, MT_DEVICE } /* Flash bank 0 */ 61 .virtual = 0xe8000000,
62 .pfn = __phys_to_pfn(0x00000000),
63 .length = 0x01000000,
64 .type = MT_DEVICE
65 },
62}; 66};
63 67
64static struct sa1100_port_fns hackkit_port_fns __initdata = { 68static struct sa1100_port_fns hackkit_port_fns __initdata = {
diff --git a/arch/arm/mach-sa1100/jornada720.c b/arch/arm/mach-sa1100/jornada720.c
index 2f497112c96a..89af0c831e8f 100644
--- a/arch/arm/mach-sa1100/jornada720.c
+++ b/arch/arm/mach-sa1100/jornada720.c
@@ -8,6 +8,8 @@
8#include <linux/delay.h> 8#include <linux/delay.h>
9#include <linux/device.h> 9#include <linux/device.h>
10#include <linux/ioport.h> 10#include <linux/ioport.h>
11#include <linux/mtd/mtd.h>
12#include <linux/mtd/partitions.h>
11 13
12#include <asm/hardware.h> 14#include <asm/hardware.h>
13#include <asm/hardware/sa1111.h> 15#include <asm/hardware/sa1111.h>
@@ -16,6 +18,7 @@
16#include <asm/setup.h> 18#include <asm/setup.h>
17 19
18#include <asm/mach/arch.h> 20#include <asm/mach/arch.h>
21#include <asm/mach/flash.h>
19#include <asm/mach/map.h> 22#include <asm/mach/map.h>
20#include <asm/mach/serial_sa1100.h> 23#include <asm/mach/serial_sa1100.h>
21 24
@@ -81,10 +84,22 @@ static int __init jornada720_init(void)
81arch_initcall(jornada720_init); 84arch_initcall(jornada720_init);
82 85
83static struct map_desc jornada720_io_desc[] __initdata = { 86static struct map_desc jornada720_io_desc[] __initdata = {
84 /* virtual physical length type */ 87 { /* Epson registers */
85 { 0xf0000000, 0x48000000, 0x00100000, MT_DEVICE }, /* Epson registers */ 88 .virtual = 0xf0000000,
86 { 0xf1000000, 0x48200000, 0x00100000, MT_DEVICE }, /* Epson frame buffer */ 89 .pfn = __phys_to_pfn(0x48000000),
87 { 0xf4000000, 0x40000000, 0x00100000, MT_DEVICE } /* SA-1111 */ 90 .length = 0x00100000,
91 .type = MT_DEVICE
92 }, { /* Epson frame buffer */
93 .virtual = 0xf1000000,
94 .pfn = __phys_to_pfn(0x48200000),
95 .length = 0x00100000,
96 .type = MT_DEVICE
97 }, { /* SA-1111 */
98 .virtual = 0xf4000000,
99 .pfn = __phys_to_pfn(0x40000000),
100 .length = 0x00100000,
101 .type = MT_DEVICE
102 }
88}; 103};
89 104
90static void __init jornada720_map_io(void) 105static void __init jornada720_map_io(void)
@@ -96,6 +111,66 @@ static void __init jornada720_map_io(void)
96 sa1100_register_uart(1, 1); 111 sa1100_register_uart(1, 1);
97} 112}
98 113
114static struct mtd_partition jornada720_partitions[] = {
115 {
116 .name = "JORNADA720 boot firmware",
117 .size = 0x00040000,
118 .offset = 0,
119 .mask_flags = MTD_WRITEABLE, /* force read-only */
120 }, {
121 .name = "JORNADA720 kernel",
122 .size = 0x000c0000,
123 .offset = 0x00040000,
124 }, {
125 .name = "JORNADA720 params",
126 .size = 0x00040000,
127 .offset = 0x00100000,
128 }, {
129 .name = "JORNADA720 initrd",
130 .size = 0x00100000,
131 .offset = 0x00140000,
132 }, {
133 .name = "JORNADA720 root cramfs",
134 .size = 0x00300000,
135 .offset = 0x00240000,
136 }, {
137 .name = "JORNADA720 usr cramfs",
138 .size = 0x00800000,
139 .offset = 0x00540000,
140 }, {
141 .name = "JORNADA720 usr local",
142 .size = 0, /* will expand to the end of the flash */
143 .offset = 0x00d00000,
144 }
145};
146
147static void jornada720_set_vpp(int vpp)
148{
149 if (vpp)
150 PPSR |= 0x80;
151 else
152 PPSR &= ~0x80;
153 PPDR |= 0x80;
154}
155
156static struct flash_platform_data jornada720_flash_data = {
157 .map_name = "cfi_probe",
158 .set_vpp = jornada720_set_vpp,
159 .parts = jornada720_partitions,
160 .nr_parts = ARRAY_SIZE(jornada720_partitions),
161};
162
163static struct resource jornada720_flash_resource = {
164 .start = SA1100_CS0_PHYS,
165 .end = SA1100_CS0_PHYS + SZ_32M - 1,
166 .flags = IORESOURCE_MEM,
167};
168
169static void __init jornada720_mach_init(void)
170{
171 sa11x0_set_flash_data(&jornada720_flash_data, &jornada720_flash_resource, 1);
172}
173
99MACHINE_START(JORNADA720, "HP Jornada 720") 174MACHINE_START(JORNADA720, "HP Jornada 720")
100 /* Maintainer: Michael Gernoth <michael@gernoth.net> */ 175 /* Maintainer: Michael Gernoth <michael@gernoth.net> */
101 .phys_ram = 0xc0000000, 176 .phys_ram = 0xc0000000,
@@ -105,4 +180,5 @@ MACHINE_START(JORNADA720, "HP Jornada 720")
105 .map_io = jornada720_map_io, 180 .map_io = jornada720_map_io,
106 .init_irq = sa1100_init_irq, 181 .init_irq = sa1100_init_irq,
107 .timer = &sa1100_timer, 182 .timer = &sa1100_timer,
183 .init_machine = jornada720_mach_init,
108MACHINE_END 184MACHINE_END
diff --git a/arch/arm/mach-sa1100/lart.c b/arch/arm/mach-sa1100/lart.c
index ed6744d480af..8c9e3dd52942 100644
--- a/arch/arm/mach-sa1100/lart.c
+++ b/arch/arm/mach-sa1100/lart.c
@@ -31,9 +31,17 @@ static void __init lart_init(void)
31} 31}
32 32
33static struct map_desc lart_io_desc[] __initdata = { 33static struct map_desc lart_io_desc[] __initdata = {
34 /* virtual physical length type */ 34 { /* main flash memory */
35 { 0xe8000000, 0x00000000, 0x00400000, MT_DEVICE }, /* main flash memory */ 35 .virtual = 0xe8000000,
36 { 0xec000000, 0x08000000, 0x00400000, MT_DEVICE } /* main flash, alternative location */ 36 .pfn = __phys_to_pfn(0x00000000),
37 .length = 0x00400000,
38 .type = MT_DEVICE
39 }, { /* main flash, alternative location */
40 .virtual = 0xec000000,
41 .pfn = __phys_to_pfn(0x08000000),
42 .length = 0x00400000,
43 .type = MT_DEVICE
44 }
37}; 45};
38 46
39static void __init lart_map_io(void) 47static void __init lart_map_io(void)
diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c
index fc061641b7be..052e4caedb89 100644
--- a/arch/arm/mach-sa1100/neponset.c
+++ b/arch/arm/mach-sa1100/neponset.c
@@ -178,33 +178,27 @@ static int neponset_probe(struct device *dev)
178/* 178/*
179 * LDM power management. 179 * LDM power management.
180 */ 180 */
181static int neponset_suspend(struct device *dev, pm_message_t state, u32 level) 181static int neponset_suspend(struct device *dev, pm_message_t state)
182{ 182{
183 /* 183 /*
184 * Save state. 184 * Save state.
185 */ 185 */
186 if (level == SUSPEND_SAVE_STATE || 186 if (!dev->power.saved_state)
187 level == SUSPEND_DISABLE || 187 dev->power.saved_state = kmalloc(sizeof(unsigned int), GFP_KERNEL);
188 level == SUSPEND_POWER_DOWN) { 188 if (!dev->power.saved_state)
189 if (!dev->power.saved_state) 189 return -ENOMEM;
190 dev->power.saved_state = kmalloc(sizeof(unsigned int), GFP_KERNEL); 190
191 if (!dev->power.saved_state) 191 *(unsigned int *)dev->power.saved_state = NCR_0;
192 return -ENOMEM;
193
194 *(unsigned int *)dev->power.saved_state = NCR_0;
195 }
196 192
197 return 0; 193 return 0;
198} 194}
199 195
200static int neponset_resume(struct device *dev, u32 level) 196static int neponset_resume(struct device *dev)
201{ 197{
202 if (level == RESUME_RESTORE_STATE || level == RESUME_ENABLE) { 198 if (dev->power.saved_state) {
203 if (dev->power.saved_state) { 199 NCR_0 = *(unsigned int *)dev->power.saved_state;
204 NCR_0 = *(unsigned int *)dev->power.saved_state; 200 kfree(dev->power.saved_state);
205 kfree(dev->power.saved_state); 201 dev->power.saved_state = NULL;
206 dev->power.saved_state = NULL;
207 }
208 } 202 }
209 203
210 return 0; 204 return 0;
@@ -331,9 +325,17 @@ static int __init neponset_init(void)
331subsys_initcall(neponset_init); 325subsys_initcall(neponset_init);
332 326
333static struct map_desc neponset_io_desc[] __initdata = { 327static struct map_desc neponset_io_desc[] __initdata = {
334 /* virtual physical length type */ 328 { /* System Registers */
335 { 0xf3000000, 0x10000000, SZ_1M, MT_DEVICE }, /* System Registers */ 329 .virtual = 0xf3000000,
336 { 0xf4000000, 0x40000000, SZ_1M, MT_DEVICE } /* SA-1111 */ 330 .pfn = __phys_to_pfn(0x10000000),
331 .length = SZ_1M,
332 .type = MT_DEVICE
333 }, { /* SA-1111 */
334 .virtual = 0xf4000000,
335 .pfn = __phys_to_pfn(0x40000000),
336 .length = SZ_1M,
337 .type = MT_DEVICE
338 }
337}; 339};
338 340
339void __init neponset_map_io(void) 341void __init neponset_map_io(void)
diff --git a/arch/arm/mach-sa1100/simpad.c b/arch/arm/mach-sa1100/simpad.c
index 07f6d5fd7bb0..cfb6658e5cdf 100644
--- a/arch/arm/mach-sa1100/simpad.c
+++ b/arch/arm/mach-sa1100/simpad.c
@@ -60,11 +60,17 @@ EXPORT_SYMBOL(set_cs3_bit);
60EXPORT_SYMBOL(clear_cs3_bit); 60EXPORT_SYMBOL(clear_cs3_bit);
61 61
62static struct map_desc simpad_io_desc[] __initdata = { 62static struct map_desc simpad_io_desc[] __initdata = {
63 /* virtual physical length type */ 63 { /* MQ200 */
64 /* MQ200 */ 64 .virtual = 0xf2800000,
65 { 0xf2800000, 0x4b800000, 0x00800000, MT_DEVICE }, 65 .pfn = __phys_to_pfn(0x4b800000),
66 /* Paules CS3, write only */ 66 .length = 0x00800000,
67 { 0xf1000000, 0x18000000, 0x00100000, MT_DEVICE }, 67 .type = MT_DEVICE
68 }, { /* Paules CS3, write only */
69 .virtual = 0xf1000000,
70 .pfn = __phys_to_pfn(0x18000000),
71 .length = 0x00100000,
72 .type = MT_DEVICE
73 },
68}; 74};
69 75
70 76
diff --git a/arch/arm/mach-shark/core.c b/arch/arm/mach-shark/core.c
index 946c0d11c73b..2d428b6dbb58 100644
--- a/arch/arm/mach-shark/core.c
+++ b/arch/arm/mach-shark/core.c
@@ -62,7 +62,12 @@ arch_initcall(shark_init);
62extern void shark_init_irq(void); 62extern void shark_init_irq(void);
63 63
64static struct map_desc shark_io_desc[] __initdata = { 64static struct map_desc shark_io_desc[] __initdata = {
65 { IO_BASE , IO_START , IO_SIZE , MT_DEVICE } 65 {
66 .virtual = IO_BASE,
67 .pfn = __phys_to_pfn(IO_START),
68 .length = IO_SIZE,
69 .type = MT_DEVICE
70 }
66}; 71};
67 72
68static void __init shark_map_io(void) 73static void __init shark_map_io(void)
diff --git a/arch/arm/mach-versatile/clock.c b/arch/arm/mach-versatile/clock.c
index 48025c2b9987..b96a2ea15d41 100644
--- a/arch/arm/mach-versatile/clock.c
+++ b/arch/arm/mach-versatile/clock.c
@@ -13,6 +13,7 @@
13#include <linux/list.h> 13#include <linux/list.h>
14#include <linux/errno.h> 14#include <linux/errno.h>
15#include <linux/err.h> 15#include <linux/err.h>
16#include <linux/string.h>
16 17
17#include <asm/semaphore.h> 18#include <asm/semaphore.h>
18#include <asm/hardware/clock.h> 19#include <asm/hardware/clock.h>
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c
index a30e0451df72..7e4bdd07f4af 100644
--- a/arch/arm/mach-versatile/core.c
+++ b/arch/arm/mach-versatile/core.c
@@ -186,25 +186,82 @@ void __init versatile_init_irq(void)
186} 186}
187 187
188static struct map_desc versatile_io_desc[] __initdata = { 188static struct map_desc versatile_io_desc[] __initdata = {
189 { IO_ADDRESS(VERSATILE_SYS_BASE), VERSATILE_SYS_BASE, SZ_4K, MT_DEVICE }, 189 {
190 { IO_ADDRESS(VERSATILE_SIC_BASE), VERSATILE_SIC_BASE, SZ_4K, MT_DEVICE }, 190 .virtual = IO_ADDRESS(VERSATILE_SYS_BASE),
191 { IO_ADDRESS(VERSATILE_VIC_BASE), VERSATILE_VIC_BASE, SZ_4K, MT_DEVICE }, 191 .pfn = __phys_to_pfn(VERSATILE_SYS_BASE),
192 { IO_ADDRESS(VERSATILE_SCTL_BASE), VERSATILE_SCTL_BASE, SZ_4K * 9, MT_DEVICE }, 192 .length = SZ_4K,
193 .type = MT_DEVICE
194 }, {
195 .virtual = IO_ADDRESS(VERSATILE_SIC_BASE),
196 .pfn = __phys_to_pfn(VERSATILE_SIC_BASE),
197 .length = SZ_4K,
198 .type = MT_DEVICE
199 }, {
200 .virtual = IO_ADDRESS(VERSATILE_VIC_BASE),
201 .pfn = __phys_to_pfn(VERSATILE_VIC_BASE),
202 .length = SZ_4K,
203 .type = MT_DEVICE
204 }, {
205 .virtual = IO_ADDRESS(VERSATILE_SCTL_BASE),
206 .pfn = __phys_to_pfn(VERSATILE_SCTL_BASE),
207 .length = SZ_4K * 9,
208 .type = MT_DEVICE
209 },
193#ifdef CONFIG_MACH_VERSATILE_AB 210#ifdef CONFIG_MACH_VERSATILE_AB
194 { IO_ADDRESS(VERSATILE_GPIO0_BASE), VERSATILE_GPIO0_BASE, SZ_4K, MT_DEVICE }, 211 {
195 { IO_ADDRESS(VERSATILE_IB2_BASE), VERSATILE_IB2_BASE, SZ_64M, MT_DEVICE }, 212 .virtual = IO_ADDRESS(VERSATILE_GPIO0_BASE),
213 .pfn = __phys_to_pfn(VERSATILE_GPIO0_BASE),
214 .length = SZ_4K,
215 .type = MT_DEVICE
216 }, {
217 .virtual = IO_ADDRESS(VERSATILE_IB2_BASE),
218 .pfn = __phys_to_pfn(VERSATILE_IB2_BASE),
219 .length = SZ_64M,
220 .type = MT_DEVICE
221 },
196#endif 222#endif
197#ifdef CONFIG_DEBUG_LL 223#ifdef CONFIG_DEBUG_LL
198 { IO_ADDRESS(VERSATILE_UART0_BASE), VERSATILE_UART0_BASE, SZ_4K, MT_DEVICE }, 224 {
225 .virtual = IO_ADDRESS(VERSATILE_UART0_BASE),
226 .pfn = __phys_to_pfn(VERSATILE_UART0_BASE),
227 .length = SZ_4K,
228 .type = MT_DEVICE
229 },
199#endif 230#endif
200#ifdef CONFIG_PCI 231#ifdef CONFIG_PCI
201 { IO_ADDRESS(VERSATILE_PCI_CORE_BASE), VERSATILE_PCI_CORE_BASE, SZ_4K, MT_DEVICE }, 232 {
202 { VERSATILE_PCI_VIRT_BASE, VERSATILE_PCI_BASE, VERSATILE_PCI_BASE_SIZE, MT_DEVICE }, 233 .virtual = IO_ADDRESS(VERSATILE_PCI_CORE_BASE),
203 { VERSATILE_PCI_CFG_VIRT_BASE, VERSATILE_PCI_CFG_BASE, VERSATILE_PCI_CFG_BASE_SIZE, MT_DEVICE }, 234 .pfn = __phys_to_pfn(VERSATILE_PCI_CORE_BASE),
235 .length = SZ_4K,
236 .type = MT_DEVICE
237 }, {
238 .virtual = VERSATILE_PCI_VIRT_BASE,
239 .pfn = __phys_to_pfn(VERSATILE_PCI_BASE),
240 .length = VERSATILE_PCI_BASE_SIZE,
241 .type = MT_DEVICE
242 }, {
243 .virtual = VERSATILE_PCI_CFG_VIRT_BASE,
244 .pfn = __phys_to_pfn(VERSATILE_PCI_CFG_BASE),
245 .length = VERSATILE_PCI_CFG_BASE_SIZE,
246 .type = MT_DEVICE
247 },
204#if 0 248#if 0
205 { VERSATILE_PCI_VIRT_MEM_BASE0, VERSATILE_PCI_MEM_BASE0, SZ_16M, MT_DEVICE }, 249 {
206 { VERSATILE_PCI_VIRT_MEM_BASE1, VERSATILE_PCI_MEM_BASE1, SZ_16M, MT_DEVICE }, 250 .virtual = VERSATILE_PCI_VIRT_MEM_BASE0,
207 { VERSATILE_PCI_VIRT_MEM_BASE2, VERSATILE_PCI_MEM_BASE2, SZ_16M, MT_DEVICE }, 251 .pfn = __phys_to_pfn(VERSATILE_PCI_MEM_BASE0),
252 .length = SZ_16M,
253 .type = MT_DEVICE
254 }, {
255 .virtual = VERSATILE_PCI_VIRT_MEM_BASE1,
256 .pfn = __phys_to_pfn(VERSATILE_PCI_MEM_BASE1),
257 .length = SZ_16M,
258 .type = MT_DEVICE
259 }, {
260 .virtual = VERSATILE_PCI_VIRT_MEM_BASE2,
261 .pfn = __phys_to_pfn(VERSATILE_PCI_MEM_BASE2),
262 .length = SZ_16M,
263 .type = MT_DEVICE
264 },
208#endif 265#endif
209#endif 266#endif
210}; 267};
diff --git a/arch/arm/mm/consistent.c b/arch/arm/mm/consistent.c
index 26356ce4da54..47b0b767f080 100644
--- a/arch/arm/mm/consistent.c
+++ b/arch/arm/mm/consistent.c
@@ -75,7 +75,7 @@ static struct vm_region consistent_head = {
75}; 75};
76 76
77static struct vm_region * 77static struct vm_region *
78vm_region_alloc(struct vm_region *head, size_t size, int gfp) 78vm_region_alloc(struct vm_region *head, size_t size, gfp_t gfp)
79{ 79{
80 unsigned long addr = head->vm_start, end = head->vm_end - size; 80 unsigned long addr = head->vm_start, end = head->vm_end - size;
81 unsigned long flags; 81 unsigned long flags;
@@ -133,7 +133,7 @@ static struct vm_region *vm_region_find(struct vm_region *head, unsigned long ad
133#endif 133#endif
134 134
135static void * 135static void *
136__dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, int gfp, 136__dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp,
137 pgprot_t prot) 137 pgprot_t prot)
138{ 138{
139 struct page *page; 139 struct page *page;
@@ -251,7 +251,7 @@ __dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, int gfp,
251 * virtual and bus address for that space. 251 * virtual and bus address for that space.
252 */ 252 */
253void * 253void *
254dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *handle, int gfp) 254dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp)
255{ 255{
256 return __dma_alloc(dev, size, handle, gfp, 256 return __dma_alloc(dev, size, handle, gfp,
257 pgprot_noncached(pgprot_kernel)); 257 pgprot_noncached(pgprot_kernel));
@@ -263,7 +263,7 @@ EXPORT_SYMBOL(dma_alloc_coherent);
263 * dma_alloc_coherent above. 263 * dma_alloc_coherent above.
264 */ 264 */
265void * 265void *
266dma_alloc_writecombine(struct device *dev, size_t size, dma_addr_t *handle, int gfp) 266dma_alloc_writecombine(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp)
267{ 267{
268 return __dma_alloc(dev, size, handle, gfp, 268 return __dma_alloc(dev, size, handle, gfp,
269 pgprot_writecombine(pgprot_kernel)); 269 pgprot_writecombine(pgprot_kernel));
@@ -397,8 +397,6 @@ static int __init consistent_init(void)
397 pte_t *pte; 397 pte_t *pte;
398 int ret = 0; 398 int ret = 0;
399 399
400 spin_lock(&init_mm.page_table_lock);
401
402 do { 400 do {
403 pgd = pgd_offset(&init_mm, CONSISTENT_BASE); 401 pgd = pgd_offset(&init_mm, CONSISTENT_BASE);
404 pmd = pmd_alloc(&init_mm, pgd, CONSISTENT_BASE); 402 pmd = pmd_alloc(&init_mm, pgd, CONSISTENT_BASE);
@@ -409,7 +407,7 @@ static int __init consistent_init(void)
409 } 407 }
410 WARN_ON(!pmd_none(*pmd)); 408 WARN_ON(!pmd_none(*pmd));
411 409
412 pte = pte_alloc_kernel(&init_mm, pmd, CONSISTENT_BASE); 410 pte = pte_alloc_kernel(pmd, CONSISTENT_BASE);
413 if (!pte) { 411 if (!pte) {
414 printk(KERN_ERR "%s: no pte tables\n", __func__); 412 printk(KERN_ERR "%s: no pte tables\n", __func__);
415 ret = -ENOMEM; 413 ret = -ENOMEM;
@@ -419,8 +417,6 @@ static int __init consistent_init(void)
419 consistent_pte = pte; 417 consistent_pte = pte;
420 } while (0); 418 } while (0);
421 419
422 spin_unlock(&init_mm.page_table_lock);
423
424 return ret; 420 return ret;
425} 421}
426 422
diff --git a/arch/arm/mm/copypage-v6.c b/arch/arm/mm/copypage-v6.c
index 27d041574ea7..269ce6913ee9 100644
--- a/arch/arm/mm/copypage-v6.c
+++ b/arch/arm/mm/copypage-v6.c
@@ -22,9 +22,7 @@
22#endif 22#endif
23 23
24#define from_address (0xffff8000) 24#define from_address (0xffff8000)
25#define from_pgprot PAGE_KERNEL
26#define to_address (0xffffc000) 25#define to_address (0xffffc000)
27#define to_pgprot PAGE_KERNEL
28 26
29#define TOP_PTE(x) pte_offset_kernel(top_pmd, x) 27#define TOP_PTE(x) pte_offset_kernel(top_pmd, x)
30 28
@@ -34,7 +32,7 @@ static DEFINE_SPINLOCK(v6_lock);
34 * Copy the user page. No aliasing to deal with so we can just 32 * Copy the user page. No aliasing to deal with so we can just
35 * attack the kernel's existing mapping of these pages. 33 * attack the kernel's existing mapping of these pages.
36 */ 34 */
37void v6_copy_user_page_nonaliasing(void *kto, const void *kfrom, unsigned long vaddr) 35static void v6_copy_user_page_nonaliasing(void *kto, const void *kfrom, unsigned long vaddr)
38{ 36{
39 copy_page(kto, kfrom); 37 copy_page(kto, kfrom);
40} 38}
@@ -43,7 +41,7 @@ void v6_copy_user_page_nonaliasing(void *kto, const void *kfrom, unsigned long v
43 * Clear the user page. No aliasing to deal with so we can just 41 * Clear the user page. No aliasing to deal with so we can just
44 * attack the kernel's existing mapping of this page. 42 * attack the kernel's existing mapping of this page.
45 */ 43 */
46void v6_clear_user_page_nonaliasing(void *kaddr, unsigned long vaddr) 44static void v6_clear_user_page_nonaliasing(void *kaddr, unsigned long vaddr)
47{ 45{
48 clear_page(kaddr); 46 clear_page(kaddr);
49} 47}
@@ -51,7 +49,7 @@ void v6_clear_user_page_nonaliasing(void *kaddr, unsigned long vaddr)
51/* 49/*
52 * Copy the page, taking account of the cache colour. 50 * Copy the page, taking account of the cache colour.
53 */ 51 */
54void v6_copy_user_page_aliasing(void *kto, const void *kfrom, unsigned long vaddr) 52static void v6_copy_user_page_aliasing(void *kto, const void *kfrom, unsigned long vaddr)
55{ 53{
56 unsigned int offset = CACHE_COLOUR(vaddr); 54 unsigned int offset = CACHE_COLOUR(vaddr);
57 unsigned long from, to; 55 unsigned long from, to;
@@ -72,8 +70,8 @@ void v6_copy_user_page_aliasing(void *kto, const void *kfrom, unsigned long vadd
72 */ 70 */
73 spin_lock(&v6_lock); 71 spin_lock(&v6_lock);
74 72
75 set_pte(TOP_PTE(from_address) + offset, pfn_pte(__pa(kfrom) >> PAGE_SHIFT, from_pgprot)); 73 set_pte(TOP_PTE(from_address) + offset, pfn_pte(__pa(kfrom) >> PAGE_SHIFT, PAGE_KERNEL));
76 set_pte(TOP_PTE(to_address) + offset, pfn_pte(__pa(kto) >> PAGE_SHIFT, to_pgprot)); 74 set_pte(TOP_PTE(to_address) + offset, pfn_pte(__pa(kto) >> PAGE_SHIFT, PAGE_KERNEL));
77 75
78 from = from_address + (offset << PAGE_SHIFT); 76 from = from_address + (offset << PAGE_SHIFT);
79 to = to_address + (offset << PAGE_SHIFT); 77 to = to_address + (offset << PAGE_SHIFT);
@@ -91,7 +89,7 @@ void v6_copy_user_page_aliasing(void *kto, const void *kfrom, unsigned long vadd
91 * so remap the kernel page into the same cache colour as the user 89 * so remap the kernel page into the same cache colour as the user
92 * page. 90 * page.
93 */ 91 */
94void v6_clear_user_page_aliasing(void *kaddr, unsigned long vaddr) 92static void v6_clear_user_page_aliasing(void *kaddr, unsigned long vaddr)
95{ 93{
96 unsigned int offset = CACHE_COLOUR(vaddr); 94 unsigned int offset = CACHE_COLOUR(vaddr);
97 unsigned long to = to_address + (offset << PAGE_SHIFT); 95 unsigned long to = to_address + (offset << PAGE_SHIFT);
@@ -112,7 +110,7 @@ void v6_clear_user_page_aliasing(void *kaddr, unsigned long vaddr)
112 */ 110 */
113 spin_lock(&v6_lock); 111 spin_lock(&v6_lock);
114 112
115 set_pte(TOP_PTE(to_address) + offset, pfn_pte(__pa(kaddr) >> PAGE_SHIFT, to_pgprot)); 113 set_pte(TOP_PTE(to_address) + offset, pfn_pte(__pa(kaddr) >> PAGE_SHIFT, PAGE_KERNEL));
116 flush_tlb_kernel_page(to); 114 flush_tlb_kernel_page(to);
117 clear_page((void *)to); 115 clear_page((void *)to);
118 116
diff --git a/arch/arm/mm/fault-armv.c b/arch/arm/mm/fault-armv.c
index be4ab3d73c91..7fc1b35a6746 100644
--- a/arch/arm/mm/fault-armv.c
+++ b/arch/arm/mm/fault-armv.c
@@ -26,6 +26,11 @@ static unsigned long shared_pte_mask = L_PTE_CACHEABLE;
26/* 26/*
27 * We take the easy way out of this problem - we make the 27 * We take the easy way out of this problem - we make the
28 * PTE uncacheable. However, we leave the write buffer on. 28 * PTE uncacheable. However, we leave the write buffer on.
29 *
30 * Note that the pte lock held when calling update_mmu_cache must also
31 * guard the pte (somewhere else in the same mm) that we modify here.
32 * Therefore those configurations which might call adjust_pte (those
33 * without CONFIG_CPU_CACHE_VIPT) cannot support split page_table_lock.
29 */ 34 */
30static int adjust_pte(struct vm_area_struct *vma, unsigned long address) 35static int adjust_pte(struct vm_area_struct *vma, unsigned long address)
31{ 36{
@@ -127,7 +132,7 @@ void __flush_dcache_page(struct address_space *mapping, struct page *page);
127 * 2. If we have multiple shared mappings of the same space in 132 * 2. If we have multiple shared mappings of the same space in
128 * an object, we need to deal with the cache aliasing issues. 133 * an object, we need to deal with the cache aliasing issues.
129 * 134 *
130 * Note that the page_table_lock will be held. 135 * Note that the pte lock will be held.
131 */ 136 */
132void update_mmu_cache(struct vm_area_struct *vma, unsigned long addr, pte_t pte) 137void update_mmu_cache(struct vm_area_struct *vma, unsigned long addr, pte_t pte)
133{ 138{
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
index edffa47a4b2a..fd079ff1fc53 100644
--- a/arch/arm/mm/init.c
+++ b/arch/arm/mm/init.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * linux/arch/arm/mm/init.c 2 * linux/arch/arm/mm/init.c
3 * 3 *
4 * Copyright (C) 1995-2002 Russell King 4 * Copyright (C) 1995-2005 Russell King
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as 7 * it under the terms of the GNU General Public License version 2 as
@@ -86,14 +86,19 @@ void show_mem(void)
86 printk("%d pages swap cached\n", cached); 86 printk("%d pages swap cached\n", cached);
87} 87}
88 88
89struct node_info { 89static inline pmd_t *pmd_off(pgd_t *pgd, unsigned long virt)
90 unsigned int start; 90{
91 unsigned int end; 91 return pmd_offset(pgd, virt);
92 int bootmap_pages; 92}
93}; 93
94static inline pmd_t *pmd_off_k(unsigned long virt)
95{
96 return pmd_off(pgd_offset_k(virt), virt);
97}
94 98
95#define O_PFN_DOWN(x) ((x) >> PAGE_SHIFT) 99#define for_each_nodebank(iter,mi,no) \
96#define O_PFN_UP(x) (PAGE_ALIGN(x) >> PAGE_SHIFT) 100 for (iter = 0; iter < mi->nr_banks; iter++) \
101 if (mi->bank[iter].node == no)
97 102
98/* 103/*
99 * FIXME: We really want to avoid allocating the bootmap bitmap 104 * FIXME: We really want to avoid allocating the bootmap bitmap
@@ -106,15 +111,12 @@ find_bootmap_pfn(int node, struct meminfo *mi, unsigned int bootmap_pages)
106{ 111{
107 unsigned int start_pfn, bank, bootmap_pfn; 112 unsigned int start_pfn, bank, bootmap_pfn;
108 113
109 start_pfn = O_PFN_UP(__pa(&_end)); 114 start_pfn = PAGE_ALIGN(__pa(&_end)) >> PAGE_SHIFT;
110 bootmap_pfn = 0; 115 bootmap_pfn = 0;
111 116
112 for (bank = 0; bank < mi->nr_banks; bank ++) { 117 for_each_nodebank(bank, mi, node) {
113 unsigned int start, end; 118 unsigned int start, end;
114 119
115 if (mi->bank[bank].node != node)
116 continue;
117
118 start = mi->bank[bank].start >> PAGE_SHIFT; 120 start = mi->bank[bank].start >> PAGE_SHIFT;
119 end = (mi->bank[bank].size + 121 end = (mi->bank[bank].size +
120 mi->bank[bank].start) >> PAGE_SHIFT; 122 mi->bank[bank].start) >> PAGE_SHIFT;
@@ -140,92 +142,6 @@ find_bootmap_pfn(int node, struct meminfo *mi, unsigned int bootmap_pages)
140 return bootmap_pfn; 142 return bootmap_pfn;
141} 143}
142 144
143/*
144 * Scan the memory info structure and pull out:
145 * - the end of memory
146 * - the number of nodes
147 * - the pfn range of each node
148 * - the number of bootmem bitmap pages
149 */
150static unsigned int __init
151find_memend_and_nodes(struct meminfo *mi, struct node_info *np)
152{
153 unsigned int i, bootmem_pages = 0, memend_pfn = 0;
154
155 for (i = 0; i < MAX_NUMNODES; i++) {
156 np[i].start = -1U;
157 np[i].end = 0;
158 np[i].bootmap_pages = 0;
159 }
160
161 for (i = 0; i < mi->nr_banks; i++) {
162 unsigned long start, end;
163 int node;
164
165 if (mi->bank[i].size == 0) {
166 /*
167 * Mark this bank with an invalid node number
168 */
169 mi->bank[i].node = -1;
170 continue;
171 }
172
173 node = mi->bank[i].node;
174
175 /*
176 * Make sure we haven't exceeded the maximum number of nodes
177 * that we have in this configuration. If we have, we're in
178 * trouble. (maybe we ought to limit, instead of bugging?)
179 */
180 if (node >= MAX_NUMNODES)
181 BUG();
182 node_set_online(node);
183
184 /*
185 * Get the start and end pfns for this bank
186 */
187 start = mi->bank[i].start >> PAGE_SHIFT;
188 end = (mi->bank[i].start + mi->bank[i].size) >> PAGE_SHIFT;
189
190 if (np[node].start > start)
191 np[node].start = start;
192
193 if (np[node].end < end)
194 np[node].end = end;
195
196 if (memend_pfn < end)
197 memend_pfn = end;
198 }
199
200 /*
201 * Calculate the number of pages we require to
202 * store the bootmem bitmaps.
203 */
204 for_each_online_node(i) {
205 if (np[i].end == 0)
206 continue;
207
208 np[i].bootmap_pages = bootmem_bootmap_pages(np[i].end -
209 np[i].start);
210 bootmem_pages += np[i].bootmap_pages;
211 }
212
213 high_memory = __va(memend_pfn << PAGE_SHIFT);
214
215 /*
216 * This doesn't seem to be used by the Linux memory
217 * manager any more. If we can get rid of it, we
218 * also get rid of some of the stuff above as well.
219 *
220 * Note: max_low_pfn and max_pfn reflect the number
221 * of _pages_ in the system, not the maximum PFN.
222 */
223 max_low_pfn = memend_pfn - O_PFN_DOWN(PHYS_OFFSET);
224 max_pfn = memend_pfn - O_PFN_DOWN(PHYS_OFFSET);
225
226 return bootmem_pages;
227}
228
229static int __init check_initrd(struct meminfo *mi) 145static int __init check_initrd(struct meminfo *mi)
230{ 146{
231 int initrd_node = -2; 147 int initrd_node = -2;
@@ -266,9 +182,8 @@ static int __init check_initrd(struct meminfo *mi)
266/* 182/*
267 * Reserve the various regions of node 0 183 * Reserve the various regions of node 0
268 */ 184 */
269static __init void reserve_node_zero(unsigned int bootmap_pfn, unsigned int bootmap_pages) 185static __init void reserve_node_zero(pg_data_t *pgdat)
270{ 186{
271 pg_data_t *pgdat = NODE_DATA(0);
272 unsigned long res_size = 0; 187 unsigned long res_size = 0;
273 188
274 /* 189 /*
@@ -289,13 +204,6 @@ static __init void reserve_node_zero(unsigned int bootmap_pfn, unsigned int boot
289 PTRS_PER_PGD * sizeof(pgd_t)); 204 PTRS_PER_PGD * sizeof(pgd_t));
290 205
291 /* 206 /*
292 * And don't forget to reserve the allocator bitmap,
293 * which will be freed later.
294 */
295 reserve_bootmem_node(pgdat, bootmap_pfn << PAGE_SHIFT,
296 bootmap_pages << PAGE_SHIFT);
297
298 /*
299 * Hmm... This should go elsewhere, but we really really need to 207 * Hmm... This should go elsewhere, but we really really need to
300 * stop things allocating the low memory; ideally we need a better 208 * stop things allocating the low memory; ideally we need a better
301 * implementation of GFP_DMA which does not assume that DMA-able 209 * implementation of GFP_DMA which does not assume that DMA-able
@@ -324,183 +232,284 @@ static __init void reserve_node_zero(unsigned int bootmap_pfn, unsigned int boot
324 reserve_bootmem_node(pgdat, PHYS_OFFSET, res_size); 232 reserve_bootmem_node(pgdat, PHYS_OFFSET, res_size);
325} 233}
326 234
327/* 235void __init build_mem_type_table(void);
328 * Register all available RAM in this node with the bootmem allocator. 236void __init create_mapping(struct map_desc *md);
329 */ 237
330static inline void free_bootmem_node_bank(int node, struct meminfo *mi) 238static unsigned long __init
239bootmem_init_node(int node, int initrd_node, struct meminfo *mi)
331{ 240{
332 pg_data_t *pgdat = NODE_DATA(node); 241 unsigned long zone_size[MAX_NR_ZONES], zhole_size[MAX_NR_ZONES];
333 int bank; 242 unsigned long start_pfn, end_pfn, boot_pfn;
243 unsigned int boot_pages;
244 pg_data_t *pgdat;
245 int i;
334 246
335 for (bank = 0; bank < mi->nr_banks; bank++) 247 start_pfn = -1UL;
336 if (mi->bank[bank].node == node) 248 end_pfn = 0;
337 free_bootmem_node(pgdat, mi->bank[bank].start,
338 mi->bank[bank].size);
339}
340 249
341/* 250 /*
342 * Initialise the bootmem allocator for all nodes. This is called 251 * Calculate the pfn range, and map the memory banks for this node.
343 * early during the architecture specific initialisation. 252 */
344 */ 253 for_each_nodebank(i, mi, node) {
345static void __init bootmem_init(struct meminfo *mi) 254 unsigned long start, end;
346{ 255 struct map_desc map;
347 struct node_info node_info[MAX_NUMNODES], *np = node_info;
348 unsigned int bootmap_pages, bootmap_pfn, map_pg;
349 int node, initrd_node;
350 256
351 bootmap_pages = find_memend_and_nodes(mi, np); 257 start = mi->bank[i].start >> PAGE_SHIFT;
352 bootmap_pfn = find_bootmap_pfn(0, mi, bootmap_pages); 258 end = (mi->bank[i].start + mi->bank[i].size) >> PAGE_SHIFT;
353 initrd_node = check_initrd(mi); 259
260 if (start_pfn > start)
261 start_pfn = start;
262 if (end_pfn < end)
263 end_pfn = end;
354 264
355 map_pg = bootmap_pfn; 265 map.pfn = __phys_to_pfn(mi->bank[i].start);
266 map.virtual = __phys_to_virt(mi->bank[i].start);
267 map.length = mi->bank[i].size;
268 map.type = MT_MEMORY;
269
270 create_mapping(&map);
271 }
356 272
357 /* 273 /*
358 * Initialise the bootmem nodes. 274 * If there is no memory in this node, ignore it.
359 *
360 * What we really want to do is:
361 *
362 * unmap_all_regions_except_kernel();
363 * for_each_node_in_reverse_order(node) {
364 * map_node(node);
365 * allocate_bootmem_map(node);
366 * init_bootmem_node(node);
367 * free_bootmem_node(node);
368 * }
369 *
370 * but this is a 2.5-type change. For now, we just set
371 * the nodes up in reverse order.
372 *
373 * (we could also do with rolling bootmem_init and paging_init
374 * into one generic "memory_init" type function).
375 */ 275 */
376 np += num_online_nodes() - 1; 276 if (end_pfn == 0)
377 for (node = num_online_nodes() - 1; node >= 0; node--, np--) { 277 return end_pfn;
378 /*
379 * If there are no pages in this node, ignore it.
380 * Note that node 0 must always have some pages.
381 */
382 if (np->end == 0 || !node_online(node)) {
383 if (node == 0)
384 BUG();
385 continue;
386 }
387 278
388 /* 279 /*
389 * Initialise the bootmem allocator. 280 * Allocate the bootmem bitmap page.
390 */ 281 */
391 init_bootmem_node(NODE_DATA(node), map_pg, np->start, np->end); 282 boot_pages = bootmem_bootmap_pages(end_pfn - start_pfn);
392 free_bootmem_node_bank(node, mi); 283 boot_pfn = find_bootmap_pfn(node, mi, boot_pages);
393 map_pg += np->bootmap_pages;
394 284
395 /* 285 /*
396 * If this is node 0, we need to reserve some areas ASAP - 286 * Initialise the bootmem allocator for this node, handing the
397 * we may use bootmem on node 0 to setup the other nodes. 287 * memory banks over to bootmem.
398 */ 288 */
399 if (node == 0) 289 node_set_online(node);
400 reserve_node_zero(bootmap_pfn, bootmap_pages); 290 pgdat = NODE_DATA(node);
401 } 291 init_bootmem_node(pgdat, boot_pfn, start_pfn, end_pfn);
292
293 for_each_nodebank(i, mi, node)
294 free_bootmem_node(pgdat, mi->bank[i].start, mi->bank[i].size);
402 295
296 /*
297 * Reserve the bootmem bitmap for this node.
298 */
299 reserve_bootmem_node(pgdat, boot_pfn << PAGE_SHIFT,
300 boot_pages << PAGE_SHIFT);
403 301
404#ifdef CONFIG_BLK_DEV_INITRD 302#ifdef CONFIG_BLK_DEV_INITRD
405 if (phys_initrd_size && initrd_node >= 0) { 303 /*
406 reserve_bootmem_node(NODE_DATA(initrd_node), phys_initrd_start, 304 * If the initrd is in this node, reserve its memory.
305 */
306 if (node == initrd_node) {
307 reserve_bootmem_node(pgdat, phys_initrd_start,
407 phys_initrd_size); 308 phys_initrd_size);
408 initrd_start = __phys_to_virt(phys_initrd_start); 309 initrd_start = __phys_to_virt(phys_initrd_start);
409 initrd_end = initrd_start + phys_initrd_size; 310 initrd_end = initrd_start + phys_initrd_size;
410 } 311 }
411#endif 312#endif
412 313
413 BUG_ON(map_pg != bootmap_pfn + bootmap_pages); 314 /*
315 * Finally, reserve any node zero regions.
316 */
317 if (node == 0)
318 reserve_node_zero(pgdat);
319
320 /*
321 * initialise the zones within this node.
322 */
323 memset(zone_size, 0, sizeof(zone_size));
324 memset(zhole_size, 0, sizeof(zhole_size));
325
326 /*
327 * The size of this node has already been determined. If we need
328 * to do anything fancy with the allocation of this memory to the
329 * zones, now is the time to do it.
330 */
331 zone_size[0] = end_pfn - start_pfn;
332
333 /*
334 * For each bank in this node, calculate the size of the holes.
335 * holes = node_size - sum(bank_sizes_in_node)
336 */
337 zhole_size[0] = zone_size[0];
338 for_each_nodebank(i, mi, node)
339 zhole_size[0] -= mi->bank[i].size >> PAGE_SHIFT;
340
341 /*
342 * Adjust the sizes according to any special requirements for
343 * this machine type.
344 */
345 arch_adjust_zones(node, zone_size, zhole_size);
346
347 free_area_init_node(node, pgdat, zone_size, start_pfn, zhole_size);
348
349 return end_pfn;
414} 350}
415 351
416/* 352static void __init bootmem_init(struct meminfo *mi)
417 * paging_init() sets up the page tables, initialises the zone memory
418 * maps, and sets up the zero page, bad page and bad page tables.
419 */
420void __init paging_init(struct meminfo *mi, struct machine_desc *mdesc)
421{ 353{
422 void *zero_page; 354 unsigned long addr, memend_pfn = 0;
423 int node; 355 int node, initrd_node, i;
424 356
425 bootmem_init(mi); 357 /*
358 * Invalidate the node number for empty or invalid memory banks
359 */
360 for (i = 0; i < mi->nr_banks; i++)
361 if (mi->bank[i].size == 0 || mi->bank[i].node >= MAX_NUMNODES)
362 mi->bank[i].node = -1;
426 363
427 memcpy(&meminfo, mi, sizeof(meminfo)); 364 memcpy(&meminfo, mi, sizeof(meminfo));
428 365
429 /* 366 /*
430 * allocate the zero page. Note that we count on this going ok. 367 * Clear out all the mappings below the kernel image.
431 */ 368 */
432 zero_page = alloc_bootmem_low_pages(PAGE_SIZE); 369 for (addr = 0; addr < MODULE_START; addr += PGDIR_SIZE)
370 pmd_clear(pmd_off_k(addr));
371#ifdef CONFIG_XIP_KERNEL
372 /* The XIP kernel is mapped in the module area -- skip over it */
373 addr = ((unsigned long)&_etext + PGDIR_SIZE - 1) & PGDIR_MASK;
374#endif
375 for ( ; addr < PAGE_OFFSET; addr += PGDIR_SIZE)
376 pmd_clear(pmd_off_k(addr));
433 377
434 /* 378 /*
435 * initialise the page tables. 379 * Clear out all the kernel space mappings, except for the first
380 * memory bank, up to the end of the vmalloc region.
436 */ 381 */
437 memtable_init(mi); 382 for (addr = __phys_to_virt(mi->bank[0].start + mi->bank[0].size);
438 if (mdesc->map_io) 383 addr < VMALLOC_END; addr += PGDIR_SIZE)
439 mdesc->map_io(); 384 pmd_clear(pmd_off_k(addr));
440 local_flush_tlb_all();
441 385
442 /* 386 /*
443 * initialise the zones within each node 387 * Locate which node contains the ramdisk image, if any.
444 */ 388 */
445 for_each_online_node(node) { 389 initrd_node = check_initrd(mi);
446 unsigned long zone_size[MAX_NR_ZONES];
447 unsigned long zhole_size[MAX_NR_ZONES];
448 struct bootmem_data *bdata;
449 pg_data_t *pgdat;
450 int i;
451 390
452 /* 391 /*
453 * Initialise the zone size information. 392 * Run through each node initialising the bootmem allocator.
454 */ 393 */
455 for (i = 0; i < MAX_NR_ZONES; i++) { 394 for_each_node(node) {
456 zone_size[i] = 0; 395 unsigned long end_pfn;
457 zhole_size[i] = 0;
458 }
459 396
460 pgdat = NODE_DATA(node); 397 end_pfn = bootmem_init_node(node, initrd_node, mi);
461 bdata = pgdat->bdata;
462 398
463 /* 399 /*
464 * The size of this node has already been determined. 400 * Remember the highest memory PFN.
465 * If we need to do anything fancy with the allocation
466 * of this memory to the zones, now is the time to do
467 * it.
468 */ 401 */
469 zone_size[0] = bdata->node_low_pfn - 402 if (end_pfn > memend_pfn)
470 (bdata->node_boot_start >> PAGE_SHIFT); 403 memend_pfn = end_pfn;
404 }
471 405
472 /* 406 high_memory = __va(memend_pfn << PAGE_SHIFT);
473 * If this zone has zero size, skip it.
474 */
475 if (!zone_size[0])
476 continue;
477 407
478 /* 408 /*
479 * For each bank in this node, calculate the size of the 409 * This doesn't seem to be used by the Linux memory manager any
480 * holes. holes = node_size - sum(bank_sizes_in_node) 410 * more, but is used by ll_rw_block. If we can get rid of it, we
481 */ 411 * also get rid of some of the stuff above as well.
482 zhole_size[0] = zone_size[0]; 412 *
483 for (i = 0; i < mi->nr_banks; i++) { 413 * Note: max_low_pfn and max_pfn reflect the number of _pages_ in
484 if (mi->bank[i].node != node) 414 * the system, not the maximum PFN.
485 continue; 415 */
416 max_pfn = max_low_pfn = memend_pfn - PHYS_PFN_OFFSET;
417}
486 418
487 zhole_size[0] -= mi->bank[i].size >> PAGE_SHIFT; 419/*
488 } 420 * Set up device the mappings. Since we clear out the page tables for all
421 * mappings above VMALLOC_END, we will remove any debug device mappings.
422 * This means you have to be careful how you debug this function, or any
423 * called function. (Do it by code inspection!)
424 */
425static void __init devicemaps_init(struct machine_desc *mdesc)
426{
427 struct map_desc map;
428 unsigned long addr;
429 void *vectors;
489 430
490 /* 431 for (addr = VMALLOC_END; addr; addr += PGDIR_SIZE)
491 * Adjust the sizes according to any special 432 pmd_clear(pmd_off_k(addr));
492 * requirements for this machine type.
493 */
494 arch_adjust_zones(node, zone_size, zhole_size);
495 433
496 free_area_init_node(node, pgdat, zone_size, 434 /*
497 bdata->node_boot_start >> PAGE_SHIFT, zhole_size); 435 * Map the kernel if it is XIP.
436 * It is always first in the modulearea.
437 */
438#ifdef CONFIG_XIP_KERNEL
439 map.pfn = __phys_to_pfn(CONFIG_XIP_PHYS_ADDR & PGDIR_MASK);
440 map.virtual = MODULE_START;
441 map.length = ((unsigned long)&_etext - map.virtual + ~PGDIR_MASK) & PGDIR_MASK;
442 map.type = MT_ROM;
443 create_mapping(&map);
444#endif
445
446 /*
447 * Map the cache flushing regions.
448 */
449#ifdef FLUSH_BASE
450 map.pfn = __phys_to_pfn(FLUSH_BASE_PHYS);
451 map.virtual = FLUSH_BASE;
452 map.length = PGDIR_SIZE;
453 map.type = MT_CACHECLEAN;
454 create_mapping(&map);
455#endif
456#ifdef FLUSH_BASE_MINICACHE
457 map.pfn = __phys_to_pfn(FLUSH_BASE_PHYS + PGDIR_SIZE);
458 map.virtual = FLUSH_BASE_MINICACHE;
459 map.length = PGDIR_SIZE;
460 map.type = MT_MINICLEAN;
461 create_mapping(&map);
462#endif
463
464 flush_cache_all();
465 local_flush_tlb_all();
466
467 vectors = alloc_bootmem_low_pages(PAGE_SIZE);
468 BUG_ON(!vectors);
469
470 /*
471 * Create a mapping for the machine vectors at the high-vectors
472 * location (0xffff0000). If we aren't using high-vectors, also
473 * create a mapping at the low-vectors virtual address.
474 */
475 map.pfn = __phys_to_pfn(virt_to_phys(vectors));
476 map.virtual = 0xffff0000;
477 map.length = PAGE_SIZE;
478 map.type = MT_HIGH_VECTORS;
479 create_mapping(&map);
480
481 if (!vectors_high()) {
482 map.virtual = 0;
483 map.type = MT_LOW_VECTORS;
484 create_mapping(&map);
498 } 485 }
499 486
500 /* 487 /*
501 * finish off the bad pages once 488 * Ask the machine support to map in the statically mapped devices.
502 * the mem_map is initialised 489 * After this point, we can start to touch devices again.
490 */
491 if (mdesc->map_io)
492 mdesc->map_io();
493}
494
495/*
496 * paging_init() sets up the page tables, initialises the zone memory
497 * maps, and sets up the zero page, bad page and bad page tables.
498 */
499void __init paging_init(struct meminfo *mi, struct machine_desc *mdesc)
500{
501 void *zero_page;
502
503 build_mem_type_table();
504 bootmem_init(mi);
505 devicemaps_init(mdesc);
506
507 top_pmd = pmd_off_k(0xffff0000);
508
509 /*
510 * allocate the zero page. Note that we count on this going ok.
503 */ 511 */
512 zero_page = alloc_bootmem_low_pages(PAGE_SIZE);
504 memzero(zero_page, PAGE_SIZE); 513 memzero(zero_page, PAGE_SIZE);
505 empty_zero_page = virt_to_page(zero_page); 514 empty_zero_page = virt_to_page(zero_page);
506 flush_dcache_page(empty_zero_page); 515 flush_dcache_page(empty_zero_page);
@@ -562,10 +571,7 @@ static void __init free_unused_memmap_node(int node, struct meminfo *mi)
562 * may not be the case, especially if the user has provided the 571 * may not be the case, especially if the user has provided the
563 * information on the command line. 572 * information on the command line.
564 */ 573 */
565 for (i = 0; i < mi->nr_banks; i++) { 574 for_each_nodebank(i, mi, node) {
566 if (mi->bank[i].size == 0 || mi->bank[i].node != node)
567 continue;
568
569 bank_start = mi->bank[i].start >> PAGE_SHIFT; 575 bank_start = mi->bank[i].start >> PAGE_SHIFT;
570 if (bank_start < prev_bank_end) { 576 if (bank_start < prev_bank_end) {
571 printk(KERN_ERR "MEM: unordered memory banks. " 577 printk(KERN_ERR "MEM: unordered memory banks. "
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
index 7110e54182b1..0f128c28fee4 100644
--- a/arch/arm/mm/ioremap.c
+++ b/arch/arm/mm/ioremap.c
@@ -26,6 +26,7 @@
26#include <linux/vmalloc.h> 26#include <linux/vmalloc.h>
27 27
28#include <asm/cacheflush.h> 28#include <asm/cacheflush.h>
29#include <asm/hardware.h>
29#include <asm/io.h> 30#include <asm/io.h>
30#include <asm/tlbflush.h> 31#include <asm/tlbflush.h>
31 32
@@ -74,7 +75,7 @@ remap_area_pmd(pmd_t * pmd, unsigned long address, unsigned long size,
74 75
75 pgprot = __pgprot(L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | L_PTE_WRITE | flags); 76 pgprot = __pgprot(L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | L_PTE_WRITE | flags);
76 do { 77 do {
77 pte_t * pte = pte_alloc_kernel(&init_mm, pmd, address); 78 pte_t * pte = pte_alloc_kernel(pmd, address);
78 if (!pte) 79 if (!pte)
79 return -ENOMEM; 80 return -ENOMEM;
80 remap_area_pte(pte, address, end - address, address + phys_addr, pgprot); 81 remap_area_pte(pte, address, end - address, address + phys_addr, pgprot);
@@ -96,7 +97,6 @@ remap_area_pages(unsigned long start, unsigned long phys_addr,
96 phys_addr -= address; 97 phys_addr -= address;
97 dir = pgd_offset(&init_mm, address); 98 dir = pgd_offset(&init_mm, address);
98 BUG_ON(address >= end); 99 BUG_ON(address >= end);
99 spin_lock(&init_mm.page_table_lock);
100 do { 100 do {
101 pmd_t *pmd = pmd_alloc(&init_mm, dir, address); 101 pmd_t *pmd = pmd_alloc(&init_mm, dir, address);
102 if (!pmd) { 102 if (!pmd) {
@@ -113,7 +113,6 @@ remap_area_pages(unsigned long start, unsigned long phys_addr,
113 dir++; 113 dir++;
114 } while (address && (address < end)); 114 } while (address && (address < end));
115 115
116 spin_unlock(&init_mm.page_table_lock);
117 flush_cache_vmap(start, end); 116 flush_cache_vmap(start, end);
118 return err; 117 return err;
119} 118}
diff --git a/arch/arm/mm/mm-armv.c b/arch/arm/mm/mm-armv.c
index d125a3dc061c..1221fdde1769 100644
--- a/arch/arm/mm/mm-armv.c
+++ b/arch/arm/mm/mm-armv.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * linux/arch/arm/mm/mm-armv.c 2 * linux/arch/arm/mm/mm-armv.c
3 * 3 *
4 * Copyright (C) 1998-2002 Russell King 4 * Copyright (C) 1998-2005 Russell King
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as 7 * it under the terms of the GNU General Public License version 2 as
@@ -180,11 +180,6 @@ pgd_t *get_pgd_slow(struct mm_struct *mm)
180 180
181 if (!vectors_high()) { 181 if (!vectors_high()) {
182 /* 182 /*
183 * This lock is here just to satisfy pmd_alloc and pte_lock
184 */
185 spin_lock(&mm->page_table_lock);
186
187 /*
188 * On ARM, first page must always be allocated since it 183 * On ARM, first page must always be allocated since it
189 * contains the machine vectors. 184 * contains the machine vectors.
190 */ 185 */
@@ -201,23 +196,14 @@ pgd_t *get_pgd_slow(struct mm_struct *mm)
201 set_pte(new_pte, *init_pte); 196 set_pte(new_pte, *init_pte);
202 pte_unmap_nested(init_pte); 197 pte_unmap_nested(init_pte);
203 pte_unmap(new_pte); 198 pte_unmap(new_pte);
204
205 spin_unlock(&mm->page_table_lock);
206 } 199 }
207 200
208 return new_pgd; 201 return new_pgd;
209 202
210no_pte: 203no_pte:
211 spin_unlock(&mm->page_table_lock);
212 pmd_free(new_pmd); 204 pmd_free(new_pmd);
213 free_pages((unsigned long)new_pgd, 2);
214 return NULL;
215
216no_pmd: 205no_pmd:
217 spin_unlock(&mm->page_table_lock);
218 free_pages((unsigned long)new_pgd, 2); 206 free_pages((unsigned long)new_pgd, 2);
219 return NULL;
220
221no_pgd: 207no_pgd:
222 return NULL; 208 return NULL;
223} 209}
@@ -243,6 +229,7 @@ void free_pgd_slow(pgd_t *pgd)
243 pte = pmd_page(*pmd); 229 pte = pmd_page(*pmd);
244 pmd_clear(pmd); 230 pmd_clear(pmd);
245 dec_page_state(nr_page_table_pages); 231 dec_page_state(nr_page_table_pages);
232 pte_lock_deinit(pte);
246 pte_free(pte); 233 pte_free(pte);
247 pmd_free(pmd); 234 pmd_free(pmd);
248free: 235free:
@@ -305,16 +292,6 @@ alloc_init_page(unsigned long virt, unsigned long phys, unsigned int prot_l1, pg
305 set_pte(ptep, pfn_pte(phys >> PAGE_SHIFT, prot)); 292 set_pte(ptep, pfn_pte(phys >> PAGE_SHIFT, prot));
306} 293}
307 294
308/*
309 * Clear any PGD mapping. On a two-level page table system,
310 * the clearance is done by the middle-level functions (pmd)
311 * rather than the top-level (pgd) functions.
312 */
313static inline void clear_mapping(unsigned long virt)
314{
315 pmd_clear(pmd_off_k(virt));
316}
317
318struct mem_types { 295struct mem_types {
319 unsigned int prot_pte; 296 unsigned int prot_pte;
320 unsigned int prot_l1; 297 unsigned int prot_l1;
@@ -373,7 +350,7 @@ static struct mem_types mem_types[] __initdata = {
373/* 350/*
374 * Adjust the PMD section entries according to the CPU in use. 351 * Adjust the PMD section entries according to the CPU in use.
375 */ 352 */
376static void __init build_mem_type_table(void) 353void __init build_mem_type_table(void)
377{ 354{
378 struct cachepolicy *cp; 355 struct cachepolicy *cp;
379 unsigned int cr = get_cr(); 356 unsigned int cr = get_cr();
@@ -483,25 +460,25 @@ static void __init build_mem_type_table(void)
483 * offsets, and we take full advantage of sections and 460 * offsets, and we take full advantage of sections and
484 * supersections. 461 * supersections.
485 */ 462 */
486static void __init create_mapping(struct map_desc *md) 463void __init create_mapping(struct map_desc *md)
487{ 464{
488 unsigned long virt, length; 465 unsigned long virt, length;
489 int prot_sect, prot_l1, domain; 466 int prot_sect, prot_l1, domain;
490 pgprot_t prot_pte; 467 pgprot_t prot_pte;
491 long off; 468 unsigned long off = (u32)__pfn_to_phys(md->pfn);
492 469
493 if (md->virtual != vectors_base() && md->virtual < TASK_SIZE) { 470 if (md->virtual != vectors_base() && md->virtual < TASK_SIZE) {
494 printk(KERN_WARNING "BUG: not creating mapping for " 471 printk(KERN_WARNING "BUG: not creating mapping for "
495 "0x%08lx at 0x%08lx in user region\n", 472 "0x%016llx at 0x%08lx in user region\n",
496 md->physical, md->virtual); 473 __pfn_to_phys((u64)md->pfn), md->virtual);
497 return; 474 return;
498 } 475 }
499 476
500 if ((md->type == MT_DEVICE || md->type == MT_ROM) && 477 if ((md->type == MT_DEVICE || md->type == MT_ROM) &&
501 md->virtual >= PAGE_OFFSET && md->virtual < VMALLOC_END) { 478 md->virtual >= PAGE_OFFSET && md->virtual < VMALLOC_END) {
502 printk(KERN_WARNING "BUG: mapping for 0x%08lx at 0x%08lx " 479 printk(KERN_WARNING "BUG: mapping for 0x%016llx at 0x%08lx "
503 "overlaps vmalloc space\n", 480 "overlaps vmalloc space\n",
504 md->physical, md->virtual); 481 __pfn_to_phys((u64)md->pfn), md->virtual);
505 } 482 }
506 483
507 domain = mem_types[md->type].domain; 484 domain = mem_types[md->type].domain;
@@ -509,15 +486,40 @@ static void __init create_mapping(struct map_desc *md)
509 prot_l1 = mem_types[md->type].prot_l1 | PMD_DOMAIN(domain); 486 prot_l1 = mem_types[md->type].prot_l1 | PMD_DOMAIN(domain);
510 prot_sect = mem_types[md->type].prot_sect | PMD_DOMAIN(domain); 487 prot_sect = mem_types[md->type].prot_sect | PMD_DOMAIN(domain);
511 488
489 /*
490 * Catch 36-bit addresses
491 */
492 if(md->pfn >= 0x100000) {
493 if(domain) {
494 printk(KERN_ERR "MM: invalid domain in supersection "
495 "mapping for 0x%016llx at 0x%08lx\n",
496 __pfn_to_phys((u64)md->pfn), md->virtual);
497 return;
498 }
499 if((md->virtual | md->length | __pfn_to_phys(md->pfn))
500 & ~SUPERSECTION_MASK) {
501 printk(KERN_ERR "MM: cannot create mapping for "
502 "0x%016llx at 0x%08lx invalid alignment\n",
503 __pfn_to_phys((u64)md->pfn), md->virtual);
504 return;
505 }
506
507 /*
508 * Shift bits [35:32] of address into bits [23:20] of PMD
509 * (See ARMv6 spec).
510 */
511 off |= (((md->pfn >> (32 - PAGE_SHIFT)) & 0xF) << 20);
512 }
513
512 virt = md->virtual; 514 virt = md->virtual;
513 off = md->physical - virt; 515 off -= virt;
514 length = md->length; 516 length = md->length;
515 517
516 if (mem_types[md->type].prot_l1 == 0 && 518 if (mem_types[md->type].prot_l1 == 0 &&
517 (virt & 0xfffff || (virt + off) & 0xfffff || (virt + length) & 0xfffff)) { 519 (virt & 0xfffff || (virt + off) & 0xfffff || (virt + length) & 0xfffff)) {
518 printk(KERN_WARNING "BUG: map for 0x%08lx at 0x%08lx can not " 520 printk(KERN_WARNING "BUG: map for 0x%08lx at 0x%08lx can not "
519 "be mapped using pages, ignoring.\n", 521 "be mapped using pages, ignoring.\n",
520 md->physical, md->virtual); 522 __pfn_to_phys(md->pfn), md->virtual);
521 return; 523 return;
522 } 524 }
523 525
@@ -535,13 +537,22 @@ static void __init create_mapping(struct map_desc *md)
535 * of the actual domain assignments in use. 537 * of the actual domain assignments in use.
536 */ 538 */
537 if (cpu_architecture() >= CPU_ARCH_ARMv6 && domain == 0) { 539 if (cpu_architecture() >= CPU_ARCH_ARMv6 && domain == 0) {
538 /* Align to supersection boundary */ 540 /*
539 while ((virt & ~SUPERSECTION_MASK || (virt + off) & 541 * Align to supersection boundary if !high pages.
540 ~SUPERSECTION_MASK) && length >= (PGDIR_SIZE / 2)) { 542 * High pages have already been checked for proper
541 alloc_init_section(virt, virt + off, prot_sect); 543 * alignment above and they will fail the SUPSERSECTION_MASK
542 544 * check because of the way the address is encoded into
543 virt += (PGDIR_SIZE / 2); 545 * offset.
544 length -= (PGDIR_SIZE / 2); 546 */
547 if (md->pfn <= 0x100000) {
548 while ((virt & ~SUPERSECTION_MASK ||
549 (virt + off) & ~SUPERSECTION_MASK) &&
550 length >= (PGDIR_SIZE / 2)) {
551 alloc_init_section(virt, virt + off, prot_sect);
552
553 virt += (PGDIR_SIZE / 2);
554 length -= (PGDIR_SIZE / 2);
555 }
545 } 556 }
546 557
547 while (length >= SUPERSECTION_SIZE) { 558 while (length >= SUPERSECTION_SIZE) {
@@ -601,100 +612,6 @@ void setup_mm_for_reboot(char mode)
601 } 612 }
602} 613}
603 614
604extern void _stext, _etext;
605
606/*
607 * Setup initial mappings. We use the page we allocated for zero page to hold
608 * the mappings, which will get overwritten by the vectors in traps_init().
609 * The mappings must be in virtual address order.
610 */
611void __init memtable_init(struct meminfo *mi)
612{
613 struct map_desc *init_maps, *p, *q;
614 unsigned long address = 0;
615 int i;
616
617 build_mem_type_table();
618
619 init_maps = p = alloc_bootmem_low_pages(PAGE_SIZE);
620
621#ifdef CONFIG_XIP_KERNEL
622 p->physical = CONFIG_XIP_PHYS_ADDR & PMD_MASK;
623 p->virtual = (unsigned long)&_stext & PMD_MASK;
624 p->length = ((unsigned long)&_etext - p->virtual + ~PMD_MASK) & PMD_MASK;
625 p->type = MT_ROM;
626 p ++;
627#endif
628
629 for (i = 0; i < mi->nr_banks; i++) {
630 if (mi->bank[i].size == 0)
631 continue;
632
633 p->physical = mi->bank[i].start;
634 p->virtual = __phys_to_virt(p->physical);
635 p->length = mi->bank[i].size;
636 p->type = MT_MEMORY;
637 p ++;
638 }
639
640#ifdef FLUSH_BASE
641 p->physical = FLUSH_BASE_PHYS;
642 p->virtual = FLUSH_BASE;
643 p->length = PGDIR_SIZE;
644 p->type = MT_CACHECLEAN;
645 p ++;
646#endif
647
648#ifdef FLUSH_BASE_MINICACHE
649 p->physical = FLUSH_BASE_PHYS + PGDIR_SIZE;
650 p->virtual = FLUSH_BASE_MINICACHE;
651 p->length = PGDIR_SIZE;
652 p->type = MT_MINICLEAN;
653 p ++;
654#endif
655
656 /*
657 * Go through the initial mappings, but clear out any
658 * pgdir entries that are not in the description.
659 */
660 q = init_maps;
661 do {
662 if (address < q->virtual || q == p) {
663 clear_mapping(address);
664 address += PGDIR_SIZE;
665 } else {
666 create_mapping(q);
667
668 address = q->virtual + q->length;
669 address = (address + PGDIR_SIZE - 1) & PGDIR_MASK;
670
671 q ++;
672 }
673 } while (address != 0);
674
675 /*
676 * Create a mapping for the machine vectors at the high-vectors
677 * location (0xffff0000). If we aren't using high-vectors, also
678 * create a mapping at the low-vectors virtual address.
679 */
680 init_maps->physical = virt_to_phys(init_maps);
681 init_maps->virtual = 0xffff0000;
682 init_maps->length = PAGE_SIZE;
683 init_maps->type = MT_HIGH_VECTORS;
684 create_mapping(init_maps);
685
686 if (!vectors_high()) {
687 init_maps->virtual = 0;
688 init_maps->type = MT_LOW_VECTORS;
689 create_mapping(init_maps);
690 }
691
692 flush_cache_all();
693 local_flush_tlb_all();
694
695 top_pmd = pmd_off_k(0xffff0000);
696}
697
698/* 615/*
699 * Create the architecture specific mappings 616 * Create the architecture specific mappings
700 */ 617 */
diff --git a/arch/arm/oprofile/Makefile b/arch/arm/oprofile/Makefile
index 8ffb523e6c77..6a94e54848fd 100644
--- a/arch/arm/oprofile/Makefile
+++ b/arch/arm/oprofile/Makefile
@@ -6,6 +6,6 @@ DRIVER_OBJS = $(addprefix ../../../drivers/oprofile/, \
6 oprofilefs.o oprofile_stats.o \ 6 oprofilefs.o oprofile_stats.o \
7 timer_int.o ) 7 timer_int.o )
8 8
9oprofile-y := $(DRIVER_OBJS) init.o backtrace.o 9oprofile-y := $(DRIVER_OBJS) common.o backtrace.o
10oprofile-$(CONFIG_CPU_XSCALE) += common.o op_model_xscale.o 10oprofile-$(CONFIG_CPU_XSCALE) += op_model_xscale.o
11 11
diff --git a/arch/arm/oprofile/backtrace.c b/arch/arm/oprofile/backtrace.c
index df35c452a8bf..7c22c12618cc 100644
--- a/arch/arm/oprofile/backtrace.c
+++ b/arch/arm/oprofile/backtrace.c
@@ -49,42 +49,22 @@ static struct frame_tail* kernel_backtrace(struct frame_tail *tail)
49 49
50static struct frame_tail* user_backtrace(struct frame_tail *tail) 50static struct frame_tail* user_backtrace(struct frame_tail *tail)
51{ 51{
52 struct frame_tail buftail; 52 struct frame_tail buftail[2];
53 53
54 /* hardware pte might not be valid due to dirty/accessed bit emulation 54 /* Also check accessibility of one struct frame_tail beyond */
55 * so we use copy_from_user and benefit from exception fixups */ 55 if (!access_ok(VERIFY_READ, tail, sizeof(buftail)))
56 if (copy_from_user(&buftail, tail, sizeof(struct frame_tail))) 56 return NULL;
57 if (__copy_from_user_inatomic(buftail, tail, sizeof(buftail)))
57 return NULL; 58 return NULL;
58 59
59 oprofile_add_trace(buftail.lr); 60 oprofile_add_trace(buftail[0].lr);
60 61
61 /* frame pointers should strictly progress back up the stack 62 /* frame pointers should strictly progress back up the stack
62 * (towards higher addresses) */ 63 * (towards higher addresses) */
63 if (tail >= buftail.fp) 64 if (tail >= buftail[0].fp)
64 return NULL; 65 return NULL;
65 66
66 return buftail.fp-1; 67 return buftail[0].fp-1;
67}
68
69/* Compare two addresses and see if they're on the same page */
70#define CMP_ADDR_EQUAL(x,y,offset) ((((unsigned long) x) >> PAGE_SHIFT) \
71 == ((((unsigned long) y) + offset) >> PAGE_SHIFT))
72
73/* check that the page(s) containing the frame tail are present */
74static int pages_present(struct frame_tail *tail)
75{
76 struct mm_struct * mm = current->mm;
77
78 if (!check_user_page_readable(mm, (unsigned long)tail))
79 return 0;
80
81 if (CMP_ADDR_EQUAL(tail, tail, 8))
82 return 1;
83
84 if (!check_user_page_readable(mm, ((unsigned long)tail) + 8))
85 return 0;
86
87 return 1;
88} 68}
89 69
90/* 70/*
@@ -118,7 +98,6 @@ static int valid_kernel_stack(struct frame_tail *tail, struct pt_regs *regs)
118void arm_backtrace(struct pt_regs * const regs, unsigned int depth) 98void arm_backtrace(struct pt_regs * const regs, unsigned int depth)
119{ 99{
120 struct frame_tail *tail; 100 struct frame_tail *tail;
121 unsigned long last_address = 0;
122 101
123 tail = ((struct frame_tail *) regs->ARM_fp) - 1; 102 tail = ((struct frame_tail *) regs->ARM_fp) - 1;
124 103
@@ -132,13 +111,6 @@ void arm_backtrace(struct pt_regs * const regs, unsigned int depth)
132 return; 111 return;
133 } 112 }
134 113
135 while (depth-- && tail && !((unsigned long) tail & 3)) { 114 while (depth-- && tail && !((unsigned long) tail & 3))
136 if ((!CMP_ADDR_EQUAL(last_address, tail, 0)
137 || !CMP_ADDR_EQUAL(last_address, tail, 8))
138 && !pages_present(tail))
139 return;
140 last_address = (unsigned long) tail;
141 tail = user_backtrace(tail); 115 tail = user_backtrace(tail);
142 }
143} 116}
144
diff --git a/arch/arm/oprofile/common.c b/arch/arm/oprofile/common.c
index e57dde882898..1415930ceee1 100644
--- a/arch/arm/oprofile/common.c
+++ b/arch/arm/oprofile/common.c
@@ -10,74 +10,23 @@
10#include <linux/init.h> 10#include <linux/init.h>
11#include <linux/oprofile.h> 11#include <linux/oprofile.h>
12#include <linux/errno.h> 12#include <linux/errno.h>
13#include <asm/semaphore.h>
14#include <linux/sysdev.h> 13#include <linux/sysdev.h>
14#include <asm/semaphore.h>
15 15
16#include "op_counter.h" 16#include "op_counter.h"
17#include "op_arm_model.h" 17#include "op_arm_model.h"
18 18
19static struct op_arm_model_spec *pmu_model; 19static struct op_arm_model_spec *op_arm_model;
20static int pmu_enabled; 20static int op_arm_enabled;
21static struct semaphore pmu_sem; 21static struct semaphore op_arm_sem;
22
23static int pmu_start(void);
24static int pmu_setup(void);
25static void pmu_stop(void);
26static int pmu_create_files(struct super_block *, struct dentry *);
27
28#ifdef CONFIG_PM
29static int pmu_suspend(struct sys_device *dev, pm_message_t state)
30{
31 if (pmu_enabled)
32 pmu_stop();
33 return 0;
34}
35
36static int pmu_resume(struct sys_device *dev)
37{
38 if (pmu_enabled)
39 pmu_start();
40 return 0;
41}
42
43static struct sysdev_class oprofile_sysclass = {
44 set_kset_name("oprofile"),
45 .resume = pmu_resume,
46 .suspend = pmu_suspend,
47};
48
49static struct sys_device device_oprofile = {
50 .id = 0,
51 .cls = &oprofile_sysclass,
52};
53
54static int __init init_driverfs(void)
55{
56 int ret;
57
58 if (!(ret = sysdev_class_register(&oprofile_sysclass)))
59 ret = sysdev_register(&device_oprofile);
60
61 return ret;
62}
63
64static void exit_driverfs(void)
65{
66 sysdev_unregister(&device_oprofile);
67 sysdev_class_unregister(&oprofile_sysclass);
68}
69#else
70#define init_driverfs() do { } while (0)
71#define exit_driverfs() do { } while (0)
72#endif /* CONFIG_PM */
73 22
74struct op_counter_config counter_config[OP_MAX_COUNTER]; 23struct op_counter_config counter_config[OP_MAX_COUNTER];
75 24
76static int pmu_create_files(struct super_block *sb, struct dentry *root) 25static int op_arm_create_files(struct super_block *sb, struct dentry *root)
77{ 26{
78 unsigned int i; 27 unsigned int i;
79 28
80 for (i = 0; i < pmu_model->num_counters; i++) { 29 for (i = 0; i < op_arm_model->num_counters; i++) {
81 struct dentry *dir; 30 struct dentry *dir;
82 char buf[2]; 31 char buf[2];
83 32
@@ -94,63 +43,123 @@ static int pmu_create_files(struct super_block *sb, struct dentry *root)
94 return 0; 43 return 0;
95} 44}
96 45
97static int pmu_setup(void) 46static int op_arm_setup(void)
98{ 47{
99 int ret; 48 int ret;
100 49
101 spin_lock(&oprofilefs_lock); 50 spin_lock(&oprofilefs_lock);
102 ret = pmu_model->setup_ctrs(); 51 ret = op_arm_model->setup_ctrs();
103 spin_unlock(&oprofilefs_lock); 52 spin_unlock(&oprofilefs_lock);
104 return ret; 53 return ret;
105} 54}
106 55
107static int pmu_start(void) 56static int op_arm_start(void)
108{ 57{
109 int ret = -EBUSY; 58 int ret = -EBUSY;
110 59
111 down(&pmu_sem); 60 down(&op_arm_sem);
112 if (!pmu_enabled) { 61 if (!op_arm_enabled) {
113 ret = pmu_model->start(); 62 ret = op_arm_model->start();
114 pmu_enabled = !ret; 63 op_arm_enabled = !ret;
115 } 64 }
116 up(&pmu_sem); 65 up(&op_arm_sem);
117 return ret; 66 return ret;
118} 67}
119 68
120static void pmu_stop(void) 69static void op_arm_stop(void)
70{
71 down(&op_arm_sem);
72 if (op_arm_enabled)
73 op_arm_model->stop();
74 op_arm_enabled = 0;
75 up(&op_arm_sem);
76}
77
78#ifdef CONFIG_PM
79static int op_arm_suspend(struct sys_device *dev, pm_message_t state)
121{ 80{
122 down(&pmu_sem); 81 down(&op_arm_sem);
123 if (pmu_enabled) 82 if (op_arm_enabled)
124 pmu_model->stop(); 83 op_arm_model->stop();
125 pmu_enabled = 0; 84 up(&op_arm_sem);
126 up(&pmu_sem); 85 return 0;
127} 86}
128 87
129int __init pmu_init(struct oprofile_operations *ops, struct op_arm_model_spec *spec) 88static int op_arm_resume(struct sys_device *dev)
130{ 89{
131 init_MUTEX(&pmu_sem); 90 down(&op_arm_sem);
91 if (op_arm_enabled && op_arm_model->start())
92 op_arm_enabled = 0;
93 up(&op_arm_sem);
94 return 0;
95}
96
97static struct sysdev_class oprofile_sysclass = {
98 set_kset_name("oprofile"),
99 .resume = op_arm_resume,
100 .suspend = op_arm_suspend,
101};
132 102
133 if (spec->init() < 0) 103static struct sys_device device_oprofile = {
134 return -ENODEV; 104 .id = 0,
105 .cls = &oprofile_sysclass,
106};
135 107
136 pmu_model = spec; 108static int __init init_driverfs(void)
137 init_driverfs(); 109{
138 ops->create_files = pmu_create_files; 110 int ret;
139 ops->setup = pmu_setup;
140 ops->shutdown = pmu_stop;
141 ops->start = pmu_start;
142 ops->stop = pmu_stop;
143 ops->cpu_type = pmu_model->name;
144 printk(KERN_INFO "oprofile: using %s PMU\n", spec->name);
145 111
146 return 0; 112 if (!(ret = sysdev_class_register(&oprofile_sysclass)))
113 ret = sysdev_register(&device_oprofile);
114
115 return ret;
116}
117
118static void exit_driverfs(void)
119{
120 sysdev_unregister(&device_oprofile);
121 sysdev_class_unregister(&oprofile_sysclass);
122}
123#else
124#define init_driverfs() do { } while (0)
125#define exit_driverfs() do { } while (0)
126#endif /* CONFIG_PM */
127
128int __init oprofile_arch_init(struct oprofile_operations *ops)
129{
130 struct op_arm_model_spec *spec = NULL;
131 int ret = -ENODEV;
132
133#ifdef CONFIG_CPU_XSCALE
134 spec = &op_xscale_spec;
135#endif
136
137 if (spec) {
138 init_MUTEX(&op_arm_sem);
139
140 if (spec->init() < 0)
141 return -ENODEV;
142
143 op_arm_model = spec;
144 init_driverfs();
145 ops->create_files = op_arm_create_files;
146 ops->setup = op_arm_setup;
147 ops->shutdown = op_arm_stop;
148 ops->start = op_arm_start;
149 ops->stop = op_arm_stop;
150 ops->cpu_type = op_arm_model->name;
151 ops->backtrace = arm_backtrace;
152 printk(KERN_INFO "oprofile: using %s\n", spec->name);
153 }
154
155 return ret;
147} 156}
148 157
149void pmu_exit(void) 158void oprofile_arch_exit(void)
150{ 159{
151 if (pmu_model) { 160 if (op_arm_model) {
152 exit_driverfs(); 161 exit_driverfs();
153 pmu_model = NULL; 162 op_arm_model = NULL;
154 } 163 }
155} 164}
156 165
diff --git a/arch/arm/oprofile/init.c b/arch/arm/oprofile/init.c
deleted file mode 100644
index d315a3a86c86..000000000000
--- a/arch/arm/oprofile/init.c
+++ /dev/null
@@ -1,33 +0,0 @@
1/**
2 * @file init.c
3 *
4 * @remark Copyright 2004 Oprofile Authors
5 * @remark Read the file COPYING
6 *
7 * @author Zwane Mwaikambo
8 */
9
10#include <linux/oprofile.h>
11#include <linux/init.h>
12#include <linux/errno.h>
13#include "op_arm_model.h"
14
15int __init oprofile_arch_init(struct oprofile_operations *ops)
16{
17 int ret = -ENODEV;
18
19#ifdef CONFIG_CPU_XSCALE
20 ret = pmu_init(ops, &op_xscale_spec);
21#endif
22
23 ops->backtrace = arm_backtrace;
24
25 return ret;
26}
27
28void oprofile_arch_exit(void)
29{
30#ifdef CONFIG_CPU_XSCALE
31 pmu_exit();
32#endif
33}
diff --git a/arch/arm/oprofile/op_arm_model.h b/arch/arm/oprofile/op_arm_model.h
index 2148d07484b7..38c6ad158547 100644
--- a/arch/arm/oprofile/op_arm_model.h
+++ b/arch/arm/oprofile/op_arm_model.h
@@ -26,6 +26,6 @@ extern struct op_arm_model_spec op_xscale_spec;
26 26
27extern void arm_backtrace(struct pt_regs * const regs, unsigned int depth); 27extern void arm_backtrace(struct pt_regs * const regs, unsigned int depth);
28 28
29extern int __init pmu_init(struct oprofile_operations *ops, struct op_arm_model_spec *spec); 29extern int __init op_arm_init(struct oprofile_operations *ops, struct op_arm_model_spec *spec);
30extern void pmu_exit(void); 30extern void op_arm_exit(void);
31#endif /* OP_ARM_MODEL_H */ 31#endif /* OP_ARM_MODEL_H */
diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c
index 52a58b2da288..a020fe16428f 100644
--- a/arch/arm/plat-omap/clock.c
+++ b/arch/arm/plat-omap/clock.c
@@ -13,6 +13,7 @@
13#include <linux/list.h> 13#include <linux/list.h>
14#include <linux/errno.h> 14#include <linux/errno.h>
15#include <linux/err.h> 15#include <linux/err.h>
16#include <linux/string.h>
16 17
17#include <asm/io.h> 18#include <asm/io.h>
18#include <asm/semaphore.h> 19#include <asm/semaphore.h>
diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c
index 7719a4062e3a..7ad69f14a3e7 100644
--- a/arch/arm/plat-omap/sram.c
+++ b/arch/arm/plat-omap/sram.c
@@ -59,7 +59,11 @@ void __init omap_detect_sram(void)
59} 59}
60 60
61static struct map_desc omap_sram_io_desc[] __initdata = { 61static struct map_desc omap_sram_io_desc[] __initdata = {
62 { OMAP1_SRAM_BASE, OMAP1_SRAM_START, 0, MT_DEVICE } 62 { /* .length gets filled in at runtime */
63 .virtual = OMAP1_SRAM_BASE,
64 .pfn = __phys_to_pfn(OMAP1_SRAM_START),
65 .type = MT_DEVICE
66 }
63}; 67};
64 68
65/* 69/*
diff --git a/arch/arm26/kernel/ptrace.c b/arch/arm26/kernel/ptrace.c
index 8a52124de0e1..cf7e977d18c8 100644
--- a/arch/arm26/kernel/ptrace.c
+++ b/arch/arm26/kernel/ptrace.c
@@ -665,7 +665,7 @@ static int do_ptrace(int request, struct task_struct *child, long addr, long dat
665 return ret; 665 return ret;
666} 666}
667 667
668asmlinkage int sys_ptrace(long request, long pid, long addr, long data) 668asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
669{ 669{
670 struct task_struct *child; 670 struct task_struct *child;
671 int ret; 671 int ret;
diff --git a/arch/arm26/kernel/time.c b/arch/arm26/kernel/time.c
index e66aedd02fad..335525339ad6 100644
--- a/arch/arm26/kernel/time.c
+++ b/arch/arm26/kernel/time.c
@@ -34,10 +34,6 @@
34#include <asm/irq.h> 34#include <asm/irq.h>
35#include <asm/ioc.h> 35#include <asm/ioc.h>
36 36
37u64 jiffies_64 = INITIAL_JIFFIES;
38
39EXPORT_SYMBOL(jiffies_64);
40
41extern unsigned long wall_jiffies; 37extern unsigned long wall_jiffies;
42 38
43/* this needs a better home */ 39/* this needs a better home */
diff --git a/arch/arm26/mm/memc.c b/arch/arm26/mm/memc.c
index 8e8a2bb2487d..34def6397c3c 100644
--- a/arch/arm26/mm/memc.c
+++ b/arch/arm26/mm/memc.c
@@ -79,12 +79,6 @@ pgd_t *get_pgd_slow(struct mm_struct *mm)
79 goto no_pgd; 79 goto no_pgd;
80 80
81 /* 81 /*
82 * This lock is here just to satisfy pmd_alloc and pte_lock
83 * FIXME: I bet we could avoid taking it pretty much altogether
84 */
85 spin_lock(&mm->page_table_lock);
86
87 /*
88 * On ARM, first page must always be allocated since it contains 82 * On ARM, first page must always be allocated since it contains
89 * the machine vectors. 83 * the machine vectors.
90 */ 84 */
@@ -92,7 +86,7 @@ pgd_t *get_pgd_slow(struct mm_struct *mm)
92 if (!new_pmd) 86 if (!new_pmd)
93 goto no_pmd; 87 goto no_pmd;
94 88
95 new_pte = pte_alloc_kernel(mm, new_pmd, 0); 89 new_pte = pte_alloc_map(mm, new_pmd, 0);
96 if (!new_pte) 90 if (!new_pte)
97 goto no_pte; 91 goto no_pte;
98 92
@@ -101,6 +95,7 @@ pgd_t *get_pgd_slow(struct mm_struct *mm)
101 init_pte = pte_offset(init_pmd, 0); 95 init_pte = pte_offset(init_pmd, 0);
102 96
103 set_pte(new_pte, *init_pte); 97 set_pte(new_pte, *init_pte);
98 pte_unmap(new_pte);
104 99
105 /* 100 /*
106 * the page table entries are zeroed 101 * the page table entries are zeroed
@@ -112,23 +107,14 @@ pgd_t *get_pgd_slow(struct mm_struct *mm)
112 memcpy(new_pgd + FIRST_KERNEL_PGD_NR, init_pgd + FIRST_KERNEL_PGD_NR, 107 memcpy(new_pgd + FIRST_KERNEL_PGD_NR, init_pgd + FIRST_KERNEL_PGD_NR,
113 (PTRS_PER_PGD - FIRST_KERNEL_PGD_NR) * sizeof(pgd_t)); 108 (PTRS_PER_PGD - FIRST_KERNEL_PGD_NR) * sizeof(pgd_t));
114 109
115 spin_unlock(&mm->page_table_lock);
116
117 /* update MEMC tables */ 110 /* update MEMC tables */
118 cpu_memc_update_all(new_pgd); 111 cpu_memc_update_all(new_pgd);
119 return new_pgd; 112 return new_pgd;
120 113
121no_pte: 114no_pte:
122 spin_unlock(&mm->page_table_lock);
123 pmd_free(new_pmd); 115 pmd_free(new_pmd);
124 free_pgd_slow(new_pgd);
125 return NULL;
126
127no_pmd: 116no_pmd:
128 spin_unlock(&mm->page_table_lock);
129 free_pgd_slow(new_pgd); 117 free_pgd_slow(new_pgd);
130 return NULL;
131
132no_pgd: 118no_pgd:
133 return NULL; 119 return NULL;
134} 120}
diff --git a/arch/cris/arch-v10/drivers/axisflashmap.c b/arch/cris/arch-v10/drivers/axisflashmap.c
index 11ab3836aac6..56b038c8d482 100644
--- a/arch/cris/arch-v10/drivers/axisflashmap.c
+++ b/arch/cris/arch-v10/drivers/axisflashmap.c
@@ -140,6 +140,7 @@
140#include <linux/kernel.h> 140#include <linux/kernel.h>
141#include <linux/config.h> 141#include <linux/config.h>
142#include <linux/init.h> 142#include <linux/init.h>
143#include <linux/slab.h>
143 144
144#include <linux/mtd/concat.h> 145#include <linux/mtd/concat.h>
145#include <linux/mtd/map.h> 146#include <linux/mtd/map.h>
diff --git a/arch/cris/arch-v32/drivers/axisflashmap.c b/arch/cris/arch-v32/drivers/axisflashmap.c
index 78ed52b1cdac..b679f983b90a 100644
--- a/arch/cris/arch-v32/drivers/axisflashmap.c
+++ b/arch/cris/arch-v32/drivers/axisflashmap.c
@@ -20,6 +20,7 @@
20#include <linux/kernel.h> 20#include <linux/kernel.h>
21#include <linux/config.h> 21#include <linux/config.h>
22#include <linux/init.h> 22#include <linux/init.h>
23#include <linux/slab.h>
23 24
24#include <linux/mtd/concat.h> 25#include <linux/mtd/concat.h>
25#include <linux/mtd/map.h> 26#include <linux/mtd/map.h>
diff --git a/arch/cris/arch-v32/mm/tlb.c b/arch/cris/arch-v32/mm/tlb.c
index 8233406798d3..b08a28bb58ab 100644
--- a/arch/cris/arch-v32/mm/tlb.c
+++ b/arch/cris/arch-v32/mm/tlb.c
@@ -175,6 +175,8 @@ init_new_context(struct task_struct *tsk, struct mm_struct *mm)
175 return 0; 175 return 0;
176} 176}
177 177
178static DEFINE_SPINLOCK(mmu_context_lock);
179
178/* Called in schedule() just before actually doing the switch_to. */ 180/* Called in schedule() just before actually doing the switch_to. */
179void 181void
180switch_mm(struct mm_struct *prev, struct mm_struct *next, 182switch_mm(struct mm_struct *prev, struct mm_struct *next,
@@ -183,10 +185,10 @@ switch_mm(struct mm_struct *prev, struct mm_struct *next,
183 int cpu = smp_processor_id(); 185 int cpu = smp_processor_id();
184 186
185 /* Make sure there is a MMU context. */ 187 /* Make sure there is a MMU context. */
186 spin_lock(&next->page_table_lock); 188 spin_lock(&mmu_context_lock);
187 get_mmu_context(next); 189 get_mmu_context(next);
188 cpu_set(cpu, next->cpu_vm_mask); 190 cpu_set(cpu, next->cpu_vm_mask);
189 spin_unlock(&next->page_table_lock); 191 spin_unlock(&mmu_context_lock);
190 192
191 /* 193 /*
192 * Remember the pgd for the fault handlers. Keep a seperate copy of it 194 * Remember the pgd for the fault handlers. Keep a seperate copy of it
diff --git a/arch/cris/kernel/time.c b/arch/cris/kernel/time.c
index a2d99b4aedcd..66ba8898db07 100644
--- a/arch/cris/kernel/time.c
+++ b/arch/cris/kernel/time.c
@@ -31,10 +31,7 @@
31#include <linux/timex.h> 31#include <linux/timex.h>
32#include <linux/init.h> 32#include <linux/init.h>
33#include <linux/profile.h> 33#include <linux/profile.h>
34 34#include <linux/sched.h> /* just for sched_clock() - funny that */
35u64 jiffies_64 = INITIAL_JIFFIES;
36
37EXPORT_SYMBOL(jiffies_64);
38 35
39int have_rtc; /* used to remember if we have an RTC or not */; 36int have_rtc; /* used to remember if we have an RTC or not */;
40 37
diff --git a/arch/cris/mm/ioremap.c b/arch/cris/mm/ioremap.c
index ebba11e270fa..a92ac9877582 100644
--- a/arch/cris/mm/ioremap.c
+++ b/arch/cris/mm/ioremap.c
@@ -52,7 +52,7 @@ static inline int remap_area_pmd(pmd_t * pmd, unsigned long address, unsigned lo
52 if (address >= end) 52 if (address >= end)
53 BUG(); 53 BUG();
54 do { 54 do {
55 pte_t * pte = pte_alloc_kernel(&init_mm, pmd, address); 55 pte_t * pte = pte_alloc_kernel(pmd, address);
56 if (!pte) 56 if (!pte)
57 return -ENOMEM; 57 return -ENOMEM;
58 remap_area_pte(pte, address, end - address, address + phys_addr, prot); 58 remap_area_pte(pte, address, end - address, address + phys_addr, prot);
@@ -74,7 +74,6 @@ static int remap_area_pages(unsigned long address, unsigned long phys_addr,
74 flush_cache_all(); 74 flush_cache_all();
75 if (address >= end) 75 if (address >= end)
76 BUG(); 76 BUG();
77 spin_lock(&init_mm.page_table_lock);
78 do { 77 do {
79 pud_t *pud; 78 pud_t *pud;
80 pmd_t *pmd; 79 pmd_t *pmd;
@@ -94,7 +93,6 @@ static int remap_area_pages(unsigned long address, unsigned long phys_addr,
94 address = (address + PGDIR_SIZE) & PGDIR_MASK; 93 address = (address + PGDIR_SIZE) & PGDIR_MASK;
95 dir++; 94 dir++;
96 } while (address && (address < end)); 95 } while (address && (address < end));
97 spin_unlock(&init_mm.page_table_lock);
98 flush_tlb_all(); 96 flush_tlb_all();
99 return error; 97 return error;
100} 98}
diff --git a/arch/frv/kernel/ptrace.c b/arch/frv/kernel/ptrace.c
index cbe03cba9f02..cb335a14a315 100644
--- a/arch/frv/kernel/ptrace.c
+++ b/arch/frv/kernel/ptrace.c
@@ -106,7 +106,7 @@ void ptrace_enable(struct task_struct *child)
106 child->thread.frame0->__status |= REG__STATUS_STEP; 106 child->thread.frame0->__status |= REG__STATUS_STEP;
107} 107}
108 108
109asmlinkage int sys_ptrace(long request, long pid, long addr, long data) 109asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
110{ 110{
111 struct task_struct *child; 111 struct task_struct *child;
112 unsigned long tmp; 112 unsigned long tmp;
diff --git a/arch/frv/kernel/time.c b/arch/frv/kernel/time.c
index 8d6558b00e44..2e9741227b73 100644
--- a/arch/frv/kernel/time.c
+++ b/arch/frv/kernel/time.c
@@ -34,9 +34,6 @@
34 34
35extern unsigned long wall_jiffies; 35extern unsigned long wall_jiffies;
36 36
37u64 jiffies_64 = INITIAL_JIFFIES;
38EXPORT_SYMBOL(jiffies_64);
39
40unsigned long __nongprelbss __clkin_clock_speed_HZ; 37unsigned long __nongprelbss __clkin_clock_speed_HZ;
41unsigned long __nongprelbss __ext_bus_clock_speed_HZ; 38unsigned long __nongprelbss __ext_bus_clock_speed_HZ;
42unsigned long __nongprelbss __res_bus_clock_speed_HZ; 39unsigned long __nongprelbss __res_bus_clock_speed_HZ;
@@ -221,6 +218,7 @@ int do_settimeofday(struct timespec *tv)
221 clock_was_set(); 218 clock_was_set();
222 return 0; 219 return 0;
223} 220}
221EXPORT_SYMBOL(do_settimeofday);
224 222
225/* 223/*
226 * Scheduler clock - returns current time in nanosec units. 224 * Scheduler clock - returns current time in nanosec units.
diff --git a/arch/frv/mb93090-mb00/pci-dma-nommu.c b/arch/frv/mb93090-mb00/pci-dma-nommu.c
index 819895cf0b9e..2082a9647f4f 100644
--- a/arch/frv/mb93090-mb00/pci-dma-nommu.c
+++ b/arch/frv/mb93090-mb00/pci-dma-nommu.c
@@ -33,7 +33,7 @@ struct dma_alloc_record {
33static DEFINE_SPINLOCK(dma_alloc_lock); 33static DEFINE_SPINLOCK(dma_alloc_lock);
34static LIST_HEAD(dma_alloc_list); 34static LIST_HEAD(dma_alloc_list);
35 35
36void *dma_alloc_coherent(struct device *hwdev, size_t size, dma_addr_t *dma_handle, int gfp) 36void *dma_alloc_coherent(struct device *hwdev, size_t size, dma_addr_t *dma_handle, gfp_t gfp)
37{ 37{
38 struct dma_alloc_record *new; 38 struct dma_alloc_record *new;
39 struct list_head *this = &dma_alloc_list; 39 struct list_head *this = &dma_alloc_list;
diff --git a/arch/frv/mb93090-mb00/pci-dma.c b/arch/frv/mb93090-mb00/pci-dma.c
index 27eb12066507..86fbdadc51b6 100644
--- a/arch/frv/mb93090-mb00/pci-dma.c
+++ b/arch/frv/mb93090-mb00/pci-dma.c
@@ -17,7 +17,7 @@
17#include <linux/highmem.h> 17#include <linux/highmem.h>
18#include <asm/io.h> 18#include <asm/io.h>
19 19
20void *dma_alloc_coherent(struct device *hwdev, size_t size, dma_addr_t *dma_handle, int gfp) 20void *dma_alloc_coherent(struct device *hwdev, size_t size, dma_addr_t *dma_handle, gfp_t gfp)
21{ 21{
22 void *ret; 22 void *ret;
23 23
diff --git a/arch/frv/mm/dma-alloc.c b/arch/frv/mm/dma-alloc.c
index 4b38d45435f6..342823aad758 100644
--- a/arch/frv/mm/dma-alloc.c
+++ b/arch/frv/mm/dma-alloc.c
@@ -55,21 +55,18 @@ static int map_page(unsigned long va, unsigned long pa, pgprot_t prot)
55 pte_t *pte; 55 pte_t *pte;
56 int err = -ENOMEM; 56 int err = -ENOMEM;
57 57
58 spin_lock(&init_mm.page_table_lock);
59
60 /* Use upper 10 bits of VA to index the first level map */ 58 /* Use upper 10 bits of VA to index the first level map */
61 pge = pgd_offset_k(va); 59 pge = pgd_offset_k(va);
62 pue = pud_offset(pge, va); 60 pue = pud_offset(pge, va);
63 pme = pmd_offset(pue, va); 61 pme = pmd_offset(pue, va);
64 62
65 /* Use middle 10 bits of VA to index the second-level map */ 63 /* Use middle 10 bits of VA to index the second-level map */
66 pte = pte_alloc_kernel(&init_mm, pme, va); 64 pte = pte_alloc_kernel(pme, va);
67 if (pte != 0) { 65 if (pte != 0) {
68 err = 0; 66 err = 0;
69 set_pte(pte, mk_pte_phys(pa & PAGE_MASK, prot)); 67 set_pte(pte, mk_pte_phys(pa & PAGE_MASK, prot));
70 } 68 }
71 69
72 spin_unlock(&init_mm.page_table_lock);
73 return err; 70 return err;
74} 71}
75 72
@@ -81,7 +78,7 @@ static int map_page(unsigned long va, unsigned long pa, pgprot_t prot)
81 * portions of the kernel with single large page TLB entries, and 78 * portions of the kernel with single large page TLB entries, and
82 * still get unique uncached pages for consistent DMA. 79 * still get unique uncached pages for consistent DMA.
83 */ 80 */
84void *consistent_alloc(int gfp, size_t size, dma_addr_t *dma_handle) 81void *consistent_alloc(gfp_t gfp, size_t size, dma_addr_t *dma_handle)
85{ 82{
86 struct vm_struct *area; 83 struct vm_struct *area;
87 unsigned long page, va, pa; 84 unsigned long page, va, pa;
diff --git a/arch/frv/mm/pgalloc.c b/arch/frv/mm/pgalloc.c
index 4eaec0f3525b..2c67dfe5a6b3 100644
--- a/arch/frv/mm/pgalloc.c
+++ b/arch/frv/mm/pgalloc.c
@@ -87,14 +87,14 @@ static inline void pgd_list_add(pgd_t *pgd)
87 if (pgd_list) 87 if (pgd_list)
88 pgd_list->private = (unsigned long) &page->index; 88 pgd_list->private = (unsigned long) &page->index;
89 pgd_list = page; 89 pgd_list = page;
90 page->private = (unsigned long) &pgd_list; 90 set_page_private(page, (unsigned long)&pgd_list);
91} 91}
92 92
93static inline void pgd_list_del(pgd_t *pgd) 93static inline void pgd_list_del(pgd_t *pgd)
94{ 94{
95 struct page *next, **pprev, *page = virt_to_page(pgd); 95 struct page *next, **pprev, *page = virt_to_page(pgd);
96 next = (struct page *) page->index; 96 next = (struct page *) page->index;
97 pprev = (struct page **) page->private; 97 pprev = (struct page **)page_private(page);
98 *pprev = next; 98 *pprev = next;
99 if (next) 99 if (next)
100 next->private = (unsigned long) pprev; 100 next->private = (unsigned long) pprev;
diff --git a/arch/h8300/kernel/ptrace.c b/arch/h8300/kernel/ptrace.c
index 05c15e869777..a569fe4aa284 100644
--- a/arch/h8300/kernel/ptrace.c
+++ b/arch/h8300/kernel/ptrace.c
@@ -57,7 +57,7 @@ void ptrace_disable(struct task_struct *child)
57 h8300_disable_trace(child); 57 h8300_disable_trace(child);
58} 58}
59 59
60asmlinkage int sys_ptrace(long request, long pid, long addr, long data) 60asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
61{ 61{
62 struct task_struct *child; 62 struct task_struct *child;
63 int ret; 63 int ret;
diff --git a/arch/h8300/kernel/time.c b/arch/h8300/kernel/time.c
index af8c5d2057dd..688a5100604c 100644
--- a/arch/h8300/kernel/time.c
+++ b/arch/h8300/kernel/time.c
@@ -32,10 +32,6 @@
32 32
33#define TICK_SIZE (tick_nsec / 1000) 33#define TICK_SIZE (tick_nsec / 1000)
34 34
35u64 jiffies_64;
36
37EXPORT_SYMBOL(jiffies_64);
38
39/* 35/*
40 * timer_interrupt() needs to keep up the real-time clock, 36 * timer_interrupt() needs to keep up the real-time clock,
41 * as well as call the "do_timer()" routine every clocktick 37 * as well as call the "do_timer()" routine every clocktick
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
index d2703cda61ea..5383e5e2d9b7 100644
--- a/arch/i386/Kconfig
+++ b/arch/i386/Kconfig
@@ -5,7 +5,7 @@
5 5
6mainmenu "Linux Kernel Configuration" 6mainmenu "Linux Kernel Configuration"
7 7
8config X86 8config X86_32
9 bool 9 bool
10 default y 10 default y
11 help 11 help
@@ -18,6 +18,10 @@ config SEMAPHORE_SLEEPERS
18 bool 18 bool
19 default y 19 default y
20 20
21config X86
22 bool
23 default y
24
21config MMU 25config MMU
22 bool 26 bool
23 default y 27 default y
@@ -151,304 +155,7 @@ config ES7000_CLUSTERED_APIC
151 default y 155 default y
152 depends on SMP && X86_ES7000 && MPENTIUMIII 156 depends on SMP && X86_ES7000 && MPENTIUMIII
153 157
154if !X86_ELAN 158source "arch/i386/Kconfig.cpu"
155
156choice
157 prompt "Processor family"
158 default M686
159
160config M386
161 bool "386"
162 ---help---
163 This is the processor type of your CPU. This information is used for
164 optimizing purposes. In order to compile a kernel that can run on
165 all x86 CPU types (albeit not optimally fast), you can specify
166 "386" here.
167
168 The kernel will not necessarily run on earlier architectures than
169 the one you have chosen, e.g. a Pentium optimized kernel will run on
170 a PPro, but not necessarily on a i486.
171
172 Here are the settings recommended for greatest speed:
173 - "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI
174 486DLC/DLC2, UMC 486SX-S and NexGen Nx586. Only "386" kernels
175 will run on a 386 class machine.
176 - "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or
177 SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S.
178 - "586" for generic Pentium CPUs lacking the TSC
179 (time stamp counter) register.
180 - "Pentium-Classic" for the Intel Pentium.
181 - "Pentium-MMX" for the Intel Pentium MMX.
182 - "Pentium-Pro" for the Intel Pentium Pro.
183 - "Pentium-II" for the Intel Pentium II or pre-Coppermine Celeron.
184 - "Pentium-III" for the Intel Pentium III or Coppermine Celeron.
185 - "Pentium-4" for the Intel Pentium 4 or P4-based Celeron.
186 - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D).
187 - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird).
188 - "Crusoe" for the Transmeta Crusoe series.
189 - "Efficeon" for the Transmeta Efficeon series.
190 - "Winchip-C6" for original IDT Winchip.
191 - "Winchip-2" for IDT Winchip 2.
192 - "Winchip-2A" for IDT Winchips with 3dNow! capabilities.
193 - "GeodeGX1" for Geode GX1 (Cyrix MediaGX).
194 - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3.
195 - "VIA C3-2 for VIA C3-2 "Nehemiah" (model 9 and above).
196
197 If you don't know what to do, choose "386".
198
199config M486
200 bool "486"
201 help
202 Select this for a 486 series processor, either Intel or one of the
203 compatible processors from AMD, Cyrix, IBM, or Intel. Includes DX,
204 DX2, and DX4 variants; also SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or
205 U5S.
206
207config M586
208 bool "586/K5/5x86/6x86/6x86MX"
209 help
210 Select this for an 586 or 686 series processor such as the AMD K5,
211 the Cyrix 5x86, 6x86 and 6x86MX. This choice does not
212 assume the RDTSC (Read Time Stamp Counter) instruction.
213
214config M586TSC
215 bool "Pentium-Classic"
216 help
217 Select this for a Pentium Classic processor with the RDTSC (Read
218 Time Stamp Counter) instruction for benchmarking.
219
220config M586MMX
221 bool "Pentium-MMX"
222 help
223 Select this for a Pentium with the MMX graphics/multimedia
224 extended instructions.
225
226config M686
227 bool "Pentium-Pro"
228 help
229 Select this for Intel Pentium Pro chips. This enables the use of
230 Pentium Pro extended instructions, and disables the init-time guard
231 against the f00f bug found in earlier Pentiums.
232
233config MPENTIUMII
234 bool "Pentium-II/Celeron(pre-Coppermine)"
235 help
236 Select this for Intel chips based on the Pentium-II and
237 pre-Coppermine Celeron core. This option enables an unaligned
238 copy optimization, compiles the kernel with optimization flags
239 tailored for the chip, and applies any applicable Pentium Pro
240 optimizations.
241
242config MPENTIUMIII
243 bool "Pentium-III/Celeron(Coppermine)/Pentium-III Xeon"
244 help
245 Select this for Intel chips based on the Pentium-III and
246 Celeron-Coppermine core. This option enables use of some
247 extended prefetch instructions in addition to the Pentium II
248 extensions.
249
250config MPENTIUMM
251 bool "Pentium M"
252 help
253 Select this for Intel Pentium M (not Pentium-4 M)
254 notebook chips.
255
256config MPENTIUM4
257 bool "Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon"
258 help
259 Select this for Intel Pentium 4 chips. This includes the
260 Pentium 4, P4-based Celeron and Xeon, and Pentium-4 M
261 (not Pentium M) chips. This option enables compile flags
262 optimized for the chip, uses the correct cache shift, and
263 applies any applicable Pentium III optimizations.
264
265config MK6
266 bool "K6/K6-II/K6-III"
267 help
268 Select this for an AMD K6-family processor. Enables use of
269 some extended instructions, and passes appropriate optimization
270 flags to GCC.
271
272config MK7
273 bool "Athlon/Duron/K7"
274 help
275 Select this for an AMD Athlon K7-family processor. Enables use of
276 some extended instructions, and passes appropriate optimization
277 flags to GCC.
278
279config MK8
280 bool "Opteron/Athlon64/Hammer/K8"
281 help
282 Select this for an AMD Opteron or Athlon64 Hammer-family processor. Enables
283 use of some extended instructions, and passes appropriate optimization
284 flags to GCC.
285
286config MCRUSOE
287 bool "Crusoe"
288 help
289 Select this for a Transmeta Crusoe processor. Treats the processor
290 like a 586 with TSC, and sets some GCC optimization flags (like a
291 Pentium Pro with no alignment requirements).
292
293config MEFFICEON
294 bool "Efficeon"
295 help
296 Select this for a Transmeta Efficeon processor.
297
298config MWINCHIPC6
299 bool "Winchip-C6"
300 help
301 Select this for an IDT Winchip C6 chip. Linux and GCC
302 treat this chip as a 586TSC with some extended instructions
303 and alignment requirements.
304
305config MWINCHIP2
306 bool "Winchip-2"
307 help
308 Select this for an IDT Winchip-2. Linux and GCC
309 treat this chip as a 586TSC with some extended instructions
310 and alignment requirements.
311
312config MWINCHIP3D
313 bool "Winchip-2A/Winchip-3"
314 help
315 Select this for an IDT Winchip-2A or 3. Linux and GCC
316 treat this chip as a 586TSC with some extended instructions
317 and alignment reqirements. Also enable out of order memory
318 stores for this CPU, which can increase performance of some
319 operations.
320
321config MGEODEGX1
322 bool "GeodeGX1"
323 help
324 Select this for a Geode GX1 (Cyrix MediaGX) chip.
325
326config MCYRIXIII
327 bool "CyrixIII/VIA-C3"
328 help
329 Select this for a Cyrix III or C3 chip. Presently Linux and GCC
330 treat this chip as a generic 586. Whilst the CPU is 686 class,
331 it lacks the cmov extension which gcc assumes is present when
332 generating 686 code.
333 Note that Nehemiah (Model 9) and above will not boot with this
334 kernel due to them lacking the 3DNow! instructions used in earlier
335 incarnations of the CPU.
336
337config MVIAC3_2
338 bool "VIA C3-2 (Nehemiah)"
339 help
340 Select this for a VIA C3 "Nehemiah". Selecting this enables usage
341 of SSE and tells gcc to treat the CPU as a 686.
342 Note, this kernel will not boot on older (pre model 9) C3s.
343
344endchoice
345
346config X86_GENERIC
347 bool "Generic x86 support"
348 help
349 Instead of just including optimizations for the selected
350 x86 variant (e.g. PII, Crusoe or Athlon), include some more
351 generic optimizations as well. This will make the kernel
352 perform better on x86 CPUs other than that selected.
353
354 This is really intended for distributors who need more
355 generic optimizations.
356
357endif
358
359#
360# Define implied options from the CPU selection here
361#
362config X86_CMPXCHG
363 bool
364 depends on !M386
365 default y
366
367config X86_XADD
368 bool
369 depends on !M386
370 default y
371
372config X86_L1_CACHE_SHIFT
373 int
374 default "7" if MPENTIUM4 || X86_GENERIC
375 default "4" if X86_ELAN || M486 || M386
376 default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODEGX1
377 default "6" if MK7 || MK8 || MPENTIUMM
378
379config RWSEM_GENERIC_SPINLOCK
380 bool
381 depends on M386
382 default y
383
384config RWSEM_XCHGADD_ALGORITHM
385 bool
386 depends on !M386
387 default y
388
389config GENERIC_CALIBRATE_DELAY
390 bool
391 default y
392
393config X86_PPRO_FENCE
394 bool
395 depends on M686 || M586MMX || M586TSC || M586 || M486 || M386 || MGEODEGX1
396 default y
397
398config X86_F00F_BUG
399 bool
400 depends on M586MMX || M586TSC || M586 || M486 || M386
401 default y
402
403config X86_WP_WORKS_OK
404 bool
405 depends on !M386
406 default y
407
408config X86_INVLPG
409 bool
410 depends on !M386
411 default y
412
413config X86_BSWAP
414 bool
415 depends on !M386
416 default y
417
418config X86_POPAD_OK
419 bool
420 depends on !M386
421 default y
422
423config X86_ALIGNMENT_16
424 bool
425 depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || X86_ELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2 || MGEODEGX1
426 default y
427
428config X86_GOOD_APIC
429 bool
430 depends on MK7 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || MK8 || MEFFICEON
431 default y
432
433config X86_INTEL_USERCOPY
434 bool
435 depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 || MEFFICEON
436 default y
437
438config X86_USE_PPRO_CHECKSUM
439 bool
440 depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MEFFICEON
441 default y
442
443config X86_USE_3DNOW
444 bool
445 depends on MCYRIXIII || MK7
446 default y
447
448config X86_OOSTORE
449 bool
450 depends on (MWINCHIP3D || MWINCHIP2 || MWINCHIPC6) && MTRR
451 default y
452 159
453config HPET_TIMER 160config HPET_TIMER
454 bool "HPET Timer Support" 161 bool "HPET Timer Support"
@@ -561,11 +268,6 @@ config X86_VISWS_APIC
561 depends on X86_VISWS 268 depends on X86_VISWS
562 default y 269 default y
563 270
564config X86_TSC
565 bool
566 depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MGEODEGX1) && !X86_NUMAQ
567 default y
568
569config X86_MCE 271config X86_MCE
570 bool "Machine Check Exception" 272 bool "Machine Check Exception"
571 depends on !X86_VOYAGER 273 depends on !X86_VOYAGER
diff --git a/arch/i386/Kconfig.cpu b/arch/i386/Kconfig.cpu
new file mode 100644
index 000000000000..53bbb3c008ee
--- /dev/null
+++ b/arch/i386/Kconfig.cpu
@@ -0,0 +1,309 @@
1# Put here option for CPU selection and depending optimization
2if !X86_ELAN
3
4choice
5 prompt "Processor family"
6 default M686
7
8config M386
9 bool "386"
10 ---help---
11 This is the processor type of your CPU. This information is used for
12 optimizing purposes. In order to compile a kernel that can run on
13 all x86 CPU types (albeit not optimally fast), you can specify
14 "386" here.
15
16 The kernel will not necessarily run on earlier architectures than
17 the one you have chosen, e.g. a Pentium optimized kernel will run on
18 a PPro, but not necessarily on a i486.
19
20 Here are the settings recommended for greatest speed:
21 - "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI
22 486DLC/DLC2, UMC 486SX-S and NexGen Nx586. Only "386" kernels
23 will run on a 386 class machine.
24 - "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or
25 SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S.
26 - "586" for generic Pentium CPUs lacking the TSC
27 (time stamp counter) register.
28 - "Pentium-Classic" for the Intel Pentium.
29 - "Pentium-MMX" for the Intel Pentium MMX.
30 - "Pentium-Pro" for the Intel Pentium Pro.
31 - "Pentium-II" for the Intel Pentium II or pre-Coppermine Celeron.
32 - "Pentium-III" for the Intel Pentium III or Coppermine Celeron.
33 - "Pentium-4" for the Intel Pentium 4 or P4-based Celeron.
34 - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D).
35 - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird).
36 - "Crusoe" for the Transmeta Crusoe series.
37 - "Efficeon" for the Transmeta Efficeon series.
38 - "Winchip-C6" for original IDT Winchip.
39 - "Winchip-2" for IDT Winchip 2.
40 - "Winchip-2A" for IDT Winchips with 3dNow! capabilities.
41 - "GeodeGX1" for Geode GX1 (Cyrix MediaGX).
42 - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3.
43 - "VIA C3-2 for VIA C3-2 "Nehemiah" (model 9 and above).
44
45 If you don't know what to do, choose "386".
46
47config M486
48 bool "486"
49 help
50 Select this for a 486 series processor, either Intel or one of the
51 compatible processors from AMD, Cyrix, IBM, or Intel. Includes DX,
52 DX2, and DX4 variants; also SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or
53 U5S.
54
55config M586
56 bool "586/K5/5x86/6x86/6x86MX"
57 help
58 Select this for an 586 or 686 series processor such as the AMD K5,
59 the Cyrix 5x86, 6x86 and 6x86MX. This choice does not
60 assume the RDTSC (Read Time Stamp Counter) instruction.
61
62config M586TSC
63 bool "Pentium-Classic"
64 help
65 Select this for a Pentium Classic processor with the RDTSC (Read
66 Time Stamp Counter) instruction for benchmarking.
67
68config M586MMX
69 bool "Pentium-MMX"
70 help
71 Select this for a Pentium with the MMX graphics/multimedia
72 extended instructions.
73
74config M686
75 bool "Pentium-Pro"
76 help
77 Select this for Intel Pentium Pro chips. This enables the use of
78 Pentium Pro extended instructions, and disables the init-time guard
79 against the f00f bug found in earlier Pentiums.
80
81config MPENTIUMII
82 bool "Pentium-II/Celeron(pre-Coppermine)"
83 help
84 Select this for Intel chips based on the Pentium-II and
85 pre-Coppermine Celeron core. This option enables an unaligned
86 copy optimization, compiles the kernel with optimization flags
87 tailored for the chip, and applies any applicable Pentium Pro
88 optimizations.
89
90config MPENTIUMIII
91 bool "Pentium-III/Celeron(Coppermine)/Pentium-III Xeon"
92 help
93 Select this for Intel chips based on the Pentium-III and
94 Celeron-Coppermine core. This option enables use of some
95 extended prefetch instructions in addition to the Pentium II
96 extensions.
97
98config MPENTIUMM
99 bool "Pentium M"
100 help
101 Select this for Intel Pentium M (not Pentium-4 M)
102 notebook chips.
103
104config MPENTIUM4
105 bool "Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon"
106 help
107 Select this for Intel Pentium 4 chips. This includes the
108 Pentium 4, P4-based Celeron and Xeon, and Pentium-4 M
109 (not Pentium M) chips. This option enables compile flags
110 optimized for the chip, uses the correct cache shift, and
111 applies any applicable Pentium III optimizations.
112
113config MK6
114 bool "K6/K6-II/K6-III"
115 help
116 Select this for an AMD K6-family processor. Enables use of
117 some extended instructions, and passes appropriate optimization
118 flags to GCC.
119
120config MK7
121 bool "Athlon/Duron/K7"
122 help
123 Select this for an AMD Athlon K7-family processor. Enables use of
124 some extended instructions, and passes appropriate optimization
125 flags to GCC.
126
127config MK8
128 bool "Opteron/Athlon64/Hammer/K8"
129 help
130 Select this for an AMD Opteron or Athlon64 Hammer-family processor. Enables
131 use of some extended instructions, and passes appropriate optimization
132 flags to GCC.
133
134config MCRUSOE
135 bool "Crusoe"
136 help
137 Select this for a Transmeta Crusoe processor. Treats the processor
138 like a 586 with TSC, and sets some GCC optimization flags (like a
139 Pentium Pro with no alignment requirements).
140
141config MEFFICEON
142 bool "Efficeon"
143 help
144 Select this for a Transmeta Efficeon processor.
145
146config MWINCHIPC6
147 bool "Winchip-C6"
148 help
149 Select this for an IDT Winchip C6 chip. Linux and GCC
150 treat this chip as a 586TSC with some extended instructions
151 and alignment requirements.
152
153config MWINCHIP2
154 bool "Winchip-2"
155 help
156 Select this for an IDT Winchip-2. Linux and GCC
157 treat this chip as a 586TSC with some extended instructions
158 and alignment requirements.
159
160config MWINCHIP3D
161 bool "Winchip-2A/Winchip-3"
162 help
163 Select this for an IDT Winchip-2A or 3. Linux and GCC
164 treat this chip as a 586TSC with some extended instructions
165 and alignment reqirements. Also enable out of order memory
166 stores for this CPU, which can increase performance of some
167 operations.
168
169config MGEODEGX1
170 bool "GeodeGX1"
171 help
172 Select this for a Geode GX1 (Cyrix MediaGX) chip.
173
174config MCYRIXIII
175 bool "CyrixIII/VIA-C3"
176 help
177 Select this for a Cyrix III or C3 chip. Presently Linux and GCC
178 treat this chip as a generic 586. Whilst the CPU is 686 class,
179 it lacks the cmov extension which gcc assumes is present when
180 generating 686 code.
181 Note that Nehemiah (Model 9) and above will not boot with this
182 kernel due to them lacking the 3DNow! instructions used in earlier
183 incarnations of the CPU.
184
185config MVIAC3_2
186 bool "VIA C3-2 (Nehemiah)"
187 help
188 Select this for a VIA C3 "Nehemiah". Selecting this enables usage
189 of SSE and tells gcc to treat the CPU as a 686.
190 Note, this kernel will not boot on older (pre model 9) C3s.
191
192endchoice
193
194config X86_GENERIC
195 bool "Generic x86 support"
196 help
197 Instead of just including optimizations for the selected
198 x86 variant (e.g. PII, Crusoe or Athlon), include some more
199 generic optimizations as well. This will make the kernel
200 perform better on x86 CPUs other than that selected.
201
202 This is really intended for distributors who need more
203 generic optimizations.
204
205endif
206
207#
208# Define implied options from the CPU selection here
209#
210config X86_CMPXCHG
211 bool
212 depends on !M386
213 default y
214
215config X86_XADD
216 bool
217 depends on !M386
218 default y
219
220config X86_L1_CACHE_SHIFT
221 int
222 default "7" if MPENTIUM4 || X86_GENERIC
223 default "4" if X86_ELAN || M486 || M386
224 default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODEGX1
225 default "6" if MK7 || MK8 || MPENTIUMM
226
227config RWSEM_GENERIC_SPINLOCK
228 bool
229 depends on M386
230 default y
231
232config RWSEM_XCHGADD_ALGORITHM
233 bool
234 depends on !M386
235 default y
236
237config GENERIC_CALIBRATE_DELAY
238 bool
239 default y
240
241config X86_PPRO_FENCE
242 bool
243 depends on M686 || M586MMX || M586TSC || M586 || M486 || M386 || MGEODEGX1
244 default y
245
246config X86_F00F_BUG
247 bool
248 depends on M586MMX || M586TSC || M586 || M486 || M386
249 default y
250
251config X86_WP_WORKS_OK
252 bool
253 depends on !M386
254 default y
255
256config X86_INVLPG
257 bool
258 depends on !M386
259 default y
260
261config X86_BSWAP
262 bool
263 depends on !M386
264 default y
265
266config X86_POPAD_OK
267 bool
268 depends on !M386
269 default y
270
271config X86_CMPXCHG64
272 bool
273 depends on !M386 && !M486
274 default y
275
276config X86_ALIGNMENT_16
277 bool
278 depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || X86_ELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2 || MGEODEGX1
279 default y
280
281config X86_GOOD_APIC
282 bool
283 depends on MK7 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || MK8 || MEFFICEON
284 default y
285
286config X86_INTEL_USERCOPY
287 bool
288 depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 || MEFFICEON
289 default y
290
291config X86_USE_PPRO_CHECKSUM
292 bool
293 depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MEFFICEON
294 default y
295
296config X86_USE_3DNOW
297 bool
298 depends on MCYRIXIII || MK7
299 default y
300
301config X86_OOSTORE
302 bool
303 depends on (MWINCHIP3D || MWINCHIP2 || MWINCHIPC6) && MTRR
304 default y
305
306config X86_TSC
307 bool
308 depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MGEODEGX1) && !X86_NUMAQ
309 default y
diff --git a/arch/i386/Makefile b/arch/i386/Makefile
index 09951990a622..d121ea18460f 100644
--- a/arch/i386/Makefile
+++ b/arch/i386/Makefile
@@ -34,35 +34,8 @@ CFLAGS += -pipe -msoft-float
34# prevent gcc from keeping the stack 16 byte aligned 34# prevent gcc from keeping the stack 16 byte aligned
35CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2) 35CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2)
36 36
37align := $(cc-option-align) 37# CPU-specific tuning. Anything which can be shared with UML should go here.
38cflags-$(CONFIG_M386) += -march=i386 38include $(srctree)/arch/i386/Makefile.cpu
39cflags-$(CONFIG_M486) += -march=i486
40cflags-$(CONFIG_M586) += -march=i586
41cflags-$(CONFIG_M586TSC) += -march=i586
42cflags-$(CONFIG_M586MMX) += $(call cc-option,-march=pentium-mmx,-march=i586)
43cflags-$(CONFIG_M686) += -march=i686
44cflags-$(CONFIG_MPENTIUMII) += -march=i686 $(call cc-option,-mtune=pentium2)
45cflags-$(CONFIG_MPENTIUMIII) += -march=i686 $(call cc-option,-mtune=pentium3)
46cflags-$(CONFIG_MPENTIUMM) += -march=i686 $(call cc-option,-mtune=pentium3)
47cflags-$(CONFIG_MPENTIUM4) += -march=i686 $(call cc-option,-mtune=pentium4)
48cflags-$(CONFIG_MK6) += -march=k6
49# Please note, that patches that add -march=athlon-xp and friends are pointless.
50# They make zero difference whatsosever to performance at this time.
51cflags-$(CONFIG_MK7) += $(call cc-option,-march=athlon,-march=i686 $(align)-functions=4)
52cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8,$(call cc-option,-march=athlon,-march=i686 $(align)-functions=4))
53cflags-$(CONFIG_MCRUSOE) += -march=i686 $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0
54cflags-$(CONFIG_MEFFICEON) += -march=i686 $(call cc-option,-mtune=pentium3) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0
55cflags-$(CONFIG_MWINCHIPC6) += $(call cc-option,-march=winchip-c6,-march=i586)
56cflags-$(CONFIG_MWINCHIP2) += $(call cc-option,-march=winchip2,-march=i586)
57cflags-$(CONFIG_MWINCHIP3D) += $(call cc-option,-march=winchip2,-march=i586)
58cflags-$(CONFIG_MCYRIXIII) += $(call cc-option,-march=c3,-march=i486) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0
59cflags-$(CONFIG_MVIAC3_2) += $(call cc-option,-march=c3-2,-march=i686)
60
61# AMD Elan support
62cflags-$(CONFIG_X86_ELAN) += -march=i486
63
64# Geode GX1 support
65cflags-$(CONFIG_MGEODEGX1) += $(call cc-option,-march=pentium-mmx,-march=i486)
66 39
67# -mregparm=3 works ok on gcc-3.0 and later 40# -mregparm=3 works ok on gcc-3.0 and later
68# 41#
diff --git a/arch/i386/Makefile.cpu b/arch/i386/Makefile.cpu
new file mode 100644
index 000000000000..8e51456df23d
--- /dev/null
+++ b/arch/i386/Makefile.cpu
@@ -0,0 +1,41 @@
1# CPU tuning section - shared with UML.
2# Must change only cflags-y (or [yn]), not CFLAGS! That makes a difference for UML.
3
4#-mtune exists since gcc 3.4, and some -mcpu flavors didn't exist in gcc 2.95.
5HAS_MTUNE := $(call cc-option-yn, -mtune=i386)
6ifeq ($(HAS_MTUNE),y)
7tune = $(call cc-option,-mtune=$(1),)
8else
9tune = $(call cc-option,-mcpu=$(1),)
10endif
11
12align := $(cc-option-align)
13cflags-$(CONFIG_M386) += -march=i386
14cflags-$(CONFIG_M486) += -march=i486
15cflags-$(CONFIG_M586) += -march=i586
16cflags-$(CONFIG_M586TSC) += -march=i586
17cflags-$(CONFIG_M586MMX) += $(call cc-option,-march=pentium-mmx,-march=i586)
18cflags-$(CONFIG_M686) += -march=i686
19cflags-$(CONFIG_MPENTIUMII) += -march=i686 $(call tune,pentium2)
20cflags-$(CONFIG_MPENTIUMIII) += -march=i686 $(call tune,pentium3)
21cflags-$(CONFIG_MPENTIUMM) += -march=i686 $(call tune,pentium3)
22cflags-$(CONFIG_MPENTIUM4) += -march=i686 $(call tune,pentium4)
23cflags-$(CONFIG_MK6) += -march=k6
24# Please note, that patches that add -march=athlon-xp and friends are pointless.
25# They make zero difference whatsosever to performance at this time.
26cflags-$(CONFIG_MK7) += $(call cc-option,-march=athlon,-march=i686 $(align)-functions=4)
27cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8,$(call cc-option,-march=athlon,-march=i686 $(align)-functions=4))
28cflags-$(CONFIG_MCRUSOE) += -march=i686 $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0
29cflags-$(CONFIG_MEFFICEON) += -march=i686 $(call tune,pentium3) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0
30cflags-$(CONFIG_MWINCHIPC6) += $(call cc-option,-march=winchip-c6,-march=i586)
31cflags-$(CONFIG_MWINCHIP2) += $(call cc-option,-march=winchip2,-march=i586)
32cflags-$(CONFIG_MWINCHIP3D) += $(call cc-option,-march=winchip2,-march=i586)
33cflags-$(CONFIG_MCYRIXIII) += $(call cc-option,-march=c3,-march=i486) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0
34cflags-$(CONFIG_MVIAC3_2) += $(call cc-option,-march=c3-2,-march=i686)
35
36# AMD Elan support
37cflags-$(CONFIG_X86_ELAN) += -march=i486
38
39# Geode GX1 support
40cflags-$(CONFIG_MGEODEGX1) += $(call cc-option,-march=pentium-mmx,-march=i486)
41
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c
index 5546ddebec33..9204be6eedb3 100644
--- a/arch/i386/kernel/apic.c
+++ b/arch/i386/kernel/apic.c
@@ -803,6 +803,7 @@ no_apic:
803 803
804void __init init_apic_mappings(void) 804void __init init_apic_mappings(void)
805{ 805{
806 unsigned int orig_apicid;
806 unsigned long apic_phys; 807 unsigned long apic_phys;
807 808
808 /* 809 /*
@@ -824,8 +825,11 @@ void __init init_apic_mappings(void)
824 * Fetch the APIC ID of the BSP in case we have a 825 * Fetch the APIC ID of the BSP in case we have a
825 * default configuration (or the MP table is broken). 826 * default configuration (or the MP table is broken).
826 */ 827 */
827 if (boot_cpu_physical_apicid == -1U) 828 orig_apicid = boot_cpu_physical_apicid;
828 boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID)); 829 boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID));
830 if ((orig_apicid != -1U) && (orig_apicid != boot_cpu_physical_apicid))
831 printk(KERN_WARNING "Boot APIC ID in local APIC unexpected (%d vs %d)",
832 orig_apicid, boot_cpu_physical_apicid);
829 833
830#ifdef CONFIG_X86_IO_APIC 834#ifdef CONFIG_X86_IO_APIC
831 { 835 {
@@ -1046,10 +1050,11 @@ static unsigned int calibration_result;
1046 1050
1047void __init setup_boot_APIC_clock(void) 1051void __init setup_boot_APIC_clock(void)
1048{ 1052{
1053 unsigned long flags;
1049 apic_printk(APIC_VERBOSE, "Using local APIC timer interrupts.\n"); 1054 apic_printk(APIC_VERBOSE, "Using local APIC timer interrupts.\n");
1050 using_apic_timer = 1; 1055 using_apic_timer = 1;
1051 1056
1052 local_irq_disable(); 1057 local_irq_save(flags);
1053 1058
1054 calibration_result = calibrate_APIC_clock(); 1059 calibration_result = calibrate_APIC_clock();
1055 /* 1060 /*
@@ -1057,7 +1062,7 @@ void __init setup_boot_APIC_clock(void)
1057 */ 1062 */
1058 setup_APIC_timer(calibration_result); 1063 setup_APIC_timer(calibration_result);
1059 1064
1060 local_irq_enable(); 1065 local_irq_restore(flags);
1061} 1066}
1062 1067
1063void __devinit setup_secondary_APIC_clock(void) 1068void __devinit setup_secondary_APIC_clock(void)
@@ -1254,40 +1259,81 @@ fastcall void smp_error_interrupt(struct pt_regs *regs)
1254} 1259}
1255 1260
1256/* 1261/*
1257 * This initializes the IO-APIC and APIC hardware if this is 1262 * This initializes the IO-APIC and APIC hardware.
1258 * a UP kernel.
1259 */ 1263 */
1260int __init APIC_init_uniprocessor (void) 1264int __init APIC_init(void)
1261{ 1265{
1262 if (enable_local_apic < 0) 1266 if (enable_local_apic < 0) {
1263 clear_bit(X86_FEATURE_APIC, boot_cpu_data.x86_capability); 1267 printk(KERN_INFO "APIC disabled\n");
1268 return -1;
1269 }
1264 1270
1265 if (!smp_found_config && !cpu_has_apic) 1271 /* See if we have a SMP configuration or have forced enabled
1272 * the local apic.
1273 */
1274 if (!smp_found_config && !acpi_lapic && !cpu_has_apic) {
1275 enable_local_apic = -1;
1266 return -1; 1276 return -1;
1277 }
1267 1278
1268 /* 1279 /*
1269 * Complain if the BIOS pretends there is one. 1280 * Complain if the BIOS pretends there is an apic.
1281 * Then get out because we don't have an a local apic.
1270 */ 1282 */
1271 if (!cpu_has_apic && APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid])) { 1283 if (!cpu_has_apic && APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid])) {
1272 printk(KERN_ERR "BIOS bug, local APIC #%d not detected!...\n", 1284 printk(KERN_ERR "BIOS bug, local APIC #%d not detected!...\n",
1273 boot_cpu_physical_apicid); 1285 boot_cpu_physical_apicid);
1286 printk(KERN_ERR "... forcing use of dummy APIC emulation. (tell your hw vendor)\n");
1287 enable_local_apic = -1;
1274 return -1; 1288 return -1;
1275 } 1289 }
1276 1290
1277 verify_local_APIC(); 1291 verify_local_APIC();
1278 1292
1293 /*
1294 * Should not be necessary because the MP table should list the boot
1295 * CPU too, but we do it for the sake of robustness anyway.
1296 * Makes no sense to do this check in clustered apic mode, so skip it
1297 */
1298 if (!check_phys_apicid_present(boot_cpu_physical_apicid)) {
1299 printk("weird, boot CPU (#%d) not listed by the BIOS.\n",
1300 boot_cpu_physical_apicid);
1301 physid_set(boot_cpu_physical_apicid, phys_cpu_present_map);
1302 }
1303
1304 /*
1305 * Switch from PIC to APIC mode.
1306 */
1279 connect_bsp_APIC(); 1307 connect_bsp_APIC();
1308 setup_local_APIC();
1280 1309
1281 phys_cpu_present_map = physid_mask_of_physid(boot_cpu_physical_apicid); 1310#ifdef CONFIG_X86_IO_APIC
1311 /*
1312 * Now start the IO-APICs
1313 */
1314 if (smp_found_config && !skip_ioapic_setup && nr_ioapics)
1315 setup_IO_APIC();
1316#endif
1317 return 0;
1318}
1282 1319
1283 setup_local_APIC(); 1320void __init APIC_late_time_init(void)
1321{
1322 /* Improve our loops per jiffy estimate */
1323 loops_per_jiffy = ((1000 + HZ - 1)/HZ)*cpu_khz;
1324 boot_cpu_data.loops_per_jiffy = loops_per_jiffy;
1325 cpu_data[0].loops_per_jiffy = loops_per_jiffy;
1326
1327 /* setup_apic_nmi_watchdog doesn't work properly before cpu_khz is
1328 * initialized. So redo it here to ensure the boot cpu is setup
1329 * properly.
1330 */
1331 if (nmi_watchdog == NMI_LOCAL_APIC)
1332 setup_apic_nmi_watchdog();
1284 1333
1285#ifdef CONFIG_X86_IO_APIC 1334#ifdef CONFIG_X86_IO_APIC
1286 if (smp_found_config) 1335 if (smp_found_config && !skip_ioapic_setup && nr_ioapics)
1287 if (!skip_ioapic_setup && nr_ioapics) 1336 IO_APIC_late_time_init();
1288 setup_IO_APIC();
1289#endif 1337#endif
1290 setup_boot_APIC_clock(); 1338 setup_boot_APIC_clock();
1291
1292 return 0;
1293} 1339}
diff --git a/arch/i386/kernel/apm.c b/arch/i386/kernel/apm.c
index d7811c4e8b50..d2ef0c2aa93e 100644
--- a/arch/i386/kernel/apm.c
+++ b/arch/i386/kernel/apm.c
@@ -597,12 +597,14 @@ static u8 apm_bios_call(u32 func, u32 ebx_in, u32 ecx_in,
597 cpumask_t cpus; 597 cpumask_t cpus;
598 int cpu; 598 int cpu;
599 struct desc_struct save_desc_40; 599 struct desc_struct save_desc_40;
600 struct desc_struct *gdt;
600 601
601 cpus = apm_save_cpus(); 602 cpus = apm_save_cpus();
602 603
603 cpu = get_cpu(); 604 cpu = get_cpu();
604 save_desc_40 = per_cpu(cpu_gdt_table, cpu)[0x40 / 8]; 605 gdt = get_cpu_gdt_table(cpu);
605 per_cpu(cpu_gdt_table, cpu)[0x40 / 8] = bad_bios_desc; 606 save_desc_40 = gdt[0x40 / 8];
607 gdt[0x40 / 8] = bad_bios_desc;
606 608
607 local_save_flags(flags); 609 local_save_flags(flags);
608 APM_DO_CLI; 610 APM_DO_CLI;
@@ -610,7 +612,7 @@ static u8 apm_bios_call(u32 func, u32 ebx_in, u32 ecx_in,
610 apm_bios_call_asm(func, ebx_in, ecx_in, eax, ebx, ecx, edx, esi); 612 apm_bios_call_asm(func, ebx_in, ecx_in, eax, ebx, ecx, edx, esi);
611 APM_DO_RESTORE_SEGS; 613 APM_DO_RESTORE_SEGS;
612 local_irq_restore(flags); 614 local_irq_restore(flags);
613 per_cpu(cpu_gdt_table, cpu)[0x40 / 8] = save_desc_40; 615 gdt[0x40 / 8] = save_desc_40;
614 put_cpu(); 616 put_cpu();
615 apm_restore_cpus(cpus); 617 apm_restore_cpus(cpus);
616 618
@@ -639,13 +641,14 @@ static u8 apm_bios_call_simple(u32 func, u32 ebx_in, u32 ecx_in, u32 *eax)
639 cpumask_t cpus; 641 cpumask_t cpus;
640 int cpu; 642 int cpu;
641 struct desc_struct save_desc_40; 643 struct desc_struct save_desc_40;
642 644 struct desc_struct *gdt;
643 645
644 cpus = apm_save_cpus(); 646 cpus = apm_save_cpus();
645 647
646 cpu = get_cpu(); 648 cpu = get_cpu();
647 save_desc_40 = per_cpu(cpu_gdt_table, cpu)[0x40 / 8]; 649 gdt = get_cpu_gdt_table(cpu);
648 per_cpu(cpu_gdt_table, cpu)[0x40 / 8] = bad_bios_desc; 650 save_desc_40 = gdt[0x40 / 8];
651 gdt[0x40 / 8] = bad_bios_desc;
649 652
650 local_save_flags(flags); 653 local_save_flags(flags);
651 APM_DO_CLI; 654 APM_DO_CLI;
@@ -653,7 +656,7 @@ static u8 apm_bios_call_simple(u32 func, u32 ebx_in, u32 ecx_in, u32 *eax)
653 error = apm_bios_call_simple_asm(func, ebx_in, ecx_in, eax); 656 error = apm_bios_call_simple_asm(func, ebx_in, ecx_in, eax);
654 APM_DO_RESTORE_SEGS; 657 APM_DO_RESTORE_SEGS;
655 local_irq_restore(flags); 658 local_irq_restore(flags);
656 __get_cpu_var(cpu_gdt_table)[0x40 / 8] = save_desc_40; 659 gdt[0x40 / 8] = save_desc_40;
657 put_cpu(); 660 put_cpu();
658 apm_restore_cpus(cpus); 661 apm_restore_cpus(cpus);
659 return error; 662 return error;
@@ -2295,35 +2298,36 @@ static int __init apm_init(void)
2295 apm_bios_entry.segment = APM_CS; 2298 apm_bios_entry.segment = APM_CS;
2296 2299
2297 for (i = 0; i < NR_CPUS; i++) { 2300 for (i = 0; i < NR_CPUS; i++) {
2298 set_base(per_cpu(cpu_gdt_table, i)[APM_CS >> 3], 2301 struct desc_struct *gdt = get_cpu_gdt_table(i);
2302 set_base(gdt[APM_CS >> 3],
2299 __va((unsigned long)apm_info.bios.cseg << 4)); 2303 __va((unsigned long)apm_info.bios.cseg << 4));
2300 set_base(per_cpu(cpu_gdt_table, i)[APM_CS_16 >> 3], 2304 set_base(gdt[APM_CS_16 >> 3],
2301 __va((unsigned long)apm_info.bios.cseg_16 << 4)); 2305 __va((unsigned long)apm_info.bios.cseg_16 << 4));
2302 set_base(per_cpu(cpu_gdt_table, i)[APM_DS >> 3], 2306 set_base(gdt[APM_DS >> 3],
2303 __va((unsigned long)apm_info.bios.dseg << 4)); 2307 __va((unsigned long)apm_info.bios.dseg << 4));
2304#ifndef APM_RELAX_SEGMENTS 2308#ifndef APM_RELAX_SEGMENTS
2305 if (apm_info.bios.version == 0x100) { 2309 if (apm_info.bios.version == 0x100) {
2306#endif 2310#endif
2307 /* For ASUS motherboard, Award BIOS rev 110 (and others?) */ 2311 /* For ASUS motherboard, Award BIOS rev 110 (and others?) */
2308 _set_limit((char *)&per_cpu(cpu_gdt_table, i)[APM_CS >> 3], 64 * 1024 - 1); 2312 _set_limit((char *)&gdt[APM_CS >> 3], 64 * 1024 - 1);
2309 /* For some unknown machine. */ 2313 /* For some unknown machine. */
2310 _set_limit((char *)&per_cpu(cpu_gdt_table, i)[APM_CS_16 >> 3], 64 * 1024 - 1); 2314 _set_limit((char *)&gdt[APM_CS_16 >> 3], 64 * 1024 - 1);
2311 /* For the DEC Hinote Ultra CT475 (and others?) */ 2315 /* For the DEC Hinote Ultra CT475 (and others?) */
2312 _set_limit((char *)&per_cpu(cpu_gdt_table, i)[APM_DS >> 3], 64 * 1024 - 1); 2316 _set_limit((char *)&gdt[APM_DS >> 3], 64 * 1024 - 1);
2313#ifndef APM_RELAX_SEGMENTS 2317#ifndef APM_RELAX_SEGMENTS
2314 } else { 2318 } else {
2315 _set_limit((char *)&per_cpu(cpu_gdt_table, i)[APM_CS >> 3], 2319 _set_limit((char *)&gdt[APM_CS >> 3],
2316 (apm_info.bios.cseg_len - 1) & 0xffff); 2320 (apm_info.bios.cseg_len - 1) & 0xffff);
2317 _set_limit((char *)&per_cpu(cpu_gdt_table, i)[APM_CS_16 >> 3], 2321 _set_limit((char *)&gdt[APM_CS_16 >> 3],
2318 (apm_info.bios.cseg_16_len - 1) & 0xffff); 2322 (apm_info.bios.cseg_16_len - 1) & 0xffff);
2319 _set_limit((char *)&per_cpu(cpu_gdt_table, i)[APM_DS >> 3], 2323 _set_limit((char *)&gdt[APM_DS >> 3],
2320 (apm_info.bios.dseg_len - 1) & 0xffff); 2324 (apm_info.bios.dseg_len - 1) & 0xffff);
2321 /* workaround for broken BIOSes */ 2325 /* workaround for broken BIOSes */
2322 if (apm_info.bios.cseg_len <= apm_info.bios.offset) 2326 if (apm_info.bios.cseg_len <= apm_info.bios.offset)
2323 _set_limit((char *)&per_cpu(cpu_gdt_table, i)[APM_CS >> 3], 64 * 1024 -1); 2327 _set_limit((char *)&gdt[APM_CS >> 3], 64 * 1024 -1);
2324 if (apm_info.bios.dseg_len <= 0x40) { /* 0x40 * 4kB == 64kB */ 2328 if (apm_info.bios.dseg_len <= 0x40) { /* 0x40 * 4kB == 64kB */
2325 /* for the BIOS that assumes granularity = 1 */ 2329 /* for the BIOS that assumes granularity = 1 */
2326 per_cpu(cpu_gdt_table, i)[APM_DS >> 3].b |= 0x800000; 2330 gdt[APM_DS >> 3].b |= 0x800000;
2327 printk(KERN_NOTICE "apm: we set the granularity of dseg.\n"); 2331 printk(KERN_NOTICE "apm: we set the granularity of dseg.\n");
2328 } 2332 }
2329 } 2333 }
diff --git a/arch/i386/kernel/cpu/common.c b/arch/i386/kernel/cpu/common.c
index 9ad43be9a01f..74145a33cb0f 100644
--- a/arch/i386/kernel/cpu/common.c
+++ b/arch/i386/kernel/cpu/common.c
@@ -573,6 +573,7 @@ void __devinit cpu_init(void)
573 int cpu = smp_processor_id(); 573 int cpu = smp_processor_id();
574 struct tss_struct * t = &per_cpu(init_tss, cpu); 574 struct tss_struct * t = &per_cpu(init_tss, cpu);
575 struct thread_struct *thread = &current->thread; 575 struct thread_struct *thread = &current->thread;
576 struct desc_struct *gdt = get_cpu_gdt_table(cpu);
576 __u32 stk16_off = (__u32)&per_cpu(cpu_16bit_stack, cpu); 577 __u32 stk16_off = (__u32)&per_cpu(cpu_16bit_stack, cpu);
577 578
578 if (cpu_test_and_set(cpu, cpu_initialized)) { 579 if (cpu_test_and_set(cpu, cpu_initialized)) {
@@ -594,24 +595,16 @@ void __devinit cpu_init(void)
594 * Initialize the per-CPU GDT with the boot GDT, 595 * Initialize the per-CPU GDT with the boot GDT,
595 * and set up the GDT descriptor: 596 * and set up the GDT descriptor:
596 */ 597 */
597 memcpy(&per_cpu(cpu_gdt_table, cpu), cpu_gdt_table, 598 memcpy(gdt, cpu_gdt_table, GDT_SIZE);
598 GDT_SIZE);
599 599
600 /* Set up GDT entry for 16bit stack */ 600 /* Set up GDT entry for 16bit stack */
601 *(__u64 *)&(per_cpu(cpu_gdt_table, cpu)[GDT_ENTRY_ESPFIX_SS]) |= 601 *(__u64 *)(&gdt[GDT_ENTRY_ESPFIX_SS]) |=
602 ((((__u64)stk16_off) << 16) & 0x000000ffffff0000ULL) | 602 ((((__u64)stk16_off) << 16) & 0x000000ffffff0000ULL) |
603 ((((__u64)stk16_off) << 32) & 0xff00000000000000ULL) | 603 ((((__u64)stk16_off) << 32) & 0xff00000000000000ULL) |
604 (CPU_16BIT_STACK_SIZE - 1); 604 (CPU_16BIT_STACK_SIZE - 1);
605 605
606 cpu_gdt_descr[cpu].size = GDT_SIZE - 1; 606 cpu_gdt_descr[cpu].size = GDT_SIZE - 1;
607 cpu_gdt_descr[cpu].address = 607 cpu_gdt_descr[cpu].address = (unsigned long)gdt;
608 (unsigned long)&per_cpu(cpu_gdt_table, cpu);
609
610 /*
611 * Set up the per-thread TLS descriptor cache:
612 */
613 memcpy(thread->tls_array, &per_cpu(cpu_gdt_table, cpu),
614 GDT_ENTRY_TLS_ENTRIES * 8);
615 608
616 load_gdt(&cpu_gdt_descr[cpu]); 609 load_gdt(&cpu_gdt_descr[cpu]);
617 load_idt(&idt_descr); 610 load_idt(&idt_descr);
diff --git a/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
index 822c8ce9d1f1..caa9f7711343 100644
--- a/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
+++ b/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
@@ -32,6 +32,7 @@
32#include <linux/proc_fs.h> 32#include <linux/proc_fs.h>
33#include <linux/seq_file.h> 33#include <linux/seq_file.h>
34#include <linux/compiler.h> 34#include <linux/compiler.h>
35#include <linux/sched.h> /* current */
35#include <asm/io.h> 36#include <asm/io.h>
36#include <asm/delay.h> 37#include <asm/delay.h>
37#include <asm/uaccess.h> 38#include <asm/uaccess.h>
diff --git a/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c b/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c
index aa622d52c6e5..270f2188d68b 100644
--- a/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c
+++ b/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c
@@ -28,6 +28,7 @@
28#include <linux/cpufreq.h> 28#include <linux/cpufreq.h>
29#include <linux/slab.h> 29#include <linux/slab.h>
30#include <linux/cpumask.h> 30#include <linux/cpumask.h>
31#include <linux/sched.h> /* current / set_cpus_allowed() */
31 32
32#include <asm/processor.h> 33#include <asm/processor.h>
33#include <asm/msr.h> 34#include <asm/msr.h>
diff --git a/arch/i386/kernel/cpu/cpufreq/powernow-k8.c b/arch/i386/kernel/cpu/cpufreq/powernow-k8.c
index 58ca98fdc2ca..2d5c9adba0cd 100644
--- a/arch/i386/kernel/cpu/cpufreq/powernow-k8.c
+++ b/arch/i386/kernel/cpu/cpufreq/powernow-k8.c
@@ -32,6 +32,7 @@
32#include <linux/slab.h> 32#include <linux/slab.h>
33#include <linux/string.h> 33#include <linux/string.h>
34#include <linux/cpumask.h> 34#include <linux/cpumask.h>
35#include <linux/sched.h> /* for current / set_cpus_allowed() */
35 36
36#include <asm/msr.h> 37#include <asm/msr.h>
37#include <asm/io.h> 38#include <asm/io.h>
diff --git a/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c b/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
index c397b6220430..1465974256c9 100644
--- a/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
+++ b/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
@@ -22,6 +22,7 @@
22#include <linux/init.h> 22#include <linux/init.h>
23#include <linux/cpufreq.h> 23#include <linux/cpufreq.h>
24#include <linux/config.h> 24#include <linux/config.h>
25#include <linux/sched.h> /* current */
25#include <linux/delay.h> 26#include <linux/delay.h>
26#include <linux/compiler.h> 27#include <linux/compiler.h>
27 28
diff --git a/arch/i386/kernel/cpu/intel_cacheinfo.c b/arch/i386/kernel/cpu/intel_cacheinfo.c
index 9e0d5f83cb9f..4dc42a189ae5 100644
--- a/arch/i386/kernel/cpu/intel_cacheinfo.c
+++ b/arch/i386/kernel/cpu/intel_cacheinfo.c
@@ -3,6 +3,7 @@
3 * 3 *
4 * Changes: 4 * Changes:
5 * Venkatesh Pallipadi : Adding cache identification through cpuid(4) 5 * Venkatesh Pallipadi : Adding cache identification through cpuid(4)
6 * Ashok Raj <ashok.raj@intel.com>: Work with CPU hotplug infrastructure.
6 */ 7 */
7 8
8#include <linux/init.h> 9#include <linux/init.h>
@@ -10,6 +11,7 @@
10#include <linux/device.h> 11#include <linux/device.h>
11#include <linux/compiler.h> 12#include <linux/compiler.h>
12#include <linux/cpu.h> 13#include <linux/cpu.h>
14#include <linux/sched.h>
13 15
14#include <asm/processor.h> 16#include <asm/processor.h>
15#include <asm/smp.h> 17#include <asm/smp.h>
@@ -28,7 +30,7 @@ struct _cache_table
28}; 30};
29 31
30/* all the cache descriptor types we care about (no TLB or trace cache entries) */ 32/* all the cache descriptor types we care about (no TLB or trace cache entries) */
31static struct _cache_table cache_table[] __devinitdata = 33static struct _cache_table cache_table[] __cpuinitdata =
32{ 34{
33 { 0x06, LVL_1_INST, 8 }, /* 4-way set assoc, 32 byte line size */ 35 { 0x06, LVL_1_INST, 8 }, /* 4-way set assoc, 32 byte line size */
34 { 0x08, LVL_1_INST, 16 }, /* 4-way set assoc, 32 byte line size */ 36 { 0x08, LVL_1_INST, 16 }, /* 4-way set assoc, 32 byte line size */
@@ -117,10 +119,9 @@ struct _cpuid4_info {
117 cpumask_t shared_cpu_map; 119 cpumask_t shared_cpu_map;
118}; 120};
119 121
120#define MAX_CACHE_LEAVES 4
121static unsigned short num_cache_leaves; 122static unsigned short num_cache_leaves;
122 123
123static int __devinit cpuid4_cache_lookup(int index, struct _cpuid4_info *this_leaf) 124static int __cpuinit cpuid4_cache_lookup(int index, struct _cpuid4_info *this_leaf)
124{ 125{
125 unsigned int eax, ebx, ecx, edx; 126 unsigned int eax, ebx, ecx, edx;
126 union _cpuid4_leaf_eax cache_eax; 127 union _cpuid4_leaf_eax cache_eax;
@@ -144,23 +145,18 @@ static int __init find_num_cache_leaves(void)
144{ 145{
145 unsigned int eax, ebx, ecx, edx; 146 unsigned int eax, ebx, ecx, edx;
146 union _cpuid4_leaf_eax cache_eax; 147 union _cpuid4_leaf_eax cache_eax;
147 int i; 148 int i = -1;
148 int retval;
149 149
150 retval = MAX_CACHE_LEAVES; 150 do {
151 /* Do cpuid(4) loop to find out num_cache_leaves */ 151 ++i;
152 for (i = 0; i < MAX_CACHE_LEAVES; i++) { 152 /* Do cpuid(4) loop to find out num_cache_leaves */
153 cpuid_count(4, i, &eax, &ebx, &ecx, &edx); 153 cpuid_count(4, i, &eax, &ebx, &ecx, &edx);
154 cache_eax.full = eax; 154 cache_eax.full = eax;
155 if (cache_eax.split.type == CACHE_TYPE_NULL) { 155 } while (cache_eax.split.type != CACHE_TYPE_NULL);
156 retval = i; 156 return i;
157 break;
158 }
159 }
160 return retval;
161} 157}
162 158
163unsigned int __devinit init_intel_cacheinfo(struct cpuinfo_x86 *c) 159unsigned int __cpuinit init_intel_cacheinfo(struct cpuinfo_x86 *c)
164{ 160{
165 unsigned int trace = 0, l1i = 0, l1d = 0, l2 = 0, l3 = 0; /* Cache sizes */ 161 unsigned int trace = 0, l1i = 0, l1d = 0, l2 = 0, l3 = 0; /* Cache sizes */
166 unsigned int new_l1d = 0, new_l1i = 0; /* Cache sizes from cpuid(4) */ 162 unsigned int new_l1d = 0, new_l1i = 0; /* Cache sizes from cpuid(4) */
@@ -284,13 +280,7 @@ unsigned int __devinit init_intel_cacheinfo(struct cpuinfo_x86 *c)
284 if ( l3 ) 280 if ( l3 )
285 printk(KERN_INFO "CPU: L3 cache: %dK\n", l3); 281 printk(KERN_INFO "CPU: L3 cache: %dK\n", l3);
286 282
287 /* 283 c->x86_cache_size = l3 ? l3 : (l2 ? l2 : (l1i+l1d));
288 * This assumes the L3 cache is shared; it typically lives in
289 * the northbridge. The L1 caches are included by the L2
290 * cache, and so should not be included for the purpose of
291 * SMP switching weights.
292 */
293 c->x86_cache_size = l2 ? l2 : (l1i+l1d);
294 } 284 }
295 285
296 return l2; 286 return l2;
@@ -301,7 +291,7 @@ static struct _cpuid4_info *cpuid4_info[NR_CPUS];
301#define CPUID4_INFO_IDX(x,y) (&((cpuid4_info[x])[y])) 291#define CPUID4_INFO_IDX(x,y) (&((cpuid4_info[x])[y]))
302 292
303#ifdef CONFIG_SMP 293#ifdef CONFIG_SMP
304static void __devinit cache_shared_cpu_map_setup(unsigned int cpu, int index) 294static void __cpuinit cache_shared_cpu_map_setup(unsigned int cpu, int index)
305{ 295{
306 struct _cpuid4_info *this_leaf; 296 struct _cpuid4_info *this_leaf;
307 unsigned long num_threads_sharing; 297 unsigned long num_threads_sharing;
@@ -334,7 +324,7 @@ static void free_cache_attributes(unsigned int cpu)
334 cpuid4_info[cpu] = NULL; 324 cpuid4_info[cpu] = NULL;
335} 325}
336 326
337static int __devinit detect_cache_attributes(unsigned int cpu) 327static int __cpuinit detect_cache_attributes(unsigned int cpu)
338{ 328{
339 struct _cpuid4_info *this_leaf; 329 struct _cpuid4_info *this_leaf;
340 unsigned long j; 330 unsigned long j;
@@ -511,7 +501,7 @@ static void cpuid4_cache_sysfs_exit(unsigned int cpu)
511 free_cache_attributes(cpu); 501 free_cache_attributes(cpu);
512} 502}
513 503
514static int __devinit cpuid4_cache_sysfs_init(unsigned int cpu) 504static int __cpuinit cpuid4_cache_sysfs_init(unsigned int cpu)
515{ 505{
516 506
517 if (num_cache_leaves == 0) 507 if (num_cache_leaves == 0)
@@ -542,7 +532,7 @@ err_out:
542} 532}
543 533
544/* Add/Remove cache interface for CPU device */ 534/* Add/Remove cache interface for CPU device */
545static int __devinit cache_add_dev(struct sys_device * sys_dev) 535static int __cpuinit cache_add_dev(struct sys_device * sys_dev)
546{ 536{
547 unsigned int cpu = sys_dev->id; 537 unsigned int cpu = sys_dev->id;
548 unsigned long i, j; 538 unsigned long i, j;
@@ -579,7 +569,7 @@ static int __devinit cache_add_dev(struct sys_device * sys_dev)
579 return retval; 569 return retval;
580} 570}
581 571
582static int __devexit cache_remove_dev(struct sys_device * sys_dev) 572static void __cpuexit cache_remove_dev(struct sys_device * sys_dev)
583{ 573{
584 unsigned int cpu = sys_dev->id; 574 unsigned int cpu = sys_dev->id;
585 unsigned long i; 575 unsigned long i;
@@ -588,24 +578,49 @@ static int __devexit cache_remove_dev(struct sys_device * sys_dev)
588 kobject_unregister(&(INDEX_KOBJECT_PTR(cpu,i)->kobj)); 578 kobject_unregister(&(INDEX_KOBJECT_PTR(cpu,i)->kobj));
589 kobject_unregister(cache_kobject[cpu]); 579 kobject_unregister(cache_kobject[cpu]);
590 cpuid4_cache_sysfs_exit(cpu); 580 cpuid4_cache_sysfs_exit(cpu);
591 return 0; 581 return;
582}
583
584static int __cpuinit cacheinfo_cpu_callback(struct notifier_block *nfb,
585 unsigned long action, void *hcpu)
586{
587 unsigned int cpu = (unsigned long)hcpu;
588 struct sys_device *sys_dev;
589
590 sys_dev = get_cpu_sysdev(cpu);
591 switch (action) {
592 case CPU_ONLINE:
593 cache_add_dev(sys_dev);
594 break;
595 case CPU_DEAD:
596 cache_remove_dev(sys_dev);
597 break;
598 }
599 return NOTIFY_OK;
592} 600}
593 601
594static struct sysdev_driver cache_sysdev_driver = { 602static struct notifier_block cacheinfo_cpu_notifier =
595 .add = cache_add_dev, 603{
596 .remove = __devexit_p(cache_remove_dev), 604 .notifier_call = cacheinfo_cpu_callback,
597}; 605};
598 606
599/* Register/Unregister the cpu_cache driver */ 607static int __cpuinit cache_sysfs_init(void)
600static int __devinit cache_register_driver(void)
601{ 608{
609 int i;
610
602 if (num_cache_leaves == 0) 611 if (num_cache_leaves == 0)
603 return 0; 612 return 0;
604 613
605 return sysdev_driver_register(&cpu_sysdev_class,&cache_sysdev_driver); 614 register_cpu_notifier(&cacheinfo_cpu_notifier);
615
616 for_each_online_cpu(i) {
617 cacheinfo_cpu_callback(&cacheinfo_cpu_notifier, CPU_ONLINE,
618 (void *)(long)i);
619 }
620
621 return 0;
606} 622}
607 623
608device_initcall(cache_register_driver); 624device_initcall(cache_sysfs_init);
609 625
610#endif 626#endif
611
diff --git a/arch/i386/kernel/cpu/mcheck/p6.c b/arch/i386/kernel/cpu/mcheck/p6.c
index 3c035b8fa3d9..979b18bc95c1 100644
--- a/arch/i386/kernel/cpu/mcheck/p6.c
+++ b/arch/i386/kernel/cpu/mcheck/p6.c
@@ -102,11 +102,16 @@ void __devinit intel_p6_mcheck_init(struct cpuinfo_x86 *c)
102 wrmsr(MSR_IA32_MCG_CTL, 0xffffffff, 0xffffffff); 102 wrmsr(MSR_IA32_MCG_CTL, 0xffffffff, 0xffffffff);
103 nr_mce_banks = l & 0xff; 103 nr_mce_banks = l & 0xff;
104 104
105 /* Don't enable bank 0 on intel P6 cores, it goes bang quickly. */ 105 /*
106 for (i=1; i<nr_mce_banks; i++) { 106 * Following the example in IA-32 SDM Vol 3:
107 * - MC0_CTL should not be written
108 * - Status registers on all banks should be cleared on reset
109 */
110 for (i=1; i<nr_mce_banks; i++)
107 wrmsr (MSR_IA32_MC0_CTL+4*i, 0xffffffff, 0xffffffff); 111 wrmsr (MSR_IA32_MC0_CTL+4*i, 0xffffffff, 0xffffffff);
112
113 for (i=0; i<nr_mce_banks; i++)
108 wrmsr (MSR_IA32_MC0_STATUS+4*i, 0x0, 0x0); 114 wrmsr (MSR_IA32_MC0_STATUS+4*i, 0x0, 0x0);
109 }
110 115
111 set_in_cr4 (X86_CR4_MCE); 116 set_in_cr4 (X86_CR4_MCE);
112 printk (KERN_INFO "Intel machine check reporting enabled on CPU#%d.\n", 117 printk (KERN_INFO "Intel machine check reporting enabled on CPU#%d.\n",
diff --git a/arch/i386/kernel/cpu/mtrr/if.c b/arch/i386/kernel/cpu/mtrr/if.c
index 1923e0aed26a..cf39e205d33c 100644
--- a/arch/i386/kernel/cpu/mtrr/if.c
+++ b/arch/i386/kernel/cpu/mtrr/if.c
@@ -149,60 +149,89 @@ mtrr_write(struct file *file, const char __user *buf, size_t len, loff_t * ppos)
149 return -EINVAL; 149 return -EINVAL;
150} 150}
151 151
152static int 152static long
153mtrr_ioctl(struct inode *inode, struct file *file, 153mtrr_ioctl(struct file *file, unsigned int cmd, unsigned long __arg)
154 unsigned int cmd, unsigned long __arg)
155{ 154{
156 int err; 155 int err = 0;
157 mtrr_type type; 156 mtrr_type type;
158 struct mtrr_sentry sentry; 157 struct mtrr_sentry sentry;
159 struct mtrr_gentry gentry; 158 struct mtrr_gentry gentry;
160 void __user *arg = (void __user *) __arg; 159 void __user *arg = (void __user *) __arg;
161 160
162 switch (cmd) { 161 switch (cmd) {
162 case MTRRIOC_ADD_ENTRY:
163 case MTRRIOC_SET_ENTRY:
164 case MTRRIOC_DEL_ENTRY:
165 case MTRRIOC_KILL_ENTRY:
166 case MTRRIOC_ADD_PAGE_ENTRY:
167 case MTRRIOC_SET_PAGE_ENTRY:
168 case MTRRIOC_DEL_PAGE_ENTRY:
169 case MTRRIOC_KILL_PAGE_ENTRY:
170 if (copy_from_user(&sentry, arg, sizeof sentry))
171 return -EFAULT;
172 break;
173 case MTRRIOC_GET_ENTRY:
174 case MTRRIOC_GET_PAGE_ENTRY:
175 if (copy_from_user(&gentry, arg, sizeof gentry))
176 return -EFAULT;
177 break;
178#ifdef CONFIG_COMPAT
179 case MTRRIOC32_ADD_ENTRY:
180 case MTRRIOC32_SET_ENTRY:
181 case MTRRIOC32_DEL_ENTRY:
182 case MTRRIOC32_KILL_ENTRY:
183 case MTRRIOC32_ADD_PAGE_ENTRY:
184 case MTRRIOC32_SET_PAGE_ENTRY:
185 case MTRRIOC32_DEL_PAGE_ENTRY:
186 case MTRRIOC32_KILL_PAGE_ENTRY: {
187 struct mtrr_sentry32 __user *s32 = (struct mtrr_sentry32 __user *)__arg;
188 err = get_user(sentry.base, &s32->base);
189 err |= get_user(sentry.size, &s32->size);
190 err |= get_user(sentry.type, &s32->type);
191 if (err)
192 return err;
193 break;
194 }
195 case MTRRIOC32_GET_ENTRY:
196 case MTRRIOC32_GET_PAGE_ENTRY: {
197 struct mtrr_gentry32 __user *g32 = (struct mtrr_gentry32 __user *)__arg;
198 err = get_user(gentry.regnum, &g32->regnum);
199 err |= get_user(gentry.base, &g32->base);
200 err |= get_user(gentry.size, &g32->size);
201 err |= get_user(gentry.type, &g32->type);
202 if (err)
203 return err;
204 break;
205 }
206#endif
207 }
208
209 switch (cmd) {
163 default: 210 default:
164 return -ENOTTY; 211 return -ENOTTY;
165 case MTRRIOC_ADD_ENTRY: 212 case MTRRIOC_ADD_ENTRY:
166 if (!capable(CAP_SYS_ADMIN)) 213 if (!capable(CAP_SYS_ADMIN))
167 return -EPERM; 214 return -EPERM;
168 if (copy_from_user(&sentry, arg, sizeof sentry))
169 return -EFAULT;
170 err = 215 err =
171 mtrr_file_add(sentry.base, sentry.size, sentry.type, 1, 216 mtrr_file_add(sentry.base, sentry.size, sentry.type, 1,
172 file, 0); 217 file, 0);
173 if (err < 0)
174 return err;
175 break; 218 break;
176 case MTRRIOC_SET_ENTRY: 219 case MTRRIOC_SET_ENTRY:
177 if (!capable(CAP_SYS_ADMIN)) 220 if (!capable(CAP_SYS_ADMIN))
178 return -EPERM; 221 return -EPERM;
179 if (copy_from_user(&sentry, arg, sizeof sentry))
180 return -EFAULT;
181 err = mtrr_add(sentry.base, sentry.size, sentry.type, 0); 222 err = mtrr_add(sentry.base, sentry.size, sentry.type, 0);
182 if (err < 0)
183 return err;
184 break; 223 break;
185 case MTRRIOC_DEL_ENTRY: 224 case MTRRIOC_DEL_ENTRY:
186 if (!capable(CAP_SYS_ADMIN)) 225 if (!capable(CAP_SYS_ADMIN))
187 return -EPERM; 226 return -EPERM;
188 if (copy_from_user(&sentry, arg, sizeof sentry))
189 return -EFAULT;
190 err = mtrr_file_del(sentry.base, sentry.size, file, 0); 227 err = mtrr_file_del(sentry.base, sentry.size, file, 0);
191 if (err < 0)
192 return err;
193 break; 228 break;
194 case MTRRIOC_KILL_ENTRY: 229 case MTRRIOC_KILL_ENTRY:
195 if (!capable(CAP_SYS_ADMIN)) 230 if (!capable(CAP_SYS_ADMIN))
196 return -EPERM; 231 return -EPERM;
197 if (copy_from_user(&sentry, arg, sizeof sentry))
198 return -EFAULT;
199 err = mtrr_del(-1, sentry.base, sentry.size); 232 err = mtrr_del(-1, sentry.base, sentry.size);
200 if (err < 0)
201 return err;
202 break; 233 break;
203 case MTRRIOC_GET_ENTRY: 234 case MTRRIOC_GET_ENTRY:
204 if (copy_from_user(&gentry, arg, sizeof gentry))
205 return -EFAULT;
206 if (gentry.regnum >= num_var_ranges) 235 if (gentry.regnum >= num_var_ranges)
207 return -EINVAL; 236 return -EINVAL;
208 mtrr_if->get(gentry.regnum, &gentry.base, &gentry.size, &type); 237 mtrr_if->get(gentry.regnum, &gentry.base, &gentry.size, &type);
@@ -217,60 +246,59 @@ mtrr_ioctl(struct inode *inode, struct file *file,
217 gentry.type = type; 246 gentry.type = type;
218 } 247 }
219 248
220 if (copy_to_user(arg, &gentry, sizeof gentry))
221 return -EFAULT;
222 break; 249 break;
223 case MTRRIOC_ADD_PAGE_ENTRY: 250 case MTRRIOC_ADD_PAGE_ENTRY:
224 if (!capable(CAP_SYS_ADMIN)) 251 if (!capable(CAP_SYS_ADMIN))
225 return -EPERM; 252 return -EPERM;
226 if (copy_from_user(&sentry, arg, sizeof sentry))
227 return -EFAULT;
228 err = 253 err =
229 mtrr_file_add(sentry.base, sentry.size, sentry.type, 1, 254 mtrr_file_add(sentry.base, sentry.size, sentry.type, 1,
230 file, 1); 255 file, 1);
231 if (err < 0)
232 return err;
233 break; 256 break;
234 case MTRRIOC_SET_PAGE_ENTRY: 257 case MTRRIOC_SET_PAGE_ENTRY:
235 if (!capable(CAP_SYS_ADMIN)) 258 if (!capable(CAP_SYS_ADMIN))
236 return -EPERM; 259 return -EPERM;
237 if (copy_from_user(&sentry, arg, sizeof sentry))
238 return -EFAULT;
239 err = mtrr_add_page(sentry.base, sentry.size, sentry.type, 0); 260 err = mtrr_add_page(sentry.base, sentry.size, sentry.type, 0);
240 if (err < 0)
241 return err;
242 break; 261 break;
243 case MTRRIOC_DEL_PAGE_ENTRY: 262 case MTRRIOC_DEL_PAGE_ENTRY:
244 if (!capable(CAP_SYS_ADMIN)) 263 if (!capable(CAP_SYS_ADMIN))
245 return -EPERM; 264 return -EPERM;
246 if (copy_from_user(&sentry, arg, sizeof sentry))
247 return -EFAULT;
248 err = mtrr_file_del(sentry.base, sentry.size, file, 1); 265 err = mtrr_file_del(sentry.base, sentry.size, file, 1);
249 if (err < 0)
250 return err;
251 break; 266 break;
252 case MTRRIOC_KILL_PAGE_ENTRY: 267 case MTRRIOC_KILL_PAGE_ENTRY:
253 if (!capable(CAP_SYS_ADMIN)) 268 if (!capable(CAP_SYS_ADMIN))
254 return -EPERM; 269 return -EPERM;
255 if (copy_from_user(&sentry, arg, sizeof sentry))
256 return -EFAULT;
257 err = mtrr_del_page(-1, sentry.base, sentry.size); 270 err = mtrr_del_page(-1, sentry.base, sentry.size);
258 if (err < 0)
259 return err;
260 break; 271 break;
261 case MTRRIOC_GET_PAGE_ENTRY: 272 case MTRRIOC_GET_PAGE_ENTRY:
262 if (copy_from_user(&gentry, arg, sizeof gentry))
263 return -EFAULT;
264 if (gentry.regnum >= num_var_ranges) 273 if (gentry.regnum >= num_var_ranges)
265 return -EINVAL; 274 return -EINVAL;
266 mtrr_if->get(gentry.regnum, &gentry.base, &gentry.size, &type); 275 mtrr_if->get(gentry.regnum, &gentry.base, &gentry.size, &type);
267 gentry.type = type; 276 gentry.type = type;
277 break;
278 }
279
280 if (err)
281 return err;
268 282
283 switch(cmd) {
284 case MTRRIOC_GET_ENTRY:
285 case MTRRIOC_GET_PAGE_ENTRY:
269 if (copy_to_user(arg, &gentry, sizeof gentry)) 286 if (copy_to_user(arg, &gentry, sizeof gentry))
270 return -EFAULT; 287 err = -EFAULT;
288 break;
289#ifdef CONFIG_COMPAT
290 case MTRRIOC32_GET_ENTRY:
291 case MTRRIOC32_GET_PAGE_ENTRY: {
292 struct mtrr_gentry32 __user *g32 = (struct mtrr_gentry32 __user *)__arg;
293 err = put_user(gentry.base, &g32->base);
294 err |= put_user(gentry.size, &g32->size);
295 err |= put_user(gentry.regnum, &g32->regnum);
296 err |= put_user(gentry.type, &g32->type);
271 break; 297 break;
272 } 298 }
273 return 0; 299#endif
300 }
301 return err;
274} 302}
275 303
276static int 304static int
@@ -310,7 +338,8 @@ static struct file_operations mtrr_fops = {
310 .read = seq_read, 338 .read = seq_read,
311 .llseek = seq_lseek, 339 .llseek = seq_lseek,
312 .write = mtrr_write, 340 .write = mtrr_write,
313 .ioctl = mtrr_ioctl, 341 .unlocked_ioctl = mtrr_ioctl,
342 .compat_ioctl = mtrr_ioctl,
314 .release = mtrr_close, 343 .release = mtrr_close,
315}; 344};
316 345
diff --git a/arch/i386/kernel/cpu/proc.c b/arch/i386/kernel/cpu/proc.c
index 8bd77d948a84..41b871ecf4b3 100644
--- a/arch/i386/kernel/cpu/proc.c
+++ b/arch/i386/kernel/cpu/proc.c
@@ -44,7 +44,7 @@ static int show_cpuinfo(struct seq_file *m, void *v)
44 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 44 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
45 45
46 /* Intel-defined (#2) */ 46 /* Intel-defined (#2) */
47 "pni", NULL, NULL, "monitor", "ds_cpl", NULL, NULL, "est", 47 "pni", NULL, NULL, "monitor", "ds_cpl", "vmx", NULL, "est",
48 "tm2", NULL, "cid", NULL, NULL, "cx16", "xtpr", NULL, 48 "tm2", NULL, "cid", NULL, NULL, "cx16", "xtpr", NULL,
49 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 49 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
50 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 50 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
diff --git a/arch/i386/kernel/cpuid.c b/arch/i386/kernel/cpuid.c
index 4647db4ad6de..13bae799e626 100644
--- a/arch/i386/kernel/cpuid.c
+++ b/arch/i386/kernel/cpuid.c
@@ -163,7 +163,7 @@ static int cpuid_class_device_create(int i)
163 int err = 0; 163 int err = 0;
164 struct class_device *class_err; 164 struct class_device *class_err;
165 165
166 class_err = class_device_create(cpuid_class, MKDEV(CPUID_MAJOR, i), NULL, "cpu%d",i); 166 class_err = class_device_create(cpuid_class, NULL, MKDEV(CPUID_MAJOR, i), NULL, "cpu%d",i);
167 if (IS_ERR(class_err)) 167 if (IS_ERR(class_err))
168 err = PTR_ERR(class_err); 168 err = PTR_ERR(class_err);
169 return err; 169 return err;
diff --git a/arch/i386/kernel/crash.c b/arch/i386/kernel/crash.c
index 0248e084017c..af809ccf5fbe 100644
--- a/arch/i386/kernel/crash.c
+++ b/arch/i386/kernel/crash.c
@@ -21,7 +21,6 @@
21#include <asm/hardirq.h> 21#include <asm/hardirq.h>
22#include <asm/nmi.h> 22#include <asm/nmi.h>
23#include <asm/hw_irq.h> 23#include <asm/hw_irq.h>
24#include <asm/apic.h>
25#include <mach_ipi.h> 24#include <mach_ipi.h>
26 25
27 26
@@ -148,7 +147,6 @@ static int crash_nmi_callback(struct pt_regs *regs, int cpu)
148 regs = &fixed_regs; 147 regs = &fixed_regs;
149 } 148 }
150 crash_save_this_cpu(regs, cpu); 149 crash_save_this_cpu(regs, cpu);
151 disable_local_APIC();
152 atomic_dec(&waiting_for_crash_ipi); 150 atomic_dec(&waiting_for_crash_ipi);
153 /* Assume hlt works */ 151 /* Assume hlt works */
154 halt(); 152 halt();
@@ -188,7 +186,6 @@ static void nmi_shootdown_cpus(void)
188 } 186 }
189 187
190 /* Leave the nmi callback set */ 188 /* Leave the nmi callback set */
191 disable_local_APIC();
192} 189}
193#else 190#else
194static void nmi_shootdown_cpus(void) 191static void nmi_shootdown_cpus(void)
@@ -213,9 +210,5 @@ void machine_crash_shutdown(struct pt_regs *regs)
213 /* Make a note of crashing cpu. Will be used in NMI callback.*/ 210 /* Make a note of crashing cpu. Will be used in NMI callback.*/
214 crashing_cpu = smp_processor_id(); 211 crashing_cpu = smp_processor_id();
215 nmi_shootdown_cpus(); 212 nmi_shootdown_cpus();
216 lapic_shutdown();
217#if defined(CONFIG_X86_IO_APIC)
218 disable_IO_APIC();
219#endif
220 crash_save_self(regs); 213 crash_save_self(regs);
221} 214}
diff --git a/arch/i386/kernel/i8259.c b/arch/i386/kernel/i8259.c
index 323ef8ab3244..d86f24909284 100644
--- a/arch/i386/kernel/i8259.c
+++ b/arch/i386/kernel/i8259.c
@@ -435,4 +435,8 @@ void __init init_IRQ(void)
435 setup_irq(FPU_IRQ, &fpu_irq); 435 setup_irq(FPU_IRQ, &fpu_irq);
436 436
437 irq_ctx_init(smp_processor_id()); 437 irq_ctx_init(smp_processor_id());
438
439#ifdef CONFIG_X86_LOCAL_APIC
440 APIC_init();
441#endif
438} 442}
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c
index fb3991e8229e..5a77c52b20a9 100644
--- a/arch/i386/kernel/io_apic.c
+++ b/arch/i386/kernel/io_apic.c
@@ -46,6 +46,9 @@
46int (*ioapic_renumber_irq)(int ioapic, int irq); 46int (*ioapic_renumber_irq)(int ioapic, int irq);
47atomic_t irq_mis_count; 47atomic_t irq_mis_count;
48 48
49/* Where if anywhere is the i8259 connect in external int mode */
50static struct { int pin, apic; } ioapic_i8259 = { -1, -1 };
51
49static DEFINE_SPINLOCK(ioapic_lock); 52static DEFINE_SPINLOCK(ioapic_lock);
50 53
51/* 54/*
@@ -738,7 +741,7 @@ static int find_irq_entry(int apic, int pin, int type)
738/* 741/*
739 * Find the pin to which IRQ[irq] (ISA) is connected 742 * Find the pin to which IRQ[irq] (ISA) is connected
740 */ 743 */
741static int find_isa_irq_pin(int irq, int type) 744static int __init find_isa_irq_pin(int irq, int type)
742{ 745{
743 int i; 746 int i;
744 747
@@ -758,6 +761,33 @@ static int find_isa_irq_pin(int irq, int type)
758 return -1; 761 return -1;
759} 762}
760 763
764static int __init find_isa_irq_apic(int irq, int type)
765{
766 int i;
767
768 for (i = 0; i < mp_irq_entries; i++) {
769 int lbus = mp_irqs[i].mpc_srcbus;
770
771 if ((mp_bus_id_to_type[lbus] == MP_BUS_ISA ||
772 mp_bus_id_to_type[lbus] == MP_BUS_EISA ||
773 mp_bus_id_to_type[lbus] == MP_BUS_MCA ||
774 mp_bus_id_to_type[lbus] == MP_BUS_NEC98
775 ) &&
776 (mp_irqs[i].mpc_irqtype == type) &&
777 (mp_irqs[i].mpc_srcbusirq == irq))
778 break;
779 }
780 if (i < mp_irq_entries) {
781 int apic;
782 for(apic = 0; apic < nr_ioapics; apic++) {
783 if (mp_ioapics[apic].mpc_apicid == mp_irqs[i].mpc_dstapic)
784 return apic;
785 }
786 }
787
788 return -1;
789}
790
761/* 791/*
762 * Find a specific PCI IRQ entry. 792 * Find a specific PCI IRQ entry.
763 * Not an __init, possibly needed by modules 793 * Not an __init, possibly needed by modules
@@ -1253,7 +1283,7 @@ static void __init setup_IO_APIC_irqs(void)
1253/* 1283/*
1254 * Set up the 8259A-master output pin: 1284 * Set up the 8259A-master output pin:
1255 */ 1285 */
1256static void __init setup_ExtINT_IRQ0_pin(unsigned int pin, int vector) 1286static void __init setup_ExtINT_IRQ0_pin(unsigned int apic, unsigned int pin, int vector)
1257{ 1287{
1258 struct IO_APIC_route_entry entry; 1288 struct IO_APIC_route_entry entry;
1259 unsigned long flags; 1289 unsigned long flags;
@@ -1287,8 +1317,8 @@ static void __init setup_ExtINT_IRQ0_pin(unsigned int pin, int vector)
1287 * Add it to the IO-APIC irq-routing table: 1317 * Add it to the IO-APIC irq-routing table:
1288 */ 1318 */
1289 spin_lock_irqsave(&ioapic_lock, flags); 1319 spin_lock_irqsave(&ioapic_lock, flags);
1290 io_apic_write(0, 0x11+2*pin, *(((int *)&entry)+1)); 1320 io_apic_write(apic, 0x11+2*pin, *(((int *)&entry)+1));
1291 io_apic_write(0, 0x10+2*pin, *(((int *)&entry)+0)); 1321 io_apic_write(apic, 0x10+2*pin, *(((int *)&entry)+0));
1292 spin_unlock_irqrestore(&ioapic_lock, flags); 1322 spin_unlock_irqrestore(&ioapic_lock, flags);
1293 1323
1294 enable_8259A_irq(0); 1324 enable_8259A_irq(0);
@@ -1595,7 +1625,8 @@ void /*__init*/ print_PIC(void)
1595static void __init enable_IO_APIC(void) 1625static void __init enable_IO_APIC(void)
1596{ 1626{
1597 union IO_APIC_reg_01 reg_01; 1627 union IO_APIC_reg_01 reg_01;
1598 int i; 1628 int i8259_apic, i8259_pin;
1629 int i, apic;
1599 unsigned long flags; 1630 unsigned long flags;
1600 1631
1601 for (i = 0; i < PIN_MAP_SIZE; i++) { 1632 for (i = 0; i < PIN_MAP_SIZE; i++) {
@@ -1609,11 +1640,52 @@ static void __init enable_IO_APIC(void)
1609 /* 1640 /*
1610 * The number of IO-APIC IRQ registers (== #pins): 1641 * The number of IO-APIC IRQ registers (== #pins):
1611 */ 1642 */
1612 for (i = 0; i < nr_ioapics; i++) { 1643 for (apic = 0; apic < nr_ioapics; apic++) {
1613 spin_lock_irqsave(&ioapic_lock, flags); 1644 spin_lock_irqsave(&ioapic_lock, flags);
1614 reg_01.raw = io_apic_read(i, 1); 1645 reg_01.raw = io_apic_read(apic, 1);
1615 spin_unlock_irqrestore(&ioapic_lock, flags); 1646 spin_unlock_irqrestore(&ioapic_lock, flags);
1616 nr_ioapic_registers[i] = reg_01.bits.entries+1; 1647 nr_ioapic_registers[apic] = reg_01.bits.entries+1;
1648 }
1649 for(apic = 0; apic < nr_ioapics; apic++) {
1650 int pin;
1651 /* See if any of the pins is in ExtINT mode */
1652 for(pin = 0; pin < nr_ioapic_registers[i]; pin++) {
1653 struct IO_APIC_route_entry entry;
1654 spin_lock_irqsave(&ioapic_lock, flags);
1655 *(((int *)&entry) + 0) = io_apic_read(apic, 0x10 + 2 * pin);
1656 *(((int *)&entry) + 1) = io_apic_read(apic, 0x11 + 2 * pin);
1657 spin_unlock_irqrestore(&ioapic_lock, flags);
1658
1659
1660 /* If the interrupt line is enabled and in ExtInt mode
1661 * I have found the pin where the i8259 is connected.
1662 */
1663 if ((entry.mask == 0) && (entry.delivery_mode == dest_ExtINT)) {
1664 ioapic_i8259.apic = apic;
1665 ioapic_i8259.pin = pin;
1666 goto found_i8259;
1667 }
1668 }
1669 }
1670 found_i8259:
1671 /* Look to see what if the MP table has reported the ExtINT */
1672 /* If we could not find the appropriate pin by looking at the ioapic
1673 * the i8259 probably is not connected the ioapic but give the
1674 * mptable a chance anyway.
1675 */
1676 i8259_pin = find_isa_irq_pin(0, mp_ExtINT);
1677 i8259_apic = find_isa_irq_apic(0, mp_ExtINT);
1678 /* Trust the MP table if nothing is setup in the hardware */
1679 if ((ioapic_i8259.pin == -1) && (i8259_pin >= 0)) {
1680 printk(KERN_WARNING "ExtINT not setup in hardware but reported by MP table\n");
1681 ioapic_i8259.pin = i8259_pin;
1682 ioapic_i8259.apic = i8259_apic;
1683 }
1684 /* Complain if the MP table and the hardware disagree */
1685 if (((ioapic_i8259.apic != i8259_apic) || (ioapic_i8259.pin != i8259_pin)) &&
1686 (i8259_pin >= 0) && (ioapic_i8259.pin >= 0))
1687 {
1688 printk(KERN_WARNING "ExtINT in hardware and MP table differ\n");
1617 } 1689 }
1618 1690
1619 /* 1691 /*
@@ -1627,7 +1699,6 @@ static void __init enable_IO_APIC(void)
1627 */ 1699 */
1628void disable_IO_APIC(void) 1700void disable_IO_APIC(void)
1629{ 1701{
1630 int pin;
1631 /* 1702 /*
1632 * Clear the IO-APIC before rebooting: 1703 * Clear the IO-APIC before rebooting:
1633 */ 1704 */
@@ -1638,8 +1709,7 @@ void disable_IO_APIC(void)
1638 * Put that IOAPIC in virtual wire mode 1709 * Put that IOAPIC in virtual wire mode
1639 * so legacy interrupts can be delivered. 1710 * so legacy interrupts can be delivered.
1640 */ 1711 */
1641 pin = find_isa_irq_pin(0, mp_ExtINT); 1712 if (ioapic_i8259.pin != -1) {
1642 if (pin != -1) {
1643 struct IO_APIC_route_entry entry; 1713 struct IO_APIC_route_entry entry;
1644 unsigned long flags; 1714 unsigned long flags;
1645 1715
@@ -1650,7 +1720,7 @@ void disable_IO_APIC(void)
1650 entry.polarity = 0; /* High */ 1720 entry.polarity = 0; /* High */
1651 entry.delivery_status = 0; 1721 entry.delivery_status = 0;
1652 entry.dest_mode = 0; /* Physical */ 1722 entry.dest_mode = 0; /* Physical */
1653 entry.delivery_mode = 7; /* ExtInt */ 1723 entry.delivery_mode = dest_ExtINT; /* ExtInt */
1654 entry.vector = 0; 1724 entry.vector = 0;
1655 entry.dest.physical.physical_dest = 0; 1725 entry.dest.physical.physical_dest = 0;
1656 1726
@@ -1659,11 +1729,13 @@ void disable_IO_APIC(void)
1659 * Add it to the IO-APIC irq-routing table: 1729 * Add it to the IO-APIC irq-routing table:
1660 */ 1730 */
1661 spin_lock_irqsave(&ioapic_lock, flags); 1731 spin_lock_irqsave(&ioapic_lock, flags);
1662 io_apic_write(0, 0x11+2*pin, *(((int *)&entry)+1)); 1732 io_apic_write(ioapic_i8259.apic, 0x11+2*ioapic_i8259.pin,
1663 io_apic_write(0, 0x10+2*pin, *(((int *)&entry)+0)); 1733 *(((int *)&entry)+1));
1734 io_apic_write(ioapic_i8259.apic, 0x10+2*ioapic_i8259.pin,
1735 *(((int *)&entry)+0));
1664 spin_unlock_irqrestore(&ioapic_lock, flags); 1736 spin_unlock_irqrestore(&ioapic_lock, flags);
1665 } 1737 }
1666 disconnect_bsp_APIC(pin != -1); 1738 disconnect_bsp_APIC(ioapic_i8259.pin != -1);
1667} 1739}
1668 1740
1669/* 1741/*
@@ -2113,20 +2185,21 @@ static void setup_nmi (void)
2113 */ 2185 */
2114static inline void unlock_ExtINT_logic(void) 2186static inline void unlock_ExtINT_logic(void)
2115{ 2187{
2116 int pin, i; 2188 int apic, pin, i;
2117 struct IO_APIC_route_entry entry0, entry1; 2189 struct IO_APIC_route_entry entry0, entry1;
2118 unsigned char save_control, save_freq_select; 2190 unsigned char save_control, save_freq_select;
2119 unsigned long flags; 2191 unsigned long flags;
2120 2192
2121 pin = find_isa_irq_pin(8, mp_INT); 2193 pin = find_isa_irq_pin(8, mp_INT);
2194 apic = find_isa_irq_apic(8, mp_INT);
2122 if (pin == -1) 2195 if (pin == -1)
2123 return; 2196 return;
2124 2197
2125 spin_lock_irqsave(&ioapic_lock, flags); 2198 spin_lock_irqsave(&ioapic_lock, flags);
2126 *(((int *)&entry0) + 1) = io_apic_read(0, 0x11 + 2 * pin); 2199 *(((int *)&entry0) + 1) = io_apic_read(apic, 0x11 + 2 * pin);
2127 *(((int *)&entry0) + 0) = io_apic_read(0, 0x10 + 2 * pin); 2200 *(((int *)&entry0) + 0) = io_apic_read(apic, 0x10 + 2 * pin);
2128 spin_unlock_irqrestore(&ioapic_lock, flags); 2201 spin_unlock_irqrestore(&ioapic_lock, flags);
2129 clear_IO_APIC_pin(0, pin); 2202 clear_IO_APIC_pin(apic, pin);
2130 2203
2131 memset(&entry1, 0, sizeof(entry1)); 2204 memset(&entry1, 0, sizeof(entry1));
2132 2205
@@ -2139,8 +2212,8 @@ static inline void unlock_ExtINT_logic(void)
2139 entry1.vector = 0; 2212 entry1.vector = 0;
2140 2213
2141 spin_lock_irqsave(&ioapic_lock, flags); 2214 spin_lock_irqsave(&ioapic_lock, flags);
2142 io_apic_write(0, 0x11 + 2 * pin, *(((int *)&entry1) + 1)); 2215 io_apic_write(apic, 0x11 + 2 * pin, *(((int *)&entry1) + 1));
2143 io_apic_write(0, 0x10 + 2 * pin, *(((int *)&entry1) + 0)); 2216 io_apic_write(apic, 0x10 + 2 * pin, *(((int *)&entry1) + 0));
2144 spin_unlock_irqrestore(&ioapic_lock, flags); 2217 spin_unlock_irqrestore(&ioapic_lock, flags);
2145 2218
2146 save_control = CMOS_READ(RTC_CONTROL); 2219 save_control = CMOS_READ(RTC_CONTROL);
@@ -2158,11 +2231,11 @@ static inline void unlock_ExtINT_logic(void)
2158 2231
2159 CMOS_WRITE(save_control, RTC_CONTROL); 2232 CMOS_WRITE(save_control, RTC_CONTROL);
2160 CMOS_WRITE(save_freq_select, RTC_FREQ_SELECT); 2233 CMOS_WRITE(save_freq_select, RTC_FREQ_SELECT);
2161 clear_IO_APIC_pin(0, pin); 2234 clear_IO_APIC_pin(apic, pin);
2162 2235
2163 spin_lock_irqsave(&ioapic_lock, flags); 2236 spin_lock_irqsave(&ioapic_lock, flags);
2164 io_apic_write(0, 0x11 + 2 * pin, *(((int *)&entry0) + 1)); 2237 io_apic_write(apic, 0x11 + 2 * pin, *(((int *)&entry0) + 1));
2165 io_apic_write(0, 0x10 + 2 * pin, *(((int *)&entry0) + 0)); 2238 io_apic_write(apic, 0x10 + 2 * pin, *(((int *)&entry0) + 0));
2166 spin_unlock_irqrestore(&ioapic_lock, flags); 2239 spin_unlock_irqrestore(&ioapic_lock, flags);
2167} 2240}
2168 2241
@@ -2174,7 +2247,7 @@ static inline void unlock_ExtINT_logic(void)
2174 */ 2247 */
2175static inline void check_timer(void) 2248static inline void check_timer(void)
2176{ 2249{
2177 int pin1, pin2; 2250 int apic1, pin1, apic2, pin2;
2178 int vector; 2251 int vector;
2179 2252
2180 /* 2253 /*
@@ -2196,10 +2269,13 @@ static inline void check_timer(void)
2196 timer_ack = 1; 2269 timer_ack = 1;
2197 enable_8259A_irq(0); 2270 enable_8259A_irq(0);
2198 2271
2199 pin1 = find_isa_irq_pin(0, mp_INT); 2272 pin1 = find_isa_irq_pin(0, mp_INT);
2200 pin2 = find_isa_irq_pin(0, mp_ExtINT); 2273 apic1 = find_isa_irq_apic(0, mp_INT);
2274 pin2 = ioapic_i8259.pin;
2275 apic2 = ioapic_i8259.apic;
2201 2276
2202 printk(KERN_INFO "..TIMER: vector=0x%02X pin1=%d pin2=%d\n", vector, pin1, pin2); 2277 printk(KERN_INFO "..TIMER: vector=0x%02X apic1=%d pin1=%d apic2=%d pin2=%d\n",
2278 vector, apic1, pin1, apic2, pin2);
2203 2279
2204 if (pin1 != -1) { 2280 if (pin1 != -1) {
2205 /* 2281 /*
@@ -2216,8 +2292,9 @@ static inline void check_timer(void)
2216 clear_IO_APIC_pin(0, pin1); 2292 clear_IO_APIC_pin(0, pin1);
2217 return; 2293 return;
2218 } 2294 }
2219 clear_IO_APIC_pin(0, pin1); 2295 clear_IO_APIC_pin(apic1, pin1);
2220 printk(KERN_ERR "..MP-BIOS bug: 8254 timer not connected to IO-APIC\n"); 2296 printk(KERN_ERR "..MP-BIOS bug: 8254 timer not connected to "
2297 "IO-APIC\n");
2221 } 2298 }
2222 2299
2223 printk(KERN_INFO "...trying to set up timer (IRQ0) through the 8259A ... "); 2300 printk(KERN_INFO "...trying to set up timer (IRQ0) through the 8259A ... ");
@@ -2226,13 +2303,13 @@ static inline void check_timer(void)
2226 /* 2303 /*
2227 * legacy devices should be connected to IO APIC #0 2304 * legacy devices should be connected to IO APIC #0
2228 */ 2305 */
2229 setup_ExtINT_IRQ0_pin(pin2, vector); 2306 setup_ExtINT_IRQ0_pin(apic2, pin2, vector);
2230 if (timer_irq_works()) { 2307 if (timer_irq_works()) {
2231 printk("works.\n"); 2308 printk("works.\n");
2232 if (pin1 != -1) 2309 if (pin1 != -1)
2233 replace_pin_at_irq(0, 0, pin1, 0, pin2); 2310 replace_pin_at_irq(0, apic1, pin1, apic2, pin2);
2234 else 2311 else
2235 add_pin_to_irq(0, 0, pin2); 2312 add_pin_to_irq(0, apic2, pin2);
2236 if (nmi_watchdog == NMI_IO_APIC) { 2313 if (nmi_watchdog == NMI_IO_APIC) {
2237 setup_nmi(); 2314 setup_nmi();
2238 } 2315 }
@@ -2241,7 +2318,7 @@ static inline void check_timer(void)
2241 /* 2318 /*
2242 * Cleanup, just in case ... 2319 * Cleanup, just in case ...
2243 */ 2320 */
2244 clear_IO_APIC_pin(0, pin2); 2321 clear_IO_APIC_pin(apic2, pin2);
2245 } 2322 }
2246 printk(" failed.\n"); 2323 printk(" failed.\n");
2247 2324
@@ -2310,11 +2387,15 @@ void __init setup_IO_APIC(void)
2310 sync_Arb_IDs(); 2387 sync_Arb_IDs();
2311 setup_IO_APIC_irqs(); 2388 setup_IO_APIC_irqs();
2312 init_IO_APIC_traps(); 2389 init_IO_APIC_traps();
2313 check_timer();
2314 if (!acpi_ioapic) 2390 if (!acpi_ioapic)
2315 print_IO_APIC(); 2391 print_IO_APIC();
2316} 2392}
2317 2393
2394void __init IO_APIC_late_time_init(void)
2395{
2396 check_timer();
2397}
2398
2318/* 2399/*
2319 * Called after all the initialization is done. If we didnt find any 2400 * Called after all the initialization is done. If we didnt find any
2320 * APIC bugs then we can allow the modify fast path 2401 * APIC bugs then we can allow the modify fast path
diff --git a/arch/i386/kernel/irq.c b/arch/i386/kernel/irq.c
index ce66dcc26d90..1a201a932865 100644
--- a/arch/i386/kernel/irq.c
+++ b/arch/i386/kernel/irq.c
@@ -218,7 +218,7 @@ int show_interrupts(struct seq_file *p, void *v)
218 218
219 if (i == 0) { 219 if (i == 0) {
220 seq_printf(p, " "); 220 seq_printf(p, " ");
221 for_each_cpu(j) 221 for_each_online_cpu(j)
222 seq_printf(p, "CPU%d ",j); 222 seq_printf(p, "CPU%d ",j);
223 seq_putc(p, '\n'); 223 seq_putc(p, '\n');
224 } 224 }
@@ -232,7 +232,7 @@ int show_interrupts(struct seq_file *p, void *v)
232#ifndef CONFIG_SMP 232#ifndef CONFIG_SMP
233 seq_printf(p, "%10u ", kstat_irqs(i)); 233 seq_printf(p, "%10u ", kstat_irqs(i));
234#else 234#else
235 for_each_cpu(j) 235 for_each_online_cpu(j)
236 seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]); 236 seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]);
237#endif 237#endif
238 seq_printf(p, " %14s", irq_desc[i].handler->typename); 238 seq_printf(p, " %14s", irq_desc[i].handler->typename);
@@ -246,12 +246,12 @@ skip:
246 spin_unlock_irqrestore(&irq_desc[i].lock, flags); 246 spin_unlock_irqrestore(&irq_desc[i].lock, flags);
247 } else if (i == NR_IRQS) { 247 } else if (i == NR_IRQS) {
248 seq_printf(p, "NMI: "); 248 seq_printf(p, "NMI: ");
249 for_each_cpu(j) 249 for_each_online_cpu(j)
250 seq_printf(p, "%10u ", nmi_count(j)); 250 seq_printf(p, "%10u ", nmi_count(j));
251 seq_putc(p, '\n'); 251 seq_putc(p, '\n');
252#ifdef CONFIG_X86_LOCAL_APIC 252#ifdef CONFIG_X86_LOCAL_APIC
253 seq_printf(p, "LOC: "); 253 seq_printf(p, "LOC: ");
254 for_each_cpu(j) 254 for_each_online_cpu(j)
255 seq_printf(p, "%10u ", 255 seq_printf(p, "%10u ",
256 per_cpu(irq_stat,j).apic_timer_irqs); 256 per_cpu(irq_stat,j).apic_timer_irqs);
257 seq_putc(p, '\n'); 257 seq_putc(p, '\n');
diff --git a/arch/i386/kernel/mpparse.c b/arch/i386/kernel/mpparse.c
index 27aabfceb67e..8f767d9aa45d 100644
--- a/arch/i386/kernel/mpparse.c
+++ b/arch/i386/kernel/mpparse.c
@@ -69,7 +69,7 @@ unsigned int def_to_bigsmp = 0;
69/* Processor that is doing the boot up */ 69/* Processor that is doing the boot up */
70unsigned int boot_cpu_physical_apicid = -1U; 70unsigned int boot_cpu_physical_apicid = -1U;
71/* Internal processor count */ 71/* Internal processor count */
72static unsigned int __initdata num_processors; 72static unsigned int __devinitdata num_processors;
73 73
74/* Bitmask of physically existing CPUs */ 74/* Bitmask of physically existing CPUs */
75physid_mask_t phys_cpu_present_map; 75physid_mask_t phys_cpu_present_map;
@@ -119,7 +119,7 @@ static int MP_valid_apicid(int apicid, int version)
119} 119}
120#endif 120#endif
121 121
122static void __init MP_processor_info (struct mpc_config_processor *m) 122static void __devinit MP_processor_info (struct mpc_config_processor *m)
123{ 123{
124 int ver, apicid; 124 int ver, apicid;
125 physid_mask_t phys_cpu; 125 physid_mask_t phys_cpu;
@@ -182,17 +182,6 @@ static void __init MP_processor_info (struct mpc_config_processor *m)
182 boot_cpu_physical_apicid = m->mpc_apicid; 182 boot_cpu_physical_apicid = m->mpc_apicid;
183 } 183 }
184 184
185 if (num_processors >= NR_CPUS) {
186 printk(KERN_WARNING "WARNING: NR_CPUS limit of %i reached."
187 " Processor ignored.\n", NR_CPUS);
188 return;
189 }
190
191 if (num_processors >= maxcpus) {
192 printk(KERN_WARNING "WARNING: maxcpus limit of %i reached."
193 " Processor ignored.\n", maxcpus);
194 return;
195 }
196 ver = m->mpc_apicver; 185 ver = m->mpc_apicver;
197 186
198 if (!MP_valid_apicid(apicid, ver)) { 187 if (!MP_valid_apicid(apicid, ver)) {
@@ -201,11 +190,6 @@ static void __init MP_processor_info (struct mpc_config_processor *m)
201 return; 190 return;
202 } 191 }
203 192
204 cpu_set(num_processors, cpu_possible_map);
205 num_processors++;
206 phys_cpu = apicid_to_cpu_present(apicid);
207 physids_or(phys_cpu_present_map, phys_cpu_present_map, phys_cpu);
208
209 /* 193 /*
210 * Validate version 194 * Validate version
211 */ 195 */
@@ -216,6 +200,25 @@ static void __init MP_processor_info (struct mpc_config_processor *m)
216 ver = 0x10; 200 ver = 0x10;
217 } 201 }
218 apic_version[m->mpc_apicid] = ver; 202 apic_version[m->mpc_apicid] = ver;
203
204 phys_cpu = apicid_to_cpu_present(apicid);
205 physids_or(phys_cpu_present_map, phys_cpu_present_map, phys_cpu);
206
207 if (num_processors >= NR_CPUS) {
208 printk(KERN_WARNING "WARNING: NR_CPUS limit of %i reached."
209 " Processor ignored.\n", NR_CPUS);
210 return;
211 }
212
213 if (num_processors >= maxcpus) {
214 printk(KERN_WARNING "WARNING: maxcpus limit of %i reached."
215 " Processor ignored.\n", maxcpus);
216 return;
217 }
218
219 cpu_set(num_processors, cpu_possible_map);
220 num_processors++;
221
219 if ((num_processors > 8) && 222 if ((num_processors > 8) &&
220 APIC_XAPIC(ver) && 223 APIC_XAPIC(ver) &&
221 (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL)) 224 (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL))
@@ -834,7 +837,7 @@ void __init mp_register_lapic_address (
834} 837}
835 838
836 839
837void __init mp_register_lapic ( 840void __devinit mp_register_lapic (
838 u8 id, 841 u8 id,
839 u8 enabled) 842 u8 enabled)
840{ 843{
diff --git a/arch/i386/kernel/msr.c b/arch/i386/kernel/msr.c
index 03100d6fc5d6..44470fea4309 100644
--- a/arch/i386/kernel/msr.c
+++ b/arch/i386/kernel/msr.c
@@ -246,7 +246,7 @@ static int msr_class_device_create(int i)
246 int err = 0; 246 int err = 0;
247 struct class_device *class_err; 247 struct class_device *class_err;
248 248
249 class_err = class_device_create(msr_class, MKDEV(MSR_MAJOR, i), NULL, "msr%d",i); 249 class_err = class_device_create(msr_class, NULL, MKDEV(MSR_MAJOR, i), NULL, "msr%d",i);
250 if (IS_ERR(class_err)) 250 if (IS_ERR(class_err))
251 err = PTR_ERR(class_err); 251 err = PTR_ERR(class_err);
252 return err; 252 return err;
diff --git a/arch/i386/kernel/nmi.c b/arch/i386/kernel/nmi.c
index 72515b8a1b12..d661703ac1cb 100644
--- a/arch/i386/kernel/nmi.c
+++ b/arch/i386/kernel/nmi.c
@@ -100,16 +100,44 @@ int nmi_active;
100 (P4_CCCR_OVF_PMI0|P4_CCCR_THRESHOLD(15)|P4_CCCR_COMPLEMENT| \ 100 (P4_CCCR_OVF_PMI0|P4_CCCR_THRESHOLD(15)|P4_CCCR_COMPLEMENT| \
101 P4_CCCR_COMPARE|P4_CCCR_REQUIRED|P4_CCCR_ESCR_SELECT(4)|P4_CCCR_ENABLE) 101 P4_CCCR_COMPARE|P4_CCCR_REQUIRED|P4_CCCR_ESCR_SELECT(4)|P4_CCCR_ENABLE)
102 102
103#ifdef CONFIG_SMP
104/* The performance counters used by NMI_LOCAL_APIC don't trigger when
105 * the CPU is idle. To make sure the NMI watchdog really ticks on all
106 * CPUs during the test make them busy.
107 */
108static __init void nmi_cpu_busy(void *data)
109{
110 volatile int *endflag = data;
111 local_irq_enable();
112 /* Intentionally don't use cpu_relax here. This is
113 to make sure that the performance counter really ticks,
114 even if there is a simulator or similar that catches the
115 pause instruction. On a real HT machine this is fine because
116 all other CPUs are busy with "useless" delay loops and don't
117 care if they get somewhat less cycles. */
118 while (*endflag == 0)
119 barrier();
120}
121#endif
122
103static int __init check_nmi_watchdog(void) 123static int __init check_nmi_watchdog(void)
104{ 124{
105 unsigned int prev_nmi_count[NR_CPUS]; 125 volatile int endflag = 0;
126 unsigned int *prev_nmi_count;
106 int cpu; 127 int cpu;
107 128
108 if (nmi_watchdog == NMI_NONE) 129 if (nmi_watchdog == NMI_NONE)
109 return 0; 130 return 0;
110 131
132 prev_nmi_count = kmalloc(NR_CPUS * sizeof(int), GFP_KERNEL);
133 if (!prev_nmi_count)
134 return -1;
135
111 printk(KERN_INFO "Testing NMI watchdog ... "); 136 printk(KERN_INFO "Testing NMI watchdog ... ");
112 137
138 if (nmi_watchdog == NMI_LOCAL_APIC)
139 smp_call_function(nmi_cpu_busy, (void *)&endflag, 0, 0);
140
113 for (cpu = 0; cpu < NR_CPUS; cpu++) 141 for (cpu = 0; cpu < NR_CPUS; cpu++)
114 prev_nmi_count[cpu] = per_cpu(irq_stat, cpu).__nmi_count; 142 prev_nmi_count[cpu] = per_cpu(irq_stat, cpu).__nmi_count;
115 local_irq_enable(); 143 local_irq_enable();
@@ -123,12 +151,18 @@ static int __init check_nmi_watchdog(void)
123 continue; 151 continue;
124#endif 152#endif
125 if (nmi_count(cpu) - prev_nmi_count[cpu] <= 5) { 153 if (nmi_count(cpu) - prev_nmi_count[cpu] <= 5) {
126 printk("CPU#%d: NMI appears to be stuck!\n", cpu); 154 endflag = 1;
155 printk("CPU#%d: NMI appears to be stuck (%d->%d)!\n",
156 cpu,
157 prev_nmi_count[cpu],
158 nmi_count(cpu));
127 nmi_active = 0; 159 nmi_active = 0;
128 lapic_nmi_owner &= ~LAPIC_NMI_WATCHDOG; 160 lapic_nmi_owner &= ~LAPIC_NMI_WATCHDOG;
161 kfree(prev_nmi_count);
129 return -1; 162 return -1;
130 } 163 }
131 } 164 }
165 endflag = 1;
132 printk("OK.\n"); 166 printk("OK.\n");
133 167
134 /* now that we know it works we can reduce NMI frequency to 168 /* now that we know it works we can reduce NMI frequency to
@@ -136,6 +170,7 @@ static int __init check_nmi_watchdog(void)
136 if (nmi_watchdog == NMI_LOCAL_APIC) 170 if (nmi_watchdog == NMI_LOCAL_APIC)
137 nmi_hz = 1; 171 nmi_hz = 1;
138 172
173 kfree(prev_nmi_count);
139 return 0; 174 return 0;
140} 175}
141/* This needs to happen later in boot so counters are working */ 176/* This needs to happen later in boot so counters are working */
diff --git a/arch/i386/kernel/ptrace.c b/arch/i386/kernel/ptrace.c
index 7b6368bf8974..efd11f09c996 100644
--- a/arch/i386/kernel/ptrace.c
+++ b/arch/i386/kernel/ptrace.c
@@ -354,7 +354,7 @@ ptrace_set_thread_area(struct task_struct *child,
354 return 0; 354 return 0;
355} 355}
356 356
357asmlinkage int sys_ptrace(long request, long pid, long addr, long data) 357asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
358{ 358{
359 struct task_struct *child; 359 struct task_struct *child;
360 struct user * dummy = NULL; 360 struct user * dummy = NULL;
diff --git a/arch/i386/kernel/reboot_fixups.c b/arch/i386/kernel/reboot_fixups.c
index 1b183b378c2c..c9b87330aeea 100644
--- a/arch/i386/kernel/reboot_fixups.c
+++ b/arch/i386/kernel/reboot_fixups.c
@@ -44,7 +44,7 @@ void mach_reboot_fixups(void)
44 44
45 for (i=0; i < (sizeof(fixups_table)/sizeof(fixups_table[0])); i++) { 45 for (i=0; i < (sizeof(fixups_table)/sizeof(fixups_table[0])); i++) {
46 cur = &(fixups_table[i]); 46 cur = &(fixups_table[i]);
47 dev = pci_get_device(cur->vendor, cur->device, 0); 47 dev = pci_get_device(cur->vendor, cur->device, NULL);
48 if (!dev) 48 if (!dev)
49 continue; 49 continue;
50 50
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c
index 9b8c8a19824d..b48ac635f3c1 100644
--- a/arch/i386/kernel/setup.c
+++ b/arch/i386/kernel/setup.c
@@ -389,14 +389,24 @@ static void __init limit_regions(unsigned long long size)
389 } 389 }
390 } 390 }
391 for (i = 0; i < e820.nr_map; i++) { 391 for (i = 0; i < e820.nr_map; i++) {
392 if (e820.map[i].type == E820_RAM) { 392 current_addr = e820.map[i].addr + e820.map[i].size;
393 current_addr = e820.map[i].addr + e820.map[i].size; 393 if (current_addr < size)
394 if (current_addr >= size) { 394 continue;
395 e820.map[i].size -= current_addr-size; 395
396 e820.nr_map = i + 1; 396 if (e820.map[i].type != E820_RAM)
397 return; 397 continue;
398 } 398
399 if (e820.map[i].addr >= size) {
400 /*
401 * This region starts past the end of the
402 * requested size, skip it completely.
403 */
404 e820.nr_map = i;
405 } else {
406 e820.nr_map = i + 1;
407 e820.map[i].size -= current_addr - size;
399 } 408 }
409 return;
400 } 410 }
401} 411}
402 412
diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c
index 1fb26d0e30b6..5a2bbe0c4fff 100644
--- a/arch/i386/kernel/smpboot.c
+++ b/arch/i386/kernel/smpboot.c
@@ -87,7 +87,11 @@ EXPORT_SYMBOL(cpu_online_map);
87cpumask_t cpu_callin_map; 87cpumask_t cpu_callin_map;
88cpumask_t cpu_callout_map; 88cpumask_t cpu_callout_map;
89EXPORT_SYMBOL(cpu_callout_map); 89EXPORT_SYMBOL(cpu_callout_map);
90#ifdef CONFIG_HOTPLUG_CPU
91cpumask_t cpu_possible_map = CPU_MASK_ALL;
92#else
90cpumask_t cpu_possible_map; 93cpumask_t cpu_possible_map;
94#endif
91EXPORT_SYMBOL(cpu_possible_map); 95EXPORT_SYMBOL(cpu_possible_map);
92static cpumask_t smp_commenced_mask; 96static cpumask_t smp_commenced_mask;
93 97
@@ -1074,6 +1078,16 @@ void *xquad_portio;
1074EXPORT_SYMBOL(xquad_portio); 1078EXPORT_SYMBOL(xquad_portio);
1075#endif 1079#endif
1076 1080
1081/*
1082 * Fall back to non SMP mode after errors.
1083 *
1084 */
1085static __init void disable_smp(void)
1086{
1087 cpu_set(0, cpu_sibling_map[0]);
1088 cpu_set(0, cpu_core_map[0]);
1089}
1090
1077static void __init smp_boot_cpus(unsigned int max_cpus) 1091static void __init smp_boot_cpus(unsigned int max_cpus)
1078{ 1092{
1079 int apicid, cpu, bit, kicked; 1093 int apicid, cpu, bit, kicked;
@@ -1086,7 +1100,6 @@ static void __init smp_boot_cpus(unsigned int max_cpus)
1086 printk("CPU%d: ", 0); 1100 printk("CPU%d: ", 0);
1087 print_cpu_info(&cpu_data[0]); 1101 print_cpu_info(&cpu_data[0]);
1088 1102
1089 boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID));
1090 boot_cpu_logical_apicid = logical_smp_processor_id(); 1103 boot_cpu_logical_apicid = logical_smp_processor_id();
1091 x86_cpu_to_apicid[0] = boot_cpu_physical_apicid; 1104 x86_cpu_to_apicid[0] = boot_cpu_physical_apicid;
1092 1105
@@ -1098,68 +1111,27 @@ static void __init smp_boot_cpus(unsigned int max_cpus)
1098 cpus_clear(cpu_core_map[0]); 1111 cpus_clear(cpu_core_map[0]);
1099 cpu_set(0, cpu_core_map[0]); 1112 cpu_set(0, cpu_core_map[0]);
1100 1113
1114 map_cpu_to_logical_apicid();
1115
1101 /* 1116 /*
1102 * If we couldn't find an SMP configuration at boot time, 1117 * If we couldn't find an SMP configuration at boot time,
1103 * get out of here now! 1118 * get out of here now!
1104 */ 1119 */
1105 if (!smp_found_config && !acpi_lapic) { 1120 if (!smp_found_config && !acpi_lapic) {
1106 printk(KERN_NOTICE "SMP motherboard not detected.\n"); 1121 printk(KERN_NOTICE "SMP motherboard not detected.\n");
1107 smpboot_clear_io_apic_irqs(); 1122 disable_smp();
1108 phys_cpu_present_map = physid_mask_of_physid(0);
1109 if (APIC_init_uniprocessor())
1110 printk(KERN_NOTICE "Local APIC not detected."
1111 " Using dummy APIC emulation.\n");
1112 map_cpu_to_logical_apicid();
1113 cpu_set(0, cpu_sibling_map[0]);
1114 cpu_set(0, cpu_core_map[0]);
1115 return; 1123 return;
1116 } 1124 }
1117 1125
1118 /* 1126 /*
1119 * Should not be necessary because the MP table should list the boot
1120 * CPU too, but we do it for the sake of robustness anyway.
1121 * Makes no sense to do this check in clustered apic mode, so skip it
1122 */
1123 if (!check_phys_apicid_present(boot_cpu_physical_apicid)) {
1124 printk("weird, boot CPU (#%d) not listed by the BIOS.\n",
1125 boot_cpu_physical_apicid);
1126 physid_set(hard_smp_processor_id(), phys_cpu_present_map);
1127 }
1128
1129 /*
1130 * If we couldn't find a local APIC, then get out of here now!
1131 */
1132 if (APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid]) && !cpu_has_apic) {
1133 printk(KERN_ERR "BIOS bug, local APIC #%d not detected!...\n",
1134 boot_cpu_physical_apicid);
1135 printk(KERN_ERR "... forcing use of dummy APIC emulation. (tell your hw vendor)\n");
1136 smpboot_clear_io_apic_irqs();
1137 phys_cpu_present_map = physid_mask_of_physid(0);
1138 cpu_set(0, cpu_sibling_map[0]);
1139 cpu_set(0, cpu_core_map[0]);
1140 return;
1141 }
1142
1143 verify_local_APIC();
1144
1145 /*
1146 * If SMP should be disabled, then really disable it! 1127 * If SMP should be disabled, then really disable it!
1147 */ 1128 */
1148 if (!max_cpus) { 1129 if (!max_cpus || (enable_local_apic < 0)) {
1149 smp_found_config = 0; 1130 printk(KERN_INFO "SMP mode deactivated.\n");
1150 printk(KERN_INFO "SMP mode deactivated, forcing use of dummy APIC emulation.\n"); 1131 disable_smp();
1151 smpboot_clear_io_apic_irqs();
1152 phys_cpu_present_map = physid_mask_of_physid(0);
1153 cpu_set(0, cpu_sibling_map[0]);
1154 cpu_set(0, cpu_core_map[0]);
1155 return; 1132 return;
1156 } 1133 }
1157 1134
1158 connect_bsp_APIC();
1159 setup_local_APIC();
1160 map_cpu_to_logical_apicid();
1161
1162
1163 setup_portio_remap(); 1135 setup_portio_remap();
1164 1136
1165 /* 1137 /*
@@ -1240,10 +1212,6 @@ static void __init smp_boot_cpus(unsigned int max_cpus)
1240 cpu_set(0, cpu_sibling_map[0]); 1212 cpu_set(0, cpu_sibling_map[0]);
1241 cpu_set(0, cpu_core_map[0]); 1213 cpu_set(0, cpu_core_map[0]);
1242 1214
1243 smpboot_setup_io_apic();
1244
1245 setup_boot_APIC_clock();
1246
1247 /* 1215 /*
1248 * Synchronize the TSC with the AP 1216 * Synchronize the TSC with the AP
1249 */ 1217 */
diff --git a/arch/i386/kernel/srat.c b/arch/i386/kernel/srat.c
index 516bf5653b02..8de658db8146 100644
--- a/arch/i386/kernel/srat.c
+++ b/arch/i386/kernel/srat.c
@@ -327,7 +327,12 @@ int __init get_memcfg_from_srat(void)
327 int tables = 0; 327 int tables = 0;
328 int i = 0; 328 int i = 0;
329 329
330 acpi_find_root_pointer(ACPI_PHYSICAL_ADDRESSING, rsdp_address); 330 if (ACPI_FAILURE(acpi_find_root_pointer(ACPI_PHYSICAL_ADDRESSING,
331 rsdp_address))) {
332 printk("%s: System description tables not found\n",
333 __FUNCTION__);
334 goto out_err;
335 }
331 336
332 if (rsdp_address->pointer_type == ACPI_PHYSICAL_POINTER) { 337 if (rsdp_address->pointer_type == ACPI_PHYSICAL_POINTER) {
333 printk("%s: assigning address to rsdp\n", __FUNCTION__); 338 printk("%s: assigning address to rsdp\n", __FUNCTION__);
diff --git a/arch/i386/kernel/time.c b/arch/i386/kernel/time.c
index 2883a4d4f01f..07471bba2dc6 100644
--- a/arch/i386/kernel/time.c
+++ b/arch/i386/kernel/time.c
@@ -74,10 +74,6 @@ int pit_latch_buggy; /* extern */
74 74
75#include "do_timer.h" 75#include "do_timer.h"
76 76
77u64 jiffies_64 = INITIAL_JIFFIES;
78
79EXPORT_SYMBOL(jiffies_64);
80
81unsigned int cpu_khz; /* Detected as we calibrate the TSC */ 77unsigned int cpu_khz; /* Detected as we calibrate the TSC */
82EXPORT_SYMBOL(cpu_khz); 78EXPORT_SYMBOL(cpu_khz);
83 79
@@ -444,8 +440,8 @@ static int time_init_device(void)
444 440
445device_initcall(time_init_device); 441device_initcall(time_init_device);
446 442
447#ifdef CONFIG_HPET_TIMER
448extern void (*late_time_init)(void); 443extern void (*late_time_init)(void);
444#ifdef CONFIG_HPET_TIMER
449/* Duplicate of time_init() below, with hpet_enable part added */ 445/* Duplicate of time_init() below, with hpet_enable part added */
450static void __init hpet_time_init(void) 446static void __init hpet_time_init(void)
451{ 447{
@@ -462,6 +458,11 @@ static void __init hpet_time_init(void)
462 printk(KERN_INFO "Using %s for high-res timesource\n",cur_timer->name); 458 printk(KERN_INFO "Using %s for high-res timesource\n",cur_timer->name);
463 459
464 time_init_hook(); 460 time_init_hook();
461
462#ifdef CONFIG_X86_LOCAL_APIC
463 if (enable_local_apic >= 0)
464 APIC_late_time_init();
465#endif
465} 466}
466#endif 467#endif
467 468
@@ -486,4 +487,9 @@ void __init time_init(void)
486 printk(KERN_INFO "Using %s for high-res timesource\n",cur_timer->name); 487 printk(KERN_INFO "Using %s for high-res timesource\n",cur_timer->name);
487 488
488 time_init_hook(); 489 time_init_hook();
490
491#ifdef CONFIG_X86_LOCAL_APIC
492 if (enable_local_apic >= 0)
493 late_time_init = APIC_late_time_init;
494#endif
489} 495}
diff --git a/arch/i386/kernel/time_hpet.c b/arch/i386/kernel/time_hpet.c
index 658c0629ba6a..9caeaa315cd7 100644
--- a/arch/i386/kernel/time_hpet.c
+++ b/arch/i386/kernel/time_hpet.c
@@ -275,6 +275,7 @@ static unsigned long PIE_freq = DEFAULT_RTC_INT_FREQ;
275static unsigned long PIE_count; 275static unsigned long PIE_count;
276 276
277static unsigned long hpet_rtc_int_freq; /* RTC interrupt frequency */ 277static unsigned long hpet_rtc_int_freq; /* RTC interrupt frequency */
278static unsigned int hpet_t1_cmp; /* cached comparator register */
278 279
279/* 280/*
280 * Timer 1 for RTC, we do not use periodic interrupt feature, 281 * Timer 1 for RTC, we do not use periodic interrupt feature,
@@ -306,10 +307,12 @@ int hpet_rtc_timer_init(void)
306 cnt = hpet_readl(HPET_COUNTER); 307 cnt = hpet_readl(HPET_COUNTER);
307 cnt += ((hpet_tick*HZ)/hpet_rtc_int_freq); 308 cnt += ((hpet_tick*HZ)/hpet_rtc_int_freq);
308 hpet_writel(cnt, HPET_T1_CMP); 309 hpet_writel(cnt, HPET_T1_CMP);
310 hpet_t1_cmp = cnt;
309 local_irq_restore(flags); 311 local_irq_restore(flags);
310 312
311 cfg = hpet_readl(HPET_T1_CFG); 313 cfg = hpet_readl(HPET_T1_CFG);
312 cfg |= HPET_TN_ENABLE | HPET_TN_SETVAL | HPET_TN_32BIT; 314 cfg &= ~HPET_TN_PERIODIC;
315 cfg |= HPET_TN_ENABLE | HPET_TN_32BIT;
313 hpet_writel(cfg, HPET_T1_CFG); 316 hpet_writel(cfg, HPET_T1_CFG);
314 317
315 return 1; 318 return 1;
@@ -319,8 +322,12 @@ static void hpet_rtc_timer_reinit(void)
319{ 322{
320 unsigned int cfg, cnt; 323 unsigned int cfg, cnt;
321 324
322 if (!(PIE_on | AIE_on | UIE_on)) 325 if (unlikely(!(PIE_on | AIE_on | UIE_on))) {
326 cfg = hpet_readl(HPET_T1_CFG);
327 cfg &= ~HPET_TN_ENABLE;
328 hpet_writel(cfg, HPET_T1_CFG);
323 return; 329 return;
330 }
324 331
325 if (PIE_on && (PIE_freq > DEFAULT_RTC_INT_FREQ)) 332 if (PIE_on && (PIE_freq > DEFAULT_RTC_INT_FREQ))
326 hpet_rtc_int_freq = PIE_freq; 333 hpet_rtc_int_freq = PIE_freq;
@@ -328,15 +335,10 @@ static void hpet_rtc_timer_reinit(void)
328 hpet_rtc_int_freq = DEFAULT_RTC_INT_FREQ; 335 hpet_rtc_int_freq = DEFAULT_RTC_INT_FREQ;
329 336
330 /* It is more accurate to use the comparator value than current count.*/ 337 /* It is more accurate to use the comparator value than current count.*/
331 cnt = hpet_readl(HPET_T1_CMP); 338 cnt = hpet_t1_cmp;
332 cnt += hpet_tick*HZ/hpet_rtc_int_freq; 339 cnt += hpet_tick*HZ/hpet_rtc_int_freq;
333 hpet_writel(cnt, HPET_T1_CMP); 340 hpet_writel(cnt, HPET_T1_CMP);
334 341 hpet_t1_cmp = cnt;
335 cfg = hpet_readl(HPET_T1_CFG);
336 cfg |= HPET_TN_ENABLE | HPET_TN_SETVAL | HPET_TN_32BIT;
337 hpet_writel(cfg, HPET_T1_CFG);
338
339 return;
340} 342}
341 343
342/* 344/*
diff --git a/arch/i386/kernel/timers/timer_hpet.c b/arch/i386/kernel/timers/timer_hpet.c
index d973a8b681fd..be242723c339 100644
--- a/arch/i386/kernel/timers/timer_hpet.c
+++ b/arch/i386/kernel/timers/timer_hpet.c
@@ -30,23 +30,28 @@ static seqlock_t monotonic_lock = SEQLOCK_UNLOCKED;
30 * basic equation: 30 * basic equation:
31 * ns = cycles / (freq / ns_per_sec) 31 * ns = cycles / (freq / ns_per_sec)
32 * ns = cycles * (ns_per_sec / freq) 32 * ns = cycles * (ns_per_sec / freq)
33 * ns = cycles * (10^9 / (cpu_mhz * 10^6)) 33 * ns = cycles * (10^9 / (cpu_khz * 10^3))
34 * ns = cycles * (10^3 / cpu_mhz) 34 * ns = cycles * (10^6 / cpu_khz)
35 * 35 *
36 * Then we use scaling math (suggested by george@mvista.com) to get: 36 * Then we use scaling math (suggested by george@mvista.com) to get:
37 * ns = cycles * (10^3 * SC / cpu_mhz) / SC 37 * ns = cycles * (10^6 * SC / cpu_khz) / SC
38 * ns = cycles * cyc2ns_scale / SC 38 * ns = cycles * cyc2ns_scale / SC
39 * 39 *
40 * And since SC is a constant power of two, we can convert the div 40 * And since SC is a constant power of two, we can convert the div
41 * into a shift. 41 * into a shift.
42 *
43 * We can use khz divisor instead of mhz to keep a better percision, since
44 * cyc2ns_scale is limited to 10^6 * 2^10, which fits in 32 bits.
45 * (mathieu.desnoyers@polymtl.ca)
46 *
42 * -johnstul@us.ibm.com "math is hard, lets go shopping!" 47 * -johnstul@us.ibm.com "math is hard, lets go shopping!"
43 */ 48 */
44static unsigned long cyc2ns_scale; 49static unsigned long cyc2ns_scale;
45#define CYC2NS_SCALE_FACTOR 10 /* 2^10, carefully chosen */ 50#define CYC2NS_SCALE_FACTOR 10 /* 2^10, carefully chosen */
46 51
47static inline void set_cyc2ns_scale(unsigned long cpu_mhz) 52static inline void set_cyc2ns_scale(unsigned long cpu_khz)
48{ 53{
49 cyc2ns_scale = (1000 << CYC2NS_SCALE_FACTOR)/cpu_mhz; 54 cyc2ns_scale = (1000000 << CYC2NS_SCALE_FACTOR)/cpu_khz;
50} 55}
51 56
52static inline unsigned long long cycles_2_ns(unsigned long long cyc) 57static inline unsigned long long cycles_2_ns(unsigned long long cyc)
@@ -163,7 +168,7 @@ static int __init init_hpet(char* override)
163 printk("Detected %u.%03u MHz processor.\n", 168 printk("Detected %u.%03u MHz processor.\n",
164 cpu_khz / 1000, cpu_khz % 1000); 169 cpu_khz / 1000, cpu_khz % 1000);
165 } 170 }
166 set_cyc2ns_scale(cpu_khz/1000); 171 set_cyc2ns_scale(cpu_khz);
167 } 172 }
168 /* set this only when cpu_has_tsc */ 173 /* set this only when cpu_has_tsc */
169 timer_hpet.read_timer = read_timer_tsc; 174 timer_hpet.read_timer = read_timer_tsc;
diff --git a/arch/i386/kernel/timers/timer_tsc.c b/arch/i386/kernel/timers/timer_tsc.c
index 6dd470cc9f72..d395e3b42485 100644
--- a/arch/i386/kernel/timers/timer_tsc.c
+++ b/arch/i386/kernel/timers/timer_tsc.c
@@ -49,23 +49,28 @@ static seqlock_t monotonic_lock = SEQLOCK_UNLOCKED;
49 * basic equation: 49 * basic equation:
50 * ns = cycles / (freq / ns_per_sec) 50 * ns = cycles / (freq / ns_per_sec)
51 * ns = cycles * (ns_per_sec / freq) 51 * ns = cycles * (ns_per_sec / freq)
52 * ns = cycles * (10^9 / (cpu_mhz * 10^6)) 52 * ns = cycles * (10^9 / (cpu_khz * 10^3))
53 * ns = cycles * (10^3 / cpu_mhz) 53 * ns = cycles * (10^6 / cpu_khz)
54 * 54 *
55 * Then we use scaling math (suggested by george@mvista.com) to get: 55 * Then we use scaling math (suggested by george@mvista.com) to get:
56 * ns = cycles * (10^3 * SC / cpu_mhz) / SC 56 * ns = cycles * (10^6 * SC / cpu_khz) / SC
57 * ns = cycles * cyc2ns_scale / SC 57 * ns = cycles * cyc2ns_scale / SC
58 * 58 *
59 * And since SC is a constant power of two, we can convert the div 59 * And since SC is a constant power of two, we can convert the div
60 * into a shift. 60 * into a shift.
61 *
62 * We can use khz divisor instead of mhz to keep a better percision, since
63 * cyc2ns_scale is limited to 10^6 * 2^10, which fits in 32 bits.
64 * (mathieu.desnoyers@polymtl.ca)
65 *
61 * -johnstul@us.ibm.com "math is hard, lets go shopping!" 66 * -johnstul@us.ibm.com "math is hard, lets go shopping!"
62 */ 67 */
63static unsigned long cyc2ns_scale; 68static unsigned long cyc2ns_scale;
64#define CYC2NS_SCALE_FACTOR 10 /* 2^10, carefully chosen */ 69#define CYC2NS_SCALE_FACTOR 10 /* 2^10, carefully chosen */
65 70
66static inline void set_cyc2ns_scale(unsigned long cpu_mhz) 71static inline void set_cyc2ns_scale(unsigned long cpu_khz)
67{ 72{
68 cyc2ns_scale = (1000 << CYC2NS_SCALE_FACTOR)/cpu_mhz; 73 cyc2ns_scale = (1000000 << CYC2NS_SCALE_FACTOR)/cpu_khz;
69} 74}
70 75
71static inline unsigned long long cycles_2_ns(unsigned long long cyc) 76static inline unsigned long long cycles_2_ns(unsigned long long cyc)
@@ -286,7 +291,7 @@ time_cpufreq_notifier(struct notifier_block *nb, unsigned long val,
286 if (use_tsc) { 291 if (use_tsc) {
287 if (!(freq->flags & CPUFREQ_CONST_LOOPS)) { 292 if (!(freq->flags & CPUFREQ_CONST_LOOPS)) {
288 fast_gettimeoffset_quotient = cpufreq_scale(fast_gettimeoffset_ref, freq->new, ref_freq); 293 fast_gettimeoffset_quotient = cpufreq_scale(fast_gettimeoffset_ref, freq->new, ref_freq);
289 set_cyc2ns_scale(cpu_khz/1000); 294 set_cyc2ns_scale(cpu_khz);
290 } 295 }
291 } 296 }
292#endif 297#endif
@@ -536,7 +541,7 @@ static int __init init_tsc(char* override)
536 printk("Detected %u.%03u MHz processor.\n", 541 printk("Detected %u.%03u MHz processor.\n",
537 cpu_khz / 1000, cpu_khz % 1000); 542 cpu_khz / 1000, cpu_khz % 1000);
538 } 543 }
539 set_cyc2ns_scale(cpu_khz/1000); 544 set_cyc2ns_scale(cpu_khz);
540 return 0; 545 return 0;
541 } 546 }
542 } 547 }
diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c
index 19e90bdd84ea..c34d1bfc5161 100644
--- a/arch/i386/kernel/traps.c
+++ b/arch/i386/kernel/traps.c
@@ -488,6 +488,7 @@ fastcall void __kprobes do_general_protection(struct pt_regs * regs,
488 tss->io_bitmap_max - thread->io_bitmap_max); 488 tss->io_bitmap_max - thread->io_bitmap_max);
489 tss->io_bitmap_max = thread->io_bitmap_max; 489 tss->io_bitmap_max = thread->io_bitmap_max;
490 tss->io_bitmap_base = IO_BITMAP_OFFSET; 490 tss->io_bitmap_base = IO_BITMAP_OFFSET;
491 tss->io_bitmap_owner = thread;
491 put_cpu(); 492 put_cpu();
492 return; 493 return;
493 } 494 }
diff --git a/arch/i386/kernel/vm86.c b/arch/i386/kernel/vm86.c
index 16b485009622..fc1993564f98 100644
--- a/arch/i386/kernel/vm86.c
+++ b/arch/i386/kernel/vm86.c
@@ -134,17 +134,16 @@ struct pt_regs * fastcall save_v86_state(struct kernel_vm86_regs * regs)
134 return ret; 134 return ret;
135} 135}
136 136
137static void mark_screen_rdonly(struct task_struct * tsk) 137static void mark_screen_rdonly(struct mm_struct *mm)
138{ 138{
139 pgd_t *pgd; 139 pgd_t *pgd;
140 pud_t *pud; 140 pud_t *pud;
141 pmd_t *pmd; 141 pmd_t *pmd;
142 pte_t *pte, *mapped; 142 pte_t *pte;
143 spinlock_t *ptl;
143 int i; 144 int i;
144 145
145 preempt_disable(); 146 pgd = pgd_offset(mm, 0xA0000);
146 spin_lock(&tsk->mm->page_table_lock);
147 pgd = pgd_offset(tsk->mm, 0xA0000);
148 if (pgd_none_or_clear_bad(pgd)) 147 if (pgd_none_or_clear_bad(pgd))
149 goto out; 148 goto out;
150 pud = pud_offset(pgd, 0xA0000); 149 pud = pud_offset(pgd, 0xA0000);
@@ -153,16 +152,14 @@ static void mark_screen_rdonly(struct task_struct * tsk)
153 pmd = pmd_offset(pud, 0xA0000); 152 pmd = pmd_offset(pud, 0xA0000);
154 if (pmd_none_or_clear_bad(pmd)) 153 if (pmd_none_or_clear_bad(pmd))
155 goto out; 154 goto out;
156 pte = mapped = pte_offset_map(pmd, 0xA0000); 155 pte = pte_offset_map_lock(mm, pmd, 0xA0000, &ptl);
157 for (i = 0; i < 32; i++) { 156 for (i = 0; i < 32; i++) {
158 if (pte_present(*pte)) 157 if (pte_present(*pte))
159 set_pte(pte, pte_wrprotect(*pte)); 158 set_pte(pte, pte_wrprotect(*pte));
160 pte++; 159 pte++;
161 } 160 }
162 pte_unmap(mapped); 161 pte_unmap_unlock(pte, ptl);
163out: 162out:
164 spin_unlock(&tsk->mm->page_table_lock);
165 preempt_enable();
166 flush_tlb(); 163 flush_tlb();
167} 164}
168 165
@@ -306,7 +303,7 @@ static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk
306 303
307 tsk->thread.screen_bitmap = info->screen_bitmap; 304 tsk->thread.screen_bitmap = info->screen_bitmap;
308 if (info->flags & VM86_SCREEN_BITMAP) 305 if (info->flags & VM86_SCREEN_BITMAP)
309 mark_screen_rdonly(tsk); 306 mark_screen_rdonly(tsk->mm);
310 __asm__ __volatile__( 307 __asm__ __volatile__(
311 "xorl %%eax,%%eax; movl %%eax,%%fs; movl %%eax,%%gs\n\t" 308 "xorl %%eax,%%eax; movl %%eax,%%fs; movl %%eax,%%gs\n\t"
312 "movl %0,%%esp\n\t" 309 "movl %0,%%esp\n\t"
diff --git a/arch/i386/mach-es7000/es7000.h b/arch/i386/mach-es7000/es7000.h
index 898ed905e119..f1e3204f5dec 100644
--- a/arch/i386/mach-es7000/es7000.h
+++ b/arch/i386/mach-es7000/es7000.h
@@ -24,6 +24,15 @@
24 * http://www.unisys.com 24 * http://www.unisys.com
25 */ 25 */
26 26
27/*
28 * ES7000 chipsets
29 */
30
31#define NON_UNISYS 0
32#define ES7000_CLASSIC 1
33#define ES7000_ZORRO 2
34
35
27#define MIP_REG 1 36#define MIP_REG 1
28#define MIP_PSAI_REG 4 37#define MIP_PSAI_REG 4
29 38
@@ -106,6 +115,6 @@ struct mip_reg {
106 115
107extern int parse_unisys_oem (char *oemptr); 116extern int parse_unisys_oem (char *oemptr);
108extern int find_unisys_acpi_oem_table(unsigned long *oem_addr); 117extern int find_unisys_acpi_oem_table(unsigned long *oem_addr);
109extern void setup_unisys (); 118extern void setup_unisys(void);
110extern int es7000_start_cpu(int cpu, unsigned long eip); 119extern int es7000_start_cpu(int cpu, unsigned long eip);
111extern void es7000_sw_apic(void); 120extern void es7000_sw_apic(void);
diff --git a/arch/i386/mach-es7000/es7000plat.c b/arch/i386/mach-es7000/es7000plat.c
index dc6660511b07..a9ab0644f403 100644
--- a/arch/i386/mach-es7000/es7000plat.c
+++ b/arch/i386/mach-es7000/es7000plat.c
@@ -62,6 +62,9 @@ static unsigned int base;
62static int 62static int
63es7000_rename_gsi(int ioapic, int gsi) 63es7000_rename_gsi(int ioapic, int gsi)
64{ 64{
65 if (es7000_plat == ES7000_ZORRO)
66 return gsi;
67
65 if (!base) { 68 if (!base) {
66 int i; 69 int i;
67 for (i = 0; i < nr_ioapics; i++) 70 for (i = 0; i < nr_ioapics; i++)
@@ -76,7 +79,7 @@ es7000_rename_gsi(int ioapic, int gsi)
76#endif /* (CONFIG_X86_IO_APIC) && (CONFIG_ACPI) */ 79#endif /* (CONFIG_X86_IO_APIC) && (CONFIG_ACPI) */
77 80
78void __init 81void __init
79setup_unisys () 82setup_unisys(void)
80{ 83{
81 /* 84 /*
82 * Determine the generation of the ES7000 currently running. 85 * Determine the generation of the ES7000 currently running.
@@ -86,9 +89,9 @@ setup_unisys ()
86 * 89 *
87 */ 90 */
88 if (!(boot_cpu_data.x86 <= 15 && boot_cpu_data.x86_model <= 2)) 91 if (!(boot_cpu_data.x86 <= 15 && boot_cpu_data.x86_model <= 2))
89 es7000_plat = 2; 92 es7000_plat = ES7000_ZORRO;
90 else 93 else
91 es7000_plat = 1; 94 es7000_plat = ES7000_CLASSIC;
92 ioapic_renumber_irq = es7000_rename_gsi; 95 ioapic_renumber_irq = es7000_rename_gsi;
93} 96}
94 97
@@ -151,7 +154,7 @@ parse_unisys_oem (char *oemptr)
151 } 154 }
152 155
153 if (success < 2) { 156 if (success < 2) {
154 es7000_plat = 0; 157 es7000_plat = NON_UNISYS;
155 } else 158 } else
156 setup_unisys(); 159 setup_unisys();
157 return es7000_plat; 160 return es7000_plat;
diff --git a/arch/i386/mm/discontig.c b/arch/i386/mm/discontig.c
index 244d8ec66be2..c4af9638dbfa 100644
--- a/arch/i386/mm/discontig.c
+++ b/arch/i386/mm/discontig.c
@@ -98,7 +98,7 @@ unsigned long node_memmap_size_bytes(int nid, unsigned long start_pfn,
98 98
99extern unsigned long find_max_low_pfn(void); 99extern unsigned long find_max_low_pfn(void);
100extern void find_max_pfn(void); 100extern void find_max_pfn(void);
101extern void one_highpage_init(struct page *, int, int); 101extern void add_one_highpage_init(struct page *, int, int);
102 102
103extern struct e820map e820; 103extern struct e820map e820;
104extern unsigned long init_pg_tables_end; 104extern unsigned long init_pg_tables_end;
@@ -427,7 +427,7 @@ void __init set_highmem_pages_init(int bad_ppro)
427 if (!pfn_valid(node_pfn)) 427 if (!pfn_valid(node_pfn))
428 continue; 428 continue;
429 page = pfn_to_page(node_pfn); 429 page = pfn_to_page(node_pfn);
430 one_highpage_init(page, node_pfn, bad_ppro); 430 add_one_highpage_init(page, node_pfn, bad_ppro);
431 } 431 }
432 } 432 }
433 totalram_pages += totalhigh_pages; 433 totalram_pages += totalhigh_pages;
diff --git a/arch/i386/mm/fault.c b/arch/i386/mm/fault.c
index 9edd4485b91e..cf572d9a3b6e 100644
--- a/arch/i386/mm/fault.c
+++ b/arch/i386/mm/fault.c
@@ -108,7 +108,7 @@ static inline unsigned long get_segment_eip(struct pt_regs *regs,
108 desc = (void *)desc + (seg & ~7); 108 desc = (void *)desc + (seg & ~7);
109 } else { 109 } else {
110 /* Must disable preemption while reading the GDT. */ 110 /* Must disable preemption while reading the GDT. */
111 desc = (u32 *)&per_cpu(cpu_gdt_table, get_cpu()); 111 desc = (u32 *)get_cpu_gdt_table(get_cpu());
112 desc = (void *)desc + (seg & ~7); 112 desc = (void *)desc + (seg & ~7);
113 } 113 }
114 114
diff --git a/arch/i386/mm/init.c b/arch/i386/mm/init.c
index 2ebaf75f732e..542d9298da5e 100644
--- a/arch/i386/mm/init.c
+++ b/arch/i386/mm/init.c
@@ -27,6 +27,7 @@
27#include <linux/slab.h> 27#include <linux/slab.h>
28#include <linux/proc_fs.h> 28#include <linux/proc_fs.h>
29#include <linux/efi.h> 29#include <linux/efi.h>
30#include <linux/memory_hotplug.h>
30 31
31#include <asm/processor.h> 32#include <asm/processor.h>
32#include <asm/system.h> 33#include <asm/system.h>
@@ -266,17 +267,46 @@ static void __init permanent_kmaps_init(pgd_t *pgd_base)
266 pkmap_page_table = pte; 267 pkmap_page_table = pte;
267} 268}
268 269
269void __init one_highpage_init(struct page *page, int pfn, int bad_ppro) 270void __devinit free_new_highpage(struct page *page)
271{
272 set_page_count(page, 1);
273 __free_page(page);
274 totalhigh_pages++;
275}
276
277void __init add_one_highpage_init(struct page *page, int pfn, int bad_ppro)
270{ 278{
271 if (page_is_ram(pfn) && !(bad_ppro && page_kills_ppro(pfn))) { 279 if (page_is_ram(pfn) && !(bad_ppro && page_kills_ppro(pfn))) {
272 ClearPageReserved(page); 280 ClearPageReserved(page);
273 set_page_count(page, 1); 281 free_new_highpage(page);
274 __free_page(page);
275 totalhigh_pages++;
276 } else 282 } else
277 SetPageReserved(page); 283 SetPageReserved(page);
278} 284}
279 285
286static int add_one_highpage_hotplug(struct page *page, unsigned long pfn)
287{
288 free_new_highpage(page);
289 totalram_pages++;
290#ifdef CONFIG_FLATMEM
291 max_mapnr = max(pfn, max_mapnr);
292#endif
293 num_physpages++;
294 return 0;
295}
296
297/*
298 * Not currently handling the NUMA case.
299 * Assuming single node and all memory that
300 * has been added dynamically that would be
301 * onlined here is in HIGHMEM
302 */
303void online_page(struct page *page)
304{
305 ClearPageReserved(page);
306 add_one_highpage_hotplug(page, page_to_pfn(page));
307}
308
309
280#ifdef CONFIG_NUMA 310#ifdef CONFIG_NUMA
281extern void set_highmem_pages_init(int); 311extern void set_highmem_pages_init(int);
282#else 312#else
@@ -284,7 +314,7 @@ static void __init set_highmem_pages_init(int bad_ppro)
284{ 314{
285 int pfn; 315 int pfn;
286 for (pfn = highstart_pfn; pfn < highend_pfn; pfn++) 316 for (pfn = highstart_pfn; pfn < highend_pfn; pfn++)
287 one_highpage_init(pfn_to_page(pfn), pfn, bad_ppro); 317 add_one_highpage_init(pfn_to_page(pfn), pfn, bad_ppro);
288 totalram_pages += totalhigh_pages; 318 totalram_pages += totalhigh_pages;
289} 319}
290#endif /* CONFIG_FLATMEM */ 320#endif /* CONFIG_FLATMEM */
@@ -615,6 +645,28 @@ void __init mem_init(void)
615#endif 645#endif
616} 646}
617 647
648/*
649 * this is for the non-NUMA, single node SMP system case.
650 * Specifically, in the case of x86, we will always add
651 * memory to the highmem for now.
652 */
653#ifndef CONFIG_NEED_MULTIPLE_NODES
654int add_memory(u64 start, u64 size)
655{
656 struct pglist_data *pgdata = &contig_page_data;
657 struct zone *zone = pgdata->node_zones + MAX_NR_ZONES-1;
658 unsigned long start_pfn = start >> PAGE_SHIFT;
659 unsigned long nr_pages = size >> PAGE_SHIFT;
660
661 return __add_pages(zone, start_pfn, nr_pages);
662}
663
664int remove_memory(u64 start, u64 size)
665{
666 return -EINVAL;
667}
668#endif
669
618kmem_cache_t *pgd_cache; 670kmem_cache_t *pgd_cache;
619kmem_cache_t *pmd_cache; 671kmem_cache_t *pmd_cache;
620 672
diff --git a/arch/i386/mm/ioremap.c b/arch/i386/mm/ioremap.c
index f379b8d67558..5d09de8d1c6b 100644
--- a/arch/i386/mm/ioremap.c
+++ b/arch/i386/mm/ioremap.c
@@ -28,7 +28,7 @@ static int ioremap_pte_range(pmd_t *pmd, unsigned long addr,
28 unsigned long pfn; 28 unsigned long pfn;
29 29
30 pfn = phys_addr >> PAGE_SHIFT; 30 pfn = phys_addr >> PAGE_SHIFT;
31 pte = pte_alloc_kernel(&init_mm, pmd, addr); 31 pte = pte_alloc_kernel(pmd, addr);
32 if (!pte) 32 if (!pte)
33 return -ENOMEM; 33 return -ENOMEM;
34 do { 34 do {
@@ -87,14 +87,12 @@ static int ioremap_page_range(unsigned long addr,
87 flush_cache_all(); 87 flush_cache_all();
88 phys_addr -= addr; 88 phys_addr -= addr;
89 pgd = pgd_offset_k(addr); 89 pgd = pgd_offset_k(addr);
90 spin_lock(&init_mm.page_table_lock);
91 do { 90 do {
92 next = pgd_addr_end(addr, end); 91 next = pgd_addr_end(addr, end);
93 err = ioremap_pud_range(pgd, addr, next, phys_addr+addr, flags); 92 err = ioremap_pud_range(pgd, addr, next, phys_addr+addr, flags);
94 if (err) 93 if (err)
95 break; 94 break;
96 } while (pgd++, addr = next, addr != end); 95 } while (pgd++, addr = next, addr != end);
97 spin_unlock(&init_mm.page_table_lock);
98 flush_tlb_all(); 96 flush_tlb_all();
99 return err; 97 return err;
100} 98}
diff --git a/arch/i386/mm/pgtable.c b/arch/i386/mm/pgtable.c
index dcdce2c6c532..9db3242103be 100644
--- a/arch/i386/mm/pgtable.c
+++ b/arch/i386/mm/pgtable.c
@@ -31,11 +31,13 @@ void show_mem(void)
31 pg_data_t *pgdat; 31 pg_data_t *pgdat;
32 unsigned long i; 32 unsigned long i;
33 struct page_state ps; 33 struct page_state ps;
34 unsigned long flags;
34 35
35 printk(KERN_INFO "Mem-info:\n"); 36 printk(KERN_INFO "Mem-info:\n");
36 show_free_areas(); 37 show_free_areas();
37 printk(KERN_INFO "Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); 38 printk(KERN_INFO "Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
38 for_each_pgdat(pgdat) { 39 for_each_pgdat(pgdat) {
40 pgdat_resize_lock(pgdat, &flags);
39 for (i = 0; i < pgdat->node_spanned_pages; ++i) { 41 for (i = 0; i < pgdat->node_spanned_pages; ++i) {
40 page = pgdat_page_nr(pgdat, i); 42 page = pgdat_page_nr(pgdat, i);
41 total++; 43 total++;
@@ -48,6 +50,7 @@ void show_mem(void)
48 else if (page_count(page)) 50 else if (page_count(page))
49 shared += page_count(page) - 1; 51 shared += page_count(page) - 1;
50 } 52 }
53 pgdat_resize_unlock(pgdat, &flags);
51 } 54 }
52 printk(KERN_INFO "%d pages of RAM\n", total); 55 printk(KERN_INFO "%d pages of RAM\n", total);
53 printk(KERN_INFO "%d pages of HIGHMEM\n", highmem); 56 printk(KERN_INFO "%d pages of HIGHMEM\n", highmem);
@@ -188,19 +191,19 @@ static inline void pgd_list_add(pgd_t *pgd)
188 struct page *page = virt_to_page(pgd); 191 struct page *page = virt_to_page(pgd);
189 page->index = (unsigned long)pgd_list; 192 page->index = (unsigned long)pgd_list;
190 if (pgd_list) 193 if (pgd_list)
191 pgd_list->private = (unsigned long)&page->index; 194 set_page_private(pgd_list, (unsigned long)&page->index);
192 pgd_list = page; 195 pgd_list = page;
193 page->private = (unsigned long)&pgd_list; 196 set_page_private(page, (unsigned long)&pgd_list);
194} 197}
195 198
196static inline void pgd_list_del(pgd_t *pgd) 199static inline void pgd_list_del(pgd_t *pgd)
197{ 200{
198 struct page *next, **pprev, *page = virt_to_page(pgd); 201 struct page *next, **pprev, *page = virt_to_page(pgd);
199 next = (struct page *)page->index; 202 next = (struct page *)page->index;
200 pprev = (struct page **)page->private; 203 pprev = (struct page **)page_private(page);
201 *pprev = next; 204 *pprev = next;
202 if (next) 205 if (next)
203 next->private = (unsigned long)pprev; 206 set_page_private(next, (unsigned long)pprev);
204} 207}
205 208
206void pgd_ctor(void *pgd, kmem_cache_t *cache, unsigned long unused) 209void pgd_ctor(void *pgd, kmem_cache_t *cache, unsigned long unused)
diff --git a/arch/i386/oprofile/backtrace.c b/arch/i386/oprofile/backtrace.c
index 65dfd2edb671..21654be3f73f 100644
--- a/arch/i386/oprofile/backtrace.c
+++ b/arch/i386/oprofile/backtrace.c
@@ -12,6 +12,7 @@
12#include <linux/sched.h> 12#include <linux/sched.h>
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <asm/ptrace.h> 14#include <asm/ptrace.h>
15#include <asm/uaccess.h>
15 16
16struct frame_head { 17struct frame_head {
17 struct frame_head * ebp; 18 struct frame_head * ebp;
@@ -21,26 +22,22 @@ struct frame_head {
21static struct frame_head * 22static struct frame_head *
22dump_backtrace(struct frame_head * head) 23dump_backtrace(struct frame_head * head)
23{ 24{
24 oprofile_add_trace(head->ret); 25 struct frame_head bufhead[2];
25 26
26 /* frame pointers should strictly progress back up the stack 27 /* Also check accessibility of one struct frame_head beyond */
27 * (towards higher addresses) */ 28 if (!access_ok(VERIFY_READ, head, sizeof(bufhead)))
28 if (head >= head->ebp) 29 return NULL;
30 if (__copy_from_user_inatomic(bufhead, head, sizeof(bufhead)))
29 return NULL; 31 return NULL;
30 32
31 return head->ebp; 33 oprofile_add_trace(bufhead[0].ret);
32}
33
34/* check that the page(s) containing the frame head are present */
35static int pages_present(struct frame_head * head)
36{
37 struct mm_struct * mm = current->mm;
38 34
39 /* FIXME: only necessary once per page */ 35 /* frame pointers should strictly progress back up the stack
40 if (!check_user_page_readable(mm, (unsigned long)head)) 36 * (towards higher addresses) */
41 return 0; 37 if (head >= bufhead[0].ebp)
38 return NULL;
42 39
43 return check_user_page_readable(mm, (unsigned long)(head + 1)); 40 return bufhead[0].ebp;
44} 41}
45 42
46/* 43/*
@@ -97,15 +94,6 @@ x86_backtrace(struct pt_regs * const regs, unsigned int depth)
97 return; 94 return;
98 } 95 }
99 96
100#ifdef CONFIG_SMP 97 while (depth-- && head)
101 if (!spin_trylock(&current->mm->page_table_lock))
102 return;
103#endif
104
105 while (depth-- && head && pages_present(head))
106 head = dump_backtrace(head); 98 head = dump_backtrace(head);
107
108#ifdef CONFIG_SMP
109 spin_unlock(&current->mm->page_table_lock);
110#endif
111} 99}
diff --git a/arch/i386/pci/fixup.c b/arch/i386/pci/fixup.c
index 8e8e895e1b5a..330fd2b68075 100644
--- a/arch/i386/pci/fixup.c
+++ b/arch/i386/pci/fixup.c
@@ -2,6 +2,8 @@
2 * Exceptions for specific devices. Usually work-arounds for fatal design flaws. 2 * Exceptions for specific devices. Usually work-arounds for fatal design flaws.
3 */ 3 */
4 4
5#include <linux/delay.h>
6#include <linux/dmi.h>
5#include <linux/pci.h> 7#include <linux/pci.h>
6#include <linux/init.h> 8#include <linux/init.h>
7#include "pci.h" 9#include "pci.h"
@@ -384,3 +386,60 @@ static void __devinit pci_fixup_video(struct pci_dev *pdev)
384 } 386 }
385} 387}
386DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_video); 388DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_video);
389
390/*
391 * Some Toshiba laptops need extra code to enable their TI TSB43AB22/A.
392 *
393 * We pretend to bring them out of full D3 state, and restore the proper
394 * IRQ, PCI cache line size, and BARs, otherwise the device won't function
395 * properly. In some cases, the device will generate an interrupt on
396 * the wrong IRQ line, causing any devices sharing the the line it's
397 * *supposed* to use to be disabled by the kernel's IRQ debug code.
398 */
399static u16 toshiba_line_size;
400
401static struct dmi_system_id __devinit toshiba_ohci1394_dmi_table[] = {
402 {
403 .ident = "Toshiba PS5 based laptop",
404 .matches = {
405 DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
406 DMI_MATCH(DMI_PRODUCT_VERSION, "PS5"),
407 },
408 },
409 {
410 .ident = "Toshiba PSM4 based laptop",
411 .matches = {
412 DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
413 DMI_MATCH(DMI_PRODUCT_VERSION, "PSM4"),
414 },
415 },
416 { }
417};
418
419static void __devinit pci_pre_fixup_toshiba_ohci1394(struct pci_dev *dev)
420{
421 if (!dmi_check_system(toshiba_ohci1394_dmi_table))
422 return; /* only applies to certain Toshibas (so far) */
423
424 dev->current_state = PCI_D3cold;
425 pci_read_config_word(dev, PCI_CACHE_LINE_SIZE, &toshiba_line_size);
426}
427DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TI, 0x8032,
428 pci_pre_fixup_toshiba_ohci1394);
429
430static void __devinit pci_post_fixup_toshiba_ohci1394(struct pci_dev *dev)
431{
432 if (!dmi_check_system(toshiba_ohci1394_dmi_table))
433 return; /* only applies to certain Toshibas (so far) */
434
435 /* Restore config space on Toshiba laptops */
436 mdelay(10);
437 pci_write_config_word(dev, PCI_CACHE_LINE_SIZE, toshiba_line_size);
438 pci_write_config_word(dev, PCI_INTERRUPT_LINE, dev->irq);
439 pci_write_config_dword(dev, PCI_BASE_ADDRESS_0,
440 pci_resource_start(dev, 0));
441 pci_write_config_dword(dev, PCI_BASE_ADDRESS_1,
442 pci_resource_start(dev, 1));
443}
444DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_TI, 0x8032,
445 pci_post_fixup_toshiba_ohci1394);
diff --git a/arch/i386/pci/irq.c b/arch/i386/pci/irq.c
index cddafe33ff7c..19e6f4871d1e 100644
--- a/arch/i386/pci/irq.c
+++ b/arch/i386/pci/irq.c
@@ -547,31 +547,48 @@ static __init int intel_router_probe(struct irq_router *r, struct pci_dev *route
547 return 0; 547 return 0;
548} 548}
549 549
550static __init int via_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) 550static __init int via_router_probe(struct irq_router *r,
551 struct pci_dev *router, u16 device)
551{ 552{
552 /* FIXME: We should move some of the quirk fixup stuff here */ 553 /* FIXME: We should move some of the quirk fixup stuff here */
553 554
554 if (router->device == PCI_DEVICE_ID_VIA_82C686 && 555 /*
555 device == PCI_DEVICE_ID_VIA_82C586_0) { 556 * work arounds for some buggy BIOSes
556 /* Asus k7m bios wrongly reports 82C686A as 586-compatible */ 557 */
557 device = PCI_DEVICE_ID_VIA_82C686; 558 if (device == PCI_DEVICE_ID_VIA_82C586_0) {
559 switch(router->device) {
560 case PCI_DEVICE_ID_VIA_82C686:
561 /*
562 * Asus k7m bios wrongly reports 82C686A
563 * as 586-compatible
564 */
565 device = PCI_DEVICE_ID_VIA_82C686;
566 break;
567 case PCI_DEVICE_ID_VIA_8235:
568 /**
569 * Asus a7v-x bios wrongly reports 8235
570 * as 586-compatible
571 */
572 device = PCI_DEVICE_ID_VIA_8235;
573 break;
574 }
558 } 575 }
559 576
560 switch(device) 577 switch(device) {
561 { 578 case PCI_DEVICE_ID_VIA_82C586_0:
562 case PCI_DEVICE_ID_VIA_82C586_0: 579 r->name = "VIA";
563 r->name = "VIA"; 580 r->get = pirq_via586_get;
564 r->get = pirq_via586_get; 581 r->set = pirq_via586_set;
565 r->set = pirq_via586_set; 582 return 1;
566 return 1; 583 case PCI_DEVICE_ID_VIA_82C596:
567 case PCI_DEVICE_ID_VIA_82C596: 584 case PCI_DEVICE_ID_VIA_82C686:
568 case PCI_DEVICE_ID_VIA_82C686: 585 case PCI_DEVICE_ID_VIA_8231:
569 case PCI_DEVICE_ID_VIA_8231: 586 case PCI_DEVICE_ID_VIA_8235:
570 /* FIXME: add new ones for 8233/5 */ 587 /* FIXME: add new ones for 8233/5 */
571 r->name = "VIA"; 588 r->name = "VIA";
572 r->get = pirq_via_get; 589 r->get = pirq_via_get;
573 r->set = pirq_via_set; 590 r->set = pirq_via_set;
574 return 1; 591 return 1;
575 } 592 }
576 return 0; 593 return 0;
577} 594}
diff --git a/arch/i386/power/cpu.c b/arch/i386/power/cpu.c
index b27c5acc79d0..1f1572692e0b 100644
--- a/arch/i386/power/cpu.c
+++ b/arch/i386/power/cpu.c
@@ -51,16 +51,14 @@ void save_processor_state(void)
51 __save_processor_state(&saved_context); 51 __save_processor_state(&saved_context);
52} 52}
53 53
54static void 54static void do_fpu_end(void)
55do_fpu_end(void)
56{ 55{
57 /* restore FPU regs if necessary */ 56 /*
58 /* Do it out of line so that gcc does not move cr0 load to some stupid place */ 57 * Restore FPU regs if necessary.
59 kernel_fpu_end(); 58 */
60 mxcsr_feature_mask_init(); 59 kernel_fpu_end();
61} 60}
62 61
63
64static void fix_processor_context(void) 62static void fix_processor_context(void)
65{ 63{
66 int cpu = smp_processor_id(); 64 int cpu = smp_processor_id();
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index 945c15a0722b..1642375fb14e 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -63,8 +63,6 @@ config IA64_GENERIC
63 select ACPI 63 select ACPI
64 select NUMA 64 select NUMA
65 select ACPI_NUMA 65 select ACPI_NUMA
66 select VIRTUAL_MEM_MAP
67 select DISCONTIGMEM
68 help 66 help
69 This selects the system type of your hardware. A "generic" kernel 67 This selects the system type of your hardware. A "generic" kernel
70 will run on any supported IA-64 system. However, if you configure 68 will run on any supported IA-64 system. However, if you configure
@@ -176,40 +174,6 @@ config IA64_L1_CACHE_SHIFT
176 default "6" if ITANIUM 174 default "6" if ITANIUM
177 175
178# align cache-sensitive data to 64 bytes 176# align cache-sensitive data to 64 bytes
179config NUMA
180 bool "NUMA support"
181 depends on !IA64_HP_SIM
182 default y if IA64_SGI_SN2
183 select ACPI_NUMA
184 help
185 Say Y to compile the kernel to support NUMA (Non-Uniform Memory
186 Access). This option is for configuring high-end multiprocessor
187 server systems. If in doubt, say N.
188
189config VIRTUAL_MEM_MAP
190 bool "Virtual mem map"
191 default y if !IA64_HP_SIM
192 help
193 Say Y to compile the kernel with support for a virtual mem map.
194 This code also only takes effect if a memory hole of greater than
195 1 Gb is found during boot. You must turn this option on if you
196 require the DISCONTIGMEM option for your machine. If you are
197 unsure, say Y.
198
199config HOLES_IN_ZONE
200 bool
201 default y if VIRTUAL_MEM_MAP
202
203config ARCH_DISCONTIGMEM_ENABLE
204 bool "Discontiguous memory support"
205 depends on (IA64_DIG || IA64_SGI_SN2 || IA64_GENERIC || IA64_HP_ZX1 || IA64_HP_ZX1_SWIOTLB) && NUMA && VIRTUAL_MEM_MAP
206 default y if (IA64_SGI_SN2 || IA64_GENERIC) && NUMA
207 help
208 Say Y to support efficient handling of discontiguous physical memory,
209 for architectures which are either NUMA (Non-Uniform Memory Access)
210 or have huge holes in the physical address space for other reasons.
211 See <file:Documentation/vm/numa> for more.
212
213config IA64_CYCLONE 177config IA64_CYCLONE
214 bool "Cyclone (EXA) Time Source support" 178 bool "Cyclone (EXA) Time Source support"
215 help 179 help
@@ -232,8 +196,10 @@ config IA64_SGI_SN_XP
232 based on a network adapter and DMA messaging. 196 based on a network adapter and DMA messaging.
233 197
234config FORCE_MAX_ZONEORDER 198config FORCE_MAX_ZONEORDER
235 int 199 int "MAX_ORDER (11 - 17)" if !HUGETLB_PAGE
236 default "18" 200 range 11 17 if !HUGETLB_PAGE
201 default "17" if HUGETLB_PAGE
202 default "11"
237 203
238config SMP 204config SMP
239 bool "Symmetric multi-processing support" 205 bool "Symmetric multi-processing support"
@@ -254,8 +220,8 @@ config SMP
254 If you don't know what to do here, say N. 220 If you don't know what to do here, say N.
255 221
256config NR_CPUS 222config NR_CPUS
257 int "Maximum number of CPUs (2-512)" 223 int "Maximum number of CPUs (2-1024)"
258 range 2 512 224 range 2 1024
259 depends on SMP 225 depends on SMP
260 default "64" 226 default "64"
261 help 227 help
@@ -298,6 +264,58 @@ config PREEMPT
298 264
299source "mm/Kconfig" 265source "mm/Kconfig"
300 266
267config ARCH_SELECT_MEMORY_MODEL
268 def_bool y
269
270config ARCH_DISCONTIGMEM_ENABLE
271 def_bool y
272 help
273 Say Y to support efficient handling of discontiguous physical memory,
274 for architectures which are either NUMA (Non-Uniform Memory Access)
275 or have huge holes in the physical address space for other reasons.
276 See <file:Documentation/vm/numa> for more.
277
278config ARCH_FLATMEM_ENABLE
279 def_bool y
280
281config ARCH_SPARSEMEM_ENABLE
282 def_bool y
283 depends on ARCH_DISCONTIGMEM_ENABLE
284
285config ARCH_DISCONTIGMEM_DEFAULT
286 def_bool y if (IA64_SGI_SN2 || IA64_GENERIC || IA64_HP_ZX1 || IA64_HP_ZX1_SWIOTLB)
287 depends on ARCH_DISCONTIGMEM_ENABLE
288
289config NUMA
290 bool "NUMA support"
291 depends on !IA64_HP_SIM && !FLATMEM
292 default y if IA64_SGI_SN2
293 help
294 Say Y to compile the kernel to support NUMA (Non-Uniform Memory
295 Access). This option is for configuring high-end multiprocessor
296 server systems. If in doubt, say N.
297
298# VIRTUAL_MEM_MAP and FLAT_NODE_MEM_MAP are functionally equivalent.
299# VIRTUAL_MEM_MAP has been retained for historical reasons.
300config VIRTUAL_MEM_MAP
301 bool "Virtual mem map"
302 depends on !SPARSEMEM
303 default y if !IA64_HP_SIM
304 help
305 Say Y to compile the kernel with support for a virtual mem map.
306 This code also only takes effect if a memory hole of greater than
307 1 Gb is found during boot. You must turn this option on if you
308 require the DISCONTIGMEM option for your machine. If you are
309 unsure, say Y.
310
311config HOLES_IN_ZONE
312 bool
313 default y if VIRTUAL_MEM_MAP
314
315config HAVE_ARCH_EARLY_PFN_TO_NID
316 def_bool y
317 depends on NEED_MULTIPLE_NODES
318
301config IA32_SUPPORT 319config IA32_SUPPORT
302 bool "Support for Linux/x86 binaries" 320 bool "Support for Linux/x86 binaries"
303 help 321 help
diff --git a/arch/ia64/configs/bigsur_defconfig b/arch/ia64/configs/bigsur_defconfig
index 3b65cbb31b1d..b40672bb3ab0 100644
--- a/arch/ia64/configs/bigsur_defconfig
+++ b/arch/ia64/configs/bigsur_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.10-rc2 3# Linux kernel version: 2.6.14-rc1
4# Mon Nov 29 13:27:48 2004 4# Wed Sep 14 15:18:49 2005
5# 5#
6 6
7# 7#
@@ -10,34 +10,40 @@
10CONFIG_EXPERIMENTAL=y 10CONFIG_EXPERIMENTAL=y
11CONFIG_CLEAN_COMPILE=y 11CONFIG_CLEAN_COMPILE=y
12CONFIG_LOCK_KERNEL=y 12CONFIG_LOCK_KERNEL=y
13CONFIG_INIT_ENV_ARG_LIMIT=32
13 14
14# 15#
15# General setup 16# General setup
16# 17#
17CONFIG_LOCALVERSION="" 18CONFIG_LOCALVERSION=""
19CONFIG_LOCALVERSION_AUTO=y
18CONFIG_SWAP=y 20CONFIG_SWAP=y
19CONFIG_SYSVIPC=y 21CONFIG_SYSVIPC=y
20CONFIG_POSIX_MQUEUE=y 22CONFIG_POSIX_MQUEUE=y
21# CONFIG_BSD_PROCESS_ACCT is not set 23# CONFIG_BSD_PROCESS_ACCT is not set
22CONFIG_SYSCTL=y 24CONFIG_SYSCTL=y
23# CONFIG_AUDIT is not set 25# CONFIG_AUDIT is not set
24CONFIG_LOG_BUF_SHIFT=16
25CONFIG_HOTPLUG=y 26CONFIG_HOTPLUG=y
26CONFIG_KOBJECT_UEVENT=y 27CONFIG_KOBJECT_UEVENT=y
27# CONFIG_IKCONFIG is not set 28# CONFIG_IKCONFIG is not set
29# CONFIG_CPUSETS is not set
30CONFIG_INITRAMFS_SOURCE=""
28# CONFIG_EMBEDDED is not set 31# CONFIG_EMBEDDED is not set
29CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
30# CONFIG_KALLSYMS_ALL is not set 33# CONFIG_KALLSYMS_ALL is not set
31# CONFIG_KALLSYMS_EXTRA_PASS is not set 34# CONFIG_KALLSYMS_EXTRA_PASS is not set
35CONFIG_PRINTK=y
36CONFIG_BUG=y
37CONFIG_BASE_FULL=y
32CONFIG_FUTEX=y 38CONFIG_FUTEX=y
33CONFIG_EPOLL=y 39CONFIG_EPOLL=y
34# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
35CONFIG_SHMEM=y 40CONFIG_SHMEM=y
36CONFIG_CC_ALIGN_FUNCTIONS=0 41CONFIG_CC_ALIGN_FUNCTIONS=0
37CONFIG_CC_ALIGN_LABELS=0 42CONFIG_CC_ALIGN_LABELS=0
38CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
39CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
40# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
41 47
42# 48#
43# Loadable module support 49# Loadable module support
@@ -58,12 +64,15 @@ CONFIG_IA64=y
58CONFIG_64BIT=y 64CONFIG_64BIT=y
59CONFIG_MMU=y 65CONFIG_MMU=y
60CONFIG_RWSEM_XCHGADD_ALGORITHM=y 66CONFIG_RWSEM_XCHGADD_ALGORITHM=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y
61CONFIG_TIME_INTERPOLATION=y 68CONFIG_TIME_INTERPOLATION=y
62CONFIG_EFI=y 69CONFIG_EFI=y
63CONFIG_GENERIC_IOMAP=y 70CONFIG_GENERIC_IOMAP=y
71CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
64# CONFIG_IA64_GENERIC is not set 72# CONFIG_IA64_GENERIC is not set
65CONFIG_IA64_DIG=y 73CONFIG_IA64_DIG=y
66# CONFIG_IA64_HP_ZX1 is not set 74# CONFIG_IA64_HP_ZX1 is not set
75# CONFIG_IA64_HP_ZX1_SWIOTLB is not set
67# CONFIG_IA64_SGI_SN2 is not set 76# CONFIG_IA64_SGI_SN2 is not set
68# CONFIG_IA64_HP_SIM is not set 77# CONFIG_IA64_HP_SIM is not set
69CONFIG_ITANIUM=y 78CONFIG_ITANIUM=y
@@ -72,17 +81,30 @@ CONFIG_ITANIUM=y
72# CONFIG_IA64_PAGE_SIZE_8KB is not set 81# CONFIG_IA64_PAGE_SIZE_8KB is not set
73CONFIG_IA64_PAGE_SIZE_16KB=y 82CONFIG_IA64_PAGE_SIZE_16KB=y
74# CONFIG_IA64_PAGE_SIZE_64KB is not set 83# CONFIG_IA64_PAGE_SIZE_64KB is not set
84# CONFIG_HZ_100 is not set
85CONFIG_HZ_250=y
86# CONFIG_HZ_1000 is not set
87CONFIG_HZ=250
75CONFIG_IA64_BRL_EMU=y 88CONFIG_IA64_BRL_EMU=y
76CONFIG_IA64_L1_CACHE_SHIFT=6 89CONFIG_IA64_L1_CACHE_SHIFT=6
77# CONFIG_NUMA is not set 90# CONFIG_NUMA is not set
78# CONFIG_VIRTUAL_MEM_MAP is not set 91# CONFIG_VIRTUAL_MEM_MAP is not set
79# CONFIG_IA64_CYCLONE is not set 92# CONFIG_IA64_CYCLONE is not set
80CONFIG_IOSAPIC=y 93CONFIG_IOSAPIC=y
94# CONFIG_IA64_SGI_SN_XP is not set
81CONFIG_FORCE_MAX_ZONEORDER=18 95CONFIG_FORCE_MAX_ZONEORDER=18
82CONFIG_SMP=y 96CONFIG_SMP=y
83CONFIG_NR_CPUS=2 97CONFIG_NR_CPUS=2
84# CONFIG_HOTPLUG_CPU is not set 98# CONFIG_HOTPLUG_CPU is not set
99# CONFIG_SCHED_SMT is not set
85CONFIG_PREEMPT=y 100CONFIG_PREEMPT=y
101CONFIG_SELECT_MEMORY_MODEL=y
102CONFIG_FLATMEM_MANUAL=y
103# CONFIG_DISCONTIGMEM_MANUAL is not set
104# CONFIG_SPARSEMEM_MANUAL is not set
105CONFIG_FLATMEM=y
106CONFIG_FLAT_NODE_MEM_MAP=y
107# CONFIG_SPARSEMEM_STATIC is not set
86CONFIG_HAVE_DEC_LOCK=y 108CONFIG_HAVE_DEC_LOCK=y
87CONFIG_IA32_SUPPORT=y 109CONFIG_IA32_SUPPORT=y
88CONFIG_COMPAT=y 110CONFIG_COMPAT=y
@@ -95,6 +117,7 @@ CONFIG_IA64_PALINFO=y
95# 117#
96CONFIG_EFI_VARS=y 118CONFIG_EFI_VARS=y
97CONFIG_EFI_PCDP=y 119CONFIG_EFI_PCDP=y
120# CONFIG_DELL_RBU is not set
98CONFIG_BINFMT_ELF=y 121CONFIG_BINFMT_ELF=y
99CONFIG_BINFMT_MISC=m 122CONFIG_BINFMT_MISC=m
100 123
@@ -102,18 +125,26 @@ CONFIG_BINFMT_MISC=m
102# Power management and ACPI 125# Power management and ACPI
103# 126#
104CONFIG_PM=y 127CONFIG_PM=y
105CONFIG_ACPI=y 128# CONFIG_PM_DEBUG is not set
106 129
107# 130#
108# ACPI (Advanced Configuration and Power Interface) Support 131# ACPI (Advanced Configuration and Power Interface) Support
109# 132#
133CONFIG_ACPI=y
110CONFIG_ACPI_BUTTON=m 134CONFIG_ACPI_BUTTON=m
111CONFIG_ACPI_FAN=m 135CONFIG_ACPI_FAN=m
112CONFIG_ACPI_PROCESSOR=m 136CONFIG_ACPI_PROCESSOR=m
113CONFIG_ACPI_THERMAL=m 137CONFIG_ACPI_THERMAL=m
138CONFIG_ACPI_BLACKLIST_YEAR=0
114# CONFIG_ACPI_DEBUG is not set 139# CONFIG_ACPI_DEBUG is not set
115CONFIG_ACPI_POWER=y 140CONFIG_ACPI_POWER=y
116CONFIG_ACPI_SYSTEM=y 141CONFIG_ACPI_SYSTEM=y
142# CONFIG_ACPI_CONTAINER is not set
143
144#
145# CPU Frequency scaling
146#
147# CONFIG_CPU_FREQ is not set
117 148
118# 149#
119# Bus options (PCI, PCMCIA) 150# Bus options (PCI, PCMCIA)
@@ -122,7 +153,7 @@ CONFIG_PCI=y
122CONFIG_PCI_DOMAINS=y 153CONFIG_PCI_DOMAINS=y
123# CONFIG_PCI_MSI is not set 154# CONFIG_PCI_MSI is not set
124CONFIG_PCI_LEGACY_PROC=y 155CONFIG_PCI_LEGACY_PROC=y
125CONFIG_PCI_NAMES=y 156# CONFIG_PCI_DEBUG is not set
126 157
127# 158#
128# PCI Hotplug Support 159# PCI Hotplug Support
@@ -135,8 +166,70 @@ CONFIG_PCI_NAMES=y
135# CONFIG_PCCARD is not set 166# CONFIG_PCCARD is not set
136 167
137# 168#
138# PC-card bridges 169# Networking
170#
171CONFIG_NET=y
172
173#
174# Networking options
175#
176CONFIG_PACKET=y
177CONFIG_PACKET_MMAP=y
178CONFIG_UNIX=y
179# CONFIG_NET_KEY is not set
180CONFIG_INET=y
181# CONFIG_IP_MULTICAST is not set
182# CONFIG_IP_ADVANCED_ROUTER is not set
183CONFIG_IP_FIB_HASH=y
184# CONFIG_IP_PNP is not set
185# CONFIG_NET_IPIP is not set
186# CONFIG_NET_IPGRE is not set
187# CONFIG_ARPD is not set
188# CONFIG_SYN_COOKIES is not set
189# CONFIG_INET_AH is not set
190# CONFIG_INET_ESP is not set
191# CONFIG_INET_IPCOMP is not set
192# CONFIG_INET_TUNNEL is not set
193CONFIG_INET_DIAG=y
194CONFIG_INET_TCP_DIAG=y
195# CONFIG_TCP_CONG_ADVANCED is not set
196CONFIG_TCP_CONG_BIC=y
197# CONFIG_IPV6 is not set
198# CONFIG_NETFILTER is not set
199
200#
201# DCCP Configuration (EXPERIMENTAL)
202#
203# CONFIG_IP_DCCP is not set
204
205#
206# SCTP Configuration (EXPERIMENTAL)
207#
208# CONFIG_IP_SCTP is not set
209# CONFIG_ATM is not set
210# CONFIG_BRIDGE is not set
211# CONFIG_VLAN_8021Q is not set
212# CONFIG_DECNET is not set
213# CONFIG_LLC2 is not set
214# CONFIG_IPX is not set
215# CONFIG_ATALK is not set
216# CONFIG_X25 is not set
217# CONFIG_LAPB is not set
218# CONFIG_NET_DIVERT is not set
219# CONFIG_ECONET is not set
220# CONFIG_WAN_ROUTER is not set
221# CONFIG_NET_SCHED is not set
222# CONFIG_NET_CLS_ROUTE is not set
223
224#
225# Network testing
139# 226#
227# CONFIG_NET_PKTGEN is not set
228# CONFIG_NETFILTER_NETLINK is not set
229# CONFIG_HAMRADIO is not set
230# CONFIG_IRDA is not set
231# CONFIG_BT is not set
232# CONFIG_IEEE80211 is not set
140 233
141# 234#
142# Device Drivers 235# Device Drivers
@@ -151,6 +244,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
151# CONFIG_DEBUG_DRIVER is not set 244# CONFIG_DEBUG_DRIVER is not set
152 245
153# 246#
247# Connector - unified userspace <-> kernelspace linker
248#
249# CONFIG_CONNECTOR is not set
250
251#
154# Memory Technology Devices (MTD) 252# Memory Technology Devices (MTD)
155# 253#
156# CONFIG_MTD is not set 254# CONFIG_MTD is not set
@@ -163,7 +261,13 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
163# 261#
164# Plug and Play support 262# Plug and Play support
165# 263#
166# CONFIG_PNP is not set 264CONFIG_PNP=y
265# CONFIG_PNP_DEBUG is not set
266
267#
268# Protocols
269#
270CONFIG_PNPACPI=y
167 271
168# 272#
169# Block devices 273# Block devices
@@ -172,14 +276,15 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
172# CONFIG_BLK_CPQ_CISS_DA is not set 276# CONFIG_BLK_CPQ_CISS_DA is not set
173# CONFIG_BLK_DEV_DAC960 is not set 277# CONFIG_BLK_DEV_DAC960 is not set
174# CONFIG_BLK_DEV_UMEM is not set 278# CONFIG_BLK_DEV_UMEM is not set
279# CONFIG_BLK_DEV_COW_COMMON is not set
175CONFIG_BLK_DEV_LOOP=m 280CONFIG_BLK_DEV_LOOP=m
176CONFIG_BLK_DEV_CRYPTOLOOP=m 281CONFIG_BLK_DEV_CRYPTOLOOP=m
177CONFIG_BLK_DEV_NBD=m 282CONFIG_BLK_DEV_NBD=m
178# CONFIG_BLK_DEV_SX8 is not set 283# CONFIG_BLK_DEV_SX8 is not set
179# CONFIG_BLK_DEV_UB is not set 284# CONFIG_BLK_DEV_UB is not set
180CONFIG_BLK_DEV_RAM=m 285CONFIG_BLK_DEV_RAM=m
286CONFIG_BLK_DEV_RAM_COUNT=16
181CONFIG_BLK_DEV_RAM_SIZE=4096 287CONFIG_BLK_DEV_RAM_SIZE=4096
182CONFIG_INITRAMFS_SOURCE=""
183# CONFIG_CDROM_PKTCDVD is not set 288# CONFIG_CDROM_PKTCDVD is not set
184 289
185# 290#
@@ -189,6 +294,7 @@ CONFIG_IOSCHED_NOOP=y
189CONFIG_IOSCHED_AS=y 294CONFIG_IOSCHED_AS=y
190CONFIG_IOSCHED_DEADLINE=y 295CONFIG_IOSCHED_DEADLINE=y
191CONFIG_IOSCHED_CFQ=y 296CONFIG_IOSCHED_CFQ=y
297# CONFIG_ATA_OVER_ETH is not set
192 298
193# 299#
194# ATA/ATAPI/MFM/RLL support 300# ATA/ATAPI/MFM/RLL support
@@ -211,7 +317,8 @@ CONFIG_BLK_DEV_IDEFLOPPY=m
211# 317#
212# IDE chipset support/bugfixes 318# IDE chipset support/bugfixes
213# 319#
214CONFIG_IDE_GENERIC=m 320# CONFIG_IDE_GENERIC is not set
321# CONFIG_BLK_DEV_IDEPNP is not set
215CONFIG_BLK_DEV_IDEPCI=y 322CONFIG_BLK_DEV_IDEPCI=y
216CONFIG_IDEPCI_SHARE_IRQ=y 323CONFIG_IDEPCI_SHARE_IRQ=y
217# CONFIG_BLK_DEV_OFFBOARD is not set 324# CONFIG_BLK_DEV_OFFBOARD is not set
@@ -233,6 +340,7 @@ CONFIG_IDEDMA_PCI_AUTO=y
233# CONFIG_BLK_DEV_HPT366 is not set 340# CONFIG_BLK_DEV_HPT366 is not set
234# CONFIG_BLK_DEV_SC1200 is not set 341# CONFIG_BLK_DEV_SC1200 is not set
235CONFIG_BLK_DEV_PIIX=m 342CONFIG_BLK_DEV_PIIX=m
343# CONFIG_BLK_DEV_IT821X is not set
236# CONFIG_BLK_DEV_NS87415 is not set 344# CONFIG_BLK_DEV_NS87415 is not set
237# CONFIG_BLK_DEV_PDC202XX_OLD is not set 345# CONFIG_BLK_DEV_PDC202XX_OLD is not set
238# CONFIG_BLK_DEV_PDC202XX_NEW is not set 346# CONFIG_BLK_DEV_PDC202XX_NEW is not set
@@ -250,6 +358,7 @@ CONFIG_IDEDMA_AUTO=y
250# 358#
251# SCSI device support 359# SCSI device support
252# 360#
361# CONFIG_RAID_ATTRS is not set
253CONFIG_SCSI=y 362CONFIG_SCSI=y
254CONFIG_SCSI_PROC_FS=y 363CONFIG_SCSI_PROC_FS=y
255 364
@@ -261,6 +370,7 @@ CONFIG_BLK_DEV_SD=y
261# CONFIG_CHR_DEV_OSST is not set 370# CONFIG_CHR_DEV_OSST is not set
262# CONFIG_BLK_DEV_SR is not set 371# CONFIG_BLK_DEV_SR is not set
263# CONFIG_CHR_DEV_SG is not set 372# CONFIG_CHR_DEV_SG is not set
373# CONFIG_CHR_DEV_SCH is not set
264 374
265# 375#
266# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 376# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
@@ -274,6 +384,8 @@ CONFIG_SCSI_LOGGING=y
274# 384#
275CONFIG_SCSI_SPI_ATTRS=m 385CONFIG_SCSI_SPI_ATTRS=m
276# CONFIG_SCSI_FC_ATTRS is not set 386# CONFIG_SCSI_FC_ATTRS is not set
387# CONFIG_SCSI_ISCSI_ATTRS is not set
388# CONFIG_SCSI_SAS_ATTRS is not set
277 389
278# 390#
279# SCSI low-level drivers 391# SCSI low-level drivers
@@ -288,18 +400,13 @@ CONFIG_SCSI_SPI_ATTRS=m
288# CONFIG_MEGARAID_NEWGEN is not set 400# CONFIG_MEGARAID_NEWGEN is not set
289# CONFIG_MEGARAID_LEGACY is not set 401# CONFIG_MEGARAID_LEGACY is not set
290# CONFIG_SCSI_SATA is not set 402# CONFIG_SCSI_SATA is not set
291# CONFIG_SCSI_BUSLOGIC is not set
292# CONFIG_SCSI_DMX3191D is not set 403# CONFIG_SCSI_DMX3191D is not set
293# CONFIG_SCSI_EATA is not set
294# CONFIG_SCSI_EATA_PIO is not set
295# CONFIG_SCSI_FUTURE_DOMAIN is not set 404# CONFIG_SCSI_FUTURE_DOMAIN is not set
296# CONFIG_SCSI_GDTH is not set
297# CONFIG_SCSI_IPS is not set 405# CONFIG_SCSI_IPS is not set
298# CONFIG_SCSI_INITIO is not set 406# CONFIG_SCSI_INITIO is not set
299# CONFIG_SCSI_INIA100 is not set 407# CONFIG_SCSI_INIA100 is not set
300# CONFIG_SCSI_SYM53C8XX_2 is not set 408# CONFIG_SCSI_SYM53C8XX_2 is not set
301# CONFIG_SCSI_IPR is not set 409# CONFIG_SCSI_IPR is not set
302# CONFIG_SCSI_QLOGIC_ISP is not set
303# CONFIG_SCSI_QLOGIC_FC is not set 410# CONFIG_SCSI_QLOGIC_FC is not set
304CONFIG_SCSI_QLOGIC_1280=y 411CONFIG_SCSI_QLOGIC_1280=y
305# CONFIG_SCSI_QLOGIC_1280_1040 is not set 412# CONFIG_SCSI_QLOGIC_1280_1040 is not set
@@ -309,7 +416,8 @@ CONFIG_SCSI_QLA2XXX=y
309# CONFIG_SCSI_QLA2300 is not set 416# CONFIG_SCSI_QLA2300 is not set
310# CONFIG_SCSI_QLA2322 is not set 417# CONFIG_SCSI_QLA2322 is not set
311# CONFIG_SCSI_QLA6312 is not set 418# CONFIG_SCSI_QLA6312 is not set
312# CONFIG_SCSI_QLA6322 is not set 419# CONFIG_SCSI_QLA24XX is not set
420# CONFIG_SCSI_LPFC is not set
313# CONFIG_SCSI_DC395x is not set 421# CONFIG_SCSI_DC395x is not set
314# CONFIG_SCSI_DC390T is not set 422# CONFIG_SCSI_DC390T is not set
315# CONFIG_SCSI_DEBUG is not set 423# CONFIG_SCSI_DEBUG is not set
@@ -332,11 +440,14 @@ CONFIG_DM_CRYPT=m
332CONFIG_DM_SNAPSHOT=m 440CONFIG_DM_SNAPSHOT=m
333CONFIG_DM_MIRROR=m 441CONFIG_DM_MIRROR=m
334CONFIG_DM_ZERO=m 442CONFIG_DM_ZERO=m
443# CONFIG_DM_MULTIPATH is not set
335 444
336# 445#
337# Fusion MPT device support 446# Fusion MPT device support
338# 447#
339# CONFIG_FUSION is not set 448# CONFIG_FUSION is not set
449# CONFIG_FUSION_SPI is not set
450# CONFIG_FUSION_FC is not set
340 451
341# 452#
342# IEEE 1394 (FireWire) support 453# IEEE 1394 (FireWire) support
@@ -349,72 +460,14 @@ CONFIG_DM_ZERO=m
349# CONFIG_I2O is not set 460# CONFIG_I2O is not set
350 461
351# 462#
352# Networking support 463# Network device support
353# 464#
354CONFIG_NET=y
355
356#
357# Networking options
358#
359CONFIG_PACKET=y
360CONFIG_PACKET_MMAP=y
361# CONFIG_NETLINK_DEV is not set
362CONFIG_UNIX=y
363# CONFIG_NET_KEY is not set
364CONFIG_INET=y
365# CONFIG_IP_MULTICAST is not set
366# CONFIG_IP_ADVANCED_ROUTER is not set
367# CONFIG_IP_PNP is not set
368# CONFIG_NET_IPIP is not set
369# CONFIG_NET_IPGRE is not set
370# CONFIG_ARPD is not set
371# CONFIG_SYN_COOKIES is not set
372# CONFIG_INET_AH is not set
373# CONFIG_INET_ESP is not set
374# CONFIG_INET_IPCOMP is not set
375# CONFIG_INET_TUNNEL is not set
376CONFIG_IP_TCPDIAG=y
377# CONFIG_IP_TCPDIAG_IPV6 is not set
378# CONFIG_IPV6 is not set
379# CONFIG_NETFILTER is not set
380
381#
382# SCTP Configuration (EXPERIMENTAL)
383#
384# CONFIG_IP_SCTP is not set
385# CONFIG_ATM is not set
386# CONFIG_BRIDGE is not set
387# CONFIG_VLAN_8021Q is not set
388# CONFIG_DECNET is not set
389# CONFIG_LLC2 is not set
390# CONFIG_IPX is not set
391# CONFIG_ATALK is not set
392# CONFIG_X25 is not set
393# CONFIG_LAPB is not set
394# CONFIG_NET_DIVERT is not set
395# CONFIG_ECONET is not set
396# CONFIG_WAN_ROUTER is not set
397
398#
399# QoS and/or fair queueing
400#
401# CONFIG_NET_SCHED is not set
402# CONFIG_NET_CLS_ROUTE is not set
403
404#
405# Network testing
406#
407# CONFIG_NET_PKTGEN is not set
408# CONFIG_NETPOLL is not set
409# CONFIG_NET_POLL_CONTROLLER is not set
410# CONFIG_HAMRADIO is not set
411# CONFIG_IRDA is not set
412# CONFIG_BT is not set
413CONFIG_NETDEVICES=y 465CONFIG_NETDEVICES=y
414CONFIG_DUMMY=y 466CONFIG_DUMMY=y
415# CONFIG_BONDING is not set 467# CONFIG_BONDING is not set
416# CONFIG_EQUALIZER is not set 468# CONFIG_EQUALIZER is not set
417# CONFIG_TUN is not set 469# CONFIG_TUN is not set
470# CONFIG_NET_SB1000 is not set
418 471
419# 472#
420# ARCnet devices 473# ARCnet devices
@@ -422,6 +475,11 @@ CONFIG_DUMMY=y
422# CONFIG_ARCNET is not set 475# CONFIG_ARCNET is not set
423 476
424# 477#
478# PHY device support
479#
480# CONFIG_PHYLIB is not set
481
482#
425# Ethernet (10 or 100Mbit) 483# Ethernet (10 or 100Mbit)
426# 484#
427CONFIG_NET_ETHERNET=y 485CONFIG_NET_ETHERNET=y
@@ -443,7 +501,6 @@ CONFIG_NET_PCI=y
443# CONFIG_FORCEDETH is not set 501# CONFIG_FORCEDETH is not set
444# CONFIG_DGRS is not set 502# CONFIG_DGRS is not set
445CONFIG_EEPRO100=y 503CONFIG_EEPRO100=y
446# CONFIG_EEPRO100_PIO is not set
447# CONFIG_E100 is not set 504# CONFIG_E100 is not set
448# CONFIG_FEALNX is not set 505# CONFIG_FEALNX is not set
449# CONFIG_NATSEMI is not set 506# CONFIG_NATSEMI is not set
@@ -465,13 +522,17 @@ CONFIG_EEPRO100=y
465# CONFIG_HAMACHI is not set 522# CONFIG_HAMACHI is not set
466# CONFIG_YELLOWFIN is not set 523# CONFIG_YELLOWFIN is not set
467# CONFIG_R8169 is not set 524# CONFIG_R8169 is not set
525# CONFIG_SIS190 is not set
526# CONFIG_SKGE is not set
468# CONFIG_SK98LIN is not set 527# CONFIG_SK98LIN is not set
469# CONFIG_VIA_VELOCITY is not set 528# CONFIG_VIA_VELOCITY is not set
470# CONFIG_TIGON3 is not set 529# CONFIG_TIGON3 is not set
530# CONFIG_BNX2 is not set
471 531
472# 532#
473# Ethernet (10000 Mbit) 533# Ethernet (10000 Mbit)
474# 534#
535# CONFIG_CHELSIO_T1 is not set
475# CONFIG_IXGB is not set 536# CONFIG_IXGB is not set
476# CONFIG_S2IO is not set 537# CONFIG_S2IO is not set
477 538
@@ -496,6 +557,8 @@ CONFIG_EEPRO100=y
496# CONFIG_NET_FC is not set 557# CONFIG_NET_FC is not set
497# CONFIG_SHAPER is not set 558# CONFIG_SHAPER is not set
498# CONFIG_NETCONSOLE is not set 559# CONFIG_NETCONSOLE is not set
560# CONFIG_NETPOLL is not set
561# CONFIG_NET_POLL_CONTROLLER is not set
499 562
500# 563#
501# ISDN subsystem 564# ISDN subsystem
@@ -525,18 +588,6 @@ CONFIG_INPUT_EVDEV=y
525# CONFIG_INPUT_EVBUG is not set 588# CONFIG_INPUT_EVBUG is not set
526 589
527# 590#
528# Input I/O drivers
529#
530# CONFIG_GAMEPORT is not set
531CONFIG_SOUND_GAMEPORT=y
532CONFIG_SERIO=y
533CONFIG_SERIO_I8042=y
534CONFIG_SERIO_SERPORT=y
535# CONFIG_SERIO_CT82C710 is not set
536# CONFIG_SERIO_PCIPS2 is not set
537# CONFIG_SERIO_RAW is not set
538
539#
540# Input Device Drivers 591# Input Device Drivers
541# 592#
542CONFIG_INPUT_KEYBOARD=y 593CONFIG_INPUT_KEYBOARD=y
@@ -554,6 +605,17 @@ CONFIG_MOUSE_PS2=y
554# CONFIG_INPUT_MISC is not set 605# CONFIG_INPUT_MISC is not set
555 606
556# 607#
608# Hardware I/O ports
609#
610CONFIG_SERIO=y
611CONFIG_SERIO_I8042=y
612CONFIG_SERIO_SERPORT=y
613# CONFIG_SERIO_PCIPS2 is not set
614CONFIG_SERIO_LIBPS2=y
615# CONFIG_SERIO_RAW is not set
616# CONFIG_GAMEPORT is not set
617
618#
557# Character devices 619# Character devices
558# 620#
559CONFIG_VT=y 621CONFIG_VT=y
@@ -571,7 +633,6 @@ CONFIG_SERIAL_8250_NR_UARTS=4
571CONFIG_SERIAL_8250_EXTENDED=y 633CONFIG_SERIAL_8250_EXTENDED=y
572CONFIG_SERIAL_8250_SHARE_IRQ=y 634CONFIG_SERIAL_8250_SHARE_IRQ=y
573# CONFIG_SERIAL_8250_DETECT_IRQ is not set 635# CONFIG_SERIAL_8250_DETECT_IRQ is not set
574# CONFIG_SERIAL_8250_MULTIPORT is not set
575# CONFIG_SERIAL_8250_RSA is not set 636# CONFIG_SERIAL_8250_RSA is not set
576 637
577# 638#
@@ -579,6 +640,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
579# 640#
580CONFIG_SERIAL_CORE=y 641CONFIG_SERIAL_CORE=y
581CONFIG_SERIAL_CORE_CONSOLE=y 642CONFIG_SERIAL_CORE_CONSOLE=y
643# CONFIG_SERIAL_JSM is not set
582CONFIG_UNIX98_PTYS=y 644CONFIG_UNIX98_PTYS=y
583CONFIG_LEGACY_PTYS=y 645CONFIG_LEGACY_PTYS=y
584CONFIG_LEGACY_PTY_COUNT=256 646CONFIG_LEGACY_PTY_COUNT=256
@@ -603,14 +665,22 @@ CONFIG_EFI_RTC=y
603# 665#
604CONFIG_AGP=m 666CONFIG_AGP=m
605CONFIG_AGP_I460=m 667CONFIG_AGP_I460=m
606CONFIG_DRM=y 668CONFIG_DRM=m
607# CONFIG_DRM_TDFX is not set 669# CONFIG_DRM_TDFX is not set
608CONFIG_DRM_R128=m 670CONFIG_DRM_R128=m
609# CONFIG_DRM_RADEON is not set 671# CONFIG_DRM_RADEON is not set
610# CONFIG_DRM_MGA is not set 672# CONFIG_DRM_MGA is not set
611# CONFIG_DRM_SIS is not set 673# CONFIG_DRM_SIS is not set
674# CONFIG_DRM_VIA is not set
675# CONFIG_DRM_SAVAGE is not set
612# CONFIG_RAW_DRIVER is not set 676# CONFIG_RAW_DRIVER is not set
613# CONFIG_HPET is not set 677# CONFIG_HPET is not set
678# CONFIG_HANGCHECK_TIMER is not set
679
680#
681# TPM devices
682#
683# CONFIG_TCG_TPM is not set
614 684
615# 685#
616# I2C support 686# I2C support
@@ -635,7 +705,7 @@ CONFIG_I2C_ALGOBIT=y
635# CONFIG_I2C_AMD8111 is not set 705# CONFIG_I2C_AMD8111 is not set
636# CONFIG_I2C_I801 is not set 706# CONFIG_I2C_I801 is not set
637# CONFIG_I2C_I810 is not set 707# CONFIG_I2C_I810 is not set
638# CONFIG_I2C_ISA is not set 708# CONFIG_I2C_PIIX4 is not set
639# CONFIG_I2C_NFORCE2 is not set 709# CONFIG_I2C_NFORCE2 is not set
640# CONFIG_I2C_PARPORT_LIGHT is not set 710# CONFIG_I2C_PARPORT_LIGHT is not set
641# CONFIG_I2C_PROSAVAGE is not set 711# CONFIG_I2C_PROSAVAGE is not set
@@ -651,16 +721,43 @@ CONFIG_I2C_ALGOBIT=y
651# CONFIG_I2C_PCA_ISA is not set 721# CONFIG_I2C_PCA_ISA is not set
652 722
653# 723#
654# Hardware Sensors Chip support 724# Miscellaneous I2C Chip support
655# 725#
656# CONFIG_I2C_SENSOR is not set 726# CONFIG_SENSORS_DS1337 is not set
727# CONFIG_SENSORS_DS1374 is not set
728# CONFIG_SENSORS_EEPROM is not set
729# CONFIG_SENSORS_PCF8574 is not set
730# CONFIG_SENSORS_PCA9539 is not set
731# CONFIG_SENSORS_PCF8591 is not set
732# CONFIG_SENSORS_RTC8564 is not set
733# CONFIG_SENSORS_MAX6875 is not set
734# CONFIG_I2C_DEBUG_CORE is not set
735# CONFIG_I2C_DEBUG_ALGO is not set
736# CONFIG_I2C_DEBUG_BUS is not set
737# CONFIG_I2C_DEBUG_CHIP is not set
738
739#
740# Dallas's 1-wire bus
741#
742# CONFIG_W1 is not set
743
744#
745# Hardware Monitoring support
746#
747CONFIG_HWMON=y
748# CONFIG_HWMON_VID is not set
657# CONFIG_SENSORS_ADM1021 is not set 749# CONFIG_SENSORS_ADM1021 is not set
658# CONFIG_SENSORS_ADM1025 is not set 750# CONFIG_SENSORS_ADM1025 is not set
751# CONFIG_SENSORS_ADM1026 is not set
659# CONFIG_SENSORS_ADM1031 is not set 752# CONFIG_SENSORS_ADM1031 is not set
753# CONFIG_SENSORS_ADM9240 is not set
660# CONFIG_SENSORS_ASB100 is not set 754# CONFIG_SENSORS_ASB100 is not set
755# CONFIG_SENSORS_ATXP1 is not set
661# CONFIG_SENSORS_DS1621 is not set 756# CONFIG_SENSORS_DS1621 is not set
662# CONFIG_SENSORS_FSCHER is not set 757# CONFIG_SENSORS_FSCHER is not set
758# CONFIG_SENSORS_FSCPOS is not set
663# CONFIG_SENSORS_GL518SM is not set 759# CONFIG_SENSORS_GL518SM is not set
760# CONFIG_SENSORS_GL520SM is not set
664# CONFIG_SENSORS_IT87 is not set 761# CONFIG_SENSORS_IT87 is not set
665# CONFIG_SENSORS_LM63 is not set 762# CONFIG_SENSORS_LM63 is not set
666# CONFIG_SENSORS_LM75 is not set 763# CONFIG_SENSORS_LM75 is not set
@@ -671,33 +768,26 @@ CONFIG_I2C_ALGOBIT=y
671# CONFIG_SENSORS_LM85 is not set 768# CONFIG_SENSORS_LM85 is not set
672# CONFIG_SENSORS_LM87 is not set 769# CONFIG_SENSORS_LM87 is not set
673# CONFIG_SENSORS_LM90 is not set 770# CONFIG_SENSORS_LM90 is not set
771# CONFIG_SENSORS_LM92 is not set
674# CONFIG_SENSORS_MAX1619 is not set 772# CONFIG_SENSORS_MAX1619 is not set
675# CONFIG_SENSORS_PC87360 is not set 773# CONFIG_SENSORS_PC87360 is not set
774# CONFIG_SENSORS_SIS5595 is not set
676# CONFIG_SENSORS_SMSC47M1 is not set 775# CONFIG_SENSORS_SMSC47M1 is not set
776# CONFIG_SENSORS_SMSC47B397 is not set
677# CONFIG_SENSORS_VIA686A is not set 777# CONFIG_SENSORS_VIA686A is not set
678# CONFIG_SENSORS_W83781D is not set 778# CONFIG_SENSORS_W83781D is not set
779# CONFIG_SENSORS_W83792D is not set
679# CONFIG_SENSORS_W83L785TS is not set 780# CONFIG_SENSORS_W83L785TS is not set
680# CONFIG_SENSORS_W83627HF is not set 781# CONFIG_SENSORS_W83627HF is not set
782# CONFIG_SENSORS_W83627EHF is not set
783# CONFIG_HWMON_DEBUG_CHIP is not set
681 784
682# 785#
683# Other I2C Chip support 786# Misc devices
684#
685# CONFIG_SENSORS_EEPROM is not set
686# CONFIG_SENSORS_PCF8574 is not set
687# CONFIG_SENSORS_PCF8591 is not set
688# CONFIG_SENSORS_RTC8564 is not set
689# CONFIG_I2C_DEBUG_CORE is not set
690# CONFIG_I2C_DEBUG_ALGO is not set
691# CONFIG_I2C_DEBUG_BUS is not set
692# CONFIG_I2C_DEBUG_CHIP is not set
693
694#
695# Dallas's 1-wire bus
696# 787#
697# CONFIG_W1 is not set
698 788
699# 789#
700# Misc devices 790# Multimedia Capabilities Port drivers
701# 791#
702 792
703# 793#
@@ -752,11 +842,12 @@ CONFIG_SND_OPL3_LIB=m
752# CONFIG_SND_MTPAV is not set 842# CONFIG_SND_MTPAV is not set
753# CONFIG_SND_SERIAL_U16550 is not set 843# CONFIG_SND_SERIAL_U16550 is not set
754# CONFIG_SND_MPU401 is not set 844# CONFIG_SND_MPU401 is not set
845CONFIG_SND_AC97_CODEC=m
846CONFIG_SND_AC97_BUS=m
755 847
756# 848#
757# PCI devices 849# PCI devices
758# 850#
759CONFIG_SND_AC97_CODEC=m
760# CONFIG_SND_ALI5451 is not set 851# CONFIG_SND_ALI5451 is not set
761# CONFIG_SND_ATIIXP is not set 852# CONFIG_SND_ATIIXP is not set
762# CONFIG_SND_ATIIXP_MODEM is not set 853# CONFIG_SND_ATIIXP_MODEM is not set
@@ -768,6 +859,8 @@ CONFIG_SND_AC97_CODEC=m
768# CONFIG_SND_CS46XX is not set 859# CONFIG_SND_CS46XX is not set
769CONFIG_SND_CS4281=m 860CONFIG_SND_CS4281=m
770# CONFIG_SND_EMU10K1 is not set 861# CONFIG_SND_EMU10K1 is not set
862# CONFIG_SND_EMU10K1X is not set
863# CONFIG_SND_CA0106 is not set
771# CONFIG_SND_KORG1212 is not set 864# CONFIG_SND_KORG1212 is not set
772# CONFIG_SND_MIXART is not set 865# CONFIG_SND_MIXART is not set
773# CONFIG_SND_NM256 is not set 866# CONFIG_SND_NM256 is not set
@@ -775,9 +868,10 @@ CONFIG_SND_CS4281=m
775# CONFIG_SND_RME96 is not set 868# CONFIG_SND_RME96 is not set
776# CONFIG_SND_RME9652 is not set 869# CONFIG_SND_RME9652 is not set
777# CONFIG_SND_HDSP is not set 870# CONFIG_SND_HDSP is not set
871# CONFIG_SND_HDSPM is not set
778# CONFIG_SND_TRIDENT is not set 872# CONFIG_SND_TRIDENT is not set
779# CONFIG_SND_YMFPCI is not set 873# CONFIG_SND_YMFPCI is not set
780# CONFIG_SND_ALS4000 is not set 874# CONFIG_SND_AD1889 is not set
781# CONFIG_SND_CMIPCI is not set 875# CONFIG_SND_CMIPCI is not set
782# CONFIG_SND_ENS1370 is not set 876# CONFIG_SND_ENS1370 is not set
783# CONFIG_SND_ENS1371 is not set 877# CONFIG_SND_ENS1371 is not set
@@ -791,13 +885,14 @@ CONFIG_SND_CS4281=m
791# CONFIG_SND_INTEL8X0M is not set 885# CONFIG_SND_INTEL8X0M is not set
792# CONFIG_SND_SONICVIBES is not set 886# CONFIG_SND_SONICVIBES is not set
793# CONFIG_SND_VIA82XX is not set 887# CONFIG_SND_VIA82XX is not set
888# CONFIG_SND_VIA82XX_MODEM is not set
794# CONFIG_SND_VX222 is not set 889# CONFIG_SND_VX222 is not set
890# CONFIG_SND_HDA_INTEL is not set
795 891
796# 892#
797# USB devices 893# USB devices
798# 894#
799# CONFIG_SND_USB_AUDIO is not set 895# CONFIG_SND_USB_AUDIO is not set
800# CONFIG_SND_USB_USX2Y is not set
801 896
802# 897#
803# Open Sound System 898# Open Sound System
@@ -807,6 +902,8 @@ CONFIG_SND_CS4281=m
807# 902#
808# USB support 903# USB support
809# 904#
905CONFIG_USB_ARCH_HAS_HCD=y
906CONFIG_USB_ARCH_HAS_OHCI=y
810CONFIG_USB=m 907CONFIG_USB=m
811# CONFIG_USB_DEBUG is not set 908# CONFIG_USB_DEBUG is not set
812 909
@@ -818,35 +915,38 @@ CONFIG_USB_DEVICEFS=y
818# CONFIG_USB_DYNAMIC_MINORS is not set 915# CONFIG_USB_DYNAMIC_MINORS is not set
819# CONFIG_USB_SUSPEND is not set 916# CONFIG_USB_SUSPEND is not set
820# CONFIG_USB_OTG is not set 917# CONFIG_USB_OTG is not set
821CONFIG_USB_ARCH_HAS_HCD=y
822CONFIG_USB_ARCH_HAS_OHCI=y
823 918
824# 919#
825# USB Host Controller Drivers 920# USB Host Controller Drivers
826# 921#
827# CONFIG_USB_EHCI_HCD is not set 922# CONFIG_USB_EHCI_HCD is not set
923# CONFIG_USB_ISP116X_HCD is not set
828# CONFIG_USB_OHCI_HCD is not set 924# CONFIG_USB_OHCI_HCD is not set
829CONFIG_USB_UHCI_HCD=m 925CONFIG_USB_UHCI_HCD=m
926# CONFIG_USB_SL811_HCD is not set
830 927
831# 928#
832# USB Device Class drivers 929# USB Device Class drivers
833# 930#
834CONFIG_USB_AUDIO=m 931# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
835CONFIG_USB_BLUETOOTH_TTY=m 932CONFIG_USB_BLUETOOTH_TTY=m
836CONFIG_USB_MIDI=m
837CONFIG_USB_ACM=m 933CONFIG_USB_ACM=m
838CONFIG_USB_PRINTER=m 934CONFIG_USB_PRINTER=m
935
936#
937# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
938#
839CONFIG_USB_STORAGE=m 939CONFIG_USB_STORAGE=m
840# CONFIG_USB_STORAGE_DEBUG is not set 940# CONFIG_USB_STORAGE_DEBUG is not set
841# CONFIG_USB_STORAGE_RW_DETECT is not set
842# CONFIG_USB_STORAGE_DATAFAB is not set 941# CONFIG_USB_STORAGE_DATAFAB is not set
843# CONFIG_USB_STORAGE_FREECOM is not set 942# CONFIG_USB_STORAGE_FREECOM is not set
844# CONFIG_USB_STORAGE_ISD200 is not set 943# CONFIG_USB_STORAGE_ISD200 is not set
845# CONFIG_USB_STORAGE_DPCM is not set 944# CONFIG_USB_STORAGE_DPCM is not set
846# CONFIG_USB_STORAGE_HP8200e is not set 945# CONFIG_USB_STORAGE_USBAT is not set
847# CONFIG_USB_STORAGE_SDDR09 is not set 946# CONFIG_USB_STORAGE_SDDR09 is not set
848# CONFIG_USB_STORAGE_SDDR55 is not set 947# CONFIG_USB_STORAGE_SDDR55 is not set
849# CONFIG_USB_STORAGE_JUMPSHOT is not set 948# CONFIG_USB_STORAGE_JUMPSHOT is not set
949# CONFIG_USB_STORAGE_ONETOUCH is not set
850 950
851# 951#
852# USB Input Devices 952# USB Input Devices
@@ -863,19 +963,23 @@ CONFIG_USB_HIDDEV=y
863# CONFIG_USB_MOUSE is not set 963# CONFIG_USB_MOUSE is not set
864# CONFIG_USB_AIPTEK is not set 964# CONFIG_USB_AIPTEK is not set
865# CONFIG_USB_WACOM is not set 965# CONFIG_USB_WACOM is not set
966# CONFIG_USB_ACECAD is not set
866# CONFIG_USB_KBTAB is not set 967# CONFIG_USB_KBTAB is not set
867# CONFIG_USB_POWERMATE is not set 968# CONFIG_USB_POWERMATE is not set
868# CONFIG_USB_MTOUCH is not set 969# CONFIG_USB_MTOUCH is not set
970# CONFIG_USB_ITMTOUCH is not set
869# CONFIG_USB_EGALAX is not set 971# CONFIG_USB_EGALAX is not set
972# CONFIG_USB_YEALINK is not set
870# CONFIG_USB_XPAD is not set 973# CONFIG_USB_XPAD is not set
871# CONFIG_USB_ATI_REMOTE is not set 974# CONFIG_USB_ATI_REMOTE is not set
975# CONFIG_USB_KEYSPAN_REMOTE is not set
976# CONFIG_USB_APPLETOUCH is not set
872 977
873# 978#
874# USB Imaging devices 979# USB Imaging devices
875# 980#
876# CONFIG_USB_MDC800 is not set 981# CONFIG_USB_MDC800 is not set
877# CONFIG_USB_MICROTEK is not set 982# CONFIG_USB_MICROTEK is not set
878# CONFIG_USB_HPUSBSCSI is not set
879 983
880# 984#
881# USB Multimedia devices 985# USB Multimedia devices
@@ -894,6 +998,7 @@ CONFIG_USB_HIDDEV=y
894# CONFIG_USB_PEGASUS is not set 998# CONFIG_USB_PEGASUS is not set
895# CONFIG_USB_RTL8150 is not set 999# CONFIG_USB_RTL8150 is not set
896# CONFIG_USB_USBNET is not set 1000# CONFIG_USB_USBNET is not set
1001CONFIG_USB_MON=y
897 1002
898# 1003#
899# USB port drivers 1004# USB port drivers
@@ -909,7 +1014,6 @@ CONFIG_USB_HIDDEV=y
909# 1014#
910# CONFIG_USB_EMI62 is not set 1015# CONFIG_USB_EMI62 is not set
911# CONFIG_USB_EMI26 is not set 1016# CONFIG_USB_EMI26 is not set
912# CONFIG_USB_TIGL is not set
913# CONFIG_USB_AUERSWALD is not set 1017# CONFIG_USB_AUERSWALD is not set
914# CONFIG_USB_RIO500 is not set 1018# CONFIG_USB_RIO500 is not set
915# CONFIG_USB_LEGOTOWER is not set 1019# CONFIG_USB_LEGOTOWER is not set
@@ -918,10 +1022,12 @@ CONFIG_USB_HIDDEV=y
918# CONFIG_USB_CYTHERM is not set 1022# CONFIG_USB_CYTHERM is not set
919# CONFIG_USB_PHIDGETKIT is not set 1023# CONFIG_USB_PHIDGETKIT is not set
920# CONFIG_USB_PHIDGETSERVO is not set 1024# CONFIG_USB_PHIDGETSERVO is not set
1025# CONFIG_USB_IDMOUSE is not set
1026# CONFIG_USB_LD is not set
921# CONFIG_USB_TEST is not set 1027# CONFIG_USB_TEST is not set
922 1028
923# 1029#
924# USB ATM/DSL drivers 1030# USB DSL modem support
925# 1031#
926 1032
927# 1033#
@@ -930,10 +1036,25 @@ CONFIG_USB_HIDDEV=y
930# CONFIG_USB_GADGET is not set 1036# CONFIG_USB_GADGET is not set
931 1037
932# 1038#
1039# MMC/SD Card support
1040#
1041# CONFIG_MMC is not set
1042
1043#
1044# InfiniBand support
1045#
1046# CONFIG_INFINIBAND is not set
1047
1048#
1049# SN Devices
1050#
1051
1052#
933# File systems 1053# File systems
934# 1054#
935CONFIG_EXT2_FS=y 1055CONFIG_EXT2_FS=y
936# CONFIG_EXT2_FS_XATTR is not set 1056# CONFIG_EXT2_FS_XATTR is not set
1057# CONFIG_EXT2_FS_XIP is not set
937CONFIG_EXT3_FS=y 1058CONFIG_EXT3_FS=y
938CONFIG_EXT3_FS_XATTR=y 1059CONFIG_EXT3_FS_XATTR=y
939# CONFIG_EXT3_FS_POSIX_ACL is not set 1060# CONFIG_EXT3_FS_POSIX_ACL is not set
@@ -945,17 +1066,20 @@ CONFIG_FS_MBCACHE=y
945# CONFIG_JFS_FS is not set 1066# CONFIG_JFS_FS is not set
946CONFIG_FS_POSIX_ACL=y 1067CONFIG_FS_POSIX_ACL=y
947CONFIG_XFS_FS=y 1068CONFIG_XFS_FS=y
948# CONFIG_XFS_RT is not set 1069CONFIG_XFS_EXPORT=y
949CONFIG_XFS_QUOTA=y 1070CONFIG_XFS_QUOTA=y
950CONFIG_XFS_SECURITY=y 1071CONFIG_XFS_SECURITY=y
951CONFIG_XFS_POSIX_ACL=y 1072CONFIG_XFS_POSIX_ACL=y
1073# CONFIG_XFS_RT is not set
952# CONFIG_MINIX_FS is not set 1074# CONFIG_MINIX_FS is not set
953# CONFIG_ROMFS_FS is not set 1075# CONFIG_ROMFS_FS is not set
1076CONFIG_INOTIFY=y
954# CONFIG_QUOTA is not set 1077# CONFIG_QUOTA is not set
955CONFIG_QUOTACTL=y 1078CONFIG_QUOTACTL=y
956CONFIG_DNOTIFY=y 1079CONFIG_DNOTIFY=y
957CONFIG_AUTOFS_FS=m 1080CONFIG_AUTOFS_FS=m
958CONFIG_AUTOFS4_FS=m 1081CONFIG_AUTOFS4_FS=m
1082# CONFIG_FUSE_FS is not set
959 1083
960# 1084#
961# CD-ROM/DVD Filesystems 1085# CD-ROM/DVD Filesystems
@@ -982,14 +1106,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
982CONFIG_PROC_FS=y 1106CONFIG_PROC_FS=y
983CONFIG_PROC_KCORE=y 1107CONFIG_PROC_KCORE=y
984CONFIG_SYSFS=y 1108CONFIG_SYSFS=y
985# CONFIG_DEVFS_FS is not set
986CONFIG_DEVPTS_FS_XATTR=y
987CONFIG_DEVPTS_FS_SECURITY=y
988CONFIG_TMPFS=y 1109CONFIG_TMPFS=y
989# CONFIG_TMPFS_XATTR is not set
990CONFIG_HUGETLBFS=y 1110CONFIG_HUGETLBFS=y
991CONFIG_HUGETLB_PAGE=y 1111CONFIG_HUGETLB_PAGE=y
992CONFIG_RAMFS=y 1112CONFIG_RAMFS=y
1113# CONFIG_RELAYFS_FS is not set
993 1114
994# 1115#
995# Miscellaneous filesystems 1116# Miscellaneous filesystems
@@ -1013,15 +1134,18 @@ CONFIG_RAMFS=y
1013# 1134#
1014CONFIG_NFS_FS=m 1135CONFIG_NFS_FS=m
1015CONFIG_NFS_V3=y 1136CONFIG_NFS_V3=y
1137# CONFIG_NFS_V3_ACL is not set
1016CONFIG_NFS_V4=y 1138CONFIG_NFS_V4=y
1017# CONFIG_NFS_DIRECTIO is not set 1139# CONFIG_NFS_DIRECTIO is not set
1018CONFIG_NFSD=m 1140CONFIG_NFSD=m
1019CONFIG_NFSD_V3=y 1141CONFIG_NFSD_V3=y
1142# CONFIG_NFSD_V3_ACL is not set
1020CONFIG_NFSD_V4=y 1143CONFIG_NFSD_V4=y
1021CONFIG_NFSD_TCP=y 1144CONFIG_NFSD_TCP=y
1022CONFIG_LOCKD=m 1145CONFIG_LOCKD=m
1023CONFIG_LOCKD_V4=y 1146CONFIG_LOCKD_V4=y
1024CONFIG_EXPORTFS=m 1147CONFIG_EXPORTFS=y
1148CONFIG_NFS_COMMON=y
1025CONFIG_SUNRPC=m 1149CONFIG_SUNRPC=m
1026CONFIG_SUNRPC_GSS=m 1150CONFIG_SUNRPC_GSS=m
1027CONFIG_RPCSEC_GSS_KRB5=m 1151CONFIG_RPCSEC_GSS_KRB5=m
@@ -1031,9 +1155,11 @@ CONFIG_CIFS=m
1031CONFIG_CIFS_STATS=y 1155CONFIG_CIFS_STATS=y
1032CONFIG_CIFS_XATTR=y 1156CONFIG_CIFS_XATTR=y
1033CONFIG_CIFS_POSIX=y 1157CONFIG_CIFS_POSIX=y
1158# CONFIG_CIFS_EXPERIMENTAL is not set
1034# CONFIG_NCP_FS is not set 1159# CONFIG_NCP_FS is not set
1035# CONFIG_CODA_FS is not set 1160# CONFIG_CODA_FS is not set
1036# CONFIG_AFS_FS is not set 1161# CONFIG_AFS_FS is not set
1162# CONFIG_9P_FS is not set
1037 1163
1038# 1164#
1039# Partition Types 1165# Partition Types
@@ -1103,8 +1229,12 @@ CONFIG_NLS_UTF8=m
1103# Library routines 1229# Library routines
1104# 1230#
1105# CONFIG_CRC_CCITT is not set 1231# CONFIG_CRC_CCITT is not set
1232# CONFIG_CRC16 is not set
1106CONFIG_CRC32=y 1233CONFIG_CRC32=y
1107# CONFIG_LIBCRC32C is not set 1234# CONFIG_LIBCRC32C is not set
1235CONFIG_GENERIC_HARDIRQS=y
1236CONFIG_GENERIC_IRQ_PROBE=y
1237CONFIG_GENERIC_PENDING_IRQ=y
1108 1238
1109# 1239#
1110# Profiling support 1240# Profiling support
@@ -1115,14 +1245,20 @@ CONFIG_OPROFILE=y
1115# 1245#
1116# Kernel hacking 1246# Kernel hacking
1117# 1247#
1248# CONFIG_PRINTK_TIME is not set
1118CONFIG_DEBUG_KERNEL=y 1249CONFIG_DEBUG_KERNEL=y
1119CONFIG_MAGIC_SYSRQ=y 1250CONFIG_MAGIC_SYSRQ=y
1251CONFIG_LOG_BUF_SHIFT=16
1252CONFIG_DETECT_SOFTLOCKUP=y
1120# CONFIG_SCHEDSTATS is not set 1253# CONFIG_SCHEDSTATS is not set
1121# CONFIG_DEBUG_SLAB is not set 1254# CONFIG_DEBUG_SLAB is not set
1255CONFIG_DEBUG_PREEMPT=y
1122# CONFIG_DEBUG_SPINLOCK is not set 1256# CONFIG_DEBUG_SPINLOCK is not set
1123# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1257# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1124# CONFIG_DEBUG_KOBJECT is not set 1258# CONFIG_DEBUG_KOBJECT is not set
1125# CONFIG_DEBUG_INFO is not set 1259# CONFIG_DEBUG_INFO is not set
1260# CONFIG_DEBUG_FS is not set
1261# CONFIG_KPROBES is not set
1126# CONFIG_IA64_GRANULE_16MB is not set 1262# CONFIG_IA64_GRANULE_16MB is not set
1127CONFIG_IA64_GRANULE_64MB=y 1263CONFIG_IA64_GRANULE_64MB=y
1128# CONFIG_IA64_PRINT_HAZARDS is not set 1264# CONFIG_IA64_PRINT_HAZARDS is not set
@@ -1149,6 +1285,7 @@ CONFIG_CRYPTO_MD5=y
1149# CONFIG_CRYPTO_SHA256 is not set 1285# CONFIG_CRYPTO_SHA256 is not set
1150# CONFIG_CRYPTO_SHA512 is not set 1286# CONFIG_CRYPTO_SHA512 is not set
1151# CONFIG_CRYPTO_WP512 is not set 1287# CONFIG_CRYPTO_WP512 is not set
1288# CONFIG_CRYPTO_TGR192 is not set
1152CONFIG_CRYPTO_DES=y 1289CONFIG_CRYPTO_DES=y
1153# CONFIG_CRYPTO_BLOWFISH is not set 1290# CONFIG_CRYPTO_BLOWFISH is not set
1154# CONFIG_CRYPTO_TWOFISH is not set 1291# CONFIG_CRYPTO_TWOFISH is not set
@@ -1164,3 +1301,7 @@ CONFIG_CRYPTO_DES=y
1164# CONFIG_CRYPTO_MICHAEL_MIC is not set 1301# CONFIG_CRYPTO_MICHAEL_MIC is not set
1165# CONFIG_CRYPTO_CRC32C is not set 1302# CONFIG_CRYPTO_CRC32C is not set
1166# CONFIG_CRYPTO_TEST is not set 1303# CONFIG_CRYPTO_TEST is not set
1304
1305#
1306# Hardware crypto devices
1307#
diff --git a/arch/ia64/configs/gensparse_defconfig b/arch/ia64/configs/gensparse_defconfig
new file mode 100644
index 000000000000..80f8663bc6d9
--- /dev/null
+++ b/arch/ia64/configs/gensparse_defconfig
@@ -0,0 +1,1319 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.14-rc2
4# Wed Sep 28 08:27:29 2005
5#
6
7#
8# Code maturity level options
9#
10CONFIG_EXPERIMENTAL=y
11CONFIG_CLEAN_COMPILE=y
12CONFIG_LOCK_KERNEL=y
13CONFIG_INIT_ENV_ARG_LIMIT=32
14
15#
16# General setup
17#
18CONFIG_LOCALVERSION=""
19CONFIG_LOCALVERSION_AUTO=y
20CONFIG_SWAP=y
21CONFIG_SYSVIPC=y
22CONFIG_POSIX_MQUEUE=y
23# CONFIG_BSD_PROCESS_ACCT is not set
24CONFIG_SYSCTL=y
25# CONFIG_AUDIT is not set
26CONFIG_HOTPLUG=y
27CONFIG_KOBJECT_UEVENT=y
28CONFIG_IKCONFIG=y
29CONFIG_IKCONFIG_PROC=y
30# CONFIG_CPUSETS is not set
31CONFIG_INITRAMFS_SOURCE=""
32# CONFIG_EMBEDDED is not set
33CONFIG_KALLSYMS=y
34CONFIG_KALLSYMS_ALL=y
35# CONFIG_KALLSYMS_EXTRA_PASS is not set
36CONFIG_PRINTK=y
37CONFIG_BUG=y
38CONFIG_BASE_FULL=y
39CONFIG_FUTEX=y
40CONFIG_EPOLL=y
41CONFIG_SHMEM=y
42CONFIG_CC_ALIGN_FUNCTIONS=0
43CONFIG_CC_ALIGN_LABELS=0
44CONFIG_CC_ALIGN_LOOPS=0
45CONFIG_CC_ALIGN_JUMPS=0
46# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0
48
49#
50# Loadable module support
51#
52CONFIG_MODULES=y
53CONFIG_MODULE_UNLOAD=y
54# CONFIG_MODULE_FORCE_UNLOAD is not set
55CONFIG_OBSOLETE_MODPARM=y
56CONFIG_MODVERSIONS=y
57# CONFIG_MODULE_SRCVERSION_ALL is not set
58CONFIG_KMOD=y
59CONFIG_STOP_MACHINE=y
60
61#
62# Processor type and features
63#
64CONFIG_IA64=y
65CONFIG_64BIT=y
66CONFIG_MMU=y
67CONFIG_RWSEM_XCHGADD_ALGORITHM=y
68CONFIG_GENERIC_CALIBRATE_DELAY=y
69CONFIG_TIME_INTERPOLATION=y
70CONFIG_EFI=y
71CONFIG_GENERIC_IOMAP=y
72CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
73CONFIG_IA64_GENERIC=y
74# CONFIG_IA64_DIG is not set
75# CONFIG_IA64_HP_ZX1 is not set
76# CONFIG_IA64_HP_ZX1_SWIOTLB is not set
77# CONFIG_IA64_SGI_SN2 is not set
78# CONFIG_IA64_HP_SIM is not set
79# CONFIG_ITANIUM is not set
80CONFIG_MCKINLEY=y
81# CONFIG_IA64_PAGE_SIZE_4KB is not set
82# CONFIG_IA64_PAGE_SIZE_8KB is not set
83CONFIG_IA64_PAGE_SIZE_16KB=y
84# CONFIG_IA64_PAGE_SIZE_64KB is not set
85# CONFIG_HZ_100 is not set
86CONFIG_HZ_250=y
87# CONFIG_HZ_1000 is not set
88CONFIG_HZ=250
89CONFIG_IA64_L1_CACHE_SHIFT=7
90CONFIG_IA64_CYCLONE=y
91CONFIG_IOSAPIC=y
92# CONFIG_IA64_SGI_SN_XP is not set
93CONFIG_FORCE_MAX_ZONEORDER=17
94CONFIG_SMP=y
95CONFIG_NR_CPUS=512
96CONFIG_HOTPLUG_CPU=y
97# CONFIG_SCHED_SMT is not set
98# CONFIG_PREEMPT is not set
99CONFIG_SELECT_MEMORY_MODEL=y
100# CONFIG_FLATMEM_MANUAL is not set
101# CONFIG_DISCONTIGMEM_MANUAL is not set
102CONFIG_SPARSEMEM_MANUAL=y
103CONFIG_SPARSEMEM=y
104CONFIG_NEED_MULTIPLE_NODES=y
105CONFIG_HAVE_MEMORY_PRESENT=y
106# CONFIG_SPARSEMEM_STATIC is not set
107CONFIG_SPARSEMEM_EXTREME=y
108CONFIG_ARCH_SELECT_MEMORY_MODEL=y
109CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
110CONFIG_ARCH_FLATMEM_ENABLE=y
111CONFIG_ARCH_SPARSEMEM_ENABLE=y
112CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y
113CONFIG_NUMA=y
114CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
115CONFIG_IA32_SUPPORT=y
116CONFIG_COMPAT=y
117CONFIG_IA64_MCA_RECOVERY=y
118CONFIG_PERFMON=y
119CONFIG_IA64_PALINFO=y
120
121#
122# Firmware Drivers
123#
124CONFIG_EFI_VARS=y
125CONFIG_EFI_PCDP=y
126# CONFIG_DELL_RBU is not set
127CONFIG_BINFMT_ELF=y
128CONFIG_BINFMT_MISC=m
129
130#
131# Power management and ACPI
132#
133CONFIG_PM=y
134# CONFIG_PM_DEBUG is not set
135
136#
137# ACPI (Advanced Configuration and Power Interface) Support
138#
139CONFIG_ACPI=y
140CONFIG_ACPI_BUTTON=m
141CONFIG_ACPI_FAN=m
142CONFIG_ACPI_PROCESSOR=m
143CONFIG_ACPI_HOTPLUG_CPU=y
144CONFIG_ACPI_THERMAL=m
145CONFIG_ACPI_NUMA=y
146CONFIG_ACPI_BLACKLIST_YEAR=0
147# CONFIG_ACPI_DEBUG is not set
148CONFIG_ACPI_POWER=y
149CONFIG_ACPI_SYSTEM=y
150CONFIG_ACPI_CONTAINER=m
151
152#
153# CPU Frequency scaling
154#
155# CONFIG_CPU_FREQ is not set
156
157#
158# Bus options (PCI, PCMCIA)
159#
160CONFIG_PCI=y
161CONFIG_PCI_DOMAINS=y
162# CONFIG_PCI_MSI is not set
163CONFIG_PCI_LEGACY_PROC=y
164# CONFIG_PCI_DEBUG is not set
165
166#
167# PCI Hotplug Support
168#
169CONFIG_HOTPLUG_PCI=m
170# CONFIG_HOTPLUG_PCI_FAKE is not set
171CONFIG_HOTPLUG_PCI_ACPI=m
172# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set
173# CONFIG_HOTPLUG_PCI_CPCI is not set
174# CONFIG_HOTPLUG_PCI_SHPC is not set
175# CONFIG_HOTPLUG_PCI_SGI is not set
176
177#
178# PCCARD (PCMCIA/CardBus) support
179#
180# CONFIG_PCCARD is not set
181
182#
183# Networking
184#
185CONFIG_NET=y
186
187#
188# Networking options
189#
190CONFIG_PACKET=y
191# CONFIG_PACKET_MMAP is not set
192CONFIG_UNIX=y
193# CONFIG_NET_KEY is not set
194CONFIG_INET=y
195CONFIG_IP_MULTICAST=y
196# CONFIG_IP_ADVANCED_ROUTER is not set
197CONFIG_IP_FIB_HASH=y
198# CONFIG_IP_PNP is not set
199# CONFIG_NET_IPIP is not set
200# CONFIG_NET_IPGRE is not set
201# CONFIG_IP_MROUTE is not set
202CONFIG_ARPD=y
203CONFIG_SYN_COOKIES=y
204# CONFIG_INET_AH is not set
205# CONFIG_INET_ESP is not set
206# CONFIG_INET_IPCOMP is not set
207# CONFIG_INET_TUNNEL is not set
208CONFIG_INET_DIAG=y
209CONFIG_INET_TCP_DIAG=y
210# CONFIG_TCP_CONG_ADVANCED is not set
211CONFIG_TCP_CONG_BIC=y
212# CONFIG_IPV6 is not set
213# CONFIG_NETFILTER is not set
214
215#
216# DCCP Configuration (EXPERIMENTAL)
217#
218# CONFIG_IP_DCCP is not set
219
220#
221# SCTP Configuration (EXPERIMENTAL)
222#
223# CONFIG_IP_SCTP is not set
224# CONFIG_ATM is not set
225# CONFIG_BRIDGE is not set
226# CONFIG_VLAN_8021Q is not set
227# CONFIG_DECNET is not set
228# CONFIG_LLC2 is not set
229# CONFIG_IPX is not set
230# CONFIG_ATALK is not set
231# CONFIG_X25 is not set
232# CONFIG_LAPB is not set
233# CONFIG_NET_DIVERT is not set
234# CONFIG_ECONET is not set
235# CONFIG_WAN_ROUTER is not set
236# CONFIG_NET_SCHED is not set
237# CONFIG_NET_CLS_ROUTE is not set
238
239#
240# Network testing
241#
242# CONFIG_NET_PKTGEN is not set
243# CONFIG_HAMRADIO is not set
244# CONFIG_IRDA is not set
245# CONFIG_BT is not set
246# CONFIG_IEEE80211 is not set
247
248#
249# Device Drivers
250#
251
252#
253# Generic Driver Options
254#
255CONFIG_STANDALONE=y
256CONFIG_PREVENT_FIRMWARE_BUILD=y
257CONFIG_FW_LOADER=m
258# CONFIG_DEBUG_DRIVER is not set
259
260#
261# Connector - unified userspace <-> kernelspace linker
262#
263# CONFIG_CONNECTOR is not set
264
265#
266# Memory Technology Devices (MTD)
267#
268# CONFIG_MTD is not set
269
270#
271# Parallel port support
272#
273# CONFIG_PARPORT is not set
274
275#
276# Plug and Play support
277#
278# CONFIG_PNP is not set
279
280#
281# Block devices
282#
283# CONFIG_BLK_CPQ_DA is not set
284# CONFIG_BLK_CPQ_CISS_DA is not set
285# CONFIG_BLK_DEV_DAC960 is not set
286# CONFIG_BLK_DEV_UMEM is not set
287# CONFIG_BLK_DEV_COW_COMMON is not set
288CONFIG_BLK_DEV_LOOP=m
289CONFIG_BLK_DEV_CRYPTOLOOP=m
290CONFIG_BLK_DEV_NBD=m
291# CONFIG_BLK_DEV_SX8 is not set
292# CONFIG_BLK_DEV_UB is not set
293CONFIG_BLK_DEV_RAM=y
294CONFIG_BLK_DEV_RAM_COUNT=16
295CONFIG_BLK_DEV_RAM_SIZE=4096
296CONFIG_BLK_DEV_INITRD=y
297# CONFIG_CDROM_PKTCDVD is not set
298
299#
300# IO Schedulers
301#
302CONFIG_IOSCHED_NOOP=y
303CONFIG_IOSCHED_AS=y
304CONFIG_IOSCHED_DEADLINE=y
305CONFIG_IOSCHED_CFQ=y
306# CONFIG_ATA_OVER_ETH is not set
307
308#
309# ATA/ATAPI/MFM/RLL support
310#
311CONFIG_IDE=y
312CONFIG_BLK_DEV_IDE=y
313
314#
315# Please see Documentation/ide.txt for help/info on IDE drives
316#
317# CONFIG_BLK_DEV_IDE_SATA is not set
318CONFIG_BLK_DEV_IDEDISK=y
319# CONFIG_IDEDISK_MULTI_MODE is not set
320CONFIG_BLK_DEV_IDECD=y
321# CONFIG_BLK_DEV_IDETAPE is not set
322CONFIG_BLK_DEV_IDEFLOPPY=y
323CONFIG_BLK_DEV_IDESCSI=m
324# CONFIG_IDE_TASK_IOCTL is not set
325
326#
327# IDE chipset support/bugfixes
328#
329CONFIG_IDE_GENERIC=y
330CONFIG_BLK_DEV_IDEPCI=y
331# CONFIG_IDEPCI_SHARE_IRQ is not set
332# CONFIG_BLK_DEV_OFFBOARD is not set
333CONFIG_BLK_DEV_GENERIC=y
334# CONFIG_BLK_DEV_OPTI621 is not set
335CONFIG_BLK_DEV_IDEDMA_PCI=y
336# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
337CONFIG_IDEDMA_PCI_AUTO=y
338# CONFIG_IDEDMA_ONLYDISK is not set
339# CONFIG_BLK_DEV_AEC62XX is not set
340# CONFIG_BLK_DEV_ALI15X3 is not set
341# CONFIG_BLK_DEV_AMD74XX is not set
342CONFIG_BLK_DEV_CMD64X=y
343# CONFIG_BLK_DEV_TRIFLEX is not set
344# CONFIG_BLK_DEV_CY82C693 is not set
345# CONFIG_BLK_DEV_CS5520 is not set
346# CONFIG_BLK_DEV_CS5530 is not set
347# CONFIG_BLK_DEV_HPT34X is not set
348# CONFIG_BLK_DEV_HPT366 is not set
349# CONFIG_BLK_DEV_SC1200 is not set
350CONFIG_BLK_DEV_PIIX=y
351# CONFIG_BLK_DEV_IT821X is not set
352# CONFIG_BLK_DEV_NS87415 is not set
353# CONFIG_BLK_DEV_PDC202XX_OLD is not set
354# CONFIG_BLK_DEV_PDC202XX_NEW is not set
355# CONFIG_BLK_DEV_SVWKS is not set
356CONFIG_BLK_DEV_SGIIOC4=y
357# CONFIG_BLK_DEV_SIIMAGE is not set
358# CONFIG_BLK_DEV_SLC90E66 is not set
359# CONFIG_BLK_DEV_TRM290 is not set
360# CONFIG_BLK_DEV_VIA82CXXX is not set
361# CONFIG_IDE_ARM is not set
362CONFIG_BLK_DEV_IDEDMA=y
363# CONFIG_IDEDMA_IVB is not set
364CONFIG_IDEDMA_AUTO=y
365# CONFIG_BLK_DEV_HD is not set
366
367#
368# SCSI device support
369#
370# CONFIG_RAID_ATTRS is not set
371CONFIG_SCSI=y
372CONFIG_SCSI_PROC_FS=y
373
374#
375# SCSI support type (disk, tape, CD-ROM)
376#
377CONFIG_BLK_DEV_SD=y
378CONFIG_CHR_DEV_ST=m
379# CONFIG_CHR_DEV_OSST is not set
380CONFIG_BLK_DEV_SR=m
381# CONFIG_BLK_DEV_SR_VENDOR is not set
382CONFIG_CHR_DEV_SG=m
383# CONFIG_CHR_DEV_SCH is not set
384
385#
386# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
387#
388# CONFIG_SCSI_MULTI_LUN is not set
389# CONFIG_SCSI_CONSTANTS is not set
390# CONFIG_SCSI_LOGGING is not set
391
392#
393# SCSI Transport Attributes
394#
395CONFIG_SCSI_SPI_ATTRS=y
396CONFIG_SCSI_FC_ATTRS=y
397# CONFIG_SCSI_ISCSI_ATTRS is not set
398# CONFIG_SCSI_SAS_ATTRS is not set
399
400#
401# SCSI low-level drivers
402#
403# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
404# CONFIG_SCSI_3W_9XXX is not set
405# CONFIG_SCSI_ACARD is not set
406# CONFIG_SCSI_AACRAID is not set
407# CONFIG_SCSI_AIC7XXX is not set
408# CONFIG_SCSI_AIC7XXX_OLD is not set
409# CONFIG_SCSI_AIC79XX is not set
410# CONFIG_MEGARAID_NEWGEN is not set
411# CONFIG_MEGARAID_LEGACY is not set
412CONFIG_SCSI_SATA=y
413# CONFIG_SCSI_SATA_AHCI is not set
414# CONFIG_SCSI_SATA_SVW is not set
415# CONFIG_SCSI_ATA_PIIX is not set
416# CONFIG_SCSI_SATA_MV is not set
417# CONFIG_SCSI_SATA_NV is not set
418# CONFIG_SCSI_SATA_PROMISE is not set
419# CONFIG_SCSI_SATA_QSTOR is not set
420# CONFIG_SCSI_SATA_SX4 is not set
421# CONFIG_SCSI_SATA_SIL is not set
422# CONFIG_SCSI_SATA_SIS is not set
423# CONFIG_SCSI_SATA_ULI is not set
424# CONFIG_SCSI_SATA_VIA is not set
425CONFIG_SCSI_SATA_VITESSE=y
426# CONFIG_SCSI_DMX3191D is not set
427# CONFIG_SCSI_FUTURE_DOMAIN is not set
428# CONFIG_SCSI_IPS is not set
429# CONFIG_SCSI_INITIO is not set
430# CONFIG_SCSI_INIA100 is not set
431CONFIG_SCSI_SYM53C8XX_2=y
432CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
433CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
434CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
435# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
436# CONFIG_SCSI_IPR is not set
437# CONFIG_SCSI_QLOGIC_FC is not set
438CONFIG_SCSI_QLOGIC_1280=y
439# CONFIG_SCSI_QLOGIC_1280_1040 is not set
440CONFIG_SCSI_QLA2XXX=y
441CONFIG_SCSI_QLA21XX=m
442CONFIG_SCSI_QLA22XX=m
443CONFIG_SCSI_QLA2300=m
444CONFIG_SCSI_QLA2322=m
445# CONFIG_SCSI_QLA6312 is not set
446# CONFIG_SCSI_QLA24XX is not set
447# CONFIG_SCSI_LPFC is not set
448# CONFIG_SCSI_DC395x is not set
449# CONFIG_SCSI_DC390T is not set
450# CONFIG_SCSI_DEBUG is not set
451
452#
453# Multi-device support (RAID and LVM)
454#
455CONFIG_MD=y
456CONFIG_BLK_DEV_MD=m
457CONFIG_MD_LINEAR=m
458CONFIG_MD_RAID0=m
459CONFIG_MD_RAID1=m
460# CONFIG_MD_RAID10 is not set
461CONFIG_MD_RAID5=m
462CONFIG_MD_RAID6=m
463CONFIG_MD_MULTIPATH=m
464# CONFIG_MD_FAULTY is not set
465CONFIG_BLK_DEV_DM=m
466CONFIG_DM_CRYPT=m
467CONFIG_DM_SNAPSHOT=m
468CONFIG_DM_MIRROR=m
469CONFIG_DM_ZERO=m
470CONFIG_DM_MULTIPATH=m
471# CONFIG_DM_MULTIPATH_EMC is not set
472
473#
474# Fusion MPT device support
475#
476CONFIG_FUSION=y
477CONFIG_FUSION_SPI=y
478CONFIG_FUSION_FC=m
479CONFIG_FUSION_MAX_SGE=128
480# CONFIG_FUSION_CTL is not set
481
482#
483# IEEE 1394 (FireWire) support
484#
485# CONFIG_IEEE1394 is not set
486
487#
488# I2O device support
489#
490# CONFIG_I2O is not set
491
492#
493# Network device support
494#
495CONFIG_NETDEVICES=y
496CONFIG_DUMMY=m
497# CONFIG_BONDING is not set
498# CONFIG_EQUALIZER is not set
499# CONFIG_TUN is not set
500
501#
502# ARCnet devices
503#
504# CONFIG_ARCNET is not set
505
506#
507# PHY device support
508#
509# CONFIG_PHYLIB is not set
510
511#
512# Ethernet (10 or 100Mbit)
513#
514CONFIG_NET_ETHERNET=y
515CONFIG_MII=m
516# CONFIG_HAPPYMEAL is not set
517# CONFIG_SUNGEM is not set
518# CONFIG_NET_VENDOR_3COM is not set
519
520#
521# Tulip family network device support
522#
523CONFIG_NET_TULIP=y
524# CONFIG_DE2104X is not set
525CONFIG_TULIP=m
526# CONFIG_TULIP_MWI is not set
527# CONFIG_TULIP_MMIO is not set
528# CONFIG_TULIP_NAPI is not set
529# CONFIG_DE4X5 is not set
530# CONFIG_WINBOND_840 is not set
531# CONFIG_DM9102 is not set
532# CONFIG_ULI526X is not set
533# CONFIG_HP100 is not set
534CONFIG_NET_PCI=y
535# CONFIG_PCNET32 is not set
536# CONFIG_AMD8111_ETH is not set
537# CONFIG_ADAPTEC_STARFIRE is not set
538# CONFIG_B44 is not set
539# CONFIG_FORCEDETH is not set
540# CONFIG_DGRS is not set
541CONFIG_EEPRO100=m
542CONFIG_E100=m
543# CONFIG_FEALNX is not set
544# CONFIG_NATSEMI is not set
545# CONFIG_NE2K_PCI is not set
546# CONFIG_8139CP is not set
547# CONFIG_8139TOO is not set
548# CONFIG_SIS900 is not set
549# CONFIG_EPIC100 is not set
550# CONFIG_SUNDANCE is not set
551# CONFIG_VIA_RHINE is not set
552
553#
554# Ethernet (1000 Mbit)
555#
556# CONFIG_ACENIC is not set
557# CONFIG_DL2K is not set
558CONFIG_E1000=y
559# CONFIG_E1000_NAPI is not set
560# CONFIG_NS83820 is not set
561# CONFIG_HAMACHI is not set
562# CONFIG_YELLOWFIN is not set
563# CONFIG_R8169 is not set
564# CONFIG_SIS190 is not set
565# CONFIG_SKGE is not set
566# CONFIG_SK98LIN is not set
567# CONFIG_VIA_VELOCITY is not set
568CONFIG_TIGON3=y
569# CONFIG_BNX2 is not set
570
571#
572# Ethernet (10000 Mbit)
573#
574# CONFIG_CHELSIO_T1 is not set
575# CONFIG_IXGB is not set
576# CONFIG_S2IO is not set
577
578#
579# Token Ring devices
580#
581# CONFIG_TR is not set
582
583#
584# Wireless LAN (non-hamradio)
585#
586# CONFIG_NET_RADIO is not set
587
588#
589# Wan interfaces
590#
591# CONFIG_WAN is not set
592# CONFIG_FDDI is not set
593# CONFIG_HIPPI is not set
594# CONFIG_PPP is not set
595# CONFIG_SLIP is not set
596# CONFIG_NET_FC is not set
597# CONFIG_SHAPER is not set
598CONFIG_NETCONSOLE=y
599CONFIG_NETPOLL=y
600# CONFIG_NETPOLL_RX is not set
601# CONFIG_NETPOLL_TRAP is not set
602CONFIG_NET_POLL_CONTROLLER=y
603
604#
605# ISDN subsystem
606#
607# CONFIG_ISDN is not set
608
609#
610# Telephony Support
611#
612# CONFIG_PHONE is not set
613
614#
615# Input device support
616#
617CONFIG_INPUT=y
618
619#
620# Userland interfaces
621#
622CONFIG_INPUT_MOUSEDEV=y
623CONFIG_INPUT_MOUSEDEV_PSAUX=y
624CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
625CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
626# CONFIG_INPUT_JOYDEV is not set
627# CONFIG_INPUT_TSDEV is not set
628# CONFIG_INPUT_EVDEV is not set
629# CONFIG_INPUT_EVBUG is not set
630
631#
632# Input Device Drivers
633#
634CONFIG_INPUT_KEYBOARD=y
635CONFIG_KEYBOARD_ATKBD=y
636# CONFIG_KEYBOARD_SUNKBD is not set
637# CONFIG_KEYBOARD_LKKBD is not set
638# CONFIG_KEYBOARD_XTKBD is not set
639# CONFIG_KEYBOARD_NEWTON is not set
640CONFIG_INPUT_MOUSE=y
641CONFIG_MOUSE_PS2=y
642# CONFIG_MOUSE_SERIAL is not set
643# CONFIG_MOUSE_VSXXXAA is not set
644# CONFIG_INPUT_JOYSTICK is not set
645# CONFIG_INPUT_TOUCHSCREEN is not set
646# CONFIG_INPUT_MISC is not set
647
648#
649# Hardware I/O ports
650#
651CONFIG_SERIO=y
652CONFIG_SERIO_I8042=y
653# CONFIG_SERIO_SERPORT is not set
654# CONFIG_SERIO_PCIPS2 is not set
655CONFIG_SERIO_LIBPS2=y
656# CONFIG_SERIO_RAW is not set
657CONFIG_GAMEPORT=m
658# CONFIG_GAMEPORT_NS558 is not set
659# CONFIG_GAMEPORT_L4 is not set
660# CONFIG_GAMEPORT_EMU10K1 is not set
661# CONFIG_GAMEPORT_FM801 is not set
662
663#
664# Character devices
665#
666CONFIG_VT=y
667CONFIG_VT_CONSOLE=y
668CONFIG_HW_CONSOLE=y
669CONFIG_SERIAL_NONSTANDARD=y
670# CONFIG_ROCKETPORT is not set
671# CONFIG_CYCLADES is not set
672# CONFIG_DIGIEPCA is not set
673# CONFIG_MOXA_SMARTIO is not set
674# CONFIG_ISI is not set
675# CONFIG_SYNCLINKMP is not set
676# CONFIG_N_HDLC is not set
677# CONFIG_SPECIALIX is not set
678# CONFIG_SX is not set
679# CONFIG_STALDRV is not set
680CONFIG_SGI_SNSC=y
681CONFIG_SGI_TIOCX=y
682CONFIG_SGI_MBCS=m
683
684#
685# Serial drivers
686#
687CONFIG_SERIAL_8250=y
688CONFIG_SERIAL_8250_CONSOLE=y
689CONFIG_SERIAL_8250_ACPI=y
690CONFIG_SERIAL_8250_NR_UARTS=6
691CONFIG_SERIAL_8250_EXTENDED=y
692CONFIG_SERIAL_8250_SHARE_IRQ=y
693# CONFIG_SERIAL_8250_DETECT_IRQ is not set
694# CONFIG_SERIAL_8250_RSA is not set
695
696#
697# Non-8250 serial port support
698#
699CONFIG_SERIAL_CORE=y
700CONFIG_SERIAL_CORE_CONSOLE=y
701CONFIG_SERIAL_SGI_L1_CONSOLE=y
702# CONFIG_SERIAL_JSM is not set
703CONFIG_SERIAL_SGI_IOC4=y
704CONFIG_UNIX98_PTYS=y
705CONFIG_LEGACY_PTYS=y
706CONFIG_LEGACY_PTY_COUNT=256
707
708#
709# IPMI
710#
711# CONFIG_IPMI_HANDLER is not set
712
713#
714# Watchdog Cards
715#
716# CONFIG_WATCHDOG is not set
717# CONFIG_HW_RANDOM is not set
718CONFIG_EFI_RTC=y
719# CONFIG_DTLK is not set
720# CONFIG_R3964 is not set
721# CONFIG_APPLICOM is not set
722
723#
724# Ftape, the floppy tape device driver
725#
726CONFIG_AGP=m
727CONFIG_AGP_I460=m
728CONFIG_AGP_HP_ZX1=m
729CONFIG_AGP_SGI_TIOCA=m
730CONFIG_DRM=m
731CONFIG_DRM_TDFX=m
732CONFIG_DRM_R128=m
733CONFIG_DRM_RADEON=m
734CONFIG_DRM_MGA=m
735CONFIG_DRM_SIS=m
736# CONFIG_DRM_VIA is not set
737# CONFIG_DRM_SAVAGE is not set
738CONFIG_RAW_DRIVER=m
739CONFIG_HPET=y
740# CONFIG_HPET_RTC_IRQ is not set
741CONFIG_HPET_MMAP=y
742CONFIG_MAX_RAW_DEVS=256
743# CONFIG_HANGCHECK_TIMER is not set
744CONFIG_MMTIMER=y
745
746#
747# TPM devices
748#
749# CONFIG_TCG_TPM is not set
750
751#
752# I2C support
753#
754# CONFIG_I2C is not set
755
756#
757# Dallas's 1-wire bus
758#
759# CONFIG_W1 is not set
760
761#
762# Hardware Monitoring support
763#
764CONFIG_HWMON=y
765# CONFIG_HWMON_VID is not set
766# CONFIG_HWMON_DEBUG_CHIP is not set
767
768#
769# Misc devices
770#
771
772#
773# Multimedia Capabilities Port drivers
774#
775
776#
777# Multimedia devices
778#
779# CONFIG_VIDEO_DEV is not set
780
781#
782# Digital Video Broadcasting Devices
783#
784# CONFIG_DVB is not set
785
786#
787# Graphics support
788#
789# CONFIG_FB is not set
790
791#
792# Console display driver support
793#
794CONFIG_VGA_CONSOLE=y
795CONFIG_DUMMY_CONSOLE=y
796
797#
798# Sound
799#
800CONFIG_SOUND=m
801
802#
803# Advanced Linux Sound Architecture
804#
805CONFIG_SND=m
806CONFIG_SND_TIMER=m
807CONFIG_SND_PCM=m
808CONFIG_SND_HWDEP=m
809CONFIG_SND_RAWMIDI=m
810CONFIG_SND_SEQUENCER=m
811CONFIG_SND_SEQ_DUMMY=m
812CONFIG_SND_OSSEMUL=y
813CONFIG_SND_MIXER_OSS=m
814CONFIG_SND_PCM_OSS=m
815CONFIG_SND_SEQUENCER_OSS=y
816CONFIG_SND_VERBOSE_PRINTK=y
817# CONFIG_SND_DEBUG is not set
818CONFIG_SND_GENERIC_DRIVER=y
819
820#
821# Generic devices
822#
823CONFIG_SND_MPU401_UART=m
824CONFIG_SND_OPL3_LIB=m
825CONFIG_SND_DUMMY=m
826CONFIG_SND_VIRMIDI=m
827CONFIG_SND_MTPAV=m
828CONFIG_SND_SERIAL_U16550=m
829CONFIG_SND_MPU401=m
830CONFIG_SND_AC97_CODEC=m
831CONFIG_SND_AC97_BUS=m
832
833#
834# PCI devices
835#
836# CONFIG_SND_ALI5451 is not set
837# CONFIG_SND_ATIIXP is not set
838# CONFIG_SND_ATIIXP_MODEM is not set
839# CONFIG_SND_AU8810 is not set
840# CONFIG_SND_AU8820 is not set
841# CONFIG_SND_AU8830 is not set
842# CONFIG_SND_AZT3328 is not set
843# CONFIG_SND_BT87X is not set
844CONFIG_SND_CS46XX=m
845CONFIG_SND_CS46XX_NEW_DSP=y
846CONFIG_SND_CS4281=m
847CONFIG_SND_EMU10K1=m
848# CONFIG_SND_EMU10K1X is not set
849# CONFIG_SND_CA0106 is not set
850# CONFIG_SND_KORG1212 is not set
851# CONFIG_SND_MIXART is not set
852# CONFIG_SND_NM256 is not set
853# CONFIG_SND_RME32 is not set
854# CONFIG_SND_RME96 is not set
855# CONFIG_SND_RME9652 is not set
856# CONFIG_SND_HDSP is not set
857# CONFIG_SND_HDSPM is not set
858# CONFIG_SND_TRIDENT is not set
859# CONFIG_SND_YMFPCI is not set
860# CONFIG_SND_AD1889 is not set
861# CONFIG_SND_CMIPCI is not set
862# CONFIG_SND_ENS1370 is not set
863# CONFIG_SND_ENS1371 is not set
864# CONFIG_SND_ES1938 is not set
865# CONFIG_SND_ES1968 is not set
866# CONFIG_SND_MAESTRO3 is not set
867CONFIG_SND_FM801=m
868# CONFIG_SND_FM801_TEA575X is not set
869# CONFIG_SND_ICE1712 is not set
870# CONFIG_SND_ICE1724 is not set
871# CONFIG_SND_INTEL8X0 is not set
872# CONFIG_SND_INTEL8X0M is not set
873# CONFIG_SND_SONICVIBES is not set
874# CONFIG_SND_VIA82XX is not set
875# CONFIG_SND_VIA82XX_MODEM is not set
876# CONFIG_SND_VX222 is not set
877# CONFIG_SND_HDA_INTEL is not set
878
879#
880# USB devices
881#
882# CONFIG_SND_USB_AUDIO is not set
883
884#
885# Open Sound System
886#
887# CONFIG_SOUND_PRIME is not set
888
889#
890# USB support
891#
892CONFIG_USB_ARCH_HAS_HCD=y
893CONFIG_USB_ARCH_HAS_OHCI=y
894CONFIG_USB=m
895# CONFIG_USB_DEBUG is not set
896
897#
898# Miscellaneous USB options
899#
900CONFIG_USB_DEVICEFS=y
901# CONFIG_USB_BANDWIDTH is not set
902# CONFIG_USB_DYNAMIC_MINORS is not set
903# CONFIG_USB_SUSPEND is not set
904# CONFIG_USB_OTG is not set
905
906#
907# USB Host Controller Drivers
908#
909CONFIG_USB_EHCI_HCD=m
910# CONFIG_USB_EHCI_SPLIT_ISO is not set
911# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
912# CONFIG_USB_ISP116X_HCD is not set
913CONFIG_USB_OHCI_HCD=m
914# CONFIG_USB_OHCI_BIG_ENDIAN is not set
915CONFIG_USB_OHCI_LITTLE_ENDIAN=y
916CONFIG_USB_UHCI_HCD=m
917# CONFIG_USB_SL811_HCD is not set
918
919#
920# USB Device Class drivers
921#
922# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
923# CONFIG_USB_BLUETOOTH_TTY is not set
924# CONFIG_USB_ACM is not set
925# CONFIG_USB_PRINTER is not set
926
927#
928# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
929#
930CONFIG_USB_STORAGE=m
931# CONFIG_USB_STORAGE_DEBUG is not set
932# CONFIG_USB_STORAGE_DATAFAB is not set
933# CONFIG_USB_STORAGE_FREECOM is not set
934# CONFIG_USB_STORAGE_ISD200 is not set
935# CONFIG_USB_STORAGE_DPCM is not set
936# CONFIG_USB_STORAGE_USBAT is not set
937# CONFIG_USB_STORAGE_SDDR09 is not set
938# CONFIG_USB_STORAGE_SDDR55 is not set
939# CONFIG_USB_STORAGE_JUMPSHOT is not set
940
941#
942# USB Input Devices
943#
944CONFIG_USB_HID=m
945CONFIG_USB_HIDINPUT=y
946# CONFIG_HID_FF is not set
947# CONFIG_USB_HIDDEV is not set
948
949#
950# USB HID Boot Protocol drivers
951#
952# CONFIG_USB_KBD is not set
953# CONFIG_USB_MOUSE is not set
954# CONFIG_USB_AIPTEK is not set
955# CONFIG_USB_WACOM is not set
956# CONFIG_USB_ACECAD is not set
957# CONFIG_USB_KBTAB is not set
958# CONFIG_USB_POWERMATE is not set
959# CONFIG_USB_MTOUCH is not set
960# CONFIG_USB_ITMTOUCH is not set
961# CONFIG_USB_EGALAX is not set
962# CONFIG_USB_YEALINK is not set
963# CONFIG_USB_XPAD is not set
964# CONFIG_USB_ATI_REMOTE is not set
965# CONFIG_USB_KEYSPAN_REMOTE is not set
966# CONFIG_USB_APPLETOUCH is not set
967
968#
969# USB Imaging devices
970#
971# CONFIG_USB_MDC800 is not set
972# CONFIG_USB_MICROTEK is not set
973
974#
975# USB Multimedia devices
976#
977# CONFIG_USB_DABUSB is not set
978
979#
980# Video4Linux support is needed for USB Multimedia device support
981#
982
983#
984# USB Network Adapters
985#
986# CONFIG_USB_CATC is not set
987# CONFIG_USB_KAWETH is not set
988# CONFIG_USB_PEGASUS is not set
989# CONFIG_USB_RTL8150 is not set
990# CONFIG_USB_USBNET is not set
991CONFIG_USB_MON=y
992
993#
994# USB port drivers
995#
996
997#
998# USB Serial Converter support
999#
1000# CONFIG_USB_SERIAL is not set
1001
1002#
1003# USB Miscellaneous drivers
1004#
1005# CONFIG_USB_EMI62 is not set
1006# CONFIG_USB_EMI26 is not set
1007# CONFIG_USB_AUERSWALD is not set
1008# CONFIG_USB_RIO500 is not set
1009# CONFIG_USB_LEGOTOWER is not set
1010# CONFIG_USB_LCD is not set
1011# CONFIG_USB_LED is not set
1012# CONFIG_USB_CYTHERM is not set
1013# CONFIG_USB_PHIDGETKIT is not set
1014# CONFIG_USB_PHIDGETSERVO is not set
1015# CONFIG_USB_IDMOUSE is not set
1016# CONFIG_USB_SISUSBVGA is not set
1017# CONFIG_USB_LD is not set
1018# CONFIG_USB_TEST is not set
1019
1020#
1021# USB DSL modem support
1022#
1023
1024#
1025# USB Gadget Support
1026#
1027# CONFIG_USB_GADGET is not set
1028
1029#
1030# MMC/SD Card support
1031#
1032# CONFIG_MMC is not set
1033
1034#
1035# InfiniBand support
1036#
1037CONFIG_INFINIBAND=m
1038# CONFIG_INFINIBAND_USER_MAD is not set
1039# CONFIG_INFINIBAND_USER_ACCESS is not set
1040CONFIG_INFINIBAND_MTHCA=m
1041# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
1042CONFIG_INFINIBAND_IPOIB=m
1043# CONFIG_INFINIBAND_IPOIB_DEBUG is not set
1044
1045#
1046# SN Devices
1047#
1048CONFIG_SGI_IOC4=y
1049
1050#
1051# File systems
1052#
1053CONFIG_EXT2_FS=y
1054CONFIG_EXT2_FS_XATTR=y
1055CONFIG_EXT2_FS_POSIX_ACL=y
1056CONFIG_EXT2_FS_SECURITY=y
1057# CONFIG_EXT2_FS_XIP is not set
1058CONFIG_EXT3_FS=y
1059CONFIG_EXT3_FS_XATTR=y
1060CONFIG_EXT3_FS_POSIX_ACL=y
1061CONFIG_EXT3_FS_SECURITY=y
1062CONFIG_JBD=y
1063# CONFIG_JBD_DEBUG is not set
1064CONFIG_FS_MBCACHE=y
1065CONFIG_REISERFS_FS=y
1066# CONFIG_REISERFS_CHECK is not set
1067# CONFIG_REISERFS_PROC_INFO is not set
1068CONFIG_REISERFS_FS_XATTR=y
1069CONFIG_REISERFS_FS_POSIX_ACL=y
1070CONFIG_REISERFS_FS_SECURITY=y
1071# CONFIG_JFS_FS is not set
1072CONFIG_FS_POSIX_ACL=y
1073CONFIG_XFS_FS=y
1074CONFIG_XFS_EXPORT=y
1075# CONFIG_XFS_QUOTA is not set
1076# CONFIG_XFS_SECURITY is not set
1077# CONFIG_XFS_POSIX_ACL is not set
1078# CONFIG_XFS_RT is not set
1079# CONFIG_MINIX_FS is not set
1080# CONFIG_ROMFS_FS is not set
1081CONFIG_INOTIFY=y
1082# CONFIG_QUOTA is not set
1083CONFIG_DNOTIFY=y
1084CONFIG_AUTOFS_FS=y
1085CONFIG_AUTOFS4_FS=y
1086# CONFIG_FUSE_FS is not set
1087
1088#
1089# CD-ROM/DVD Filesystems
1090#
1091CONFIG_ISO9660_FS=m
1092CONFIG_JOLIET=y
1093# CONFIG_ZISOFS is not set
1094CONFIG_UDF_FS=m
1095CONFIG_UDF_NLS=y
1096
1097#
1098# DOS/FAT/NT Filesystems
1099#
1100CONFIG_FAT_FS=y
1101# CONFIG_MSDOS_FS is not set
1102CONFIG_VFAT_FS=y
1103CONFIG_FAT_DEFAULT_CODEPAGE=437
1104CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1105CONFIG_NTFS_FS=m
1106# CONFIG_NTFS_DEBUG is not set
1107# CONFIG_NTFS_RW is not set
1108
1109#
1110# Pseudo filesystems
1111#
1112CONFIG_PROC_FS=y
1113CONFIG_PROC_KCORE=y
1114CONFIG_SYSFS=y
1115CONFIG_TMPFS=y
1116CONFIG_HUGETLBFS=y
1117CONFIG_HUGETLB_PAGE=y
1118CONFIG_RAMFS=y
1119# CONFIG_RELAYFS_FS is not set
1120
1121#
1122# Miscellaneous filesystems
1123#
1124# CONFIG_ADFS_FS is not set
1125# CONFIG_AFFS_FS is not set
1126# CONFIG_HFS_FS is not set
1127# CONFIG_HFSPLUS_FS is not set
1128# CONFIG_BEFS_FS is not set
1129# CONFIG_BFS_FS is not set
1130# CONFIG_EFS_FS is not set
1131# CONFIG_CRAMFS is not set
1132# CONFIG_VXFS_FS is not set
1133# CONFIG_HPFS_FS is not set
1134# CONFIG_QNX4FS_FS is not set
1135# CONFIG_SYSV_FS is not set
1136# CONFIG_UFS_FS is not set
1137
1138#
1139# Network File Systems
1140#
1141CONFIG_NFS_FS=m
1142CONFIG_NFS_V3=y
1143# CONFIG_NFS_V3_ACL is not set
1144CONFIG_NFS_V4=y
1145CONFIG_NFS_DIRECTIO=y
1146CONFIG_NFSD=m
1147CONFIG_NFSD_V3=y
1148# CONFIG_NFSD_V3_ACL is not set
1149CONFIG_NFSD_V4=y
1150CONFIG_NFSD_TCP=y
1151CONFIG_LOCKD=m
1152CONFIG_LOCKD_V4=y
1153CONFIG_EXPORTFS=y
1154CONFIG_NFS_COMMON=y
1155CONFIG_SUNRPC=m
1156CONFIG_SUNRPC_GSS=m
1157CONFIG_RPCSEC_GSS_KRB5=m
1158# CONFIG_RPCSEC_GSS_SPKM3 is not set
1159CONFIG_SMB_FS=m
1160CONFIG_SMB_NLS_DEFAULT=y
1161CONFIG_SMB_NLS_REMOTE="cp437"
1162CONFIG_CIFS=m
1163# CONFIG_CIFS_STATS is not set
1164# CONFIG_CIFS_XATTR is not set
1165# CONFIG_CIFS_EXPERIMENTAL is not set
1166# CONFIG_NCP_FS is not set
1167# CONFIG_CODA_FS is not set
1168# CONFIG_AFS_FS is not set
1169# CONFIG_9P_FS is not set
1170
1171#
1172# Partition Types
1173#
1174CONFIG_PARTITION_ADVANCED=y
1175# CONFIG_ACORN_PARTITION is not set
1176# CONFIG_OSF_PARTITION is not set
1177# CONFIG_AMIGA_PARTITION is not set
1178# CONFIG_ATARI_PARTITION is not set
1179# CONFIG_MAC_PARTITION is not set
1180CONFIG_MSDOS_PARTITION=y
1181# CONFIG_BSD_DISKLABEL is not set
1182# CONFIG_MINIX_SUBPARTITION is not set
1183# CONFIG_SOLARIS_X86_PARTITION is not set
1184# CONFIG_UNIXWARE_DISKLABEL is not set
1185# CONFIG_LDM_PARTITION is not set
1186CONFIG_SGI_PARTITION=y
1187# CONFIG_ULTRIX_PARTITION is not set
1188# CONFIG_SUN_PARTITION is not set
1189CONFIG_EFI_PARTITION=y
1190
1191#
1192# Native Language Support
1193#
1194CONFIG_NLS=y
1195CONFIG_NLS_DEFAULT="iso8859-1"
1196CONFIG_NLS_CODEPAGE_437=y
1197CONFIG_NLS_CODEPAGE_737=m
1198CONFIG_NLS_CODEPAGE_775=m
1199CONFIG_NLS_CODEPAGE_850=m
1200CONFIG_NLS_CODEPAGE_852=m
1201CONFIG_NLS_CODEPAGE_855=m
1202CONFIG_NLS_CODEPAGE_857=m
1203CONFIG_NLS_CODEPAGE_860=m
1204CONFIG_NLS_CODEPAGE_861=m
1205CONFIG_NLS_CODEPAGE_862=m
1206CONFIG_NLS_CODEPAGE_863=m
1207CONFIG_NLS_CODEPAGE_864=m
1208CONFIG_NLS_CODEPAGE_865=m
1209CONFIG_NLS_CODEPAGE_866=m
1210CONFIG_NLS_CODEPAGE_869=m
1211CONFIG_NLS_CODEPAGE_936=m
1212CONFIG_NLS_CODEPAGE_950=m
1213CONFIG_NLS_CODEPAGE_932=m
1214CONFIG_NLS_CODEPAGE_949=m
1215CONFIG_NLS_CODEPAGE_874=m
1216CONFIG_NLS_ISO8859_8=m
1217CONFIG_NLS_CODEPAGE_1250=m
1218CONFIG_NLS_CODEPAGE_1251=m
1219# CONFIG_NLS_ASCII is not set
1220CONFIG_NLS_ISO8859_1=y
1221CONFIG_NLS_ISO8859_2=m
1222CONFIG_NLS_ISO8859_3=m
1223CONFIG_NLS_ISO8859_4=m
1224CONFIG_NLS_ISO8859_5=m
1225CONFIG_NLS_ISO8859_6=m
1226CONFIG_NLS_ISO8859_7=m
1227CONFIG_NLS_ISO8859_9=m
1228CONFIG_NLS_ISO8859_13=m
1229CONFIG_NLS_ISO8859_14=m
1230CONFIG_NLS_ISO8859_15=m
1231CONFIG_NLS_KOI8_R=m
1232CONFIG_NLS_KOI8_U=m
1233CONFIG_NLS_UTF8=m
1234
1235#
1236# Library routines
1237#
1238# CONFIG_CRC_CCITT is not set
1239# CONFIG_CRC16 is not set
1240CONFIG_CRC32=y
1241# CONFIG_LIBCRC32C is not set
1242CONFIG_GENERIC_HARDIRQS=y
1243CONFIG_GENERIC_IRQ_PROBE=y
1244CONFIG_GENERIC_PENDING_IRQ=y
1245
1246#
1247# HP Simulator drivers
1248#
1249# CONFIG_HP_SIMETH is not set
1250# CONFIG_HP_SIMSERIAL is not set
1251# CONFIG_HP_SIMSCSI is not set
1252
1253#
1254# Profiling support
1255#
1256# CONFIG_PROFILING is not set
1257
1258#
1259# Kernel hacking
1260#
1261# CONFIG_PRINTK_TIME is not set
1262CONFIG_DEBUG_KERNEL=y
1263CONFIG_MAGIC_SYSRQ=y
1264CONFIG_LOG_BUF_SHIFT=20
1265CONFIG_DETECT_SOFTLOCKUP=y
1266# CONFIG_SCHEDSTATS is not set
1267# CONFIG_DEBUG_SLAB is not set
1268# CONFIG_DEBUG_SPINLOCK is not set
1269# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1270# CONFIG_DEBUG_KOBJECT is not set
1271# CONFIG_DEBUG_INFO is not set
1272# CONFIG_DEBUG_FS is not set
1273# CONFIG_KPROBES is not set
1274CONFIG_IA64_GRANULE_16MB=y
1275# CONFIG_IA64_GRANULE_64MB is not set
1276# CONFIG_IA64_PRINT_HAZARDS is not set
1277# CONFIG_DISABLE_VHPT is not set
1278# CONFIG_IA64_DEBUG_CMPXCHG is not set
1279# CONFIG_IA64_DEBUG_IRQ is not set
1280CONFIG_SYSVIPC_COMPAT=y
1281
1282#
1283# Security options
1284#
1285# CONFIG_KEYS is not set
1286# CONFIG_SECURITY is not set
1287
1288#
1289# Cryptographic options
1290#
1291CONFIG_CRYPTO=y
1292# CONFIG_CRYPTO_HMAC is not set
1293# CONFIG_CRYPTO_NULL is not set
1294# CONFIG_CRYPTO_MD4 is not set
1295CONFIG_CRYPTO_MD5=y
1296# CONFIG_CRYPTO_SHA1 is not set
1297# CONFIG_CRYPTO_SHA256 is not set
1298# CONFIG_CRYPTO_SHA512 is not set
1299# CONFIG_CRYPTO_WP512 is not set
1300# CONFIG_CRYPTO_TGR192 is not set
1301CONFIG_CRYPTO_DES=m
1302# CONFIG_CRYPTO_BLOWFISH is not set
1303# CONFIG_CRYPTO_TWOFISH is not set
1304# CONFIG_CRYPTO_SERPENT is not set
1305# CONFIG_CRYPTO_AES is not set
1306# CONFIG_CRYPTO_CAST5 is not set
1307# CONFIG_CRYPTO_CAST6 is not set
1308# CONFIG_CRYPTO_TEA is not set
1309# CONFIG_CRYPTO_ARC4 is not set
1310# CONFIG_CRYPTO_KHAZAD is not set
1311# CONFIG_CRYPTO_ANUBIS is not set
1312# CONFIG_CRYPTO_DEFLATE is not set
1313# CONFIG_CRYPTO_MICHAEL_MIC is not set
1314# CONFIG_CRYPTO_CRC32C is not set
1315# CONFIG_CRYPTO_TEST is not set
1316
1317#
1318# Hardware crypto devices
1319#
diff --git a/arch/ia64/configs/tiger_defconfig b/arch/ia64/configs/tiger_defconfig
index d452e18ac494..9bc8bcafc905 100644
--- a/arch/ia64/configs/tiger_defconfig
+++ b/arch/ia64/configs/tiger_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.13-rc6-tiger-smp 3# Linux kernel version: 2.6.14-rc1
4# Wed Aug 17 10:19:51 2005 4# Wed Sep 14 15:17:57 2005
5# 5#
6 6
7# 7#
@@ -16,6 +16,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
16# General setup 16# General setup
17# 17#
18CONFIG_LOCALVERSION="" 18CONFIG_LOCALVERSION=""
19CONFIG_LOCALVERSION_AUTO=y
19CONFIG_SWAP=y 20CONFIG_SWAP=y
20CONFIG_SYSVIPC=y 21CONFIG_SYSVIPC=y
21CONFIG_POSIX_MQUEUE=y 22CONFIG_POSIX_MQUEUE=y
@@ -27,6 +28,7 @@ CONFIG_KOBJECT_UEVENT=y
27CONFIG_IKCONFIG=y 28CONFIG_IKCONFIG=y
28CONFIG_IKCONFIG_PROC=y 29CONFIG_IKCONFIG_PROC=y
29# CONFIG_CPUSETS is not set 30# CONFIG_CPUSETS is not set
31CONFIG_INITRAMFS_SOURCE=""
30# CONFIG_EMBEDDED is not set 32# CONFIG_EMBEDDED is not set
31CONFIG_KALLSYMS=y 33CONFIG_KALLSYMS=y
32CONFIG_KALLSYMS_ALL=y 34CONFIG_KALLSYMS_ALL=y
@@ -103,6 +105,7 @@ CONFIG_FLATMEM_MANUAL=y
103# CONFIG_SPARSEMEM_MANUAL is not set 105# CONFIG_SPARSEMEM_MANUAL is not set
104CONFIG_FLATMEM=y 106CONFIG_FLATMEM=y
105CONFIG_FLAT_NODE_MEM_MAP=y 107CONFIG_FLAT_NODE_MEM_MAP=y
108# CONFIG_SPARSEMEM_STATIC is not set
106CONFIG_HAVE_DEC_LOCK=y 109CONFIG_HAVE_DEC_LOCK=y
107CONFIG_IA32_SUPPORT=y 110CONFIG_IA32_SUPPORT=y
108CONFIG_COMPAT=y 111CONFIG_COMPAT=y
@@ -115,6 +118,7 @@ CONFIG_IA64_PALINFO=y
115# 118#
116CONFIG_EFI_VARS=y 119CONFIG_EFI_VARS=y
117CONFIG_EFI_PCDP=y 120CONFIG_EFI_PCDP=y
121# CONFIG_DELL_RBU is not set
118CONFIG_BINFMT_ELF=y 122CONFIG_BINFMT_ELF=y
119CONFIG_BINFMT_MISC=m 123CONFIG_BINFMT_MISC=m
120 124
@@ -122,20 +126,27 @@ CONFIG_BINFMT_MISC=m
122# Power management and ACPI 126# Power management and ACPI
123# 127#
124CONFIG_PM=y 128CONFIG_PM=y
125CONFIG_ACPI=y 129# CONFIG_PM_DEBUG is not set
126 130
127# 131#
128# ACPI (Advanced Configuration and Power Interface) Support 132# ACPI (Advanced Configuration and Power Interface) Support
129# 133#
134CONFIG_ACPI=y
130CONFIG_ACPI_BUTTON=m 135CONFIG_ACPI_BUTTON=m
131CONFIG_ACPI_FAN=m 136CONFIG_ACPI_FAN=m
132CONFIG_ACPI_PROCESSOR=m 137CONFIG_ACPI_PROCESSOR=m
133# CONFIG_ACPI_HOTPLUG_CPU is not set 138CONFIG_ACPI_HOTPLUG_CPU=y
134CONFIG_ACPI_THERMAL=m 139CONFIG_ACPI_THERMAL=m
140CONFIG_ACPI_BLACKLIST_YEAR=0
135# CONFIG_ACPI_DEBUG is not set 141# CONFIG_ACPI_DEBUG is not set
136CONFIG_ACPI_POWER=y 142CONFIG_ACPI_POWER=y
137CONFIG_ACPI_SYSTEM=y 143CONFIG_ACPI_SYSTEM=y
138# CONFIG_ACPI_CONTAINER is not set 144CONFIG_ACPI_CONTAINER=m
145
146#
147# CPU Frequency scaling
148#
149# CONFIG_CPU_FREQ is not set
139 150
140# 151#
141# Bus options (PCI, PCMCIA) 152# Bus options (PCI, PCMCIA)
@@ -144,7 +155,6 @@ CONFIG_PCI=y
144CONFIG_PCI_DOMAINS=y 155CONFIG_PCI_DOMAINS=y
145# CONFIG_PCI_MSI is not set 156# CONFIG_PCI_MSI is not set
146CONFIG_PCI_LEGACY_PROC=y 157CONFIG_PCI_LEGACY_PROC=y
147CONFIG_PCI_NAMES=y
148# CONFIG_PCI_DEBUG is not set 158# CONFIG_PCI_DEBUG is not set
149 159
150# 160#
@@ -188,14 +198,19 @@ CONFIG_SYN_COOKIES=y
188# CONFIG_INET_ESP is not set 198# CONFIG_INET_ESP is not set
189# CONFIG_INET_IPCOMP is not set 199# CONFIG_INET_IPCOMP is not set
190# CONFIG_INET_TUNNEL is not set 200# CONFIG_INET_TUNNEL is not set
191CONFIG_IP_TCPDIAG=y 201CONFIG_INET_DIAG=y
192# CONFIG_IP_TCPDIAG_IPV6 is not set 202CONFIG_INET_TCP_DIAG=y
193# CONFIG_TCP_CONG_ADVANCED is not set 203# CONFIG_TCP_CONG_ADVANCED is not set
194CONFIG_TCP_CONG_BIC=y 204CONFIG_TCP_CONG_BIC=y
195# CONFIG_IPV6 is not set 205# CONFIG_IPV6 is not set
196# CONFIG_NETFILTER is not set 206# CONFIG_NETFILTER is not set
197 207
198# 208#
209# DCCP Configuration (EXPERIMENTAL)
210#
211# CONFIG_IP_DCCP is not set
212
213#
199# SCTP Configuration (EXPERIMENTAL) 214# SCTP Configuration (EXPERIMENTAL)
200# 215#
201# CONFIG_IP_SCTP is not set 216# CONFIG_IP_SCTP is not set
@@ -218,9 +233,11 @@ CONFIG_TCP_CONG_BIC=y
218# Network testing 233# Network testing
219# 234#
220# CONFIG_NET_PKTGEN is not set 235# CONFIG_NET_PKTGEN is not set
236# CONFIG_NETFILTER_NETLINK is not set
221# CONFIG_HAMRADIO is not set 237# CONFIG_HAMRADIO is not set
222# CONFIG_IRDA is not set 238# CONFIG_IRDA is not set
223# CONFIG_BT is not set 239# CONFIG_BT is not set
240# CONFIG_IEEE80211 is not set
224 241
225# 242#
226# Device Drivers 243# Device Drivers
@@ -235,6 +252,11 @@ CONFIG_FW_LOADER=m
235# CONFIG_DEBUG_DRIVER is not set 252# CONFIG_DEBUG_DRIVER is not set
236 253
237# 254#
255# Connector - unified userspace <-> kernelspace linker
256#
257# CONFIG_CONNECTOR is not set
258
259#
238# Memory Technology Devices (MTD) 260# Memory Technology Devices (MTD)
239# 261#
240# CONFIG_MTD is not set 262# CONFIG_MTD is not set
@@ -247,7 +269,13 @@ CONFIG_FW_LOADER=m
247# 269#
248# Plug and Play support 270# Plug and Play support
249# 271#
250# CONFIG_PNP is not set 272CONFIG_PNP=y
273# CONFIG_PNP_DEBUG is not set
274
275#
276# Protocols
277#
278CONFIG_PNPACPI=y
251 279
252# 280#
253# Block devices 281# Block devices
@@ -266,7 +294,6 @@ CONFIG_BLK_DEV_RAM=y
266CONFIG_BLK_DEV_RAM_COUNT=16 294CONFIG_BLK_DEV_RAM_COUNT=16
267CONFIG_BLK_DEV_RAM_SIZE=4096 295CONFIG_BLK_DEV_RAM_SIZE=4096
268CONFIG_BLK_DEV_INITRD=y 296CONFIG_BLK_DEV_INITRD=y
269CONFIG_INITRAMFS_SOURCE=""
270# CONFIG_CDROM_PKTCDVD is not set 297# CONFIG_CDROM_PKTCDVD is not set
271 298
272# 299#
@@ -299,7 +326,8 @@ CONFIG_BLK_DEV_IDESCSI=m
299# 326#
300# IDE chipset support/bugfixes 327# IDE chipset support/bugfixes
301# 328#
302CONFIG_IDE_GENERIC=y 329# CONFIG_IDE_GENERIC is not set
330# CONFIG_BLK_DEV_IDEPNP is not set
303CONFIG_BLK_DEV_IDEPCI=y 331CONFIG_BLK_DEV_IDEPCI=y
304# CONFIG_IDEPCI_SHARE_IRQ is not set 332# CONFIG_IDEPCI_SHARE_IRQ is not set
305# CONFIG_BLK_DEV_OFFBOARD is not set 333# CONFIG_BLK_DEV_OFFBOARD is not set
@@ -339,6 +367,7 @@ CONFIG_IDEDMA_AUTO=y
339# 367#
340# SCSI device support 368# SCSI device support
341# 369#
370# CONFIG_RAID_ATTRS is not set
342CONFIG_SCSI=y 371CONFIG_SCSI=y
343CONFIG_SCSI_PROC_FS=y 372CONFIG_SCSI_PROC_FS=y
344 373
@@ -366,6 +395,7 @@ CONFIG_CHR_DEV_SG=m
366CONFIG_SCSI_SPI_ATTRS=y 395CONFIG_SCSI_SPI_ATTRS=y
367CONFIG_SCSI_FC_ATTRS=y 396CONFIG_SCSI_FC_ATTRS=y
368# CONFIG_SCSI_ISCSI_ATTRS is not set 397# CONFIG_SCSI_ISCSI_ATTRS is not set
398# CONFIG_SCSI_SAS_ATTRS is not set
369 399
370# 400#
371# SCSI low-level drivers 401# SCSI low-level drivers
@@ -454,6 +484,7 @@ CONFIG_DUMMY=m
454# CONFIG_BONDING is not set 484# CONFIG_BONDING is not set
455# CONFIG_EQUALIZER is not set 485# CONFIG_EQUALIZER is not set
456# CONFIG_TUN is not set 486# CONFIG_TUN is not set
487# CONFIG_NET_SB1000 is not set
457 488
458# 489#
459# ARCnet devices 490# ARCnet devices
@@ -461,6 +492,11 @@ CONFIG_DUMMY=m
461# CONFIG_ARCNET is not set 492# CONFIG_ARCNET is not set
462 493
463# 494#
495# PHY device support
496#
497# CONFIG_PHYLIB is not set
498
499#
464# Ethernet (10 or 100Mbit) 500# Ethernet (10 or 100Mbit)
465# 501#
466CONFIG_NET_ETHERNET=y 502CONFIG_NET_ETHERNET=y
@@ -481,6 +517,7 @@ CONFIG_TULIP=m
481# CONFIG_DE4X5 is not set 517# CONFIG_DE4X5 is not set
482# CONFIG_WINBOND_840 is not set 518# CONFIG_WINBOND_840 is not set
483# CONFIG_DM9102 is not set 519# CONFIG_DM9102 is not set
520# CONFIG_ULI526X is not set
484# CONFIG_HP100 is not set 521# CONFIG_HP100 is not set
485CONFIG_NET_PCI=y 522CONFIG_NET_PCI=y
486# CONFIG_PCNET32 is not set 523# CONFIG_PCNET32 is not set
@@ -512,6 +549,7 @@ CONFIG_E1000=y
512# CONFIG_HAMACHI is not set 549# CONFIG_HAMACHI is not set
513# CONFIG_YELLOWFIN is not set 550# CONFIG_YELLOWFIN is not set
514# CONFIG_R8169 is not set 551# CONFIG_R8169 is not set
552# CONFIG_SIS190 is not set
515# CONFIG_SKGE is not set 553# CONFIG_SKGE is not set
516# CONFIG_SK98LIN is not set 554# CONFIG_SK98LIN is not set
517# CONFIG_VIA_VELOCITY is not set 555# CONFIG_VIA_VELOCITY is not set
@@ -521,6 +559,7 @@ CONFIG_TIGON3=y
521# 559#
522# Ethernet (10000 Mbit) 560# Ethernet (10000 Mbit)
523# 561#
562# CONFIG_CHELSIO_T1 is not set
524# CONFIG_IXGB is not set 563# CONFIG_IXGB is not set
525# CONFIG_S2IO is not set 564# CONFIG_S2IO is not set
526 565
@@ -618,6 +657,7 @@ CONFIG_HW_CONSOLE=y
618CONFIG_SERIAL_NONSTANDARD=y 657CONFIG_SERIAL_NONSTANDARD=y
619# CONFIG_ROCKETPORT is not set 658# CONFIG_ROCKETPORT is not set
620# CONFIG_CYCLADES is not set 659# CONFIG_CYCLADES is not set
660# CONFIG_DIGIEPCA is not set
621# CONFIG_MOXA_SMARTIO is not set 661# CONFIG_MOXA_SMARTIO is not set
622# CONFIG_ISI is not set 662# CONFIG_ISI is not set
623# CONFIG_SYNCLINKMP is not set 663# CONFIG_SYNCLINKMP is not set
@@ -675,6 +715,7 @@ CONFIG_DRM_RADEON=m
675CONFIG_DRM_MGA=m 715CONFIG_DRM_MGA=m
676CONFIG_DRM_SIS=m 716CONFIG_DRM_SIS=m
677# CONFIG_DRM_VIA is not set 717# CONFIG_DRM_VIA is not set
718# CONFIG_DRM_SAVAGE is not set
678CONFIG_RAW_DRIVER=m 719CONFIG_RAW_DRIVER=m
679CONFIG_HPET=y 720CONFIG_HPET=y
680# CONFIG_HPET_RTC_IRQ is not set 721# CONFIG_HPET_RTC_IRQ is not set
@@ -691,7 +732,6 @@ CONFIG_MAX_RAW_DEVS=256
691# I2C support 732# I2C support
692# 733#
693# CONFIG_I2C is not set 734# CONFIG_I2C is not set
694# CONFIG_I2C_SENSOR is not set
695 735
696# 736#
697# Dallas's 1-wire bus 737# Dallas's 1-wire bus
@@ -702,6 +742,7 @@ CONFIG_MAX_RAW_DEVS=256
702# Hardware Monitoring support 742# Hardware Monitoring support
703# 743#
704CONFIG_HWMON=y 744CONFIG_HWMON=y
745# CONFIG_HWMON_VID is not set
705# CONFIG_HWMON_DEBUG_CHIP is not set 746# CONFIG_HWMON_DEBUG_CHIP is not set
706 747
707# 748#
@@ -709,6 +750,10 @@ CONFIG_HWMON=y
709# 750#
710 751
711# 752#
753# Multimedia Capabilities Port drivers
754#
755
756#
712# Multimedia devices 757# Multimedia devices
713# 758#
714# CONFIG_VIDEO_DEV is not set 759# CONFIG_VIDEO_DEV is not set
@@ -800,9 +845,11 @@ CONFIG_USB_HIDINPUT=y
800# CONFIG_USB_MTOUCH is not set 845# CONFIG_USB_MTOUCH is not set
801# CONFIG_USB_ITMTOUCH is not set 846# CONFIG_USB_ITMTOUCH is not set
802# CONFIG_USB_EGALAX is not set 847# CONFIG_USB_EGALAX is not set
848# CONFIG_USB_YEALINK is not set
803# CONFIG_USB_XPAD is not set 849# CONFIG_USB_XPAD is not set
804# CONFIG_USB_ATI_REMOTE is not set 850# CONFIG_USB_ATI_REMOTE is not set
805# CONFIG_USB_KEYSPAN_REMOTE is not set 851# CONFIG_USB_KEYSPAN_REMOTE is not set
852# CONFIG_USB_APPLETOUCH is not set
806 853
807# 854#
808# USB Imaging devices 855# USB Imaging devices
@@ -902,16 +949,12 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
902CONFIG_REISERFS_FS_SECURITY=y 949CONFIG_REISERFS_FS_SECURITY=y
903# CONFIG_JFS_FS is not set 950# CONFIG_JFS_FS is not set
904CONFIG_FS_POSIX_ACL=y 951CONFIG_FS_POSIX_ACL=y
905
906#
907# XFS support
908#
909CONFIG_XFS_FS=y 952CONFIG_XFS_FS=y
910CONFIG_XFS_EXPORT=y 953CONFIG_XFS_EXPORT=y
911# CONFIG_XFS_RT is not set
912# CONFIG_XFS_QUOTA is not set 954# CONFIG_XFS_QUOTA is not set
913# CONFIG_XFS_SECURITY is not set 955# CONFIG_XFS_SECURITY is not set
914# CONFIG_XFS_POSIX_ACL is not set 956# CONFIG_XFS_POSIX_ACL is not set
957# CONFIG_XFS_RT is not set
915# CONFIG_MINIX_FS is not set 958# CONFIG_MINIX_FS is not set
916# CONFIG_ROMFS_FS is not set 959# CONFIG_ROMFS_FS is not set
917CONFIG_INOTIFY=y 960CONFIG_INOTIFY=y
@@ -919,6 +962,7 @@ CONFIG_INOTIFY=y
919CONFIG_DNOTIFY=y 962CONFIG_DNOTIFY=y
920CONFIG_AUTOFS_FS=y 963CONFIG_AUTOFS_FS=y
921CONFIG_AUTOFS4_FS=y 964CONFIG_AUTOFS4_FS=y
965# CONFIG_FUSE_FS is not set
922 966
923# 967#
924# CD-ROM/DVD Filesystems 968# CD-ROM/DVD Filesystems
@@ -947,13 +991,11 @@ CONFIG_NTFS_FS=m
947CONFIG_PROC_FS=y 991CONFIG_PROC_FS=y
948CONFIG_PROC_KCORE=y 992CONFIG_PROC_KCORE=y
949CONFIG_SYSFS=y 993CONFIG_SYSFS=y
950# CONFIG_DEVPTS_FS_XATTR is not set
951CONFIG_TMPFS=y 994CONFIG_TMPFS=y
952CONFIG_TMPFS_XATTR=y
953CONFIG_TMPFS_SECURITY=y
954CONFIG_HUGETLBFS=y 995CONFIG_HUGETLBFS=y
955CONFIG_HUGETLB_PAGE=y 996CONFIG_HUGETLB_PAGE=y
956CONFIG_RAMFS=y 997CONFIG_RAMFS=y
998# CONFIG_RELAYFS_FS is not set
957 999
958# 1000#
959# Miscellaneous filesystems 1001# Miscellaneous filesystems
@@ -1003,6 +1045,7 @@ CONFIG_CIFS=m
1003# CONFIG_NCP_FS is not set 1045# CONFIG_NCP_FS is not set
1004# CONFIG_CODA_FS is not set 1046# CONFIG_CODA_FS is not set
1005# CONFIG_AFS_FS is not set 1047# CONFIG_AFS_FS is not set
1048# CONFIG_9P_FS is not set
1006 1049
1007# 1050#
1008# Partition Types 1051# Partition Types
@@ -1072,10 +1115,12 @@ CONFIG_NLS_UTF8=m
1072# Library routines 1115# Library routines
1073# 1116#
1074# CONFIG_CRC_CCITT is not set 1117# CONFIG_CRC_CCITT is not set
1118# CONFIG_CRC16 is not set
1075CONFIG_CRC32=y 1119CONFIG_CRC32=y
1076# CONFIG_LIBCRC32C is not set 1120# CONFIG_LIBCRC32C is not set
1077CONFIG_GENERIC_HARDIRQS=y 1121CONFIG_GENERIC_HARDIRQS=y
1078CONFIG_GENERIC_IRQ_PROBE=y 1122CONFIG_GENERIC_IRQ_PROBE=y
1123CONFIG_GENERIC_PENDING_IRQ=y
1079 1124
1080# 1125#
1081# Profiling support 1126# Profiling support
@@ -1089,6 +1134,7 @@ CONFIG_GENERIC_IRQ_PROBE=y
1089CONFIG_DEBUG_KERNEL=y 1134CONFIG_DEBUG_KERNEL=y
1090CONFIG_MAGIC_SYSRQ=y 1135CONFIG_MAGIC_SYSRQ=y
1091CONFIG_LOG_BUF_SHIFT=20 1136CONFIG_LOG_BUF_SHIFT=20
1137CONFIG_DETECT_SOFTLOCKUP=y
1092# CONFIG_SCHEDSTATS is not set 1138# CONFIG_SCHEDSTATS is not set
1093# CONFIG_DEBUG_SLAB is not set 1139# CONFIG_DEBUG_SLAB is not set
1094# CONFIG_DEBUG_SPINLOCK is not set 1140# CONFIG_DEBUG_SPINLOCK is not set
diff --git a/arch/ia64/configs/zx1_defconfig b/arch/ia64/configs/zx1_defconfig
index 80b0e9eb7fb3..0856ca67dd50 100644
--- a/arch/ia64/configs/zx1_defconfig
+++ b/arch/ia64/configs/zx1_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.13-rc6 3# Linux kernel version: 2.6.14-rc1
4# Wed Aug 17 10:02:43 2005 4# Wed Sep 14 15:15:01 2005
5# 5#
6 6
7# 7#
@@ -18,6 +18,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
18# General setup 18# General setup
19# 19#
20CONFIG_LOCALVERSION="" 20CONFIG_LOCALVERSION=""
21CONFIG_LOCALVERSION_AUTO=y
21CONFIG_SWAP=y 22CONFIG_SWAP=y
22CONFIG_SYSVIPC=y 23CONFIG_SYSVIPC=y
23# CONFIG_POSIX_MQUEUE is not set 24# CONFIG_POSIX_MQUEUE is not set
@@ -29,6 +30,7 @@ CONFIG_HOTPLUG=y
29CONFIG_KOBJECT_UEVENT=y 30CONFIG_KOBJECT_UEVENT=y
30# CONFIG_IKCONFIG is not set 31# CONFIG_IKCONFIG is not set
31# CONFIG_CPUSETS is not set 32# CONFIG_CPUSETS is not set
33CONFIG_INITRAMFS_SOURCE=""
32# CONFIG_EMBEDDED is not set 34# CONFIG_EMBEDDED is not set
33CONFIG_KALLSYMS=y 35CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_ALL is not set 36# CONFIG_KALLSYMS_ALL is not set
@@ -103,6 +105,7 @@ CONFIG_FLATMEM_MANUAL=y
103# CONFIG_SPARSEMEM_MANUAL is not set 105# CONFIG_SPARSEMEM_MANUAL is not set
104CONFIG_FLATMEM=y 106CONFIG_FLATMEM=y
105CONFIG_FLAT_NODE_MEM_MAP=y 107CONFIG_FLAT_NODE_MEM_MAP=y
108# CONFIG_SPARSEMEM_STATIC is not set
106CONFIG_HAVE_DEC_LOCK=y 109CONFIG_HAVE_DEC_LOCK=y
107CONFIG_IA32_SUPPORT=y 110CONFIG_IA32_SUPPORT=y
108CONFIG_COMPAT=y 111CONFIG_COMPAT=y
@@ -115,6 +118,7 @@ CONFIG_IA64_PALINFO=y
115# 118#
116CONFIG_EFI_VARS=y 119CONFIG_EFI_VARS=y
117CONFIG_EFI_PCDP=y 120CONFIG_EFI_PCDP=y
121# CONFIG_DELL_RBU is not set
118CONFIG_BINFMT_ELF=y 122CONFIG_BINFMT_ELF=y
119CONFIG_BINFMT_MISC=y 123CONFIG_BINFMT_MISC=y
120 124
@@ -122,28 +126,34 @@ CONFIG_BINFMT_MISC=y
122# Power management and ACPI 126# Power management and ACPI
123# 127#
124CONFIG_PM=y 128CONFIG_PM=y
125CONFIG_ACPI=y 129# CONFIG_PM_DEBUG is not set
126 130
127# 131#
128# ACPI (Advanced Configuration and Power Interface) Support 132# ACPI (Advanced Configuration and Power Interface) Support
129# 133#
134CONFIG_ACPI=y
130CONFIG_ACPI_BUTTON=y 135CONFIG_ACPI_BUTTON=y
131CONFIG_ACPI_FAN=y 136CONFIG_ACPI_FAN=y
132CONFIG_ACPI_PROCESSOR=y 137CONFIG_ACPI_PROCESSOR=y
133CONFIG_ACPI_THERMAL=y 138CONFIG_ACPI_THERMAL=y
139CONFIG_ACPI_BLACKLIST_YEAR=0
134# CONFIG_ACPI_DEBUG is not set 140# CONFIG_ACPI_DEBUG is not set
135CONFIG_ACPI_POWER=y 141CONFIG_ACPI_POWER=y
136CONFIG_ACPI_SYSTEM=y 142CONFIG_ACPI_SYSTEM=y
137# CONFIG_ACPI_CONTAINER is not set 143# CONFIG_ACPI_CONTAINER is not set
138 144
139# 145#
146# CPU Frequency scaling
147#
148# CONFIG_CPU_FREQ is not set
149
150#
140# Bus options (PCI, PCMCIA) 151# Bus options (PCI, PCMCIA)
141# 152#
142CONFIG_PCI=y 153CONFIG_PCI=y
143CONFIG_PCI_DOMAINS=y 154CONFIG_PCI_DOMAINS=y
144# CONFIG_PCI_MSI is not set 155# CONFIG_PCI_MSI is not set
145CONFIG_PCI_LEGACY_PROC=y 156CONFIG_PCI_LEGACY_PROC=y
146CONFIG_PCI_NAMES=y
147# CONFIG_PCI_DEBUG is not set 157# CONFIG_PCI_DEBUG is not set
148 158
149# 159#
@@ -187,8 +197,8 @@ CONFIG_IP_FIB_HASH=y
187# CONFIG_INET_ESP is not set 197# CONFIG_INET_ESP is not set
188# CONFIG_INET_IPCOMP is not set 198# CONFIG_INET_IPCOMP is not set
189# CONFIG_INET_TUNNEL is not set 199# CONFIG_INET_TUNNEL is not set
190# CONFIG_IP_TCPDIAG is not set 200CONFIG_INET_DIAG=y
191# CONFIG_IP_TCPDIAG_IPV6 is not set 201CONFIG_INET_TCP_DIAG=y
192# CONFIG_TCP_CONG_ADVANCED is not set 202# CONFIG_TCP_CONG_ADVANCED is not set
193CONFIG_TCP_CONG_BIC=y 203CONFIG_TCP_CONG_BIC=y
194 204
@@ -204,7 +214,6 @@ CONFIG_NETFILTER=y
204# IP: Netfilter Configuration 214# IP: Netfilter Configuration
205# 215#
206# CONFIG_IP_NF_CONNTRACK is not set 216# CONFIG_IP_NF_CONNTRACK is not set
207# CONFIG_IP_NF_CONNTRACK_MARK is not set
208# CONFIG_IP_NF_QUEUE is not set 217# CONFIG_IP_NF_QUEUE is not set
209# CONFIG_IP_NF_IPTABLES is not set 218# CONFIG_IP_NF_IPTABLES is not set
210CONFIG_IP_NF_ARPTABLES=y 219CONFIG_IP_NF_ARPTABLES=y
@@ -212,6 +221,11 @@ CONFIG_IP_NF_ARPTABLES=y
212# CONFIG_IP_NF_ARP_MANGLE is not set 221# CONFIG_IP_NF_ARP_MANGLE is not set
213 222
214# 223#
224# DCCP Configuration (EXPERIMENTAL)
225#
226# CONFIG_IP_DCCP is not set
227
228#
215# SCTP Configuration (EXPERIMENTAL) 229# SCTP Configuration (EXPERIMENTAL)
216# 230#
217# CONFIG_IP_SCTP is not set 231# CONFIG_IP_SCTP is not set
@@ -234,9 +248,11 @@ CONFIG_IP_NF_ARPTABLES=y
234# Network testing 248# Network testing
235# 249#
236# CONFIG_NET_PKTGEN is not set 250# CONFIG_NET_PKTGEN is not set
251# CONFIG_NETFILTER_NETLINK is not set
237# CONFIG_HAMRADIO is not set 252# CONFIG_HAMRADIO is not set
238# CONFIG_IRDA is not set 253# CONFIG_IRDA is not set
239# CONFIG_BT is not set 254# CONFIG_BT is not set
255# CONFIG_IEEE80211 is not set
240 256
241# 257#
242# Device Drivers 258# Device Drivers
@@ -251,6 +267,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
251# CONFIG_DEBUG_DRIVER is not set 267# CONFIG_DEBUG_DRIVER is not set
252 268
253# 269#
270# Connector - unified userspace <-> kernelspace linker
271#
272# CONFIG_CONNECTOR is not set
273
274#
254# Memory Technology Devices (MTD) 275# Memory Technology Devices (MTD)
255# 276#
256# CONFIG_MTD is not set 277# CONFIG_MTD is not set
@@ -263,7 +284,13 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
263# 284#
264# Plug and Play support 285# Plug and Play support
265# 286#
266# CONFIG_PNP is not set 287CONFIG_PNP=y
288# CONFIG_PNP_DEBUG is not set
289
290#
291# Protocols
292#
293CONFIG_PNPACPI=y
267 294
268# 295#
269# Block devices 296# Block devices
@@ -282,7 +309,6 @@ CONFIG_BLK_DEV_RAM=y
282CONFIG_BLK_DEV_RAM_COUNT=16 309CONFIG_BLK_DEV_RAM_COUNT=16
283CONFIG_BLK_DEV_RAM_SIZE=4096 310CONFIG_BLK_DEV_RAM_SIZE=4096
284CONFIG_BLK_DEV_INITRD=y 311CONFIG_BLK_DEV_INITRD=y
285CONFIG_INITRAMFS_SOURCE=""
286# CONFIG_CDROM_PKTCDVD is not set 312# CONFIG_CDROM_PKTCDVD is not set
287 313
288# 314#
@@ -315,7 +341,8 @@ CONFIG_BLK_DEV_IDECD=y
315# 341#
316# IDE chipset support/bugfixes 342# IDE chipset support/bugfixes
317# 343#
318CONFIG_IDE_GENERIC=y 344# CONFIG_IDE_GENERIC is not set
345# CONFIG_BLK_DEV_IDEPNP is not set
319CONFIG_BLK_DEV_IDEPCI=y 346CONFIG_BLK_DEV_IDEPCI=y
320CONFIG_IDEPCI_SHARE_IRQ=y 347CONFIG_IDEPCI_SHARE_IRQ=y
321# CONFIG_BLK_DEV_OFFBOARD is not set 348# CONFIG_BLK_DEV_OFFBOARD is not set
@@ -354,6 +381,7 @@ CONFIG_BLK_DEV_IDEDMA=y
354# 381#
355# SCSI device support 382# SCSI device support
356# 383#
384# CONFIG_RAID_ATTRS is not set
357CONFIG_SCSI=y 385CONFIG_SCSI=y
358CONFIG_SCSI_PROC_FS=y 386CONFIG_SCSI_PROC_FS=y
359 387
@@ -381,6 +409,7 @@ CONFIG_SCSI_LOGGING=y
381CONFIG_SCSI_SPI_ATTRS=y 409CONFIG_SCSI_SPI_ATTRS=y
382# CONFIG_SCSI_FC_ATTRS is not set 410# CONFIG_SCSI_FC_ATTRS is not set
383# CONFIG_SCSI_ISCSI_ATTRS is not set 411# CONFIG_SCSI_ISCSI_ATTRS is not set
412# CONFIG_SCSI_SAS_ATTRS is not set
384 413
385# 414#
386# SCSI low-level drivers 415# SCSI low-level drivers
@@ -457,6 +486,7 @@ CONFIG_DUMMY=y
457# CONFIG_BONDING is not set 486# CONFIG_BONDING is not set
458# CONFIG_EQUALIZER is not set 487# CONFIG_EQUALIZER is not set
459# CONFIG_TUN is not set 488# CONFIG_TUN is not set
489# CONFIG_NET_SB1000 is not set
460 490
461# 491#
462# ARCnet devices 492# ARCnet devices
@@ -464,6 +494,11 @@ CONFIG_DUMMY=y
464# CONFIG_ARCNET is not set 494# CONFIG_ARCNET is not set
465 495
466# 496#
497# PHY device support
498#
499# CONFIG_PHYLIB is not set
500
501#
467# Ethernet (10 or 100Mbit) 502# Ethernet (10 or 100Mbit)
468# 503#
469CONFIG_NET_ETHERNET=y 504CONFIG_NET_ETHERNET=y
@@ -485,6 +520,7 @@ CONFIG_TULIP_NAPI_HW_MITIGATION=y
485# CONFIG_DE4X5 is not set 520# CONFIG_DE4X5 is not set
486# CONFIG_WINBOND_840 is not set 521# CONFIG_WINBOND_840 is not set
487# CONFIG_DM9102 is not set 522# CONFIG_DM9102 is not set
523# CONFIG_ULI526X is not set
488# CONFIG_HP100 is not set 524# CONFIG_HP100 is not set
489CONFIG_NET_PCI=y 525CONFIG_NET_PCI=y
490# CONFIG_PCNET32 is not set 526# CONFIG_PCNET32 is not set
@@ -516,6 +552,7 @@ CONFIG_E1000=y
516# CONFIG_HAMACHI is not set 552# CONFIG_HAMACHI is not set
517# CONFIG_YELLOWFIN is not set 553# CONFIG_YELLOWFIN is not set
518# CONFIG_R8169 is not set 554# CONFIG_R8169 is not set
555# CONFIG_SIS190 is not set
519# CONFIG_SKGE is not set 556# CONFIG_SKGE is not set
520# CONFIG_SK98LIN is not set 557# CONFIG_SK98LIN is not set
521# CONFIG_VIA_VELOCITY is not set 558# CONFIG_VIA_VELOCITY is not set
@@ -525,6 +562,7 @@ CONFIG_TIGON3=y
525# 562#
526# Ethernet (10000 Mbit) 563# Ethernet (10000 Mbit)
527# 564#
565# CONFIG_CHELSIO_T1 is not set
528# CONFIG_IXGB is not set 566# CONFIG_IXGB is not set
529# CONFIG_S2IO is not set 567# CONFIG_S2IO is not set
530 568
@@ -650,12 +688,12 @@ CONFIG_AGP=y
650CONFIG_AGP_HP_ZX1=y 688CONFIG_AGP_HP_ZX1=y
651CONFIG_DRM=y 689CONFIG_DRM=y
652# CONFIG_DRM_TDFX is not set 690# CONFIG_DRM_TDFX is not set
653# CONFIG_DRM_GAMMA is not set
654# CONFIG_DRM_R128 is not set 691# CONFIG_DRM_R128 is not set
655CONFIG_DRM_RADEON=y 692CONFIG_DRM_RADEON=y
656# CONFIG_DRM_MGA is not set 693# CONFIG_DRM_MGA is not set
657# CONFIG_DRM_SIS is not set 694# CONFIG_DRM_SIS is not set
658# CONFIG_DRM_VIA is not set 695# CONFIG_DRM_VIA is not set
696# CONFIG_DRM_SAVAGE is not set
659# CONFIG_RAW_DRIVER is not set 697# CONFIG_RAW_DRIVER is not set
660# CONFIG_HPET is not set 698# CONFIG_HPET is not set
661# CONFIG_HANGCHECK_TIMER is not set 699# CONFIG_HANGCHECK_TIMER is not set
@@ -689,7 +727,6 @@ CONFIG_I2C_ALGOPCF=y
689# CONFIG_I2C_I801 is not set 727# CONFIG_I2C_I801 is not set
690# CONFIG_I2C_I810 is not set 728# CONFIG_I2C_I810 is not set
691# CONFIG_I2C_PIIX4 is not set 729# CONFIG_I2C_PIIX4 is not set
692# CONFIG_I2C_ISA is not set
693# CONFIG_I2C_NFORCE2 is not set 730# CONFIG_I2C_NFORCE2 is not set
694# CONFIG_I2C_PARPORT_LIGHT is not set 731# CONFIG_I2C_PARPORT_LIGHT is not set
695# CONFIG_I2C_PROSAVAGE is not set 732# CONFIG_I2C_PROSAVAGE is not set
@@ -703,7 +740,6 @@ CONFIG_I2C_ALGOPCF=y
703# CONFIG_I2C_VIAPRO is not set 740# CONFIG_I2C_VIAPRO is not set
704# CONFIG_I2C_VOODOO3 is not set 741# CONFIG_I2C_VOODOO3 is not set
705# CONFIG_I2C_PCA_ISA is not set 742# CONFIG_I2C_PCA_ISA is not set
706# CONFIG_I2C_SENSOR is not set
707 743
708# 744#
709# Miscellaneous I2C Chip support 745# Miscellaneous I2C Chip support
@@ -730,12 +766,17 @@ CONFIG_I2C_ALGOPCF=y
730# Hardware Monitoring support 766# Hardware Monitoring support
731# 767#
732# CONFIG_HWMON is not set 768# CONFIG_HWMON is not set
769# CONFIG_HWMON_VID is not set
733 770
734# 771#
735# Misc devices 772# Misc devices
736# 773#
737 774
738# 775#
776# Multimedia Capabilities Port drivers
777#
778
779#
739# Multimedia devices 780# Multimedia devices
740# 781#
741CONFIG_VIDEO_DEV=y 782CONFIG_VIDEO_DEV=y
@@ -806,6 +847,7 @@ CONFIG_FB_RADEON_DEBUG=y
806# CONFIG_FB_KYRO is not set 847# CONFIG_FB_KYRO is not set
807# CONFIG_FB_3DFX is not set 848# CONFIG_FB_3DFX is not set
808# CONFIG_FB_VOODOO1 is not set 849# CONFIG_FB_VOODOO1 is not set
850# CONFIG_FB_CYBLA is not set
809# CONFIG_FB_TRIDENT is not set 851# CONFIG_FB_TRIDENT is not set
810# CONFIG_FB_PM3 is not set 852# CONFIG_FB_PM3 is not set
811# CONFIG_FB_S1D13XXX is not set 853# CONFIG_FB_S1D13XXX is not set
@@ -862,11 +904,12 @@ CONFIG_SND_OPL3_LIB=y
862# CONFIG_SND_MTPAV is not set 904# CONFIG_SND_MTPAV is not set
863# CONFIG_SND_SERIAL_U16550 is not set 905# CONFIG_SND_SERIAL_U16550 is not set
864# CONFIG_SND_MPU401 is not set 906# CONFIG_SND_MPU401 is not set
907CONFIG_SND_AC97_CODEC=y
908CONFIG_SND_AC97_BUS=y
865 909
866# 910#
867# PCI devices 911# PCI devices
868# 912#
869CONFIG_SND_AC97_CODEC=y
870# CONFIG_SND_ALI5451 is not set 913# CONFIG_SND_ALI5451 is not set
871# CONFIG_SND_ATIIXP is not set 914# CONFIG_SND_ATIIXP is not set
872# CONFIG_SND_ATIIXP_MODEM is not set 915# CONFIG_SND_ATIIXP_MODEM is not set
@@ -890,7 +933,7 @@ CONFIG_SND_AC97_CODEC=y
890# CONFIG_SND_HDSPM is not set 933# CONFIG_SND_HDSPM is not set
891# CONFIG_SND_TRIDENT is not set 934# CONFIG_SND_TRIDENT is not set
892# CONFIG_SND_YMFPCI is not set 935# CONFIG_SND_YMFPCI is not set
893# CONFIG_SND_ALS4000 is not set 936# CONFIG_SND_AD1889 is not set
894# CONFIG_SND_CMIPCI is not set 937# CONFIG_SND_CMIPCI is not set
895# CONFIG_SND_ENS1370 is not set 938# CONFIG_SND_ENS1370 is not set
896# CONFIG_SND_ENS1371 is not set 939# CONFIG_SND_ENS1371 is not set
@@ -952,9 +995,8 @@ CONFIG_USB_UHCI_HCD=y
952# 995#
953# USB Device Class drivers 996# USB Device Class drivers
954# 997#
955# CONFIG_USB_AUDIO is not set 998# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
956# CONFIG_USB_BLUETOOTH_TTY is not set 999# CONFIG_USB_BLUETOOTH_TTY is not set
957# CONFIG_USB_MIDI is not set
958# CONFIG_USB_ACM is not set 1000# CONFIG_USB_ACM is not set
959# CONFIG_USB_PRINTER is not set 1001# CONFIG_USB_PRINTER is not set
960 1002
@@ -971,6 +1013,7 @@ CONFIG_USB_STORAGE=y
971# CONFIG_USB_STORAGE_SDDR09 is not set 1013# CONFIG_USB_STORAGE_SDDR09 is not set
972# CONFIG_USB_STORAGE_SDDR55 is not set 1014# CONFIG_USB_STORAGE_SDDR55 is not set
973# CONFIG_USB_STORAGE_JUMPSHOT is not set 1015# CONFIG_USB_STORAGE_JUMPSHOT is not set
1016# CONFIG_USB_STORAGE_ONETOUCH is not set
974 1017
975# 1018#
976# USB Input Devices 1019# USB Input Devices
@@ -987,9 +1030,11 @@ CONFIG_USB_HIDDEV=y
987# CONFIG_USB_MTOUCH is not set 1030# CONFIG_USB_MTOUCH is not set
988# CONFIG_USB_ITMTOUCH is not set 1031# CONFIG_USB_ITMTOUCH is not set
989# CONFIG_USB_EGALAX is not set 1032# CONFIG_USB_EGALAX is not set
1033# CONFIG_USB_YEALINK is not set
990# CONFIG_USB_XPAD is not set 1034# CONFIG_USB_XPAD is not set
991# CONFIG_USB_ATI_REMOTE is not set 1035# CONFIG_USB_ATI_REMOTE is not set
992# CONFIG_USB_KEYSPAN_REMOTE is not set 1036# CONFIG_USB_KEYSPAN_REMOTE is not set
1037# CONFIG_USB_APPLETOUCH is not set
993 1038
994# 1039#
995# USB Imaging devices 1040# USB Imaging devices
@@ -1088,10 +1133,6 @@ CONFIG_FS_MBCACHE=y
1088# CONFIG_REISERFS_FS is not set 1133# CONFIG_REISERFS_FS is not set
1089# CONFIG_JFS_FS is not set 1134# CONFIG_JFS_FS is not set
1090# CONFIG_FS_POSIX_ACL is not set 1135# CONFIG_FS_POSIX_ACL is not set
1091
1092#
1093# XFS support
1094#
1095# CONFIG_XFS_FS is not set 1136# CONFIG_XFS_FS is not set
1096# CONFIG_MINIX_FS is not set 1137# CONFIG_MINIX_FS is not set
1097# CONFIG_ROMFS_FS is not set 1138# CONFIG_ROMFS_FS is not set
@@ -1100,6 +1141,7 @@ CONFIG_FS_MBCACHE=y
1100CONFIG_DNOTIFY=y 1141CONFIG_DNOTIFY=y
1101CONFIG_AUTOFS_FS=y 1142CONFIG_AUTOFS_FS=y
1102# CONFIG_AUTOFS4_FS is not set 1143# CONFIG_AUTOFS4_FS is not set
1144# CONFIG_FUSE_FS is not set
1103 1145
1104# 1146#
1105# CD-ROM/DVD Filesystems 1147# CD-ROM/DVD Filesystems
@@ -1126,13 +1168,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1126CONFIG_PROC_FS=y 1168CONFIG_PROC_FS=y
1127CONFIG_PROC_KCORE=y 1169CONFIG_PROC_KCORE=y
1128CONFIG_SYSFS=y 1170CONFIG_SYSFS=y
1129# CONFIG_DEVPTS_FS_XATTR is not set
1130CONFIG_TMPFS=y 1171CONFIG_TMPFS=y
1131CONFIG_TMPFS_XATTR=y
1132CONFIG_TMPFS_SECURITY=y
1133CONFIG_HUGETLBFS=y 1172CONFIG_HUGETLBFS=y
1134CONFIG_HUGETLB_PAGE=y 1173CONFIG_HUGETLB_PAGE=y
1135CONFIG_RAMFS=y 1174CONFIG_RAMFS=y
1175# CONFIG_RELAYFS_FS is not set
1136 1176
1137# 1177#
1138# Miscellaneous filesystems 1178# Miscellaneous filesystems
@@ -1177,6 +1217,7 @@ CONFIG_RPCSEC_GSS_KRB5=y
1177# CONFIG_NCP_FS is not set 1217# CONFIG_NCP_FS is not set
1178# CONFIG_CODA_FS is not set 1218# CONFIG_CODA_FS is not set
1179# CONFIG_AFS_FS is not set 1219# CONFIG_AFS_FS is not set
1220# CONFIG_9P_FS is not set
1180 1221
1181# 1222#
1182# Partition Types 1223# Partition Types
@@ -1246,10 +1287,12 @@ CONFIG_NLS_UTF8=y
1246# Library routines 1287# Library routines
1247# 1288#
1248# CONFIG_CRC_CCITT is not set 1289# CONFIG_CRC_CCITT is not set
1290# CONFIG_CRC16 is not set
1249CONFIG_CRC32=y 1291CONFIG_CRC32=y
1250# CONFIG_LIBCRC32C is not set 1292# CONFIG_LIBCRC32C is not set
1251CONFIG_GENERIC_HARDIRQS=y 1293CONFIG_GENERIC_HARDIRQS=y
1252CONFIG_GENERIC_IRQ_PROBE=y 1294CONFIG_GENERIC_IRQ_PROBE=y
1295CONFIG_GENERIC_PENDING_IRQ=y
1253 1296
1254# 1297#
1255# Profiling support 1298# Profiling support
@@ -1263,6 +1306,7 @@ CONFIG_GENERIC_IRQ_PROBE=y
1263CONFIG_DEBUG_KERNEL=y 1306CONFIG_DEBUG_KERNEL=y
1264CONFIG_MAGIC_SYSRQ=y 1307CONFIG_MAGIC_SYSRQ=y
1265CONFIG_LOG_BUF_SHIFT=17 1308CONFIG_LOG_BUF_SHIFT=17
1309CONFIG_DETECT_SOFTLOCKUP=y
1266# CONFIG_SCHEDSTATS is not set 1310# CONFIG_SCHEDSTATS is not set
1267# CONFIG_DEBUG_SLAB is not set 1311# CONFIG_DEBUG_SLAB is not set
1268# CONFIG_DEBUG_SPINLOCK is not set 1312# CONFIG_DEBUG_SPINLOCK is not set
diff --git a/arch/ia64/defconfig b/arch/ia64/defconfig
index 5da208115ea1..6e3f147e03e5 100644
--- a/arch/ia64/defconfig
+++ b/arch/ia64/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.12 3# Linux kernel version: 2.6.14-rc1
4# Tue Jun 21 11:30:42 2005 4# Wed Sep 14 15:13:03 2005
5# 5#
6 6
7# 7#
@@ -16,6 +16,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
16# General setup 16# General setup
17# 17#
18CONFIG_LOCALVERSION="" 18CONFIG_LOCALVERSION=""
19CONFIG_LOCALVERSION_AUTO=y
19CONFIG_SWAP=y 20CONFIG_SWAP=y
20CONFIG_SYSVIPC=y 21CONFIG_SYSVIPC=y
21CONFIG_POSIX_MQUEUE=y 22CONFIG_POSIX_MQUEUE=y
@@ -27,6 +28,7 @@ CONFIG_KOBJECT_UEVENT=y
27CONFIG_IKCONFIG=y 28CONFIG_IKCONFIG=y
28CONFIG_IKCONFIG_PROC=y 29CONFIG_IKCONFIG_PROC=y
29# CONFIG_CPUSETS is not set 30# CONFIG_CPUSETS is not set
31CONFIG_INITRAMFS_SOURCE=""
30# CONFIG_EMBEDDED is not set 32# CONFIG_EMBEDDED is not set
31CONFIG_KALLSYMS=y 33CONFIG_KALLSYMS=y
32CONFIG_KALLSYMS_ALL=y 34CONFIG_KALLSYMS_ALL=y
@@ -80,6 +82,10 @@ CONFIG_MCKINLEY=y
80# CONFIG_IA64_PAGE_SIZE_8KB is not set 82# CONFIG_IA64_PAGE_SIZE_8KB is not set
81CONFIG_IA64_PAGE_SIZE_16KB=y 83CONFIG_IA64_PAGE_SIZE_16KB=y
82# CONFIG_IA64_PAGE_SIZE_64KB is not set 84# CONFIG_IA64_PAGE_SIZE_64KB is not set
85# CONFIG_HZ_100 is not set
86CONFIG_HZ_250=y
87# CONFIG_HZ_1000 is not set
88CONFIG_HZ=250
83CONFIG_IA64_L1_CACHE_SHIFT=7 89CONFIG_IA64_L1_CACHE_SHIFT=7
84CONFIG_NUMA=y 90CONFIG_NUMA=y
85CONFIG_VIRTUAL_MEM_MAP=y 91CONFIG_VIRTUAL_MEM_MAP=y
@@ -87,12 +93,21 @@ CONFIG_HOLES_IN_ZONE=y
87CONFIG_ARCH_DISCONTIGMEM_ENABLE=y 93CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
88CONFIG_IA64_CYCLONE=y 94CONFIG_IA64_CYCLONE=y
89CONFIG_IOSAPIC=y 95CONFIG_IOSAPIC=y
96# CONFIG_IA64_SGI_SN_XP is not set
90CONFIG_FORCE_MAX_ZONEORDER=18 97CONFIG_FORCE_MAX_ZONEORDER=18
91CONFIG_SMP=y 98CONFIG_SMP=y
92CONFIG_NR_CPUS=512 99CONFIG_NR_CPUS=512
93CONFIG_HOTPLUG_CPU=y 100CONFIG_HOTPLUG_CPU=y
94# CONFIG_SCHED_SMT is not set 101# CONFIG_SCHED_SMT is not set
95# CONFIG_PREEMPT is not set 102# CONFIG_PREEMPT is not set
103CONFIG_SELECT_MEMORY_MODEL=y
104# CONFIG_FLATMEM_MANUAL is not set
105CONFIG_DISCONTIGMEM_MANUAL=y
106# CONFIG_SPARSEMEM_MANUAL is not set
107CONFIG_DISCONTIGMEM=y
108CONFIG_FLAT_NODE_MEM_MAP=y
109CONFIG_NEED_MULTIPLE_NODES=y
110# CONFIG_SPARSEMEM_STATIC is not set
96CONFIG_HAVE_DEC_LOCK=y 111CONFIG_HAVE_DEC_LOCK=y
97CONFIG_IA32_SUPPORT=y 112CONFIG_IA32_SUPPORT=y
98CONFIG_COMPAT=y 113CONFIG_COMPAT=y
@@ -105,6 +120,7 @@ CONFIG_IA64_PALINFO=y
105# 120#
106CONFIG_EFI_VARS=y 121CONFIG_EFI_VARS=y
107CONFIG_EFI_PCDP=y 122CONFIG_EFI_PCDP=y
123# CONFIG_DELL_RBU is not set
108CONFIG_BINFMT_ELF=y 124CONFIG_BINFMT_ELF=y
109CONFIG_BINFMT_MISC=m 125CONFIG_BINFMT_MISC=m
110 126
@@ -112,30 +128,36 @@ CONFIG_BINFMT_MISC=m
112# Power management and ACPI 128# Power management and ACPI
113# 129#
114CONFIG_PM=y 130CONFIG_PM=y
115CONFIG_ACPI=y 131# CONFIG_PM_DEBUG is not set
116 132
117# 133#
118# ACPI (Advanced Configuration and Power Interface) Support 134# ACPI (Advanced Configuration and Power Interface) Support
119# 135#
136CONFIG_ACPI=y
120CONFIG_ACPI_BUTTON=m 137CONFIG_ACPI_BUTTON=m
121CONFIG_ACPI_FAN=m 138CONFIG_ACPI_FAN=m
122CONFIG_ACPI_PROCESSOR=m 139CONFIG_ACPI_PROCESSOR=m
123CONFIG_ACPI_HOTPLUG_CPU=y 140CONFIG_ACPI_HOTPLUG_CPU=y
124CONFIG_ACPI_THERMAL=m 141CONFIG_ACPI_THERMAL=m
125CONFIG_ACPI_NUMA=y 142CONFIG_ACPI_NUMA=y
143CONFIG_ACPI_BLACKLIST_YEAR=0
126# CONFIG_ACPI_DEBUG is not set 144# CONFIG_ACPI_DEBUG is not set
127CONFIG_ACPI_POWER=y 145CONFIG_ACPI_POWER=y
128CONFIG_ACPI_SYSTEM=y 146CONFIG_ACPI_SYSTEM=y
129CONFIG_ACPI_CONTAINER=m 147CONFIG_ACPI_CONTAINER=m
130 148
131# 149#
150# CPU Frequency scaling
151#
152# CONFIG_CPU_FREQ is not set
153
154#
132# Bus options (PCI, PCMCIA) 155# Bus options (PCI, PCMCIA)
133# 156#
134CONFIG_PCI=y 157CONFIG_PCI=y
135CONFIG_PCI_DOMAINS=y 158CONFIG_PCI_DOMAINS=y
136# CONFIG_PCI_MSI is not set 159# CONFIG_PCI_MSI is not set
137CONFIG_PCI_LEGACY_PROC=y 160CONFIG_PCI_LEGACY_PROC=y
138CONFIG_PCI_NAMES=y
139# CONFIG_PCI_DEBUG is not set 161# CONFIG_PCI_DEBUG is not set
140 162
141# 163#
@@ -147,6 +169,7 @@ CONFIG_HOTPLUG_PCI_ACPI=m
147# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set 169# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set
148# CONFIG_HOTPLUG_PCI_CPCI is not set 170# CONFIG_HOTPLUG_PCI_CPCI is not set
149# CONFIG_HOTPLUG_PCI_SHPC is not set 171# CONFIG_HOTPLUG_PCI_SHPC is not set
172# CONFIG_HOTPLUG_PCI_SGI is not set
150 173
151# 174#
152# PCCARD (PCMCIA/CardBus) support 175# PCCARD (PCMCIA/CardBus) support
@@ -154,6 +177,73 @@ CONFIG_HOTPLUG_PCI_ACPI=m
154# CONFIG_PCCARD is not set 177# CONFIG_PCCARD is not set
155 178
156# 179#
180# Networking
181#
182CONFIG_NET=y
183
184#
185# Networking options
186#
187CONFIG_PACKET=y
188# CONFIG_PACKET_MMAP is not set
189CONFIG_UNIX=y
190# CONFIG_NET_KEY is not set
191CONFIG_INET=y
192CONFIG_IP_MULTICAST=y
193# CONFIG_IP_ADVANCED_ROUTER is not set
194CONFIG_IP_FIB_HASH=y
195# CONFIG_IP_PNP is not set
196# CONFIG_NET_IPIP is not set
197# CONFIG_NET_IPGRE is not set
198# CONFIG_IP_MROUTE is not set
199CONFIG_ARPD=y
200CONFIG_SYN_COOKIES=y
201# CONFIG_INET_AH is not set
202# CONFIG_INET_ESP is not set
203# CONFIG_INET_IPCOMP is not set
204# CONFIG_INET_TUNNEL is not set
205CONFIG_INET_DIAG=y
206CONFIG_INET_TCP_DIAG=y
207# CONFIG_TCP_CONG_ADVANCED is not set
208CONFIG_TCP_CONG_BIC=y
209# CONFIG_IPV6 is not set
210# CONFIG_NETFILTER is not set
211
212#
213# DCCP Configuration (EXPERIMENTAL)
214#
215# CONFIG_IP_DCCP is not set
216
217#
218# SCTP Configuration (EXPERIMENTAL)
219#
220# CONFIG_IP_SCTP is not set
221# CONFIG_ATM is not set
222# CONFIG_BRIDGE is not set
223# CONFIG_VLAN_8021Q is not set
224# CONFIG_DECNET is not set
225# CONFIG_LLC2 is not set
226# CONFIG_IPX is not set
227# CONFIG_ATALK is not set
228# CONFIG_X25 is not set
229# CONFIG_LAPB is not set
230# CONFIG_NET_DIVERT is not set
231# CONFIG_ECONET is not set
232# CONFIG_WAN_ROUTER is not set
233# CONFIG_NET_SCHED is not set
234# CONFIG_NET_CLS_ROUTE is not set
235
236#
237# Network testing
238#
239# CONFIG_NET_PKTGEN is not set
240# CONFIG_NETFILTER_NETLINK is not set
241# CONFIG_HAMRADIO is not set
242# CONFIG_IRDA is not set
243# CONFIG_BT is not set
244# CONFIG_IEEE80211 is not set
245
246#
157# Device Drivers 247# Device Drivers
158# 248#
159 249
@@ -162,10 +252,15 @@ CONFIG_HOTPLUG_PCI_ACPI=m
162# 252#
163CONFIG_STANDALONE=y 253CONFIG_STANDALONE=y
164CONFIG_PREVENT_FIRMWARE_BUILD=y 254CONFIG_PREVENT_FIRMWARE_BUILD=y
165# CONFIG_FW_LOADER is not set 255CONFIG_FW_LOADER=m
166# CONFIG_DEBUG_DRIVER is not set 256# CONFIG_DEBUG_DRIVER is not set
167 257
168# 258#
259# Connector - unified userspace <-> kernelspace linker
260#
261# CONFIG_CONNECTOR is not set
262
263#
169# Memory Technology Devices (MTD) 264# Memory Technology Devices (MTD)
170# 265#
171# CONFIG_MTD is not set 266# CONFIG_MTD is not set
@@ -178,7 +273,13 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
178# 273#
179# Plug and Play support 274# Plug and Play support
180# 275#
181# CONFIG_PNP is not set 276CONFIG_PNP=y
277# CONFIG_PNP_DEBUG is not set
278
279#
280# Protocols
281#
282CONFIG_PNPACPI=y
182 283
183# 284#
184# Block devices 285# Block devices
@@ -197,7 +298,6 @@ CONFIG_BLK_DEV_RAM=y
197CONFIG_BLK_DEV_RAM_COUNT=16 298CONFIG_BLK_DEV_RAM_COUNT=16
198CONFIG_BLK_DEV_RAM_SIZE=4096 299CONFIG_BLK_DEV_RAM_SIZE=4096
199CONFIG_BLK_DEV_INITRD=y 300CONFIG_BLK_DEV_INITRD=y
200CONFIG_INITRAMFS_SOURCE=""
201# CONFIG_CDROM_PKTCDVD is not set 301# CONFIG_CDROM_PKTCDVD is not set
202 302
203# 303#
@@ -230,7 +330,8 @@ CONFIG_BLK_DEV_IDESCSI=m
230# 330#
231# IDE chipset support/bugfixes 331# IDE chipset support/bugfixes
232# 332#
233CONFIG_IDE_GENERIC=y 333# CONFIG_IDE_GENERIC is not set
334# CONFIG_BLK_DEV_IDEPNP is not set
234CONFIG_BLK_DEV_IDEPCI=y 335CONFIG_BLK_DEV_IDEPCI=y
235# CONFIG_IDEPCI_SHARE_IRQ is not set 336# CONFIG_IDEPCI_SHARE_IRQ is not set
236# CONFIG_BLK_DEV_OFFBOARD is not set 337# CONFIG_BLK_DEV_OFFBOARD is not set
@@ -252,6 +353,7 @@ CONFIG_BLK_DEV_CMD64X=y
252# CONFIG_BLK_DEV_HPT366 is not set 353# CONFIG_BLK_DEV_HPT366 is not set
253# CONFIG_BLK_DEV_SC1200 is not set 354# CONFIG_BLK_DEV_SC1200 is not set
254CONFIG_BLK_DEV_PIIX=y 355CONFIG_BLK_DEV_PIIX=y
356# CONFIG_BLK_DEV_IT821X is not set
255# CONFIG_BLK_DEV_NS87415 is not set 357# CONFIG_BLK_DEV_NS87415 is not set
256# CONFIG_BLK_DEV_PDC202XX_OLD is not set 358# CONFIG_BLK_DEV_PDC202XX_OLD is not set
257# CONFIG_BLK_DEV_PDC202XX_NEW is not set 359# CONFIG_BLK_DEV_PDC202XX_NEW is not set
@@ -270,6 +372,7 @@ CONFIG_IDEDMA_AUTO=y
270# 372#
271# SCSI device support 373# SCSI device support
272# 374#
375# CONFIG_RAID_ATTRS is not set
273CONFIG_SCSI=y 376CONFIG_SCSI=y
274CONFIG_SCSI_PROC_FS=y 377CONFIG_SCSI_PROC_FS=y
275 378
@@ -297,6 +400,7 @@ CONFIG_CHR_DEV_SG=m
297CONFIG_SCSI_SPI_ATTRS=y 400CONFIG_SCSI_SPI_ATTRS=y
298CONFIG_SCSI_FC_ATTRS=y 401CONFIG_SCSI_FC_ATTRS=y
299# CONFIG_SCSI_ISCSI_ATTRS is not set 402# CONFIG_SCSI_ISCSI_ATTRS is not set
403# CONFIG_SCSI_SAS_ATTRS is not set
300 404
301# 405#
302# SCSI low-level drivers 406# SCSI low-level drivers
@@ -314,6 +418,7 @@ CONFIG_SCSI_SATA=y
314# CONFIG_SCSI_SATA_AHCI is not set 418# CONFIG_SCSI_SATA_AHCI is not set
315# CONFIG_SCSI_SATA_SVW is not set 419# CONFIG_SCSI_SATA_SVW is not set
316# CONFIG_SCSI_ATA_PIIX is not set 420# CONFIG_SCSI_ATA_PIIX is not set
421# CONFIG_SCSI_SATA_MV is not set
317# CONFIG_SCSI_SATA_NV is not set 422# CONFIG_SCSI_SATA_NV is not set
318# CONFIG_SCSI_SATA_PROMISE is not set 423# CONFIG_SCSI_SATA_PROMISE is not set
319# CONFIG_SCSI_SATA_QSTOR is not set 424# CONFIG_SCSI_SATA_QSTOR is not set
@@ -335,7 +440,6 @@ CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
335# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set 440# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
336# CONFIG_SCSI_IPR is not set 441# CONFIG_SCSI_IPR is not set
337# CONFIG_SCSI_QLOGIC_FC is not set 442# CONFIG_SCSI_QLOGIC_FC is not set
338# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set
339CONFIG_SCSI_QLOGIC_1280=y 443CONFIG_SCSI_QLOGIC_1280=y
340# CONFIG_SCSI_QLOGIC_1280_1040 is not set 444# CONFIG_SCSI_QLOGIC_1280_1040 is not set
341CONFIG_SCSI_QLA2XXX=y 445CONFIG_SCSI_QLA2XXX=y
@@ -344,6 +448,7 @@ CONFIG_SCSI_QLA22XX=m
344CONFIG_SCSI_QLA2300=m 448CONFIG_SCSI_QLA2300=m
345CONFIG_SCSI_QLA2322=m 449CONFIG_SCSI_QLA2322=m
346# CONFIG_SCSI_QLA6312 is not set 450# CONFIG_SCSI_QLA6312 is not set
451# CONFIG_SCSI_QLA24XX is not set
347# CONFIG_SCSI_LPFC is not set 452# CONFIG_SCSI_LPFC is not set
348# CONFIG_SCSI_DC395x is not set 453# CONFIG_SCSI_DC395x is not set
349# CONFIG_SCSI_DC390T is not set 454# CONFIG_SCSI_DC390T is not set
@@ -390,74 +495,14 @@ CONFIG_FUSION_MAX_SGE=128
390# CONFIG_I2O is not set 495# CONFIG_I2O is not set
391 496
392# 497#
393# Networking support 498# Network device support
394#
395CONFIG_NET=y
396
397#
398# Networking options
399#
400CONFIG_PACKET=y
401# CONFIG_PACKET_MMAP is not set
402CONFIG_UNIX=y
403# CONFIG_NET_KEY is not set
404CONFIG_INET=y
405CONFIG_IP_MULTICAST=y
406# CONFIG_IP_ADVANCED_ROUTER is not set
407# CONFIG_IP_PNP is not set
408# CONFIG_NET_IPIP is not set
409# CONFIG_NET_IPGRE is not set
410# CONFIG_IP_MROUTE is not set
411CONFIG_ARPD=y
412CONFIG_SYN_COOKIES=y
413# CONFIG_INET_AH is not set
414# CONFIG_INET_ESP is not set
415# CONFIG_INET_IPCOMP is not set
416# CONFIG_INET_TUNNEL is not set
417CONFIG_IP_TCPDIAG=y
418# CONFIG_IP_TCPDIAG_IPV6 is not set
419# CONFIG_IPV6 is not set
420# CONFIG_NETFILTER is not set
421
422#
423# SCTP Configuration (EXPERIMENTAL)
424#
425# CONFIG_IP_SCTP is not set
426# CONFIG_ATM is not set
427# CONFIG_BRIDGE is not set
428# CONFIG_VLAN_8021Q is not set
429# CONFIG_DECNET is not set
430# CONFIG_LLC2 is not set
431# CONFIG_IPX is not set
432# CONFIG_ATALK is not set
433# CONFIG_X25 is not set
434# CONFIG_LAPB is not set
435# CONFIG_NET_DIVERT is not set
436# CONFIG_ECONET is not set
437# CONFIG_WAN_ROUTER is not set
438
439# 499#
440# QoS and/or fair queueing
441#
442# CONFIG_NET_SCHED is not set
443# CONFIG_NET_CLS_ROUTE is not set
444
445#
446# Network testing
447#
448# CONFIG_NET_PKTGEN is not set
449CONFIG_NETPOLL=y
450# CONFIG_NETPOLL_RX is not set
451# CONFIG_NETPOLL_TRAP is not set
452CONFIG_NET_POLL_CONTROLLER=y
453# CONFIG_HAMRADIO is not set
454# CONFIG_IRDA is not set
455# CONFIG_BT is not set
456CONFIG_NETDEVICES=y 500CONFIG_NETDEVICES=y
457CONFIG_DUMMY=m 501CONFIG_DUMMY=m
458# CONFIG_BONDING is not set 502# CONFIG_BONDING is not set
459# CONFIG_EQUALIZER is not set 503# CONFIG_EQUALIZER is not set
460# CONFIG_TUN is not set 504# CONFIG_TUN is not set
505# CONFIG_NET_SB1000 is not set
461 506
462# 507#
463# ARCnet devices 508# ARCnet devices
@@ -465,6 +510,11 @@ CONFIG_DUMMY=m
465# CONFIG_ARCNET is not set 510# CONFIG_ARCNET is not set
466 511
467# 512#
513# PHY device support
514#
515# CONFIG_PHYLIB is not set
516
517#
468# Ethernet (10 or 100Mbit) 518# Ethernet (10 or 100Mbit)
469# 519#
470CONFIG_NET_ETHERNET=y 520CONFIG_NET_ETHERNET=y
@@ -485,6 +535,7 @@ CONFIG_TULIP=m
485# CONFIG_DE4X5 is not set 535# CONFIG_DE4X5 is not set
486# CONFIG_WINBOND_840 is not set 536# CONFIG_WINBOND_840 is not set
487# CONFIG_DM9102 is not set 537# CONFIG_DM9102 is not set
538# CONFIG_ULI526X is not set
488# CONFIG_HP100 is not set 539# CONFIG_HP100 is not set
489CONFIG_NET_PCI=y 540CONFIG_NET_PCI=y
490# CONFIG_PCNET32 is not set 541# CONFIG_PCNET32 is not set
@@ -516,6 +567,7 @@ CONFIG_E1000=y
516# CONFIG_HAMACHI is not set 567# CONFIG_HAMACHI is not set
517# CONFIG_YELLOWFIN is not set 568# CONFIG_YELLOWFIN is not set
518# CONFIG_R8169 is not set 569# CONFIG_R8169 is not set
570# CONFIG_SIS190 is not set
519# CONFIG_SKGE is not set 571# CONFIG_SKGE is not set
520# CONFIG_SK98LIN is not set 572# CONFIG_SK98LIN is not set
521# CONFIG_VIA_VELOCITY is not set 573# CONFIG_VIA_VELOCITY is not set
@@ -525,6 +577,7 @@ CONFIG_TIGON3=y
525# 577#
526# Ethernet (10000 Mbit) 578# Ethernet (10000 Mbit)
527# 579#
580# CONFIG_CHELSIO_T1 is not set
528# CONFIG_IXGB is not set 581# CONFIG_IXGB is not set
529# CONFIG_S2IO is not set 582# CONFIG_S2IO is not set
530 583
@@ -549,6 +602,10 @@ CONFIG_TIGON3=y
549# CONFIG_NET_FC is not set 602# CONFIG_NET_FC is not set
550# CONFIG_SHAPER is not set 603# CONFIG_SHAPER is not set
551CONFIG_NETCONSOLE=y 604CONFIG_NETCONSOLE=y
605CONFIG_NETPOLL=y
606# CONFIG_NETPOLL_RX is not set
607# CONFIG_NETPOLL_TRAP is not set
608CONFIG_NET_POLL_CONTROLLER=y
552 609
553# 610#
554# ISDN subsystem 611# ISDN subsystem
@@ -607,9 +664,7 @@ CONFIG_GAMEPORT=m
607# CONFIG_GAMEPORT_NS558 is not set 664# CONFIG_GAMEPORT_NS558 is not set
608# CONFIG_GAMEPORT_L4 is not set 665# CONFIG_GAMEPORT_L4 is not set
609# CONFIG_GAMEPORT_EMU10K1 is not set 666# CONFIG_GAMEPORT_EMU10K1 is not set
610# CONFIG_GAMEPORT_VORTEX is not set
611# CONFIG_GAMEPORT_FM801 is not set 667# CONFIG_GAMEPORT_FM801 is not set
612# CONFIG_GAMEPORT_CS461X is not set
613 668
614# 669#
615# Character devices 670# Character devices
@@ -620,6 +675,7 @@ CONFIG_HW_CONSOLE=y
620CONFIG_SERIAL_NONSTANDARD=y 675CONFIG_SERIAL_NONSTANDARD=y
621# CONFIG_ROCKETPORT is not set 676# CONFIG_ROCKETPORT is not set
622# CONFIG_CYCLADES is not set 677# CONFIG_CYCLADES is not set
678# CONFIG_DIGIEPCA is not set
623# CONFIG_MOXA_SMARTIO is not set 679# CONFIG_MOXA_SMARTIO is not set
624# CONFIG_ISI is not set 680# CONFIG_ISI is not set
625# CONFIG_SYNCLINKMP is not set 681# CONFIG_SYNCLINKMP is not set
@@ -641,7 +697,6 @@ CONFIG_SERIAL_8250_NR_UARTS=6
641CONFIG_SERIAL_8250_EXTENDED=y 697CONFIG_SERIAL_8250_EXTENDED=y
642CONFIG_SERIAL_8250_SHARE_IRQ=y 698CONFIG_SERIAL_8250_SHARE_IRQ=y
643# CONFIG_SERIAL_8250_DETECT_IRQ is not set 699# CONFIG_SERIAL_8250_DETECT_IRQ is not set
644# CONFIG_SERIAL_8250_MULTIPORT is not set
645# CONFIG_SERIAL_8250_RSA is not set 700# CONFIG_SERIAL_8250_RSA is not set
646 701
647# 702#
@@ -650,8 +705,8 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
650CONFIG_SERIAL_CORE=y 705CONFIG_SERIAL_CORE=y
651CONFIG_SERIAL_CORE_CONSOLE=y 706CONFIG_SERIAL_CORE_CONSOLE=y
652CONFIG_SERIAL_SGI_L1_CONSOLE=y 707CONFIG_SERIAL_SGI_L1_CONSOLE=y
653CONFIG_SERIAL_SGI_IOC4=y
654# CONFIG_SERIAL_JSM is not set 708# CONFIG_SERIAL_JSM is not set
709CONFIG_SERIAL_SGI_IOC4=y
655CONFIG_UNIX98_PTYS=y 710CONFIG_UNIX98_PTYS=y
656CONFIG_LEGACY_PTYS=y 711CONFIG_LEGACY_PTYS=y
657CONFIG_LEGACY_PTY_COUNT=256 712CONFIG_LEGACY_PTY_COUNT=256
@@ -684,6 +739,8 @@ CONFIG_DRM_R128=m
684CONFIG_DRM_RADEON=m 739CONFIG_DRM_RADEON=m
685CONFIG_DRM_MGA=m 740CONFIG_DRM_MGA=m
686CONFIG_DRM_SIS=m 741CONFIG_DRM_SIS=m
742# CONFIG_DRM_VIA is not set
743# CONFIG_DRM_SAVAGE is not set
687CONFIG_RAW_DRIVER=m 744CONFIG_RAW_DRIVER=m
688CONFIG_HPET=y 745CONFIG_HPET=y
689# CONFIG_HPET_RTC_IRQ is not set 746# CONFIG_HPET_RTC_IRQ is not set
@@ -708,10 +765,21 @@ CONFIG_MMTIMER=y
708# CONFIG_W1 is not set 765# CONFIG_W1 is not set
709 766
710# 767#
768# Hardware Monitoring support
769#
770CONFIG_HWMON=y
771# CONFIG_HWMON_VID is not set
772# CONFIG_HWMON_DEBUG_CHIP is not set
773
774#
711# Misc devices 775# Misc devices
712# 776#
713 777
714# 778#
779# Multimedia Capabilities Port drivers
780#
781
782#
715# Multimedia devices 783# Multimedia devices
716# 784#
717# CONFIG_VIDEO_DEV is not set 785# CONFIG_VIDEO_DEV is not set
@@ -753,6 +821,7 @@ CONFIG_SND_PCM_OSS=m
753CONFIG_SND_SEQUENCER_OSS=y 821CONFIG_SND_SEQUENCER_OSS=y
754CONFIG_SND_VERBOSE_PRINTK=y 822CONFIG_SND_VERBOSE_PRINTK=y
755# CONFIG_SND_DEBUG is not set 823# CONFIG_SND_DEBUG is not set
824CONFIG_SND_GENERIC_DRIVER=y
756 825
757# 826#
758# Generic devices 827# Generic devices
@@ -764,11 +833,12 @@ CONFIG_SND_VIRMIDI=m
764CONFIG_SND_MTPAV=m 833CONFIG_SND_MTPAV=m
765CONFIG_SND_SERIAL_U16550=m 834CONFIG_SND_SERIAL_U16550=m
766CONFIG_SND_MPU401=m 835CONFIG_SND_MPU401=m
836CONFIG_SND_AC97_CODEC=m
837CONFIG_SND_AC97_BUS=m
767 838
768# 839#
769# PCI devices 840# PCI devices
770# 841#
771CONFIG_SND_AC97_CODEC=m
772# CONFIG_SND_ALI5451 is not set 842# CONFIG_SND_ALI5451 is not set
773# CONFIG_SND_ATIIXP is not set 843# CONFIG_SND_ATIIXP is not set
774# CONFIG_SND_ATIIXP_MODEM is not set 844# CONFIG_SND_ATIIXP_MODEM is not set
@@ -790,9 +860,10 @@ CONFIG_SND_EMU10K1=m
790# CONFIG_SND_RME96 is not set 860# CONFIG_SND_RME96 is not set
791# CONFIG_SND_RME9652 is not set 861# CONFIG_SND_RME9652 is not set
792# CONFIG_SND_HDSP is not set 862# CONFIG_SND_HDSP is not set
863# CONFIG_SND_HDSPM is not set
793# CONFIG_SND_TRIDENT is not set 864# CONFIG_SND_TRIDENT is not set
794# CONFIG_SND_YMFPCI is not set 865# CONFIG_SND_YMFPCI is not set
795# CONFIG_SND_ALS4000 is not set 866# CONFIG_SND_AD1889 is not set
796# CONFIG_SND_CMIPCI is not set 867# CONFIG_SND_CMIPCI is not set
797# CONFIG_SND_ENS1370 is not set 868# CONFIG_SND_ENS1370 is not set
798# CONFIG_SND_ENS1371 is not set 869# CONFIG_SND_ENS1371 is not set
@@ -844,6 +915,7 @@ CONFIG_USB_DEVICEFS=y
844CONFIG_USB_EHCI_HCD=m 915CONFIG_USB_EHCI_HCD=m
845# CONFIG_USB_EHCI_SPLIT_ISO is not set 916# CONFIG_USB_EHCI_SPLIT_ISO is not set
846# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 917# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
918# CONFIG_USB_ISP116X_HCD is not set
847CONFIG_USB_OHCI_HCD=m 919CONFIG_USB_OHCI_HCD=m
848# CONFIG_USB_OHCI_BIG_ENDIAN is not set 920# CONFIG_USB_OHCI_BIG_ENDIAN is not set
849CONFIG_USB_OHCI_LITTLE_ENDIAN=y 921CONFIG_USB_OHCI_LITTLE_ENDIAN=y
@@ -853,9 +925,8 @@ CONFIG_USB_UHCI_HCD=m
853# 925#
854# USB Device Class drivers 926# USB Device Class drivers
855# 927#
856# CONFIG_USB_AUDIO is not set 928# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
857# CONFIG_USB_BLUETOOTH_TTY is not set 929# CONFIG_USB_BLUETOOTH_TTY is not set
858# CONFIG_USB_MIDI is not set
859# CONFIG_USB_ACM is not set 930# CONFIG_USB_ACM is not set
860# CONFIG_USB_PRINTER is not set 931# CONFIG_USB_PRINTER is not set
861 932
@@ -888,12 +959,17 @@ CONFIG_USB_HIDINPUT=y
888# CONFIG_USB_MOUSE is not set 959# CONFIG_USB_MOUSE is not set
889# CONFIG_USB_AIPTEK is not set 960# CONFIG_USB_AIPTEK is not set
890# CONFIG_USB_WACOM is not set 961# CONFIG_USB_WACOM is not set
962# CONFIG_USB_ACECAD is not set
891# CONFIG_USB_KBTAB is not set 963# CONFIG_USB_KBTAB is not set
892# CONFIG_USB_POWERMATE is not set 964# CONFIG_USB_POWERMATE is not set
893# CONFIG_USB_MTOUCH is not set 965# CONFIG_USB_MTOUCH is not set
966# CONFIG_USB_ITMTOUCH is not set
894# CONFIG_USB_EGALAX is not set 967# CONFIG_USB_EGALAX is not set
968# CONFIG_USB_YEALINK is not set
895# CONFIG_USB_XPAD is not set 969# CONFIG_USB_XPAD is not set
896# CONFIG_USB_ATI_REMOTE is not set 970# CONFIG_USB_ATI_REMOTE is not set
971# CONFIG_USB_KEYSPAN_REMOTE is not set
972# CONFIG_USB_APPLETOUCH is not set
897 973
898# 974#
899# USB Imaging devices 975# USB Imaging devices
@@ -918,7 +994,7 @@ CONFIG_USB_HIDINPUT=y
918# CONFIG_USB_PEGASUS is not set 994# CONFIG_USB_PEGASUS is not set
919# CONFIG_USB_RTL8150 is not set 995# CONFIG_USB_RTL8150 is not set
920# CONFIG_USB_USBNET is not set 996# CONFIG_USB_USBNET is not set
921CONFIG_USB_MON=m 997CONFIG_USB_MON=y
922 998
923# 999#
924# USB port drivers 1000# USB port drivers
@@ -944,10 +1020,11 @@ CONFIG_USB_MON=m
944# CONFIG_USB_PHIDGETSERVO is not set 1020# CONFIG_USB_PHIDGETSERVO is not set
945# CONFIG_USB_IDMOUSE is not set 1021# CONFIG_USB_IDMOUSE is not set
946# CONFIG_USB_SISUSBVGA is not set 1022# CONFIG_USB_SISUSBVGA is not set
1023# CONFIG_USB_LD is not set
947# CONFIG_USB_TEST is not set 1024# CONFIG_USB_TEST is not set
948 1025
949# 1026#
950# USB ATM/DSL drivers 1027# USB DSL modem support
951# 1028#
952 1029
953# 1030#
@@ -964,6 +1041,8 @@ CONFIG_USB_MON=m
964# InfiniBand support 1041# InfiniBand support
965# 1042#
966CONFIG_INFINIBAND=m 1043CONFIG_INFINIBAND=m
1044# CONFIG_INFINIBAND_USER_MAD is not set
1045# CONFIG_INFINIBAND_USER_ACCESS is not set
967CONFIG_INFINIBAND_MTHCA=m 1046CONFIG_INFINIBAND_MTHCA=m
968# CONFIG_INFINIBAND_MTHCA_DEBUG is not set 1047# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
969CONFIG_INFINIBAND_IPOIB=m 1048CONFIG_INFINIBAND_IPOIB=m
@@ -981,6 +1060,7 @@ CONFIG_EXT2_FS=y
981CONFIG_EXT2_FS_XATTR=y 1060CONFIG_EXT2_FS_XATTR=y
982CONFIG_EXT2_FS_POSIX_ACL=y 1061CONFIG_EXT2_FS_POSIX_ACL=y
983CONFIG_EXT2_FS_SECURITY=y 1062CONFIG_EXT2_FS_SECURITY=y
1063# CONFIG_EXT2_FS_XIP is not set
984CONFIG_EXT3_FS=y 1064CONFIG_EXT3_FS=y
985CONFIG_EXT3_FS_XATTR=y 1065CONFIG_EXT3_FS_XATTR=y
986CONFIG_EXT3_FS_POSIX_ACL=y 1066CONFIG_EXT3_FS_POSIX_ACL=y
@@ -996,22 +1076,20 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
996CONFIG_REISERFS_FS_SECURITY=y 1076CONFIG_REISERFS_FS_SECURITY=y
997# CONFIG_JFS_FS is not set 1077# CONFIG_JFS_FS is not set
998CONFIG_FS_POSIX_ACL=y 1078CONFIG_FS_POSIX_ACL=y
999
1000#
1001# XFS support
1002#
1003CONFIG_XFS_FS=y 1079CONFIG_XFS_FS=y
1004CONFIG_XFS_EXPORT=y 1080CONFIG_XFS_EXPORT=y
1005# CONFIG_XFS_RT is not set
1006# CONFIG_XFS_QUOTA is not set 1081# CONFIG_XFS_QUOTA is not set
1007# CONFIG_XFS_SECURITY is not set 1082# CONFIG_XFS_SECURITY is not set
1008# CONFIG_XFS_POSIX_ACL is not set 1083# CONFIG_XFS_POSIX_ACL is not set
1084# CONFIG_XFS_RT is not set
1009# CONFIG_MINIX_FS is not set 1085# CONFIG_MINIX_FS is not set
1010# CONFIG_ROMFS_FS is not set 1086# CONFIG_ROMFS_FS is not set
1087CONFIG_INOTIFY=y
1011# CONFIG_QUOTA is not set 1088# CONFIG_QUOTA is not set
1012CONFIG_DNOTIFY=y 1089CONFIG_DNOTIFY=y
1013CONFIG_AUTOFS_FS=y 1090CONFIG_AUTOFS_FS=y
1014CONFIG_AUTOFS4_FS=y 1091CONFIG_AUTOFS4_FS=y
1092# CONFIG_FUSE_FS is not set
1015 1093
1016# 1094#
1017# CD-ROM/DVD Filesystems 1095# CD-ROM/DVD Filesystems
@@ -1040,14 +1118,11 @@ CONFIG_NTFS_FS=m
1040CONFIG_PROC_FS=y 1118CONFIG_PROC_FS=y
1041CONFIG_PROC_KCORE=y 1119CONFIG_PROC_KCORE=y
1042CONFIG_SYSFS=y 1120CONFIG_SYSFS=y
1043# CONFIG_DEVFS_FS is not set
1044# CONFIG_DEVPTS_FS_XATTR is not set
1045CONFIG_TMPFS=y 1121CONFIG_TMPFS=y
1046CONFIG_TMPFS_XATTR=y
1047CONFIG_TMPFS_SECURITY=y
1048CONFIG_HUGETLBFS=y 1122CONFIG_HUGETLBFS=y
1049CONFIG_HUGETLB_PAGE=y 1123CONFIG_HUGETLB_PAGE=y
1050CONFIG_RAMFS=y 1124CONFIG_RAMFS=y
1125# CONFIG_RELAYFS_FS is not set
1051 1126
1052# 1127#
1053# Miscellaneous filesystems 1128# Miscellaneous filesystems
@@ -1071,15 +1146,18 @@ CONFIG_RAMFS=y
1071# 1146#
1072CONFIG_NFS_FS=m 1147CONFIG_NFS_FS=m
1073CONFIG_NFS_V3=y 1148CONFIG_NFS_V3=y
1149# CONFIG_NFS_V3_ACL is not set
1074CONFIG_NFS_V4=y 1150CONFIG_NFS_V4=y
1075CONFIG_NFS_DIRECTIO=y 1151CONFIG_NFS_DIRECTIO=y
1076CONFIG_NFSD=m 1152CONFIG_NFSD=m
1077CONFIG_NFSD_V3=y 1153CONFIG_NFSD_V3=y
1154# CONFIG_NFSD_V3_ACL is not set
1078CONFIG_NFSD_V4=y 1155CONFIG_NFSD_V4=y
1079CONFIG_NFSD_TCP=y 1156CONFIG_NFSD_TCP=y
1080CONFIG_LOCKD=m 1157CONFIG_LOCKD=m
1081CONFIG_LOCKD_V4=y 1158CONFIG_LOCKD_V4=y
1082CONFIG_EXPORTFS=y 1159CONFIG_EXPORTFS=y
1160CONFIG_NFS_COMMON=y
1083CONFIG_SUNRPC=m 1161CONFIG_SUNRPC=m
1084CONFIG_SUNRPC_GSS=m 1162CONFIG_SUNRPC_GSS=m
1085CONFIG_RPCSEC_GSS_KRB5=m 1163CONFIG_RPCSEC_GSS_KRB5=m
@@ -1094,6 +1172,7 @@ CONFIG_CIFS=m
1094# CONFIG_NCP_FS is not set 1172# CONFIG_NCP_FS is not set
1095# CONFIG_CODA_FS is not set 1173# CONFIG_CODA_FS is not set
1096# CONFIG_AFS_FS is not set 1174# CONFIG_AFS_FS is not set
1175# CONFIG_9P_FS is not set
1097 1176
1098# 1177#
1099# Partition Types 1178# Partition Types
@@ -1163,10 +1242,12 @@ CONFIG_NLS_UTF8=m
1163# Library routines 1242# Library routines
1164# 1243#
1165# CONFIG_CRC_CCITT is not set 1244# CONFIG_CRC_CCITT is not set
1245# CONFIG_CRC16 is not set
1166CONFIG_CRC32=y 1246CONFIG_CRC32=y
1167# CONFIG_LIBCRC32C is not set 1247# CONFIG_LIBCRC32C is not set
1168CONFIG_GENERIC_HARDIRQS=y 1248CONFIG_GENERIC_HARDIRQS=y
1169CONFIG_GENERIC_IRQ_PROBE=y 1249CONFIG_GENERIC_IRQ_PROBE=y
1250CONFIG_GENERIC_PENDING_IRQ=y
1170 1251
1171# 1252#
1172# HP Simulator drivers 1253# HP Simulator drivers
@@ -1187,6 +1268,7 @@ CONFIG_GENERIC_IRQ_PROBE=y
1187CONFIG_DEBUG_KERNEL=y 1268CONFIG_DEBUG_KERNEL=y
1188CONFIG_MAGIC_SYSRQ=y 1269CONFIG_MAGIC_SYSRQ=y
1189CONFIG_LOG_BUF_SHIFT=20 1270CONFIG_LOG_BUF_SHIFT=20
1271CONFIG_DETECT_SOFTLOCKUP=y
1190# CONFIG_SCHEDSTATS is not set 1272# CONFIG_SCHEDSTATS is not set
1191# CONFIG_DEBUG_SLAB is not set 1273# CONFIG_DEBUG_SLAB is not set
1192# CONFIG_DEBUG_SPINLOCK is not set 1274# CONFIG_DEBUG_SPINLOCK is not set
@@ -1194,6 +1276,7 @@ CONFIG_LOG_BUF_SHIFT=20
1194# CONFIG_DEBUG_KOBJECT is not set 1276# CONFIG_DEBUG_KOBJECT is not set
1195# CONFIG_DEBUG_INFO is not set 1277# CONFIG_DEBUG_INFO is not set
1196# CONFIG_DEBUG_FS is not set 1278# CONFIG_DEBUG_FS is not set
1279# CONFIG_KPROBES is not set
1197CONFIG_IA64_GRANULE_16MB=y 1280CONFIG_IA64_GRANULE_16MB=y
1198# CONFIG_IA64_GRANULE_64MB is not set 1281# CONFIG_IA64_GRANULE_64MB is not set
1199# CONFIG_IA64_PRINT_HAZARDS is not set 1282# CONFIG_IA64_PRINT_HAZARDS is not set
@@ -1215,7 +1298,7 @@ CONFIG_CRYPTO=y
1215# CONFIG_CRYPTO_HMAC is not set 1298# CONFIG_CRYPTO_HMAC is not set
1216# CONFIG_CRYPTO_NULL is not set 1299# CONFIG_CRYPTO_NULL is not set
1217# CONFIG_CRYPTO_MD4 is not set 1300# CONFIG_CRYPTO_MD4 is not set
1218CONFIG_CRYPTO_MD5=m 1301CONFIG_CRYPTO_MD5=y
1219# CONFIG_CRYPTO_SHA1 is not set 1302# CONFIG_CRYPTO_SHA1 is not set
1220# CONFIG_CRYPTO_SHA256 is not set 1303# CONFIG_CRYPTO_SHA256 is not set
1221# CONFIG_CRYPTO_SHA512 is not set 1304# CONFIG_CRYPTO_SHA512 is not set
diff --git a/arch/ia64/hp/common/hwsw_iommu.c b/arch/ia64/hp/common/hwsw_iommu.c
index 80f8ef013939..a5a5637507be 100644
--- a/arch/ia64/hp/common/hwsw_iommu.c
+++ b/arch/ia64/hp/common/hwsw_iommu.c
@@ -17,7 +17,7 @@
17#include <asm/machvec.h> 17#include <asm/machvec.h>
18 18
19/* swiotlb declarations & definitions: */ 19/* swiotlb declarations & definitions: */
20extern void swiotlb_init_with_default_size (size_t size); 20extern int swiotlb_late_init_with_default_size (size_t size);
21extern ia64_mv_dma_alloc_coherent swiotlb_alloc_coherent; 21extern ia64_mv_dma_alloc_coherent swiotlb_alloc_coherent;
22extern ia64_mv_dma_free_coherent swiotlb_free_coherent; 22extern ia64_mv_dma_free_coherent swiotlb_free_coherent;
23extern ia64_mv_dma_map_single swiotlb_map_single; 23extern ia64_mv_dma_map_single swiotlb_map_single;
@@ -67,11 +67,20 @@ void
67hwsw_init (void) 67hwsw_init (void)
68{ 68{
69 /* default to a smallish 2MB sw I/O TLB */ 69 /* default to a smallish 2MB sw I/O TLB */
70 swiotlb_init_with_default_size (2 * (1<<20)); 70 if (swiotlb_late_init_with_default_size (2 * (1<<20)) != 0) {
71#ifdef CONFIG_IA64_GENERIC
72 /* Better to have normal DMA than panic */
73 printk(KERN_WARNING "%s: Failed to initialize software I/O TLB,"
74 " reverting to hpzx1 platform vector\n", __FUNCTION__);
75 machvec_init("hpzx1");
76#else
77 panic("Unable to initialize software I/O TLB services");
78#endif
79 }
71} 80}
72 81
73void * 82void *
74hwsw_alloc_coherent (struct device *dev, size_t size, dma_addr_t *dma_handle, int flags) 83hwsw_alloc_coherent (struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flags)
75{ 84{
76 if (use_swiotlb(dev)) 85 if (use_swiotlb(dev))
77 return swiotlb_alloc_coherent(dev, size, dma_handle, flags); 86 return swiotlb_alloc_coherent(dev, size, dma_handle, flags);
diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c
index 11957598a8b9..bdccd0b1eb60 100644
--- a/arch/ia64/hp/common/sba_iommu.c
+++ b/arch/ia64/hp/common/sba_iommu.c
@@ -1076,7 +1076,7 @@ void sba_unmap_single(struct device *dev, dma_addr_t iova, size_t size, int dir)
1076 * See Documentation/DMA-mapping.txt 1076 * See Documentation/DMA-mapping.txt
1077 */ 1077 */
1078void * 1078void *
1079sba_alloc_coherent (struct device *dev, size_t size, dma_addr_t *dma_handle, int flags) 1079sba_alloc_coherent (struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flags)
1080{ 1080{
1081 struct ioc *ioc; 1081 struct ioc *ioc;
1082 void *addr; 1082 void *addr;
@@ -2028,9 +2028,40 @@ static struct acpi_driver acpi_sba_ioc_driver = {
2028static int __init 2028static int __init
2029sba_init(void) 2029sba_init(void)
2030{ 2030{
2031 if (!ia64_platform_is("hpzx1") && !ia64_platform_is("hpzx1_swiotlb"))
2032 return 0;
2033
2031 acpi_bus_register_driver(&acpi_sba_ioc_driver); 2034 acpi_bus_register_driver(&acpi_sba_ioc_driver);
2032 if (!ioc_list) 2035 if (!ioc_list) {
2036#ifdef CONFIG_IA64_GENERIC
2037 extern int swiotlb_late_init_with_default_size (size_t size);
2038
2039 /*
2040 * If we didn't find something sba_iommu can claim, we
2041 * need to setup the swiotlb and switch to the dig machvec.
2042 */
2043 if (swiotlb_late_init_with_default_size(64 * (1<<20)) != 0)
2044 panic("Unable to find SBA IOMMU or initialize "
2045 "software I/O TLB: Try machvec=dig boot option");
2046 machvec_init("dig");
2047#else
2048 panic("Unable to find SBA IOMMU: Try a generic or DIG kernel");
2049#endif
2033 return 0; 2050 return 0;
2051 }
2052
2053#if defined(CONFIG_IA64_GENERIC) || defined(CONFIG_IA64_HP_ZX1_SWIOTLB)
2054 /*
2055 * hpzx1_swiotlb needs to have a fairly small swiotlb bounce
2056 * buffer setup to support devices with smaller DMA masks than
2057 * sba_iommu can handle.
2058 */
2059 if (ia64_platform_is("hpzx1_swiotlb")) {
2060 extern void hwsw_init(void);
2061
2062 hwsw_init();
2063 }
2064#endif
2034 2065
2035#ifdef CONFIG_PCI 2066#ifdef CONFIG_PCI
2036 { 2067 {
@@ -2048,18 +2079,6 @@ sba_init(void)
2048 2079
2049subsys_initcall(sba_init); /* must be initialized after ACPI etc., but before any drivers... */ 2080subsys_initcall(sba_init); /* must be initialized after ACPI etc., but before any drivers... */
2050 2081
2051extern void dig_setup(char**);
2052/*
2053 * MAX_DMA_ADDRESS needs to be setup prior to paging_init to do any good,
2054 * so we use the platform_setup hook to fix it up.
2055 */
2056void __init
2057sba_setup(char **cmdline_p)
2058{
2059 MAX_DMA_ADDRESS = ~0UL;
2060 dig_setup(cmdline_p);
2061}
2062
2063static int __init 2082static int __init
2064nosbagart(char *str) 2083nosbagart(char *str)
2065{ 2084{
diff --git a/arch/ia64/hp/sim/simscsi.c b/arch/ia64/hp/sim/simscsi.c
index a18983a3c934..a3fe97531134 100644
--- a/arch/ia64/hp/sim/simscsi.c
+++ b/arch/ia64/hp/sim/simscsi.c
@@ -205,10 +205,11 @@ simscsi_get_disk_size (int fd)
205 char buf[512]; 205 char buf[512];
206 206
207 /* 207 /*
208 * This is a bit kludgey: the simulator doesn't provide a direct way of determining 208 * This is a bit kludgey: the simulator doesn't provide a
209 * the disk size, so we do a binary search, assuming a maximum disk size of 4GB. 209 * direct way of determining the disk size, so we do a binary
210 * search, assuming a maximum disk size of 128GB.
210 */ 211 */
211 for (bit = (4UL << 30)/512; bit != 0; bit >>= 1) { 212 for (bit = (128UL << 30)/512; bit != 0; bit >>= 1) {
212 req.addr = __pa(&buf); 213 req.addr = __pa(&buf);
213 req.len = sizeof(buf); 214 req.len = sizeof(buf);
214 ia64_ssc(fd, 1, __pa(&req), ((sectors | bit) - 1)*512, SSC_READ); 215 ia64_ssc(fd, 1, __pa(&req), ((sectors | bit) - 1)*512, SSC_READ);
@@ -225,8 +226,10 @@ simscsi_readwrite10 (struct scsi_cmnd *sc, int mode)
225{ 226{
226 unsigned long offset; 227 unsigned long offset;
227 228
228 offset = ( (sc->cmnd[2] << 24) | (sc->cmnd[3] << 16) 229 offset = (((unsigned long)sc->cmnd[2] << 24)
229 | (sc->cmnd[4] << 8) | (sc->cmnd[5] << 0))*512; 230 | ((unsigned long)sc->cmnd[3] << 16)
231 | ((unsigned long)sc->cmnd[4] << 8)
232 | ((unsigned long)sc->cmnd[5] << 0))*512UL;
230 if (sc->use_sg > 0) 233 if (sc->use_sg > 0)
231 simscsi_sg_readwrite(sc, mode, offset); 234 simscsi_sg_readwrite(sc, mode, offset);
232 else 235 else
diff --git a/arch/ia64/ia32/sys_ia32.c b/arch/ia64/ia32/sys_ia32.c
index 3fa67ecebc83..dc282710421a 100644
--- a/arch/ia64/ia32/sys_ia32.c
+++ b/arch/ia64/ia32/sys_ia32.c
@@ -36,6 +36,7 @@
36#include <linux/uio.h> 36#include <linux/uio.h>
37#include <linux/nfs_fs.h> 37#include <linux/nfs_fs.h>
38#include <linux/quota.h> 38#include <linux/quota.h>
39#include <linux/syscalls.h>
39#include <linux/sunrpc/svc.h> 40#include <linux/sunrpc/svc.h>
40#include <linux/nfsd/nfsd.h> 41#include <linux/nfsd/nfsd.h>
41#include <linux/nfsd/cache.h> 42#include <linux/nfsd/cache.h>
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index 7e926471e4ec..9ad94ddf6687 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -838,7 +838,7 @@ EXPORT_SYMBOL(acpi_unmap_lsapic);
838#endif /* CONFIG_ACPI_HOTPLUG_CPU */ 838#endif /* CONFIG_ACPI_HOTPLUG_CPU */
839 839
840#ifdef CONFIG_ACPI_NUMA 840#ifdef CONFIG_ACPI_NUMA
841acpi_status __devinit 841static acpi_status __devinit
842acpi_map_iosapic(acpi_handle handle, u32 depth, void *context, void **ret) 842acpi_map_iosapic(acpi_handle handle, u32 depth, void *context, void **ret)
843{ 843{
844 struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; 844 struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
@@ -890,7 +890,16 @@ acpi_map_iosapic(acpi_handle handle, u32 depth, void *context, void **ret)
890 map_iosapic_to_node(gsi_base, node); 890 map_iosapic_to_node(gsi_base, node);
891 return AE_OK; 891 return AE_OK;
892} 892}
893#endif /* CONFIG_NUMA */ 893
894static int __init
895acpi_map_iosapics (void)
896{
897 acpi_get_devices(NULL, acpi_map_iosapic, NULL, NULL);
898 return 0;
899}
900
901fs_initcall(acpi_map_iosapics);
902#endif /* CONFIG_ACPI_NUMA */
894 903
895int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base) 904int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base)
896{ 905{
diff --git a/arch/ia64/kernel/cyclone.c b/arch/ia64/kernel/cyclone.c
index 768c7e46957c..6ade3790ce07 100644
--- a/arch/ia64/kernel/cyclone.c
+++ b/arch/ia64/kernel/cyclone.c
@@ -2,6 +2,7 @@
2#include <linux/smp.h> 2#include <linux/smp.h>
3#include <linux/time.h> 3#include <linux/time.h>
4#include <linux/errno.h> 4#include <linux/errno.h>
5#include <linux/timex.h>
5#include <asm/io.h> 6#include <asm/io.h>
6 7
7/* IBM Summit (EXA) Cyclone counter code*/ 8/* IBM Summit (EXA) Cyclone counter code*/
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index 179f230816ed..f72ea6aebcb1 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -239,57 +239,30 @@ is_available_memory (efi_memory_desc_t *md)
239 return 0; 239 return 0;
240} 240}
241 241
242/* 242typedef struct kern_memdesc {
243 * Trim descriptor MD so its starts at address START_ADDR. If the descriptor covers 243 u64 attribute;
244 * memory that is normally available to the kernel, issue a warning that some memory 244 u64 start;
245 * is being ignored. 245 u64 num_pages;
246 */ 246} kern_memdesc_t;
247static void
248trim_bottom (efi_memory_desc_t *md, u64 start_addr)
249{
250 u64 num_skipped_pages;
251 247
252 if (md->phys_addr >= start_addr || !md->num_pages) 248static kern_memdesc_t *kern_memmap;
253 return;
254
255 num_skipped_pages = (start_addr - md->phys_addr) >> EFI_PAGE_SHIFT;
256 if (num_skipped_pages > md->num_pages)
257 num_skipped_pages = md->num_pages;
258
259 if (is_available_memory(md))
260 printk(KERN_NOTICE "efi.%s: ignoring %luKB of memory at 0x%lx due to granule hole "
261 "at 0x%lx\n", __FUNCTION__,
262 (num_skipped_pages << EFI_PAGE_SHIFT) >> 10,
263 md->phys_addr, start_addr - IA64_GRANULE_SIZE);
264 /*
265 * NOTE: Don't set md->phys_addr to START_ADDR because that could cause the memory
266 * descriptor list to become unsorted. In such a case, md->num_pages will be
267 * zero, so the Right Thing will happen.
268 */
269 md->phys_addr += num_skipped_pages << EFI_PAGE_SHIFT;
270 md->num_pages -= num_skipped_pages;
271}
272 249
273static void 250static void
274trim_top (efi_memory_desc_t *md, u64 end_addr) 251walk (efi_freemem_callback_t callback, void *arg, u64 attr)
275{ 252{
276 u64 num_dropped_pages, md_end_addr; 253 kern_memdesc_t *k;
277 254 u64 start, end, voff;
278 md_end_addr = md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT);
279
280 if (md_end_addr <= end_addr || !md->num_pages)
281 return;
282 255
283 num_dropped_pages = (md_end_addr - end_addr) >> EFI_PAGE_SHIFT; 256 voff = (attr == EFI_MEMORY_WB) ? PAGE_OFFSET : __IA64_UNCACHED_OFFSET;
284 if (num_dropped_pages > md->num_pages) 257 for (k = kern_memmap; k->start != ~0UL; k++) {
285 num_dropped_pages = md->num_pages; 258 if (k->attribute != attr)
286 259 continue;
287 if (is_available_memory(md)) 260 start = PAGE_ALIGN(k->start);
288 printk(KERN_NOTICE "efi.%s: ignoring %luKB of memory at 0x%lx due to granule hole " 261 end = (k->start + (k->num_pages << EFI_PAGE_SHIFT)) & PAGE_MASK;
289 "at 0x%lx\n", __FUNCTION__, 262 if (start < end)
290 (num_dropped_pages << EFI_PAGE_SHIFT) >> 10, 263 if ((*callback)(start + voff, end + voff, arg) < 0)
291 md->phys_addr, end_addr); 264 return;
292 md->num_pages -= num_dropped_pages; 265 }
293} 266}
294 267
295/* 268/*
@@ -299,148 +272,19 @@ trim_top (efi_memory_desc_t *md, u64 end_addr)
299void 272void
300efi_memmap_walk (efi_freemem_callback_t callback, void *arg) 273efi_memmap_walk (efi_freemem_callback_t callback, void *arg)
301{ 274{
302 int prev_valid = 0; 275 walk(callback, arg, EFI_MEMORY_WB);
303 struct range {
304 u64 start;
305 u64 end;
306 } prev, curr;
307 void *efi_map_start, *efi_map_end, *p, *q;
308 efi_memory_desc_t *md, *check_md;
309 u64 efi_desc_size, start, end, granule_addr, last_granule_addr, first_non_wb_addr = 0;
310 unsigned long total_mem = 0;
311
312 efi_map_start = __va(ia64_boot_param->efi_memmap);
313 efi_map_end = efi_map_start + ia64_boot_param->efi_memmap_size;
314 efi_desc_size = ia64_boot_param->efi_memdesc_size;
315
316 for (p = efi_map_start; p < efi_map_end; p += efi_desc_size) {
317 md = p;
318
319 /* skip over non-WB memory descriptors; that's all we're interested in... */
320 if (!(md->attribute & EFI_MEMORY_WB))
321 continue;
322
323 /*
324 * granule_addr is the base of md's first granule.
325 * [granule_addr - first_non_wb_addr) is guaranteed to
326 * be contiguous WB memory.
327 */
328 granule_addr = GRANULEROUNDDOWN(md->phys_addr);
329 first_non_wb_addr = max(first_non_wb_addr, granule_addr);
330
331 if (first_non_wb_addr < md->phys_addr) {
332 trim_bottom(md, granule_addr + IA64_GRANULE_SIZE);
333 granule_addr = GRANULEROUNDDOWN(md->phys_addr);
334 first_non_wb_addr = max(first_non_wb_addr, granule_addr);
335 }
336
337 for (q = p; q < efi_map_end; q += efi_desc_size) {
338 check_md = q;
339
340 if ((check_md->attribute & EFI_MEMORY_WB) &&
341 (check_md->phys_addr == first_non_wb_addr))
342 first_non_wb_addr += check_md->num_pages << EFI_PAGE_SHIFT;
343 else
344 break; /* non-WB or hole */
345 }
346
347 last_granule_addr = GRANULEROUNDDOWN(first_non_wb_addr);
348 if (last_granule_addr < md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT))
349 trim_top(md, last_granule_addr);
350
351 if (is_available_memory(md)) {
352 if (md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT) >= max_addr) {
353 if (md->phys_addr >= max_addr)
354 continue;
355 md->num_pages = (max_addr - md->phys_addr) >> EFI_PAGE_SHIFT;
356 first_non_wb_addr = max_addr;
357 }
358
359 if (total_mem >= mem_limit)
360 continue;
361
362 if (total_mem + (md->num_pages << EFI_PAGE_SHIFT) > mem_limit) {
363 unsigned long limit_addr = md->phys_addr;
364
365 limit_addr += mem_limit - total_mem;
366 limit_addr = GRANULEROUNDDOWN(limit_addr);
367
368 if (md->phys_addr > limit_addr)
369 continue;
370
371 md->num_pages = (limit_addr - md->phys_addr) >>
372 EFI_PAGE_SHIFT;
373 first_non_wb_addr = max_addr = md->phys_addr +
374 (md->num_pages << EFI_PAGE_SHIFT);
375 }
376 total_mem += (md->num_pages << EFI_PAGE_SHIFT);
377
378 if (md->num_pages == 0)
379 continue;
380
381 curr.start = PAGE_OFFSET + md->phys_addr;
382 curr.end = curr.start + (md->num_pages << EFI_PAGE_SHIFT);
383
384 if (!prev_valid) {
385 prev = curr;
386 prev_valid = 1;
387 } else {
388 if (curr.start < prev.start)
389 printk(KERN_ERR "Oops: EFI memory table not ordered!\n");
390
391 if (prev.end == curr.start) {
392 /* merge two consecutive memory ranges */
393 prev.end = curr.end;
394 } else {
395 start = PAGE_ALIGN(prev.start);
396 end = prev.end & PAGE_MASK;
397 if ((end > start) && (*callback)(start, end, arg) < 0)
398 return;
399 prev = curr;
400 }
401 }
402 }
403 }
404 if (prev_valid) {
405 start = PAGE_ALIGN(prev.start);
406 end = prev.end & PAGE_MASK;
407 if (end > start)
408 (*callback)(start, end, arg);
409 }
410} 276}
411 277
412/* 278/*
413 * Walk the EFI memory map to pull out leftover pages in the lower 279 * Walks the EFI memory map and calls CALLBACK once for each EFI memory descriptor that
414 * memory regions which do not end up in the regular memory map and 280 * has memory that is available for uncached allocator.
415 * stick them into the uncached allocator
416 *
417 * The regular walk function is significantly more complex than the
418 * uncached walk which means it really doesn't make sense to try and
419 * marge the two.
420 */ 281 */
421void __init 282void
422efi_memmap_walk_uc (efi_freemem_callback_t callback) 283efi_memmap_walk_uc (efi_freemem_callback_t callback, void *arg)
423{ 284{
424 void *efi_map_start, *efi_map_end, *p; 285 walk(callback, arg, EFI_MEMORY_UC);
425 efi_memory_desc_t *md;
426 u64 efi_desc_size, start, end;
427
428 efi_map_start = __va(ia64_boot_param->efi_memmap);
429 efi_map_end = efi_map_start + ia64_boot_param->efi_memmap_size;
430 efi_desc_size = ia64_boot_param->efi_memdesc_size;
431
432 for (p = efi_map_start; p < efi_map_end; p += efi_desc_size) {
433 md = p;
434 if (md->attribute == EFI_MEMORY_UC) {
435 start = PAGE_ALIGN(md->phys_addr);
436 end = PAGE_ALIGN((md->phys_addr+(md->num_pages << EFI_PAGE_SHIFT)) & PAGE_MASK);
437 if ((*callback)(start, end, NULL) < 0)
438 return;
439 }
440 }
441} 286}
442 287
443
444/* 288/*
445 * Look for the PAL_CODE region reported by EFI and maps it using an 289 * Look for the PAL_CODE region reported by EFI and maps it using an
446 * ITR to enable safe PAL calls in virtual mode. See IA-64 Processor 290 * ITR to enable safe PAL calls in virtual mode. See IA-64 Processor
@@ -862,3 +706,307 @@ efi_uart_console_only(void)
862 printk(KERN_ERR "Malformed %s value\n", name); 706 printk(KERN_ERR "Malformed %s value\n", name);
863 return 0; 707 return 0;
864} 708}
709
710#define efi_md_size(md) (md->num_pages << EFI_PAGE_SHIFT)
711
712static inline u64
713kmd_end(kern_memdesc_t *kmd)
714{
715 return (kmd->start + (kmd->num_pages << EFI_PAGE_SHIFT));
716}
717
718static inline u64
719efi_md_end(efi_memory_desc_t *md)
720{
721 return (md->phys_addr + efi_md_size(md));
722}
723
724static inline int
725efi_wb(efi_memory_desc_t *md)
726{
727 return (md->attribute & EFI_MEMORY_WB);
728}
729
730static inline int
731efi_uc(efi_memory_desc_t *md)
732{
733 return (md->attribute & EFI_MEMORY_UC);
734}
735
736/*
737 * Look for the first granule aligned memory descriptor memory
738 * that is big enough to hold EFI memory map. Make sure this
739 * descriptor is atleast granule sized so it does not get trimmed
740 */
741struct kern_memdesc *
742find_memmap_space (void)
743{
744 u64 contig_low=0, contig_high=0;
745 u64 as = 0, ae;
746 void *efi_map_start, *efi_map_end, *p, *q;
747 efi_memory_desc_t *md, *pmd = NULL, *check_md;
748 u64 space_needed, efi_desc_size;
749 unsigned long total_mem = 0;
750
751 efi_map_start = __va(ia64_boot_param->efi_memmap);
752 efi_map_end = efi_map_start + ia64_boot_param->efi_memmap_size;
753 efi_desc_size = ia64_boot_param->efi_memdesc_size;
754
755 /*
756 * Worst case: we need 3 kernel descriptors for each efi descriptor
757 * (if every entry has a WB part in the middle, and UC head and tail),
758 * plus one for the end marker.
759 */
760 space_needed = sizeof(kern_memdesc_t) *
761 (3 * (ia64_boot_param->efi_memmap_size/efi_desc_size) + 1);
762
763 for (p = efi_map_start; p < efi_map_end; pmd = md, p += efi_desc_size) {
764 md = p;
765 if (!efi_wb(md)) {
766 continue;
767 }
768 if (pmd == NULL || !efi_wb(pmd) || efi_md_end(pmd) != md->phys_addr) {
769 contig_low = GRANULEROUNDUP(md->phys_addr);
770 contig_high = efi_md_end(md);
771 for (q = p + efi_desc_size; q < efi_map_end; q += efi_desc_size) {
772 check_md = q;
773 if (!efi_wb(check_md))
774 break;
775 if (contig_high != check_md->phys_addr)
776 break;
777 contig_high = efi_md_end(check_md);
778 }
779 contig_high = GRANULEROUNDDOWN(contig_high);
780 }
781 if (!is_available_memory(md) || md->type == EFI_LOADER_DATA)
782 continue;
783
784 /* Round ends inward to granule boundaries */
785 as = max(contig_low, md->phys_addr);
786 ae = min(contig_high, efi_md_end(md));
787
788 /* keep within max_addr= command line arg */
789 ae = min(ae, max_addr);
790 if (ae <= as)
791 continue;
792
793 /* avoid going over mem= command line arg */
794 if (total_mem + (ae - as) > mem_limit)
795 ae -= total_mem + (ae - as) - mem_limit;
796
797 if (ae <= as)
798 continue;
799
800 if (ae - as > space_needed)
801 break;
802 }
803 if (p >= efi_map_end)
804 panic("Can't allocate space for kernel memory descriptors");
805
806 return __va(as);
807}
808
809/*
810 * Walk the EFI memory map and gather all memory available for kernel
811 * to use. We can allocate partial granules only if the unavailable
812 * parts exist, and are WB.
813 */
814void
815efi_memmap_init(unsigned long *s, unsigned long *e)
816{
817 struct kern_memdesc *k, *prev = 0;
818 u64 contig_low=0, contig_high=0;
819 u64 as, ae, lim;
820 void *efi_map_start, *efi_map_end, *p, *q;
821 efi_memory_desc_t *md, *pmd = NULL, *check_md;
822 u64 efi_desc_size;
823 unsigned long total_mem = 0;
824
825 k = kern_memmap = find_memmap_space();
826
827 efi_map_start = __va(ia64_boot_param->efi_memmap);
828 efi_map_end = efi_map_start + ia64_boot_param->efi_memmap_size;
829 efi_desc_size = ia64_boot_param->efi_memdesc_size;
830
831 for (p = efi_map_start; p < efi_map_end; pmd = md, p += efi_desc_size) {
832 md = p;
833 if (!efi_wb(md)) {
834 if (efi_uc(md) && (md->type == EFI_CONVENTIONAL_MEMORY ||
835 md->type == EFI_BOOT_SERVICES_DATA)) {
836 k->attribute = EFI_MEMORY_UC;
837 k->start = md->phys_addr;
838 k->num_pages = md->num_pages;
839 k++;
840 }
841 continue;
842 }
843 if (pmd == NULL || !efi_wb(pmd) || efi_md_end(pmd) != md->phys_addr) {
844 contig_low = GRANULEROUNDUP(md->phys_addr);
845 contig_high = efi_md_end(md);
846 for (q = p + efi_desc_size; q < efi_map_end; q += efi_desc_size) {
847 check_md = q;
848 if (!efi_wb(check_md))
849 break;
850 if (contig_high != check_md->phys_addr)
851 break;
852 contig_high = efi_md_end(check_md);
853 }
854 contig_high = GRANULEROUNDDOWN(contig_high);
855 }
856 if (!is_available_memory(md))
857 continue;
858
859 /*
860 * Round ends inward to granule boundaries
861 * Give trimmings to uncached allocator
862 */
863 if (md->phys_addr < contig_low) {
864 lim = min(efi_md_end(md), contig_low);
865 if (efi_uc(md)) {
866 if (k > kern_memmap && (k-1)->attribute == EFI_MEMORY_UC &&
867 kmd_end(k-1) == md->phys_addr) {
868 (k-1)->num_pages += (lim - md->phys_addr) >> EFI_PAGE_SHIFT;
869 } else {
870 k->attribute = EFI_MEMORY_UC;
871 k->start = md->phys_addr;
872 k->num_pages = (lim - md->phys_addr) >> EFI_PAGE_SHIFT;
873 k++;
874 }
875 }
876 as = contig_low;
877 } else
878 as = md->phys_addr;
879
880 if (efi_md_end(md) > contig_high) {
881 lim = max(md->phys_addr, contig_high);
882 if (efi_uc(md)) {
883 if (lim == md->phys_addr && k > kern_memmap &&
884 (k-1)->attribute == EFI_MEMORY_UC &&
885 kmd_end(k-1) == md->phys_addr) {
886 (k-1)->num_pages += md->num_pages;
887 } else {
888 k->attribute = EFI_MEMORY_UC;
889 k->start = lim;
890 k->num_pages = (efi_md_end(md) - lim) >> EFI_PAGE_SHIFT;
891 k++;
892 }
893 }
894 ae = contig_high;
895 } else
896 ae = efi_md_end(md);
897
898 /* keep within max_addr= command line arg */
899 ae = min(ae, max_addr);
900 if (ae <= as)
901 continue;
902
903 /* avoid going over mem= command line arg */
904 if (total_mem + (ae - as) > mem_limit)
905 ae -= total_mem + (ae - as) - mem_limit;
906
907 if (ae <= as)
908 continue;
909 if (prev && kmd_end(prev) == md->phys_addr) {
910 prev->num_pages += (ae - as) >> EFI_PAGE_SHIFT;
911 total_mem += ae - as;
912 continue;
913 }
914 k->attribute = EFI_MEMORY_WB;
915 k->start = as;
916 k->num_pages = (ae - as) >> EFI_PAGE_SHIFT;
917 total_mem += ae - as;
918 prev = k++;
919 }
920 k->start = ~0L; /* end-marker */
921
922 /* reserve the memory we are using for kern_memmap */
923 *s = (u64)kern_memmap;
924 *e = (u64)++k;
925}
926
927void
928efi_initialize_iomem_resources(struct resource *code_resource,
929 struct resource *data_resource)
930{
931 struct resource *res;
932 void *efi_map_start, *efi_map_end, *p;
933 efi_memory_desc_t *md;
934 u64 efi_desc_size;
935 char *name;
936 unsigned long flags;
937
938 efi_map_start = __va(ia64_boot_param->efi_memmap);
939 efi_map_end = efi_map_start + ia64_boot_param->efi_memmap_size;
940 efi_desc_size = ia64_boot_param->efi_memdesc_size;
941
942 res = NULL;
943
944 for (p = efi_map_start; p < efi_map_end; p += efi_desc_size) {
945 md = p;
946
947 if (md->num_pages == 0) /* should not happen */
948 continue;
949
950 flags = IORESOURCE_MEM;
951 switch (md->type) {
952
953 case EFI_MEMORY_MAPPED_IO:
954 case EFI_MEMORY_MAPPED_IO_PORT_SPACE:
955 continue;
956
957 case EFI_LOADER_CODE:
958 case EFI_LOADER_DATA:
959 case EFI_BOOT_SERVICES_DATA:
960 case EFI_BOOT_SERVICES_CODE:
961 case EFI_CONVENTIONAL_MEMORY:
962 if (md->attribute & EFI_MEMORY_WP) {
963 name = "System ROM";
964 flags |= IORESOURCE_READONLY;
965 } else {
966 name = "System RAM";
967 }
968 break;
969
970 case EFI_ACPI_MEMORY_NVS:
971 name = "ACPI Non-volatile Storage";
972 flags |= IORESOURCE_BUSY;
973 break;
974
975 case EFI_UNUSABLE_MEMORY:
976 name = "reserved";
977 flags |= IORESOURCE_BUSY | IORESOURCE_DISABLED;
978 break;
979
980 case EFI_RESERVED_TYPE:
981 case EFI_RUNTIME_SERVICES_CODE:
982 case EFI_RUNTIME_SERVICES_DATA:
983 case EFI_ACPI_RECLAIM_MEMORY:
984 default:
985 name = "reserved";
986 flags |= IORESOURCE_BUSY;
987 break;
988 }
989
990 if ((res = kcalloc(1, sizeof(struct resource), GFP_KERNEL)) == NULL) {
991 printk(KERN_ERR "failed to alocate resource for iomem\n");
992 return;
993 }
994
995 res->name = name;
996 res->start = md->phys_addr;
997 res->end = md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT) - 1;
998 res->flags = flags;
999
1000 if (insert_resource(&iomem_resource, res) < 0)
1001 kfree(res);
1002 else {
1003 /*
1004 * We don't know which region contains
1005 * kernel data so we try it repeatedly and
1006 * let the resource manager test it.
1007 */
1008 insert_resource(res, code_resource);
1009 insert_resource(res, data_resource);
1010 }
1011 }
1012}
diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c
index 205d98028261..d33244c32759 100644
--- a/arch/ia64/kernel/irq.c
+++ b/arch/ia64/kernel/irq.c
@@ -57,9 +57,9 @@ int show_interrupts(struct seq_file *p, void *v)
57 57
58 if (i == 0) { 58 if (i == 0) {
59 seq_printf(p, " "); 59 seq_printf(p, " ");
60 for (j=0; j<NR_CPUS; j++) 60 for_each_online_cpu(j) {
61 if (cpu_online(j)) 61 seq_printf(p, "CPU%d ",j);
62 seq_printf(p, "CPU%d ",j); 62 }
63 seq_putc(p, '\n'); 63 seq_putc(p, '\n');
64 } 64 }
65 65
@@ -72,9 +72,9 @@ int show_interrupts(struct seq_file *p, void *v)
72#ifndef CONFIG_SMP 72#ifndef CONFIG_SMP
73 seq_printf(p, "%10u ", kstat_irqs(i)); 73 seq_printf(p, "%10u ", kstat_irqs(i));
74#else 74#else
75 for (j = 0; j < NR_CPUS; j++) 75 for_each_online_cpu(j) {
76 if (cpu_online(j)) 76 seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]);
77 seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]); 77 }
78#endif 78#endif
79 seq_printf(p, " %14s", irq_desc[i].handler->typename); 79 seq_printf(p, " %14s", irq_desc[i].handler->typename);
80 seq_printf(p, " %s", action->name); 80 seq_printf(p, " %s", action->name);
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c
index d0a5106fba24..52c47da17246 100644
--- a/arch/ia64/kernel/mca.c
+++ b/arch/ia64/kernel/mca.c
@@ -508,9 +508,7 @@ ia64_mca_wakeup_all(void)
508 int cpu; 508 int cpu;
509 509
510 /* Clear the Rendez checkin flag for all cpus */ 510 /* Clear the Rendez checkin flag for all cpus */
511 for(cpu = 0; cpu < NR_CPUS; cpu++) { 511 for_each_online_cpu(cpu) {
512 if (!cpu_online(cpu))
513 continue;
514 if (ia64_mc_info.imi_rendez_checkin[cpu] == IA64_MCA_RENDEZ_CHECKIN_DONE) 512 if (ia64_mc_info.imi_rendez_checkin[cpu] == IA64_MCA_RENDEZ_CHECKIN_DONE)
515 ia64_mca_wakeup(cpu); 513 ia64_mca_wakeup(cpu);
516 } 514 }
diff --git a/arch/ia64/kernel/module.c b/arch/ia64/kernel/module.c
index f1aca7cffd12..7a2f0a798d12 100644
--- a/arch/ia64/kernel/module.c
+++ b/arch/ia64/kernel/module.c
@@ -947,8 +947,8 @@ void
947percpu_modcopy (void *pcpudst, const void *src, unsigned long size) 947percpu_modcopy (void *pcpudst, const void *src, unsigned long size)
948{ 948{
949 unsigned int i; 949 unsigned int i;
950 for (i = 0; i < NR_CPUS; i++) 950 for_each_cpu(i) {
951 if (cpu_possible(i)) 951 memcpy(pcpudst + __per_cpu_offset[i], src, size);
952 memcpy(pcpudst + __per_cpu_offset[i], src, size); 952 }
953} 953}
954#endif /* CONFIG_SMP */ 954#endif /* CONFIG_SMP */
diff --git a/arch/ia64/kernel/patch.c b/arch/ia64/kernel/patch.c
index 367804a605fa..6a4ac7d70b35 100644
--- a/arch/ia64/kernel/patch.c
+++ b/arch/ia64/kernel/patch.c
@@ -64,22 +64,30 @@ ia64_patch (u64 insn_addr, u64 mask, u64 val)
64void 64void
65ia64_patch_imm64 (u64 insn_addr, u64 val) 65ia64_patch_imm64 (u64 insn_addr, u64 val)
66{ 66{
67 ia64_patch(insn_addr, 67 /* The assembler may generate offset pointing to either slot 1
68 or slot 2 for a long (2-slot) instruction, occupying slots 1
69 and 2. */
70 insn_addr &= -16UL;
71 ia64_patch(insn_addr + 2,
68 0x01fffefe000UL, ( ((val & 0x8000000000000000UL) >> 27) /* bit 63 -> 36 */ 72 0x01fffefe000UL, ( ((val & 0x8000000000000000UL) >> 27) /* bit 63 -> 36 */
69 | ((val & 0x0000000000200000UL) << 0) /* bit 21 -> 21 */ 73 | ((val & 0x0000000000200000UL) << 0) /* bit 21 -> 21 */
70 | ((val & 0x00000000001f0000UL) << 6) /* bit 16 -> 22 */ 74 | ((val & 0x00000000001f0000UL) << 6) /* bit 16 -> 22 */
71 | ((val & 0x000000000000ff80UL) << 20) /* bit 7 -> 27 */ 75 | ((val & 0x000000000000ff80UL) << 20) /* bit 7 -> 27 */
72 | ((val & 0x000000000000007fUL) << 13) /* bit 0 -> 13 */)); 76 | ((val & 0x000000000000007fUL) << 13) /* bit 0 -> 13 */));
73 ia64_patch(insn_addr - 1, 0x1ffffffffffUL, val >> 22); 77 ia64_patch(insn_addr + 1, 0x1ffffffffffUL, val >> 22);
74} 78}
75 79
76void 80void
77ia64_patch_imm60 (u64 insn_addr, u64 val) 81ia64_patch_imm60 (u64 insn_addr, u64 val)
78{ 82{
79 ia64_patch(insn_addr, 83 /* The assembler may generate offset pointing to either slot 1
84 or slot 2 for a long (2-slot) instruction, occupying slots 1
85 and 2. */
86 insn_addr &= -16UL;
87 ia64_patch(insn_addr + 2,
80 0x011ffffe000UL, ( ((val & 0x0800000000000000UL) >> 23) /* bit 59 -> 36 */ 88 0x011ffffe000UL, ( ((val & 0x0800000000000000UL) >> 23) /* bit 59 -> 36 */
81 | ((val & 0x00000000000fffffUL) << 13) /* bit 0 -> 13 */)); 89 | ((val & 0x00000000000fffffUL) << 13) /* bit 0 -> 13 */));
82 ia64_patch(insn_addr - 1, 0x1fffffffffcUL, val >> 18); 90 ia64_patch(insn_addr + 1, 0x1fffffffffcUL, val >> 18);
83} 91}
84 92
85/* 93/*
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c
index d71731ee5b61..f7dfc107cb7b 100644
--- a/arch/ia64/kernel/perfmon.c
+++ b/arch/ia64/kernel/perfmon.c
@@ -2352,7 +2352,8 @@ pfm_smpl_buffer_alloc(struct task_struct *task, pfm_context_t *ctx, unsigned lon
2352 insert_vm_struct(mm, vma); 2352 insert_vm_struct(mm, vma);
2353 2353
2354 mm->total_vm += size >> PAGE_SHIFT; 2354 mm->total_vm += size >> PAGE_SHIFT;
2355 vm_stat_account(vma); 2355 vm_stat_account(vma->vm_mm, vma->vm_flags, vma->vm_file,
2356 vma_pages(vma));
2356 up_write(&task->mm->mmap_sem); 2357 up_write(&task->mm->mmap_sem);
2357 2358
2358 /* 2359 /*
diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c
index bbb8bc7c0552..4b19d0410632 100644
--- a/arch/ia64/kernel/ptrace.c
+++ b/arch/ia64/kernel/ptrace.c
@@ -587,8 +587,9 @@ thread_matches (struct task_struct *thread, unsigned long addr)
587static struct task_struct * 587static struct task_struct *
588find_thread_for_addr (struct task_struct *child, unsigned long addr) 588find_thread_for_addr (struct task_struct *child, unsigned long addr)
589{ 589{
590 struct task_struct *g, *p; 590 struct task_struct *p;
591 struct mm_struct *mm; 591 struct mm_struct *mm;
592 struct list_head *this, *next;
592 int mm_users; 593 int mm_users;
593 594
594 if (!(mm = get_task_mm(child))) 595 if (!(mm = get_task_mm(child)))
@@ -600,28 +601,21 @@ find_thread_for_addr (struct task_struct *child, unsigned long addr)
600 goto out; /* not multi-threaded */ 601 goto out; /* not multi-threaded */
601 602
602 /* 603 /*
603 * First, traverse the child's thread-list. Good for scalability with 604 * Traverse the current process' children list. Every task that
604 * NPTL-threads. 605 * one attaches to becomes a child. And it is only attached children
606 * of the debugger that are of interest (ptrace_check_attach checks
607 * for this).
605 */ 608 */
606 p = child; 609 list_for_each_safe(this, next, &current->children) {
607 do { 610 p = list_entry(this, struct task_struct, sibling);
608 if (thread_matches(p, addr)) { 611 if (p->mm != mm)
609 child = p;
610 goto out;
611 }
612 if (mm_users-- <= 1)
613 goto out;
614 } while ((p = next_thread(p)) != child);
615
616 do_each_thread(g, p) {
617 if (child->mm != mm)
618 continue; 612 continue;
619
620 if (thread_matches(p, addr)) { 613 if (thread_matches(p, addr)) {
621 child = p; 614 child = p;
622 goto out; 615 goto out;
623 } 616 }
624 } while_each_thread(g, p); 617 }
618
625 out: 619 out:
626 mmput(mm); 620 mmput(mm);
627 return child; 621 return child;
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index 1f5c26dbe705..fc56ca2da358 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -78,6 +78,19 @@ struct screen_info screen_info;
78unsigned long vga_console_iobase; 78unsigned long vga_console_iobase;
79unsigned long vga_console_membase; 79unsigned long vga_console_membase;
80 80
81static struct resource data_resource = {
82 .name = "Kernel data",
83 .flags = IORESOURCE_BUSY | IORESOURCE_MEM
84};
85
86static struct resource code_resource = {
87 .name = "Kernel code",
88 .flags = IORESOURCE_BUSY | IORESOURCE_MEM
89};
90extern void efi_initialize_iomem_resources(struct resource *,
91 struct resource *);
92extern char _text[], _end[], _etext[];
93
81unsigned long ia64_max_cacheline_size; 94unsigned long ia64_max_cacheline_size;
82unsigned long ia64_iobase; /* virtual address for I/O accesses */ 95unsigned long ia64_iobase; /* virtual address for I/O accesses */
83EXPORT_SYMBOL(ia64_iobase); 96EXPORT_SYMBOL(ia64_iobase);
@@ -171,6 +184,22 @@ sort_regions (struct rsvd_region *rsvd_region, int max)
171 } 184 }
172} 185}
173 186
187/*
188 * Request address space for all standard resources
189 */
190static int __init register_memory(void)
191{
192 code_resource.start = ia64_tpa(_text);
193 code_resource.end = ia64_tpa(_etext) - 1;
194 data_resource.start = ia64_tpa(_etext);
195 data_resource.end = ia64_tpa(_end) - 1;
196 efi_initialize_iomem_resources(&code_resource, &data_resource);
197
198 return 0;
199}
200
201__initcall(register_memory);
202
174/** 203/**
175 * reserve_memory - setup reserved memory areas 204 * reserve_memory - setup reserved memory areas
176 * 205 *
@@ -211,6 +240,9 @@ reserve_memory (void)
211 } 240 }
212#endif 241#endif
213 242
243 efi_memmap_init(&rsvd_region[n].start, &rsvd_region[n].end);
244 n++;
245
214 /* end of memory marker */ 246 /* end of memory marker */
215 rsvd_region[n].start = ~0UL; 247 rsvd_region[n].start = ~0UL;
216 rsvd_region[n].end = ~0UL; 248 rsvd_region[n].end = ~0UL;
@@ -244,28 +276,31 @@ find_initrd (void)
244static void __init 276static void __init
245io_port_init (void) 277io_port_init (void)
246{ 278{
247 extern unsigned long ia64_iobase;
248 unsigned long phys_iobase; 279 unsigned long phys_iobase;
249 280
250 /* 281 /*
251 * Set `iobase' to the appropriate address in region 6 (uncached access range). 282 * Set `iobase' based on the EFI memory map or, failing that, the
283 * value firmware left in ar.k0.
252 * 284 *
253 * The EFI memory map is the "preferred" location to get the I/O port space base, 285 * Note that in ia32 mode, IN/OUT instructions use ar.k0 to compute
254 * rather the relying on AR.KR0. This should become more clear in future SAL 286 * the port's virtual address, so ia32_load_state() loads it with a
255 * specs. We'll fall back to getting it out of AR.KR0 if no appropriate entry is 287 * user virtual address. But in ia64 mode, glibc uses the
256 * found in the memory map. 288 * *physical* address in ar.k0 to mmap the appropriate area from
289 * /dev/mem, and the inX()/outX() interfaces use MMIO. In both
290 * cases, user-mode can only use the legacy 0-64K I/O port space.
291 *
292 * ar.k0 is not involved in kernel I/O port accesses, which can use
293 * any of the I/O port spaces and are done via MMIO using the
294 * virtual mmio_base from the appropriate io_space[].
257 */ 295 */
258 phys_iobase = efi_get_iobase(); 296 phys_iobase = efi_get_iobase();
259 if (phys_iobase) 297 if (!phys_iobase) {
260 /* set AR.KR0 since this is all we use it for anyway */
261 ia64_set_kr(IA64_KR_IO_BASE, phys_iobase);
262 else {
263 phys_iobase = ia64_get_kr(IA64_KR_IO_BASE); 298 phys_iobase = ia64_get_kr(IA64_KR_IO_BASE);
264 printk(KERN_INFO "No I/O port range found in EFI memory map, falling back " 299 printk(KERN_INFO "No I/O port range found in EFI memory map, "
265 "to AR.KR0\n"); 300 "falling back to AR.KR0 (0x%lx)\n", phys_iobase);
266 printk(KERN_INFO "I/O port base = 0x%lx\n", phys_iobase);
267 } 301 }
268 ia64_iobase = (unsigned long) ioremap(phys_iobase, 0); 302 ia64_iobase = (unsigned long) ioremap(phys_iobase, 0);
303 ia64_set_kr(IA64_KR_IO_BASE, __pa(ia64_iobase));
269 304
270 /* setup legacy IO port space */ 305 /* setup legacy IO port space */
271 io_space[0].mmio_base = ia64_iobase; 306 io_space[0].mmio_base = ia64_iobase;
@@ -526,7 +561,7 @@ show_cpuinfo (struct seq_file *m, void *v)
526 c->itc_freq / 1000000, c->itc_freq % 1000000, 561 c->itc_freq / 1000000, c->itc_freq % 1000000,
527 lpj*HZ/500000, (lpj*HZ/5000) % 100); 562 lpj*HZ/500000, (lpj*HZ/5000) % 100);
528#ifdef CONFIG_SMP 563#ifdef CONFIG_SMP
529 seq_printf(m, "siblings : %u\n", c->num_log); 564 seq_printf(m, "siblings : %u\n", cpus_weight(cpu_core_map[cpunum]));
530 if (c->threads_per_core > 1 || c->cores_per_socket > 1) 565 if (c->threads_per_core > 1 || c->cores_per_socket > 1)
531 seq_printf(m, 566 seq_printf(m,
532 "physical id: %u\n" 567 "physical id: %u\n"
diff --git a/arch/ia64/kernel/smp.c b/arch/ia64/kernel/smp.c
index 0166a9847095..657ac99a451c 100644
--- a/arch/ia64/kernel/smp.c
+++ b/arch/ia64/kernel/smp.c
@@ -185,8 +185,8 @@ send_IPI_allbutself (int op)
185{ 185{
186 unsigned int i; 186 unsigned int i;
187 187
188 for (i = 0; i < NR_CPUS; i++) { 188 for_each_online_cpu(i) {
189 if (cpu_online(i) && i != smp_processor_id()) 189 if (i != smp_processor_id())
190 send_IPI_single(i, op); 190 send_IPI_single(i, op);
191 } 191 }
192} 192}
@@ -199,9 +199,9 @@ send_IPI_all (int op)
199{ 199{
200 int i; 200 int i;
201 201
202 for (i = 0; i < NR_CPUS; i++) 202 for_each_online_cpu(i) {
203 if (cpu_online(i)) 203 send_IPI_single(i, op);
204 send_IPI_single(i, op); 204 }
205} 205}
206 206
207/* 207/*
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c
index 7d72c0d872b3..400a48987124 100644
--- a/arch/ia64/kernel/smpboot.c
+++ b/arch/ia64/kernel/smpboot.c
@@ -694,9 +694,9 @@ smp_cpus_done (unsigned int dummy)
694 * Allow the user to impress friends. 694 * Allow the user to impress friends.
695 */ 695 */
696 696
697 for (cpu = 0; cpu < NR_CPUS; cpu++) 697 for_each_online_cpu(cpu) {
698 if (cpu_online(cpu)) 698 bogosum += cpu_data(cpu)->loops_per_jiffy;
699 bogosum += cpu_data(cpu)->loops_per_jiffy; 699 }
700 700
701 printk(KERN_INFO "Total of %d processors activated (%lu.%02lu BogoMIPS).\n", 701 printk(KERN_INFO "Total of %d processors activated (%lu.%02lu BogoMIPS).\n",
702 (int)num_online_cpus(), bogosum/(500000/HZ), (bogosum/(5000/HZ))%100); 702 (int)num_online_cpus(), bogosum/(500000/HZ), (bogosum/(5000/HZ))%100);
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c
index 8b8a5a45b621..5b7e736f3b49 100644
--- a/arch/ia64/kernel/time.c
+++ b/arch/ia64/kernel/time.c
@@ -32,10 +32,6 @@
32 32
33extern unsigned long wall_jiffies; 33extern unsigned long wall_jiffies;
34 34
35u64 jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES;
36
37EXPORT_SYMBOL(jiffies_64);
38
39#define TIME_KEEPER_ID 0 /* smp_processor_id() of time-keeper */ 35#define TIME_KEEPER_ID 0 /* smp_processor_id() of time-keeper */
40 36
41#ifdef CONFIG_IA64_DEBUG_IRQ 37#ifdef CONFIG_IA64_DEBUG_IRQ
diff --git a/arch/ia64/kernel/uncached.c b/arch/ia64/kernel/uncached.c
index 4e9d06c48a8b..c6d40446c2c4 100644
--- a/arch/ia64/kernel/uncached.c
+++ b/arch/ia64/kernel/uncached.c
@@ -205,23 +205,18 @@ EXPORT_SYMBOL(uncached_free_page);
205static int __init 205static int __init
206uncached_build_memmap(unsigned long start, unsigned long end, void *arg) 206uncached_build_memmap(unsigned long start, unsigned long end, void *arg)
207{ 207{
208 long length; 208 long length = end - start;
209 unsigned long vstart, vend;
210 int node; 209 int node;
211 210
212 length = end - start;
213 vstart = start + __IA64_UNCACHED_OFFSET;
214 vend = end + __IA64_UNCACHED_OFFSET;
215
216 dprintk(KERN_ERR "uncached_build_memmap(%lx %lx)\n", start, end); 211 dprintk(KERN_ERR "uncached_build_memmap(%lx %lx)\n", start, end);
217 212
218 memset((char *)vstart, 0, length); 213 memset((char *)start, 0, length);
219 214
220 node = paddr_to_nid(start); 215 node = paddr_to_nid(start - __IA64_UNCACHED_OFFSET);
221 216
222 for (; vstart < vend ; vstart += PAGE_SIZE) { 217 for (; start < end ; start += PAGE_SIZE) {
223 dprintk(KERN_INFO "sticking %lx into the pool!\n", vstart); 218 dprintk(KERN_INFO "sticking %lx into the pool!\n", start);
224 gen_pool_free(uncached_pool[node], vstart, PAGE_SIZE); 219 gen_pool_free(uncached_pool[node], start, PAGE_SIZE);
225 } 220 }
226 221
227 return 0; 222 return 0;
diff --git a/arch/ia64/lib/swiotlb.c b/arch/ia64/lib/swiotlb.c
index a604efc7f6c9..96edcc0fdcd9 100644
--- a/arch/ia64/lib/swiotlb.c
+++ b/arch/ia64/lib/swiotlb.c
@@ -49,6 +49,15 @@
49 */ 49 */
50#define IO_TLB_SHIFT 11 50#define IO_TLB_SHIFT 11
51 51
52#define SLABS_PER_PAGE (1 << (PAGE_SHIFT - IO_TLB_SHIFT))
53
54/*
55 * Minimum IO TLB size to bother booting with. Systems with mainly
56 * 64bit capable cards will only lightly use the swiotlb. If we can't
57 * allocate a contiguous 1MB, we're probably in trouble anyway.
58 */
59#define IO_TLB_MIN_SLABS ((1<<20) >> IO_TLB_SHIFT)
60
52int swiotlb_force; 61int swiotlb_force;
53 62
54/* 63/*
@@ -154,6 +163,99 @@ swiotlb_init (void)
154 swiotlb_init_with_default_size(64 * (1<<20)); /* default to 64MB */ 163 swiotlb_init_with_default_size(64 * (1<<20)); /* default to 64MB */
155} 164}
156 165
166/*
167 * Systems with larger DMA zones (those that don't support ISA) can
168 * initialize the swiotlb later using the slab allocator if needed.
169 * This should be just like above, but with some error catching.
170 */
171int
172swiotlb_late_init_with_default_size (size_t default_size)
173{
174 unsigned long i, req_nslabs = io_tlb_nslabs;
175 unsigned int order;
176
177 if (!io_tlb_nslabs) {
178 io_tlb_nslabs = (default_size >> IO_TLB_SHIFT);
179 io_tlb_nslabs = ALIGN(io_tlb_nslabs, IO_TLB_SEGSIZE);
180 }
181
182 /*
183 * Get IO TLB memory from the low pages
184 */
185 order = get_order(io_tlb_nslabs * (1 << IO_TLB_SHIFT));
186 io_tlb_nslabs = SLABS_PER_PAGE << order;
187
188 while ((SLABS_PER_PAGE << order) > IO_TLB_MIN_SLABS) {
189 io_tlb_start = (char *)__get_free_pages(GFP_DMA | __GFP_NOWARN,
190 order);
191 if (io_tlb_start)
192 break;
193 order--;
194 }
195
196 if (!io_tlb_start)
197 goto cleanup1;
198
199 if (order != get_order(io_tlb_nslabs * (1 << IO_TLB_SHIFT))) {
200 printk(KERN_WARNING "Warning: only able to allocate %ld MB "
201 "for software IO TLB\n", (PAGE_SIZE << order) >> 20);
202 io_tlb_nslabs = SLABS_PER_PAGE << order;
203 }
204 io_tlb_end = io_tlb_start + io_tlb_nslabs * (1 << IO_TLB_SHIFT);
205 memset(io_tlb_start, 0, io_tlb_nslabs * (1 << IO_TLB_SHIFT));
206
207 /*
208 * Allocate and initialize the free list array. This array is used
209 * to find contiguous free memory regions of size up to IO_TLB_SEGSIZE
210 * between io_tlb_start and io_tlb_end.
211 */
212 io_tlb_list = (unsigned int *)__get_free_pages(GFP_KERNEL,
213 get_order(io_tlb_nslabs * sizeof(int)));
214 if (!io_tlb_list)
215 goto cleanup2;
216
217 for (i = 0; i < io_tlb_nslabs; i++)
218 io_tlb_list[i] = IO_TLB_SEGSIZE - OFFSET(i, IO_TLB_SEGSIZE);
219 io_tlb_index = 0;
220
221 io_tlb_orig_addr = (unsigned char **)__get_free_pages(GFP_KERNEL,
222 get_order(io_tlb_nslabs * sizeof(char *)));
223 if (!io_tlb_orig_addr)
224 goto cleanup3;
225
226 memset(io_tlb_orig_addr, 0, io_tlb_nslabs * sizeof(char *));
227
228 /*
229 * Get the overflow emergency buffer
230 */
231 io_tlb_overflow_buffer = (void *)__get_free_pages(GFP_DMA,
232 get_order(io_tlb_overflow));
233 if (!io_tlb_overflow_buffer)
234 goto cleanup4;
235
236 printk(KERN_INFO "Placing %ldMB software IO TLB between 0x%lx - "
237 "0x%lx\n", (io_tlb_nslabs * (1 << IO_TLB_SHIFT)) >> 20,
238 virt_to_phys(io_tlb_start), virt_to_phys(io_tlb_end));
239
240 return 0;
241
242cleanup4:
243 free_pages((unsigned long)io_tlb_orig_addr, get_order(io_tlb_nslabs *
244 sizeof(char *)));
245 io_tlb_orig_addr = NULL;
246cleanup3:
247 free_pages((unsigned long)io_tlb_list, get_order(io_tlb_nslabs *
248 sizeof(int)));
249 io_tlb_list = NULL;
250 io_tlb_end = NULL;
251cleanup2:
252 free_pages((unsigned long)io_tlb_start, order);
253 io_tlb_start = NULL;
254cleanup1:
255 io_tlb_nslabs = req_nslabs;
256 return -ENOMEM;
257}
258
157static inline int 259static inline int
158address_needs_mapping(struct device *hwdev, dma_addr_t addr) 260address_needs_mapping(struct device *hwdev, dma_addr_t addr)
159{ 261{
@@ -314,7 +416,7 @@ sync_single(struct device *hwdev, char *dma_addr, size_t size, int dir)
314 416
315void * 417void *
316swiotlb_alloc_coherent(struct device *hwdev, size_t size, 418swiotlb_alloc_coherent(struct device *hwdev, size_t size,
317 dma_addr_t *dma_handle, int flags) 419 dma_addr_t *dma_handle, gfp_t flags)
318{ 420{
319 unsigned long dev_addr; 421 unsigned long dev_addr;
320 void *ret; 422 void *ret;
diff --git a/arch/ia64/mm/Makefile b/arch/ia64/mm/Makefile
index 7078f67887ec..d78d20f0a0f0 100644
--- a/arch/ia64/mm/Makefile
+++ b/arch/ia64/mm/Makefile
@@ -7,6 +7,5 @@ obj-y := init.o fault.o tlb.o extable.o
7obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o 7obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o
8obj-$(CONFIG_NUMA) += numa.o 8obj-$(CONFIG_NUMA) += numa.o
9obj-$(CONFIG_DISCONTIGMEM) += discontig.o 9obj-$(CONFIG_DISCONTIGMEM) += discontig.o
10ifndef CONFIG_DISCONTIGMEM 10obj-$(CONFIG_SPARSEMEM) += discontig.o
11obj-y += contig.o 11obj-$(CONFIG_FLATMEM) += contig.o
12endif
diff --git a/arch/ia64/mm/contig.c b/arch/ia64/mm/contig.c
index 91a055f5731f..acaaec4e4681 100644
--- a/arch/ia64/mm/contig.c
+++ b/arch/ia64/mm/contig.c
@@ -269,7 +269,7 @@ paging_init (void)
269 efi_memmap_walk(find_largest_hole, (u64 *)&max_gap); 269 efi_memmap_walk(find_largest_hole, (u64 *)&max_gap);
270 if (max_gap < LARGE_GAP) { 270 if (max_gap < LARGE_GAP) {
271 vmem_map = (struct page *) 0; 271 vmem_map = (struct page *) 0;
272 free_area_init_node(0, &contig_page_data, zones_size, 0, 272 free_area_init_node(0, NODE_DATA(0), zones_size, 0,
273 zholes_size); 273 zholes_size);
274 } else { 274 } else {
275 unsigned long map_size; 275 unsigned long map_size;
@@ -282,7 +282,7 @@ paging_init (void)
282 efi_memmap_walk(create_mem_map_page_table, NULL); 282 efi_memmap_walk(create_mem_map_page_table, NULL);
283 283
284 NODE_DATA(0)->node_mem_map = vmem_map; 284 NODE_DATA(0)->node_mem_map = vmem_map;
285 free_area_init_node(0, &contig_page_data, zones_size, 285 free_area_init_node(0, NODE_DATA(0), zones_size,
286 0, zholes_size); 286 0, zholes_size);
287 287
288 printk("Virtual mem_map starts at 0x%p\n", mem_map); 288 printk("Virtual mem_map starts at 0x%p\n", mem_map);
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c
index b5c90e548195..a88cdb7232f8 100644
--- a/arch/ia64/mm/discontig.c
+++ b/arch/ia64/mm/discontig.c
@@ -421,6 +421,37 @@ static void __init memory_less_nodes(void)
421 return; 421 return;
422} 422}
423 423
424#ifdef CONFIG_SPARSEMEM
425/**
426 * register_sparse_mem - notify SPARSEMEM that this memory range exists.
427 * @start: physical start of range
428 * @end: physical end of range
429 * @arg: unused
430 *
431 * Simply calls SPARSEMEM to register memory section(s).
432 */
433static int __init register_sparse_mem(unsigned long start, unsigned long end,
434 void *arg)
435{
436 int nid;
437
438 start = __pa(start) >> PAGE_SHIFT;
439 end = __pa(end) >> PAGE_SHIFT;
440 nid = early_pfn_to_nid(start);
441 memory_present(nid, start, end);
442
443 return 0;
444}
445
446static void __init arch_sparse_init(void)
447{
448 efi_memmap_walk(register_sparse_mem, NULL);
449 sparse_init();
450}
451#else
452#define arch_sparse_init() do {} while (0)
453#endif
454
424/** 455/**
425 * find_memory - walk the EFI memory map and setup the bootmem allocator 456 * find_memory - walk the EFI memory map and setup the bootmem allocator
426 * 457 *
@@ -524,12 +555,18 @@ void show_mem(void)
524 show_free_areas(); 555 show_free_areas();
525 printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); 556 printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
526 for_each_pgdat(pgdat) { 557 for_each_pgdat(pgdat) {
527 unsigned long present = pgdat->node_present_pages; 558 unsigned long present;
559 unsigned long flags;
528 int shared = 0, cached = 0, reserved = 0; 560 int shared = 0, cached = 0, reserved = 0;
561
529 printk("Node ID: %d\n", pgdat->node_id); 562 printk("Node ID: %d\n", pgdat->node_id);
563 pgdat_resize_lock(pgdat, &flags);
564 present = pgdat->node_present_pages;
530 for(i = 0; i < pgdat->node_spanned_pages; i++) { 565 for(i = 0; i < pgdat->node_spanned_pages; i++) {
531 struct page *page = pgdat_page_nr(pgdat, i); 566 struct page *page;
532 if (!ia64_pfn_valid(pgdat->node_start_pfn+i)) 567 if (pfn_valid(pgdat->node_start_pfn + i))
568 page = pfn_to_page(pgdat->node_start_pfn + i);
569 else
533 continue; 570 continue;
534 if (PageReserved(page)) 571 if (PageReserved(page))
535 reserved++; 572 reserved++;
@@ -538,6 +575,7 @@ void show_mem(void)
538 else if (page_count(page)) 575 else if (page_count(page))
539 shared += page_count(page)-1; 576 shared += page_count(page)-1;
540 } 577 }
578 pgdat_resize_unlock(pgdat, &flags);
541 total_present += present; 579 total_present += present;
542 total_reserved += reserved; 580 total_reserved += reserved;
543 total_cached += cached; 581 total_cached += cached;
@@ -648,12 +686,16 @@ void __init paging_init(void)
648 686
649 max_dma = virt_to_phys((void *) MAX_DMA_ADDRESS) >> PAGE_SHIFT; 687 max_dma = virt_to_phys((void *) MAX_DMA_ADDRESS) >> PAGE_SHIFT;
650 688
689 arch_sparse_init();
690
651 efi_memmap_walk(filter_rsvd_memory, count_node_pages); 691 efi_memmap_walk(filter_rsvd_memory, count_node_pages);
652 692
693#ifdef CONFIG_VIRTUAL_MEM_MAP
653 vmalloc_end -= PAGE_ALIGN(max_low_pfn * sizeof(struct page)); 694 vmalloc_end -= PAGE_ALIGN(max_low_pfn * sizeof(struct page));
654 vmem_map = (struct page *) vmalloc_end; 695 vmem_map = (struct page *) vmalloc_end;
655 efi_memmap_walk(create_mem_map_page_table, NULL); 696 efi_memmap_walk(create_mem_map_page_table, NULL);
656 printk("Virtual mem_map starts at 0x%p\n", vmem_map); 697 printk("Virtual mem_map starts at 0x%p\n", vmem_map);
698#endif
657 699
658 for_each_online_node(node) { 700 for_each_online_node(node) {
659 memset(zones_size, 0, sizeof(zones_size)); 701 memset(zones_size, 0, sizeof(zones_size));
@@ -690,7 +732,9 @@ void __init paging_init(void)
690 732
691 pfn_offset = mem_data[node].min_pfn; 733 pfn_offset = mem_data[node].min_pfn;
692 734
735#ifdef CONFIG_VIRTUAL_MEM_MAP
693 NODE_DATA(node)->node_mem_map = vmem_map + pfn_offset; 736 NODE_DATA(node)->node_mem_map = vmem_map + pfn_offset;
737#endif
694 free_area_init_node(node, NODE_DATA(node), zones_size, 738 free_area_init_node(node, NODE_DATA(node), zones_size,
695 pfn_offset, zholes_size); 739 pfn_offset, zholes_size);
696 } 740 }
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
index 3c32af910d60..af7eb087dca7 100644
--- a/arch/ia64/mm/fault.c
+++ b/arch/ia64/mm/fault.c
@@ -20,32 +20,6 @@
20extern void die (char *, struct pt_regs *, long); 20extern void die (char *, struct pt_regs *, long);
21 21
22/* 22/*
23 * This routine is analogous to expand_stack() but instead grows the
24 * register backing store (which grows towards higher addresses).
25 * Since the register backing store is access sequentially, we
26 * disallow growing the RBS by more than a page at a time. Note that
27 * the VM_GROWSUP flag can be set on any VM area but that's fine
28 * because the total process size is still limited by RLIMIT_STACK and
29 * RLIMIT_AS.
30 */
31static inline long
32expand_backing_store (struct vm_area_struct *vma, unsigned long address)
33{
34 unsigned long grow;
35
36 grow = PAGE_SIZE >> PAGE_SHIFT;
37 if (address - vma->vm_start > current->signal->rlim[RLIMIT_STACK].rlim_cur
38 || (((vma->vm_mm->total_vm + grow) << PAGE_SHIFT) > current->signal->rlim[RLIMIT_AS].rlim_cur))
39 return -ENOMEM;
40 vma->vm_end += PAGE_SIZE;
41 vma->vm_mm->total_vm += grow;
42 if (vma->vm_flags & VM_LOCKED)
43 vma->vm_mm->locked_vm += grow;
44 __vm_stat_account(vma->vm_mm, vma->vm_flags, vma->vm_file, grow);
45 return 0;
46}
47
48/*
49 * Return TRUE if ADDRESS points at a page in the kernel's mapped segment 23 * Return TRUE if ADDRESS points at a page in the kernel's mapped segment
50 * (inside region 5, on ia64) and that page is present. 24 * (inside region 5, on ia64) and that page is present.
51 */ 25 */
@@ -185,7 +159,13 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re
185 if (REGION_NUMBER(address) != REGION_NUMBER(vma->vm_start) 159 if (REGION_NUMBER(address) != REGION_NUMBER(vma->vm_start)
186 || REGION_OFFSET(address) >= RGN_MAP_LIMIT) 160 || REGION_OFFSET(address) >= RGN_MAP_LIMIT)
187 goto bad_area; 161 goto bad_area;
188 if (expand_backing_store(vma, address)) 162 /*
163 * Since the register backing store is accessed sequentially,
164 * we disallow growing it by more than a page at a time.
165 */
166 if (address > vma->vm_end + PAGE_SIZE - sizeof(long))
167 goto bad_area;
168 if (expand_upwards(vma, address))
189 goto bad_area; 169 goto bad_area;
190 } 170 }
191 goto good_area; 171 goto good_area;
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
index 1281c609ee98..e3215ba64ffd 100644
--- a/arch/ia64/mm/init.c
+++ b/arch/ia64/mm/init.c
@@ -158,7 +158,7 @@ ia64_init_addr_space (void)
158 vma->vm_start = current->thread.rbs_bot & PAGE_MASK; 158 vma->vm_start = current->thread.rbs_bot & PAGE_MASK;
159 vma->vm_end = vma->vm_start + PAGE_SIZE; 159 vma->vm_end = vma->vm_start + PAGE_SIZE;
160 vma->vm_page_prot = protection_map[VM_DATA_DEFAULT_FLAGS & 0x7]; 160 vma->vm_page_prot = protection_map[VM_DATA_DEFAULT_FLAGS & 0x7];
161 vma->vm_flags = VM_DATA_DEFAULT_FLAGS | VM_GROWSUP; 161 vma->vm_flags = VM_DATA_DEFAULT_FLAGS|VM_GROWSUP|VM_ACCOUNT;
162 down_write(&current->mm->mmap_sem); 162 down_write(&current->mm->mmap_sem);
163 if (insert_vm_struct(current->mm, vma)) { 163 if (insert_vm_struct(current->mm, vma)) {
164 up_write(&current->mm->mmap_sem); 164 up_write(&current->mm->mmap_sem);
@@ -275,26 +275,21 @@ put_kernel_page (struct page *page, unsigned long address, pgprot_t pgprot)
275 275
276 pgd = pgd_offset_k(address); /* note: this is NOT pgd_offset()! */ 276 pgd = pgd_offset_k(address); /* note: this is NOT pgd_offset()! */
277 277
278 spin_lock(&init_mm.page_table_lock);
279 { 278 {
280 pud = pud_alloc(&init_mm, pgd, address); 279 pud = pud_alloc(&init_mm, pgd, address);
281 if (!pud) 280 if (!pud)
282 goto out; 281 goto out;
283
284 pmd = pmd_alloc(&init_mm, pud, address); 282 pmd = pmd_alloc(&init_mm, pud, address);
285 if (!pmd) 283 if (!pmd)
286 goto out; 284 goto out;
287 pte = pte_alloc_map(&init_mm, pmd, address); 285 pte = pte_alloc_kernel(pmd, address);
288 if (!pte) 286 if (!pte)
289 goto out; 287 goto out;
290 if (!pte_none(*pte)) { 288 if (!pte_none(*pte))
291 pte_unmap(pte);
292 goto out; 289 goto out;
293 }
294 set_pte(pte, mk_pte(page, pgprot)); 290 set_pte(pte, mk_pte(page, pgprot));
295 pte_unmap(pte);
296 } 291 }
297 out: spin_unlock(&init_mm.page_table_lock); 292 out:
298 /* no need for flush_tlb */ 293 /* no need for flush_tlb */
299 return page; 294 return page;
300} 295}
@@ -593,7 +588,7 @@ mem_init (void)
593 platform_dma_init(); 588 platform_dma_init();
594#endif 589#endif
595 590
596#ifndef CONFIG_DISCONTIGMEM 591#ifdef CONFIG_FLATMEM
597 if (!mem_map) 592 if (!mem_map)
598 BUG(); 593 BUG();
599 max_mapnr = max_low_pfn; 594 max_mapnr = max_low_pfn;
diff --git a/arch/ia64/mm/numa.c b/arch/ia64/mm/numa.c
index 77118bbf3d8b..4e5c8b36ad93 100644
--- a/arch/ia64/mm/numa.c
+++ b/arch/ia64/mm/numa.c
@@ -47,3 +47,27 @@ paddr_to_nid(unsigned long paddr)
47 47
48 return (i < num_node_memblks) ? node_memblk[i].nid : (num_node_memblks ? -1 : 0); 48 return (i < num_node_memblks) ? node_memblk[i].nid : (num_node_memblks ? -1 : 0);
49} 49}
50
51#if defined(CONFIG_SPARSEMEM) && defined(CONFIG_NUMA)
52/*
53 * Because of holes evaluate on section limits.
54 * If the section of memory exists, then return the node where the section
55 * resides. Otherwise return node 0 as the default. This is used by
56 * SPARSEMEM to allocate the SPARSEMEM sectionmap on the NUMA node where
57 * the section resides.
58 */
59int early_pfn_to_nid(unsigned long pfn)
60{
61 int i, section = pfn >> PFN_SECTION_SHIFT, ssec, esec;
62
63 for (i = 0; i < num_node_memblks; i++) {
64 ssec = node_memblk[i].start_paddr >> PA_SECTION_SHIFT;
65 esec = (node_memblk[i].start_paddr + node_memblk[i].size +
66 ((1L << PA_SECTION_SHIFT) - 1)) >> PA_SECTION_SHIFT;
67 if (section >= ssec && section < esec)
68 return node_memblk[i].nid;
69 }
70
71 return 0;
72}
73#endif
diff --git a/arch/ia64/mm/tlb.c b/arch/ia64/mm/tlb.c
index 464557e4ed82..c79a9b96d02b 100644
--- a/arch/ia64/mm/tlb.c
+++ b/arch/ia64/mm/tlb.c
@@ -77,19 +77,25 @@ wrap_mmu_context (struct mm_struct *mm)
77 /* can't call flush_tlb_all() here because of race condition with O(1) scheduler [EF] */ 77 /* can't call flush_tlb_all() here because of race condition with O(1) scheduler [EF] */
78 { 78 {
79 int cpu = get_cpu(); /* prevent preemption/migration */ 79 int cpu = get_cpu(); /* prevent preemption/migration */
80 for (i = 0; i < NR_CPUS; ++i) 80 for_each_online_cpu(i) {
81 if (cpu_online(i) && (i != cpu)) 81 if (i != cpu)
82 per_cpu(ia64_need_tlb_flush, i) = 1; 82 per_cpu(ia64_need_tlb_flush, i) = 1;
83 }
83 put_cpu(); 84 put_cpu();
84 } 85 }
85 local_flush_tlb_all(); 86 local_flush_tlb_all();
86} 87}
87 88
88void 89void
89ia64_global_tlb_purge (unsigned long start, unsigned long end, unsigned long nbits) 90ia64_global_tlb_purge (struct mm_struct *mm, unsigned long start, unsigned long end, unsigned long nbits)
90{ 91{
91 static DEFINE_SPINLOCK(ptcg_lock); 92 static DEFINE_SPINLOCK(ptcg_lock);
92 93
94 if (mm != current->active_mm) {
95 flush_tlb_all();
96 return;
97 }
98
93 /* HW requires global serialization of ptc.ga. */ 99 /* HW requires global serialization of ptc.ga. */
94 spin_lock(&ptcg_lock); 100 spin_lock(&ptcg_lock);
95 { 101 {
@@ -135,15 +141,12 @@ flush_tlb_range (struct vm_area_struct *vma, unsigned long start, unsigned long
135 unsigned long size = end - start; 141 unsigned long size = end - start;
136 unsigned long nbits; 142 unsigned long nbits;
137 143
144#ifndef CONFIG_SMP
138 if (mm != current->active_mm) { 145 if (mm != current->active_mm) {
139 /* this does happen, but perhaps it's not worth optimizing for? */
140#ifdef CONFIG_SMP
141 flush_tlb_all();
142#else
143 mm->context = 0; 146 mm->context = 0;
144#endif
145 return; 147 return;
146 } 148 }
149#endif
147 150
148 nbits = ia64_fls(size + 0xfff); 151 nbits = ia64_fls(size + 0xfff);
149 while (unlikely (((1UL << nbits) & purge.mask) == 0) && (nbits < purge.max_bits)) 152 while (unlikely (((1UL << nbits) & purge.mask) == 0) && (nbits < purge.max_bits))
@@ -153,12 +156,14 @@ flush_tlb_range (struct vm_area_struct *vma, unsigned long start, unsigned long
153 start &= ~((1UL << nbits) - 1); 156 start &= ~((1UL << nbits) - 1);
154 157
155# ifdef CONFIG_SMP 158# ifdef CONFIG_SMP
156 platform_global_tlb_purge(start, end, nbits); 159 platform_global_tlb_purge(mm, start, end, nbits);
157# else 160# else
161 preempt_disable();
158 do { 162 do {
159 ia64_ptcl(start, (nbits<<2)); 163 ia64_ptcl(start, (nbits<<2));
160 start += (1UL << nbits); 164 start += (1UL << nbits);
161 } while (start < end); 165 } while (start < end);
166 preempt_enable();
162# endif 167# endif
163 168
164 ia64_srlz_i(); /* srlz.i implies srlz.d */ 169 ia64_srlz_i(); /* srlz.i implies srlz.d */
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
index 9b5de589b82f..017cfc3f4789 100644
--- a/arch/ia64/pci/pci.c
+++ b/arch/ia64/pci/pci.c
@@ -120,29 +120,6 @@ struct pci_ops pci_root_ops = {
120 .write = pci_write, 120 .write = pci_write,
121}; 121};
122 122
123#ifdef CONFIG_NUMA
124extern acpi_status acpi_map_iosapic(acpi_handle, u32, void *, void **);
125static void acpi_map_iosapics(void)
126{
127 acpi_get_devices(NULL, acpi_map_iosapic, NULL, NULL);
128}
129#else
130static void acpi_map_iosapics(void)
131{
132 return;
133}
134#endif /* CONFIG_NUMA */
135
136static int __init
137pci_acpi_init (void)
138{
139 acpi_map_iosapics();
140
141 return 0;
142}
143
144subsys_initcall(pci_acpi_init);
145
146/* Called by ACPI when it finds a new root bus. */ 123/* Called by ACPI when it finds a new root bus. */
147 124
148static struct pci_controller * __devinit 125static struct pci_controller * __devinit
@@ -191,6 +168,29 @@ add_io_space (struct acpi_resource_address64 *addr)
191 return IO_SPACE_BASE(i); 168 return IO_SPACE_BASE(i);
192} 169}
193 170
171static acpi_status __devinit resource_to_window(struct acpi_resource *resource,
172 struct acpi_resource_address64 *addr)
173{
174 acpi_status status;
175
176 /*
177 * We're only interested in _CRS descriptors that are
178 * - address space descriptors for memory or I/O space
179 * - non-zero size
180 * - producers, i.e., the address space is routed downstream,
181 * not consumed by the bridge itself
182 */
183 status = acpi_resource_to_address64(resource, addr);
184 if (ACPI_SUCCESS(status) &&
185 (addr->resource_type == ACPI_MEMORY_RANGE ||
186 addr->resource_type == ACPI_IO_RANGE) &&
187 addr->address_length &&
188 addr->producer_consumer == ACPI_PRODUCER)
189 return AE_OK;
190
191 return AE_ERROR;
192}
193
194static acpi_status __devinit 194static acpi_status __devinit
195count_window (struct acpi_resource *resource, void *data) 195count_window (struct acpi_resource *resource, void *data)
196{ 196{
@@ -198,11 +198,9 @@ count_window (struct acpi_resource *resource, void *data)
198 struct acpi_resource_address64 addr; 198 struct acpi_resource_address64 addr;
199 acpi_status status; 199 acpi_status status;
200 200
201 status = acpi_resource_to_address64(resource, &addr); 201 status = resource_to_window(resource, &addr);
202 if (ACPI_SUCCESS(status)) 202 if (ACPI_SUCCESS(status))
203 if (addr.resource_type == ACPI_MEMORY_RANGE || 203 (*windows)++;
204 addr.resource_type == ACPI_IO_RANGE)
205 (*windows)++;
206 204
207 return AE_OK; 205 return AE_OK;
208} 206}
@@ -221,13 +219,11 @@ static __devinit acpi_status add_window(struct acpi_resource *res, void *data)
221 unsigned long flags, offset = 0; 219 unsigned long flags, offset = 0;
222 struct resource *root; 220 struct resource *root;
223 221
224 status = acpi_resource_to_address64(res, &addr); 222 /* Return AE_OK for non-window resources to keep scanning for more */
223 status = resource_to_window(res, &addr);
225 if (!ACPI_SUCCESS(status)) 224 if (!ACPI_SUCCESS(status))
226 return AE_OK; 225 return AE_OK;
227 226
228 if (!addr.address_length)
229 return AE_OK;
230
231 if (addr.resource_type == ACPI_MEMORY_RANGE) { 227 if (addr.resource_type == ACPI_MEMORY_RANGE) {
232 flags = IORESOURCE_MEM; 228 flags = IORESOURCE_MEM;
233 root = &iomem_resource; 229 root = &iomem_resource;
diff --git a/arch/ia64/sn/kernel/bte.c b/arch/ia64/sn/kernel/bte.c
index 45854c637e9c..d71f4de44f79 100644
--- a/arch/ia64/sn/kernel/bte.c
+++ b/arch/ia64/sn/kernel/bte.c
@@ -87,7 +87,7 @@ bte_result_t bte_copy(u64 src, u64 dest, u64 len, u64 mode, void *notification)
87 unsigned long irq_flags; 87 unsigned long irq_flags;
88 unsigned long itc_end = 0; 88 unsigned long itc_end = 0;
89 int nasid_to_try[MAX_NODES_TO_TRY]; 89 int nasid_to_try[MAX_NODES_TO_TRY];
90 int my_nasid = get_nasid(); 90 int my_nasid = cpuid_to_nasid(raw_smp_processor_id());
91 int bte_if_index, nasid_index; 91 int bte_if_index, nasid_index;
92 int bte_first, btes_per_node = BTES_PER_NODE; 92 int bte_first, btes_per_node = BTES_PER_NODE;
93 93
diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c
index 906622d9f933..b4f5053f5e1b 100644
--- a/arch/ia64/sn/kernel/io_init.c
+++ b/arch/ia64/sn/kernel/io_init.c
@@ -22,8 +22,6 @@
22#include "xtalk/hubdev.h" 22#include "xtalk/hubdev.h"
23#include "xtalk/xwidgetdev.h" 23#include "xtalk/xwidgetdev.h"
24 24
25nasid_t master_nasid = INVALID_NASID; /* Partition Master */
26
27static struct list_head sn_sysdata_list; 25static struct list_head sn_sysdata_list;
28 26
29/* sysdata list struct */ 27/* sysdata list struct */
@@ -165,7 +163,7 @@ static void sn_fixup_ionodes(void)
165 * Get SGI Specific HUB chipset information. 163 * Get SGI Specific HUB chipset information.
166 * Inform Prom that this kernel can support domain bus numbering. 164 * Inform Prom that this kernel can support domain bus numbering.
167 */ 165 */
168 for (i = 0; i < numionodes; i++) { 166 for (i = 0; i < num_cnodes; i++) {
169 hubdev = (struct hubdev_info *)(NODEPDA(i)->pdinfo); 167 hubdev = (struct hubdev_info *)(NODEPDA(i)->pdinfo);
170 nasid = cnodeid_to_nasid(i); 168 nasid = cnodeid_to_nasid(i);
171 hubdev->max_segment_number = 0xffffffff; 169 hubdev->max_segment_number = 0xffffffff;
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c
index 6f8c5883716b..0fb579ef18c2 100644
--- a/arch/ia64/sn/kernel/setup.c
+++ b/arch/ia64/sn/kernel/setup.c
@@ -59,8 +59,6 @@ DEFINE_PER_CPU(struct pda_s, pda_percpu);
59 59
60#define MAX_PHYS_MEMORY (1UL << IA64_MAX_PHYS_BITS) /* Max physical address supported */ 60#define MAX_PHYS_MEMORY (1UL << IA64_MAX_PHYS_BITS) /* Max physical address supported */
61 61
62lboard_t *root_lboard[MAX_COMPACT_NODES];
63
64extern void bte_init_node(nodepda_t *, cnodeid_t); 62extern void bte_init_node(nodepda_t *, cnodeid_t);
65 63
66extern void sn_timer_init(void); 64extern void sn_timer_init(void);
@@ -97,15 +95,15 @@ u8 sn_region_size;
97EXPORT_SYMBOL(sn_region_size); 95EXPORT_SYMBOL(sn_region_size);
98int sn_prom_type; /* 0=hardware, 1=medusa/realprom, 2=medusa/fakeprom */ 96int sn_prom_type; /* 0=hardware, 1=medusa/realprom, 2=medusa/fakeprom */
99 97
100short physical_node_map[MAX_PHYSNODE_ID]; 98short physical_node_map[MAX_NUMALINK_NODES];
101static unsigned long sn_prom_features[MAX_PROM_FEATURE_SETS]; 99static unsigned long sn_prom_features[MAX_PROM_FEATURE_SETS];
102 100
103EXPORT_SYMBOL(physical_node_map); 101EXPORT_SYMBOL(physical_node_map);
104 102
105int numionodes; 103int num_cnodes;
106 104
107static void sn_init_pdas(char **); 105static void sn_init_pdas(char **);
108static void scan_for_ionodes(void); 106static void build_cnode_tables(void);
109 107
110static nodepda_t *nodepdaindr[MAX_COMPACT_NODES]; 108static nodepda_t *nodepdaindr[MAX_COMPACT_NODES];
111 109
@@ -140,19 +138,6 @@ char drive_info[4 * 16];
140#endif 138#endif
141 139
142/* 140/*
143 * Get nasid of current cpu early in boot before nodepda is initialized
144 */
145static int
146boot_get_nasid(void)
147{
148 int nasid;
149
150 if (ia64_sn_get_sapic_info(get_sapicid(), &nasid, NULL, NULL))
151 BUG();
152 return nasid;
153}
154
155/*
156 * This routine can only be used during init, since 141 * This routine can only be used during init, since
157 * smp_boot_data is an init data structure. 142 * smp_boot_data is an init data structure.
158 * We have to use smp_boot_data.cpu_phys_id to find 143 * We have to use smp_boot_data.cpu_phys_id to find
@@ -223,7 +208,6 @@ void __init early_sn_setup(void)
223} 208}
224 209
225extern int platform_intr_list[]; 210extern int platform_intr_list[];
226extern nasid_t master_nasid;
227static int __initdata shub_1_1_found = 0; 211static int __initdata shub_1_1_found = 0;
228 212
229/* 213/*
@@ -269,7 +253,6 @@ static void __init sn_check_for_wars(void)
269void __init sn_setup(char **cmdline_p) 253void __init sn_setup(char **cmdline_p)
270{ 254{
271 long status, ticks_per_sec, drift; 255 long status, ticks_per_sec, drift;
272 int pxm;
273 u32 version = sn_sal_rev(); 256 u32 version = sn_sal_rev();
274 extern void sn_cpu_init(void); 257 extern void sn_cpu_init(void);
275 258
@@ -300,11 +283,10 @@ void __init sn_setup(char **cmdline_p)
300 283
301 MAX_DMA_ADDRESS = PAGE_OFFSET + MAX_PHYS_MEMORY; 284 MAX_DMA_ADDRESS = PAGE_OFFSET + MAX_PHYS_MEMORY;
302 285
303 memset(physical_node_map, -1, sizeof(physical_node_map)); 286 /*
304 for (pxm = 0; pxm < MAX_PXM_DOMAINS; pxm++) 287 * Build the tables for managing cnodes.
305 if (pxm_to_nid_map[pxm] != -1) 288 */
306 physical_node_map[pxm_to_nasid(pxm)] = 289 build_cnode_tables();
307 pxm_to_nid_map[pxm];
308 290
309 /* 291 /*
310 * Old PROMs do not provide an ACPI FADT. Disable legacy keyboard 292 * Old PROMs do not provide an ACPI FADT. Disable legacy keyboard
@@ -319,8 +301,6 @@ void __init sn_setup(char **cmdline_p)
319 301
320 printk("SGI SAL version %x.%02x\n", version >> 8, version & 0x00FF); 302 printk("SGI SAL version %x.%02x\n", version >> 8, version & 0x00FF);
321 303
322 master_nasid = boot_get_nasid();
323
324 status = 304 status =
325 ia64_sal_freq_base(SAL_FREQ_BASE_REALTIME_CLOCK, &ticks_per_sec, 305 ia64_sal_freq_base(SAL_FREQ_BASE_REALTIME_CLOCK, &ticks_per_sec,
326 &drift); 306 &drift);
@@ -378,15 +358,6 @@ static void __init sn_init_pdas(char **cmdline_p)
378{ 358{
379 cnodeid_t cnode; 359 cnodeid_t cnode;
380 360
381 memset(sn_cnodeid_to_nasid, -1,
382 sizeof(__ia64_per_cpu_var(__sn_cnodeid_to_nasid)));
383 for_each_online_node(cnode)
384 sn_cnodeid_to_nasid[cnode] =
385 pxm_to_nasid(nid_to_pxm_map[cnode]);
386
387 numionodes = num_online_nodes();
388 scan_for_ionodes();
389
390 /* 361 /*
391 * Allocate & initalize the nodepda for each node. 362 * Allocate & initalize the nodepda for each node.
392 */ 363 */
@@ -402,7 +373,7 @@ static void __init sn_init_pdas(char **cmdline_p)
402 /* 373 /*
403 * Allocate & initialize nodepda for TIOs. For now, put them on node 0. 374 * Allocate & initialize nodepda for TIOs. For now, put them on node 0.
404 */ 375 */
405 for (cnode = num_online_nodes(); cnode < numionodes; cnode++) { 376 for (cnode = num_online_nodes(); cnode < num_cnodes; cnode++) {
406 nodepdaindr[cnode] = 377 nodepdaindr[cnode] =
407 alloc_bootmem_node(NODE_DATA(0), sizeof(nodepda_t)); 378 alloc_bootmem_node(NODE_DATA(0), sizeof(nodepda_t));
408 memset(nodepdaindr[cnode], 0, sizeof(nodepda_t)); 379 memset(nodepdaindr[cnode], 0, sizeof(nodepda_t));
@@ -411,7 +382,7 @@ static void __init sn_init_pdas(char **cmdline_p)
411 /* 382 /*
412 * Now copy the array of nodepda pointers to each nodepda. 383 * Now copy the array of nodepda pointers to each nodepda.
413 */ 384 */
414 for (cnode = 0; cnode < numionodes; cnode++) 385 for (cnode = 0; cnode < num_cnodes; cnode++)
415 memcpy(nodepdaindr[cnode]->pernode_pdaindr, nodepdaindr, 386 memcpy(nodepdaindr[cnode]->pernode_pdaindr, nodepdaindr,
416 sizeof(nodepdaindr)); 387 sizeof(nodepdaindr));
417 388
@@ -428,7 +399,7 @@ static void __init sn_init_pdas(char **cmdline_p)
428 * Initialize the per node hubdev. This includes IO Nodes and 399 * Initialize the per node hubdev. This includes IO Nodes and
429 * headless/memless nodes. 400 * headless/memless nodes.
430 */ 401 */
431 for (cnode = 0; cnode < numionodes; cnode++) { 402 for (cnode = 0; cnode < num_cnodes; cnode++) {
432 hubdev_init_node(nodepdaindr[cnode], cnode); 403 hubdev_init_node(nodepdaindr[cnode], cnode);
433 } 404 }
434} 405}
@@ -553,87 +524,58 @@ void __init sn_cpu_init(void)
553} 524}
554 525
555/* 526/*
556 * Scan klconfig for ionodes. Add the nasids to the 527 * Build tables for converting between NASIDs and cnodes.
557 * physical_node_map and the pda and increment numionodes.
558 */ 528 */
529static inline int __init board_needs_cnode(int type)
530{
531 return (type == KLTYPE_SNIA || type == KLTYPE_TIO);
532}
559 533
560static void __init scan_for_ionodes(void) 534void __init build_cnode_tables(void)
561{ 535{
562 int nasid = 0; 536 int nasid;
537 int node;
563 lboard_t *brd; 538 lboard_t *brd;
564 539
565 /* fakeprom does not support klgraph */ 540 memset(physical_node_map, -1, sizeof(physical_node_map));
566 if (IS_RUNNING_ON_FAKE_PROM()) 541 memset(sn_cnodeid_to_nasid, -1,
567 return; 542 sizeof(__ia64_per_cpu_var(__sn_cnodeid_to_nasid)));
568
569 /* Setup ionodes with memory */
570 for (nasid = 0; nasid < MAX_PHYSNODE_ID; nasid += 2) {
571 char *klgraph_header;
572 cnodeid_t cnodeid;
573
574 if (physical_node_map[nasid] == -1)
575 continue;
576 543
577 cnodeid = -1; 544 /*
578 klgraph_header = __va(ia64_sn_get_klconfig_addr(nasid)); 545 * First populate the tables with C/M bricks. This ensures that
579 if (!klgraph_header) { 546 * cnode == node for all C & M bricks.
580 BUG(); /* All nodes must have klconfig tables! */ 547 */
581 } 548 for_each_online_node(node) {
582 cnodeid = nasid_to_cnodeid(nasid); 549 nasid = pxm_to_nasid(nid_to_pxm_map[node]);
583 root_lboard[cnodeid] = (lboard_t *) 550 sn_cnodeid_to_nasid[node] = nasid;
584 NODE_OFFSET_TO_LBOARD((nasid), 551 physical_node_map[nasid] = node;
585 ((kl_config_hdr_t
586 *) (klgraph_header))->
587 ch_board_info);
588 } 552 }
589 553
590 /* Scan headless/memless IO Nodes. */ 554 /*
591 for (nasid = 0; nasid < MAX_PHYSNODE_ID; nasid += 2) { 555 * num_cnodes is total number of C/M/TIO bricks. Because of the 256 node
592 /* if there's no nasid, don't try to read the klconfig on the node */ 556 * limit on the number of nodes, we can't use the generic node numbers
593 if (physical_node_map[nasid] == -1) 557 * for this. Note that num_cnodes is incremented below as TIOs or
594 continue; 558 * headless/memoryless nodes are discovered.
595 brd = find_lboard_any((lboard_t *) 559 */
596 root_lboard[nasid_to_cnodeid(nasid)], 560 num_cnodes = num_online_nodes();
597 KLTYPE_SNIA);
598 if (brd) {
599 brd = KLCF_NEXT_ANY(brd); /* Skip this node's lboard */
600 if (!brd)
601 continue;
602 }
603
604 brd = find_lboard_any(brd, KLTYPE_SNIA);
605 561
606 while (brd) { 562 /* fakeprom does not support klgraph */
607 sn_cnodeid_to_nasid[numionodes] = brd->brd_nasid; 563 if (IS_RUNNING_ON_FAKE_PROM())
608 physical_node_map[brd->brd_nasid] = numionodes; 564 return;
609 root_lboard[numionodes] = brd;
610 numionodes++;
611 brd = KLCF_NEXT_ANY(brd);
612 if (!brd)
613 break;
614
615 brd = find_lboard_any(brd, KLTYPE_SNIA);
616 }
617 }
618 565
619 /* Scan for TIO nodes. */ 566 /* Find TIOs & headless/memoryless nodes and add them to the tables */
620 for (nasid = 0; nasid < MAX_PHYSNODE_ID; nasid += 2) { 567 for_each_online_node(node) {
621 /* if there's no nasid, don't try to read the klconfig on the node */ 568 kl_config_hdr_t *klgraph_header;
622 if (physical_node_map[nasid] == -1) 569 nasid = cnodeid_to_nasid(node);
623 continue; 570 if ((klgraph_header = ia64_sn_get_klconfig_addr(nasid)) == NULL)
624 brd = find_lboard_any((lboard_t *) 571 BUG();
625 root_lboard[nasid_to_cnodeid(nasid)], 572 brd = NODE_OFFSET_TO_LBOARD(nasid, klgraph_header->ch_board_info);
626 KLTYPE_TIO);
627 while (brd) { 573 while (brd) {
628 sn_cnodeid_to_nasid[numionodes] = brd->brd_nasid; 574 if (board_needs_cnode(brd->brd_type) && physical_node_map[brd->brd_nasid] < 0) {
629 physical_node_map[brd->brd_nasid] = numionodes; 575 sn_cnodeid_to_nasid[num_cnodes] = brd->brd_nasid;
630 root_lboard[numionodes] = brd; 576 physical_node_map[brd->brd_nasid] = num_cnodes++;
631 numionodes++; 577 }
632 brd = KLCF_NEXT_ANY(brd); 578 brd = find_lboard_next(brd);
633 if (!brd)
634 break;
635
636 brd = find_lboard_any(brd, KLTYPE_TIO);
637 } 579 }
638 } 580 }
639} 581}
diff --git a/arch/ia64/sn/kernel/sn2/sn2_smp.c b/arch/ia64/sn/kernel/sn2/sn2_smp.c
index 0a4ee50c302f..49b530c39a42 100644
--- a/arch/ia64/sn/kernel/sn2/sn2_smp.c
+++ b/arch/ia64/sn/kernel/sn2/sn2_smp.c
@@ -177,6 +177,7 @@ void sn_tlb_migrate_finish(struct mm_struct *mm)
177 177
178/** 178/**
179 * sn2_global_tlb_purge - globally purge translation cache of virtual address range 179 * sn2_global_tlb_purge - globally purge translation cache of virtual address range
180 * @mm: mm_struct containing virtual address range
180 * @start: start of virtual address range 181 * @start: start of virtual address range
181 * @end: end of virtual address range 182 * @end: end of virtual address range
182 * @nbits: specifies number of bytes to purge per instruction (num = 1<<(nbits & 0xfc)) 183 * @nbits: specifies number of bytes to purge per instruction (num = 1<<(nbits & 0xfc))
@@ -188,21 +189,22 @@ void sn_tlb_migrate_finish(struct mm_struct *mm)
188 * - cpu_vm_mask is a bit mask that indicates which cpus have loaded the context. 189 * - cpu_vm_mask is a bit mask that indicates which cpus have loaded the context.
189 * - cpu_vm_mask is converted into a nodemask of the nodes containing the 190 * - cpu_vm_mask is converted into a nodemask of the nodes containing the
190 * cpus in cpu_vm_mask. 191 * cpus in cpu_vm_mask.
191 * - if only one bit is set in cpu_vm_mask & it is the current cpu, 192 * - if only one bit is set in cpu_vm_mask & it is the current cpu & the
192 * then only the local TLB needs to be flushed. This flushing can be done 193 * process is purging its own virtual address range, then only the
193 * using ptc.l. This is the common case & avoids the global spinlock. 194 * local TLB needs to be flushed. This flushing can be done using
195 * ptc.l. This is the common case & avoids the global spinlock.
194 * - if multiple cpus have loaded the context, then flushing has to be 196 * - if multiple cpus have loaded the context, then flushing has to be
195 * done with ptc.g/MMRs under protection of the global ptc_lock. 197 * done with ptc.g/MMRs under protection of the global ptc_lock.
196 */ 198 */
197 199
198void 200void
199sn2_global_tlb_purge(unsigned long start, unsigned long end, 201sn2_global_tlb_purge(struct mm_struct *mm, unsigned long start,
200 unsigned long nbits) 202 unsigned long end, unsigned long nbits)
201{ 203{
202 int i, opt, shub1, cnode, mynasid, cpu, lcpu = 0, nasid, flushed = 0; 204 int i, opt, shub1, cnode, mynasid, cpu, lcpu = 0, nasid, flushed = 0;
205 int mymm = (mm == current->active_mm);
203 volatile unsigned long *ptc0, *ptc1; 206 volatile unsigned long *ptc0, *ptc1;
204 unsigned long itc, itc2, flags, data0 = 0, data1 = 0; 207 unsigned long itc, itc2, flags, data0 = 0, data1 = 0, rr_value;
205 struct mm_struct *mm = current->active_mm;
206 short nasids[MAX_NUMNODES], nix; 208 short nasids[MAX_NUMNODES], nix;
207 nodemask_t nodes_flushed; 209 nodemask_t nodes_flushed;
208 210
@@ -216,9 +218,12 @@ sn2_global_tlb_purge(unsigned long start, unsigned long end,
216 i++; 218 i++;
217 } 219 }
218 220
221 if (i == 0)
222 return;
223
219 preempt_disable(); 224 preempt_disable();
220 225
221 if (likely(i == 1 && lcpu == smp_processor_id())) { 226 if (likely(i == 1 && lcpu == smp_processor_id() && mymm)) {
222 do { 227 do {
223 ia64_ptcl(start, nbits << 2); 228 ia64_ptcl(start, nbits << 2);
224 start += (1UL << nbits); 229 start += (1UL << nbits);
@@ -229,7 +234,7 @@ sn2_global_tlb_purge(unsigned long start, unsigned long end,
229 return; 234 return;
230 } 235 }
231 236
232 if (atomic_read(&mm->mm_users) == 1) { 237 if (atomic_read(&mm->mm_users) == 1 && mymm) {
233 flush_tlb_mm(mm); 238 flush_tlb_mm(mm);
234 __get_cpu_var(ptcstats).change_rid++; 239 __get_cpu_var(ptcstats).change_rid++;
235 preempt_enable(); 240 preempt_enable();
@@ -241,11 +246,13 @@ sn2_global_tlb_purge(unsigned long start, unsigned long end,
241 for_each_node_mask(cnode, nodes_flushed) 246 for_each_node_mask(cnode, nodes_flushed)
242 nasids[nix++] = cnodeid_to_nasid(cnode); 247 nasids[nix++] = cnodeid_to_nasid(cnode);
243 248
249 rr_value = (mm->context << 3) | REGION_NUMBER(start);
250
244 shub1 = is_shub1(); 251 shub1 = is_shub1();
245 if (shub1) { 252 if (shub1) {
246 data0 = (1UL << SH1_PTC_0_A_SHFT) | 253 data0 = (1UL << SH1_PTC_0_A_SHFT) |
247 (nbits << SH1_PTC_0_PS_SHFT) | 254 (nbits << SH1_PTC_0_PS_SHFT) |
248 ((ia64_get_rr(start) >> 8) << SH1_PTC_0_RID_SHFT) | 255 (rr_value << SH1_PTC_0_RID_SHFT) |
249 (1UL << SH1_PTC_0_START_SHFT); 256 (1UL << SH1_PTC_0_START_SHFT);
250 ptc0 = (long *)GLOBAL_MMR_PHYS_ADDR(0, SH1_PTC_0); 257 ptc0 = (long *)GLOBAL_MMR_PHYS_ADDR(0, SH1_PTC_0);
251 ptc1 = (long *)GLOBAL_MMR_PHYS_ADDR(0, SH1_PTC_1); 258 ptc1 = (long *)GLOBAL_MMR_PHYS_ADDR(0, SH1_PTC_1);
@@ -254,7 +261,7 @@ sn2_global_tlb_purge(unsigned long start, unsigned long end,
254 (nbits << SH2_PTC_PS_SHFT) | 261 (nbits << SH2_PTC_PS_SHFT) |
255 (1UL << SH2_PTC_START_SHFT); 262 (1UL << SH2_PTC_START_SHFT);
256 ptc0 = (long *)GLOBAL_MMR_PHYS_ADDR(0, SH2_PTC + 263 ptc0 = (long *)GLOBAL_MMR_PHYS_ADDR(0, SH2_PTC +
257 ((ia64_get_rr(start) >> 8) << SH2_PTC_RID_SHFT) ); 264 (rr_value << SH2_PTC_RID_SHFT));
258 ptc1 = NULL; 265 ptc1 = NULL;
259 } 266 }
260 267
@@ -275,7 +282,7 @@ sn2_global_tlb_purge(unsigned long start, unsigned long end,
275 data0 = (data0 & ~SH2_PTC_ADDR_MASK) | (start & SH2_PTC_ADDR_MASK); 282 data0 = (data0 & ~SH2_PTC_ADDR_MASK) | (start & SH2_PTC_ADDR_MASK);
276 for (i = 0; i < nix; i++) { 283 for (i = 0; i < nix; i++) {
277 nasid = nasids[i]; 284 nasid = nasids[i];
278 if ((!(sn2_ptctest & 3)) && unlikely(nasid == mynasid)) { 285 if ((!(sn2_ptctest & 3)) && unlikely(nasid == mynasid && mymm)) {
279 ia64_ptcga(start, nbits << 2); 286 ia64_ptcga(start, nbits << 2);
280 ia64_srlz_i(); 287 ia64_srlz_i();
281 } else { 288 } else {
diff --git a/arch/ia64/sn/kernel/sn2/sn_hwperf.c b/arch/ia64/sn/kernel/sn2/sn_hwperf.c
index 0513aacac8c1..6c6fbca3229c 100644
--- a/arch/ia64/sn/kernel/sn2/sn_hwperf.c
+++ b/arch/ia64/sn/kernel/sn2/sn_hwperf.c
@@ -476,8 +476,8 @@ static int sn_topology_show(struct seq_file *s, void *d)
476 for_each_online_cpu(j) { 476 for_each_online_cpu(j) {
477 seq_printf(s, j ? ":%d" : ", dist %d", 477 seq_printf(s, j ? ":%d" : ", dist %d",
478 node_distance( 478 node_distance(
479 cpuid_to_cnodeid(i), 479 cpu_to_node(i),
480 cpuid_to_cnodeid(j))); 480 cpu_to_node(j)));
481 } 481 }
482 seq_putc(s, '\n'); 482 seq_putc(s, '\n');
483 } 483 }
diff --git a/arch/ia64/sn/kernel/tiocx.c b/arch/ia64/sn/kernel/tiocx.c
index b45db5133f55..0d8592a745a7 100644
--- a/arch/ia64/sn/kernel/tiocx.c
+++ b/arch/ia64/sn/kernel/tiocx.c
@@ -183,11 +183,12 @@ int cx_driver_unregister(struct cx_drv *cx_driver)
183 * @part_num: device's part number 183 * @part_num: device's part number
184 * @mfg_num: device's manufacturer number 184 * @mfg_num: device's manufacturer number
185 * @hubdev: hub info associated with this device 185 * @hubdev: hub info associated with this device
186 * @bt: board type of the device
186 * 187 *
187 */ 188 */
188int 189int
189cx_device_register(nasid_t nasid, int part_num, int mfg_num, 190cx_device_register(nasid_t nasid, int part_num, int mfg_num,
190 struct hubdev_info *hubdev) 191 struct hubdev_info *hubdev, int bt)
191{ 192{
192 struct cx_dev *cx_dev; 193 struct cx_dev *cx_dev;
193 194
@@ -200,6 +201,7 @@ cx_device_register(nasid_t nasid, int part_num, int mfg_num,
200 cx_dev->cx_id.mfg_num = mfg_num; 201 cx_dev->cx_id.mfg_num = mfg_num;
201 cx_dev->cx_id.nasid = nasid; 202 cx_dev->cx_id.nasid = nasid;
202 cx_dev->hubdev = hubdev; 203 cx_dev->hubdev = hubdev;
204 cx_dev->bt = bt;
203 205
204 cx_dev->dev.parent = NULL; 206 cx_dev->dev.parent = NULL;
205 cx_dev->dev.bus = &tiocx_bus_type; 207 cx_dev->dev.bus = &tiocx_bus_type;
@@ -238,7 +240,8 @@ static int cx_device_reload(struct cx_dev *cx_dev)
238{ 240{
239 cx_device_unregister(cx_dev); 241 cx_device_unregister(cx_dev);
240 return cx_device_register(cx_dev->cx_id.nasid, cx_dev->cx_id.part_num, 242 return cx_device_register(cx_dev->cx_id.nasid, cx_dev->cx_id.part_num,
241 cx_dev->cx_id.mfg_num, cx_dev->hubdev); 243 cx_dev->cx_id.mfg_num, cx_dev->hubdev,
244 cx_dev->bt);
242} 245}
243 246
244static inline uint64_t tiocx_intr_alloc(nasid_t nasid, int widget, 247static inline uint64_t tiocx_intr_alloc(nasid_t nasid, int widget,
@@ -365,26 +368,20 @@ static void tio_corelet_reset(nasid_t nasid, int corelet)
365 udelay(2000); 368 udelay(2000);
366} 369}
367 370
368static int tiocx_btchar_get(int nasid) 371static int is_fpga_tio(int nasid, int *bt)
369{ 372{
370 moduleid_t module_id; 373 int ioboard_type;
371 geoid_t geoid;
372 int cnodeid;
373
374 cnodeid = nasid_to_cnodeid(nasid);
375 geoid = cnodeid_get_geoid(cnodeid);
376 module_id = geo_module(geoid);
377 return MODULE_GET_BTCHAR(module_id);
378}
379 374
380static int is_fpga_brick(int nasid) 375 ioboard_type = ia64_sn_sysctl_ioboard_get(nasid);
381{ 376
382 switch (tiocx_btchar_get(nasid)) { 377 switch (ioboard_type) {
383 case L1_BRICKTYPE_SA: 378 case L1_BRICKTYPE_SA:
384 case L1_BRICKTYPE_ATHENA: 379 case L1_BRICKTYPE_ATHENA:
385 case L1_BRICKTYPE_DAYTONA: 380 case L1_BOARDTYPE_DAYTONA:
381 *bt = ioboard_type;
386 return 1; 382 return 1;
387 } 383 }
384
388 return 0; 385 return 0;
389} 386}
390 387
@@ -407,16 +404,22 @@ static int tiocx_reload(struct cx_dev *cx_dev)
407 404
408 if (bitstream_loaded(nasid)) { 405 if (bitstream_loaded(nasid)) {
409 uint64_t cx_id; 406 uint64_t cx_id;
410 407 int rv;
411 cx_id = 408
412 *(volatile uint64_t *)(TIO_SWIN_BASE(nasid, TIOCX_CORELET) + 409 rv = ia64_sn_sysctl_tio_clock_reset(nasid);
410 if (rv) {
411 printk(KERN_ALERT "CX port JTAG reset failed.\n");
412 } else {
413 cx_id = *(volatile uint64_t *)
414 (TIO_SWIN_BASE(nasid, TIOCX_CORELET) +
413 WIDGET_ID); 415 WIDGET_ID);
414 part_num = XWIDGET_PART_NUM(cx_id); 416 part_num = XWIDGET_PART_NUM(cx_id);
415 mfg_num = XWIDGET_MFG_NUM(cx_id); 417 mfg_num = XWIDGET_MFG_NUM(cx_id);
416 DBG("part= 0x%x, mfg= 0x%x\n", part_num, mfg_num); 418 DBG("part= 0x%x, mfg= 0x%x\n", part_num, mfg_num);
417 /* just ignore it if it's a CE */ 419 /* just ignore it if it's a CE */
418 if (part_num == TIO_CE_ASIC_PARTNUM) 420 if (part_num == TIO_CE_ASIC_PARTNUM)
419 return 0; 421 return 0;
422 }
420 } 423 }
421 424
422 cx_dev->cx_id.part_num = part_num; 425 cx_dev->cx_id.part_num = part_num;
@@ -436,10 +439,10 @@ static ssize_t show_cxdev_control(struct device *dev, struct device_attribute *a
436{ 439{
437 struct cx_dev *cx_dev = to_cx_dev(dev); 440 struct cx_dev *cx_dev = to_cx_dev(dev);
438 441
439 return sprintf(buf, "0x%x 0x%x 0x%x %d\n", 442 return sprintf(buf, "0x%x 0x%x 0x%x 0x%x\n",
440 cx_dev->cx_id.nasid, 443 cx_dev->cx_id.nasid,
441 cx_dev->cx_id.part_num, cx_dev->cx_id.mfg_num, 444 cx_dev->cx_id.part_num, cx_dev->cx_id.mfg_num,
442 tiocx_btchar_get(cx_dev->cx_id.nasid)); 445 cx_dev->bt);
443} 446}
444 447
445static ssize_t store_cxdev_control(struct device *dev, struct device_attribute *attr, const char *buf, 448static ssize_t store_cxdev_control(struct device *dev, struct device_attribute *attr, const char *buf,
@@ -486,13 +489,13 @@ static int __init tiocx_init(void)
486 489
487 bus_register(&tiocx_bus_type); 490 bus_register(&tiocx_bus_type);
488 491
489 for (cnodeid = 0; cnodeid < MAX_COMPACT_NODES; cnodeid++) { 492 for (cnodeid = 0; cnodeid < num_cnodes; cnodeid++) {
490 nasid_t nasid; 493 nasid_t nasid;
494 int bt;
491 495
492 if ((nasid = cnodeid_to_nasid(cnodeid)) < 0) 496 nasid = cnodeid_to_nasid(cnodeid);
493 break; /* No more nasids .. bail out of loop */
494 497
495 if ((nasid & 0x1) && is_fpga_brick(nasid)) { 498 if ((nasid & 0x1) && is_fpga_tio(nasid, &bt)) {
496 struct hubdev_info *hubdev; 499 struct hubdev_info *hubdev;
497 struct xwidget_info *widgetp; 500 struct xwidget_info *widgetp;
498 501
@@ -512,7 +515,7 @@ static int __init tiocx_init(void)
512 515
513 if (cx_device_register 516 if (cx_device_register
514 (nasid, widgetp->xwi_hwid.part_num, 517 (nasid, widgetp->xwi_hwid.part_num,
515 widgetp->xwi_hwid.mfg_num, hubdev) < 0) 518 widgetp->xwi_hwid.mfg_num, hubdev, bt) < 0)
516 return -ENXIO; 519 return -ENXIO;
517 else 520 else
518 found_tiocx_device++; 521 found_tiocx_device++;
diff --git a/arch/ia64/sn/kernel/xpc.h b/arch/ia64/sn/kernel/xpc.h
index d0ee635daf2e..fbcedc7c27fa 100644
--- a/arch/ia64/sn/kernel/xpc.h
+++ b/arch/ia64/sn/kernel/xpc.h
@@ -57,7 +57,7 @@
57#define XPC_NASID_FROM_W_B(_w, _b) (((_w) * 64 + (_b)) * 2) 57#define XPC_NASID_FROM_W_B(_w, _b) (((_w) * 64 + (_b)) * 2)
58 58
59#define XPC_HB_DEFAULT_INTERVAL 5 /* incr HB every x secs */ 59#define XPC_HB_DEFAULT_INTERVAL 5 /* incr HB every x secs */
60#define XPC_HB_CHECK_DEFAULT_TIMEOUT 20 /* check HB every x secs */ 60#define XPC_HB_CHECK_DEFAULT_INTERVAL 20 /* check HB every x secs */
61 61
62/* define the process name of HB checker and the CPU it is pinned to */ 62/* define the process name of HB checker and the CPU it is pinned to */
63#define XPC_HB_CHECK_THREAD_NAME "xpc_hb" 63#define XPC_HB_CHECK_THREAD_NAME "xpc_hb"
@@ -67,34 +67,82 @@
67#define XPC_DISCOVERY_THREAD_NAME "xpc_discovery" 67#define XPC_DISCOVERY_THREAD_NAME "xpc_discovery"
68 68
69 69
70#define XPC_HB_ALLOWED(_p, _v) ((_v)->heartbeating_to_mask & (1UL << (_p)))
71#define XPC_ALLOW_HB(_p, _v) (_v)->heartbeating_to_mask |= (1UL << (_p))
72#define XPC_DISALLOW_HB(_p, _v) (_v)->heartbeating_to_mask &= (~(1UL << (_p)))
73
74
75/* 70/*
76 * Reserved Page provided by SAL. 71 * the reserved page
72 *
73 * SAL reserves one page of memory per partition for XPC. Though a full page
74 * in length (16384 bytes), its starting address is not page aligned, but it
75 * is cacheline aligned. The reserved page consists of the following:
76 *
77 * reserved page header
78 *
79 * The first cacheline of the reserved page contains the header
80 * (struct xpc_rsvd_page). Before SAL initialization has completed,
81 * SAL has set up the following fields of the reserved page header:
82 * SAL_signature, SAL_version, partid, and nasids_size. The other
83 * fields are set up by XPC. (xpc_rsvd_page points to the local
84 * partition's reserved page.)
77 * 85 *
78 * SAL provides one page per partition of reserved memory. When SAL 86 * part_nasids mask
79 * initialization is complete, SAL_signature, SAL_version, partid, 87 * mach_nasids mask
80 * part_nasids, and mach_nasids are set. 88 *
89 * SAL also sets up two bitmaps (or masks), one that reflects the actual
90 * nasids in this partition (part_nasids), and the other that reflects
91 * the actual nasids in the entire machine (mach_nasids). We're only
92 * interested in the even numbered nasids (which contain the processors
93 * and/or memory), so we only need half as many bits to represent the
94 * nasids. The part_nasids mask is located starting at the first cacheline
95 * following the reserved page header. The mach_nasids mask follows right
96 * after the part_nasids mask. The size in bytes of each mask is reflected
97 * by the reserved page header field 'nasids_size'. (Local partition's
98 * mask pointers are xpc_part_nasids and xpc_mach_nasids.)
99 *
100 * vars
101 * vars part
102 *
103 * Immediately following the mach_nasids mask are the XPC variables
104 * required by other partitions. First are those that are generic to all
105 * partitions (vars), followed on the next available cacheline by those
106 * which are partition specific (vars part). These are setup by XPC.
107 * (Local partition's vars pointers are xpc_vars and xpc_vars_part.)
81 * 108 *
82 * Note: Until vars_pa is set, the partition XPC code has not been initialized. 109 * Note: Until vars_pa is set, the partition XPC code has not been initialized.
83 */ 110 */
84struct xpc_rsvd_page { 111struct xpc_rsvd_page {
85 u64 SAL_signature; /* SAL unique signature */ 112 u64 SAL_signature; /* SAL: unique signature */
86 u64 SAL_version; /* SAL specified version */ 113 u64 SAL_version; /* SAL: version */
87 u8 partid; /* partition ID from SAL */ 114 u8 partid; /* SAL: partition ID */
88 u8 version; 115 u8 version;
89 u8 pad[6]; /* pad to u64 align */ 116 u8 pad1[6]; /* align to next u64 in cacheline */
90 volatile u64 vars_pa; 117 volatile u64 vars_pa;
91 u64 part_nasids[XP_NASID_MASK_WORDS] ____cacheline_aligned; 118 struct timespec stamp; /* time when reserved page was setup by XPC */
92 u64 mach_nasids[XP_NASID_MASK_WORDS] ____cacheline_aligned; 119 u64 pad2[9]; /* align to last u64 in cacheline */
120 u64 nasids_size; /* SAL: size of each nasid mask in bytes */
93}; 121};
94#define XPC_RP_VERSION _XPC_VERSION(1,0) /* version 1.0 of the reserved page */
95 122
96#define XPC_RSVD_PAGE_ALIGNED_SIZE \ 123#define XPC_RP_VERSION _XPC_VERSION(1,1) /* version 1.1 of the reserved page */
97 (L1_CACHE_ALIGN(sizeof(struct xpc_rsvd_page))) 124
125#define XPC_SUPPORTS_RP_STAMP(_version) \
126 (_version >= _XPC_VERSION(1,1))
127
128/*
129 * compare stamps - the return value is:
130 *
131 * < 0, if stamp1 < stamp2
132 * = 0, if stamp1 == stamp2
133 * > 0, if stamp1 > stamp2
134 */
135static inline int
136xpc_compare_stamps(struct timespec *stamp1, struct timespec *stamp2)
137{
138 int ret;
139
140
141 if ((ret = stamp1->tv_sec - stamp2->tv_sec) == 0) {
142 ret = stamp1->tv_nsec - stamp2->tv_nsec;
143 }
144 return ret;
145}
98 146
99 147
100/* 148/*
@@ -121,11 +169,58 @@ struct xpc_vars {
121 u64 vars_part_pa; 169 u64 vars_part_pa;
122 u64 amos_page_pa; /* paddr of page of AMOs from MSPEC driver */ 170 u64 amos_page_pa; /* paddr of page of AMOs from MSPEC driver */
123 AMO_t *amos_page; /* vaddr of page of AMOs from MSPEC driver */ 171 AMO_t *amos_page; /* vaddr of page of AMOs from MSPEC driver */
124 AMO_t *act_amos; /* pointer to the first activation AMO */
125}; 172};
126#define XPC_V_VERSION _XPC_VERSION(3,0) /* version 3.0 of the cross vars */
127 173
128#define XPC_VARS_ALIGNED_SIZE (L1_CACHE_ALIGN(sizeof(struct xpc_vars))) 174#define XPC_V_VERSION _XPC_VERSION(3,1) /* version 3.1 of the cross vars */
175
176#define XPC_SUPPORTS_DISENGAGE_REQUEST(_version) \
177 (_version >= _XPC_VERSION(3,1))
178
179
180static inline int
181xpc_hb_allowed(partid_t partid, struct xpc_vars *vars)
182{
183 return ((vars->heartbeating_to_mask & (1UL << partid)) != 0);
184}
185
186static inline void
187xpc_allow_hb(partid_t partid, struct xpc_vars *vars)
188{
189 u64 old_mask, new_mask;
190
191 do {
192 old_mask = vars->heartbeating_to_mask;
193 new_mask = (old_mask | (1UL << partid));
194 } while (cmpxchg(&vars->heartbeating_to_mask, old_mask, new_mask) !=
195 old_mask);
196}
197
198static inline void
199xpc_disallow_hb(partid_t partid, struct xpc_vars *vars)
200{
201 u64 old_mask, new_mask;
202
203 do {
204 old_mask = vars->heartbeating_to_mask;
205 new_mask = (old_mask & ~(1UL << partid));
206 } while (cmpxchg(&vars->heartbeating_to_mask, old_mask, new_mask) !=
207 old_mask);
208}
209
210
211/*
212 * The AMOs page consists of a number of AMO variables which are divided into
213 * four groups, The first two groups are used to identify an IRQ's sender.
214 * These two groups consist of 64 and 128 AMO variables respectively. The last
215 * two groups, consisting of just one AMO variable each, are used to identify
216 * the remote partitions that are currently engaged (from the viewpoint of
217 * the XPC running on the remote partition).
218 */
219#define XPC_NOTIFY_IRQ_AMOS 0
220#define XPC_ACTIVATE_IRQ_AMOS (XPC_NOTIFY_IRQ_AMOS + XP_MAX_PARTITIONS)
221#define XPC_ENGAGED_PARTITIONS_AMO (XPC_ACTIVATE_IRQ_AMOS + XP_NASID_MASK_WORDS)
222#define XPC_DISENGAGE_REQUEST_AMO (XPC_ENGAGED_PARTITIONS_AMO + 1)
223
129 224
130/* 225/*
131 * The following structure describes the per partition specific variables. 226 * The following structure describes the per partition specific variables.
@@ -165,6 +260,16 @@ struct xpc_vars_part {
165#define XPC_VP_MAGIC2 0x0073726176435058L /* 'XPCvars\0'L (little endian) */ 260#define XPC_VP_MAGIC2 0x0073726176435058L /* 'XPCvars\0'L (little endian) */
166 261
167 262
263/* the reserved page sizes and offsets */
264
265#define XPC_RP_HEADER_SIZE L1_CACHE_ALIGN(sizeof(struct xpc_rsvd_page))
266#define XPC_RP_VARS_SIZE L1_CACHE_ALIGN(sizeof(struct xpc_vars))
267
268#define XPC_RP_PART_NASIDS(_rp) (u64 *) ((u8 *) _rp + XPC_RP_HEADER_SIZE)
269#define XPC_RP_MACH_NASIDS(_rp) (XPC_RP_PART_NASIDS(_rp) + xp_nasid_mask_words)
270#define XPC_RP_VARS(_rp) ((struct xpc_vars *) XPC_RP_MACH_NASIDS(_rp) + xp_nasid_mask_words)
271#define XPC_RP_VARS_PART(_rp) (struct xpc_vars_part *) ((u8 *) XPC_RP_VARS(rp) + XPC_RP_VARS_SIZE)
272
168 273
169/* 274/*
170 * Functions registered by add_timer() or called by kernel_thread() only 275 * Functions registered by add_timer() or called by kernel_thread() only
@@ -349,6 +454,9 @@ struct xpc_channel {
349 atomic_t n_on_msg_allocate_wq; /* #on msg allocation wait queue */ 454 atomic_t n_on_msg_allocate_wq; /* #on msg allocation wait queue */
350 wait_queue_head_t msg_allocate_wq; /* msg allocation wait queue */ 455 wait_queue_head_t msg_allocate_wq; /* msg allocation wait queue */
351 456
457 u8 delayed_IPI_flags; /* IPI flags received, but delayed */
458 /* action until channel disconnected */
459
352 /* queue of msg senders who want to be notified when msg received */ 460 /* queue of msg senders who want to be notified when msg received */
353 461
354 atomic_t n_to_notify; /* #of msg senders to notify */ 462 atomic_t n_to_notify; /* #of msg senders to notify */
@@ -358,7 +466,7 @@ struct xpc_channel {
358 void *key; /* pointer to user's key */ 466 void *key; /* pointer to user's key */
359 467
360 struct semaphore msg_to_pull_sema; /* next msg to pull serialization */ 468 struct semaphore msg_to_pull_sema; /* next msg to pull serialization */
361 struct semaphore teardown_sema; /* wait for teardown completion */ 469 struct semaphore wdisconnect_sema; /* wait for channel disconnect */
362 470
363 struct xpc_openclose_args *local_openclose_args; /* args passed on */ 471 struct xpc_openclose_args *local_openclose_args; /* args passed on */
364 /* opening or closing of channel */ 472 /* opening or closing of channel */
@@ -410,6 +518,8 @@ struct xpc_channel {
410 518
411#define XPC_C_DISCONNECTED 0x00002000 /* channel is disconnected */ 519#define XPC_C_DISCONNECTED 0x00002000 /* channel is disconnected */
412#define XPC_C_DISCONNECTING 0x00004000 /* channel is being disconnected */ 520#define XPC_C_DISCONNECTING 0x00004000 /* channel is being disconnected */
521#define XPC_C_DISCONNECTCALLOUT 0x00008000 /* chan disconnected callout made */
522#define XPC_C_WDISCONNECT 0x00010000 /* waiting for channel disconnect */
413 523
414 524
415 525
@@ -422,6 +532,8 @@ struct xpc_partition {
422 532
423 /* XPC HB infrastructure */ 533 /* XPC HB infrastructure */
424 534
535 u8 remote_rp_version; /* version# of partition's rsvd pg */
536 struct timespec remote_rp_stamp;/* time when rsvd pg was initialized */
425 u64 remote_rp_pa; /* phys addr of partition's rsvd pg */ 537 u64 remote_rp_pa; /* phys addr of partition's rsvd pg */
426 u64 remote_vars_pa; /* phys addr of partition's vars */ 538 u64 remote_vars_pa; /* phys addr of partition's vars */
427 u64 remote_vars_part_pa; /* phys addr of partition's vars part */ 539 u64 remote_vars_part_pa; /* phys addr of partition's vars part */
@@ -432,14 +544,18 @@ struct xpc_partition {
432 u32 act_IRQ_rcvd; /* IRQs since activation */ 544 u32 act_IRQ_rcvd; /* IRQs since activation */
433 spinlock_t act_lock; /* protect updating of act_state */ 545 spinlock_t act_lock; /* protect updating of act_state */
434 u8 act_state; /* from XPC HB viewpoint */ 546 u8 act_state; /* from XPC HB viewpoint */
547 u8 remote_vars_version; /* version# of partition's vars */
435 enum xpc_retval reason; /* reason partition is deactivating */ 548 enum xpc_retval reason; /* reason partition is deactivating */
436 int reason_line; /* line# deactivation initiated from */ 549 int reason_line; /* line# deactivation initiated from */
437 int reactivate_nasid; /* nasid in partition to reactivate */ 550 int reactivate_nasid; /* nasid in partition to reactivate */
438 551
552 unsigned long disengage_request_timeout; /* timeout in jiffies */
553 struct timer_list disengage_request_timer;
554
439 555
440 /* XPC infrastructure referencing and teardown control */ 556 /* XPC infrastructure referencing and teardown control */
441 557
442 volatile u8 setup_state; /* infrastructure setup state */ 558 volatile u8 setup_state; /* infrastructure setup state */
443 wait_queue_head_t teardown_wq; /* kthread waiting to teardown infra */ 559 wait_queue_head_t teardown_wq; /* kthread waiting to teardown infra */
444 atomic_t references; /* #of references to infrastructure */ 560 atomic_t references; /* #of references to infrastructure */
445 561
@@ -454,6 +570,7 @@ struct xpc_partition {
454 570
455 u8 nchannels; /* #of defined channels supported */ 571 u8 nchannels; /* #of defined channels supported */
456 atomic_t nchannels_active; /* #of channels that are not DISCONNECTED */ 572 atomic_t nchannels_active; /* #of channels that are not DISCONNECTED */
573 atomic_t nchannels_engaged;/* #of channels engaged with remote part */
457 struct xpc_channel *channels;/* array of channel structures */ 574 struct xpc_channel *channels;/* array of channel structures */
458 575
459 void *local_GPs_base; /* base address of kmalloc'd space */ 576 void *local_GPs_base; /* base address of kmalloc'd space */
@@ -518,6 +635,7 @@ struct xpc_partition {
518#define XPC_P_TORNDOWN 0x03 /* infrastructure is torndown */ 635#define XPC_P_TORNDOWN 0x03 /* infrastructure is torndown */
519 636
520 637
638
521/* 639/*
522 * struct xpc_partition IPI_timer #of seconds to wait before checking for 640 * struct xpc_partition IPI_timer #of seconds to wait before checking for
523 * dropped IPIs. These occur whenever an IPI amo write doesn't complete until 641 * dropped IPIs. These occur whenever an IPI amo write doesn't complete until
@@ -526,6 +644,13 @@ struct xpc_partition {
526#define XPC_P_DROPPED_IPI_WAIT (0.25 * HZ) 644#define XPC_P_DROPPED_IPI_WAIT (0.25 * HZ)
527 645
528 646
647/* number of seconds to wait for other partitions to disengage */
648#define XPC_DISENGAGE_REQUEST_DEFAULT_TIMELIMIT 90
649
650/* interval in seconds to print 'waiting disengagement' messages */
651#define XPC_DISENGAGE_PRINTMSG_INTERVAL 10
652
653
529#define XPC_PARTID(_p) ((partid_t) ((_p) - &xpc_partitions[0])) 654#define XPC_PARTID(_p) ((partid_t) ((_p) - &xpc_partitions[0]))
530 655
531 656
@@ -534,24 +659,20 @@ struct xpc_partition {
534extern struct xpc_registration xpc_registrations[]; 659extern struct xpc_registration xpc_registrations[];
535 660
536 661
537/* >>> found in xpc_main.c only */ 662/* found in xpc_main.c */
538extern struct device *xpc_part; 663extern struct device *xpc_part;
539extern struct device *xpc_chan; 664extern struct device *xpc_chan;
665extern int xpc_disengage_request_timelimit;
540extern irqreturn_t xpc_notify_IRQ_handler(int, void *, struct pt_regs *); 666extern irqreturn_t xpc_notify_IRQ_handler(int, void *, struct pt_regs *);
541extern void xpc_dropped_IPI_check(struct xpc_partition *); 667extern void xpc_dropped_IPI_check(struct xpc_partition *);
668extern void xpc_activate_partition(struct xpc_partition *);
542extern void xpc_activate_kthreads(struct xpc_channel *, int); 669extern void xpc_activate_kthreads(struct xpc_channel *, int);
543extern void xpc_create_kthreads(struct xpc_channel *, int); 670extern void xpc_create_kthreads(struct xpc_channel *, int);
544extern void xpc_disconnect_wait(int); 671extern void xpc_disconnect_wait(int);
545 672
546 673
547/* found in xpc_main.c and efi-xpc.c */
548extern void xpc_activate_partition(struct xpc_partition *);
549
550
551/* found in xpc_partition.c */ 674/* found in xpc_partition.c */
552extern int xpc_exiting; 675extern int xpc_exiting;
553extern int xpc_hb_interval;
554extern int xpc_hb_check_interval;
555extern struct xpc_vars *xpc_vars; 676extern struct xpc_vars *xpc_vars;
556extern struct xpc_rsvd_page *xpc_rsvd_page; 677extern struct xpc_rsvd_page *xpc_rsvd_page;
557extern struct xpc_vars_part *xpc_vars_part; 678extern struct xpc_vars_part *xpc_vars_part;
@@ -561,6 +682,7 @@ extern struct xpc_rsvd_page *xpc_rsvd_page_init(void);
561extern void xpc_allow_IPI_ops(void); 682extern void xpc_allow_IPI_ops(void);
562extern void xpc_restrict_IPI_ops(void); 683extern void xpc_restrict_IPI_ops(void);
563extern int xpc_identify_act_IRQ_sender(void); 684extern int xpc_identify_act_IRQ_sender(void);
685extern int xpc_partition_disengaged(struct xpc_partition *);
564extern enum xpc_retval xpc_mark_partition_active(struct xpc_partition *); 686extern enum xpc_retval xpc_mark_partition_active(struct xpc_partition *);
565extern void xpc_mark_partition_inactive(struct xpc_partition *); 687extern void xpc_mark_partition_inactive(struct xpc_partition *);
566extern void xpc_discovery(void); 688extern void xpc_discovery(void);
@@ -585,8 +707,8 @@ extern void xpc_connected_callout(struct xpc_channel *);
585extern void xpc_deliver_msg(struct xpc_channel *); 707extern void xpc_deliver_msg(struct xpc_channel *);
586extern void xpc_disconnect_channel(const int, struct xpc_channel *, 708extern void xpc_disconnect_channel(const int, struct xpc_channel *,
587 enum xpc_retval, unsigned long *); 709 enum xpc_retval, unsigned long *);
588extern void xpc_disconnected_callout(struct xpc_channel *); 710extern void xpc_disconnecting_callout(struct xpc_channel *);
589extern void xpc_partition_down(struct xpc_partition *, enum xpc_retval); 711extern void xpc_partition_going_down(struct xpc_partition *, enum xpc_retval);
590extern void xpc_teardown_infrastructure(struct xpc_partition *); 712extern void xpc_teardown_infrastructure(struct xpc_partition *);
591 713
592 714
@@ -674,6 +796,157 @@ xpc_part_ref(struct xpc_partition *part)
674 796
675 797
676/* 798/*
799 * This next set of inlines are used to keep track of when a partition is
800 * potentially engaged in accessing memory belonging to another partition.
801 */
802
803static inline void
804xpc_mark_partition_engaged(struct xpc_partition *part)
805{
806 unsigned long irq_flags;
807 AMO_t *amo = (AMO_t *) __va(part->remote_amos_page_pa +
808 (XPC_ENGAGED_PARTITIONS_AMO * sizeof(AMO_t)));
809
810
811 local_irq_save(irq_flags);
812
813 /* set bit corresponding to our partid in remote partition's AMO */
814 FETCHOP_STORE_OP(TO_AMO((u64) &amo->variable), FETCHOP_OR,
815 (1UL << sn_partition_id));
816 /*
817 * We must always use the nofault function regardless of whether we
818 * are on a Shub 1.1 system or a Shub 1.2 slice 0xc processor. If we
819 * didn't, we'd never know that the other partition is down and would
820 * keep sending IPIs and AMOs to it until the heartbeat times out.
821 */
822 (void) xp_nofault_PIOR((u64 *) GLOBAL_MMR_ADDR(NASID_GET(&amo->
823 variable), xp_nofault_PIOR_target));
824
825 local_irq_restore(irq_flags);
826}
827
828static inline void
829xpc_mark_partition_disengaged(struct xpc_partition *part)
830{
831 unsigned long irq_flags;
832 AMO_t *amo = (AMO_t *) __va(part->remote_amos_page_pa +
833 (XPC_ENGAGED_PARTITIONS_AMO * sizeof(AMO_t)));
834
835
836 local_irq_save(irq_flags);
837
838 /* clear bit corresponding to our partid in remote partition's AMO */
839 FETCHOP_STORE_OP(TO_AMO((u64) &amo->variable), FETCHOP_AND,
840 ~(1UL << sn_partition_id));
841 /*
842 * We must always use the nofault function regardless of whether we
843 * are on a Shub 1.1 system or a Shub 1.2 slice 0xc processor. If we
844 * didn't, we'd never know that the other partition is down and would
845 * keep sending IPIs and AMOs to it until the heartbeat times out.
846 */
847 (void) xp_nofault_PIOR((u64 *) GLOBAL_MMR_ADDR(NASID_GET(&amo->
848 variable), xp_nofault_PIOR_target));
849
850 local_irq_restore(irq_flags);
851}
852
853static inline void
854xpc_request_partition_disengage(struct xpc_partition *part)
855{
856 unsigned long irq_flags;
857 AMO_t *amo = (AMO_t *) __va(part->remote_amos_page_pa +
858 (XPC_DISENGAGE_REQUEST_AMO * sizeof(AMO_t)));
859
860
861 local_irq_save(irq_flags);
862
863 /* set bit corresponding to our partid in remote partition's AMO */
864 FETCHOP_STORE_OP(TO_AMO((u64) &amo->variable), FETCHOP_OR,
865 (1UL << sn_partition_id));
866 /*
867 * We must always use the nofault function regardless of whether we
868 * are on a Shub 1.1 system or a Shub 1.2 slice 0xc processor. If we
869 * didn't, we'd never know that the other partition is down and would
870 * keep sending IPIs and AMOs to it until the heartbeat times out.
871 */
872 (void) xp_nofault_PIOR((u64 *) GLOBAL_MMR_ADDR(NASID_GET(&amo->
873 variable), xp_nofault_PIOR_target));
874
875 local_irq_restore(irq_flags);
876}
877
878static inline void
879xpc_cancel_partition_disengage_request(struct xpc_partition *part)
880{
881 unsigned long irq_flags;
882 AMO_t *amo = (AMO_t *) __va(part->remote_amos_page_pa +
883 (XPC_DISENGAGE_REQUEST_AMO * sizeof(AMO_t)));
884
885
886 local_irq_save(irq_flags);
887
888 /* clear bit corresponding to our partid in remote partition's AMO */
889 FETCHOP_STORE_OP(TO_AMO((u64) &amo->variable), FETCHOP_AND,
890 ~(1UL << sn_partition_id));
891 /*
892 * We must always use the nofault function regardless of whether we
893 * are on a Shub 1.1 system or a Shub 1.2 slice 0xc processor. If we
894 * didn't, we'd never know that the other partition is down and would
895 * keep sending IPIs and AMOs to it until the heartbeat times out.
896 */
897 (void) xp_nofault_PIOR((u64 *) GLOBAL_MMR_ADDR(NASID_GET(&amo->
898 variable), xp_nofault_PIOR_target));
899
900 local_irq_restore(irq_flags);
901}
902
903static inline u64
904xpc_partition_engaged(u64 partid_mask)
905{
906 AMO_t *amo = xpc_vars->amos_page + XPC_ENGAGED_PARTITIONS_AMO;
907
908
909 /* return our partition's AMO variable ANDed with partid_mask */
910 return (FETCHOP_LOAD_OP(TO_AMO((u64) &amo->variable), FETCHOP_LOAD) &
911 partid_mask);
912}
913
914static inline u64
915xpc_partition_disengage_requested(u64 partid_mask)
916{
917 AMO_t *amo = xpc_vars->amos_page + XPC_DISENGAGE_REQUEST_AMO;
918
919
920 /* return our partition's AMO variable ANDed with partid_mask */
921 return (FETCHOP_LOAD_OP(TO_AMO((u64) &amo->variable), FETCHOP_LOAD) &
922 partid_mask);
923}
924
925static inline void
926xpc_clear_partition_engaged(u64 partid_mask)
927{
928 AMO_t *amo = xpc_vars->amos_page + XPC_ENGAGED_PARTITIONS_AMO;
929
930
931 /* clear bit(s) based on partid_mask in our partition's AMO */
932 FETCHOP_STORE_OP(TO_AMO((u64) &amo->variable), FETCHOP_AND,
933 ~partid_mask);
934}
935
936static inline void
937xpc_clear_partition_disengage_request(u64 partid_mask)
938{
939 AMO_t *amo = xpc_vars->amos_page + XPC_DISENGAGE_REQUEST_AMO;
940
941
942 /* clear bit(s) based on partid_mask in our partition's AMO */
943 FETCHOP_STORE_OP(TO_AMO((u64) &amo->variable), FETCHOP_AND,
944 ~partid_mask);
945}
946
947
948
949/*
677 * The following set of macros and inlines are used for the sending and 950 * The following set of macros and inlines are used for the sending and
678 * receiving of IPIs (also known as IRQs). There are two flavors of IPIs, 951 * receiving of IPIs (also known as IRQs). There are two flavors of IPIs,
679 * one that is associated with partition activity (SGI_XPC_ACTIVATE) and 952 * one that is associated with partition activity (SGI_XPC_ACTIVATE) and
@@ -722,13 +995,13 @@ xpc_IPI_send(AMO_t *amo, u64 flag, int nasid, int phys_cpuid, int vector)
722 * Flag the appropriate AMO variable and send an IPI to the specified node. 995 * Flag the appropriate AMO variable and send an IPI to the specified node.
723 */ 996 */
724static inline void 997static inline void
725xpc_activate_IRQ_send(u64 amos_page, int from_nasid, int to_nasid, 998xpc_activate_IRQ_send(u64 amos_page_pa, int from_nasid, int to_nasid,
726 int to_phys_cpuid) 999 int to_phys_cpuid)
727{ 1000{
728 int w_index = XPC_NASID_W_INDEX(from_nasid); 1001 int w_index = XPC_NASID_W_INDEX(from_nasid);
729 int b_index = XPC_NASID_B_INDEX(from_nasid); 1002 int b_index = XPC_NASID_B_INDEX(from_nasid);
730 AMO_t *amos = (AMO_t *) __va(amos_page + 1003 AMO_t *amos = (AMO_t *) __va(amos_page_pa +
731 (XP_MAX_PARTITIONS * sizeof(AMO_t))); 1004 (XPC_ACTIVATE_IRQ_AMOS * sizeof(AMO_t)));
732 1005
733 1006
734 (void) xpc_IPI_send(&amos[w_index], (1UL << b_index), to_nasid, 1007 (void) xpc_IPI_send(&amos[w_index], (1UL << b_index), to_nasid,
@@ -756,6 +1029,13 @@ xpc_IPI_send_reactivate(struct xpc_partition *part)
756 xpc_vars->act_nasid, xpc_vars->act_phys_cpuid); 1029 xpc_vars->act_nasid, xpc_vars->act_phys_cpuid);
757} 1030}
758 1031
1032static inline void
1033xpc_IPI_send_disengage(struct xpc_partition *part)
1034{
1035 xpc_activate_IRQ_send(part->remote_amos_page_pa, cnodeid_to_nasid(0),
1036 part->remote_act_nasid, part->remote_act_phys_cpuid);
1037}
1038
759 1039
760/* 1040/*
761 * IPIs associated with SGI_XPC_NOTIFY IRQ. 1041 * IPIs associated with SGI_XPC_NOTIFY IRQ.
@@ -836,6 +1116,7 @@ xpc_notify_IRQ_send_local(struct xpc_channel *ch, u8 ipi_flag,
836 1116
837/* given an AMO variable and a channel#, get its associated IPI flags */ 1117/* given an AMO variable and a channel#, get its associated IPI flags */
838#define XPC_GET_IPI_FLAGS(_amo, _c) ((u8) (((_amo) >> ((_c) * 8)) & 0xff)) 1118#define XPC_GET_IPI_FLAGS(_amo, _c) ((u8) (((_amo) >> ((_c) * 8)) & 0xff))
1119#define XPC_SET_IPI_FLAGS(_amo, _c, _f) (_amo) |= ((u64) (_f) << ((_c) * 8))
839 1120
840#define XPC_ANY_OPENCLOSE_IPI_FLAGS_SET(_amo) ((_amo) & 0x0f0f0f0f0f0f0f0f) 1121#define XPC_ANY_OPENCLOSE_IPI_FLAGS_SET(_amo) ((_amo) & 0x0f0f0f0f0f0f0f0f)
841#define XPC_ANY_MSG_IPI_FLAGS_SET(_amo) ((_amo) & 0x1010101010101010) 1122#define XPC_ANY_MSG_IPI_FLAGS_SET(_amo) ((_amo) & 0x1010101010101010)
@@ -903,17 +1184,18 @@ xpc_IPI_send_local_msgrequest(struct xpc_channel *ch)
903 * cacheable mapping for the entire region. This will prevent speculative 1184 * cacheable mapping for the entire region. This will prevent speculative
904 * reading of cached copies of our lines from being issued which will cause 1185 * reading of cached copies of our lines from being issued which will cause
905 * a PI FSB Protocol error to be generated by the SHUB. For XPC, we need 64 1186 * a PI FSB Protocol error to be generated by the SHUB. For XPC, we need 64
906 * (XP_MAX_PARTITIONS) AMO variables for message notification (xpc_main.c) 1187 * AMO variables (based on XP_MAX_PARTITIONS) for message notification and an
907 * and an additional 16 AMO variables for partition activation (xpc_hb.c). 1188 * additional 128 AMO variables (based on XP_NASID_MASK_WORDS) for partition
1189 * activation and 2 AMO variables for partition deactivation.
908 */ 1190 */
909static inline AMO_t * 1191static inline AMO_t *
910xpc_IPI_init(partid_t partid) 1192xpc_IPI_init(int index)
911{ 1193{
912 AMO_t *part_amo = xpc_vars->amos_page + partid; 1194 AMO_t *amo = xpc_vars->amos_page + index;
913 1195
914 1196
915 xpc_IPI_receive(part_amo); 1197 (void) xpc_IPI_receive(amo); /* clear AMO variable */
916 return part_amo; 1198 return amo;
917} 1199}
918 1200
919 1201
@@ -939,7 +1221,7 @@ xpc_map_bte_errors(bte_result_t error)
939 1221
940 1222
941static inline void * 1223static inline void *
942xpc_kmalloc_cacheline_aligned(size_t size, int flags, void **base) 1224xpc_kmalloc_cacheline_aligned(size_t size, gfp_t flags, void **base)
943{ 1225{
944 /* see if kmalloc will give us cachline aligned memory by default */ 1226 /* see if kmalloc will give us cachline aligned memory by default */
945 *base = kmalloc(size, flags); 1227 *base = kmalloc(size, flags);
diff --git a/arch/ia64/sn/kernel/xpc_channel.c b/arch/ia64/sn/kernel/xpc_channel.c
index 94698bea7be0..abf4fc2a87bb 100644
--- a/arch/ia64/sn/kernel/xpc_channel.c
+++ b/arch/ia64/sn/kernel/xpc_channel.c
@@ -57,6 +57,7 @@ xpc_initialize_channels(struct xpc_partition *part, partid_t partid)
57 57
58 spin_lock_init(&ch->lock); 58 spin_lock_init(&ch->lock);
59 sema_init(&ch->msg_to_pull_sema, 1); /* mutex */ 59 sema_init(&ch->msg_to_pull_sema, 1); /* mutex */
60 sema_init(&ch->wdisconnect_sema, 0); /* event wait */
60 61
61 atomic_set(&ch->n_on_msg_allocate_wq, 0); 62 atomic_set(&ch->n_on_msg_allocate_wq, 0);
62 init_waitqueue_head(&ch->msg_allocate_wq); 63 init_waitqueue_head(&ch->msg_allocate_wq);
@@ -166,6 +167,7 @@ xpc_setup_infrastructure(struct xpc_partition *part)
166 xpc_initialize_channels(part, partid); 167 xpc_initialize_channels(part, partid);
167 168
168 atomic_set(&part->nchannels_active, 0); 169 atomic_set(&part->nchannels_active, 0);
170 atomic_set(&part->nchannels_engaged, 0);
169 171
170 172
171 /* local_IPI_amo were set to 0 by an earlier memset() */ 173 /* local_IPI_amo were set to 0 by an earlier memset() */
@@ -555,8 +557,6 @@ xpc_allocate_msgqueues(struct xpc_channel *ch)
555 sema_init(&ch->notify_queue[i].sema, 0); 557 sema_init(&ch->notify_queue[i].sema, 0);
556 } 558 }
557 559
558 sema_init(&ch->teardown_sema, 0); /* event wait */
559
560 spin_lock_irqsave(&ch->lock, irq_flags); 560 spin_lock_irqsave(&ch->lock, irq_flags);
561 ch->flags |= XPC_C_SETUP; 561 ch->flags |= XPC_C_SETUP;
562 spin_unlock_irqrestore(&ch->lock, irq_flags); 562 spin_unlock_irqrestore(&ch->lock, irq_flags);
@@ -626,6 +626,55 @@ xpc_process_connect(struct xpc_channel *ch, unsigned long *irq_flags)
626 626
627 627
628/* 628/*
629 * Notify those who wanted to be notified upon delivery of their message.
630 */
631static void
632xpc_notify_senders(struct xpc_channel *ch, enum xpc_retval reason, s64 put)
633{
634 struct xpc_notify *notify;
635 u8 notify_type;
636 s64 get = ch->w_remote_GP.get - 1;
637
638
639 while (++get < put && atomic_read(&ch->n_to_notify) > 0) {
640
641 notify = &ch->notify_queue[get % ch->local_nentries];
642
643 /*
644 * See if the notify entry indicates it was associated with
645 * a message who's sender wants to be notified. It is possible
646 * that it is, but someone else is doing or has done the
647 * notification.
648 */
649 notify_type = notify->type;
650 if (notify_type == 0 ||
651 cmpxchg(&notify->type, notify_type, 0) !=
652 notify_type) {
653 continue;
654 }
655
656 DBUG_ON(notify_type != XPC_N_CALL);
657
658 atomic_dec(&ch->n_to_notify);
659
660 if (notify->func != NULL) {
661 dev_dbg(xpc_chan, "notify->func() called, notify=0x%p, "
662 "msg_number=%ld, partid=%d, channel=%d\n",
663 (void *) notify, get, ch->partid, ch->number);
664
665 notify->func(reason, ch->partid, ch->number,
666 notify->key);
667
668 dev_dbg(xpc_chan, "notify->func() returned, "
669 "notify=0x%p, msg_number=%ld, partid=%d, "
670 "channel=%d\n", (void *) notify, get,
671 ch->partid, ch->number);
672 }
673 }
674}
675
676
677/*
629 * Free up message queues and other stuff that were allocated for the specified 678 * Free up message queues and other stuff that were allocated for the specified
630 * channel. 679 * channel.
631 * 680 *
@@ -669,9 +718,6 @@ xpc_free_msgqueues(struct xpc_channel *ch)
669 ch->remote_msgqueue = NULL; 718 ch->remote_msgqueue = NULL;
670 kfree(ch->notify_queue); 719 kfree(ch->notify_queue);
671 ch->notify_queue = NULL; 720 ch->notify_queue = NULL;
672
673 /* in case someone is waiting for the teardown to complete */
674 up(&ch->teardown_sema);
675 } 721 }
676} 722}
677 723
@@ -683,7 +729,7 @@ static void
683xpc_process_disconnect(struct xpc_channel *ch, unsigned long *irq_flags) 729xpc_process_disconnect(struct xpc_channel *ch, unsigned long *irq_flags)
684{ 730{
685 struct xpc_partition *part = &xpc_partitions[ch->partid]; 731 struct xpc_partition *part = &xpc_partitions[ch->partid];
686 u32 ch_flags = ch->flags; 732 u32 channel_was_connected = (ch->flags & XPC_C_WASCONNECTED);
687 733
688 734
689 DBUG_ON(!spin_is_locked(&ch->lock)); 735 DBUG_ON(!spin_is_locked(&ch->lock));
@@ -701,12 +747,13 @@ xpc_process_disconnect(struct xpc_channel *ch, unsigned long *irq_flags)
701 } 747 }
702 DBUG_ON(atomic_read(&ch->kthreads_assigned) != 0); 748 DBUG_ON(atomic_read(&ch->kthreads_assigned) != 0);
703 749
704 /* it's now safe to free the channel's message queues */ 750 if (part->act_state == XPC_P_DEACTIVATING) {
705 751 /* can't proceed until the other side disengages from us */
706 xpc_free_msgqueues(ch); 752 if (xpc_partition_engaged(1UL << ch->partid)) {
707 DBUG_ON(ch->flags & XPC_C_SETUP); 753 return;
754 }
708 755
709 if (part->act_state != XPC_P_DEACTIVATING) { 756 } else {
710 757
711 /* as long as the other side is up do the full protocol */ 758 /* as long as the other side is up do the full protocol */
712 759
@@ -724,16 +771,42 @@ xpc_process_disconnect(struct xpc_channel *ch, unsigned long *irq_flags)
724 } 771 }
725 } 772 }
726 773
774 /* wake those waiting for notify completion */
775 if (atomic_read(&ch->n_to_notify) > 0) {
776 /* >>> we do callout while holding ch->lock */
777 xpc_notify_senders(ch, ch->reason, ch->w_local_GP.put);
778 }
779
727 /* both sides are disconnected now */ 780 /* both sides are disconnected now */
728 781
729 ch->flags = XPC_C_DISCONNECTED; /* clear all flags, but this one */ 782 /* it's now safe to free the channel's message queues */
783 xpc_free_msgqueues(ch);
784
785 /* mark disconnected, clear all other flags except XPC_C_WDISCONNECT */
786 ch->flags = (XPC_C_DISCONNECTED | (ch->flags & XPC_C_WDISCONNECT));
730 787
731 atomic_dec(&part->nchannels_active); 788 atomic_dec(&part->nchannels_active);
732 789
733 if (ch_flags & XPC_C_WASCONNECTED) { 790 if (channel_was_connected) {
734 dev_info(xpc_chan, "channel %d to partition %d disconnected, " 791 dev_info(xpc_chan, "channel %d to partition %d disconnected, "
735 "reason=%d\n", ch->number, ch->partid, ch->reason); 792 "reason=%d\n", ch->number, ch->partid, ch->reason);
736 } 793 }
794
795 if (ch->flags & XPC_C_WDISCONNECT) {
796 spin_unlock_irqrestore(&ch->lock, *irq_flags);
797 up(&ch->wdisconnect_sema);
798 spin_lock_irqsave(&ch->lock, *irq_flags);
799
800 } else if (ch->delayed_IPI_flags) {
801 if (part->act_state != XPC_P_DEACTIVATING) {
802 /* time to take action on any delayed IPI flags */
803 spin_lock(&part->IPI_lock);
804 XPC_SET_IPI_FLAGS(part->local_IPI_amo, ch->number,
805 ch->delayed_IPI_flags);
806 spin_unlock(&part->IPI_lock);
807 }
808 ch->delayed_IPI_flags = 0;
809 }
737} 810}
738 811
739 812
@@ -754,6 +827,19 @@ xpc_process_openclose_IPI(struct xpc_partition *part, int ch_number,
754 827
755 spin_lock_irqsave(&ch->lock, irq_flags); 828 spin_lock_irqsave(&ch->lock, irq_flags);
756 829
830again:
831
832 if ((ch->flags & XPC_C_DISCONNECTED) &&
833 (ch->flags & XPC_C_WDISCONNECT)) {
834 /*
835 * Delay processing IPI flags until thread waiting disconnect
836 * has had a chance to see that the channel is disconnected.
837 */
838 ch->delayed_IPI_flags |= IPI_flags;
839 spin_unlock_irqrestore(&ch->lock, irq_flags);
840 return;
841 }
842
757 843
758 if (IPI_flags & XPC_IPI_CLOSEREQUEST) { 844 if (IPI_flags & XPC_IPI_CLOSEREQUEST) {
759 845
@@ -764,7 +850,7 @@ xpc_process_openclose_IPI(struct xpc_partition *part, int ch_number,
764 /* 850 /*
765 * If RCLOSEREQUEST is set, we're probably waiting for 851 * If RCLOSEREQUEST is set, we're probably waiting for
766 * RCLOSEREPLY. We should find it and a ROPENREQUEST packed 852 * RCLOSEREPLY. We should find it and a ROPENREQUEST packed
767 * with this RCLOSEQREUQEST in the IPI_flags. 853 * with this RCLOSEREQUEST in the IPI_flags.
768 */ 854 */
769 855
770 if (ch->flags & XPC_C_RCLOSEREQUEST) { 856 if (ch->flags & XPC_C_RCLOSEREQUEST) {
@@ -779,14 +865,22 @@ xpc_process_openclose_IPI(struct xpc_partition *part, int ch_number,
779 865
780 /* both sides have finished disconnecting */ 866 /* both sides have finished disconnecting */
781 xpc_process_disconnect(ch, &irq_flags); 867 xpc_process_disconnect(ch, &irq_flags);
868 DBUG_ON(!(ch->flags & XPC_C_DISCONNECTED));
869 goto again;
782 } 870 }
783 871
784 if (ch->flags & XPC_C_DISCONNECTED) { 872 if (ch->flags & XPC_C_DISCONNECTED) {
785 // >>> explain this section
786
787 if (!(IPI_flags & XPC_IPI_OPENREQUEST)) { 873 if (!(IPI_flags & XPC_IPI_OPENREQUEST)) {
788 DBUG_ON(part->act_state != 874 if ((XPC_GET_IPI_FLAGS(part->local_IPI_amo,
789 XPC_P_DEACTIVATING); 875 ch_number) & XPC_IPI_OPENREQUEST)) {
876
877 DBUG_ON(ch->delayed_IPI_flags != 0);
878 spin_lock(&part->IPI_lock);
879 XPC_SET_IPI_FLAGS(part->local_IPI_amo,
880 ch_number,
881 XPC_IPI_CLOSEREQUEST);
882 spin_unlock(&part->IPI_lock);
883 }
790 spin_unlock_irqrestore(&ch->lock, irq_flags); 884 spin_unlock_irqrestore(&ch->lock, irq_flags);
791 return; 885 return;
792 } 886 }
@@ -816,9 +910,13 @@ xpc_process_openclose_IPI(struct xpc_partition *part, int ch_number,
816 } 910 }
817 911
818 XPC_DISCONNECT_CHANNEL(ch, reason, &irq_flags); 912 XPC_DISCONNECT_CHANNEL(ch, reason, &irq_flags);
819 } else { 913
820 xpc_process_disconnect(ch, &irq_flags); 914 DBUG_ON(IPI_flags & XPC_IPI_CLOSEREPLY);
915 spin_unlock_irqrestore(&ch->lock, irq_flags);
916 return;
821 } 917 }
918
919 xpc_process_disconnect(ch, &irq_flags);
822 } 920 }
823 921
824 922
@@ -834,7 +932,20 @@ xpc_process_openclose_IPI(struct xpc_partition *part, int ch_number,
834 } 932 }
835 933
836 DBUG_ON(!(ch->flags & XPC_C_CLOSEREQUEST)); 934 DBUG_ON(!(ch->flags & XPC_C_CLOSEREQUEST));
837 DBUG_ON(!(ch->flags & XPC_C_RCLOSEREQUEST)); 935
936 if (!(ch->flags & XPC_C_RCLOSEREQUEST)) {
937 if ((XPC_GET_IPI_FLAGS(part->local_IPI_amo, ch_number)
938 & XPC_IPI_CLOSEREQUEST)) {
939
940 DBUG_ON(ch->delayed_IPI_flags != 0);
941 spin_lock(&part->IPI_lock);
942 XPC_SET_IPI_FLAGS(part->local_IPI_amo,
943 ch_number, XPC_IPI_CLOSEREPLY);
944 spin_unlock(&part->IPI_lock);
945 }
946 spin_unlock_irqrestore(&ch->lock, irq_flags);
947 return;
948 }
838 949
839 ch->flags |= XPC_C_RCLOSEREPLY; 950 ch->flags |= XPC_C_RCLOSEREPLY;
840 951
@@ -852,8 +963,14 @@ xpc_process_openclose_IPI(struct xpc_partition *part, int ch_number,
852 "channel=%d\n", args->msg_size, args->local_nentries, 963 "channel=%d\n", args->msg_size, args->local_nentries,
853 ch->partid, ch->number); 964 ch->partid, ch->number);
854 965
855 if ((ch->flags & XPC_C_DISCONNECTING) || 966 if (part->act_state == XPC_P_DEACTIVATING ||
856 part->act_state == XPC_P_DEACTIVATING) { 967 (ch->flags & XPC_C_ROPENREQUEST)) {
968 spin_unlock_irqrestore(&ch->lock, irq_flags);
969 return;
970 }
971
972 if (ch->flags & (XPC_C_DISCONNECTING | XPC_C_WDISCONNECT)) {
973 ch->delayed_IPI_flags |= XPC_IPI_OPENREQUEST;
857 spin_unlock_irqrestore(&ch->lock, irq_flags); 974 spin_unlock_irqrestore(&ch->lock, irq_flags);
858 return; 975 return;
859 } 976 }
@@ -867,8 +984,11 @@ xpc_process_openclose_IPI(struct xpc_partition *part, int ch_number,
867 * msg_size = size of channel's messages in bytes 984 * msg_size = size of channel's messages in bytes
868 * local_nentries = remote partition's local_nentries 985 * local_nentries = remote partition's local_nentries
869 */ 986 */
870 DBUG_ON(args->msg_size == 0); 987 if (args->msg_size == 0 || args->local_nentries == 0) {
871 DBUG_ON(args->local_nentries == 0); 988 /* assume OPENREQUEST was delayed by mistake */
989 spin_unlock_irqrestore(&ch->lock, irq_flags);
990 return;
991 }
872 992
873 ch->flags |= (XPC_C_ROPENREQUEST | XPC_C_CONNECTING); 993 ch->flags |= (XPC_C_ROPENREQUEST | XPC_C_CONNECTING);
874 ch->remote_nentries = args->local_nentries; 994 ch->remote_nentries = args->local_nentries;
@@ -906,7 +1026,13 @@ xpc_process_openclose_IPI(struct xpc_partition *part, int ch_number,
906 spin_unlock_irqrestore(&ch->lock, irq_flags); 1026 spin_unlock_irqrestore(&ch->lock, irq_flags);
907 return; 1027 return;
908 } 1028 }
909 DBUG_ON(!(ch->flags & XPC_C_OPENREQUEST)); 1029 if (!(ch->flags & XPC_C_OPENREQUEST)) {
1030 XPC_DISCONNECT_CHANNEL(ch, xpcOpenCloseError,
1031 &irq_flags);
1032 spin_unlock_irqrestore(&ch->lock, irq_flags);
1033 return;
1034 }
1035
910 DBUG_ON(!(ch->flags & XPC_C_ROPENREQUEST)); 1036 DBUG_ON(!(ch->flags & XPC_C_ROPENREQUEST));
911 DBUG_ON(ch->flags & XPC_C_CONNECTED); 1037 DBUG_ON(ch->flags & XPC_C_CONNECTED);
912 1038
@@ -960,8 +1086,8 @@ xpc_connect_channel(struct xpc_channel *ch)
960 struct xpc_registration *registration = &xpc_registrations[ch->number]; 1086 struct xpc_registration *registration = &xpc_registrations[ch->number];
961 1087
962 1088
963 if (down_interruptible(&registration->sema) != 0) { 1089 if (down_trylock(&registration->sema) != 0) {
964 return xpcInterrupted; 1090 return xpcRetry;
965 } 1091 }
966 1092
967 if (!XPC_CHANNEL_REGISTERED(ch->number)) { 1093 if (!XPC_CHANNEL_REGISTERED(ch->number)) {
@@ -1040,55 +1166,6 @@ xpc_connect_channel(struct xpc_channel *ch)
1040 1166
1041 1167
1042/* 1168/*
1043 * Notify those who wanted to be notified upon delivery of their message.
1044 */
1045static void
1046xpc_notify_senders(struct xpc_channel *ch, enum xpc_retval reason, s64 put)
1047{
1048 struct xpc_notify *notify;
1049 u8 notify_type;
1050 s64 get = ch->w_remote_GP.get - 1;
1051
1052
1053 while (++get < put && atomic_read(&ch->n_to_notify) > 0) {
1054
1055 notify = &ch->notify_queue[get % ch->local_nentries];
1056
1057 /*
1058 * See if the notify entry indicates it was associated with
1059 * a message who's sender wants to be notified. It is possible
1060 * that it is, but someone else is doing or has done the
1061 * notification.
1062 */
1063 notify_type = notify->type;
1064 if (notify_type == 0 ||
1065 cmpxchg(&notify->type, notify_type, 0) !=
1066 notify_type) {
1067 continue;
1068 }
1069
1070 DBUG_ON(notify_type != XPC_N_CALL);
1071
1072 atomic_dec(&ch->n_to_notify);
1073
1074 if (notify->func != NULL) {
1075 dev_dbg(xpc_chan, "notify->func() called, notify=0x%p, "
1076 "msg_number=%ld, partid=%d, channel=%d\n",
1077 (void *) notify, get, ch->partid, ch->number);
1078
1079 notify->func(reason, ch->partid, ch->number,
1080 notify->key);
1081
1082 dev_dbg(xpc_chan, "notify->func() returned, "
1083 "notify=0x%p, msg_number=%ld, partid=%d, "
1084 "channel=%d\n", (void *) notify, get,
1085 ch->partid, ch->number);
1086 }
1087 }
1088}
1089
1090
1091/*
1092 * Clear some of the msg flags in the local message queue. 1169 * Clear some of the msg flags in the local message queue.
1093 */ 1170 */
1094static inline void 1171static inline void
@@ -1240,6 +1317,7 @@ xpc_process_channel_activity(struct xpc_partition *part)
1240 u64 IPI_amo, IPI_flags; 1317 u64 IPI_amo, IPI_flags;
1241 struct xpc_channel *ch; 1318 struct xpc_channel *ch;
1242 int ch_number; 1319 int ch_number;
1320 u32 ch_flags;
1243 1321
1244 1322
1245 IPI_amo = xpc_get_IPI_flags(part); 1323 IPI_amo = xpc_get_IPI_flags(part);
@@ -1266,8 +1344,9 @@ xpc_process_channel_activity(struct xpc_partition *part)
1266 xpc_process_openclose_IPI(part, ch_number, IPI_flags); 1344 xpc_process_openclose_IPI(part, ch_number, IPI_flags);
1267 } 1345 }
1268 1346
1347 ch_flags = ch->flags; /* need an atomic snapshot of flags */
1269 1348
1270 if (ch->flags & XPC_C_DISCONNECTING) { 1349 if (ch_flags & XPC_C_DISCONNECTING) {
1271 spin_lock_irqsave(&ch->lock, irq_flags); 1350 spin_lock_irqsave(&ch->lock, irq_flags);
1272 xpc_process_disconnect(ch, &irq_flags); 1351 xpc_process_disconnect(ch, &irq_flags);
1273 spin_unlock_irqrestore(&ch->lock, irq_flags); 1352 spin_unlock_irqrestore(&ch->lock, irq_flags);
@@ -1278,9 +1357,9 @@ xpc_process_channel_activity(struct xpc_partition *part)
1278 continue; 1357 continue;
1279 } 1358 }
1280 1359
1281 if (!(ch->flags & XPC_C_CONNECTED)) { 1360 if (!(ch_flags & XPC_C_CONNECTED)) {
1282 if (!(ch->flags & XPC_C_OPENREQUEST)) { 1361 if (!(ch_flags & XPC_C_OPENREQUEST)) {
1283 DBUG_ON(ch->flags & XPC_C_SETUP); 1362 DBUG_ON(ch_flags & XPC_C_SETUP);
1284 (void) xpc_connect_channel(ch); 1363 (void) xpc_connect_channel(ch);
1285 } else { 1364 } else {
1286 spin_lock_irqsave(&ch->lock, irq_flags); 1365 spin_lock_irqsave(&ch->lock, irq_flags);
@@ -1305,8 +1384,8 @@ xpc_process_channel_activity(struct xpc_partition *part)
1305 1384
1306 1385
1307/* 1386/*
1308 * XPC's heartbeat code calls this function to inform XPC that a partition has 1387 * XPC's heartbeat code calls this function to inform XPC that a partition is
1309 * gone down. XPC responds by tearing down the XPartition Communication 1388 * going down. XPC responds by tearing down the XPartition Communication
1310 * infrastructure used for the just downed partition. 1389 * infrastructure used for the just downed partition.
1311 * 1390 *
1312 * XPC's heartbeat code will never call this function and xpc_partition_up() 1391 * XPC's heartbeat code will never call this function and xpc_partition_up()
@@ -1314,7 +1393,7 @@ xpc_process_channel_activity(struct xpc_partition *part)
1314 * at the same time. 1393 * at the same time.
1315 */ 1394 */
1316void 1395void
1317xpc_partition_down(struct xpc_partition *part, enum xpc_retval reason) 1396xpc_partition_going_down(struct xpc_partition *part, enum xpc_retval reason)
1318{ 1397{
1319 unsigned long irq_flags; 1398 unsigned long irq_flags;
1320 int ch_number; 1399 int ch_number;
@@ -1330,12 +1409,11 @@ xpc_partition_down(struct xpc_partition *part, enum xpc_retval reason)
1330 } 1409 }
1331 1410
1332 1411
1333 /* disconnect all channels associated with the downed partition */ 1412 /* disconnect channels associated with the partition going down */
1334 1413
1335 for (ch_number = 0; ch_number < part->nchannels; ch_number++) { 1414 for (ch_number = 0; ch_number < part->nchannels; ch_number++) {
1336 ch = &part->channels[ch_number]; 1415 ch = &part->channels[ch_number];
1337 1416
1338
1339 xpc_msgqueue_ref(ch); 1417 xpc_msgqueue_ref(ch);
1340 spin_lock_irqsave(&ch->lock, irq_flags); 1418 spin_lock_irqsave(&ch->lock, irq_flags);
1341 1419
@@ -1370,6 +1448,7 @@ xpc_teardown_infrastructure(struct xpc_partition *part)
1370 * this partition. 1448 * this partition.
1371 */ 1449 */
1372 1450
1451 DBUG_ON(atomic_read(&part->nchannels_engaged) != 0);
1373 DBUG_ON(atomic_read(&part->nchannels_active) != 0); 1452 DBUG_ON(atomic_read(&part->nchannels_active) != 0);
1374 DBUG_ON(part->setup_state != XPC_P_SETUP); 1453 DBUG_ON(part->setup_state != XPC_P_SETUP);
1375 part->setup_state = XPC_P_WTEARDOWN; 1454 part->setup_state = XPC_P_WTEARDOWN;
@@ -1428,19 +1507,11 @@ xpc_initiate_connect(int ch_number)
1428 if (xpc_part_ref(part)) { 1507 if (xpc_part_ref(part)) {
1429 ch = &part->channels[ch_number]; 1508 ch = &part->channels[ch_number];
1430 1509
1431 if (!(ch->flags & XPC_C_DISCONNECTING)) { 1510 /*
1432 DBUG_ON(ch->flags & XPC_C_OPENREQUEST); 1511 * Initiate the establishment of a connection on the
1433 DBUG_ON(ch->flags & XPC_C_CONNECTED); 1512 * newly registered channel to the remote partition.
1434 DBUG_ON(ch->flags & XPC_C_SETUP); 1513 */
1435 1514 xpc_wakeup_channel_mgr(part);
1436 /*
1437 * Initiate the establishment of a connection
1438 * on the newly registered channel to the
1439 * remote partition.
1440 */
1441 xpc_wakeup_channel_mgr(part);
1442 }
1443
1444 xpc_part_deref(part); 1515 xpc_part_deref(part);
1445 } 1516 }
1446 } 1517 }
@@ -1450,9 +1521,6 @@ xpc_initiate_connect(int ch_number)
1450void 1521void
1451xpc_connected_callout(struct xpc_channel *ch) 1522xpc_connected_callout(struct xpc_channel *ch)
1452{ 1523{
1453 unsigned long irq_flags;
1454
1455
1456 /* let the registerer know that a connection has been established */ 1524 /* let the registerer know that a connection has been established */
1457 1525
1458 if (ch->func != NULL) { 1526 if (ch->func != NULL) {
@@ -1465,10 +1533,6 @@ xpc_connected_callout(struct xpc_channel *ch)
1465 dev_dbg(xpc_chan, "ch->func() returned, reason=xpcConnected, " 1533 dev_dbg(xpc_chan, "ch->func() returned, reason=xpcConnected, "
1466 "partid=%d, channel=%d\n", ch->partid, ch->number); 1534 "partid=%d, channel=%d\n", ch->partid, ch->number);
1467 } 1535 }
1468
1469 spin_lock_irqsave(&ch->lock, irq_flags);
1470 ch->flags |= XPC_C_CONNECTCALLOUT;
1471 spin_unlock_irqrestore(&ch->lock, irq_flags);
1472} 1536}
1473 1537
1474 1538
@@ -1506,8 +1570,12 @@ xpc_initiate_disconnect(int ch_number)
1506 1570
1507 spin_lock_irqsave(&ch->lock, irq_flags); 1571 spin_lock_irqsave(&ch->lock, irq_flags);
1508 1572
1509 XPC_DISCONNECT_CHANNEL(ch, xpcUnregistering, 1573 if (!(ch->flags & XPC_C_DISCONNECTED)) {
1574 ch->flags |= XPC_C_WDISCONNECT;
1575
1576 XPC_DISCONNECT_CHANNEL(ch, xpcUnregistering,
1510 &irq_flags); 1577 &irq_flags);
1578 }
1511 1579
1512 spin_unlock_irqrestore(&ch->lock, irq_flags); 1580 spin_unlock_irqrestore(&ch->lock, irq_flags);
1513 1581
@@ -1523,8 +1591,9 @@ xpc_initiate_disconnect(int ch_number)
1523/* 1591/*
1524 * To disconnect a channel, and reflect it back to all who may be waiting. 1592 * To disconnect a channel, and reflect it back to all who may be waiting.
1525 * 1593 *
1526 * >>> An OPEN is not allowed until XPC_C_DISCONNECTING is cleared by 1594 * An OPEN is not allowed until XPC_C_DISCONNECTING is cleared by
1527 * >>> xpc_free_msgqueues(). 1595 * xpc_process_disconnect(), and if set, XPC_C_WDISCONNECT is cleared by
1596 * xpc_disconnect_wait().
1528 * 1597 *
1529 * THE CHANNEL IS TO BE LOCKED BY THE CALLER AND WILL REMAIN LOCKED UPON RETURN. 1598 * THE CHANNEL IS TO BE LOCKED BY THE CALLER AND WILL REMAIN LOCKED UPON RETURN.
1530 */ 1599 */
@@ -1532,7 +1601,7 @@ void
1532xpc_disconnect_channel(const int line, struct xpc_channel *ch, 1601xpc_disconnect_channel(const int line, struct xpc_channel *ch,
1533 enum xpc_retval reason, unsigned long *irq_flags) 1602 enum xpc_retval reason, unsigned long *irq_flags)
1534{ 1603{
1535 u32 flags; 1604 u32 channel_was_connected = (ch->flags & XPC_C_CONNECTED);
1536 1605
1537 1606
1538 DBUG_ON(!spin_is_locked(&ch->lock)); 1607 DBUG_ON(!spin_is_locked(&ch->lock));
@@ -1547,61 +1616,53 @@ xpc_disconnect_channel(const int line, struct xpc_channel *ch,
1547 1616
1548 XPC_SET_REASON(ch, reason, line); 1617 XPC_SET_REASON(ch, reason, line);
1549 1618
1550 flags = ch->flags; 1619 ch->flags |= (XPC_C_CLOSEREQUEST | XPC_C_DISCONNECTING);
1551 /* some of these may not have been set */ 1620 /* some of these may not have been set */
1552 ch->flags &= ~(XPC_C_OPENREQUEST | XPC_C_OPENREPLY | 1621 ch->flags &= ~(XPC_C_OPENREQUEST | XPC_C_OPENREPLY |
1553 XPC_C_ROPENREQUEST | XPC_C_ROPENREPLY | 1622 XPC_C_ROPENREQUEST | XPC_C_ROPENREPLY |
1554 XPC_C_CONNECTING | XPC_C_CONNECTED); 1623 XPC_C_CONNECTING | XPC_C_CONNECTED);
1555 1624
1556 ch->flags |= (XPC_C_CLOSEREQUEST | XPC_C_DISCONNECTING);
1557 xpc_IPI_send_closerequest(ch, irq_flags); 1625 xpc_IPI_send_closerequest(ch, irq_flags);
1558 1626
1559 if (flags & XPC_C_CONNECTED) { 1627 if (channel_was_connected) {
1560 ch->flags |= XPC_C_WASCONNECTED; 1628 ch->flags |= XPC_C_WASCONNECTED;
1561 } 1629 }
1562 1630
1631 spin_unlock_irqrestore(&ch->lock, *irq_flags);
1632
1633 /* wake all idle kthreads so they can exit */
1563 if (atomic_read(&ch->kthreads_idle) > 0) { 1634 if (atomic_read(&ch->kthreads_idle) > 0) {
1564 /* wake all idle kthreads so they can exit */
1565 wake_up_all(&ch->idle_wq); 1635 wake_up_all(&ch->idle_wq);
1566 } 1636 }
1567 1637
1568 spin_unlock_irqrestore(&ch->lock, *irq_flags);
1569
1570
1571 /* wake those waiting to allocate an entry from the local msg queue */ 1638 /* wake those waiting to allocate an entry from the local msg queue */
1572
1573 if (atomic_read(&ch->n_on_msg_allocate_wq) > 0) { 1639 if (atomic_read(&ch->n_on_msg_allocate_wq) > 0) {
1574 wake_up(&ch->msg_allocate_wq); 1640 wake_up(&ch->msg_allocate_wq);
1575 } 1641 }
1576 1642
1577 /* wake those waiting for notify completion */
1578
1579 if (atomic_read(&ch->n_to_notify) > 0) {
1580 xpc_notify_senders(ch, reason, ch->w_local_GP.put);
1581 }
1582
1583 spin_lock_irqsave(&ch->lock, *irq_flags); 1643 spin_lock_irqsave(&ch->lock, *irq_flags);
1584} 1644}
1585 1645
1586 1646
1587void 1647void
1588xpc_disconnected_callout(struct xpc_channel *ch) 1648xpc_disconnecting_callout(struct xpc_channel *ch)
1589{ 1649{
1590 /* 1650 /*
1591 * Let the channel's registerer know that the channel is now 1651 * Let the channel's registerer know that the channel is being
1592 * disconnected. We don't want to do this if the registerer was never 1652 * disconnected. We don't want to do this if the registerer was never
1593 * informed of a connection being made, unless the disconnect was for 1653 * informed of a connection being made.
1594 * abnormal reasons.
1595 */ 1654 */
1596 1655
1597 if (ch->func != NULL) { 1656 if (ch->func != NULL) {
1598 dev_dbg(xpc_chan, "ch->func() called, reason=%d, partid=%d, " 1657 dev_dbg(xpc_chan, "ch->func() called, reason=xpcDisconnecting,"
1599 "channel=%d\n", ch->reason, ch->partid, ch->number); 1658 " partid=%d, channel=%d\n", ch->partid, ch->number);
1600 1659
1601 ch->func(ch->reason, ch->partid, ch->number, NULL, ch->key); 1660 ch->func(xpcDisconnecting, ch->partid, ch->number, NULL,
1661 ch->key);
1602 1662
1603 dev_dbg(xpc_chan, "ch->func() returned, reason=%d, partid=%d, " 1663 dev_dbg(xpc_chan, "ch->func() returned, reason="
1604 "channel=%d\n", ch->reason, ch->partid, ch->number); 1664 "xpcDisconnecting, partid=%d, channel=%d\n",
1665 ch->partid, ch->number);
1605 } 1666 }
1606} 1667}
1607 1668
@@ -1848,7 +1909,7 @@ xpc_send_msg(struct xpc_channel *ch, struct xpc_msg *msg, u8 notify_type,
1848 xpc_notify_func func, void *key) 1909 xpc_notify_func func, void *key)
1849{ 1910{
1850 enum xpc_retval ret = xpcSuccess; 1911 enum xpc_retval ret = xpcSuccess;
1851 struct xpc_notify *notify = NULL; // >>> to keep the compiler happy!! 1912 struct xpc_notify *notify = notify;
1852 s64 put, msg_number = msg->number; 1913 s64 put, msg_number = msg->number;
1853 1914
1854 1915
diff --git a/arch/ia64/sn/kernel/xpc_main.c b/arch/ia64/sn/kernel/xpc_main.c
index ed7c21586e98..cece3c7c69be 100644
--- a/arch/ia64/sn/kernel/xpc_main.c
+++ b/arch/ia64/sn/kernel/xpc_main.c
@@ -54,6 +54,7 @@
54#include <linux/interrupt.h> 54#include <linux/interrupt.h>
55#include <linux/slab.h> 55#include <linux/slab.h>
56#include <linux/delay.h> 56#include <linux/delay.h>
57#include <linux/reboot.h>
57#include <asm/sn/intr.h> 58#include <asm/sn/intr.h>
58#include <asm/sn/sn_sal.h> 59#include <asm/sn/sn_sal.h>
59#include <asm/uaccess.h> 60#include <asm/uaccess.h>
@@ -82,11 +83,17 @@ struct device *xpc_chan = &xpc_chan_dbg_subname;
82 83
83/* systune related variables for /proc/sys directories */ 84/* systune related variables for /proc/sys directories */
84 85
85static int xpc_hb_min = 1; 86static int xpc_hb_interval = XPC_HB_DEFAULT_INTERVAL;
86static int xpc_hb_max = 10; 87static int xpc_hb_min_interval = 1;
88static int xpc_hb_max_interval = 10;
87 89
88static int xpc_hb_check_min = 10; 90static int xpc_hb_check_interval = XPC_HB_CHECK_DEFAULT_INTERVAL;
89static int xpc_hb_check_max = 120; 91static int xpc_hb_check_min_interval = 10;
92static int xpc_hb_check_max_interval = 120;
93
94int xpc_disengage_request_timelimit = XPC_DISENGAGE_REQUEST_DEFAULT_TIMELIMIT;
95static int xpc_disengage_request_min_timelimit = 0;
96static int xpc_disengage_request_max_timelimit = 120;
90 97
91static ctl_table xpc_sys_xpc_hb_dir[] = { 98static ctl_table xpc_sys_xpc_hb_dir[] = {
92 { 99 {
@@ -99,7 +106,8 @@ static ctl_table xpc_sys_xpc_hb_dir[] = {
99 &proc_dointvec_minmax, 106 &proc_dointvec_minmax,
100 &sysctl_intvec, 107 &sysctl_intvec,
101 NULL, 108 NULL,
102 &xpc_hb_min, &xpc_hb_max 109 &xpc_hb_min_interval,
110 &xpc_hb_max_interval
103 }, 111 },
104 { 112 {
105 2, 113 2,
@@ -111,7 +119,8 @@ static ctl_table xpc_sys_xpc_hb_dir[] = {
111 &proc_dointvec_minmax, 119 &proc_dointvec_minmax,
112 &sysctl_intvec, 120 &sysctl_intvec,
113 NULL, 121 NULL,
114 &xpc_hb_check_min, &xpc_hb_check_max 122 &xpc_hb_check_min_interval,
123 &xpc_hb_check_max_interval
115 }, 124 },
116 {0} 125 {0}
117}; 126};
@@ -124,6 +133,19 @@ static ctl_table xpc_sys_xpc_dir[] = {
124 0555, 133 0555,
125 xpc_sys_xpc_hb_dir 134 xpc_sys_xpc_hb_dir
126 }, 135 },
136 {
137 2,
138 "disengage_request_timelimit",
139 &xpc_disengage_request_timelimit,
140 sizeof(int),
141 0644,
142 NULL,
143 &proc_dointvec_minmax,
144 &sysctl_intvec,
145 NULL,
146 &xpc_disengage_request_min_timelimit,
147 &xpc_disengage_request_max_timelimit
148 },
127 {0} 149 {0}
128}; 150};
129static ctl_table xpc_sys_dir[] = { 151static ctl_table xpc_sys_dir[] = {
@@ -148,10 +170,10 @@ static DECLARE_WAIT_QUEUE_HEAD(xpc_act_IRQ_wq);
148 170
149static unsigned long xpc_hb_check_timeout; 171static unsigned long xpc_hb_check_timeout;
150 172
151/* xpc_hb_checker thread exited notification */ 173/* notification that the xpc_hb_checker thread has exited */
152static DECLARE_MUTEX_LOCKED(xpc_hb_checker_exited); 174static DECLARE_MUTEX_LOCKED(xpc_hb_checker_exited);
153 175
154/* xpc_discovery thread exited notification */ 176/* notification that the xpc_discovery thread has exited */
155static DECLARE_MUTEX_LOCKED(xpc_discovery_exited); 177static DECLARE_MUTEX_LOCKED(xpc_discovery_exited);
156 178
157 179
@@ -161,6 +183,30 @@ static struct timer_list xpc_hb_timer;
161static void xpc_kthread_waitmsgs(struct xpc_partition *, struct xpc_channel *); 183static void xpc_kthread_waitmsgs(struct xpc_partition *, struct xpc_channel *);
162 184
163 185
186static int xpc_system_reboot(struct notifier_block *, unsigned long, void *);
187static struct notifier_block xpc_reboot_notifier = {
188 .notifier_call = xpc_system_reboot,
189};
190
191
192/*
193 * Timer function to enforce the timelimit on the partition disengage request.
194 */
195static void
196xpc_timeout_partition_disengage_request(unsigned long data)
197{
198 struct xpc_partition *part = (struct xpc_partition *) data;
199
200
201 DBUG_ON(jiffies < part->disengage_request_timeout);
202
203 (void) xpc_partition_disengaged(part);
204
205 DBUG_ON(part->disengage_request_timeout != 0);
206 DBUG_ON(xpc_partition_engaged(1UL << XPC_PARTID(part)) != 0);
207}
208
209
164/* 210/*
165 * Notify the heartbeat check thread that an IRQ has been received. 211 * Notify the heartbeat check thread that an IRQ has been received.
166 */ 212 */
@@ -214,12 +260,6 @@ xpc_hb_checker(void *ignore)
214 260
215 while (!(volatile int) xpc_exiting) { 261 while (!(volatile int) xpc_exiting) {
216 262
217 /* wait for IRQ or timeout */
218 (void) wait_event_interruptible(xpc_act_IRQ_wq,
219 (last_IRQ_count < atomic_read(&xpc_act_IRQ_rcvd) ||
220 jiffies >= xpc_hb_check_timeout ||
221 (volatile int) xpc_exiting));
222
223 dev_dbg(xpc_part, "woke up with %d ticks rem; %d IRQs have " 263 dev_dbg(xpc_part, "woke up with %d ticks rem; %d IRQs have "
224 "been received\n", 264 "been received\n",
225 (int) (xpc_hb_check_timeout - jiffies), 265 (int) (xpc_hb_check_timeout - jiffies),
@@ -240,6 +280,7 @@ xpc_hb_checker(void *ignore)
240 } 280 }
241 281
242 282
283 /* check for outstanding IRQs */
243 new_IRQ_count = atomic_read(&xpc_act_IRQ_rcvd); 284 new_IRQ_count = atomic_read(&xpc_act_IRQ_rcvd);
244 if (last_IRQ_count < new_IRQ_count || force_IRQ != 0) { 285 if (last_IRQ_count < new_IRQ_count || force_IRQ != 0) {
245 force_IRQ = 0; 286 force_IRQ = 0;
@@ -257,12 +298,18 @@ xpc_hb_checker(void *ignore)
257 xpc_hb_check_timeout = jiffies + 298 xpc_hb_check_timeout = jiffies +
258 (xpc_hb_check_interval * HZ); 299 (xpc_hb_check_interval * HZ);
259 } 300 }
301
302 /* wait for IRQ or timeout */
303 (void) wait_event_interruptible(xpc_act_IRQ_wq,
304 (last_IRQ_count < atomic_read(&xpc_act_IRQ_rcvd) ||
305 jiffies >= xpc_hb_check_timeout ||
306 (volatile int) xpc_exiting));
260 } 307 }
261 308
262 dev_dbg(xpc_part, "heartbeat checker is exiting\n"); 309 dev_dbg(xpc_part, "heartbeat checker is exiting\n");
263 310
264 311
265 /* mark this thread as inactive */ 312 /* mark this thread as having exited */
266 up(&xpc_hb_checker_exited); 313 up(&xpc_hb_checker_exited);
267 return 0; 314 return 0;
268} 315}
@@ -282,7 +329,7 @@ xpc_initiate_discovery(void *ignore)
282 329
283 dev_dbg(xpc_part, "discovery thread is exiting\n"); 330 dev_dbg(xpc_part, "discovery thread is exiting\n");
284 331
285 /* mark this thread as inactive */ 332 /* mark this thread as having exited */
286 up(&xpc_discovery_exited); 333 up(&xpc_discovery_exited);
287 return 0; 334 return 0;
288} 335}
@@ -309,7 +356,7 @@ xpc_make_first_contact(struct xpc_partition *part)
309 "partition %d\n", XPC_PARTID(part)); 356 "partition %d\n", XPC_PARTID(part));
310 357
311 /* wait a 1/4 of a second or so */ 358 /* wait a 1/4 of a second or so */
312 msleep_interruptible(250); 359 (void) msleep_interruptible(250);
313 360
314 if (part->act_state == XPC_P_DEACTIVATING) { 361 if (part->act_state == XPC_P_DEACTIVATING) {
315 return part->reason; 362 return part->reason;
@@ -336,7 +383,8 @@ static void
336xpc_channel_mgr(struct xpc_partition *part) 383xpc_channel_mgr(struct xpc_partition *part)
337{ 384{
338 while (part->act_state != XPC_P_DEACTIVATING || 385 while (part->act_state != XPC_P_DEACTIVATING ||
339 atomic_read(&part->nchannels_active) > 0) { 386 atomic_read(&part->nchannels_active) > 0 ||
387 !xpc_partition_disengaged(part)) {
340 388
341 xpc_process_channel_activity(part); 389 xpc_process_channel_activity(part);
342 390
@@ -360,7 +408,8 @@ xpc_channel_mgr(struct xpc_partition *part)
360 (volatile u64) part->local_IPI_amo != 0 || 408 (volatile u64) part->local_IPI_amo != 0 ||
361 ((volatile u8) part->act_state == 409 ((volatile u8) part->act_state ==
362 XPC_P_DEACTIVATING && 410 XPC_P_DEACTIVATING &&
363 atomic_read(&part->nchannels_active) == 0))); 411 atomic_read(&part->nchannels_active) == 0 &&
412 xpc_partition_disengaged(part))));
364 atomic_set(&part->channel_mgr_requests, 1); 413 atomic_set(&part->channel_mgr_requests, 1);
365 414
366 // >>> Does it need to wakeup periodically as well? In case we 415 // >>> Does it need to wakeup periodically as well? In case we
@@ -482,7 +531,7 @@ xpc_activating(void *__partid)
482 return 0; 531 return 0;
483 } 532 }
484 533
485 XPC_ALLOW_HB(partid, xpc_vars); 534 xpc_allow_hb(partid, xpc_vars);
486 xpc_IPI_send_activated(part); 535 xpc_IPI_send_activated(part);
487 536
488 537
@@ -492,6 +541,7 @@ xpc_activating(void *__partid)
492 */ 541 */
493 (void) xpc_partition_up(part); 542 (void) xpc_partition_up(part);
494 543
544 xpc_disallow_hb(partid, xpc_vars);
495 xpc_mark_partition_inactive(part); 545 xpc_mark_partition_inactive(part);
496 546
497 if (part->reason == xpcReactivating) { 547 if (part->reason == xpcReactivating) {
@@ -670,6 +720,7 @@ xpc_daemonize_kthread(void *args)
670 struct xpc_partition *part = &xpc_partitions[partid]; 720 struct xpc_partition *part = &xpc_partitions[partid];
671 struct xpc_channel *ch; 721 struct xpc_channel *ch;
672 int n_needed; 722 int n_needed;
723 unsigned long irq_flags;
673 724
674 725
675 daemonize("xpc%02dc%d", partid, ch_number); 726 daemonize("xpc%02dc%d", partid, ch_number);
@@ -680,11 +731,14 @@ xpc_daemonize_kthread(void *args)
680 ch = &part->channels[ch_number]; 731 ch = &part->channels[ch_number];
681 732
682 if (!(ch->flags & XPC_C_DISCONNECTING)) { 733 if (!(ch->flags & XPC_C_DISCONNECTING)) {
683 DBUG_ON(!(ch->flags & XPC_C_CONNECTED));
684 734
685 /* let registerer know that connection has been established */ 735 /* let registerer know that connection has been established */
686 736
687 if (atomic_read(&ch->kthreads_assigned) == 1) { 737 spin_lock_irqsave(&ch->lock, irq_flags);
738 if (!(ch->flags & XPC_C_CONNECTCALLOUT)) {
739 ch->flags |= XPC_C_CONNECTCALLOUT;
740 spin_unlock_irqrestore(&ch->lock, irq_flags);
741
688 xpc_connected_callout(ch); 742 xpc_connected_callout(ch);
689 743
690 /* 744 /*
@@ -699,16 +753,28 @@ xpc_daemonize_kthread(void *args)
699 !(ch->flags & XPC_C_DISCONNECTING)) { 753 !(ch->flags & XPC_C_DISCONNECTING)) {
700 xpc_activate_kthreads(ch, n_needed); 754 xpc_activate_kthreads(ch, n_needed);
701 } 755 }
756 } else {
757 spin_unlock_irqrestore(&ch->lock, irq_flags);
702 } 758 }
703 759
704 xpc_kthread_waitmsgs(part, ch); 760 xpc_kthread_waitmsgs(part, ch);
705 } 761 }
706 762
707 if (atomic_dec_return(&ch->kthreads_assigned) == 0 && 763 if (atomic_dec_return(&ch->kthreads_assigned) == 0) {
708 ((ch->flags & XPC_C_CONNECTCALLOUT) || 764 spin_lock_irqsave(&ch->lock, irq_flags);
709 (ch->reason != xpcUnregistering && 765 if ((ch->flags & XPC_C_CONNECTCALLOUT) &&
710 ch->reason != xpcOtherUnregistering))) { 766 !(ch->flags & XPC_C_DISCONNECTCALLOUT)) {
711 xpc_disconnected_callout(ch); 767 ch->flags |= XPC_C_DISCONNECTCALLOUT;
768 spin_unlock_irqrestore(&ch->lock, irq_flags);
769
770 xpc_disconnecting_callout(ch);
771 } else {
772 spin_unlock_irqrestore(&ch->lock, irq_flags);
773 }
774 if (atomic_dec_return(&part->nchannels_engaged) == 0) {
775 xpc_mark_partition_disengaged(part);
776 xpc_IPI_send_disengage(part);
777 }
712 } 778 }
713 779
714 780
@@ -740,12 +806,33 @@ xpc_create_kthreads(struct xpc_channel *ch, int needed)
740 unsigned long irq_flags; 806 unsigned long irq_flags;
741 pid_t pid; 807 pid_t pid;
742 u64 args = XPC_PACK_ARGS(ch->partid, ch->number); 808 u64 args = XPC_PACK_ARGS(ch->partid, ch->number);
809 struct xpc_partition *part = &xpc_partitions[ch->partid];
743 810
744 811
745 while (needed-- > 0) { 812 while (needed-- > 0) {
813
814 /*
815 * The following is done on behalf of the newly created
816 * kthread. That kthread is responsible for doing the
817 * counterpart to the following before it exits.
818 */
819 (void) xpc_part_ref(part);
820 xpc_msgqueue_ref(ch);
821 if (atomic_inc_return(&ch->kthreads_assigned) == 1 &&
822 atomic_inc_return(&part->nchannels_engaged) == 1) {
823 xpc_mark_partition_engaged(part);
824 }
825
746 pid = kernel_thread(xpc_daemonize_kthread, (void *) args, 0); 826 pid = kernel_thread(xpc_daemonize_kthread, (void *) args, 0);
747 if (pid < 0) { 827 if (pid < 0) {
748 /* the fork failed */ 828 /* the fork failed */
829 if (atomic_dec_return(&ch->kthreads_assigned) == 0 &&
830 atomic_dec_return(&part->nchannels_engaged) == 0) {
831 xpc_mark_partition_disengaged(part);
832 xpc_IPI_send_disengage(part);
833 }
834 xpc_msgqueue_deref(ch);
835 xpc_part_deref(part);
749 836
750 if (atomic_read(&ch->kthreads_assigned) < 837 if (atomic_read(&ch->kthreads_assigned) <
751 ch->kthreads_idle_limit) { 838 ch->kthreads_idle_limit) {
@@ -765,14 +852,6 @@ xpc_create_kthreads(struct xpc_channel *ch, int needed)
765 break; 852 break;
766 } 853 }
767 854
768 /*
769 * The following is done on behalf of the newly created
770 * kthread. That kthread is responsible for doing the
771 * counterpart to the following before it exits.
772 */
773 (void) xpc_part_ref(&xpc_partitions[ch->partid]);
774 xpc_msgqueue_ref(ch);
775 atomic_inc(&ch->kthreads_assigned);
776 ch->kthreads_created++; // >>> temporary debug only!!! 855 ch->kthreads_created++; // >>> temporary debug only!!!
777 } 856 }
778} 857}
@@ -781,87 +860,142 @@ xpc_create_kthreads(struct xpc_channel *ch, int needed)
781void 860void
782xpc_disconnect_wait(int ch_number) 861xpc_disconnect_wait(int ch_number)
783{ 862{
863 unsigned long irq_flags;
784 partid_t partid; 864 partid_t partid;
785 struct xpc_partition *part; 865 struct xpc_partition *part;
786 struct xpc_channel *ch; 866 struct xpc_channel *ch;
867 int wakeup_channel_mgr;
787 868
788 869
789 /* now wait for all callouts to the caller's function to cease */ 870 /* now wait for all callouts to the caller's function to cease */
790 for (partid = 1; partid < XP_MAX_PARTITIONS; partid++) { 871 for (partid = 1; partid < XP_MAX_PARTITIONS; partid++) {
791 part = &xpc_partitions[partid]; 872 part = &xpc_partitions[partid];
792 873
793 if (xpc_part_ref(part)) { 874 if (!xpc_part_ref(part)) {
794 ch = &part->channels[ch_number]; 875 continue;
876 }
795 877
796// >>> how do we keep from falling into the window between our check and going 878 ch = &part->channels[ch_number];
797// >>> down and coming back up where sema is re-inited?
798 if (ch->flags & XPC_C_SETUP) {
799 (void) down(&ch->teardown_sema);
800 }
801 879
880 if (!(ch->flags & XPC_C_WDISCONNECT)) {
802 xpc_part_deref(part); 881 xpc_part_deref(part);
882 continue;
883 }
884
885 (void) down(&ch->wdisconnect_sema);
886
887 spin_lock_irqsave(&ch->lock, irq_flags);
888 DBUG_ON(!(ch->flags & XPC_C_DISCONNECTED));
889 wakeup_channel_mgr = 0;
890
891 if (ch->delayed_IPI_flags) {
892 if (part->act_state != XPC_P_DEACTIVATING) {
893 spin_lock(&part->IPI_lock);
894 XPC_SET_IPI_FLAGS(part->local_IPI_amo,
895 ch->number, ch->delayed_IPI_flags);
896 spin_unlock(&part->IPI_lock);
897 wakeup_channel_mgr = 1;
898 }
899 ch->delayed_IPI_flags = 0;
803 } 900 }
901
902 ch->flags &= ~XPC_C_WDISCONNECT;
903 spin_unlock_irqrestore(&ch->lock, irq_flags);
904
905 if (wakeup_channel_mgr) {
906 xpc_wakeup_channel_mgr(part);
907 }
908
909 xpc_part_deref(part);
804 } 910 }
805} 911}
806 912
807 913
808static void 914static void
809xpc_do_exit(void) 915xpc_do_exit(enum xpc_retval reason)
810{ 916{
811 partid_t partid; 917 partid_t partid;
812 int active_part_count; 918 int active_part_count;
813 struct xpc_partition *part; 919 struct xpc_partition *part;
920 unsigned long printmsg_time;
814 921
815 922
816 /* now it's time to eliminate our heartbeat */ 923 /* a 'rmmod XPC' and a 'reboot' cannot both end up here together */
817 del_timer_sync(&xpc_hb_timer); 924 DBUG_ON(xpc_exiting == 1);
818 xpc_vars->heartbeating_to_mask = 0;
819
820 /* indicate to others that our reserved page is uninitialized */
821 xpc_rsvd_page->vars_pa = 0;
822
823 /*
824 * Ignore all incoming interrupts. Without interupts the heartbeat
825 * checker won't activate any new partitions that may come up.
826 */
827 free_irq(SGI_XPC_ACTIVATE, NULL);
828 925
829 /* 926 /*
830 * Cause the heartbeat checker and the discovery threads to exit. 927 * Let the heartbeat checker thread and the discovery thread
831 * We don't want them attempting to activate new partitions as we 928 * (if one is running) know that they should exit. Also wake up
832 * try to deactivate the existing ones. 929 * the heartbeat checker thread in case it's sleeping.
833 */ 930 */
834 xpc_exiting = 1; 931 xpc_exiting = 1;
835 wake_up_interruptible(&xpc_act_IRQ_wq); 932 wake_up_interruptible(&xpc_act_IRQ_wq);
836 933
837 /* wait for the heartbeat checker thread to mark itself inactive */ 934 /* ignore all incoming interrupts */
838 down(&xpc_hb_checker_exited); 935 free_irq(SGI_XPC_ACTIVATE, NULL);
839 936
840 /* wait for the discovery thread to mark itself inactive */ 937 /* wait for the discovery thread to exit */
841 down(&xpc_discovery_exited); 938 down(&xpc_discovery_exited);
842 939
940 /* wait for the heartbeat checker thread to exit */
941 down(&xpc_hb_checker_exited);
843 942
844 msleep_interruptible(300); 943
944 /* sleep for a 1/3 of a second or so */
945 (void) msleep_interruptible(300);
845 946
846 947
847 /* wait for all partitions to become inactive */ 948 /* wait for all partitions to become inactive */
848 949
950 printmsg_time = jiffies;
951
849 do { 952 do {
850 active_part_count = 0; 953 active_part_count = 0;
851 954
852 for (partid = 1; partid < XP_MAX_PARTITIONS; partid++) { 955 for (partid = 1; partid < XP_MAX_PARTITIONS; partid++) {
853 part = &xpc_partitions[partid]; 956 part = &xpc_partitions[partid];
854 if (part->act_state != XPC_P_INACTIVE) {
855 active_part_count++;
856 957
857 XPC_DEACTIVATE_PARTITION(part, xpcUnloading); 958 if (xpc_partition_disengaged(part) &&
959 part->act_state == XPC_P_INACTIVE) {
960 continue;
858 } 961 }
962
963 active_part_count++;
964
965 XPC_DEACTIVATE_PARTITION(part, reason);
859 } 966 }
860 967
861 if (active_part_count) 968 if (active_part_count == 0) {
862 msleep_interruptible(300); 969 break;
863 } while (active_part_count > 0); 970 }
864 971
972 if (jiffies >= printmsg_time) {
973 dev_info(xpc_part, "waiting for partitions to "
974 "deactivate/disengage, active count=%d, remote "
975 "engaged=0x%lx\n", active_part_count,
976 xpc_partition_engaged(1UL << partid));
977
978 printmsg_time = jiffies +
979 (XPC_DISENGAGE_PRINTMSG_INTERVAL * HZ);
980 }
981
982 /* sleep for a 1/3 of a second or so */
983 (void) msleep_interruptible(300);
984
985 } while (1);
986
987 DBUG_ON(xpc_partition_engaged(-1UL));
988
989
990 /* indicate to others that our reserved page is uninitialized */
991 xpc_rsvd_page->vars_pa = 0;
992
993 /* now it's time to eliminate our heartbeat */
994 del_timer_sync(&xpc_hb_timer);
995 DBUG_ON(xpc_vars->heartbeating_to_mask != 0);
996
997 /* take ourselves off of the reboot_notifier_list */
998 (void) unregister_reboot_notifier(&xpc_reboot_notifier);
865 999
866 /* close down protections for IPI operations */ 1000 /* close down protections for IPI operations */
867 xpc_restrict_IPI_ops(); 1001 xpc_restrict_IPI_ops();
@@ -876,6 +1010,34 @@ xpc_do_exit(void)
876} 1010}
877 1011
878 1012
1013/*
1014 * This function is called when the system is being rebooted.
1015 */
1016static int
1017xpc_system_reboot(struct notifier_block *nb, unsigned long event, void *unused)
1018{
1019 enum xpc_retval reason;
1020
1021
1022 switch (event) {
1023 case SYS_RESTART:
1024 reason = xpcSystemReboot;
1025 break;
1026 case SYS_HALT:
1027 reason = xpcSystemHalt;
1028 break;
1029 case SYS_POWER_OFF:
1030 reason = xpcSystemPoweroff;
1031 break;
1032 default:
1033 reason = xpcSystemGoingDown;
1034 }
1035
1036 xpc_do_exit(reason);
1037 return NOTIFY_DONE;
1038}
1039
1040
879int __init 1041int __init
880xpc_init(void) 1042xpc_init(void)
881{ 1043{
@@ -891,11 +1053,11 @@ xpc_init(void)
891 1053
892 /* 1054 /*
893 * xpc_remote_copy_buffer is used as a temporary buffer for bte_copy'ng 1055 * xpc_remote_copy_buffer is used as a temporary buffer for bte_copy'ng
894 * both a partition's reserved page and its XPC variables. Its size was 1056 * various portions of a partition's reserved page. Its size is based
895 * based on the size of a reserved page. So we need to ensure that the 1057 * on the size of the reserved page header and part_nasids mask. So we
896 * XPC variables will fit as well. 1058 * need to ensure that the other items will fit as well.
897 */ 1059 */
898 if (XPC_VARS_ALIGNED_SIZE > XPC_RSVD_PAGE_ALIGNED_SIZE) { 1060 if (XPC_RP_VARS_SIZE > XPC_RP_HEADER_SIZE + XP_NASID_MASK_BYTES) {
899 dev_err(xpc_part, "xpc_remote_copy_buffer is not big enough\n"); 1061 dev_err(xpc_part, "xpc_remote_copy_buffer is not big enough\n");
900 return -EPERM; 1062 return -EPERM;
901 } 1063 }
@@ -924,6 +1086,12 @@ xpc_init(void)
924 spin_lock_init(&part->act_lock); 1086 spin_lock_init(&part->act_lock);
925 part->act_state = XPC_P_INACTIVE; 1087 part->act_state = XPC_P_INACTIVE;
926 XPC_SET_REASON(part, 0, 0); 1088 XPC_SET_REASON(part, 0, 0);
1089
1090 init_timer(&part->disengage_request_timer);
1091 part->disengage_request_timer.function =
1092 xpc_timeout_partition_disengage_request;
1093 part->disengage_request_timer.data = (unsigned long) part;
1094
927 part->setup_state = XPC_P_UNSET; 1095 part->setup_state = XPC_P_UNSET;
928 init_waitqueue_head(&part->teardown_wq); 1096 init_waitqueue_head(&part->teardown_wq);
929 atomic_set(&part->references, 0); 1097 atomic_set(&part->references, 0);
@@ -980,6 +1148,13 @@ xpc_init(void)
980 } 1148 }
981 1149
982 1150
1151 /* add ourselves to the reboot_notifier_list */
1152 ret = register_reboot_notifier(&xpc_reboot_notifier);
1153 if (ret != 0) {
1154 dev_warn(xpc_part, "can't register reboot notifier\n");
1155 }
1156
1157
983 /* 1158 /*
984 * Set the beating to other partitions into motion. This is 1159 * Set the beating to other partitions into motion. This is
985 * the last requirement for other partitions' discovery to 1160 * the last requirement for other partitions' discovery to
@@ -1001,6 +1176,9 @@ xpc_init(void)
1001 /* indicate to others that our reserved page is uninitialized */ 1176 /* indicate to others that our reserved page is uninitialized */
1002 xpc_rsvd_page->vars_pa = 0; 1177 xpc_rsvd_page->vars_pa = 0;
1003 1178
1179 /* take ourselves off of the reboot_notifier_list */
1180 (void) unregister_reboot_notifier(&xpc_reboot_notifier);
1181
1004 del_timer_sync(&xpc_hb_timer); 1182 del_timer_sync(&xpc_hb_timer);
1005 free_irq(SGI_XPC_ACTIVATE, NULL); 1183 free_irq(SGI_XPC_ACTIVATE, NULL);
1006 xpc_restrict_IPI_ops(); 1184 xpc_restrict_IPI_ops();
@@ -1024,7 +1202,7 @@ xpc_init(void)
1024 /* mark this new thread as a non-starter */ 1202 /* mark this new thread as a non-starter */
1025 up(&xpc_discovery_exited); 1203 up(&xpc_discovery_exited);
1026 1204
1027 xpc_do_exit(); 1205 xpc_do_exit(xpcUnloading);
1028 return -EBUSY; 1206 return -EBUSY;
1029 } 1207 }
1030 1208
@@ -1043,7 +1221,7 @@ module_init(xpc_init);
1043void __exit 1221void __exit
1044xpc_exit(void) 1222xpc_exit(void)
1045{ 1223{
1046 xpc_do_exit(); 1224 xpc_do_exit(xpcUnloading);
1047} 1225}
1048module_exit(xpc_exit); 1226module_exit(xpc_exit);
1049 1227
@@ -1060,3 +1238,7 @@ module_param(xpc_hb_check_interval, int, 0);
1060MODULE_PARM_DESC(xpc_hb_check_interval, "Number of seconds between " 1238MODULE_PARM_DESC(xpc_hb_check_interval, "Number of seconds between "
1061 "heartbeat checks."); 1239 "heartbeat checks.");
1062 1240
1241module_param(xpc_disengage_request_timelimit, int, 0);
1242MODULE_PARM_DESC(xpc_disengage_request_timelimit, "Number of seconds to wait "
1243 "for disengage request to complete.");
1244
diff --git a/arch/ia64/sn/kernel/xpc_partition.c b/arch/ia64/sn/kernel/xpc_partition.c
index 578265ea9e67..581e113d2d37 100644
--- a/arch/ia64/sn/kernel/xpc_partition.c
+++ b/arch/ia64/sn/kernel/xpc_partition.c
@@ -44,16 +44,19 @@ static u64 xpc_sh2_IPI_access3;
44 44
45 45
46/* original protection values for each node */ 46/* original protection values for each node */
47u64 xpc_prot_vec[MAX_COMPACT_NODES]; 47u64 xpc_prot_vec[MAX_NUMNODES];
48 48
49 49
50/* this partition's reserved page */ 50/* this partition's reserved page pointers */
51struct xpc_rsvd_page *xpc_rsvd_page; 51struct xpc_rsvd_page *xpc_rsvd_page;
52 52static u64 *xpc_part_nasids;
53/* this partition's XPC variables (within the reserved page) */ 53static u64 *xpc_mach_nasids;
54struct xpc_vars *xpc_vars; 54struct xpc_vars *xpc_vars;
55struct xpc_vars_part *xpc_vars_part; 55struct xpc_vars_part *xpc_vars_part;
56 56
57static int xp_nasid_mask_bytes; /* actual size in bytes of nasid mask */
58static int xp_nasid_mask_words; /* actual size in words of nasid mask */
59
57 60
58/* 61/*
59 * For performance reasons, each entry of xpc_partitions[] is cacheline 62 * For performance reasons, each entry of xpc_partitions[] is cacheline
@@ -65,20 +68,16 @@ struct xpc_partition xpc_partitions[XP_MAX_PARTITIONS + 1];
65 68
66 69
67/* 70/*
68 * Generic buffer used to store a local copy of the remote partitions 71 * Generic buffer used to store a local copy of portions of a remote
69 * reserved page or XPC variables. 72 * partition's reserved page (either its header and part_nasids mask,
73 * or its vars).
70 * 74 *
71 * xpc_discovery runs only once and is a seperate thread that is 75 * xpc_discovery runs only once and is a seperate thread that is
72 * very likely going to be processing in parallel with receiving 76 * very likely going to be processing in parallel with receiving
73 * interrupts. 77 * interrupts.
74 */ 78 */
75char ____cacheline_aligned 79char ____cacheline_aligned xpc_remote_copy_buffer[XPC_RP_HEADER_SIZE +
76 xpc_remote_copy_buffer[XPC_RSVD_PAGE_ALIGNED_SIZE]; 80 XP_NASID_MASK_BYTES];
77
78
79/* systune related variables */
80int xpc_hb_interval = XPC_HB_DEFAULT_INTERVAL;
81int xpc_hb_check_interval = XPC_HB_CHECK_DEFAULT_TIMEOUT;
82 81
83 82
84/* 83/*
@@ -86,13 +85,16 @@ int xpc_hb_check_interval = XPC_HB_CHECK_DEFAULT_TIMEOUT;
86 * for that nasid. This function returns 0 on any error. 85 * for that nasid. This function returns 0 on any error.
87 */ 86 */
88static u64 87static u64
89xpc_get_rsvd_page_pa(int nasid, u64 buf, u64 buf_size) 88xpc_get_rsvd_page_pa(int nasid)
90{ 89{
91 bte_result_t bte_res; 90 bte_result_t bte_res;
92 s64 status; 91 s64 status;
93 u64 cookie = 0; 92 u64 cookie = 0;
94 u64 rp_pa = nasid; /* seed with nasid */ 93 u64 rp_pa = nasid; /* seed with nasid */
95 u64 len = 0; 94 u64 len = 0;
95 u64 buf = buf;
96 u64 buf_len = 0;
97 void *buf_base = NULL;
96 98
97 99
98 while (1) { 100 while (1) {
@@ -108,13 +110,22 @@ xpc_get_rsvd_page_pa(int nasid, u64 buf, u64 buf_size)
108 break; 110 break;
109 } 111 }
110 112
111 if (len > buf_size) { 113 if (L1_CACHE_ALIGN(len) > buf_len) {
112 dev_err(xpc_part, "len (=0x%016lx) > buf_size\n", len); 114 if (buf_base != NULL) {
113 status = SALRET_ERROR; 115 kfree(buf_base);
114 break; 116 }
117 buf_len = L1_CACHE_ALIGN(len);
118 buf = (u64) xpc_kmalloc_cacheline_aligned(buf_len,
119 GFP_KERNEL, &buf_base);
120 if (buf_base == NULL) {
121 dev_err(xpc_part, "unable to kmalloc "
122 "len=0x%016lx\n", buf_len);
123 status = SALRET_ERROR;
124 break;
125 }
115 } 126 }
116 127
117 bte_res = xp_bte_copy(rp_pa, ia64_tpa(buf), buf_size, 128 bte_res = xp_bte_copy(rp_pa, ia64_tpa(buf), buf_len,
118 (BTE_NOTIFY | BTE_WACQUIRE), NULL); 129 (BTE_NOTIFY | BTE_WACQUIRE), NULL);
119 if (bte_res != BTE_SUCCESS) { 130 if (bte_res != BTE_SUCCESS) {
120 dev_dbg(xpc_part, "xp_bte_copy failed %i\n", bte_res); 131 dev_dbg(xpc_part, "xp_bte_copy failed %i\n", bte_res);
@@ -123,6 +134,10 @@ xpc_get_rsvd_page_pa(int nasid, u64 buf, u64 buf_size)
123 } 134 }
124 } 135 }
125 136
137 if (buf_base != NULL) {
138 kfree(buf_base);
139 }
140
126 if (status != SALRET_OK) { 141 if (status != SALRET_OK) {
127 rp_pa = 0; 142 rp_pa = 0;
128 } 143 }
@@ -141,15 +156,15 @@ xpc_rsvd_page_init(void)
141{ 156{
142 struct xpc_rsvd_page *rp; 157 struct xpc_rsvd_page *rp;
143 AMO_t *amos_page; 158 AMO_t *amos_page;
144 u64 rp_pa, next_cl, nasid_array = 0; 159 u64 rp_pa, nasid_array = 0;
145 int i, ret; 160 int i, ret;
146 161
147 162
148 /* get the local reserved page's address */ 163 /* get the local reserved page's address */
149 164
150 rp_pa = xpc_get_rsvd_page_pa(cnodeid_to_nasid(0), 165 preempt_disable();
151 (u64) xpc_remote_copy_buffer, 166 rp_pa = xpc_get_rsvd_page_pa(cpuid_to_nasid(smp_processor_id()));
152 XPC_RSVD_PAGE_ALIGNED_SIZE); 167 preempt_enable();
153 if (rp_pa == 0) { 168 if (rp_pa == 0) {
154 dev_err(xpc_part, "SAL failed to locate the reserved page\n"); 169 dev_err(xpc_part, "SAL failed to locate the reserved page\n");
155 return NULL; 170 return NULL;
@@ -164,12 +179,19 @@ xpc_rsvd_page_init(void)
164 179
165 rp->version = XPC_RP_VERSION; 180 rp->version = XPC_RP_VERSION;
166 181
167 /* 182 /* establish the actual sizes of the nasid masks */
168 * Place the XPC variables on the cache line following the 183 if (rp->SAL_version == 1) {
169 * reserved page structure. 184 /* SAL_version 1 didn't set the nasids_size field */
170 */ 185 rp->nasids_size = 128;
171 next_cl = (u64) rp + XPC_RSVD_PAGE_ALIGNED_SIZE; 186 }
172 xpc_vars = (struct xpc_vars *) next_cl; 187 xp_nasid_mask_bytes = rp->nasids_size;
188 xp_nasid_mask_words = xp_nasid_mask_bytes / 8;
189
190 /* setup the pointers to the various items in the reserved page */
191 xpc_part_nasids = XPC_RP_PART_NASIDS(rp);
192 xpc_mach_nasids = XPC_RP_MACH_NASIDS(rp);
193 xpc_vars = XPC_RP_VARS(rp);
194 xpc_vars_part = XPC_RP_VARS_PART(rp);
173 195
174 /* 196 /*
175 * Before clearing xpc_vars, see if a page of AMOs had been previously 197 * Before clearing xpc_vars, see if a page of AMOs had been previously
@@ -221,33 +243,32 @@ xpc_rsvd_page_init(void)
221 amos_page = (AMO_t *) TO_AMO((u64) amos_page); 243 amos_page = (AMO_t *) TO_AMO((u64) amos_page);
222 } 244 }
223 245
246 /* clear xpc_vars */
224 memset(xpc_vars, 0, sizeof(struct xpc_vars)); 247 memset(xpc_vars, 0, sizeof(struct xpc_vars));
225 248
226 /*
227 * Place the XPC per partition specific variables on the cache line
228 * following the XPC variables structure.
229 */
230 next_cl += XPC_VARS_ALIGNED_SIZE;
231 memset((u64 *) next_cl, 0, sizeof(struct xpc_vars_part) *
232 XP_MAX_PARTITIONS);
233 xpc_vars_part = (struct xpc_vars_part *) next_cl;
234 xpc_vars->vars_part_pa = __pa(next_cl);
235
236 xpc_vars->version = XPC_V_VERSION; 249 xpc_vars->version = XPC_V_VERSION;
237 xpc_vars->act_nasid = cpuid_to_nasid(0); 250 xpc_vars->act_nasid = cpuid_to_nasid(0);
238 xpc_vars->act_phys_cpuid = cpu_physical_id(0); 251 xpc_vars->act_phys_cpuid = cpu_physical_id(0);
252 xpc_vars->vars_part_pa = __pa(xpc_vars_part);
253 xpc_vars->amos_page_pa = ia64_tpa((u64) amos_page);
239 xpc_vars->amos_page = amos_page; /* save for next load of XPC */ 254 xpc_vars->amos_page = amos_page; /* save for next load of XPC */
240 255
241 256
242 /* 257 /* clear xpc_vars_part */
243 * Initialize the activation related AMO variables. 258 memset((u64 *) xpc_vars_part, 0, sizeof(struct xpc_vars_part) *
244 */ 259 XP_MAX_PARTITIONS);
245 xpc_vars->act_amos = xpc_IPI_init(XP_MAX_PARTITIONS); 260
246 for (i = 1; i < XP_NASID_MASK_WORDS; i++) { 261 /* initialize the activate IRQ related AMO variables */
247 xpc_IPI_init(i + XP_MAX_PARTITIONS); 262 for (i = 0; i < xp_nasid_mask_words; i++) {
263 (void) xpc_IPI_init(XPC_ACTIVATE_IRQ_AMOS + i);
248 } 264 }
249 /* export AMO page's physical address to other partitions */ 265
250 xpc_vars->amos_page_pa = ia64_tpa((u64) xpc_vars->amos_page); 266 /* initialize the engaged remote partitions related AMO variables */
267 (void) xpc_IPI_init(XPC_ENGAGED_PARTITIONS_AMO);
268 (void) xpc_IPI_init(XPC_DISENGAGE_REQUEST_AMO);
269
270 /* timestamp of when reserved page was setup by XPC */
271 rp->stamp = CURRENT_TIME;
251 272
252 /* 273 /*
253 * This signifies to the remote partition that our reserved 274 * This signifies to the remote partition that our reserved
@@ -387,6 +408,11 @@ xpc_check_remote_hb(void)
387 remote_vars = (struct xpc_vars *) xpc_remote_copy_buffer; 408 remote_vars = (struct xpc_vars *) xpc_remote_copy_buffer;
388 409
389 for (partid = 1; partid < XP_MAX_PARTITIONS; partid++) { 410 for (partid = 1; partid < XP_MAX_PARTITIONS; partid++) {
411
412 if (xpc_exiting) {
413 break;
414 }
415
390 if (partid == sn_partition_id) { 416 if (partid == sn_partition_id) {
391 continue; 417 continue;
392 } 418 }
@@ -401,7 +427,7 @@ xpc_check_remote_hb(void)
401 /* pull the remote_hb cache line */ 427 /* pull the remote_hb cache line */
402 bres = xp_bte_copy(part->remote_vars_pa, 428 bres = xp_bte_copy(part->remote_vars_pa,
403 ia64_tpa((u64) remote_vars), 429 ia64_tpa((u64) remote_vars),
404 XPC_VARS_ALIGNED_SIZE, 430 XPC_RP_VARS_SIZE,
405 (BTE_NOTIFY | BTE_WACQUIRE), NULL); 431 (BTE_NOTIFY | BTE_WACQUIRE), NULL);
406 if (bres != BTE_SUCCESS) { 432 if (bres != BTE_SUCCESS) {
407 XPC_DEACTIVATE_PARTITION(part, 433 XPC_DEACTIVATE_PARTITION(part,
@@ -417,7 +443,7 @@ xpc_check_remote_hb(void)
417 443
418 if (((remote_vars->heartbeat == part->last_heartbeat) && 444 if (((remote_vars->heartbeat == part->last_heartbeat) &&
419 (remote_vars->kdb_status == 0)) || 445 (remote_vars->kdb_status == 0)) ||
420 !XPC_HB_ALLOWED(sn_partition_id, remote_vars)) { 446 !xpc_hb_allowed(sn_partition_id, remote_vars)) {
421 447
422 XPC_DEACTIVATE_PARTITION(part, xpcNoHeartbeat); 448 XPC_DEACTIVATE_PARTITION(part, xpcNoHeartbeat);
423 continue; 449 continue;
@@ -429,31 +455,31 @@ xpc_check_remote_hb(void)
429 455
430 456
431/* 457/*
432 * Get a copy of the remote partition's rsvd page. 458 * Get a copy of a portion of the remote partition's rsvd page.
433 * 459 *
434 * remote_rp points to a buffer that is cacheline aligned for BTE copies and 460 * remote_rp points to a buffer that is cacheline aligned for BTE copies and
435 * assumed to be of size XPC_RSVD_PAGE_ALIGNED_SIZE. 461 * is large enough to contain a copy of their reserved page header and
462 * part_nasids mask.
436 */ 463 */
437static enum xpc_retval 464static enum xpc_retval
438xpc_get_remote_rp(int nasid, u64 *discovered_nasids, 465xpc_get_remote_rp(int nasid, u64 *discovered_nasids,
439 struct xpc_rsvd_page *remote_rp, u64 *remote_rsvd_page_pa) 466 struct xpc_rsvd_page *remote_rp, u64 *remote_rp_pa)
440{ 467{
441 int bres, i; 468 int bres, i;
442 469
443 470
444 /* get the reserved page's physical address */ 471 /* get the reserved page's physical address */
445 472
446 *remote_rsvd_page_pa = xpc_get_rsvd_page_pa(nasid, (u64) remote_rp, 473 *remote_rp_pa = xpc_get_rsvd_page_pa(nasid);
447 XPC_RSVD_PAGE_ALIGNED_SIZE); 474 if (*remote_rp_pa == 0) {
448 if (*remote_rsvd_page_pa == 0) {
449 return xpcNoRsvdPageAddr; 475 return xpcNoRsvdPageAddr;
450 } 476 }
451 477
452 478
453 /* pull over the reserved page structure */ 479 /* pull over the reserved page header and part_nasids mask */
454 480
455 bres = xp_bte_copy(*remote_rsvd_page_pa, ia64_tpa((u64) remote_rp), 481 bres = xp_bte_copy(*remote_rp_pa, ia64_tpa((u64) remote_rp),
456 XPC_RSVD_PAGE_ALIGNED_SIZE, 482 XPC_RP_HEADER_SIZE + xp_nasid_mask_bytes,
457 (BTE_NOTIFY | BTE_WACQUIRE), NULL); 483 (BTE_NOTIFY | BTE_WACQUIRE), NULL);
458 if (bres != BTE_SUCCESS) { 484 if (bres != BTE_SUCCESS) {
459 return xpc_map_bte_errors(bres); 485 return xpc_map_bte_errors(bres);
@@ -461,8 +487,11 @@ xpc_get_remote_rp(int nasid, u64 *discovered_nasids,
461 487
462 488
463 if (discovered_nasids != NULL) { 489 if (discovered_nasids != NULL) {
464 for (i = 0; i < XP_NASID_MASK_WORDS; i++) { 490 u64 *remote_part_nasids = XPC_RP_PART_NASIDS(remote_rp);
465 discovered_nasids[i] |= remote_rp->part_nasids[i]; 491
492
493 for (i = 0; i < xp_nasid_mask_words; i++) {
494 discovered_nasids[i] |= remote_part_nasids[i];
466 } 495 }
467 } 496 }
468 497
@@ -489,10 +518,10 @@ xpc_get_remote_rp(int nasid, u64 *discovered_nasids,
489 518
490 519
491/* 520/*
492 * Get a copy of the remote partition's XPC variables. 521 * Get a copy of the remote partition's XPC variables from the reserved page.
493 * 522 *
494 * remote_vars points to a buffer that is cacheline aligned for BTE copies and 523 * remote_vars points to a buffer that is cacheline aligned for BTE copies and
495 * assumed to be of size XPC_VARS_ALIGNED_SIZE. 524 * assumed to be of size XPC_RP_VARS_SIZE.
496 */ 525 */
497static enum xpc_retval 526static enum xpc_retval
498xpc_get_remote_vars(u64 remote_vars_pa, struct xpc_vars *remote_vars) 527xpc_get_remote_vars(u64 remote_vars_pa, struct xpc_vars *remote_vars)
@@ -508,7 +537,7 @@ xpc_get_remote_vars(u64 remote_vars_pa, struct xpc_vars *remote_vars)
508 /* pull over the cross partition variables */ 537 /* pull over the cross partition variables */
509 538
510 bres = xp_bte_copy(remote_vars_pa, ia64_tpa((u64) remote_vars), 539 bres = xp_bte_copy(remote_vars_pa, ia64_tpa((u64) remote_vars),
511 XPC_VARS_ALIGNED_SIZE, 540 XPC_RP_VARS_SIZE,
512 (BTE_NOTIFY | BTE_WACQUIRE), NULL); 541 (BTE_NOTIFY | BTE_WACQUIRE), NULL);
513 if (bres != BTE_SUCCESS) { 542 if (bres != BTE_SUCCESS) {
514 return xpc_map_bte_errors(bres); 543 return xpc_map_bte_errors(bres);
@@ -524,7 +553,56 @@ xpc_get_remote_vars(u64 remote_vars_pa, struct xpc_vars *remote_vars)
524 553
525 554
526/* 555/*
527 * Prior code has determine the nasid which generated an IPI. Inspect 556 * Update the remote partition's info.
557 */
558static void
559xpc_update_partition_info(struct xpc_partition *part, u8 remote_rp_version,
560 struct timespec *remote_rp_stamp, u64 remote_rp_pa,
561 u64 remote_vars_pa, struct xpc_vars *remote_vars)
562{
563 part->remote_rp_version = remote_rp_version;
564 dev_dbg(xpc_part, " remote_rp_version = 0x%016lx\n",
565 part->remote_rp_version);
566
567 part->remote_rp_stamp = *remote_rp_stamp;
568 dev_dbg(xpc_part, " remote_rp_stamp (tv_sec = 0x%lx tv_nsec = 0x%lx\n",
569 part->remote_rp_stamp.tv_sec, part->remote_rp_stamp.tv_nsec);
570
571 part->remote_rp_pa = remote_rp_pa;
572 dev_dbg(xpc_part, " remote_rp_pa = 0x%016lx\n", part->remote_rp_pa);
573
574 part->remote_vars_pa = remote_vars_pa;
575 dev_dbg(xpc_part, " remote_vars_pa = 0x%016lx\n",
576 part->remote_vars_pa);
577
578 part->last_heartbeat = remote_vars->heartbeat;
579 dev_dbg(xpc_part, " last_heartbeat = 0x%016lx\n",
580 part->last_heartbeat);
581
582 part->remote_vars_part_pa = remote_vars->vars_part_pa;
583 dev_dbg(xpc_part, " remote_vars_part_pa = 0x%016lx\n",
584 part->remote_vars_part_pa);
585
586 part->remote_act_nasid = remote_vars->act_nasid;
587 dev_dbg(xpc_part, " remote_act_nasid = 0x%x\n",
588 part->remote_act_nasid);
589
590 part->remote_act_phys_cpuid = remote_vars->act_phys_cpuid;
591 dev_dbg(xpc_part, " remote_act_phys_cpuid = 0x%x\n",
592 part->remote_act_phys_cpuid);
593
594 part->remote_amos_page_pa = remote_vars->amos_page_pa;
595 dev_dbg(xpc_part, " remote_amos_page_pa = 0x%lx\n",
596 part->remote_amos_page_pa);
597
598 part->remote_vars_version = remote_vars->version;
599 dev_dbg(xpc_part, " remote_vars_version = 0x%x\n",
600 part->remote_vars_version);
601}
602
603
604/*
605 * Prior code has determined the nasid which generated an IPI. Inspect
528 * that nasid to determine if its partition needs to be activated or 606 * that nasid to determine if its partition needs to be activated or
529 * deactivated. 607 * deactivated.
530 * 608 *
@@ -542,8 +620,12 @@ xpc_identify_act_IRQ_req(int nasid)
542{ 620{
543 struct xpc_rsvd_page *remote_rp; 621 struct xpc_rsvd_page *remote_rp;
544 struct xpc_vars *remote_vars; 622 struct xpc_vars *remote_vars;
545 u64 remote_rsvd_page_pa; 623 u64 remote_rp_pa;
546 u64 remote_vars_pa; 624 u64 remote_vars_pa;
625 int remote_rp_version;
626 int reactivate = 0;
627 int stamp_diff;
628 struct timespec remote_rp_stamp = { 0, 0 };
547 partid_t partid; 629 partid_t partid;
548 struct xpc_partition *part; 630 struct xpc_partition *part;
549 enum xpc_retval ret; 631 enum xpc_retval ret;
@@ -553,7 +635,7 @@ xpc_identify_act_IRQ_req(int nasid)
553 635
554 remote_rp = (struct xpc_rsvd_page *) xpc_remote_copy_buffer; 636 remote_rp = (struct xpc_rsvd_page *) xpc_remote_copy_buffer;
555 637
556 ret = xpc_get_remote_rp(nasid, NULL, remote_rp, &remote_rsvd_page_pa); 638 ret = xpc_get_remote_rp(nasid, NULL, remote_rp, &remote_rp_pa);
557 if (ret != xpcSuccess) { 639 if (ret != xpcSuccess) {
558 dev_warn(xpc_part, "unable to get reserved page from nasid %d, " 640 dev_warn(xpc_part, "unable to get reserved page from nasid %d, "
559 "which sent interrupt, reason=%d\n", nasid, ret); 641 "which sent interrupt, reason=%d\n", nasid, ret);
@@ -561,6 +643,10 @@ xpc_identify_act_IRQ_req(int nasid)
561 } 643 }
562 644
563 remote_vars_pa = remote_rp->vars_pa; 645 remote_vars_pa = remote_rp->vars_pa;
646 remote_rp_version = remote_rp->version;
647 if (XPC_SUPPORTS_RP_STAMP(remote_rp_version)) {
648 remote_rp_stamp = remote_rp->stamp;
649 }
564 partid = remote_rp->partid; 650 partid = remote_rp->partid;
565 part = &xpc_partitions[partid]; 651 part = &xpc_partitions[partid];
566 652
@@ -586,44 +672,117 @@ xpc_identify_act_IRQ_req(int nasid)
586 "%ld:0x%lx\n", (int) nasid, (int) partid, part->act_IRQ_rcvd, 672 "%ld:0x%lx\n", (int) nasid, (int) partid, part->act_IRQ_rcvd,
587 remote_vars->heartbeat, remote_vars->heartbeating_to_mask); 673 remote_vars->heartbeat, remote_vars->heartbeating_to_mask);
588 674
675 if (xpc_partition_disengaged(part) &&
676 part->act_state == XPC_P_INACTIVE) {
589 677
590 if (part->act_state == XPC_P_INACTIVE) { 678 xpc_update_partition_info(part, remote_rp_version,
679 &remote_rp_stamp, remote_rp_pa,
680 remote_vars_pa, remote_vars);
591 681
592 part->remote_rp_pa = remote_rsvd_page_pa; 682 if (XPC_SUPPORTS_DISENGAGE_REQUEST(part->remote_vars_version)) {
593 dev_dbg(xpc_part, " remote_rp_pa = 0x%016lx\n", 683 if (xpc_partition_disengage_requested(1UL << partid)) {
594 part->remote_rp_pa); 684 /*
685 * Other side is waiting on us to disengage,
686 * even though we already have.
687 */
688 return;
689 }
690 } else {
691 /* other side doesn't support disengage requests */
692 xpc_clear_partition_disengage_request(1UL << partid);
693 }
595 694
596 part->remote_vars_pa = remote_vars_pa; 695 xpc_activate_partition(part);
597 dev_dbg(xpc_part, " remote_vars_pa = 0x%016lx\n", 696 return;
598 part->remote_vars_pa); 697 }
599 698
600 part->last_heartbeat = remote_vars->heartbeat; 699 DBUG_ON(part->remote_rp_version == 0);
601 dev_dbg(xpc_part, " last_heartbeat = 0x%016lx\n", 700 DBUG_ON(part->remote_vars_version == 0);
602 part->last_heartbeat); 701
702 if (!XPC_SUPPORTS_RP_STAMP(part->remote_rp_version)) {
703 DBUG_ON(XPC_SUPPORTS_DISENGAGE_REQUEST(part->
704 remote_vars_version));
705
706 if (!XPC_SUPPORTS_RP_STAMP(remote_rp_version)) {
707 DBUG_ON(XPC_SUPPORTS_DISENGAGE_REQUEST(remote_vars->
708 version));
709 /* see if the other side rebooted */
710 if (part->remote_amos_page_pa ==
711 remote_vars->amos_page_pa &&
712 xpc_hb_allowed(sn_partition_id,
713 remote_vars)) {
714 /* doesn't look that way, so ignore the IPI */
715 return;
716 }
717 }
603 718
604 part->remote_vars_part_pa = remote_vars->vars_part_pa; 719 /*
605 dev_dbg(xpc_part, " remote_vars_part_pa = 0x%016lx\n", 720 * Other side rebooted and previous XPC didn't support the
606 part->remote_vars_part_pa); 721 * disengage request, so we don't need to do anything special.
722 */
607 723
608 part->remote_act_nasid = remote_vars->act_nasid; 724 xpc_update_partition_info(part, remote_rp_version,
609 dev_dbg(xpc_part, " remote_act_nasid = 0x%x\n", 725 &remote_rp_stamp, remote_rp_pa,
610 part->remote_act_nasid); 726 remote_vars_pa, remote_vars);
727 part->reactivate_nasid = nasid;
728 XPC_DEACTIVATE_PARTITION(part, xpcReactivating);
729 return;
730 }
611 731
612 part->remote_act_phys_cpuid = remote_vars->act_phys_cpuid; 732 DBUG_ON(!XPC_SUPPORTS_DISENGAGE_REQUEST(part->remote_vars_version));
613 dev_dbg(xpc_part, " remote_act_phys_cpuid = 0x%x\n",
614 part->remote_act_phys_cpuid);
615 733
616 part->remote_amos_page_pa = remote_vars->amos_page_pa; 734 if (!XPC_SUPPORTS_RP_STAMP(remote_rp_version)) {
617 dev_dbg(xpc_part, " remote_amos_page_pa = 0x%lx\n", 735 DBUG_ON(!XPC_SUPPORTS_DISENGAGE_REQUEST(remote_vars->version));
618 part->remote_amos_page_pa);
619 736
620 xpc_activate_partition(part); 737 /*
738 * Other side rebooted and previous XPC did support the
739 * disengage request, but the new one doesn't.
740 */
741
742 xpc_clear_partition_engaged(1UL << partid);
743 xpc_clear_partition_disengage_request(1UL << partid);
621 744
622 } else if (part->remote_amos_page_pa != remote_vars->amos_page_pa || 745 xpc_update_partition_info(part, remote_rp_version,
623 !XPC_HB_ALLOWED(sn_partition_id, remote_vars)) { 746 &remote_rp_stamp, remote_rp_pa,
747 remote_vars_pa, remote_vars);
748 reactivate = 1;
749
750 } else {
751 DBUG_ON(!XPC_SUPPORTS_DISENGAGE_REQUEST(remote_vars->version));
624 752
753 stamp_diff = xpc_compare_stamps(&part->remote_rp_stamp,
754 &remote_rp_stamp);
755 if (stamp_diff != 0) {
756 DBUG_ON(stamp_diff >= 0);
757
758 /*
759 * Other side rebooted and the previous XPC did support
760 * the disengage request, as does the new one.
761 */
762
763 DBUG_ON(xpc_partition_engaged(1UL << partid));
764 DBUG_ON(xpc_partition_disengage_requested(1UL <<
765 partid));
766
767 xpc_update_partition_info(part, remote_rp_version,
768 &remote_rp_stamp, remote_rp_pa,
769 remote_vars_pa, remote_vars);
770 reactivate = 1;
771 }
772 }
773
774 if (!xpc_partition_disengaged(part)) {
775 /* still waiting on other side to disengage from us */
776 return;
777 }
778
779 if (reactivate) {
625 part->reactivate_nasid = nasid; 780 part->reactivate_nasid = nasid;
626 XPC_DEACTIVATE_PARTITION(part, xpcReactivating); 781 XPC_DEACTIVATE_PARTITION(part, xpcReactivating);
782
783 } else if (XPC_SUPPORTS_DISENGAGE_REQUEST(part->remote_vars_version) &&
784 xpc_partition_disengage_requested(1UL << partid)) {
785 XPC_DEACTIVATE_PARTITION(part, xpcOtherGoingDown);
627 } 786 }
628} 787}
629 788
@@ -643,14 +802,17 @@ xpc_identify_act_IRQ_sender(void)
643 u64 nasid; /* remote nasid */ 802 u64 nasid; /* remote nasid */
644 int n_IRQs_detected = 0; 803 int n_IRQs_detected = 0;
645 AMO_t *act_amos; 804 AMO_t *act_amos;
646 struct xpc_rsvd_page *rp = (struct xpc_rsvd_page *) xpc_rsvd_page;
647 805
648 806
649 act_amos = xpc_vars->act_amos; 807 act_amos = xpc_vars->amos_page + XPC_ACTIVATE_IRQ_AMOS;
650 808
651 809
652 /* scan through act AMO variable looking for non-zero entries */ 810 /* scan through act AMO variable looking for non-zero entries */
653 for (word = 0; word < XP_NASID_MASK_WORDS; word++) { 811 for (word = 0; word < xp_nasid_mask_words; word++) {
812
813 if (xpc_exiting) {
814 break;
815 }
654 816
655 nasid_mask = xpc_IPI_receive(&act_amos[word]); 817 nasid_mask = xpc_IPI_receive(&act_amos[word]);
656 if (nasid_mask == 0) { 818 if (nasid_mask == 0) {
@@ -668,7 +830,7 @@ xpc_identify_act_IRQ_sender(void)
668 * remote nasid in our reserved pages machine mask. 830 * remote nasid in our reserved pages machine mask.
669 * This is used in the event of module reload. 831 * This is used in the event of module reload.
670 */ 832 */
671 rp->mach_nasids[word] |= nasid_mask; 833 xpc_mach_nasids[word] |= nasid_mask;
672 834
673 835
674 /* locate the nasid(s) which sent interrupts */ 836 /* locate the nasid(s) which sent interrupts */
@@ -688,6 +850,55 @@ xpc_identify_act_IRQ_sender(void)
688 850
689 851
690/* 852/*
853 * See if the other side has responded to a partition disengage request
854 * from us.
855 */
856int
857xpc_partition_disengaged(struct xpc_partition *part)
858{
859 partid_t partid = XPC_PARTID(part);
860 int disengaged;
861
862
863 disengaged = (xpc_partition_engaged(1UL << partid) == 0);
864 if (part->disengage_request_timeout) {
865 if (!disengaged) {
866 if (jiffies < part->disengage_request_timeout) {
867 /* timelimit hasn't been reached yet */
868 return 0;
869 }
870
871 /*
872 * Other side hasn't responded to our disengage
873 * request in a timely fashion, so assume it's dead.
874 */
875
876 xpc_clear_partition_engaged(1UL << partid);
877 disengaged = 1;
878 }
879 part->disengage_request_timeout = 0;
880
881 /* cancel the timer function, provided it's not us */
882 if (!in_interrupt()) {
883 del_singleshot_timer_sync(&part->
884 disengage_request_timer);
885 }
886
887 DBUG_ON(part->act_state != XPC_P_DEACTIVATING &&
888 part->act_state != XPC_P_INACTIVE);
889 if (part->act_state != XPC_P_INACTIVE) {
890 xpc_wakeup_channel_mgr(part);
891 }
892
893 if (XPC_SUPPORTS_DISENGAGE_REQUEST(part->remote_vars_version)) {
894 xpc_cancel_partition_disengage_request(part);
895 }
896 }
897 return disengaged;
898}
899
900
901/*
691 * Mark specified partition as active. 902 * Mark specified partition as active.
692 */ 903 */
693enum xpc_retval 904enum xpc_retval
@@ -721,7 +932,6 @@ xpc_deactivate_partition(const int line, struct xpc_partition *part,
721 enum xpc_retval reason) 932 enum xpc_retval reason)
722{ 933{
723 unsigned long irq_flags; 934 unsigned long irq_flags;
724 partid_t partid = XPC_PARTID(part);
725 935
726 936
727 spin_lock_irqsave(&part->act_lock, irq_flags); 937 spin_lock_irqsave(&part->act_lock, irq_flags);
@@ -749,17 +959,27 @@ xpc_deactivate_partition(const int line, struct xpc_partition *part,
749 959
750 spin_unlock_irqrestore(&part->act_lock, irq_flags); 960 spin_unlock_irqrestore(&part->act_lock, irq_flags);
751 961
752 XPC_DISALLOW_HB(partid, xpc_vars); 962 if (XPC_SUPPORTS_DISENGAGE_REQUEST(part->remote_vars_version)) {
963 xpc_request_partition_disengage(part);
964 xpc_IPI_send_disengage(part);
753 965
754 dev_dbg(xpc_part, "bringing partition %d down, reason = %d\n", partid, 966 /* set a timelimit on the disengage request */
755 reason); 967 part->disengage_request_timeout = jiffies +
968 (xpc_disengage_request_timelimit * HZ);
969 part->disengage_request_timer.expires =
970 part->disengage_request_timeout;
971 add_timer(&part->disengage_request_timer);
972 }
973
974 dev_dbg(xpc_part, "bringing partition %d down, reason = %d\n",
975 XPC_PARTID(part), reason);
756 976
757 xpc_partition_down(part, reason); 977 xpc_partition_going_down(part, reason);
758} 978}
759 979
760 980
761/* 981/*
762 * Mark specified partition as active. 982 * Mark specified partition as inactive.
763 */ 983 */
764void 984void
765xpc_mark_partition_inactive(struct xpc_partition *part) 985xpc_mark_partition_inactive(struct xpc_partition *part)
@@ -792,9 +1012,10 @@ xpc_discovery(void)
792 void *remote_rp_base; 1012 void *remote_rp_base;
793 struct xpc_rsvd_page *remote_rp; 1013 struct xpc_rsvd_page *remote_rp;
794 struct xpc_vars *remote_vars; 1014 struct xpc_vars *remote_vars;
795 u64 remote_rsvd_page_pa; 1015 u64 remote_rp_pa;
796 u64 remote_vars_pa; 1016 u64 remote_vars_pa;
797 int region; 1017 int region;
1018 int region_size;
798 int max_regions; 1019 int max_regions;
799 int nasid; 1020 int nasid;
800 struct xpc_rsvd_page *rp; 1021 struct xpc_rsvd_page *rp;
@@ -804,7 +1025,8 @@ xpc_discovery(void)
804 enum xpc_retval ret; 1025 enum xpc_retval ret;
805 1026
806 1027
807 remote_rp = xpc_kmalloc_cacheline_aligned(XPC_RSVD_PAGE_ALIGNED_SIZE, 1028 remote_rp = xpc_kmalloc_cacheline_aligned(XPC_RP_HEADER_SIZE +
1029 xp_nasid_mask_bytes,
808 GFP_KERNEL, &remote_rp_base); 1030 GFP_KERNEL, &remote_rp_base);
809 if (remote_rp == NULL) { 1031 if (remote_rp == NULL) {
810 return; 1032 return;
@@ -812,13 +1034,13 @@ xpc_discovery(void)
812 remote_vars = (struct xpc_vars *) remote_rp; 1034 remote_vars = (struct xpc_vars *) remote_rp;
813 1035
814 1036
815 discovered_nasids = kmalloc(sizeof(u64) * XP_NASID_MASK_WORDS, 1037 discovered_nasids = kmalloc(sizeof(u64) * xp_nasid_mask_words,
816 GFP_KERNEL); 1038 GFP_KERNEL);
817 if (discovered_nasids == NULL) { 1039 if (discovered_nasids == NULL) {
818 kfree(remote_rp_base); 1040 kfree(remote_rp_base);
819 return; 1041 return;
820 } 1042 }
821 memset(discovered_nasids, 0, sizeof(u64) * XP_NASID_MASK_WORDS); 1043 memset(discovered_nasids, 0, sizeof(u64) * xp_nasid_mask_words);
822 1044
823 rp = (struct xpc_rsvd_page *) xpc_rsvd_page; 1045 rp = (struct xpc_rsvd_page *) xpc_rsvd_page;
824 1046
@@ -827,11 +1049,19 @@ xpc_discovery(void)
827 * nodes that can comprise an access protection grouping. The access 1049 * nodes that can comprise an access protection grouping. The access
828 * protection is in regards to memory, IOI and IPI. 1050 * protection is in regards to memory, IOI and IPI.
829 */ 1051 */
830//>>> move the next two #defines into either include/asm-ia64/sn/arch.h or 1052 max_regions = 64;
831//>>> include/asm-ia64/sn/addrs.h 1053 region_size = sn_region_size;
832#define SH1_MAX_REGIONS 64 1054
833#define SH2_MAX_REGIONS 256 1055 switch (region_size) {
834 max_regions = is_shub2() ? SH2_MAX_REGIONS : SH1_MAX_REGIONS; 1056 case 128:
1057 max_regions *= 2;
1058 case 64:
1059 max_regions *= 2;
1060 case 32:
1061 max_regions *= 2;
1062 region_size = 16;
1063 DBUG_ON(!is_shub2());
1064 }
835 1065
836 for (region = 0; region < max_regions; region++) { 1066 for (region = 0; region < max_regions; region++) {
837 1067
@@ -841,8 +1071,8 @@ xpc_discovery(void)
841 1071
842 dev_dbg(xpc_part, "searching region %d\n", region); 1072 dev_dbg(xpc_part, "searching region %d\n", region);
843 1073
844 for (nasid = (region * sn_region_size * 2); 1074 for (nasid = (region * region_size * 2);
845 nasid < ((region + 1) * sn_region_size * 2); 1075 nasid < ((region + 1) * region_size * 2);
846 nasid += 2) { 1076 nasid += 2) {
847 1077
848 if ((volatile int) xpc_exiting) { 1078 if ((volatile int) xpc_exiting) {
@@ -852,14 +1082,14 @@ xpc_discovery(void)
852 dev_dbg(xpc_part, "checking nasid %d\n", nasid); 1082 dev_dbg(xpc_part, "checking nasid %d\n", nasid);
853 1083
854 1084
855 if (XPC_NASID_IN_ARRAY(nasid, rp->part_nasids)) { 1085 if (XPC_NASID_IN_ARRAY(nasid, xpc_part_nasids)) {
856 dev_dbg(xpc_part, "PROM indicates Nasid %d is " 1086 dev_dbg(xpc_part, "PROM indicates Nasid %d is "
857 "part of the local partition; skipping " 1087 "part of the local partition; skipping "
858 "region\n", nasid); 1088 "region\n", nasid);
859 break; 1089 break;
860 } 1090 }
861 1091
862 if (!(XPC_NASID_IN_ARRAY(nasid, rp->mach_nasids))) { 1092 if (!(XPC_NASID_IN_ARRAY(nasid, xpc_mach_nasids))) {
863 dev_dbg(xpc_part, "PROM indicates Nasid %d was " 1093 dev_dbg(xpc_part, "PROM indicates Nasid %d was "
864 "not on Numa-Link network at reset\n", 1094 "not on Numa-Link network at reset\n",
865 nasid); 1095 nasid);
@@ -877,7 +1107,7 @@ xpc_discovery(void)
877 /* pull over the reserved page structure */ 1107 /* pull over the reserved page structure */
878 1108
879 ret = xpc_get_remote_rp(nasid, discovered_nasids, 1109 ret = xpc_get_remote_rp(nasid, discovered_nasids,
880 remote_rp, &remote_rsvd_page_pa); 1110 remote_rp, &remote_rp_pa);
881 if (ret != xpcSuccess) { 1111 if (ret != xpcSuccess) {
882 dev_dbg(xpc_part, "unable to get reserved page " 1112 dev_dbg(xpc_part, "unable to get reserved page "
883 "from nasid %d, reason=%d\n", nasid, 1113 "from nasid %d, reason=%d\n", nasid,
@@ -948,6 +1178,13 @@ xpc_discovery(void)
948 remote_vars->act_nasid, 1178 remote_vars->act_nasid,
949 remote_vars->act_phys_cpuid); 1179 remote_vars->act_phys_cpuid);
950 1180
1181 if (XPC_SUPPORTS_DISENGAGE_REQUEST(remote_vars->
1182 version)) {
1183 part->remote_amos_page_pa =
1184 remote_vars->amos_page_pa;
1185 xpc_mark_partition_disengaged(part);
1186 xpc_cancel_partition_disengage_request(part);
1187 }
951 xpc_IPI_send_activate(remote_vars); 1188 xpc_IPI_send_activate(remote_vars);
952 } 1189 }
953 } 1190 }
@@ -974,12 +1211,12 @@ xpc_initiate_partid_to_nasids(partid_t partid, void *nasid_mask)
974 return xpcPartitionDown; 1211 return xpcPartitionDown;
975 } 1212 }
976 1213
977 part_nasid_pa = part->remote_rp_pa + 1214 memset(nasid_mask, 0, XP_NASID_MASK_BYTES);
978 (u64) &((struct xpc_rsvd_page *) 0)->part_nasids; 1215
1216 part_nasid_pa = (u64) XPC_RP_PART_NASIDS(part->remote_rp_pa);
979 1217
980 bte_res = xp_bte_copy(part_nasid_pa, ia64_tpa((u64) nasid_mask), 1218 bte_res = xp_bte_copy(part_nasid_pa, ia64_tpa((u64) nasid_mask),
981 L1_CACHE_ALIGN(XP_NASID_MASK_BYTES), 1219 xp_nasid_mask_bytes, (BTE_NOTIFY | BTE_WACQUIRE), NULL);
982 (BTE_NOTIFY | BTE_WACQUIRE), NULL);
983 1220
984 return xpc_map_bte_errors(bte_res); 1221 return xpc_map_bte_errors(bte_res);
985} 1222}
diff --git a/arch/ia64/sn/pci/pci_dma.c b/arch/ia64/sn/pci/pci_dma.c
index 0e4b9ad9ef02..9bf9f23b9a1f 100644
--- a/arch/ia64/sn/pci/pci_dma.c
+++ b/arch/ia64/sn/pci/pci_dma.c
@@ -75,7 +75,7 @@ EXPORT_SYMBOL(sn_dma_set_mask);
75 * more information. 75 * more information.
76 */ 76 */
77void *sn_dma_alloc_coherent(struct device *dev, size_t size, 77void *sn_dma_alloc_coherent(struct device *dev, size_t size,
78 dma_addr_t * dma_handle, int flags) 78 dma_addr_t * dma_handle, gfp_t flags)
79{ 79{
80 void *cpuaddr; 80 void *cpuaddr;
81 unsigned long phys_addr; 81 unsigned long phys_addr;
@@ -326,6 +326,29 @@ int sn_pci_legacy_read(struct pci_bus *bus, u16 port, u32 *val, u8 size)
326{ 326{
327 unsigned long addr; 327 unsigned long addr;
328 int ret; 328 int ret;
329 struct ia64_sal_retval isrv;
330
331 /*
332 * First, try the SN_SAL_IOIF_PCI_SAFE SAL call which can work
333 * around hw issues at the pci bus level. SGI proms older than
334 * 4.10 don't implment this.
335 */
336
337 SAL_CALL(isrv, SN_SAL_IOIF_PCI_SAFE,
338 pci_domain_nr(bus), bus->number,
339 0, /* io */
340 0, /* read */
341 port, size, __pa(val));
342
343 if (isrv.status == 0)
344 return size;
345
346 /*
347 * If the above failed, retry using the SAL_PROBE call which should
348 * be present in all proms (but which cannot work round PCI chipset
349 * bugs). This code is retained for compatability with old
350 * pre-4.10 proms, and should be removed at some point in the future.
351 */
329 352
330 if (!SN_PCIBUS_BUSSOFT(bus)) 353 if (!SN_PCIBUS_BUSSOFT(bus))
331 return -ENODEV; 354 return -ENODEV;
@@ -349,6 +372,29 @@ int sn_pci_legacy_write(struct pci_bus *bus, u16 port, u32 val, u8 size)
349 int ret = size; 372 int ret = size;
350 unsigned long paddr; 373 unsigned long paddr;
351 unsigned long *addr; 374 unsigned long *addr;
375 struct ia64_sal_retval isrv;
376
377 /*
378 * First, try the SN_SAL_IOIF_PCI_SAFE SAL call which can work
379 * around hw issues at the pci bus level. SGI proms older than
380 * 4.10 don't implment this.
381 */
382
383 SAL_CALL(isrv, SN_SAL_IOIF_PCI_SAFE,
384 pci_domain_nr(bus), bus->number,
385 0, /* io */
386 1, /* write */
387 port, size, __pa(&val));
388
389 if (isrv.status == 0)
390 return size;
391
392 /*
393 * If the above failed, retry using the SAL_PROBE call which should
394 * be present in all proms (but which cannot work round PCI chipset
395 * bugs). This code is retained for compatability with old
396 * pre-4.10 proms, and should be removed at some point in the future.
397 */
352 398
353 if (!SN_PCIBUS_BUSSOFT(bus)) { 399 if (!SN_PCIBUS_BUSSOFT(bus)) {
354 ret = -ENODEV; 400 ret = -ENODEV;
diff --git a/arch/ia64/sn/pci/pcibr/pcibr_reg.c b/arch/ia64/sn/pci/pcibr/pcibr_reg.c
index 21426d02fbe6..4f718c3e93d3 100644
--- a/arch/ia64/sn/pci/pcibr/pcibr_reg.c
+++ b/arch/ia64/sn/pci/pcibr/pcibr_reg.c
@@ -8,6 +8,7 @@
8 8
9#include <linux/interrupt.h> 9#include <linux/interrupt.h>
10#include <linux/types.h> 10#include <linux/types.h>
11#include <asm/sn/io.h>
11#include <asm/sn/pcibr_provider.h> 12#include <asm/sn/pcibr_provider.h>
12#include <asm/sn/pcibus_provider_defs.h> 13#include <asm/sn/pcibus_provider_defs.h>
13#include <asm/sn/pcidev.h> 14#include <asm/sn/pcidev.h>
@@ -29,10 +30,10 @@ void pcireg_control_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits)
29 if (pcibus_info) { 30 if (pcibus_info) {
30 switch (pcibus_info->pbi_bridge_type) { 31 switch (pcibus_info->pbi_bridge_type) {
31 case PCIBR_BRIDGETYPE_TIOCP: 32 case PCIBR_BRIDGETYPE_TIOCP:
32 ptr->tio.cp_control &= ~bits; 33 __sn_clrq_relaxed(&ptr->tio.cp_control, bits);
33 break; 34 break;
34 case PCIBR_BRIDGETYPE_PIC: 35 case PCIBR_BRIDGETYPE_PIC:
35 ptr->pic.p_wid_control &= ~bits; 36 __sn_clrq_relaxed(&ptr->pic.p_wid_control, bits);
36 break; 37 break;
37 default: 38 default:
38 panic 39 panic
@@ -49,10 +50,10 @@ void pcireg_control_bit_set(struct pcibus_info *pcibus_info, uint64_t bits)
49 if (pcibus_info) { 50 if (pcibus_info) {
50 switch (pcibus_info->pbi_bridge_type) { 51 switch (pcibus_info->pbi_bridge_type) {
51 case PCIBR_BRIDGETYPE_TIOCP: 52 case PCIBR_BRIDGETYPE_TIOCP:
52 ptr->tio.cp_control |= bits; 53 __sn_setq_relaxed(&ptr->tio.cp_control, bits);
53 break; 54 break;
54 case PCIBR_BRIDGETYPE_PIC: 55 case PCIBR_BRIDGETYPE_PIC:
55 ptr->pic.p_wid_control |= bits; 56 __sn_setq_relaxed(&ptr->pic.p_wid_control, bits);
56 break; 57 break;
57 default: 58 default:
58 panic 59 panic
@@ -73,10 +74,10 @@ uint64_t pcireg_tflush_get(struct pcibus_info *pcibus_info)
73 if (pcibus_info) { 74 if (pcibus_info) {
74 switch (pcibus_info->pbi_bridge_type) { 75 switch (pcibus_info->pbi_bridge_type) {
75 case PCIBR_BRIDGETYPE_TIOCP: 76 case PCIBR_BRIDGETYPE_TIOCP:
76 ret = ptr->tio.cp_tflush; 77 ret = __sn_readq_relaxed(&ptr->tio.cp_tflush);
77 break; 78 break;
78 case PCIBR_BRIDGETYPE_PIC: 79 case PCIBR_BRIDGETYPE_PIC:
79 ret = ptr->pic.p_wid_tflush; 80 ret = __sn_readq_relaxed(&ptr->pic.p_wid_tflush);
80 break; 81 break;
81 default: 82 default:
82 panic 83 panic
@@ -103,10 +104,10 @@ uint64_t pcireg_intr_status_get(struct pcibus_info * pcibus_info)
103 if (pcibus_info) { 104 if (pcibus_info) {
104 switch (pcibus_info->pbi_bridge_type) { 105 switch (pcibus_info->pbi_bridge_type) {
105 case PCIBR_BRIDGETYPE_TIOCP: 106 case PCIBR_BRIDGETYPE_TIOCP:
106 ret = ptr->tio.cp_int_status; 107 ret = __sn_readq_relaxed(&ptr->tio.cp_int_status);
107 break; 108 break;
108 case PCIBR_BRIDGETYPE_PIC: 109 case PCIBR_BRIDGETYPE_PIC:
109 ret = ptr->pic.p_int_status; 110 ret = __sn_readq_relaxed(&ptr->pic.p_int_status);
110 break; 111 break;
111 default: 112 default:
112 panic 113 panic
@@ -127,10 +128,10 @@ void pcireg_intr_enable_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits)
127 if (pcibus_info) { 128 if (pcibus_info) {
128 switch (pcibus_info->pbi_bridge_type) { 129 switch (pcibus_info->pbi_bridge_type) {
129 case PCIBR_BRIDGETYPE_TIOCP: 130 case PCIBR_BRIDGETYPE_TIOCP:
130 ptr->tio.cp_int_enable &= ~bits; 131 __sn_clrq_relaxed(&ptr->tio.cp_int_enable, bits);
131 break; 132 break;
132 case PCIBR_BRIDGETYPE_PIC: 133 case PCIBR_BRIDGETYPE_PIC:
133 ptr->pic.p_int_enable &= ~bits; 134 __sn_clrq_relaxed(&ptr->pic.p_int_enable, ~bits);
134 break; 135 break;
135 default: 136 default:
136 panic 137 panic
@@ -147,10 +148,10 @@ void pcireg_intr_enable_bit_set(struct pcibus_info *pcibus_info, uint64_t bits)
147 if (pcibus_info) { 148 if (pcibus_info) {
148 switch (pcibus_info->pbi_bridge_type) { 149 switch (pcibus_info->pbi_bridge_type) {
149 case PCIBR_BRIDGETYPE_TIOCP: 150 case PCIBR_BRIDGETYPE_TIOCP:
150 ptr->tio.cp_int_enable |= bits; 151 __sn_setq_relaxed(&ptr->tio.cp_int_enable, bits);
151 break; 152 break;
152 case PCIBR_BRIDGETYPE_PIC: 153 case PCIBR_BRIDGETYPE_PIC:
153 ptr->pic.p_int_enable |= bits; 154 __sn_setq_relaxed(&ptr->pic.p_int_enable, bits);
154 break; 155 break;
155 default: 156 default:
156 panic 157 panic
@@ -171,14 +172,16 @@ void pcireg_intr_addr_addr_set(struct pcibus_info *pcibus_info, int int_n,
171 if (pcibus_info) { 172 if (pcibus_info) {
172 switch (pcibus_info->pbi_bridge_type) { 173 switch (pcibus_info->pbi_bridge_type) {
173 case PCIBR_BRIDGETYPE_TIOCP: 174 case PCIBR_BRIDGETYPE_TIOCP:
174 ptr->tio.cp_int_addr[int_n] &= ~TIOCP_HOST_INTR_ADDR; 175 __sn_clrq_relaxed(&ptr->tio.cp_int_addr[int_n],
175 ptr->tio.cp_int_addr[int_n] |= 176 TIOCP_HOST_INTR_ADDR);
176 (addr & TIOCP_HOST_INTR_ADDR); 177 __sn_setq_relaxed(&ptr->tio.cp_int_addr[int_n],
178 (addr & TIOCP_HOST_INTR_ADDR));
177 break; 179 break;
178 case PCIBR_BRIDGETYPE_PIC: 180 case PCIBR_BRIDGETYPE_PIC:
179 ptr->pic.p_int_addr[int_n] &= ~PIC_HOST_INTR_ADDR; 181 __sn_clrq_relaxed(&ptr->pic.p_int_addr[int_n],
180 ptr->pic.p_int_addr[int_n] |= 182 PIC_HOST_INTR_ADDR);
181 (addr & PIC_HOST_INTR_ADDR); 183 __sn_setq_relaxed(&ptr->pic.p_int_addr[int_n],
184 (addr & PIC_HOST_INTR_ADDR));
182 break; 185 break;
183 default: 186 default:
184 panic 187 panic
@@ -198,10 +201,10 @@ void pcireg_force_intr_set(struct pcibus_info *pcibus_info, int int_n)
198 if (pcibus_info) { 201 if (pcibus_info) {
199 switch (pcibus_info->pbi_bridge_type) { 202 switch (pcibus_info->pbi_bridge_type) {
200 case PCIBR_BRIDGETYPE_TIOCP: 203 case PCIBR_BRIDGETYPE_TIOCP:
201 ptr->tio.cp_force_pin[int_n] = 1; 204 writeq(1, &ptr->tio.cp_force_pin[int_n]);
202 break; 205 break;
203 case PCIBR_BRIDGETYPE_PIC: 206 case PCIBR_BRIDGETYPE_PIC:
204 ptr->pic.p_force_pin[int_n] = 1; 207 writeq(1, &ptr->pic.p_force_pin[int_n]);
205 break; 208 break;
206 default: 209 default:
207 panic 210 panic
@@ -222,10 +225,12 @@ uint64_t pcireg_wrb_flush_get(struct pcibus_info *pcibus_info, int device)
222 if (pcibus_info) { 225 if (pcibus_info) {
223 switch (pcibus_info->pbi_bridge_type) { 226 switch (pcibus_info->pbi_bridge_type) {
224 case PCIBR_BRIDGETYPE_TIOCP: 227 case PCIBR_BRIDGETYPE_TIOCP:
225 ret = ptr->tio.cp_wr_req_buf[device]; 228 ret =
229 __sn_readq_relaxed(&ptr->tio.cp_wr_req_buf[device]);
226 break; 230 break;
227 case PCIBR_BRIDGETYPE_PIC: 231 case PCIBR_BRIDGETYPE_PIC:
228 ret = ptr->pic.p_wr_req_buf[device]; 232 ret =
233 __sn_readq_relaxed(&ptr->pic.p_wr_req_buf[device]);
229 break; 234 break;
230 default: 235 default:
231 panic("pcireg_wrb_flush_get: unknown bridgetype bridge 0x%p", (void *)ptr); 236 panic("pcireg_wrb_flush_get: unknown bridgetype bridge 0x%p", (void *)ptr);
@@ -244,10 +249,10 @@ void pcireg_int_ate_set(struct pcibus_info *pcibus_info, int ate_index,
244 if (pcibus_info) { 249 if (pcibus_info) {
245 switch (pcibus_info->pbi_bridge_type) { 250 switch (pcibus_info->pbi_bridge_type) {
246 case PCIBR_BRIDGETYPE_TIOCP: 251 case PCIBR_BRIDGETYPE_TIOCP:
247 ptr->tio.cp_int_ate_ram[ate_index] = (uint64_t) val; 252 writeq(val, &ptr->tio.cp_int_ate_ram[ate_index]);
248 break; 253 break;
249 case PCIBR_BRIDGETYPE_PIC: 254 case PCIBR_BRIDGETYPE_PIC:
250 ptr->pic.p_int_ate_ram[ate_index] = (uint64_t) val; 255 writeq(val, &ptr->pic.p_int_ate_ram[ate_index]);
251 break; 256 break;
252 default: 257 default:
253 panic 258 panic
@@ -265,12 +270,10 @@ uint64_t *pcireg_int_ate_addr(struct pcibus_info *pcibus_info, int ate_index)
265 if (pcibus_info) { 270 if (pcibus_info) {
266 switch (pcibus_info->pbi_bridge_type) { 271 switch (pcibus_info->pbi_bridge_type) {
267 case PCIBR_BRIDGETYPE_TIOCP: 272 case PCIBR_BRIDGETYPE_TIOCP:
268 ret = 273 ret = &ptr->tio.cp_int_ate_ram[ate_index];
269 (uint64_t *) & (ptr->tio.cp_int_ate_ram[ate_index]);
270 break; 274 break;
271 case PCIBR_BRIDGETYPE_PIC: 275 case PCIBR_BRIDGETYPE_PIC:
272 ret = 276 ret = &ptr->pic.p_int_ate_ram[ate_index];
273 (uint64_t *) & (ptr->pic.p_int_ate_ram[ate_index]);
274 break; 277 break;
275 default: 278 default:
276 panic 279 panic
diff --git a/arch/ia64/sn/pci/tioca_provider.c b/arch/ia64/sn/pci/tioca_provider.c
index 19bced34d5f1..46b646a6d345 100644
--- a/arch/ia64/sn/pci/tioca_provider.c
+++ b/arch/ia64/sn/pci/tioca_provider.c
@@ -11,6 +11,7 @@
11#include <linux/pci.h> 11#include <linux/pci.h>
12#include <asm/sn/sn_sal.h> 12#include <asm/sn/sn_sal.h>
13#include <asm/sn/addrs.h> 13#include <asm/sn/addrs.h>
14#include <asm/sn/io.h>
14#include <asm/sn/pcidev.h> 15#include <asm/sn/pcidev.h>
15#include <asm/sn/pcibus_provider_defs.h> 16#include <asm/sn/pcibus_provider_defs.h>
16#include <asm/sn/tioca_provider.h> 17#include <asm/sn/tioca_provider.h>
@@ -37,7 +38,7 @@ tioca_gart_init(struct tioca_kernel *tioca_kern)
37 uint64_t offset; 38 uint64_t offset;
38 struct page *tmp; 39 struct page *tmp;
39 struct tioca_common *tioca_common; 40 struct tioca_common *tioca_common;
40 volatile struct tioca *ca_base; 41 struct tioca *ca_base;
41 42
42 tioca_common = tioca_kern->ca_common; 43 tioca_common = tioca_kern->ca_common;
43 ca_base = (struct tioca *)tioca_common->ca_common.bs_base; 44 ca_base = (struct tioca *)tioca_common->ca_common.bs_base;
@@ -174,27 +175,29 @@ tioca_gart_init(struct tioca_kernel *tioca_kern)
174 * DISABLE GART PREFETCHING due to hw bug tracked in SGI PV930029 175 * DISABLE GART PREFETCHING due to hw bug tracked in SGI PV930029
175 */ 176 */
176 177
177 ca_base->ca_control1 |= CA_AGPDMA_OP_ENB_COMBDELAY; /* PV895469 ? */ 178 __sn_setq_relaxed(&ca_base->ca_control1,
178 ca_base->ca_control2 &= ~(CA_GART_MEM_PARAM); 179 CA_AGPDMA_OP_ENB_COMBDELAY); /* PV895469 ? */
179 ca_base->ca_control2 |= (0x2ull << CA_GART_MEM_PARAM_SHFT); 180 __sn_clrq_relaxed(&ca_base->ca_control2, CA_GART_MEM_PARAM);
181 __sn_setq_relaxed(&ca_base->ca_control2,
182 (0x2ull << CA_GART_MEM_PARAM_SHFT));
180 tioca_kern->ca_gart_iscoherent = 1; 183 tioca_kern->ca_gart_iscoherent = 1;
181 ca_base->ca_control2 &= 184 __sn_clrq_relaxed(&ca_base->ca_control2,
182 ~(CA_GART_WR_PREFETCH_ENB | CA_GART_RD_PREFETCH_ENB); 185 (CA_GART_WR_PREFETCH_ENB | CA_GART_RD_PREFETCH_ENB));
183 186
184 /* 187 /*
185 * Unmask GART fetch error interrupts. Clear residual errors first. 188 * Unmask GART fetch error interrupts. Clear residual errors first.
186 */ 189 */
187 190
188 ca_base->ca_int_status_alias = CA_GART_FETCH_ERR; 191 writeq(CA_GART_FETCH_ERR, &ca_base->ca_int_status_alias);
189 ca_base->ca_mult_error_alias = CA_GART_FETCH_ERR; 192 writeq(CA_GART_FETCH_ERR, &ca_base->ca_mult_error_alias);
190 ca_base->ca_int_mask &= ~CA_GART_FETCH_ERR; 193 __sn_clrq_relaxed(&ca_base->ca_int_mask, CA_GART_FETCH_ERR);
191 194
192 /* 195 /*
193 * Program the aperature and gart registers in TIOCA 196 * Program the aperature and gart registers in TIOCA
194 */ 197 */
195 198
196 ca_base->ca_gart_aperature = ap_reg; 199 writeq(ap_reg, &ca_base->ca_gart_aperature);
197 ca_base->ca_gart_ptr_table = tioca_kern->ca_gart_coretalk_addr | 1; 200 writeq(tioca_kern->ca_gart_coretalk_addr|1, &ca_base->ca_gart_ptr_table);
198 201
199 return 0; 202 return 0;
200} 203}
@@ -211,7 +214,6 @@ void
211tioca_fastwrite_enable(struct tioca_kernel *tioca_kern) 214tioca_fastwrite_enable(struct tioca_kernel *tioca_kern)
212{ 215{
213 int cap_ptr; 216 int cap_ptr;
214 uint64_t ca_control1;
215 uint32_t reg; 217 uint32_t reg;
216 struct tioca *tioca_base; 218 struct tioca *tioca_base;
217 struct pci_dev *pdev; 219 struct pci_dev *pdev;
@@ -256,9 +258,7 @@ tioca_fastwrite_enable(struct tioca_kernel *tioca_kern)
256 */ 258 */
257 259
258 tioca_base = (struct tioca *)common->ca_common.bs_base; 260 tioca_base = (struct tioca *)common->ca_common.bs_base;
259 ca_control1 = tioca_base->ca_control1; 261 __sn_setq_relaxed(&tioca_base->ca_control1, CA_AGP_FW_ENABLE);
260 ca_control1 |= CA_AGP_FW_ENABLE;
261 tioca_base->ca_control1 = ca_control1;
262} 262}
263 263
264EXPORT_SYMBOL(tioca_fastwrite_enable); /* used by agp-sgi */ 264EXPORT_SYMBOL(tioca_fastwrite_enable); /* used by agp-sgi */
@@ -345,7 +345,7 @@ tioca_dma_d48(struct pci_dev *pdev, uint64_t paddr)
345 return 0; 345 return 0;
346 } 346 }
347 347
348 agp_dma_extn = ca_base->ca_agp_dma_addr_extn; 348 agp_dma_extn = __sn_readq_relaxed(&ca_base->ca_agp_dma_addr_extn);
349 if (node_upper != (agp_dma_extn >> CA_AGP_DMA_NODE_ID_SHFT)) { 349 if (node_upper != (agp_dma_extn >> CA_AGP_DMA_NODE_ID_SHFT)) {
350 printk(KERN_ERR "%s: coretalk upper node (%u) " 350 printk(KERN_ERR "%s: coretalk upper node (%u) "
351 "mismatch with ca_agp_dma_addr_extn (%lu)\n", 351 "mismatch with ca_agp_dma_addr_extn (%lu)\n",
diff --git a/arch/ia64/sn/pci/tioce_provider.c b/arch/ia64/sn/pci/tioce_provider.c
index 8e75db2b825d..9f03d4e5121c 100644
--- a/arch/ia64/sn/pci/tioce_provider.c
+++ b/arch/ia64/sn/pci/tioce_provider.c
@@ -11,6 +11,7 @@
11#include <linux/pci.h> 11#include <linux/pci.h>
12#include <asm/sn/sn_sal.h> 12#include <asm/sn/sn_sal.h>
13#include <asm/sn/addrs.h> 13#include <asm/sn/addrs.h>
14#include <asm/sn/io.h>
14#include <asm/sn/pcidev.h> 15#include <asm/sn/pcidev.h>
15#include <asm/sn/pcibus_provider_defs.h> 16#include <asm/sn/pcibus_provider_defs.h>
16#include <asm/sn/tioce_provider.h> 17#include <asm/sn/tioce_provider.h>
@@ -227,7 +228,7 @@ tioce_alloc_map(struct tioce_kernel *ce_kern, int type, int port,
227 228
228 ate = ATE_MAKE(addr, pagesize); 229 ate = ATE_MAKE(addr, pagesize);
229 ate_shadow[i + j] = ate; 230 ate_shadow[i + j] = ate;
230 ate_reg[i + j] = ate; 231 writeq(ate, &ate_reg[i + j]);
231 addr += pagesize; 232 addr += pagesize;
232 } 233 }
233 234
@@ -268,10 +269,10 @@ tioce_dma_d32(struct pci_dev *pdev, uint64_t ct_addr)
268 pcidev_to_tioce(pdev, &ce_mmr, &ce_kern, &port); 269 pcidev_to_tioce(pdev, &ce_mmr, &ce_kern, &port);
269 270
270 if (ce_kern->ce_port[port].dirmap_refcnt == 0) { 271 if (ce_kern->ce_port[port].dirmap_refcnt == 0) {
271 volatile uint64_t tmp; 272 uint64_t tmp;
272 273
273 ce_kern->ce_port[port].dirmap_shadow = ct_upper; 274 ce_kern->ce_port[port].dirmap_shadow = ct_upper;
274 ce_mmr->ce_ure_dir_map[port] = ct_upper; 275 writeq(ct_upper, &ce_mmr->ce_ure_dir_map[port]);
275 tmp = ce_mmr->ce_ure_dir_map[port]; 276 tmp = ce_mmr->ce_ure_dir_map[port];
276 dma_ok = 1; 277 dma_ok = 1;
277 } else 278 } else
@@ -343,7 +344,7 @@ tioce_dma_unmap(struct pci_dev *pdev, dma_addr_t bus_addr, int dir)
343 if (TIOCE_D32_ADDR(bus_addr)) { 344 if (TIOCE_D32_ADDR(bus_addr)) {
344 if (--ce_kern->ce_port[port].dirmap_refcnt == 0) { 345 if (--ce_kern->ce_port[port].dirmap_refcnt == 0) {
345 ce_kern->ce_port[port].dirmap_shadow = 0; 346 ce_kern->ce_port[port].dirmap_shadow = 0;
346 ce_mmr->ce_ure_dir_map[port] = 0; 347 writeq(0, &ce_mmr->ce_ure_dir_map[port]);
347 } 348 }
348 } else { 349 } else {
349 struct tioce_dmamap *map; 350 struct tioce_dmamap *map;
@@ -582,18 +583,18 @@ tioce_kern_init(struct tioce_common *tioce_common)
582 */ 583 */
583 584
584 tioce_mmr = (struct tioce *)tioce_common->ce_pcibus.bs_base; 585 tioce_mmr = (struct tioce *)tioce_common->ce_pcibus.bs_base;
585 tioce_mmr->ce_ure_page_map &= ~CE_URE_PAGESIZE_MASK; 586 __sn_clrq_relaxed(&tioce_mmr->ce_ure_page_map, CE_URE_PAGESIZE_MASK);
586 tioce_mmr->ce_ure_page_map |= CE_URE_256K_PAGESIZE; 587 __sn_setq_relaxed(&tioce_mmr->ce_ure_page_map, CE_URE_256K_PAGESIZE);
587 tioce_kern->ce_ate3240_pagesize = KB(256); 588 tioce_kern->ce_ate3240_pagesize = KB(256);
588 589
589 for (i = 0; i < TIOCE_NUM_M40_ATES; i++) { 590 for (i = 0; i < TIOCE_NUM_M40_ATES; i++) {
590 tioce_kern->ce_ate40_shadow[i] = 0; 591 tioce_kern->ce_ate40_shadow[i] = 0;
591 tioce_mmr->ce_ure_ate40[i] = 0; 592 writeq(0, &tioce_mmr->ce_ure_ate40[i]);
592 } 593 }
593 594
594 for (i = 0; i < TIOCE_NUM_M3240_ATES; i++) { 595 for (i = 0; i < TIOCE_NUM_M3240_ATES; i++) {
595 tioce_kern->ce_ate3240_shadow[i] = 0; 596 tioce_kern->ce_ate3240_shadow[i] = 0;
596 tioce_mmr->ce_ure_ate3240[i] = 0; 597 writeq(0, &tioce_mmr->ce_ure_ate3240[i]);
597 } 598 }
598 599
599 return tioce_kern; 600 return tioce_kern;
@@ -665,7 +666,7 @@ tioce_force_interrupt(struct sn_irq_info *sn_irq_info)
665 default: 666 default:
666 return; 667 return;
667 } 668 }
668 ce_mmr->ce_adm_force_int = force_int_val; 669 writeq(force_int_val, &ce_mmr->ce_adm_force_int);
669} 670}
670 671
671/** 672/**
@@ -686,6 +687,7 @@ tioce_target_interrupt(struct sn_irq_info *sn_irq_info)
686 struct tioce_common *ce_common; 687 struct tioce_common *ce_common;
687 struct tioce *ce_mmr; 688 struct tioce *ce_mmr;
688 int bit; 689 int bit;
690 uint64_t vector;
689 691
690 pcidev_info = (struct pcidev_info *)sn_irq_info->irq_pciioinfo; 692 pcidev_info = (struct pcidev_info *)sn_irq_info->irq_pciioinfo;
691 if (!pcidev_info) 693 if (!pcidev_info)
@@ -696,11 +698,11 @@ tioce_target_interrupt(struct sn_irq_info *sn_irq_info)
696 698
697 bit = sn_irq_info->irq_int_bit; 699 bit = sn_irq_info->irq_int_bit;
698 700
699 ce_mmr->ce_adm_int_mask |= (1UL << bit); 701 __sn_setq_relaxed(&ce_mmr->ce_adm_int_mask, (1UL << bit));
700 ce_mmr->ce_adm_int_dest[bit] = 702 vector = (uint64_t)sn_irq_info->irq_irq << INTR_VECTOR_SHFT;
701 ((uint64_t)sn_irq_info->irq_irq << INTR_VECTOR_SHFT) | 703 vector |= sn_irq_info->irq_xtalkaddr;
702 sn_irq_info->irq_xtalkaddr; 704 writeq(vector, &ce_mmr->ce_adm_int_dest[bit]);
703 ce_mmr->ce_adm_int_mask &= ~(1UL << bit); 705 __sn_clrq_relaxed(&ce_mmr->ce_adm_int_mask, (1UL << bit));
704 706
705 tioce_force_interrupt(sn_irq_info); 707 tioce_force_interrupt(sn_irq_info);
706} 708}
diff --git a/arch/m32r/kernel/entry.S b/arch/m32r/kernel/entry.S
index 85920fb8d08c..396c94218cc2 100644
--- a/arch/m32r/kernel/entry.S
+++ b/arch/m32r/kernel/entry.S
@@ -653,8 +653,6 @@ ENTRY(rie_handler)
653 SAVE_ALL 653 SAVE_ALL
654 mvfc r0, bpc 654 mvfc r0, bpc
655 ld r1, @r0 655 ld r1, @r0
656 seth r0, #0xa0f0
657 st r1, @r0
658 ldi r1, #0x20 ; error_code 656 ldi r1, #0x20 ; error_code
659 mv r0, sp ; pt_regs 657 mv r0, sp ; pt_regs
660 bl do_rie_handler 658 bl do_rie_handler
diff --git a/arch/m32r/kernel/io_m32700ut.c b/arch/m32r/kernel/io_m32700ut.c
index e545b065f7e9..eda9f963c1eb 100644
--- a/arch/m32r/kernel/io_m32700ut.c
+++ b/arch/m32r/kernel/io_m32700ut.c
@@ -64,11 +64,11 @@ static inline void *__port2addr_ata(unsigned long port)
64 * from 0x10000000 to 0x13ffffff on physical address. 64 * from 0x10000000 to 0x13ffffff on physical address.
65 * The base address of LAN controller(LAN91C111) is 0x300. 65 * The base address of LAN controller(LAN91C111) is 0x300.
66 */ 66 */
67#define LAN_IOSTART 0x300 67#define LAN_IOSTART 0xa0000300
68#define LAN_IOEND 0x320 68#define LAN_IOEND 0xa0000320
69static inline void *_port2addr_ne(unsigned long port) 69static inline void *_port2addr_ne(unsigned long port)
70{ 70{
71 return (void *)(port + NONCACHE_OFFSET + 0x10000000); 71 return (void *)(port + 0x10000000);
72} 72}
73static inline void *_port2addr_usb(unsigned long port) 73static inline void *_port2addr_usb(unsigned long port)
74{ 74{
diff --git a/arch/m32r/kernel/io_mappi.c b/arch/m32r/kernel/io_mappi.c
index 78033165fb5c..3c3da042fbd1 100644
--- a/arch/m32r/kernel/io_mappi.c
+++ b/arch/m32r/kernel/io_mappi.c
@@ -31,7 +31,7 @@ extern void pcc_iowrite(int, unsigned long, void *, size_t, size_t, int);
31 31
32static inline void *_port2addr(unsigned long port) 32static inline void *_port2addr(unsigned long port)
33{ 33{
34 return (void *)(port + NONCACHE_OFFSET); 34 return (void *)(port | (NONCACHE_OFFSET));
35} 35}
36 36
37static inline void *_port2addr_ne(unsigned long port) 37static inline void *_port2addr_ne(unsigned long port)
diff --git a/arch/m32r/kernel/io_mappi2.c b/arch/m32r/kernel/io_mappi2.c
index 5c03504bf653..df3c729cb3e0 100644
--- a/arch/m32r/kernel/io_mappi2.c
+++ b/arch/m32r/kernel/io_mappi2.c
@@ -33,12 +33,9 @@ extern void pcc_iowrite_word(int, unsigned long, void *, size_t, size_t, int);
33 33
34static inline void *_port2addr(unsigned long port) 34static inline void *_port2addr(unsigned long port)
35{ 35{
36 return (void *)(port + NONCACHE_OFFSET); 36 return (void *)(port | (NONCACHE_OFFSET));
37} 37}
38 38
39#define LAN_IOSTART 0x300
40#define LAN_IOEND 0x320
41
42#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC) 39#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
43static inline void *__port2addr_ata(unsigned long port) 40static inline void *__port2addr_ata(unsigned long port)
44{ 41{
@@ -59,15 +56,17 @@ static inline void *__port2addr_ata(unsigned long port)
59} 56}
60#endif 57#endif
61 58
59#define LAN_IOSTART 0xa0000300
60#define LAN_IOEND 0xa0000320
62#ifdef CONFIG_CHIP_OPSP 61#ifdef CONFIG_CHIP_OPSP
63static inline void *_port2addr_ne(unsigned long port) 62static inline void *_port2addr_ne(unsigned long port)
64{ 63{
65 return (void *)(port + NONCACHE_OFFSET + 0x10000000); 64 return (void *)(port + 0x10000000);
66} 65}
67#else 66#else
68static inline void *_port2addr_ne(unsigned long port) 67static inline void *_port2addr_ne(unsigned long port)
69{ 68{
70 return (void *)(port + NONCACHE_OFFSET + 0x04000000); 69 return (void *)(port + 0x04000000);
71} 70}
72#endif 71#endif
73static inline void *_port2addr_usb(unsigned long port) 72static inline void *_port2addr_usb(unsigned long port)
diff --git a/arch/m32r/kernel/io_mappi3.c b/arch/m32r/kernel/io_mappi3.c
index c80bde657854..6716ffea769a 100644
--- a/arch/m32r/kernel/io_mappi3.c
+++ b/arch/m32r/kernel/io_mappi3.c
@@ -36,9 +36,6 @@ static inline void *_port2addr(unsigned long port)
36 return (void *)(port + NONCACHE_OFFSET); 36 return (void *)(port + NONCACHE_OFFSET);
37} 37}
38 38
39#define LAN_IOSTART 0x300
40#define LAN_IOEND 0x320
41
42#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC) 39#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
43static inline void *__port2addr_ata(unsigned long port) 40static inline void *__port2addr_ata(unsigned long port)
44{ 41{
@@ -59,9 +56,11 @@ static inline void *__port2addr_ata(unsigned long port)
59} 56}
60#endif 57#endif
61 58
59#define LAN_IOSTART 0xa0000300
60#define LAN_IOEND 0xa0000320
62static inline void *_port2addr_ne(unsigned long port) 61static inline void *_port2addr_ne(unsigned long port)
63{ 62{
64 return (void *)(port + NONCACHE_OFFSET + 0x10000000); 63 return (void *)(port + 0x10000000);
65} 64}
66 65
67static inline void *_port2addr_usb(unsigned long port) 66static inline void *_port2addr_usb(unsigned long port)
diff --git a/arch/m32r/kernel/io_oaks32r.c b/arch/m32r/kernel/io_oaks32r.c
index 9997dddd24d7..8be323931e4a 100644
--- a/arch/m32r/kernel/io_oaks32r.c
+++ b/arch/m32r/kernel/io_oaks32r.c
@@ -16,7 +16,7 @@
16 16
17static inline void *_port2addr(unsigned long port) 17static inline void *_port2addr(unsigned long port)
18{ 18{
19 return (void *)(port + NONCACHE_OFFSET); 19 return (void *)(port | (NONCACHE_OFFSET));
20} 20}
21 21
22static inline void *_port2addr_ne(unsigned long port) 22static inline void *_port2addr_ne(unsigned long port)
diff --git a/arch/m32r/kernel/io_opsput.c b/arch/m32r/kernel/io_opsput.c
index e34951e8156f..4793bd18e115 100644
--- a/arch/m32r/kernel/io_opsput.c
+++ b/arch/m32r/kernel/io_opsput.c
@@ -36,7 +36,7 @@ extern void pcc_iowrite_word(int, unsigned long, void *, size_t, size_t, int);
36 36
37static inline void *_port2addr(unsigned long port) 37static inline void *_port2addr(unsigned long port)
38{ 38{
39 return (void *)(port + NONCACHE_OFFSET); 39 return (void *)(port | (NONCACHE_OFFSET));
40} 40}
41 41
42/* 42/*
@@ -44,11 +44,11 @@ static inline void *_port2addr(unsigned long port)
44 * from 0x10000000 to 0x13ffffff on physical address. 44 * from 0x10000000 to 0x13ffffff on physical address.
45 * The base address of LAN controller(LAN91C111) is 0x300. 45 * The base address of LAN controller(LAN91C111) is 0x300.
46 */ 46 */
47#define LAN_IOSTART 0x300 47#define LAN_IOSTART 0xa0000300
48#define LAN_IOEND 0x320 48#define LAN_IOEND 0xa0000320
49static inline void *_port2addr_ne(unsigned long port) 49static inline void *_port2addr_ne(unsigned long port)
50{ 50{
51 return (void *)(port + NONCACHE_OFFSET + 0x10000000); 51 return (void *)(port + 0x10000000);
52} 52}
53static inline void *_port2addr_usb(unsigned long port) 53static inline void *_port2addr_usb(unsigned long port)
54{ 54{
diff --git a/arch/m32r/kernel/io_usrv.c b/arch/m32r/kernel/io_usrv.c
index 9eb161dcc104..39a379af40bc 100644
--- a/arch/m32r/kernel/io_usrv.c
+++ b/arch/m32r/kernel/io_usrv.c
@@ -47,7 +47,7 @@ static inline void *_port2addr(unsigned long port)
47 else if (port >= UART1_IOSTART && port <= UART1_IOEND) 47 else if (port >= UART1_IOSTART && port <= UART1_IOEND)
48 port = ((port - UART1_IOSTART) << 1) + UART1_REGSTART; 48 port = ((port - UART1_IOSTART) << 1) + UART1_REGSTART;
49#endif /* CONFIG_SERIAL_8250 || CONFIG_SERIAL_8250_MODULE */ 49#endif /* CONFIG_SERIAL_8250 || CONFIG_SERIAL_8250_MODULE */
50 return (void *)(port + NONCACHE_OFFSET); 50 return (void *)(port | (NONCACHE_OFFSET));
51} 51}
52 52
53static inline void delay(void) 53static inline void delay(void)
diff --git a/arch/m32r/kernel/ptrace.c b/arch/m32r/kernel/ptrace.c
index 124f7c1b775e..078d2a0e71c2 100644
--- a/arch/m32r/kernel/ptrace.c
+++ b/arch/m32r/kernel/ptrace.c
@@ -756,7 +756,7 @@ do_ptrace(long request, struct task_struct *child, long addr, long data)
756 return ret; 756 return ret;
757} 757}
758 758
759asmlinkage int sys_ptrace(long request, long pid, long addr, long data) 759asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
760{ 760{
761 struct task_struct *child; 761 struct task_struct *child;
762 int ret; 762 int ret;
diff --git a/arch/m32r/kernel/setup.c b/arch/m32r/kernel/setup.c
index ec5674727e7f..f722ec8eb021 100644
--- a/arch/m32r/kernel/setup.c
+++ b/arch/m32r/kernel/setup.c
@@ -305,19 +305,19 @@ static int show_cpuinfo(struct seq_file *m, void *v)
305 305
306 seq_printf(m, "processor\t: %ld\n", cpu); 306 seq_printf(m, "processor\t: %ld\n", cpu);
307 307
308#ifdef CONFIG_CHIP_VDEC2 308#if defined(CONFIG_CHIP_VDEC2)
309 seq_printf(m, "cpu family\t: VDEC2\n" 309 seq_printf(m, "cpu family\t: VDEC2\n"
310 "cache size\t: Unknown\n"); 310 "cache size\t: Unknown\n");
311#elif CONFIG_CHIP_M32700 311#elif defined(CONFIG_CHIP_M32700)
312 seq_printf(m,"cpu family\t: M32700\n" 312 seq_printf(m,"cpu family\t: M32700\n"
313 "cache size\t: I-8KB/D-8KB\n"); 313 "cache size\t: I-8KB/D-8KB\n");
314#elif CONFIG_CHIP_M32102 314#elif defined(CONFIG_CHIP_M32102)
315 seq_printf(m,"cpu family\t: M32102\n" 315 seq_printf(m,"cpu family\t: M32102\n"
316 "cache size\t: I-8KB\n"); 316 "cache size\t: I-8KB\n");
317#elif CONFIG_CHIP_OPSP 317#elif defined(CONFIG_CHIP_OPSP)
318 seq_printf(m,"cpu family\t: OPSP\n" 318 seq_printf(m,"cpu family\t: OPSP\n"
319 "cache size\t: I-8KB/D-8KB\n"); 319 "cache size\t: I-8KB/D-8KB\n");
320#elif CONFIG_CHIP_MP 320#elif defined(CONFIG_CHIP_MP)
321 seq_printf(m, "cpu family\t: M32R-MP\n" 321 seq_printf(m, "cpu family\t: M32R-MP\n"
322 "cache size\t: I-xxKB/D-xxKB\n"); 322 "cache size\t: I-xxKB/D-xxKB\n");
323#else 323#else
@@ -326,19 +326,19 @@ static int show_cpuinfo(struct seq_file *m, void *v)
326 seq_printf(m, "bogomips\t: %lu.%02lu\n", 326 seq_printf(m, "bogomips\t: %lu.%02lu\n",
327 c->loops_per_jiffy/(500000/HZ), 327 c->loops_per_jiffy/(500000/HZ),
328 (c->loops_per_jiffy/(5000/HZ)) % 100); 328 (c->loops_per_jiffy/(5000/HZ)) % 100);
329#ifdef CONFIG_PLAT_MAPPI 329#if defined(CONFIG_PLAT_MAPPI)
330 seq_printf(m, "Machine\t\t: Mappi Evaluation board\n"); 330 seq_printf(m, "Machine\t\t: Mappi Evaluation board\n");
331#elif CONFIG_PLAT_MAPPI2 331#elif defined(CONFIG_PLAT_MAPPI2)
332 seq_printf(m, "Machine\t\t: Mappi-II Evaluation board\n"); 332 seq_printf(m, "Machine\t\t: Mappi-II Evaluation board\n");
333#elif CONFIG_PLAT_MAPPI3 333#elif defined(CONFIG_PLAT_MAPPI3)
334 seq_printf(m, "Machine\t\t: Mappi-III Evaluation board\n"); 334 seq_printf(m, "Machine\t\t: Mappi-III Evaluation board\n");
335#elif CONFIG_PLAT_M32700UT 335#elif defined(CONFIG_PLAT_M32700UT)
336 seq_printf(m, "Machine\t\t: M32700UT Evaluation board\n"); 336 seq_printf(m, "Machine\t\t: M32700UT Evaluation board\n");
337#elif CONFIG_PLAT_OPSPUT 337#elif defined(CONFIG_PLAT_OPSPUT)
338 seq_printf(m, "Machine\t\t: OPSPUT Evaluation board\n"); 338 seq_printf(m, "Machine\t\t: OPSPUT Evaluation board\n");
339#elif CONFIG_PLAT_USRV 339#elif defined(CONFIG_PLAT_USRV)
340 seq_printf(m, "Machine\t\t: uServer\n"); 340 seq_printf(m, "Machine\t\t: uServer\n");
341#elif CONFIG_PLAT_OAKS32R 341#elif defined(CONFIG_PLAT_OAKS32R)
342 seq_printf(m, "Machine\t\t: OAKS32R\n"); 342 seq_printf(m, "Machine\t\t: OAKS32R\n");
343#else 343#else
344 seq_printf(m, "Machine\t\t: Unknown\n"); 344 seq_printf(m, "Machine\t\t: Unknown\n");
diff --git a/arch/m32r/kernel/time.c b/arch/m32r/kernel/time.c
index 539c562cd54d..2ebce2063fea 100644
--- a/arch/m32r/kernel/time.c
+++ b/arch/m32r/kernel/time.c
@@ -39,10 +39,6 @@ extern void send_IPI_allbutself(int, int);
39extern void smp_local_timer_interrupt(struct pt_regs *); 39extern void smp_local_timer_interrupt(struct pt_regs *);
40#endif 40#endif
41 41
42u64 jiffies_64 = INITIAL_JIFFIES;
43
44EXPORT_SYMBOL(jiffies_64);
45
46extern unsigned long wall_jiffies; 42extern unsigned long wall_jiffies;
47#define TICK_SIZE (tick_nsec / 1000) 43#define TICK_SIZE (tick_nsec / 1000)
48 44
diff --git a/arch/m32r/lib/csum_partial_copy.c b/arch/m32r/lib/csum_partial_copy.c
index ddb16a83a8ce..3d5f06145854 100644
--- a/arch/m32r/lib/csum_partial_copy.c
+++ b/arch/m32r/lib/csum_partial_copy.c
@@ -18,10 +18,10 @@
18 18
19#include <linux/module.h> 19#include <linux/module.h>
20#include <linux/types.h> 20#include <linux/types.h>
21#include <linux/string.h>
21 22
22#include <net/checksum.h> 23#include <net/checksum.h>
23#include <asm/byteorder.h> 24#include <asm/byteorder.h>
24#include <asm/string.h>
25#include <asm/uaccess.h> 25#include <asm/uaccess.h>
26 26
27/* 27/*
diff --git a/arch/m32r/mm/init.c b/arch/m32r/mm/init.c
index d9a40b1fe8ba..6facf15b04f3 100644
--- a/arch/m32r/mm/init.c
+++ b/arch/m32r/mm/init.c
@@ -48,6 +48,8 @@ void show_mem(void)
48 show_free_areas(); 48 show_free_areas();
49 printk("Free swap: %6ldkB\n",nr_swap_pages<<(PAGE_SHIFT-10)); 49 printk("Free swap: %6ldkB\n",nr_swap_pages<<(PAGE_SHIFT-10));
50 for_each_pgdat(pgdat) { 50 for_each_pgdat(pgdat) {
51 unsigned long flags;
52 pgdat_resize_lock(pgdat, &flags);
51 for (i = 0; i < pgdat->node_spanned_pages; ++i) { 53 for (i = 0; i < pgdat->node_spanned_pages; ++i) {
52 page = pgdat_page_nr(pgdat, i); 54 page = pgdat_page_nr(pgdat, i);
53 total++; 55 total++;
@@ -60,6 +62,7 @@ void show_mem(void)
60 else if (page_count(page)) 62 else if (page_count(page))
61 shared += page_count(page) - 1; 63 shared += page_count(page) - 1;
62 } 64 }
65 pgdat_resize_unlock(pgdat, &flags);
63 } 66 }
64 printk("%d pages of RAM\n", total); 67 printk("%d pages of RAM\n", total);
65 printk("%d pages of HIGHMEM\n",highmem); 68 printk("%d pages of HIGHMEM\n",highmem);
@@ -150,10 +153,14 @@ int __init reservedpages_count(void)
150 int reservedpages, nid, i; 153 int reservedpages, nid, i;
151 154
152 reservedpages = 0; 155 reservedpages = 0;
153 for_each_online_node(nid) 156 for_each_online_node(nid) {
157 unsigned long flags;
158 pgdat_resize_lock(NODE_DATA(nid), &flags);
154 for (i = 0 ; i < MAX_LOW_PFN(nid) - START_PFN(nid) ; i++) 159 for (i = 0 ; i < MAX_LOW_PFN(nid) - START_PFN(nid) ; i++)
155 if (PageReserved(nid_page_nr(nid, i))) 160 if (PageReserved(nid_page_nr(nid, i)))
156 reservedpages++; 161 reservedpages++;
162 pgdat_resize_unlock(NODE_DATA(nid), &flags);
163 }
157 164
158 return reservedpages; 165 return reservedpages;
159} 166}
diff --git a/arch/m32r/mm/ioremap.c b/arch/m32r/mm/ioremap.c
index 70c59055c19c..a151849a605e 100644
--- a/arch/m32r/mm/ioremap.c
+++ b/arch/m32r/mm/ioremap.c
@@ -67,7 +67,7 @@ remap_area_pmd(pmd_t * pmd, unsigned long address, unsigned long size,
67 if (address >= end) 67 if (address >= end)
68 BUG(); 68 BUG();
69 do { 69 do {
70 pte_t * pte = pte_alloc_kernel(&init_mm, pmd, address); 70 pte_t * pte = pte_alloc_kernel(pmd, address);
71 if (!pte) 71 if (!pte)
72 return -ENOMEM; 72 return -ENOMEM;
73 remap_area_pte(pte, address, end - address, address + phys_addr, flags); 73 remap_area_pte(pte, address, end - address, address + phys_addr, flags);
@@ -90,7 +90,6 @@ remap_area_pages(unsigned long address, unsigned long phys_addr,
90 flush_cache_all(); 90 flush_cache_all();
91 if (address >= end) 91 if (address >= end)
92 BUG(); 92 BUG();
93 spin_lock(&init_mm.page_table_lock);
94 do { 93 do {
95 pmd_t *pmd; 94 pmd_t *pmd;
96 pmd = pmd_alloc(&init_mm, dir, address); 95 pmd = pmd_alloc(&init_mm, dir, address);
@@ -104,7 +103,6 @@ remap_area_pages(unsigned long address, unsigned long phys_addr,
104 address = (address + PGDIR_SIZE) & PGDIR_MASK; 103 address = (address + PGDIR_SIZE) & PGDIR_MASK;
105 dir++; 104 dir++;
106 } while (address && (address < end)); 105 } while (address && (address < end));
107 spin_unlock(&init_mm.page_table_lock);
108 flush_tlb_all(); 106 flush_tlb_all();
109 return error; 107 return error;
110} 108}
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
index ba960bbc8e6d..1dd5d18b2201 100644
--- a/arch/m68k/Kconfig
+++ b/arch/m68k/Kconfig
@@ -388,33 +388,11 @@ config AMIGA_PCMCIA
388 Include support in the kernel for pcmcia on Amiga 1200 and Amiga 388 Include support in the kernel for pcmcia on Amiga 1200 and Amiga
389 600. If you intend to use pcmcia cards say Y; otherwise say N. 389 600. If you intend to use pcmcia cards say Y; otherwise say N.
390 390
391config STRAM_SWAP
392 bool "Support for ST-RAM as swap space"
393 depends on ATARI && BROKEN
394 ---help---
395 Some Atari 68k machines (including the 520STF and 1020STE) divide
396 their addressable memory into ST and TT sections. The TT section
397 (up to 512MB) is the main memory; the ST section (up to 4MB) is
398 accessible to the built-in graphics board, runs slower, and is
399 present mainly for backward compatibility with older machines.
400
401 This enables support for using (parts of) ST-RAM as swap space,
402 instead of as normal system memory. This can first enhance system
403 performance if you have lots of alternate RAM (compared to the size
404 of ST-RAM), because executable code always will reside in faster
405 memory. ST-RAM will remain as ultra-fast swap space. On the other
406 hand, it allows much improved dynamic allocations of ST-RAM buffers
407 for device driver modules (e.g. floppy, ACSI, SLM printer, DMA
408 sound). The probability that such allocations at module load time
409 fail is drastically reduced.
410
411config STRAM_PROC 391config STRAM_PROC
412 bool "ST-RAM statistics in /proc" 392 bool "ST-RAM statistics in /proc"
413 depends on ATARI 393 depends on ATARI
414 help 394 help
415 Say Y here to report ST-RAM usage statistics in /proc/stram. See 395 Say Y here to report ST-RAM usage statistics in /proc/stram.
416 the help for CONFIG_STRAM_SWAP for discussion of ST-RAM and its
417 uses.
418 396
419config HEARTBEAT 397config HEARTBEAT
420 bool "Use power LED as a heartbeat" if AMIGA || APOLLO || ATARI || MAC ||Q40 398 bool "Use power LED as a heartbeat" if AMIGA || APOLLO || ATARI || MAC ||Q40
diff --git a/arch/m68k/atari/stram.c b/arch/m68k/atari/stram.c
index 5a3c106b40c8..22e0481a5f7b 100644
--- a/arch/m68k/atari/stram.c
+++ b/arch/m68k/atari/stram.c
@@ -15,11 +15,9 @@
15#include <linux/kdev_t.h> 15#include <linux/kdev_t.h>
16#include <linux/major.h> 16#include <linux/major.h>
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/swap.h>
19#include <linux/slab.h> 18#include <linux/slab.h>
20#include <linux/vmalloc.h> 19#include <linux/vmalloc.h>
21#include <linux/pagemap.h> 20#include <linux/pagemap.h>
22#include <linux/shm.h>
23#include <linux/bootmem.h> 21#include <linux/bootmem.h>
24#include <linux/mount.h> 22#include <linux/mount.h>
25#include <linux/blkdev.h> 23#include <linux/blkdev.h>
@@ -33,8 +31,6 @@
33#include <asm/io.h> 31#include <asm/io.h>
34#include <asm/semaphore.h> 32#include <asm/semaphore.h>
35 33
36#include <linux/swapops.h>
37
38#undef DEBUG 34#undef DEBUG
39 35
40#ifdef DEBUG 36#ifdef DEBUG
@@ -49,8 +45,7 @@
49#include <linux/proc_fs.h> 45#include <linux/proc_fs.h>
50#endif 46#endif
51 47
52/* Pre-swapping comments: 48/*
53 *
54 * ++roman: 49 * ++roman:
55 * 50 *
56 * New version of ST-Ram buffer allocation. Instead of using the 51 * New version of ST-Ram buffer allocation. Instead of using the
@@ -75,76 +70,6 @@
75 * 70 *
76 */ 71 */
77 72
78/*
79 * New Nov 1997: Use ST-RAM as swap space!
80 *
81 * In the past, there were often problems with modules that require ST-RAM
82 * buffers. Such drivers have to use __get_dma_pages(), which unfortunately
83 * often isn't very successful in allocating more than 1 page :-( [1] The net
84 * result was that most of the time you couldn't insmod such modules (ataflop,
85 * ACSI, SCSI on Falcon, Atari internal framebuffer, not to speak of acsi_slm,
86 * which needs a 1 MB buffer... :-).
87 *
88 * To overcome this limitation, ST-RAM can now be turned into a very
89 * high-speed swap space. If a request for an ST-RAM buffer comes, the kernel
90 * now tries to unswap some pages on that swap device to make some free (and
91 * contiguous) space. This works much better in comparison to
92 * __get_dma_pages(), since used swap pages can be selectively freed by either
93 * moving them to somewhere else in swap space, or by reading them back into
94 * system memory. Ok, there operation of unswapping isn't really cheap (for
95 * each page, one has to go through the page tables of all processes), but it
96 * doesn't happen that often (only when allocation ST-RAM, i.e. when loading a
97 * module that needs ST-RAM). But it at least makes it possible to load such
98 * modules!
99 *
100 * It could also be that overall system performance increases a bit due to
101 * ST-RAM swapping, since slow ST-RAM isn't used anymore for holding data or
102 * executing code in. It's then just a (very fast, compared to disk) back
103 * storage for not-so-often needed data. (But this effect must be compared
104 * with the loss of total memory...) Don't know if the effect is already
105 * visible on a TT, where the speed difference between ST- and TT-RAM isn't
106 * that dramatic, but it should on machines where TT-RAM is really much faster
107 * (e.g. Afterburner).
108 *
109 * [1]: __get_free_pages() does a fine job if you only want one page, but if
110 * you want more (contiguous) pages, it can give you such a block only if
111 * there's already a free one. The algorithm can't try to free buffers or swap
112 * out something in order to make more free space, since all that page-freeing
113 * mechanisms work "target-less", i.e. they just free something, but not in a
114 * specific place. I.e., __get_free_pages() can't do anything to free
115 * *adjacent* pages :-( This situation becomes even worse for DMA memory,
116 * since the freeing algorithms are also blind to DMA capability of pages.
117 */
118
119/* 1998-10-20: ++andreas
120 unswap_by_move disabled because it does not handle swapped shm pages.
121*/
122
123/* 2000-05-01: ++andreas
124 Integrated with bootmem. Remove all traces of unswap_by_move.
125*/
126
127#ifdef CONFIG_STRAM_SWAP
128#define ALIGN_IF_SWAP(x) PAGE_ALIGN(x)
129#else
130#define ALIGN_IF_SWAP(x) (x)
131#endif
132
133/* get index of swap page at address 'addr' */
134#define SWAP_NR(addr) (((addr) - swap_start) >> PAGE_SHIFT)
135
136/* get address of swap page #'nr' */
137#define SWAP_ADDR(nr) (swap_start + ((nr) << PAGE_SHIFT))
138
139/* get number of pages for 'n' bytes (already page-aligned) */
140#define N_PAGES(n) ((n) >> PAGE_SHIFT)
141
142/* The following two numbers define the maximum fraction of ST-RAM in total
143 * memory, below that the kernel would automatically use ST-RAM as swap
144 * space. This decision can be overridden with stram_swap= */
145#define MAX_STRAM_FRACTION_NOM 1
146#define MAX_STRAM_FRACTION_DENOM 3
147
148/* Start and end (virtual) of ST-RAM */ 73/* Start and end (virtual) of ST-RAM */
149static void *stram_start, *stram_end; 74static void *stram_start, *stram_end;
150 75
@@ -164,10 +89,9 @@ typedef struct stram_block {
164} BLOCK; 89} BLOCK;
165 90
166/* values for flags field */ 91/* values for flags field */
167#define BLOCK_FREE 0x01 /* free structure in the BLOCKs pool */ 92#define BLOCK_FREE 0x01 /* free structure in the BLOCKs pool */
168#define BLOCK_KMALLOCED 0x02 /* structure allocated by kmalloc() */ 93#define BLOCK_KMALLOCED 0x02 /* structure allocated by kmalloc() */
169#define BLOCK_GFP 0x08 /* block allocated with __get_dma_pages() */ 94#define BLOCK_GFP 0x08 /* block allocated with __get_dma_pages() */
170#define BLOCK_INSWAP 0x10 /* block allocated in swap space */
171 95
172/* list of allocated blocks */ 96/* list of allocated blocks */
173static BLOCK *alloc_list; 97static BLOCK *alloc_list;
@@ -179,60 +103,8 @@ static BLOCK *alloc_list;
179#define N_STATIC_BLOCKS 20 103#define N_STATIC_BLOCKS 20
180static BLOCK static_blocks[N_STATIC_BLOCKS]; 104static BLOCK static_blocks[N_STATIC_BLOCKS];
181 105
182#ifdef CONFIG_STRAM_SWAP
183/* max. number of bytes to use for swapping
184 * 0 = no ST-RAM swapping
185 * -1 = do swapping (to whole ST-RAM) if it's less than MAX_STRAM_FRACTION of
186 * total memory
187 */
188static int max_swap_size = -1;
189
190/* start and end of swapping area */
191static void *swap_start, *swap_end;
192
193/* The ST-RAM's swap info structure */
194static struct swap_info_struct *stram_swap_info;
195
196/* The ST-RAM's swap type */
197static int stram_swap_type;
198
199/* Semaphore for get_stram_region. */
200static DECLARE_MUTEX(stram_swap_sem);
201
202/* major and minor device number of the ST-RAM device; for the major, we use
203 * the same as Amiga z2ram, which is really similar and impossible on Atari,
204 * and for the minor a relatively odd number to avoid the user creating and
205 * using that device. */
206#define STRAM_MAJOR Z2RAM_MAJOR
207#define STRAM_MINOR 13
208
209/* Some impossible pointer value */
210#define MAGIC_FILE_P (struct file *)0xffffdead
211
212#ifdef DO_PROC
213static unsigned stat_swap_read;
214static unsigned stat_swap_write;
215static unsigned stat_swap_force;
216#endif /* DO_PROC */
217
218#endif /* CONFIG_STRAM_SWAP */
219
220/***************************** Prototypes *****************************/ 106/***************************** Prototypes *****************************/
221 107
222#ifdef CONFIG_STRAM_SWAP
223static int swap_init(void *start_mem, void *swap_data);
224static void *get_stram_region( unsigned long n_pages );
225static void free_stram_region( unsigned long offset, unsigned long n_pages
226 );
227static int in_some_region(void *addr);
228static unsigned long find_free_region( unsigned long n_pages, unsigned long
229 *total_free, unsigned long
230 *region_free );
231static void do_stram_request(request_queue_t *);
232static int stram_open( struct inode *inode, struct file *filp );
233static int stram_release( struct inode *inode, struct file *filp );
234static void reserve_region(void *start, void *end);
235#endif
236static BLOCK *add_region( void *addr, unsigned long size ); 108static BLOCK *add_region( void *addr, unsigned long size );
237static BLOCK *find_region( void *addr ); 109static BLOCK *find_region( void *addr );
238static int remove_region( BLOCK *block ); 110static int remove_region( BLOCK *block );
@@ -279,84 +151,11 @@ void __init atari_stram_init(void)
279 */ 151 */
280void __init atari_stram_reserve_pages(void *start_mem) 152void __init atari_stram_reserve_pages(void *start_mem)
281{ 153{
282#ifdef CONFIG_STRAM_SWAP
283 /* if max_swap_size is negative (i.e. no stram_swap= option given),
284 * determine at run time whether to use ST-RAM swapping */
285 if (max_swap_size < 0)
286 /* Use swapping if ST-RAM doesn't make up more than MAX_STRAM_FRACTION
287 * of total memory. In that case, the max. size is set to 16 MB,
288 * because ST-RAM can never be bigger than that.
289 * Also, never use swapping on a Hades, there's no separate ST-RAM in
290 * that machine. */
291 max_swap_size =
292 (!MACH_IS_HADES &&
293 (N_PAGES(stram_end-stram_start)*MAX_STRAM_FRACTION_DENOM <=
294 ((unsigned long)high_memory>>PAGE_SHIFT)*MAX_STRAM_FRACTION_NOM)) ? 16*1024*1024 : 0;
295 DPRINTK( "atari_stram_reserve_pages: max_swap_size = %d\n", max_swap_size );
296#endif
297
298 /* always reserve first page of ST-RAM, the first 2 kB are 154 /* always reserve first page of ST-RAM, the first 2 kB are
299 * supervisor-only! */ 155 * supervisor-only! */
300 if (!kernel_in_stram) 156 if (!kernel_in_stram)
301 reserve_bootmem (0, PAGE_SIZE); 157 reserve_bootmem (0, PAGE_SIZE);
302 158
303#ifdef CONFIG_STRAM_SWAP
304 {
305 void *swap_data;
306
307 start_mem = (void *) PAGE_ALIGN ((unsigned long) start_mem);
308 /* determine first page to use as swap: if the kernel is
309 in TT-RAM, this is the first page of (usable) ST-RAM;
310 otherwise just use the end of kernel data (= start_mem) */
311 swap_start = !kernel_in_stram ? stram_start + PAGE_SIZE : start_mem;
312 /* decrement by one page, rest of kernel assumes that first swap page
313 * is always reserved and maybe doesn't handle swp_entry == 0
314 * correctly */
315 swap_start -= PAGE_SIZE;
316 swap_end = stram_end;
317 if (swap_end-swap_start > max_swap_size)
318 swap_end = swap_start + max_swap_size;
319 DPRINTK( "atari_stram_reserve_pages: swapping enabled; "
320 "swap=%p-%p\n", swap_start, swap_end);
321
322 /* reserve some amount of memory for maintainance of
323 * swapping itself: one page for each 2048 (PAGE_SIZE/2)
324 * swap pages. (2 bytes for each page) */
325 swap_data = start_mem;
326 start_mem += ((SWAP_NR(swap_end) + PAGE_SIZE/2 - 1)
327 >> (PAGE_SHIFT-1)) << PAGE_SHIFT;
328 /* correct swap_start if necessary */
329 if (swap_start + PAGE_SIZE == swap_data)
330 swap_start = start_mem - PAGE_SIZE;
331
332 if (!swap_init( start_mem, swap_data )) {
333 printk( KERN_ERR "ST-RAM swap space initialization failed\n" );
334 max_swap_size = 0;
335 return;
336 }
337 /* reserve region for swapping meta-data */
338 reserve_region(swap_data, start_mem);
339 /* reserve swapping area itself */
340 reserve_region(swap_start + PAGE_SIZE, swap_end);
341
342 /*
343 * If the whole ST-RAM is used for swapping, there are no allocatable
344 * dma pages left. But unfortunately, some shared parts of the kernel
345 * (particularly the SCSI mid-level) call __get_dma_pages()
346 * unconditionally :-( These calls then fail, and scsi.c even doesn't
347 * check for NULL return values and just crashes. The quick fix for
348 * this (instead of doing much clean up work in the SCSI code) is to
349 * pretend all pages are DMA-able by setting mach_max_dma_address to
350 * ULONG_MAX. This doesn't change any functionality so far, since
351 * get_dma_pages() shouldn't be used on Atari anyway anymore (better
352 * use atari_stram_alloc()), and the Atari SCSI drivers don't need DMA
353 * memory. But unfortunately there's now no kind of warning (even not
354 * a NULL return value) if you use get_dma_pages() nevertheless :-(
355 * You just will get non-DMA-able memory...
356 */
357 mach_max_dma_address = 0xffffffff;
358 }
359#endif
360} 159}
361 160
362void atari_stram_mem_init_hook (void) 161void atari_stram_mem_init_hook (void)
@@ -367,7 +166,6 @@ void atari_stram_mem_init_hook (void)
367 166
368/* 167/*
369 * This is main public interface: somehow allocate a ST-RAM block 168 * This is main public interface: somehow allocate a ST-RAM block
370 * There are three strategies:
371 * 169 *
372 * - If we're before mem_init(), we have to make a static allocation. The 170 * - If we're before mem_init(), we have to make a static allocation. The
373 * region is taken in the kernel data area (if the kernel is in ST-RAM) or 171 * region is taken in the kernel data area (if the kernel is in ST-RAM) or
@@ -375,14 +173,9 @@ void atari_stram_mem_init_hook (void)
375 * rsvd_stram_* region. The ST-RAM is somewhere in the middle of kernel 173 * rsvd_stram_* region. The ST-RAM is somewhere in the middle of kernel
376 * address space in the latter case. 174 * address space in the latter case.
377 * 175 *
378 * - If mem_init() already has been called and ST-RAM swapping is enabled, 176 * - If mem_init() already has been called, try with __get_dma_pages().
379 * try to get the memory from the (pseudo) swap-space, either free already 177 * This has the disadvantage that it's very hard to get more than 1 page,
380 * or by moving some other pages out of the swap. 178 * and it is likely to fail :-(
381 *
382 * - If mem_init() already has been called, and ST-RAM swapping is not
383 * enabled, the only possibility is to try with __get_dma_pages(). This has
384 * the disadvantage that it's very hard to get more than 1 page, and it is
385 * likely to fail :-(
386 * 179 *
387 */ 180 */
388void *atari_stram_alloc(long size, const char *owner) 181void *atari_stram_alloc(long size, const char *owner)
@@ -393,27 +186,13 @@ void *atari_stram_alloc(long size, const char *owner)
393 186
394 DPRINTK("atari_stram_alloc(size=%08lx,owner=%s)\n", size, owner); 187 DPRINTK("atari_stram_alloc(size=%08lx,owner=%s)\n", size, owner);
395 188
396 size = ALIGN_IF_SWAP(size);
397 DPRINTK( "atari_stram_alloc: rounded size = %08lx\n", size );
398#ifdef CONFIG_STRAM_SWAP
399 if (max_swap_size) {
400 /* If swapping is active: make some free space in the swap
401 "device". */
402 DPRINTK( "atari_stram_alloc: after mem_init, swapping ok, "
403 "calling get_region\n" );
404 addr = get_stram_region( N_PAGES(size) );
405 flags = BLOCK_INSWAP;
406 }
407 else
408#endif
409 if (!mem_init_done) 189 if (!mem_init_done)
410 return alloc_bootmem_low(size); 190 return alloc_bootmem_low(size);
411 else { 191 else {
412 /* After mem_init() and no swapping: can only resort to 192 /* After mem_init(): can only resort to __get_dma_pages() */
413 * __get_dma_pages() */
414 addr = (void *)__get_dma_pages(GFP_KERNEL, get_order(size)); 193 addr = (void *)__get_dma_pages(GFP_KERNEL, get_order(size));
415 flags = BLOCK_GFP; 194 flags = BLOCK_GFP;
416 DPRINTK( "atari_stram_alloc: after mem_init, swapping off, " 195 DPRINTK( "atari_stram_alloc: after mem_init, "
417 "get_pages=%p\n", addr ); 196 "get_pages=%p\n", addr );
418 } 197 }
419 198
@@ -422,12 +201,7 @@ void *atari_stram_alloc(long size, const char *owner)
422 /* out of memory for BLOCK structure :-( */ 201 /* out of memory for BLOCK structure :-( */
423 DPRINTK( "atari_stram_alloc: out of mem for BLOCK -- " 202 DPRINTK( "atari_stram_alloc: out of mem for BLOCK -- "
424 "freeing again\n" ); 203 "freeing again\n" );
425#ifdef CONFIG_STRAM_SWAP 204 free_pages((unsigned long)addr, get_order(size));
426 if (flags == BLOCK_INSWAP)
427 free_stram_region( SWAP_NR(addr), N_PAGES(size) );
428 else
429#endif
430 free_pages((unsigned long)addr, get_order(size));
431 return( NULL ); 205 return( NULL );
432 } 206 }
433 block->owner = owner; 207 block->owner = owner;
@@ -451,25 +225,12 @@ void atari_stram_free( void *addr )
451 DPRINTK( "atari_stram_free: found block (%p): size=%08lx, owner=%s, " 225 DPRINTK( "atari_stram_free: found block (%p): size=%08lx, owner=%s, "
452 "flags=%02x\n", block, block->size, block->owner, block->flags ); 226 "flags=%02x\n", block, block->size, block->owner, block->flags );
453 227
454#ifdef CONFIG_STRAM_SWAP 228 if (!(block->flags & BLOCK_GFP))
455 if (!max_swap_size) {
456#endif
457 if (block->flags & BLOCK_GFP) {
458 DPRINTK("atari_stram_free: is kmalloced, order_size=%d\n",
459 get_order(block->size));
460 free_pages((unsigned long)addr, get_order(block->size));
461 }
462 else
463 goto fail;
464#ifdef CONFIG_STRAM_SWAP
465 }
466 else if (block->flags & BLOCK_INSWAP) {
467 DPRINTK( "atari_stram_free: is swap-alloced\n" );
468 free_stram_region( SWAP_NR(block->start), N_PAGES(block->size) );
469 }
470 else
471 goto fail; 229 goto fail;
472#endif 230
231 DPRINTK("atari_stram_free: is kmalloced, order_size=%d\n",
232 get_order(block->size));
233 free_pages((unsigned long)addr, get_order(block->size));
473 remove_region( block ); 234 remove_region( block );
474 return; 235 return;
475 236
@@ -478,612 +239,6 @@ void atari_stram_free( void *addr )
478 "(called from %p)\n", addr, __builtin_return_address(0) ); 239 "(called from %p)\n", addr, __builtin_return_address(0) );
479} 240}
480 241
481
482#ifdef CONFIG_STRAM_SWAP
483
484
485/* ------------------------------------------------------------------------ */
486/* Main Swapping Functions */
487/* ------------------------------------------------------------------------ */
488
489
490/*
491 * Initialize ST-RAM swap device
492 * (lots copied and modified from sys_swapon() in mm/swapfile.c)
493 */
494static int __init swap_init(void *start_mem, void *swap_data)
495{
496 static struct dentry fake_dentry;
497 static struct vfsmount fake_vfsmnt;
498 struct swap_info_struct *p;
499 struct inode swap_inode;
500 unsigned int type;
501 void *addr;
502 int i, j, k, prev;
503
504 DPRINTK("swap_init(start_mem=%p, swap_data=%p)\n",
505 start_mem, swap_data);
506
507 /* need at least one page for swapping to (and this also isn't very
508 * much... :-) */
509 if (swap_end - swap_start < 2*PAGE_SIZE) {
510 printk( KERN_WARNING "stram_swap_init: swap space too small\n" );
511 return( 0 );
512 }
513
514 /* find free slot in swap_info */
515 for( p = swap_info, type = 0; type < nr_swapfiles; type++, p++ )
516 if (!(p->flags & SWP_USED))
517 break;
518 if (type >= MAX_SWAPFILES) {
519 printk( KERN_WARNING "stram_swap_init: max. number of "
520 "swap devices exhausted\n" );
521 return( 0 );
522 }
523 if (type >= nr_swapfiles)
524 nr_swapfiles = type+1;
525
526 stram_swap_info = p;
527 stram_swap_type = type;
528
529 /* fake some dir cache entries to give us some name in /dev/swaps */
530 fake_dentry.d_parent = &fake_dentry;
531 fake_dentry.d_name.name = "stram (internal)";
532 fake_dentry.d_name.len = 16;
533 fake_vfsmnt.mnt_parent = &fake_vfsmnt;
534
535 p->flags = SWP_USED;
536 p->swap_file = &fake_dentry;
537 p->swap_vfsmnt = &fake_vfsmnt;
538 p->swap_map = swap_data;
539 p->cluster_nr = 0;
540 p->next = -1;
541 p->prio = 0x7ff0; /* a rather high priority, but not the higest
542 * to give the user a chance to override */
543
544 /* call stram_open() directly, avoids at least the overhead in
545 * constructing a dummy file structure... */
546 swap_inode.i_rdev = MKDEV( STRAM_MAJOR, STRAM_MINOR );
547 stram_open( &swap_inode, MAGIC_FILE_P );
548 p->max = SWAP_NR(swap_end);
549
550 /* initialize swap_map: set regions that are already allocated or belong
551 * to kernel data space to SWAP_MAP_BAD, otherwise to free */
552 j = 0; /* # of free pages */
553 k = 0; /* # of already allocated pages (from pre-mem_init stram_alloc()) */
554 p->lowest_bit = 0;
555 p->highest_bit = 0;
556 for( i = 1, addr = SWAP_ADDR(1); i < p->max;
557 i++, addr += PAGE_SIZE ) {
558 if (in_some_region( addr )) {
559 p->swap_map[i] = SWAP_MAP_BAD;
560 ++k;
561 }
562 else if (kernel_in_stram && addr < start_mem ) {
563 p->swap_map[i] = SWAP_MAP_BAD;
564 }
565 else {
566 p->swap_map[i] = 0;
567 ++j;
568 if (!p->lowest_bit) p->lowest_bit = i;
569 p->highest_bit = i;
570 }
571 }
572 /* first page always reserved (and doesn't really belong to swap space) */
573 p->swap_map[0] = SWAP_MAP_BAD;
574
575 /* now swapping to this device ok */
576 p->pages = j + k;
577 swap_list_lock();
578 nr_swap_pages += j;
579 p->flags = SWP_WRITEOK;
580
581 /* insert swap space into swap_list */
582 prev = -1;
583 for (i = swap_list.head; i >= 0; i = swap_info[i].next) {
584 if (p->prio >= swap_info[i].prio) {
585 break;
586 }
587 prev = i;
588 }
589 p->next = i;
590 if (prev < 0) {
591 swap_list.head = swap_list.next = p - swap_info;
592 } else {
593 swap_info[prev].next = p - swap_info;
594 }
595 swap_list_unlock();
596
597 printk( KERN_INFO "Using %dk (%d pages) of ST-RAM as swap space.\n",
598 p->pages << 2, p->pages );
599 return( 1 );
600}
601
602
603/*
604 * The swap entry has been read in advance, and we return 1 to indicate
605 * that the page has been used or is no longer needed.
606 *
607 * Always set the resulting pte to be nowrite (the same as COW pages
608 * after one process has exited). We don't know just how many PTEs will
609 * share this swap entry, so be cautious and let do_wp_page work out
610 * what to do if a write is requested later.
611 */
612static inline void unswap_pte(struct vm_area_struct * vma, unsigned long
613 address, pte_t *dir, swp_entry_t entry,
614 struct page *page)
615{
616 pte_t pte = *dir;
617
618 if (pte_none(pte))
619 return;
620 if (pte_present(pte)) {
621 /* If this entry is swap-cached, then page must already
622 hold the right address for any copies in physical
623 memory */
624 if (pte_page(pte) != page)
625 return;
626 /* We will be removing the swap cache in a moment, so... */
627 set_pte(dir, pte_mkdirty(pte));
628 return;
629 }
630 if (pte_val(pte) != entry.val)
631 return;
632
633 DPRINTK("unswap_pte: replacing entry %08lx by new page %p",
634 entry.val, page);
635 set_pte(dir, pte_mkdirty(mk_pte(page, vma->vm_page_prot)));
636 swap_free(entry);
637 get_page(page);
638 inc_mm_counter(vma->vm_mm, rss);
639}
640
641static inline void unswap_pmd(struct vm_area_struct * vma, pmd_t *dir,
642 unsigned long address, unsigned long size,
643 unsigned long offset, swp_entry_t entry,
644 struct page *page)
645{
646 pte_t * pte;
647 unsigned long end;
648
649 if (pmd_none(*dir))
650 return;
651 if (pmd_bad(*dir)) {
652 pmd_ERROR(*dir);
653 pmd_clear(dir);
654 return;
655 }
656 pte = pte_offset_kernel(dir, address);
657 offset += address & PMD_MASK;
658 address &= ~PMD_MASK;
659 end = address + size;
660 if (end > PMD_SIZE)
661 end = PMD_SIZE;
662 do {
663 unswap_pte(vma, offset+address-vma->vm_start, pte, entry, page);
664 address += PAGE_SIZE;
665 pte++;
666 } while (address < end);
667}
668
669static inline void unswap_pgd(struct vm_area_struct * vma, pgd_t *dir,
670 unsigned long address, unsigned long size,
671 swp_entry_t entry, struct page *page)
672{
673 pmd_t * pmd;
674 unsigned long offset, end;
675
676 if (pgd_none(*dir))
677 return;
678 if (pgd_bad(*dir)) {
679 pgd_ERROR(*dir);
680 pgd_clear(dir);
681 return;
682 }
683 pmd = pmd_offset(dir, address);
684 offset = address & PGDIR_MASK;
685 address &= ~PGDIR_MASK;
686 end = address + size;
687 if (end > PGDIR_SIZE)
688 end = PGDIR_SIZE;
689 do {
690 unswap_pmd(vma, pmd, address, end - address, offset, entry,
691 page);
692 address = (address + PMD_SIZE) & PMD_MASK;
693 pmd++;
694 } while (address < end);
695}
696
697static void unswap_vma(struct vm_area_struct * vma, pgd_t *pgdir,
698 swp_entry_t entry, struct page *page)
699{
700 unsigned long start = vma->vm_start, end = vma->vm_end;
701
702 do {
703 unswap_pgd(vma, pgdir, start, end - start, entry, page);
704 start = (start + PGDIR_SIZE) & PGDIR_MASK;
705 pgdir++;
706 } while (start < end);
707}
708
709static void unswap_process(struct mm_struct * mm, swp_entry_t entry,
710 struct page *page)
711{
712 struct vm_area_struct* vma;
713
714 /*
715 * Go through process' page directory.
716 */
717 if (!mm)
718 return;
719 for (vma = mm->mmap; vma; vma = vma->vm_next) {
720 pgd_t * pgd = pgd_offset(mm, vma->vm_start);
721 unswap_vma(vma, pgd, entry, page);
722 }
723}
724
725
726static int unswap_by_read(unsigned short *map, unsigned long max,
727 unsigned long start, unsigned long n_pages)
728{
729 struct task_struct *p;
730 struct page *page;
731 swp_entry_t entry;
732 unsigned long i;
733
734 DPRINTK( "unswapping %lu..%lu by reading in\n",
735 start, start+n_pages-1 );
736
737 for( i = start; i < start+n_pages; ++i ) {
738 if (map[i] == SWAP_MAP_BAD) {
739 printk( KERN_ERR "get_stram_region: page %lu already "
740 "reserved??\n", i );
741 continue;
742 }
743
744 if (map[i]) {
745 entry = swp_entry(stram_swap_type, i);
746 DPRINTK("unswap: map[i=%lu]=%u nr_swap=%ld\n",
747 i, map[i], nr_swap_pages);
748
749 swap_device_lock(stram_swap_info);
750 map[i]++;
751 swap_device_unlock(stram_swap_info);
752 /* Get a page for the entry, using the existing
753 swap cache page if there is one. Otherwise,
754 get a clean page and read the swap into it. */
755 page = read_swap_cache_async(entry, NULL, 0);
756 if (!page) {
757 swap_free(entry);
758 return -ENOMEM;
759 }
760 read_lock(&tasklist_lock);
761 for_each_process(p)
762 unswap_process(p->mm, entry, page);
763 read_unlock(&tasklist_lock);
764 shmem_unuse(entry, page);
765 /* Now get rid of the extra reference to the
766 temporary page we've been using. */
767 if (PageSwapCache(page))
768 delete_from_swap_cache(page);
769 __free_page(page);
770 #ifdef DO_PROC
771 stat_swap_force++;
772 #endif
773 }
774
775 DPRINTK( "unswap: map[i=%lu]=%u nr_swap=%ld\n",
776 i, map[i], nr_swap_pages );
777 swap_list_lock();
778 swap_device_lock(stram_swap_info);
779 map[i] = SWAP_MAP_BAD;
780 if (stram_swap_info->lowest_bit == i)
781 stram_swap_info->lowest_bit++;
782 if (stram_swap_info->highest_bit == i)
783 stram_swap_info->highest_bit--;
784 --nr_swap_pages;
785 swap_device_unlock(stram_swap_info);
786 swap_list_unlock();
787 }
788
789 return 0;
790}
791
792/*
793 * reserve a region in ST-RAM swap space for an allocation
794 */
795static void *get_stram_region( unsigned long n_pages )
796{
797 unsigned short *map = stram_swap_info->swap_map;
798 unsigned long max = stram_swap_info->max;
799 unsigned long start, total_free, region_free;
800 int err;
801 void *ret = NULL;
802
803 DPRINTK( "get_stram_region(n_pages=%lu)\n", n_pages );
804
805 down(&stram_swap_sem);
806
807 /* disallow writing to the swap device now */
808 stram_swap_info->flags = SWP_USED;
809
810 /* find a region of n_pages pages in the swap space including as much free
811 * pages as possible (and excluding any already-reserved pages). */
812 if (!(start = find_free_region( n_pages, &total_free, &region_free )))
813 goto end;
814 DPRINTK( "get_stram_region: region starts at %lu, has %lu free pages\n",
815 start, region_free );
816
817 err = unswap_by_read(map, max, start, n_pages);
818 if (err)
819 goto end;
820
821 ret = SWAP_ADDR(start);
822 end:
823 /* allow using swap device again */
824 stram_swap_info->flags = SWP_WRITEOK;
825 up(&stram_swap_sem);
826 DPRINTK( "get_stram_region: returning %p\n", ret );
827 return( ret );
828}
829
830
831/*
832 * free a reserved region in ST-RAM swap space
833 */
834static void free_stram_region( unsigned long offset, unsigned long n_pages )
835{
836 unsigned short *map = stram_swap_info->swap_map;
837
838 DPRINTK( "free_stram_region(offset=%lu,n_pages=%lu)\n", offset, n_pages );
839
840 if (offset < 1 || offset + n_pages > stram_swap_info->max) {
841 printk( KERN_ERR "free_stram_region: Trying to free non-ST-RAM\n" );
842 return;
843 }
844
845 swap_list_lock();
846 swap_device_lock(stram_swap_info);
847 /* un-reserve the freed pages */
848 for( ; n_pages > 0; ++offset, --n_pages ) {
849 if (map[offset] != SWAP_MAP_BAD)
850 printk( KERN_ERR "free_stram_region: Swap page %lu was not "
851 "reserved\n", offset );
852 map[offset] = 0;
853 }
854
855 /* update swapping meta-data */
856 if (offset < stram_swap_info->lowest_bit)
857 stram_swap_info->lowest_bit = offset;
858 if (offset+n_pages-1 > stram_swap_info->highest_bit)
859 stram_swap_info->highest_bit = offset+n_pages-1;
860 if (stram_swap_info->prio > swap_info[swap_list.next].prio)
861 swap_list.next = swap_list.head;
862 nr_swap_pages += n_pages;
863 swap_device_unlock(stram_swap_info);
864 swap_list_unlock();
865}
866
867
868/* ------------------------------------------------------------------------ */
869/* Utility Functions for Swapping */
870/* ------------------------------------------------------------------------ */
871
872
873/* is addr in some of the allocated regions? */
874static int in_some_region(void *addr)
875{
876 BLOCK *p;
877
878 for( p = alloc_list; p; p = p->next ) {
879 if (p->start <= addr && addr < p->start + p->size)
880 return( 1 );
881 }
882 return( 0 );
883}
884
885
886static unsigned long find_free_region(unsigned long n_pages,
887 unsigned long *total_free,
888 unsigned long *region_free)
889{
890 unsigned short *map = stram_swap_info->swap_map;
891 unsigned long max = stram_swap_info->max;
892 unsigned long head, tail, max_start;
893 long nfree, max_free;
894
895 /* first scan the swap space for a suitable place for the allocation */
896 head = 1;
897 max_start = 0;
898 max_free = -1;
899 *total_free = 0;
900
901 start_over:
902 /* increment tail until final window size reached, and count free pages */
903 nfree = 0;
904 for( tail = head; tail-head < n_pages && tail < max; ++tail ) {
905 if (map[tail] == SWAP_MAP_BAD) {
906 head = tail+1;
907 goto start_over;
908 }
909 if (!map[tail]) {
910 ++nfree;
911 ++*total_free;
912 }
913 }
914 if (tail-head < n_pages)
915 goto out;
916 if (nfree > max_free) {
917 max_start = head;
918 max_free = nfree;
919 if (max_free >= n_pages)
920 /* don't need more free pages... :-) */
921 goto out;
922 }
923
924 /* now shift the window and look for the area where as much pages as
925 * possible are free */
926 while( tail < max ) {
927 nfree -= (map[head++] == 0);
928 if (map[tail] == SWAP_MAP_BAD) {
929 head = tail+1;
930 goto start_over;
931 }
932 if (!map[tail]) {
933 ++nfree;
934 ++*total_free;
935 }
936 ++tail;
937 if (nfree > max_free) {
938 max_start = head;
939 max_free = nfree;
940 if (max_free >= n_pages)
941 /* don't need more free pages... :-) */
942 goto out;
943 }
944 }
945
946 out:
947 if (max_free < 0) {
948 printk( KERN_NOTICE "get_stram_region: ST-RAM too full or fragmented "
949 "-- can't allocate %lu pages\n", n_pages );
950 return( 0 );
951 }
952
953 *region_free = max_free;
954 return( max_start );
955}
956
957
958/* setup parameters from command line */
959void __init stram_swap_setup(char *str, int *ints)
960{
961 if (ints[0] >= 1)
962 max_swap_size = ((ints[1] < 0 ? 0 : ints[1]) * 1024) & PAGE_MASK;
963}
964
965
966/* ------------------------------------------------------------------------ */
967/* ST-RAM device */
968/* ------------------------------------------------------------------------ */
969
970static int refcnt;
971
972static void do_stram_request(request_queue_t *q)
973{
974 struct request *req;
975
976 while ((req = elv_next_request(q)) != NULL) {
977 void *start = swap_start + (req->sector << 9);
978 unsigned long len = req->current_nr_sectors << 9;
979 if ((start + len) > swap_end) {
980 printk( KERN_ERR "stram: bad access beyond end of device: "
981 "block=%ld, count=%d\n",
982 req->sector,
983 req->current_nr_sectors );
984 end_request(req, 0);
985 continue;
986 }
987
988 if (req->cmd == READ) {
989 memcpy(req->buffer, start, len);
990#ifdef DO_PROC
991 stat_swap_read += N_PAGES(len);
992#endif
993 }
994 else {
995 memcpy(start, req->buffer, len);
996#ifdef DO_PROC
997 stat_swap_write += N_PAGES(len);
998#endif
999 }
1000 end_request(req, 1);
1001 }
1002}
1003
1004
1005static int stram_open( struct inode *inode, struct file *filp )
1006{
1007 if (filp != MAGIC_FILE_P) {
1008 printk( KERN_NOTICE "Only kernel can open ST-RAM device\n" );
1009 return( -EPERM );
1010 }
1011 if (refcnt)
1012 return( -EBUSY );
1013 ++refcnt;
1014 return( 0 );
1015}
1016
1017static int stram_release( struct inode *inode, struct file *filp )
1018{
1019 if (filp != MAGIC_FILE_P) {
1020 printk( KERN_NOTICE "Only kernel can close ST-RAM device\n" );
1021 return( -EPERM );
1022 }
1023 if (refcnt > 0)
1024 --refcnt;
1025 return( 0 );
1026}
1027
1028
1029static struct block_device_operations stram_fops = {
1030 .open = stram_open,
1031 .release = stram_release,
1032};
1033
1034static struct gendisk *stram_disk;
1035static struct request_queue *stram_queue;
1036static DEFINE_SPINLOCK(stram_lock);
1037
1038int __init stram_device_init(void)
1039{
1040 if (!MACH_IS_ATARI)
1041 /* no point in initializing this, I hope */
1042 return -ENXIO;
1043
1044 if (!max_swap_size)
1045 /* swapping not enabled */
1046 return -ENXIO;
1047 stram_disk = alloc_disk(1);
1048 if (!stram_disk)
1049 return -ENOMEM;
1050
1051 if (register_blkdev(STRAM_MAJOR, "stram")) {
1052 put_disk(stram_disk);
1053 return -ENXIO;
1054 }
1055
1056 stram_queue = blk_init_queue(do_stram_request, &stram_lock);
1057 if (!stram_queue) {
1058 unregister_blkdev(STRAM_MAJOR, "stram");
1059 put_disk(stram_disk);
1060 return -ENOMEM;
1061 }
1062
1063 stram_disk->major = STRAM_MAJOR;
1064 stram_disk->first_minor = STRAM_MINOR;
1065 stram_disk->fops = &stram_fops;
1066 stram_disk->queue = stram_queue;
1067 sprintf(stram_disk->disk_name, "stram");
1068 set_capacity(stram_disk, (swap_end - swap_start)/512);
1069 add_disk(stram_disk);
1070 return 0;
1071}
1072
1073
1074
1075/* ------------------------------------------------------------------------ */
1076/* Misc Utility Functions */
1077/* ------------------------------------------------------------------------ */
1078
1079/* reserve a range of pages */
1080static void reserve_region(void *start, void *end)
1081{
1082 reserve_bootmem (virt_to_phys(start), end - start);
1083}
1084
1085#endif /* CONFIG_STRAM_SWAP */
1086
1087 242
1088/* ------------------------------------------------------------------------ */ 243/* ------------------------------------------------------------------------ */
1089/* Region Management */ 244/* Region Management */
@@ -1173,50 +328,9 @@ int get_stram_list( char *buf )
1173{ 328{
1174 int len = 0; 329 int len = 0;
1175 BLOCK *p; 330 BLOCK *p;
1176#ifdef CONFIG_STRAM_SWAP
1177 int i;
1178 unsigned short *map = stram_swap_info->swap_map;
1179 unsigned long max = stram_swap_info->max;
1180 unsigned free = 0, used = 0, rsvd = 0;
1181#endif
1182 331
1183#ifdef CONFIG_STRAM_SWAP 332 PRINT_PROC("Total ST-RAM: %8u kB\n",
1184 if (max_swap_size) {
1185 for( i = 1; i < max; ++i ) {
1186 if (!map[i])
1187 ++free;
1188 else if (map[i] == SWAP_MAP_BAD)
1189 ++rsvd;
1190 else
1191 ++used;
1192 }
1193 PRINT_PROC(
1194 "Total ST-RAM: %8u kB\n"
1195 "Total ST-RAM swap: %8lu kB\n"
1196 "Free swap: %8u kB\n"
1197 "Used swap: %8u kB\n"
1198 "Allocated swap: %8u kB\n"
1199 "Swap Reads: %8u\n"
1200 "Swap Writes: %8u\n"
1201 "Swap Forced Reads: %8u\n",
1202 (stram_end - stram_start) >> 10,
1203 (max-1) << (PAGE_SHIFT-10),
1204 free << (PAGE_SHIFT-10),
1205 used << (PAGE_SHIFT-10),
1206 rsvd << (PAGE_SHIFT-10),
1207 stat_swap_read,
1208 stat_swap_write,
1209 stat_swap_force );
1210 }
1211 else {
1212#endif
1213 PRINT_PROC( "ST-RAM swapping disabled\n" );
1214 PRINT_PROC("Total ST-RAM: %8u kB\n",
1215 (stram_end - stram_start) >> 10); 333 (stram_end - stram_start) >> 10);
1216#ifdef CONFIG_STRAM_SWAP
1217 }
1218#endif
1219
1220 PRINT_PROC( "Allocated regions:\n" ); 334 PRINT_PROC( "Allocated regions:\n" );
1221 for( p = alloc_list; p; p = p->next ) { 335 for( p = alloc_list; p; p = p->next ) {
1222 if (len + 50 >= PAGE_SIZE) 336 if (len + 50 >= PAGE_SIZE)
@@ -1227,8 +341,6 @@ int get_stram_list( char *buf )
1227 p->owner); 341 p->owner);
1228 if (p->flags & BLOCK_GFP) 342 if (p->flags & BLOCK_GFP)
1229 PRINT_PROC( "page-alloced)\n" ); 343 PRINT_PROC( "page-alloced)\n" );
1230 else if (p->flags & BLOCK_INSWAP)
1231 PRINT_PROC( "in swap)\n" );
1232 else 344 else
1233 PRINT_PROC( "??)\n" ); 345 PRINT_PROC( "??)\n" );
1234 } 346 }
diff --git a/arch/m68k/kernel/ptrace.c b/arch/m68k/kernel/ptrace.c
index 8ed1b01a6a87..f7f1d2e5b90b 100644
--- a/arch/m68k/kernel/ptrace.c
+++ b/arch/m68k/kernel/ptrace.c
@@ -121,7 +121,7 @@ void ptrace_disable(struct task_struct *child)
121 child->thread.work.syscall_trace = 0; 121 child->thread.work.syscall_trace = 0;
122} 122}
123 123
124asmlinkage int sys_ptrace(long request, long pid, long addr, long data) 124asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
125{ 125{
126 struct task_struct *child; 126 struct task_struct *child;
127 unsigned long tmp; 127 unsigned long tmp;
diff --git a/arch/m68k/kernel/time.c b/arch/m68k/kernel/time.c
index 4ec95e3cb874..98e4b1adfa29 100644
--- a/arch/m68k/kernel/time.c
+++ b/arch/m68k/kernel/time.c
@@ -27,10 +27,6 @@
27#include <linux/timex.h> 27#include <linux/timex.h>
28#include <linux/profile.h> 28#include <linux/profile.h>
29 29
30u64 jiffies_64 = INITIAL_JIFFIES;
31
32EXPORT_SYMBOL(jiffies_64);
33
34static inline int set_rtc_mmss(unsigned long nowtime) 30static inline int set_rtc_mmss(unsigned long nowtime)
35{ 31{
36 if (mach_set_clock_mmss) 32 if (mach_set_clock_mmss)
diff --git a/arch/m68k/mm/kmap.c b/arch/m68k/mm/kmap.c
index 5dcb3fa35ea9..fe2383e36b06 100644
--- a/arch/m68k/mm/kmap.c
+++ b/arch/m68k/mm/kmap.c
@@ -201,7 +201,7 @@ void *__ioremap(unsigned long physaddr, unsigned long size, int cacheflag)
201 virtaddr += PTRTREESIZE; 201 virtaddr += PTRTREESIZE;
202 size -= PTRTREESIZE; 202 size -= PTRTREESIZE;
203 } else { 203 } else {
204 pte_dir = pte_alloc_kernel(&init_mm, pmd_dir, virtaddr); 204 pte_dir = pte_alloc_kernel(pmd_dir, virtaddr);
205 if (!pte_dir) { 205 if (!pte_dir) {
206 printk("ioremap: no mem for pte_dir\n"); 206 printk("ioremap: no mem for pte_dir\n");
207 return NULL; 207 return NULL;
diff --git a/arch/m68k/sun3x/dvma.c b/arch/m68k/sun3x/dvma.c
index 32e55adfeb8e..117481e86305 100644
--- a/arch/m68k/sun3x/dvma.c
+++ b/arch/m68k/sun3x/dvma.c
@@ -116,7 +116,7 @@ inline int dvma_map_cpu(unsigned long kaddr,
116 pte_t *pte; 116 pte_t *pte;
117 unsigned long end3; 117 unsigned long end3;
118 118
119 if((pte = pte_alloc_kernel(&init_mm, pmd, vaddr)) == NULL) { 119 if((pte = pte_alloc_kernel(pmd, vaddr)) == NULL) {
120 ret = -ENOMEM; 120 ret = -ENOMEM;
121 goto out; 121 goto out;
122 } 122 }
diff --git a/arch/m68knommu/kernel/ptrace.c b/arch/m68knommu/kernel/ptrace.c
index 9724e1cd82e5..621d7b91ccfe 100644
--- a/arch/m68knommu/kernel/ptrace.c
+++ b/arch/m68knommu/kernel/ptrace.c
@@ -101,7 +101,7 @@ void ptrace_disable(struct task_struct *child)
101 put_reg(child, PT_SR, tmp); 101 put_reg(child, PT_SR, tmp);
102} 102}
103 103
104asmlinkage int sys_ptrace(long request, long pid, long addr, long data) 104asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
105{ 105{
106 struct task_struct *child; 106 struct task_struct *child;
107 int ret; 107 int ret;
diff --git a/arch/m68knommu/kernel/time.c b/arch/m68knommu/kernel/time.c
index b17c1ecba966..b9d8abb45430 100644
--- a/arch/m68knommu/kernel/time.c
+++ b/arch/m68knommu/kernel/time.c
@@ -27,10 +27,6 @@
27 27
28#define TICK_SIZE (tick_nsec / 1000) 28#define TICK_SIZE (tick_nsec / 1000)
29 29
30u64 jiffies_64 = INITIAL_JIFFIES;
31
32EXPORT_SYMBOL(jiffies_64);
33
34extern unsigned long wall_jiffies; 30extern unsigned long wall_jiffies;
35 31
36 32
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 4cd724c05700..0097a0d53b3b 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -4,216 +4,147 @@ config MIPS
4 # Horrible source of confusion. Die, die, die ... 4 # Horrible source of confusion. Die, die, die ...
5 select EMBEDDED 5 select EMBEDDED
6 6
7# shouldn't it be per-subarchitecture?
8config ARCH_MAY_HAVE_PC_FDC
9 bool
10 default y
11
12mainmenu "Linux/MIPS Kernel Configuration" 7mainmenu "Linux/MIPS Kernel Configuration"
13 8
14source "init/Kconfig" 9source "init/Kconfig"
15 10
16config SYS_SUPPORTS_32BIT_KERNEL
17 bool
18config SYS_SUPPORTS_64BIT_KERNEL
19 bool
20config CPU_SUPPORTS_32BIT_KERNEL
21 bool
22config CPU_SUPPORTS_64BIT_KERNEL
23 bool
24
25menu "Kernel type"
26
27choice
28
29 prompt "Kernel code model"
30 help
31 You should only select this option if you have a workload that
32 actually benefits from 64-bit processing or if your machine has
33 large memory. You will only be presented a single option in this
34 menu if your system does not support both 32-bit and 64-bit kernels.
35
36config 32BIT
37 bool "32-bit kernel"
38 depends on CPU_SUPPORTS_32BIT_KERNEL && SYS_SUPPORTS_32BIT_KERNEL
39 select TRAD_SIGNALS
40 help
41 Select this option if you want to build a 32-bit kernel.
42
43config 64BIT
44 bool "64-bit kernel"
45 depends on CPU_SUPPORTS_64BIT_KERNEL && SYS_SUPPORTS_64BIT_KERNEL
46 help
47 Select this option if you want to build a 64-bit kernel.
48
49endchoice
50
51endmenu
52
53menu "Machine selection" 11menu "Machine selection"
54 12
55config MACH_JAZZ 13choice
56 bool "Support for the Jazz family of machines" 14 prompt "System type"
57 select ARC 15 default SGI_IP22
58 select ARC32
59 select GENERIC_ISA_DMA
60 select I8259
61 select ISA
62 select SYS_SUPPORTS_32BIT_KERNEL
63 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
64 help
65 This a family of machines based on the MIPS R4030 chipset which was
66 used by several vendors to build RISC/os and Windows NT workstations.
67 Members include the Acer PICA, MIPS Magnum 4000, MIPS Millenium and
68 Olivetti M700-10 workstations.
69 16
70config ACER_PICA_61 17config MIPS_MTX1
71 bool "Support for Acer PICA 1 chipset (EXPERIMENTAL)" 18 bool "Support for 4G Systems MTX-1 board"
72 depends on MACH_JAZZ && EXPERIMENTAL
73 select DMA_NONCOHERENT 19 select DMA_NONCOHERENT
74 help 20 select HW_HAS_PCI
75 This is a machine with a R4400 133/150 MHz CPU. To compile a Linux 21 select SOC_AU1500
76 kernel that runs on these, say Y here. For details about Linux on 22 select SYS_HAS_CPU_MIPS32_R1
77 the MIPS architecture, check out the Linux/MIPS FAQ on the WWW at 23 select SYS_SUPPORTS_LITTLE_ENDIAN
78 <http://www.linux-mips.org/>.
79 24
80config MIPS_MAGNUM_4000 25config MIPS_BOSPORUS
81 bool "Support for MIPS Magnum 4000" 26 bool "AMD Alchemy Bosporus board"
82 depends on MACH_JAZZ 27 select SOC_AU1500
83 select DMA_NONCOHERENT 28 select DMA_NONCOHERENT
84 help 29 select SYS_HAS_CPU_MIPS32_R1
85 This is a machine with a R4000 100 MHz CPU. To compile a Linux 30 select SYS_SUPPORTS_LITTLE_ENDIAN
86 kernel that runs on these, say Y here. For details about Linux on
87 the MIPS architecture, check out the Linux/MIPS FAQ on the WWW at
88 <http://www.linux-mips.org/>.
89 31
90config OLIVETTI_M700 32config MIPS_PB1000
91 bool "Support for Olivetti M700-10" 33 bool "AMD Alchemy PB1000 board"
92 depends on MACH_JAZZ 34 select SOC_AU1000
93 select DMA_NONCOHERENT 35 select DMA_NONCOHERENT
94 help 36 select HW_HAS_PCI
95 This is a machine with a R4000 100 MHz CPU. To compile a Linux 37 select SWAP_IO_SPACE
96 kernel that runs on these, say Y here. For details about Linux on 38 select SYS_HAS_CPU_MIPS32_R1
97 the MIPS architecture, check out the Linux/MIPS FAQ on the WWW at 39 select SYS_SUPPORTS_LITTLE_ENDIAN
98 <http://www.linux-mips.org/>.
99
100config MACH_VR41XX
101 bool "Support for NEC VR4100 series based machines"
102 select SYS_SUPPORTS_32BIT_KERNEL
103 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
104 40
105config NEC_CMBVR4133 41config MIPS_PB1100
106 bool "Support for NEC CMB-VR4133" 42 bool "AMD Alchemy PB1100 board"
107 depends on MACH_VR41XX 43 select SOC_AU1100
108 select CPU_VR41XX
109 select DMA_NONCOHERENT 44 select DMA_NONCOHERENT
110 select IRQ_CPU
111 select HW_HAS_PCI 45 select HW_HAS_PCI
46 select SWAP_IO_SPACE
47 select SYS_HAS_CPU_MIPS32_R1
48 select SYS_SUPPORTS_LITTLE_ENDIAN
112 49
113config ROCKHOPPER 50config MIPS_PB1500
114 bool "Support for Rockhopper baseboard" 51 bool "AMD Alchemy PB1500 board"
115 depends on NEC_CMBVR4133 52 select SOC_AU1500
116 select I8259 53 select DMA_NONCOHERENT
117 select HAVE_STD_PC_SERIAL_PORT 54 select HW_HAS_PCI
55 select SYS_HAS_CPU_MIPS32_R1
56 select SYS_SUPPORTS_LITTLE_ENDIAN
118 57
119config CASIO_E55 58config MIPS_PB1550
120 bool "Support for CASIO CASSIOPEIA E-10/15/55/65" 59 bool "AMD Alchemy PB1550 board"
121 depends on MACH_VR41XX 60 select SOC_AU1550
122 select CPU_LITTLE_ENDIAN
123 select DMA_NONCOHERENT 61 select DMA_NONCOHERENT
124 select IRQ_CPU 62 select HW_HAS_PCI
125 select ISA 63 select MIPS_DISABLE_OBSOLETE_IDE
64 select SYS_HAS_CPU_MIPS32_R1
65 select SYS_SUPPORTS_LITTLE_ENDIAN
126 66
127config IBM_WORKPAD 67config MIPS_PB1200
128 bool "Support for IBM WorkPad z50" 68 bool "AMD Alchemy PB1200 board"
129 depends on MACH_VR41XX 69 select SOC_AU1200
130 select CPU_LITTLE_ENDIAN
131 select DMA_NONCOHERENT 70 select DMA_NONCOHERENT
132 select IRQ_CPU 71 select MIPS_DISABLE_OBSOLETE_IDE
133 select ISA 72 select SYS_HAS_CPU_MIPS32_R1
73 select SYS_SUPPORTS_LITTLE_ENDIAN
134 74
135config TANBAC_TB022X 75config MIPS_DB1000
136 bool "Support for TANBAC VR4131 multichip module and TANBAC VR4131DIMM" 76 bool "AMD Alchemy DB1000 board"
137 depends on MACH_VR41XX 77 select SOC_AU1000
138 select CPU_LITTLE_ENDIAN
139 select DMA_NONCOHERENT 78 select DMA_NONCOHERENT
140 select IRQ_CPU
141 select HW_HAS_PCI 79 select HW_HAS_PCI
142 help 80 select SYS_HAS_CPU_MIPS32_R1
143 The TANBAC VR4131 multichip module(TB0225) and 81 select SYS_SUPPORTS_LITTLE_ENDIAN
144 the TANBAC VR4131DIMM(TB0229) are MIPS-based platforms
145 manufactured by TANBAC.
146 Please refer to <http://www.tanbac.co.jp/>
147 about VR4131 multichip module and VR4131DIMM.
148 82
149config TANBAC_TB0226 83config MIPS_DB1100
150 bool "Support for TANBAC Mbase(TB0226)" 84 bool "AMD Alchemy DB1100 board"
151 depends on TANBAC_TB022X 85 select SOC_AU1100
152 select GPIO_VR41XX
153 help
154 The TANBAC Mbase(TB0226) is a MIPS-based platform manufactured by TANBAC.
155 Please refer to <http://www.tanbac.co.jp/> about Mbase.
156
157config TANBAC_TB0287
158 bool "Support for TANBAC Mini-ITX DIMM base(TB0287)"
159 depends on TANBAC_TB022X
160 help
161 The TANBAC Mini-ITX DIMM base(TB0287) is a MIPS-based platform manufactured by TANBAC.
162 Please refer to <http://www.tanbac.co.jp/> about Mini-ITX DIMM base.
163
164config VICTOR_MPC30X
165 bool "Support for Victor MP-C303/304"
166 depends on MACH_VR41XX
167 select CPU_LITTLE_ENDIAN
168 select DMA_NONCOHERENT 86 select DMA_NONCOHERENT
169 select IRQ_CPU 87 select SYS_HAS_CPU_MIPS32_R1
170 select HW_HAS_PCI 88 select SYS_SUPPORTS_LITTLE_ENDIAN
171 89
172config ZAO_CAPCELLA 90config MIPS_DB1500
173 bool "Support for ZAO Networks Capcella" 91 bool "AMD Alchemy DB1500 board"
174 depends on MACH_VR41XX 92 select SOC_AU1500
175 select CPU_LITTLE_ENDIAN
176 select DMA_NONCOHERENT 93 select DMA_NONCOHERENT
177 select IRQ_CPU
178 select HW_HAS_PCI 94 select HW_HAS_PCI
95 select MIPS_DISABLE_OBSOLETE_IDE
96 select SYS_HAS_CPU_MIPS32_R1
97 select SYS_SUPPORTS_BIG_ENDIAN
98 select SYS_SUPPORTS_LITTLE_ENDIAN
179 99
180config PCI_VR41XX 100config MIPS_DB1550
181 bool "Add PCI control unit support of NEC VR4100 series" 101 bool "AMD Alchemy DB1550 board"
182 depends on MACH_VR41XX && HW_HAS_PCI 102 select SOC_AU1550
183 default y 103 select HW_HAS_PCI
184 select PCI 104 select DMA_NONCOHERENT
105 select MIPS_DISABLE_OBSOLETE_IDE
106 select SYS_HAS_CPU_MIPS32_R1
107 select SYS_SUPPORTS_LITTLE_ENDIAN
185 108
186config VRC4173 109config MIPS_DB1200
187 tristate "Add NEC VRC4173 companion chip support" 110 bool "AMD Alchemy DB1200 board"
188 depends on MACH_VR41XX && PCI_VR41XX 111 select SOC_AU1200
189 ---help--- 112 select DMA_COHERENT
190 The NEC VRC4173 is a companion chip for NEC VR4122/VR4131. 113 select MIPS_DISABLE_OBSOLETE_IDE
114 select SYS_HAS_CPU_MIPS32_R1
115 select SYS_SUPPORTS_LITTLE_ENDIAN
191 116
192config TOSHIBA_JMR3927 117config MIPS_MIRAGE
193 bool "Support for Toshiba JMR-TX3927 board" 118 bool "AMD Alchemy Mirage board"
194 select DMA_NONCOHERENT 119 select DMA_NONCOHERENT
195 select HW_HAS_PCI 120 select SOC_AU1500
196 select SWAP_IO_SPACE 121 select SYS_HAS_CPU_MIPS32_R1
197 select SYS_SUPPORTS_32BIT_KERNEL 122 select SYS_SUPPORTS_LITTLE_ENDIAN
198 123
199config MIPS_COBALT 124config MIPS_COBALT
200 bool "Support for Cobalt Server" 125 bool "Support for Cobalt Server"
201 depends on EXPERIMENTAL
202 select DMA_NONCOHERENT 126 select DMA_NONCOHERENT
203 select HW_HAS_PCI 127 select HW_HAS_PCI
204 select I8259 128 select I8259
205 select IRQ_CPU 129 select IRQ_CPU
130 select MIPS_GT64111
131 select SYS_HAS_CPU_NEVADA
206 select SYS_SUPPORTS_32BIT_KERNEL 132 select SYS_SUPPORTS_32BIT_KERNEL
207 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL 133 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
134 select SYS_SUPPORTS_LITTLE_ENDIAN
208 135
209config MACH_DECSTATION 136config MACH_DECSTATION
210 bool "Support for DECstations" 137 bool "Support for DECstations"
211 select BOOT_ELF32 138 select BOOT_ELF32
212 select DMA_NONCOHERENT 139 select DMA_NONCOHERENT
140 select EARLY_PRINTK
213 select IRQ_CPU 141 select IRQ_CPU
142 select SYS_HAS_CPU_R3000
143 select SYS_HAS_CPU_R4X00
214 select SYS_SUPPORTS_32BIT_KERNEL 144 select SYS_SUPPORTS_32BIT_KERNEL
215 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL 145 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
216 ---help--- 146 select SYS_SUPPORTS_LITTLE_ENDIAN
147 help
217 This enables support for DEC's MIPS based workstations. For details 148 This enables support for DEC's MIPS based workstations. For details
218 see the Linux/MIPS FAQ on <http://www.linux-mips.org/> and the 149 see the Linux/MIPS FAQ on <http://www.linux-mips.org/> and the
219 DECstation porting pages on <http://decstation.unix-ag.org/>. 150 DECstation porting pages on <http://decstation.unix-ag.org/>.
@@ -234,8 +165,10 @@ config MIPS_EV64120
234 select DMA_NONCOHERENT 165 select DMA_NONCOHERENT
235 select HW_HAS_PCI 166 select HW_HAS_PCI
236 select MIPS_GT64120 167 select MIPS_GT64120
168 select SYS_HAS_CPU_R5000
237 select SYS_SUPPORTS_32BIT_KERNEL 169 select SYS_SUPPORTS_32BIT_KERNEL
238 select SYS_SUPPORTS_64BIT_KERNEL 170 select SYS_SUPPORTS_64BIT_KERNEL
171 select SYS_SUPPORTS_BIG_ENDIAN
239 help 172 help
240 This is an evaluation board based on the Galileo GT-64120 173 This is an evaluation board based on the Galileo GT-64120
241 single-chip system controller that contains a MIPS R5000 compatible 174 single-chip system controller that contains a MIPS R5000 compatible
@@ -243,10 +176,6 @@ config MIPS_EV64120
243 <http://www.marvell.com/>. Say Y here if you wish to build a 176 <http://www.marvell.com/>. Say Y here if you wish to build a
244 kernel for this platform. 177 kernel for this platform.
245 178
246config EVB_PCI1
247 bool "Enable Second PCI (PCI1)"
248 depends on MIPS_EV64120
249
250config MIPS_EV96100 179config MIPS_EV96100
251 bool "Support for Galileo EV96100 Evaluation board (EXPERIMENTAL)" 180 bool "Support for Galileo EV96100 Evaluation board (EXPERIMENTAL)"
252 depends on EXPERIMENTAL 181 depends on EXPERIMENTAL
@@ -256,8 +185,11 @@ config MIPS_EV96100
256 select MIPS_GT96100 185 select MIPS_GT96100
257 select RM7000_CPU_SCACHE 186 select RM7000_CPU_SCACHE
258 select SWAP_IO_SPACE 187 select SWAP_IO_SPACE
188 select SYS_HAS_CPU_R5000
189 select SYS_HAS_CPU_RM7000
259 select SYS_SUPPORTS_32BIT_KERNEL 190 select SYS_SUPPORTS_32BIT_KERNEL
260 select SYS_SUPPORTS_64BIT_KERNEL 191 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
192 select SYS_SUPPORTS_BIG_ENDIAN
261 help 193 help
262 This is an evaluation board based on the Galileo GT-96100 LAN/WAN 194 This is an evaluation board based on the Galileo GT-96100 LAN/WAN
263 communications controllers containing a MIPS R5000 compatible core 195 communications controllers containing a MIPS R5000 compatible core
@@ -268,8 +200,11 @@ config MIPS_IVR
268 bool "Support for Globespan IVR board" 200 bool "Support for Globespan IVR board"
269 select DMA_NONCOHERENT 201 select DMA_NONCOHERENT
270 select HW_HAS_PCI 202 select HW_HAS_PCI
203 select ITE_BOARD_GEN
204 select SYS_HAS_CPU_NEVADA
271 select SYS_SUPPORTS_32BIT_KERNEL 205 select SYS_SUPPORTS_32BIT_KERNEL
272 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL 206 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
207 select SYS_SUPPORTS_LITTLE_ENDIAN
273 help 208 help
274 This is an evaluation board built by Globespan to showcase thir 209 This is an evaluation board built by Globespan to showcase thir
275 iVR (Internet Video Recorder) design. It utilizes a QED RM5231 210 iVR (Internet Video Recorder) design. It utilizes a QED RM5231
@@ -277,37 +212,16 @@ config MIPS_IVR
277 located at <http://www.globespan.net/>. Say Y here if you wish to 212 located at <http://www.globespan.net/>. Say Y here if you wish to
278 build a kernel for this platform. 213 build a kernel for this platform.
279 214
280config LASAT
281 bool "Support for LASAT Networks platforms"
282 select DMA_NONCOHERENT
283 select HW_HAS_PCI
284 select MIPS_GT64120
285 select R5000_CPU_SCACHE
286 select SYS_SUPPORTS_32BIT_KERNEL
287 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
288
289config PICVUE
290 tristate "PICVUE LCD display driver"
291 depends on LASAT
292
293config PICVUE_PROC
294 tristate "PICVUE LCD display driver /proc interface"
295 depends on PICVUE
296
297config DS1603
298 bool "DS1603 RTC driver"
299 depends on LASAT
300
301config LASAT_SYSCTL
302 bool "LASAT sysctl interface"
303 depends on LASAT
304
305config MIPS_ITE8172 215config MIPS_ITE8172
306 bool "Support for ITE 8172G board" 216 bool "Support for ITE 8172G board"
307 select DMA_NONCOHERENT 217 select DMA_NONCOHERENT
308 select HW_HAS_PCI 218 select HW_HAS_PCI
219 select ITE_BOARD_GEN
220 select SYS_HAS_CPU_R5432
221 select SYS_HAS_CPU_NEVADA
309 select SYS_SUPPORTS_32BIT_KERNEL 222 select SYS_SUPPORTS_32BIT_KERNEL
310 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL 223 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
224 select SYS_SUPPORTS_LITTLE_ENDIAN
311 help 225 help
312 Ths is an evaluation board made by ITE <http://www.ite.com.tw/> 226 Ths is an evaluation board made by ITE <http://www.ite.com.tw/>
313 with ATX form factor that utilizes a MIPS R5000 to work with its 227 with ATX form factor that utilizes a MIPS R5000 to work with its
@@ -315,42 +229,86 @@ config MIPS_ITE8172
315 either a NEC Vr5432 or QED RM5231. Say Y here if you wish to build 229 either a NEC Vr5432 or QED RM5231. Say Y here if you wish to build
316 a kernel for this platform. 230 a kernel for this platform.
317 231
318config IT8172_REVC 232config MACH_JAZZ
319 bool "Support for older IT8172 (Rev C)" 233 bool "Support for the Jazz family of machines"
320 depends on MIPS_ITE8172 234 select ARC
235 select ARC32
236 select ARCH_MAY_HAVE_PC_FDC
237 select GENERIC_ISA_DMA
238 select I8259
239 select ISA
240 select SYS_HAS_CPU_R4X00
241 select SYS_SUPPORTS_32BIT_KERNEL
242 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
321 help 243 help
322 Say Y here to support the older, Revision C version of the Integrated 244 This a family of machines based on the MIPS R4030 chipset which was
323 Technology Express, Inc. ITE8172 SBC. Vendor page at 245 used by several vendors to build RISC/os and Windows NT workstations.
324 <http://www.ite.com.tw/ia/brief_it8172bsp.htm>; picture of the 246 Members include the Acer PICA, MIPS Magnum 4000, MIPS Millenium and
325 board at <http://www.mvista.com/partners/semiconductor/ite.html>. 247 Olivetti M700-10 workstations.
248
249config LASAT
250 bool "Support for LASAT Networks platforms"
251 select DMA_NONCOHERENT
252 select HW_HAS_PCI
253 select MIPS_GT64120
254 select MIPS_NILE4
255 select R5000_CPU_SCACHE
256 select SYS_HAS_CPU_R5000
257 select SYS_SUPPORTS_32BIT_KERNEL
258 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
259 select SYS_SUPPORTS_LITTLE_ENDIAN
326 260
327config MIPS_ATLAS 261config MIPS_ATLAS
328 bool "Support for MIPS Atlas board" 262 bool "Support for MIPS Atlas board"
329 select BOOT_ELF32 263 select BOOT_ELF32
330 select DMA_NONCOHERENT 264 select DMA_NONCOHERENT
265 select IRQ_CPU
331 select HW_HAS_PCI 266 select HW_HAS_PCI
267 select MIPS_BOARDS_GEN
268 select MIPS_BONITO64
332 select MIPS_GT64120 269 select MIPS_GT64120
270 select MIPS_MSC
271 select RM7000_CPU_SCACHE
333 select SWAP_IO_SPACE 272 select SWAP_IO_SPACE
273 select SYS_HAS_CPU_MIPS32_R1
274 select SYS_HAS_CPU_MIPS32_R2
275 select SYS_HAS_CPU_MIPS64_R1
276 select SYS_HAS_CPU_NEVADA
277 select SYS_HAS_CPU_RM7000
334 select SYS_SUPPORTS_32BIT_KERNEL 278 select SYS_SUPPORTS_32BIT_KERNEL
335 select SYS_SUPPORTS_64BIT_KERNEL 279 select SYS_SUPPORTS_64BIT_KERNEL
280 select SYS_SUPPORTS_BIG_ENDIAN
281 select SYS_SUPPORTS_LITTLE_ENDIAN
336 help 282 help
337 This enables support for the QED R5231-based MIPS Atlas evaluation 283 This enables support for the MIPS Technologies Atlas evaluation
338 board. 284 board.
339 285
340config MIPS_MALTA 286config MIPS_MALTA
341 bool "Support for MIPS Malta board" 287 bool "Support for MIPS Malta board"
288 select ARCH_MAY_HAVE_PC_FDC
342 select BOOT_ELF32 289 select BOOT_ELF32
343 select HAVE_STD_PC_SERIAL_PORT 290 select HAVE_STD_PC_SERIAL_PORT
344 select DMA_NONCOHERENT 291 select DMA_NONCOHERENT
292 select IRQ_CPU
345 select GENERIC_ISA_DMA 293 select GENERIC_ISA_DMA
346 select HW_HAS_PCI 294 select HW_HAS_PCI
347 select I8259 295 select I8259
296 select MIPS_BOARDS_GEN
297 select MIPS_BONITO64
348 select MIPS_GT64120 298 select MIPS_GT64120
299 select MIPS_MSC
349 select SWAP_IO_SPACE 300 select SWAP_IO_SPACE
301 select SYS_HAS_CPU_MIPS32_R1
302 select SYS_HAS_CPU_MIPS32_R2
303 select SYS_HAS_CPU_MIPS64_R1
304 select SYS_HAS_CPU_NEVADA
305 select SYS_HAS_CPU_RM7000
350 select SYS_SUPPORTS_32BIT_KERNEL 306 select SYS_SUPPORTS_32BIT_KERNEL
351 select SYS_SUPPORTS_64BIT_KERNEL 307 select SYS_SUPPORTS_64BIT_KERNEL
308 select SYS_SUPPORTS_BIG_ENDIAN
309 select SYS_SUPPORTS_LITTLE_ENDIAN
352 help 310 help
353 This enables support for the VR5000-based MIPS Malta evaluation 311 This enables support for the MIPS Technologies Malta evaluation
354 board. 312 board.
355 313
356config MIPS_SEAD 314config MIPS_SEAD
@@ -358,50 +316,64 @@ config MIPS_SEAD
358 depends on EXPERIMENTAL 316 depends on EXPERIMENTAL
359 select IRQ_CPU 317 select IRQ_CPU
360 select DMA_NONCOHERENT 318 select DMA_NONCOHERENT
319 select MIPS_BOARDS_GEN
320 select SYS_HAS_CPU_MIPS32_R1
321 select SYS_HAS_CPU_MIPS32_R2
322 select SYS_HAS_CPU_MIPS64_R1
361 select SYS_SUPPORTS_32BIT_KERNEL 323 select SYS_SUPPORTS_32BIT_KERNEL
362 select SYS_SUPPORTS_64BIT_KERNEL 324 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
325 select SYS_SUPPORTS_BIG_ENDIAN
326 select SYS_SUPPORTS_LITTLE_ENDIAN
327 help
328 This enables support for the MIPS Technologies SEAD evaluation
329 board.
363 330
364config MOMENCO_OCELOT 331config MIPS_SIM
365 bool "Support for Momentum Ocelot board" 332 bool 'Support for MIPS simulator (MIPSsim)'
366 select DMA_NONCOHERENT 333 select DMA_NONCOHERENT
367 select HW_HAS_PCI
368 select IRQ_CPU 334 select IRQ_CPU
369 select IRQ_CPU_RM7K 335 select SYS_HAS_CPU_MIPS32_R1
370 select MIPS_GT64120 336 select SYS_HAS_CPU_MIPS32_R2
371 select RM7000_CPU_SCACHE
372 select SWAP_IO_SPACE
373 select SYS_SUPPORTS_32BIT_KERNEL 337 select SYS_SUPPORTS_32BIT_KERNEL
374 select SYS_SUPPORTS_64BIT_KERNEL 338 select SYS_SUPPORTS_BIG_ENDIAN
339 select SYS_SUPPORTS_LITTLE_ENDIAN
375 help 340 help
376 The Ocelot is a MIPS-based Single Board Computer (SBC) made by 341 This option enables support for MIPS Technologies MIPSsim software
377 Momentum Computer <http://www.momenco.com/>. 342 emulator.
378 343
379config MOMENCO_OCELOT_G 344config MOMENCO_JAGUAR_ATX
380 bool "Support for Momentum Ocelot-G board" 345 bool "Support for Momentum Jaguar board"
346 select BOOT_ELF32
381 select DMA_NONCOHERENT 347 select DMA_NONCOHERENT
382 select HW_HAS_PCI 348 select HW_HAS_PCI
383 select IRQ_CPU 349 select IRQ_CPU
384 select IRQ_CPU_RM7K 350 select IRQ_CPU_RM7K
351 select IRQ_MV64340
352 select LIMITED_DMA
385 select PCI_MARVELL 353 select PCI_MARVELL
386 select RM7000_CPU_SCACHE 354 select RM7000_CPU_SCACHE
387 select SWAP_IO_SPACE 355 select SWAP_IO_SPACE
356 select SYS_HAS_CPU_RM9000
388 select SYS_SUPPORTS_32BIT_KERNEL 357 select SYS_SUPPORTS_32BIT_KERNEL
389 select SYS_SUPPORTS_64BIT_KERNEL 358 select SYS_SUPPORTS_64BIT_KERNEL
359 select SYS_SUPPORTS_BIG_ENDIAN
390 help 360 help
391 The Ocelot is a MIPS-based Single Board Computer (SBC) made by 361 The Jaguar ATX is a MIPS-based Single Board Computer (SBC) made by
392 Momentum Computer <http://www.momenco.com/>. 362 Momentum Computer <http://www.momenco.com/>.
393 363
394config MOMENCO_OCELOT_C 364config MOMENCO_OCELOT
395 bool "Support for Momentum Ocelot-C board" 365 bool "Support for Momentum Ocelot board"
396 select DMA_NONCOHERENT 366 select DMA_NONCOHERENT
397 select HW_HAS_PCI 367 select HW_HAS_PCI
398 select IRQ_CPU 368 select IRQ_CPU
399 select IRQ_MV64340 369 select IRQ_CPU_RM7K
400 select PCI_MARVELL 370 select MIPS_GT64120
401 select RM7000_CPU_SCACHE 371 select RM7000_CPU_SCACHE
402 select SWAP_IO_SPACE 372 select SWAP_IO_SPACE
373 select SYS_HAS_CPU_RM7000
403 select SYS_SUPPORTS_32BIT_KERNEL 374 select SYS_SUPPORTS_32BIT_KERNEL
404 select SYS_SUPPORTS_64BIT_KERNEL 375 select SYS_SUPPORTS_64BIT_KERNEL
376 select SYS_SUPPORTS_BIG_ENDIAN
405 help 377 help
406 The Ocelot is a MIPS-based Single Board Computer (SBC) made by 378 The Ocelot is a MIPS-based Single Board Computer (SBC) made by
407 Momentum Computer <http://www.momenco.com/>. 379 Momentum Computer <http://www.momenco.com/>.
@@ -417,80 +389,95 @@ config MOMENCO_OCELOT_3
417 select PCI_MARVELL 389 select PCI_MARVELL
418 select RM7000_CPU_SCACHE 390 select RM7000_CPU_SCACHE
419 select SWAP_IO_SPACE 391 select SWAP_IO_SPACE
392 select SYS_HAS_CPU_RM9000
420 select SYS_SUPPORTS_32BIT_KERNEL 393 select SYS_SUPPORTS_32BIT_KERNEL
421 select SYS_SUPPORTS_64BIT_KERNEL 394 select SYS_SUPPORTS_64BIT_KERNEL
395 select SYS_SUPPORTS_BIG_ENDIAN
422 help 396 help
423 The Ocelot-3 is based off Discovery III System Controller and 397 The Ocelot-3 is based off Discovery III System Controller and
424 PMC-Sierra Rm79000 core. 398 PMC-Sierra Rm79000 core.
425 399
426config MOMENCO_JAGUAR_ATX 400config MOMENCO_OCELOT_C
427 bool "Support for Momentum Jaguar board" 401 bool "Support for Momentum Ocelot-C board"
428 select BOOT_ELF32
429 select DMA_NONCOHERENT 402 select DMA_NONCOHERENT
430 select HW_HAS_PCI 403 select HW_HAS_PCI
431 select IRQ_CPU 404 select IRQ_CPU
432 select IRQ_CPU_RM7K
433 select IRQ_MV64340 405 select IRQ_MV64340
434 select LIMITED_DMA
435 select PCI_MARVELL 406 select PCI_MARVELL
436 select RM7000_CPU_SCACHE 407 select RM7000_CPU_SCACHE
437 select SWAP_IO_SPACE 408 select SWAP_IO_SPACE
409 select SYS_HAS_CPU_RM7000
438 select SYS_SUPPORTS_32BIT_KERNEL 410 select SYS_SUPPORTS_32BIT_KERNEL
439 select SYS_SUPPORTS_64BIT_KERNEL 411 select SYS_SUPPORTS_64BIT_KERNEL
412 select SYS_SUPPORTS_BIG_ENDIAN
440 help 413 help
441 The Jaguar ATX is a MIPS-based Single Board Computer (SBC) made by 414 The Ocelot is a MIPS-based Single Board Computer (SBC) made by
442 Momentum Computer <http://www.momenco.com/>. 415 Momentum Computer <http://www.momenco.com/>.
443 416
444config JAGUAR_DMALOW 417config MOMENCO_OCELOT_G
445 bool "Low DMA Mode" 418 bool "Support for Momentum Ocelot-G board"
446 depends on MOMENCO_JAGUAR_ATX 419 select DMA_NONCOHERENT
447 help
448 Select to Y if jump JP5 is set on your board, N otherwise. Normally
449 the jumper is set, so if you feel unsafe, just say Y.
450
451config PMC_YOSEMITE
452 bool "Support for PMC-Sierra Yosemite eval board"
453 select DMA_COHERENT
454 select HW_HAS_PCI 420 select HW_HAS_PCI
455 select IRQ_CPU 421 select IRQ_CPU
456 select IRQ_CPU_RM7K 422 select IRQ_CPU_RM7K
457 select IRQ_CPU_RM9K 423 select PCI_MARVELL
424 select RM7000_CPU_SCACHE
458 select SWAP_IO_SPACE 425 select SWAP_IO_SPACE
426 select SYS_HAS_CPU_RM7000
459 select SYS_SUPPORTS_32BIT_KERNEL 427 select SYS_SUPPORTS_32BIT_KERNEL
460 select SYS_SUPPORTS_64BIT_KERNEL 428 select SYS_SUPPORTS_64BIT_KERNEL
429 select SYS_SUPPORTS_BIG_ENDIAN
461 help 430 help
462 Yosemite is an evaluation board for the RM9000x2 processor 431 The Ocelot is a MIPS-based Single Board Computer (SBC) made by
463 manufactured by PMC-Sierra 432 Momentum Computer <http://www.momenco.com/>.
464 433
465config HYPERTRANSPORT 434config MIPS_XXS1500
466 bool "Hypertransport Support for PMC-Sierra Yosemite" 435 bool "Support for MyCable XXS1500 board"
467 depends on PMC_YOSEMITE 436 select DMA_NONCOHERENT
437 select SOC_AU1500
438 select SYS_SUPPORTS_LITTLE_ENDIAN
439
440config PNX8550_V2PCI
441 bool "Support for Philips PNX8550 based Viper2-PCI board"
442 select PNX8550
443 select SYS_SUPPORTS_LITTLE_ENDIAN
444
445config PNX8550_JBS
446 bool "Support for Philips PNX8550 based JBS board"
447 select PNX8550
448 select SYS_SUPPORTS_LITTLE_ENDIAN
468 449
469config DDB5074 450config DDB5074
470 bool "Support for NEC DDB Vrc-5074 (EXPERIMENTAL)" 451 bool "Support for NEC DDB Vrc-5074 (EXPERIMENTAL)"
471 depends on EXPERIMENTAL 452 depends on EXPERIMENTAL
453 select DDB5XXX_COMMON
472 select DMA_NONCOHERENT 454 select DMA_NONCOHERENT
473 select HAVE_STD_PC_SERIAL_PORT 455 select HAVE_STD_PC_SERIAL_PORT
474 select HW_HAS_PCI 456 select HW_HAS_PCI
475 select IRQ_CPU 457 select IRQ_CPU
476 select I8259 458 select I8259
477 select ISA 459 select ISA
460 select SYS_HAS_CPU_R5000
478 select SYS_SUPPORTS_32BIT_KERNEL 461 select SYS_SUPPORTS_32BIT_KERNEL
479 select SYS_SUPPORTS_64BIT_KERNEL 462 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
463 select SYS_SUPPORTS_LITTLE_ENDIAN
480 help 464 help
481 This enables support for the VR5000-based NEC DDB Vrc-5074 465 This enables support for the VR5000-based NEC DDB Vrc-5074
482 evaluation board. 466 evaluation board.
483 467
484config DDB5476 468config DDB5476
485 bool "Support for NEC DDB Vrc-5476" 469 bool "Support for NEC DDB Vrc-5476"
470 select DDB5XXX_COMMON
486 select DMA_NONCOHERENT 471 select DMA_NONCOHERENT
487 select HAVE_STD_PC_SERIAL_PORT 472 select HAVE_STD_PC_SERIAL_PORT
488 select HW_HAS_PCI 473 select HW_HAS_PCI
489 select IRQ_CPU 474 select IRQ_CPU
490 select I8259 475 select I8259
491 select ISA 476 select ISA
477 select SYS_HAS_CPU_R5432
492 select SYS_SUPPORTS_32BIT_KERNEL 478 select SYS_SUPPORTS_32BIT_KERNEL
493 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL 479 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
480 select SYS_SUPPORTS_LITTLE_ENDIAN
494 help 481 help
495 This enables support for the R5432-based NEC DDB Vrc-5476 482 This enables support for the R5432-based NEC DDB Vrc-5476
496 evaluation board. 483 evaluation board.
@@ -501,12 +488,15 @@ config DDB5476
501 488
502config DDB5477 489config DDB5477
503 bool "Support for NEC DDB Vrc-5477" 490 bool "Support for NEC DDB Vrc-5477"
491 select DDB5XXX_COMMON
504 select DMA_NONCOHERENT 492 select DMA_NONCOHERENT
505 select HW_HAS_PCI 493 select HW_HAS_PCI
506 select I8259 494 select I8259
507 select IRQ_CPU 495 select IRQ_CPU
496 select SYS_HAS_CPU_R5432
508 select SYS_SUPPORTS_32BIT_KERNEL 497 select SYS_SUPPORTS_32BIT_KERNEL
509 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL 498 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
499 select SYS_SUPPORTS_LITTLE_ENDIAN
510 help 500 help
511 This enables support for the R5432-based NEC DDB Vrc-5477, 501 This enables support for the R5432-based NEC DDB Vrc-5477,
512 or Rockhopper/SolutionGear boards with R5432/R5500 CPUs. 502 or Rockhopper/SolutionGear boards with R5432/R5500 CPUs.
@@ -514,10 +504,28 @@ config DDB5477
514 Features : kernel debugging, serial terminal, NFS root fs, on-board 504 Features : kernel debugging, serial terminal, NFS root fs, on-board
515 ether port USB, AC97, PCI, etc. 505 ether port USB, AC97, PCI, etc.
516 506
517config DDB5477_BUS_FREQUENCY 507config MACH_VR41XX
518 int "bus frequency (in kHZ, 0 for auto-detect)" 508 bool "Support for NEC VR4100 series based machines"
519 depends on DDB5477 509 select SYS_HAS_CPU_VR41XX
520 default 0 510 select SYS_SUPPORTS_32BIT_KERNEL
511 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
512
513config PMC_YOSEMITE
514 bool "Support for PMC-Sierra Yosemite eval board"
515 select DMA_COHERENT
516 select HW_HAS_PCI
517 select IRQ_CPU
518 select IRQ_CPU_RM7K
519 select IRQ_CPU_RM9K
520 select SWAP_IO_SPACE
521 select SYS_HAS_CPU_RM9000
522 select SYS_SUPPORTS_32BIT_KERNEL
523 select SYS_SUPPORTS_64BIT_KERNEL
524 select SYS_SUPPORTS_BIG_ENDIAN
525 select SYS_SUPPORTS_HIGHMEM
526 help
527 Yosemite is an evaluation board for the RM9000x2 processor
528 manufactured by PMC-Sierra.
521 529
522config QEMU 530config QEMU
523 bool "Support for Qemu" 531 bool "Support for Qemu"
@@ -527,15 +535,16 @@ config QEMU
527 select I8259 535 select I8259
528 select ISA 536 select ISA
529 select SWAP_IO_SPACE 537 select SWAP_IO_SPACE
538 select SYS_HAS_CPU_MIPS32_R1
530 select SYS_SUPPORTS_32BIT_KERNEL 539 select SYS_SUPPORTS_32BIT_KERNEL
531 select SYS_SUPPORTS_BIG_ENDIAN 540 select SYS_SUPPORTS_BIG_ENDIAN
532 help 541 help
533 Qemu is a software emulator which among other architectures also 542 Qemu is a software emulator which among other architectures also
534 can simulate a MIPS32 4Kc system. This patch adds support for the 543 can simulate a MIPS32 4Kc system. This patch adds support for the
535 system architecture that currently is being simulated by Qemu. It 544 system architecture that currently is being simulated by Qemu. It
536 will eventually be removed again when Qemu has the capability to 545 will eventually be removed again when Qemu has the capability to
537 simulate actual MIPS hardware platforms. More information on Qemu 546 simulate actual MIPS hardware platforms. More information on Qemu
538 can be found at http://www.linux-mips.org/wiki/Qemu. 547 can be found at http://www.linux-mips.org/wiki/Qemu.
539 548
540config SGI_IP22 549config SGI_IP22
541 bool "Support for SGI IP22 (Indy/Indigo2)" 550 bool "Support for SGI IP22 (Indy/Indigo2)"
@@ -543,11 +552,15 @@ config SGI_IP22
543 select ARC32 552 select ARC32
544 select BOOT_ELF32 553 select BOOT_ELF32
545 select DMA_NONCOHERENT 554 select DMA_NONCOHERENT
555 select HW_HAS_EISA
546 select IP22_CPU_SCACHE 556 select IP22_CPU_SCACHE
547 select IRQ_CPU 557 select IRQ_CPU
548 select SWAP_IO_SPACE 558 select SWAP_IO_SPACE
559 select SYS_HAS_CPU_R4X00
560 select SYS_HAS_CPU_R5000
549 select SYS_SUPPORTS_32BIT_KERNEL 561 select SYS_SUPPORTS_32BIT_KERNEL
550 select SYS_SUPPORTS_64BIT_KERNEL 562 select SYS_SUPPORTS_64BIT_KERNEL
563 select SYS_SUPPORTS_BIG_ENDIAN
551 help 564 help
552 This are the SGI Indy, Challenge S and Indigo2, as well as certain 565 This are the SGI Indy, Challenge S and Indigo2, as well as certain
553 OEM variants like the Tandem CMN B006S. To compile a Linux kernel 566 OEM variants like the Tandem CMN B006S. To compile a Linux kernel
@@ -557,70 +570,18 @@ config SGI_IP27
557 bool "Support for SGI IP27 (Origin200/2000)" 570 bool "Support for SGI IP27 (Origin200/2000)"
558 select ARC 571 select ARC
559 select ARC64 572 select ARC64
573 select BOOT_ELF64
560 select DMA_IP27 574 select DMA_IP27
561 select HW_HAS_PCI 575 select HW_HAS_PCI
562 select PCI_DOMAINS 576 select PCI_DOMAINS
577 select SYS_HAS_CPU_R10000
563 select SYS_SUPPORTS_64BIT_KERNEL 578 select SYS_SUPPORTS_64BIT_KERNEL
579 select SYS_SUPPORTS_BIG_ENDIAN
564 help 580 help
565 This are the SGI Origin 200, Origin 2000 and Onyx 2 Graphics 581 This are the SGI Origin 200, Origin 2000 and Onyx 2 Graphics
566 workstations. To compile a Linux kernel that runs on these, say Y 582 workstations. To compile a Linux kernel that runs on these, say Y
567 here. 583 here.
568 584
569#config SGI_SN0_XXL
570# bool "IP27 XXL"
571# depends on SGI_IP27
572# This options adds support for userspace processes upto 16TB size.
573# Normally the limit is just .5TB.
574
575config SGI_SN0_N_MODE
576 bool "IP27 N-Mode"
577 depends on SGI_IP27
578 help
579 The nodes of Origin 200, Origin 2000 and Onyx 2 systems can be
580 configured in either N-Modes which allows for more nodes or M-Mode
581 which allows for more memory. Your system is most probably
582 running in M-Mode, so you should say N here.
583
584config ARCH_DISCONTIGMEM_ENABLE
585 bool
586 default y if SGI_IP27
587 help
588 Say Y to upport efficient handling of discontiguous physical memory,
589 for architectures which are either NUMA (Non-Uniform Memory Access)
590 or have huge holes in the physical address space for other reasons.
591 See <file:Documentation/vm/numa> for more.
592
593config NUMA
594 bool "NUMA Support"
595 depends on SGI_IP27
596 help
597 Say Y to compile the kernel to support NUMA (Non-Uniform Memory
598 Access). This option is for configuring high-end multiprocessor
599 server machines. If in doubt, say N.
600
601config MAPPED_KERNEL
602 bool "Mapped kernel support"
603 depends on SGI_IP27
604 help
605 Change the way a Linux kernel is loaded into memory on a MIPS64
606 machine. This is required in order to support text replication and
607 NUMA. If you need to understand it, read the source code.
608
609config REPLICATE_KTEXT
610 bool "Kernel text replication support"
611 depends on SGI_IP27
612 help
613 Say Y here to enable replicating the kernel text across multiple
614 nodes in a NUMA cluster. This trades memory for speed.
615
616config REPLICATE_EXHANDLERS
617 bool "Exception handler replication support"
618 depends on SGI_IP27
619 help
620 Say Y here to enable replicating the kernel exception handlers
621 across multiple nodes in a NUMA cluster. This trades memory for
622 speed.
623
624config SGI_IP32 585config SGI_IP32
625 bool "Support for SGI IP32 (O2) (EXPERIMENTAL)" 586 bool "Support for SGI IP32 (O2) (EXPERIMENTAL)"
626 depends on EXPERIMENTAL 587 depends on EXPERIMENTAL
@@ -633,353 +594,152 @@ config SGI_IP32
633 select HW_HAS_PCI 594 select HW_HAS_PCI
634 select R5000_CPU_SCACHE 595 select R5000_CPU_SCACHE
635 select RM7000_CPU_SCACHE 596 select RM7000_CPU_SCACHE
597 select SYS_HAS_CPU_R5000
598 select SYS_HAS_CPU_R10000 if BROKEN
599 select SYS_HAS_CPU_RM7000
636 select SYS_SUPPORTS_64BIT_KERNEL 600 select SYS_SUPPORTS_64BIT_KERNEL
601 select SYS_SUPPORTS_BIG_ENDIAN
637 help 602 help
638 If you want this kernel to run on SGI O2 workstation, say Y here. 603 If you want this kernel to run on SGI O2 workstation, say Y here.
639 604
640config SOC_AU1X00 605config SIBYTE_BIGSUR
641 bool "Support for AMD/Alchemy Au1X00 SOCs" 606 bool "Support for Sibyte BigSur"
642 select SYS_SUPPORTS_32BIT_KERNEL
643
644choice
645 prompt "Au1X00 SOC Type"
646 depends on SOC_AU1X00
647 help
648 Say Y here to enable support for one of three AMD/Alchemy
649 SOCs. For additional documentation see www.amd.com.
650
651config SOC_AU1000
652 bool "SOC_AU1000"
653config SOC_AU1100
654 bool "SOC_AU1100"
655config SOC_AU1500
656 bool "SOC_AU1500"
657config SOC_AU1550
658 bool "SOC_AU1550"
659
660endchoice
661
662choice
663 prompt "AMD/Alchemy Au1x00 board support"
664 depends on SOC_AU1X00
665 help
666 These are evaluation boards built by AMD/Alchemy to
667 showcase their Au1X00 Internet Edge Processors. The SOC design
668 is based on the MIPS32 architecture running at 266/400/500MHz
669 with many integrated peripherals. Further information can be
670 found at their website, <http://www.amd.com/>. Say Y here if you
671 wish to build a kernel for this platform.
672
673config MIPS_PB1000
674 bool "PB1000 board"
675 depends on SOC_AU1000
676 select DMA_NONCOHERENT
677 select HW_HAS_PCI
678 select SWAP_IO_SPACE
679
680config MIPS_PB1100
681 bool "PB1100 board"
682 depends on SOC_AU1100
683 select DMA_NONCOHERENT
684 select HW_HAS_PCI
685 select SWAP_IO_SPACE
686
687config MIPS_PB1500
688 bool "PB1500 board"
689 depends on SOC_AU1500
690 select DMA_COHERENT
691 select HW_HAS_PCI
692
693config MIPS_PB1550
694 bool "PB1550 board"
695 depends on SOC_AU1550
696 select DMA_COHERENT
697 select HW_HAS_PCI
698 select MIPS_DISABLE_OBSOLETE_IDE
699
700config MIPS_DB1000
701 bool "DB1000 board"
702 depends on SOC_AU1000
703 select DMA_NONCOHERENT
704 select HW_HAS_PCI
705
706config MIPS_DB1100
707 bool "DB1100 board"
708 depends on SOC_AU1100
709 select DMA_NONCOHERENT
710
711config MIPS_DB1500
712 bool "DB1500 board"
713 depends on SOC_AU1500
714 select DMA_COHERENT
715 select HW_HAS_PCI
716 select MIPS_DISABLE_OBSOLETE_IDE
717
718config MIPS_DB1550
719 bool "DB1550 board"
720 depends on SOC_AU1550
721 select HW_HAS_PCI
722 select DMA_COHERENT
723 select MIPS_DISABLE_OBSOLETE_IDE
724
725config MIPS_BOSPORUS
726 bool "Bosporus board"
727 depends on SOC_AU1500
728 select DMA_NONCOHERENT
729
730config MIPS_MIRAGE
731 bool "Mirage board"
732 depends on SOC_AU1500
733 select DMA_NONCOHERENT
734
735config MIPS_XXS1500
736 bool "MyCable XXS1500 board"
737 depends on SOC_AU1500
738 select DMA_NONCOHERENT
739
740config MIPS_MTX1
741 bool "4G Systems MTX-1 board"
742 depends on SOC_AU1500
743 select HW_HAS_PCI
744 select DMA_NONCOHERENT
745
746endchoice
747
748config SIBYTE_SB1xxx_SOC
749 bool "Support for Broadcom BCM1xxx SOCs (EXPERIMENTAL)"
750 depends on EXPERIMENTAL
751 select BOOT_ELF32 607 select BOOT_ELF32
752 select DMA_COHERENT 608 select DMA_COHERENT
609 select PCI_DOMAINS
610 select SIBYTE_BCM1x80
753 select SWAP_IO_SPACE 611 select SWAP_IO_SPACE
754 select SYS_SUPPORTS_32BIT_KERNEL 612 select SYS_HAS_CPU_SB1
755 select SYS_SUPPORTS_64BIT_KERNEL 613 select SYS_SUPPORTS_BIG_ENDIAN
756 614 select SYS_SUPPORTS_LITTLE_ENDIAN
757choice
758 prompt "BCM1xxx SOC-based board"
759 depends on SIBYTE_SB1xxx_SOC
760 default SIBYTE_SWARM
761 help
762 Enable support for boards based on the SiByte line of SOCs
763 from Broadcom. There are configurations for the known
764 evaluation boards, or you can choose "Other" and add your
765 own board support code.
766 615
767config SIBYTE_SWARM 616config SIBYTE_SWARM
768 bool "BCM91250A-SWARM" 617 bool "Support for Sibyte BCM91250A-SWARM"
618 select BOOT_ELF32
619 select DMA_COHERENT
769 select SIBYTE_SB1250 620 select SIBYTE_SB1250
621 select SWAP_IO_SPACE
622 select SYS_HAS_CPU_SB1
623 select SYS_SUPPORTS_BIG_ENDIAN
624 select SYS_SUPPORTS_HIGHMEM
625 select SYS_SUPPORTS_LITTLE_ENDIAN
770 626
771config SIBYTE_SENTOSA 627config SIBYTE_SENTOSA
772 bool "BCM91250E-Sentosa" 628 bool "Support for Sibyte BCM91250E-Sentosa"
629 depends on EXPERIMENTAL
630 select BOOT_ELF32
631 select DMA_COHERENT
773 select SIBYTE_SB1250 632 select SIBYTE_SB1250
633 select SWAP_IO_SPACE
634 select SYS_HAS_CPU_SB1
635 select SYS_SUPPORTS_BIG_ENDIAN
636 select SYS_SUPPORTS_LITTLE_ENDIAN
774 637
775config SIBYTE_RHONE 638config SIBYTE_RHONE
776 bool "BCM91125E-Rhone" 639 bool "Support for Sibyte BCM91125E-Rhone"
640 depends on EXPERIMENTAL
641 select BOOT_ELF32
642 select DMA_COHERENT
777 select SIBYTE_BCM1125H 643 select SIBYTE_BCM1125H
644 select SWAP_IO_SPACE
645 select SYS_HAS_CPU_SB1
646 select SYS_SUPPORTS_BIG_ENDIAN
647 select SYS_SUPPORTS_LITTLE_ENDIAN
778 648
779config SIBYTE_CARMEL 649config SIBYTE_CARMEL
780 bool "BCM91120x-Carmel" 650 bool "Support for Sibyte BCM91120x-Carmel"
651 depends on EXPERIMENTAL
652 select BOOT_ELF32
653 select DMA_COHERENT
781 select SIBYTE_BCM1120 654 select SIBYTE_BCM1120
655 select SWAP_IO_SPACE
656 select SYS_HAS_CPU_SB1
657 select SYS_SUPPORTS_BIG_ENDIAN
658 select SYS_SUPPORTS_LITTLE_ENDIAN
782 659
783config SIBYTE_PTSWARM 660config SIBYTE_PTSWARM
784 bool "BCM91250PT-PTSWARM" 661 bool "Support for Sibyte BCM91250PT-PTSWARM"
662 depends on EXPERIMENTAL
663 select BOOT_ELF32
664 select DMA_COHERENT
785 select SIBYTE_SB1250 665 select SIBYTE_SB1250
666 select SWAP_IO_SPACE
667 select SYS_HAS_CPU_SB1
668 select SYS_SUPPORTS_BIG_ENDIAN
669 select SYS_SUPPORTS_HIGHMEM
670 select SYS_SUPPORTS_LITTLE_ENDIAN
786 671
787config SIBYTE_LITTLESUR 672config SIBYTE_LITTLESUR
788 bool "BCM91250C2-LittleSur" 673 bool "Support for Sibyte BCM91250C2-LittleSur"
674 depends on EXPERIMENTAL
675 select BOOT_ELF32
676 select DMA_COHERENT
789 select SIBYTE_SB1250 677 select SIBYTE_SB1250
678 select SWAP_IO_SPACE
679 select SYS_HAS_CPU_SB1
680 select SYS_SUPPORTS_BIG_ENDIAN
681 select SYS_SUPPORTS_HIGHMEM
682 select SYS_SUPPORTS_LITTLE_ENDIAN
790 683
791config SIBYTE_CRHINE 684config SIBYTE_CRHINE
792 bool "BCM91120C-CRhine" 685 bool "Support for Sibyte BCM91120C-CRhine"
686 depends on EXPERIMENTAL
687 select BOOT_ELF32
688 select DMA_COHERENT
793 select SIBYTE_BCM1120 689 select SIBYTE_BCM1120
690 select SWAP_IO_SPACE
691 select SYS_HAS_CPU_SB1
692 select SYS_SUPPORTS_BIG_ENDIAN
693 select SYS_SUPPORTS_LITTLE_ENDIAN
794 694
795config SIBYTE_CRHONE 695config SIBYTE_CRHONE
796 bool "BCM91125C-CRhone" 696 bool "Support for Sibyte BCM91125C-CRhone"
797 select SIBYTE_BCM1125 697 depends on EXPERIMENTAL
798 698 select BOOT_ELF32
799config SIBYTE_UNKNOWN 699 select DMA_COHERENT
800 bool "Other"
801
802endchoice
803
804config SIBYTE_BOARD
805 bool
806 depends on SIBYTE_SB1xxx_SOC && !SIBYTE_UNKNOWN
807 default y
808
809choice
810 prompt "BCM1xxx SOC Type"
811 depends on SIBYTE_UNKNOWN
812 default SIBYTE_UNK_BCM1250
813 help
814 Since you haven't chosen a known evaluation board from
815 Broadcom, you must explicitly pick the SOC this kernel is
816 targetted for.
817
818config SIBYTE_UNK_BCM1250
819 bool "BCM1250"
820 select SIBYTE_SB1250
821
822config SIBYTE_UNK_BCM1120
823 bool "BCM1120"
824 select SIBYTE_BCM1120
825
826config SIBYTE_UNK_BCM1125
827 bool "BCM1125"
828 select SIBYTE_BCM1125 700 select SIBYTE_BCM1125
829 701 select SWAP_IO_SPACE
830config SIBYTE_UNK_BCM1125H 702 select SYS_HAS_CPU_SB1
831 bool "BCM1125H" 703 select SYS_SUPPORTS_BIG_ENDIAN
832 select SIBYTE_BCM1125H 704 select SYS_SUPPORTS_HIGHMEM
833 705 select SYS_SUPPORTS_LITTLE_ENDIAN
834endchoice
835
836config SIBYTE_SB1250
837 bool
838 select HW_HAS_PCI
839
840config SIBYTE_BCM1120
841 bool
842 select SIBYTE_BCM112X
843
844config SIBYTE_BCM1125
845 bool
846 select HW_HAS_PCI
847 select SIBYTE_BCM112X
848
849config SIBYTE_BCM1125H
850 bool
851 select HW_HAS_PCI
852 select SIBYTE_BCM112X
853
854config SIBYTE_BCM112X
855 bool
856
857choice
858 prompt "SiByte SOC Stepping"
859 depends on SIBYTE_SB1xxx_SOC
860
861config CPU_SB1_PASS_1
862 bool "1250 Pass1"
863 depends on SIBYTE_SB1250
864 select CPU_HAS_PREFETCH
865
866config CPU_SB1_PASS_2_1250
867 bool "1250 An"
868 depends on SIBYTE_SB1250
869 select CPU_SB1_PASS_2
870 help
871 Also called BCM1250 Pass 2
872
873config CPU_SB1_PASS_2_2
874 bool "1250 Bn"
875 depends on SIBYTE_SB1250
876 select CPU_HAS_PREFETCH
877 help
878 Also called BCM1250 Pass 2.2
879
880config CPU_SB1_PASS_4
881 bool "1250 Cn"
882 depends on SIBYTE_SB1250
883 select CPU_HAS_PREFETCH
884 help
885 Also called BCM1250 Pass 3
886
887config CPU_SB1_PASS_2_112x
888 bool "112x Hybrid"
889 depends on SIBYTE_BCM112X
890 select CPU_SB1_PASS_2
891
892config CPU_SB1_PASS_3
893 bool "112x An"
894 depends on SIBYTE_BCM112X
895 select CPU_HAS_PREFETCH
896
897endchoice
898
899config CPU_SB1_PASS_2
900 bool
901
902config SIBYTE_HAS_LDT
903 bool
904 depends on PCI && (SIBYTE_SB1250 || SIBYTE_BCM1125H)
905 default y
906
907config SIMULATION
908 bool "Running under simulation"
909 depends on SIBYTE_SB1xxx_SOC
910 help
911 Build a kernel suitable for running under the GDB simulator.
912 Primarily adjusts the kernel's notion of time.
913
914config SIBYTE_CFE
915 bool "Booting from CFE"
916 depends on SIBYTE_SB1xxx_SOC
917 help
918 Make use of the CFE API for enumerating available memory,
919 controlling secondary CPUs, and possibly console output.
920
921config SIBYTE_CFE_CONSOLE
922 bool "Use firmware console"
923 depends on SIBYTE_CFE
924 help
925 Use the CFE API's console write routines during boot. Other console
926 options (VT console, sb1250 duart console, etc.) should not be
927 configured.
928
929config SIBYTE_STANDALONE
930 bool
931 depends on SIBYTE_SB1xxx_SOC && !SIBYTE_CFE
932 default y
933
934config SIBYTE_STANDALONE_RAM_SIZE
935 int "Memory size (in megabytes)"
936 depends on SIBYTE_STANDALONE
937 default "32"
938
939config SIBYTE_BUS_WATCHER
940 bool "Support for Bus Watcher statistics"
941 depends on SIBYTE_SB1xxx_SOC
942 help
943 Handle and keep statistics on the bus error interrupts (COR_ECC,
944 BAD_ECC, IO_BUS).
945
946config SIBYTE_BW_TRACE
947 bool "Capture bus trace before bus error"
948 depends on SIBYTE_BUS_WATCHER
949 help
950 Run a continuous bus trace, dumping the raw data as soon as
951 a ZBbus error is detected. Cannot work if ZBbus profiling
952 is turned on, and also will interfere with JTAG-based trace
953 buffer activity. Raw buffer data is dumped to console, and
954 must be processed off-line.
955
956config SIBYTE_SB1250_PROF
957 bool "Support for SB1/SOC profiling - SB1/SCD perf counters"
958 depends on SIBYTE_SB1xxx_SOC
959
960config SIBYTE_TBPROF
961 bool "Support for ZBbus profiling"
962 depends on SIBYTE_SB1xxx_SOC
963 706
964config SNI_RM200_PCI 707config SNI_RM200_PCI
965 bool "Support for SNI RM200 PCI" 708 bool "Support for SNI RM200 PCI"
966 select ARC 709 select ARC
967 select ARC32 710 select ARC32
711 select ARCH_MAY_HAVE_PC_FDC
968 select BOOT_ELF32 712 select BOOT_ELF32
969 select DMA_NONCOHERENT 713 select DMA_NONCOHERENT
970 select GENERIC_ISA_DMA 714 select GENERIC_ISA_DMA
971 select HAVE_STD_PC_SERIAL_PORT 715 select HAVE_STD_PC_SERIAL_PORT
716 select HW_HAS_EISA
972 select HW_HAS_PCI 717 select HW_HAS_PCI
973 select I8259 718 select I8259
974 select ISA 719 select ISA
720 select SYS_HAS_CPU_R4X00
975 select SYS_SUPPORTS_32BIT_KERNEL 721 select SYS_SUPPORTS_32BIT_KERNEL
976 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL 722 select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
723 select SYS_SUPPORTS_BIG_ENDIAN if EXPERIMENTAL
724 select SYS_SUPPORTS_HIGHMEM
725 select SYS_SUPPORTS_LITTLE_ENDIAN
977 help 726 help
978 The SNI RM200 PCI was a MIPS-based platform manufactured by Siemens 727 The SNI RM200 PCI was a MIPS-based platform manufactured by Siemens
979 Nixdorf Informationssysteme (SNI), parent company of Pyramid 728 Nixdorf Informationssysteme (SNI), parent company of Pyramid
980 Technology and now in turn merged with Fujitsu. Say Y here to 729 Technology and now in turn merged with Fujitsu. Say Y here to
981 support this machine type. 730 support this machine type.
982 731
732config TOSHIBA_JMR3927
733 bool "Support for Toshiba JMR-TX3927 board"
734 select DMA_NONCOHERENT
735 select HW_HAS_PCI
736 select MIPS_TX3927
737 select SWAP_IO_SPACE
738 select SYS_HAS_CPU_TX39XX
739 select SYS_SUPPORTS_32BIT_KERNEL
740 select SYS_SUPPORTS_BIG_ENDIAN
741 select TOSHIBA_BOARDS
742
983config TOSHIBA_RBTX4927 743config TOSHIBA_RBTX4927
984 bool "Support for Toshiba TBTX49[23]7 board" 744 bool "Support for Toshiba TBTX49[23]7 board"
985 select DMA_NONCOHERENT 745 select DMA_NONCOHERENT
@@ -988,15 +748,51 @@ config TOSHIBA_RBTX4927
988 select I8259 748 select I8259
989 select ISA 749 select ISA
990 select SWAP_IO_SPACE 750 select SWAP_IO_SPACE
751 select SYS_HAS_CPU_TX49XX
991 select SYS_SUPPORTS_32BIT_KERNEL 752 select SYS_SUPPORTS_32BIT_KERNEL
992 select SYS_SUPPORTS_64BIT_KERNEL 753 select SYS_SUPPORTS_64BIT_KERNEL
754 select SYS_SUPPORTS_BIG_ENDIAN
755 select TOSHIBA_BOARDS
993 help 756 help
994 This Toshiba board is based on the TX4927 processor. Say Y here to 757 This Toshiba board is based on the TX4927 processor. Say Y here to
995 support this machine type 758 support this machine type
996 759
997config TOSHIBA_FPCIB0 760config TOSHIBA_RBTX4938
998 bool "FPCIB0 Backplane Support" 761 bool "Support for Toshiba RBTX4938 board"
999 depends on TOSHIBA_RBTX4927 762 select HAVE_STD_PC_SERIAL_PORT
763 select DMA_NONCOHERENT
764 select GENERIC_ISA_DMA
765 select HAS_TXX9_SERIAL
766 select HW_HAS_PCI
767 select I8259
768 select ISA
769 select SWAP_IO_SPACE
770 select SYS_HAS_CPU_TX49XX
771 select SYS_SUPPORTS_32BIT_KERNEL
772 select SYS_SUPPORTS_LITTLE_ENDIAN
773 select SYS_SUPPORTS_BIG_ENDIAN
774 select TOSHIBA_BOARDS
775 help
776 This Toshiba board is based on the TX4938 processor. Say Y here to
777 support this machine type
778
779endchoice
780
781source "arch/mips/ddb5xxx/Kconfig"
782source "arch/mips/gt64120/ev64120/Kconfig"
783source "arch/mips/jazz/Kconfig"
784source "arch/mips/ite-boards/Kconfig"
785source "arch/mips/lasat/Kconfig"
786source "arch/mips/momentum/Kconfig"
787source "arch/mips/pmc-sierra/Kconfig"
788source "arch/mips/sgi-ip27/Kconfig"
789source "arch/mips/sibyte/Kconfig"
790source "arch/mips/tx4927/Kconfig"
791source "arch/mips/tx4938/Kconfig"
792source "arch/mips/vr41xx/Kconfig"
793source "arch/mips/philips/pnx8550/common/Kconfig"
794
795endmenu
1000 796
1001config RWSEM_GENERIC_SPINLOCK 797config RWSEM_GENERIC_SPINLOCK
1002 bool 798 bool
@@ -1014,8 +810,9 @@ config GENERIC_CALIBRATE_DELAY
1014# 810#
1015config ARC 811config ARC
1016 bool 812 bool
1017 depends on SNI_RM200_PCI || SGI_IP32 || SGI_IP27 || SGI_IP22 || MIPS_MAGNUM_4000 || OLIVETTI_M700 || ACER_PICA_61 813
1018 default y 814config ARCH_MAY_HAVE_PC_FDC
815 bool
1019 816
1020config DMA_COHERENT 817config DMA_COHERENT
1021 bool 818 bool
@@ -1034,51 +831,65 @@ config DMA_NONCOHERENT
1034config DMA_NEED_PCI_MAP_STATE 831config DMA_NEED_PCI_MAP_STATE
1035 bool 832 bool
1036 833
834config OWN_DMA
835 bool
836
1037config EARLY_PRINTK 837config EARLY_PRINTK
1038 bool 838 bool
1039 depends on MACH_DECSTATION
1040 default y
1041 839
1042config GENERIC_ISA_DMA 840config GENERIC_ISA_DMA
1043 bool 841 bool
1044 depends on SNI_RM200_PCI || MIPS_MAGNUM_4000 || OLIVETTI_M700 || ACER_PICA_61 || MIPS_MALTA
1045 default y
1046 842
1047config I8259 843config I8259
1048 bool 844 bool
1049 depends on SNI_RM200_PCI || DDB5477 || DDB5476 || DDB5074 || MACH_JAZZ || MIPS_MALTA || MIPS_COBALT
1050 default y
1051 845
1052config LIMITED_DMA 846config LIMITED_DMA
1053 bool 847 bool
1054 select HIGHMEM 848 select HIGHMEM
849 select SYS_SUPPORTS_HIGHMEM
1055 850
1056config MIPS_BONITO64 851config MIPS_BONITO64
1057 bool 852 bool
1058 depends on MIPS_ATLAS || MIPS_MALTA
1059 default y
1060 853
1061config MIPS_MSC 854config MIPS_MSC
1062 bool 855 bool
1063 depends on MIPS_ATLAS || MIPS_MALTA
1064 default y
1065 856
1066config MIPS_NILE4 857config MIPS_NILE4
1067 bool 858 bool
1068 depends on LASAT
1069 default y
1070 859
1071config MIPS_DISABLE_OBSOLETE_IDE 860config MIPS_DISABLE_OBSOLETE_IDE
1072 bool 861 bool
1073 862
1074config CPU_LITTLE_ENDIAN 863#
1075 bool "Generate little endian code" 864# Endianess selection. Suffiently obscure so many users don't know what to
1076 default y if ACER_PICA_61 || CASIO_E55 || DDB5074 || DDB5476 || DDB5477 || MACH_DECSTATION || IBM_WORKPAD || LASAT || MIPS_COBALT || MIPS_ITE8172 || MIPS_IVR || SOC_AU1X00 || OLIVETTI_M700 || SNI_RM200_PCI || VICTOR_MPC30X || ZAO_CAPCELLA 865# answer,so we try hard to limit the available choices. Also the use of a
1077 default n if MIPS_EV64120 || MIPS_EV96100 || MOMENCO_OCELOT || MOMENCO_OCELOT_G || SGI_IP22 || SGI_IP27 || SGI_IP32 || TOSHIBA_JMR3927 866# choice statement should be more obvious to the user.
867#
868choice
869 prompt "Endianess selection"
1078 help 870 help
1079 Some MIPS machines can be configured for either little or big endian 871 Some MIPS machines can be configured for either little or big endian
1080 byte order. These modes require different kernels. Say Y if your 872 byte order. These modes require different kernels and a different
1081 machine is little endian, N if it's a big endian machine. 873 Linux distribution. In general there is one prefered byteorder for a
874 particular system but some systems are just as commonly used in the
875 one or the other endianess.
876
877config CPU_BIG_ENDIAN
878 bool "Big endian"
879 depends on SYS_SUPPORTS_BIG_ENDIAN
880
881config CPU_LITTLE_ENDIAN
882 bool "Little endian"
883 depends on SYS_SUPPORTS_LITTLE_ENDIAN
884 help
885
886endchoice
887
888config SYS_SUPPORTS_BIG_ENDIAN
889 bool
890
891config SYS_SUPPORTS_LITTLE_ENDIAN
892 bool
1082 893
1083config IRQ_CPU 894config IRQ_CPU
1084 bool 895 bool
@@ -1086,42 +897,69 @@ config IRQ_CPU
1086config IRQ_CPU_RM7K 897config IRQ_CPU_RM7K
1087 bool 898 bool
1088 899
900config IRQ_CPU_RM9K
901 bool
902
1089config IRQ_MV64340 903config IRQ_MV64340
1090 bool 904 bool
1091 905
1092config DDB5XXX_COMMON 906config DDB5XXX_COMMON
1093 bool 907 bool
1094 depends on DDB5074 || DDB5476 || DDB5477
1095 default y
1096 908
1097config MIPS_BOARDS_GEN 909config MIPS_BOARDS_GEN
1098 bool 910 bool
1099 depends on MIPS_ATLAS || MIPS_MALTA || MIPS_SEAD
1100 default y
1101 911
1102config MIPS_GT64111 912config MIPS_GT64111
1103 bool 913 bool
1104 depends on MIPS_COBALT
1105 default y
1106 914
1107config MIPS_GT64120 915config MIPS_GT64120
1108 bool 916 bool
1109 depends on MIPS_EV64120 || MIPS_EV96100 || LASAT || MIPS_ATLAS || MIPS_MALTA || MOMENCO_OCELOT
1110 default y
1111 917
1112config MIPS_TX3927 918config MIPS_TX3927
1113 bool 919 bool
1114 depends on TOSHIBA_JMR3927
1115 select HAS_TXX9_SERIAL 920 select HAS_TXX9_SERIAL
1116 default y
1117 921
1118config PCI_MARVELL 922config PCI_MARVELL
1119 bool 923 bool
1120 924
1121config ITE_BOARD_GEN 925config ITE_BOARD_GEN
1122 bool 926 bool
1123 depends on MIPS_IVR || MIPS_ITE8172 927
1124 default y 928config SOC_AU1000
929 bool
930 select SOC_AU1X00
931
932config SOC_AU1100
933 bool
934 select SOC_AU1X00
935
936config SOC_AU1500
937 bool
938 select SOC_AU1X00
939
940config SOC_AU1550
941 bool
942 select SOC_AU1X00
943
944config SOC_AU1200
945 bool
946 select SOC_AU1X00
947
948config SOC_AU1X00
949 bool
950 select SYS_HAS_CPU_MIPS32_R1
951 select SYS_SUPPORTS_32BIT_KERNEL
952
953config PNX8550
954 bool
955 select SOC_PNX8550
956
957config SOC_PNX8550
958 bool
959 select DMA_NONCOHERENT
960 select HW_HAS_PCI
961 select SYS_HAS_CPU_R4X00
962 select SYS_SUPPORTS_32BIT_KERNEL
1125 963
1126config SWAP_IO_SPACE 964config SWAP_IO_SPACE
1127 bool 965 bool
@@ -1148,6 +986,9 @@ config SYSCLK_100
1148 986
1149endchoice 987endchoice
1150 988
989config ARC32
990 bool
991
1151config AU1X00_USB_DEVICE 992config AU1X00_USB_DEVICE
1152 bool 993 bool
1153 depends on MIPS_PB1500 || MIPS_PB1100 || MIPS_PB1000 994 depends on MIPS_PB1500 || MIPS_PB1100 || MIPS_PB1000
@@ -1155,11 +996,7 @@ config AU1X00_USB_DEVICE
1155 996
1156config MIPS_GT96100 997config MIPS_GT96100
1157 bool 998 bool
1158 depends on MIPS_EV96100 999 select MIPS_GT64120
1159 default y
1160 help
1161 Say Y here to support the Galileo Technology GT96100 communications
1162 controller card. There is a web page at <http://www.galileot.com/>.
1163 1000
1164config IT8172_CIR 1001config IT8172_CIR
1165 bool 1002 bool
@@ -1173,8 +1010,6 @@ config IT8712
1173 1010
1174config BOOT_ELF32 1011config BOOT_ELF32
1175 bool 1012 bool
1176 depends on MACH_DECSTATION || MIPS_ATLAS || MIPS_MALTA || MOMENCO_JAGUAR_ATX || MOMENCO_OCELOT_3 || SIBYTE_SB1xxx_SOC || SGI_IP32 || SGI_IP22 || SNI_RM200_PCI
1177 default y
1178 1013
1179config MIPS_L1_CACHE_SHIFT 1014config MIPS_L1_CACHE_SHIFT
1180 int 1015 int
@@ -1182,11 +1017,6 @@ config MIPS_L1_CACHE_SHIFT
1182 default "7" if SGI_IP27 1017 default "7" if SGI_IP27
1183 default "5" 1018 default "5"
1184 1019
1185config ARC32
1186 bool
1187 depends on MACH_JAZZ || SNI_RM200_PCI || SGI_IP22 || SGI_IP32
1188 default y
1189
1190config HAVE_STD_PC_SERIAL_PORT 1020config HAVE_STD_PC_SERIAL_PORT
1191 bool 1021 bool
1192 1022
@@ -1206,30 +1036,12 @@ config ARC_PROMLIB
1206 1036
1207config ARC64 1037config ARC64
1208 bool 1038 bool
1209 depends on SGI_IP27
1210 default y
1211 1039
1212config BOOT_ELF64 1040config BOOT_ELF64
1213 bool 1041 bool
1214 depends on SGI_IP27
1215 default y
1216
1217#config MAPPED_PCI_IO y
1218# bool
1219# depends on SGI_IP27
1220# default y
1221
1222config QL_ISP_A64
1223 bool
1224 depends on SGI_IP27
1225 default y
1226 1042
1227config TOSHIBA_BOARDS 1043config TOSHIBA_BOARDS
1228 bool 1044 bool
1229 depends on TOSHIBA_JMR3927 || TOSHIBA_RBTX4927
1230 default y
1231
1232endmenu
1233 1045
1234menu "CPU selection" 1046menu "CPU selection"
1235 1047
@@ -1237,18 +1049,69 @@ choice
1237 prompt "CPU type" 1049 prompt "CPU type"
1238 default CPU_R4X00 1050 default CPU_R4X00
1239 1051
1240config CPU_MIPS32 1052config CPU_MIPS32_R1
1241 bool "MIPS32" 1053 bool "MIPS32 Release 1"
1054 depends on SYS_HAS_CPU_MIPS32_R1
1055 select CPU_HAS_PREFETCH
1242 select CPU_SUPPORTS_32BIT_KERNEL 1056 select CPU_SUPPORTS_32BIT_KERNEL
1057 help
1058 Choose this option to build a kernel for release 1 or later of the
1059 MIPS32 architecture. Most modern embedded systems with a 32-bit
1060 MIPS processor are based on a MIPS32 processor. If you know the
1061 specific type of processor in your system, choose those that one
1062 otherwise CPU_MIPS32_R1 is a safe bet for any MIPS32 system.
1063 Release 2 of the MIPS32 architecture is available since several
1064 years so chances are you even have a MIPS32 Release 2 processor
1065 in which case you should choose CPU_MIPS32_R2 instead for better
1066 performance.
1067
1068config CPU_MIPS32_R2
1069 bool "MIPS32 Release 2"
1070 depends on SYS_HAS_CPU_MIPS32_R2
1071 select CPU_HAS_PREFETCH
1072 select CPU_SUPPORTS_32BIT_KERNEL
1073 help
1074 Choose this option to build a kernel for release 2 or later of the
1075 MIPS32 architecture. Most modern embedded systems with a 32-bit
1076 MIPS processor are based on a MIPS32 processor. If you know the
1077 specific type of processor in your system, choose those that one
1078 otherwise CPU_MIPS32_R1 is a safe bet for any MIPS32 system.
1243 1079
1244config CPU_MIPS64 1080config CPU_MIPS64_R1
1245 bool "MIPS64" 1081 bool "MIPS64 Release 1"
1082 depends on SYS_HAS_CPU_MIPS64_R1
1083 select CPU_HAS_PREFETCH
1246 select CPU_SUPPORTS_32BIT_KERNEL 1084 select CPU_SUPPORTS_32BIT_KERNEL
1247 select CPU_SUPPORTS_64BIT_KERNEL 1085 select CPU_SUPPORTS_64BIT_KERNEL
1086 help
1087 Choose this option to build a kernel for release 1 or later of the
1088 MIPS64 architecture. Many modern embedded systems with a 64-bit
1089 MIPS processor are based on a MIPS64 processor. If you know the
1090 specific type of processor in your system, choose those that one
1091 otherwise CPU_MIPS64_R1 is a safe bet for any MIPS64 system.
1092 Release 2 of the MIPS64 architecture is available since several
1093 years so chances are you even have a MIPS64 Release 2 processor
1094 in which case you should choose CPU_MIPS64_R2 instead for better
1095 performance.
1096
1097config CPU_MIPS64_R2
1098 bool "MIPS64 Release 2"
1099 depends on SYS_HAS_CPU_MIPS64_R2
1100 select CPU_HAS_PREFETCH
1101 select CPU_SUPPORTS_32BIT_KERNEL
1102 select CPU_SUPPORTS_64BIT_KERNEL
1103 help
1104 Choose this option to build a kernel for release 2 or later of the
1105 MIPS64 architecture. Many modern embedded systems with a 64-bit
1106 MIPS processor are based on a MIPS64 processor. If you know the
1107 specific type of processor in your system, choose those that one
1108 otherwise CPU_MIPS64_R1 is a safe bet for any MIPS64 system.
1248 1109
1249config CPU_R3000 1110config CPU_R3000
1250 bool "R3000" 1111 bool "R3000"
1112 depends on SYS_HAS_CPU_R3000
1251 select CPU_SUPPORTS_32BIT_KERNEL 1113 select CPU_SUPPORTS_32BIT_KERNEL
1114 select CPU_SUPPORTS_HIGHMEM
1252 help 1115 help
1253 Please make sure to pick the right CPU type. Linux/MIPS is not 1116 Please make sure to pick the right CPU type. Linux/MIPS is not
1254 designed to be generic, i.e. Kernels compiled for R3000 CPUs will 1117 designed to be generic, i.e. Kernels compiled for R3000 CPUs will
@@ -1259,20 +1122,23 @@ config CPU_R3000
1259 1122
1260config CPU_TX39XX 1123config CPU_TX39XX
1261 bool "R39XX" 1124 bool "R39XX"
1125 depends on SYS_HAS_CPU_TX39XX
1262 select CPU_SUPPORTS_32BIT_KERNEL 1126 select CPU_SUPPORTS_32BIT_KERNEL
1263 1127
1264config CPU_VR41XX 1128config CPU_VR41XX
1265 bool "R41xx" 1129 bool "R41xx"
1130 depends on SYS_HAS_CPU_VR41XX
1266 select CPU_SUPPORTS_32BIT_KERNEL 1131 select CPU_SUPPORTS_32BIT_KERNEL
1267 select CPU_SUPPORTS_64BIT_KERNEL 1132 select CPU_SUPPORTS_64BIT_KERNEL
1268 help 1133 help
1269 The options selects support for the NEC VR41xx series of processors. 1134 The options selects support for the NEC VR4100 series of processors.
1270 Only choose this option if you have one of these processors as a 1135 Only choose this option if you have one of these processors as a
1271 kernel built with this option will not run on any other type of 1136 kernel built with this option will not run on any other type of
1272 processor or vice versa. 1137 processor or vice versa.
1273 1138
1274config CPU_R4300 1139config CPU_R4300
1275 bool "R4300" 1140 bool "R4300"
1141 depends on SYS_HAS_CPU_R4300
1276 select CPU_SUPPORTS_32BIT_KERNEL 1142 select CPU_SUPPORTS_32BIT_KERNEL
1277 select CPU_SUPPORTS_64BIT_KERNEL 1143 select CPU_SUPPORTS_64BIT_KERNEL
1278 help 1144 help
@@ -1280,6 +1146,7 @@ config CPU_R4300
1280 1146
1281config CPU_R4X00 1147config CPU_R4X00
1282 bool "R4x00" 1148 bool "R4x00"
1149 depends on SYS_HAS_CPU_R4X00
1283 select CPU_SUPPORTS_32BIT_KERNEL 1150 select CPU_SUPPORTS_32BIT_KERNEL
1284 select CPU_SUPPORTS_64BIT_KERNEL 1151 select CPU_SUPPORTS_64BIT_KERNEL
1285 help 1152 help
@@ -1288,11 +1155,13 @@ config CPU_R4X00
1288 1155
1289config CPU_TX49XX 1156config CPU_TX49XX
1290 bool "R49XX" 1157 bool "R49XX"
1158 depends on SYS_HAS_CPU_TX49XX
1291 select CPU_SUPPORTS_32BIT_KERNEL 1159 select CPU_SUPPORTS_32BIT_KERNEL
1292 select CPU_SUPPORTS_64BIT_KERNEL 1160 select CPU_SUPPORTS_64BIT_KERNEL
1293 1161
1294config CPU_R5000 1162config CPU_R5000
1295 bool "R5000" 1163 bool "R5000"
1164 depends on SYS_HAS_CPU_R5000
1296 select CPU_SUPPORTS_32BIT_KERNEL 1165 select CPU_SUPPORTS_32BIT_KERNEL
1297 select CPU_SUPPORTS_64BIT_KERNEL 1166 select CPU_SUPPORTS_64BIT_KERNEL
1298 help 1167 help
@@ -1300,10 +1169,14 @@ config CPU_R5000
1300 1169
1301config CPU_R5432 1170config CPU_R5432
1302 bool "R5432" 1171 bool "R5432"
1172 depends on SYS_HAS_CPU_R5432
1173 select CPU_SUPPORTS_32BIT_KERNEL
1174 select CPU_SUPPORTS_64BIT_KERNEL
1303 1175
1304config CPU_R6000 1176config CPU_R6000
1305 bool "R6000" 1177 bool "R6000"
1306 depends on EXPERIMENTAL 1178 depends on EXPERIMENTAL
1179 depends on SYS_HAS_CPU_R6000
1307 select CPU_SUPPORTS_32BIT_KERNEL 1180 select CPU_SUPPORTS_32BIT_KERNEL
1308 help 1181 help
1309 MIPS Technologies R6000 and R6000A series processors. Note these 1182 MIPS Technologies R6000 and R6000A series processors. Note these
@@ -1311,6 +1184,7 @@ config CPU_R6000
1311 1184
1312config CPU_NEVADA 1185config CPU_NEVADA
1313 bool "RM52xx" 1186 bool "RM52xx"
1187 depends on SYS_HAS_CPU_NEVADA
1314 select CPU_SUPPORTS_32BIT_KERNEL 1188 select CPU_SUPPORTS_32BIT_KERNEL
1315 select CPU_SUPPORTS_64BIT_KERNEL 1189 select CPU_SUPPORTS_64BIT_KERNEL
1316 help 1190 help
@@ -1319,6 +1193,8 @@ config CPU_NEVADA
1319config CPU_R8000 1193config CPU_R8000
1320 bool "R8000" 1194 bool "R8000"
1321 depends on EXPERIMENTAL 1195 depends on EXPERIMENTAL
1196 depends on SYS_HAS_CPU_R8000
1197 select CPU_HAS_PREFETCH
1322 select CPU_SUPPORTS_64BIT_KERNEL 1198 select CPU_SUPPORTS_64BIT_KERNEL
1323 help 1199 help
1324 MIPS Technologies R8000 processors. Note these processors are 1200 MIPS Technologies R8000 processors. Note these processors are
@@ -1326,25 +1202,151 @@ config CPU_R8000
1326 1202
1327config CPU_R10000 1203config CPU_R10000
1328 bool "R10000" 1204 bool "R10000"
1205 depends on SYS_HAS_CPU_R10000
1206 select CPU_HAS_PREFETCH
1329 select CPU_SUPPORTS_32BIT_KERNEL 1207 select CPU_SUPPORTS_32BIT_KERNEL
1330 select CPU_SUPPORTS_64BIT_KERNEL 1208 select CPU_SUPPORTS_64BIT_KERNEL
1209 select CPU_SUPPORTS_HIGHMEM
1331 help 1210 help
1332 MIPS Technologies R10000-series processors. 1211 MIPS Technologies R10000-series processors.
1333 1212
1334config CPU_RM7000 1213config CPU_RM7000
1335 bool "RM7000" 1214 bool "RM7000"
1215 depends on SYS_HAS_CPU_RM7000
1216 select CPU_HAS_PREFETCH
1336 select CPU_SUPPORTS_32BIT_KERNEL 1217 select CPU_SUPPORTS_32BIT_KERNEL
1337 select CPU_SUPPORTS_64BIT_KERNEL 1218 select CPU_SUPPORTS_64BIT_KERNEL
1219 select CPU_SUPPORTS_HIGHMEM
1338 1220
1339config CPU_RM9000 1221config CPU_RM9000
1340 bool "RM9000" 1222 bool "RM9000"
1223 depends on SYS_HAS_CPU_RM9000
1224 select CPU_HAS_PREFETCH
1341 select CPU_SUPPORTS_32BIT_KERNEL 1225 select CPU_SUPPORTS_32BIT_KERNEL
1342 select CPU_SUPPORTS_64BIT_KERNEL 1226 select CPU_SUPPORTS_64BIT_KERNEL
1227 select CPU_SUPPORTS_HIGHMEM
1343 1228
1344config CPU_SB1 1229config CPU_SB1
1345 bool "SB1" 1230 bool "SB1"
1231 depends on SYS_HAS_CPU_SB1
1346 select CPU_SUPPORTS_32BIT_KERNEL 1232 select CPU_SUPPORTS_32BIT_KERNEL
1347 select CPU_SUPPORTS_64BIT_KERNEL 1233 select CPU_SUPPORTS_64BIT_KERNEL
1234 select CPU_SUPPORTS_HIGHMEM
1235
1236endchoice
1237
1238config SYS_HAS_CPU_MIPS32_R1
1239 bool
1240
1241config SYS_HAS_CPU_MIPS32_R2
1242 bool
1243
1244config SYS_HAS_CPU_MIPS64_R1
1245 bool
1246
1247config SYS_HAS_CPU_MIPS64_R2
1248 bool
1249
1250config SYS_HAS_CPU_R3000
1251 bool
1252
1253config SYS_HAS_CPU_TX39XX
1254 bool
1255
1256config SYS_HAS_CPU_VR41XX
1257 bool
1258
1259config SYS_HAS_CPU_R4300
1260 bool
1261
1262config SYS_HAS_CPU_R4X00
1263 bool
1264
1265config SYS_HAS_CPU_TX49XX
1266 bool
1267
1268config SYS_HAS_CPU_R5000
1269 bool
1270
1271config SYS_HAS_CPU_R5432
1272 bool
1273
1274config SYS_HAS_CPU_R6000
1275 bool
1276
1277config SYS_HAS_CPU_NEVADA
1278 bool
1279
1280config SYS_HAS_CPU_R8000
1281 bool
1282
1283config SYS_HAS_CPU_R10000
1284 bool
1285
1286config SYS_HAS_CPU_RM7000
1287 bool
1288
1289config SYS_HAS_CPU_RM9000
1290 bool
1291
1292config SYS_HAS_CPU_SB1
1293 bool
1294
1295endmenu
1296
1297#
1298# These two indicate any levelof the MIPS32 and MIPS64 architecture
1299#
1300config CPU_MIPS32
1301 bool
1302 default y if CPU_MIPS32_R1 || CPU_MIPS32_R2
1303
1304config CPU_MIPS64
1305 bool
1306 default y if CPU_MIPS64_R1 || CPU_MIPS64_R2
1307
1308#
1309# These two indicate the revision of the architecture, either 32 bot 64 bit.
1310#
1311config CPU_MIPSR1
1312 bool
1313 default y if CPU_MIPS32_R1 || CPU_MIPS64_R1
1314
1315config CPU_MIPSR2
1316 bool
1317 default y if CPU_MIPS32_R2 || CPU_MIPS64_R2
1318
1319config SYS_SUPPORTS_32BIT_KERNEL
1320 bool
1321config SYS_SUPPORTS_64BIT_KERNEL
1322 bool
1323config CPU_SUPPORTS_32BIT_KERNEL
1324 bool
1325config CPU_SUPPORTS_64BIT_KERNEL
1326 bool
1327
1328menu "Kernel type"
1329
1330choice
1331
1332 prompt "Kernel code model"
1333 help
1334 You should only select this option if you have a workload that
1335 actually benefits from 64-bit processing or if your machine has
1336 large memory. You will only be presented a single option in this
1337 menu if your system does not support both 32-bit and 64-bit kernels.
1338
1339config 32BIT
1340 bool "32-bit kernel"
1341 depends on CPU_SUPPORTS_32BIT_KERNEL && SYS_SUPPORTS_32BIT_KERNEL
1342 select TRAD_SIGNALS
1343 help
1344 Select this option if you want to build a 32-bit kernel.
1345config 64BIT
1346 bool "64-bit kernel"
1347 depends on CPU_SUPPORTS_64BIT_KERNEL && SYS_SUPPORTS_64BIT_KERNEL
1348 help
1349 Select this option if you want to build a 64-bit kernel.
1348 1350
1349endchoice 1351endchoice
1350 1352
@@ -1416,12 +1418,43 @@ config SIBYTE_DMA_PAGEOPS
1416 SiByte Linux port. Seems to give a small performance benefit. 1418 SiByte Linux port. Seems to give a small performance benefit.
1417 1419
1418config CPU_HAS_PREFETCH 1420config CPU_HAS_PREFETCH
1419 bool "Enable prefetches" if CPU_SB1 && !CPU_SB1_PASS_2 1421 bool
1420 default y if CPU_MIPS32 || CPU_MIPS64 || CPU_RM7000 || CPU_RM9000 || CPU_R10000 1422
1423config MIPS_MT
1424 bool "Enable MIPS MT"
1425
1426choice
1427 prompt "MIPS MT options"
1428 depends on MIPS_MT
1421 1429
1422config VTAG_ICACHE 1430config MIPS_MT_SMP
1423 bool "Support for Virtual Tagged I-cache" if CPU_MIPS64 || CPU_MIPS32 1431 bool "Use 1 TC on each available VPE for SMP"
1424 default y if CPU_SB1 1432 select SMP
1433
1434config MIPS_VPE_LOADER
1435 bool "VPE loader support."
1436 depends on MIPS_MT
1437 help
1438 Includes a loader for loading an elf relocatable object
1439 onto another VPE and running it.
1440
1441endchoice
1442
1443config MIPS_VPE_LOADER_TOM
1444 bool "Load VPE program into memory hidden from linux"
1445 depends on MIPS_VPE_LOADER
1446 default y
1447 help
1448 The loader can use memory that is present but has been hidden from
1449 Linux using the kernel command line option "mem=xxMB". It's up to
1450 you to ensure the amount you put in the option and the space your
1451 program requires is less or equal to the amount physically present.
1452
1453# this should possibly be in drivers/char, but it is rather cpu related. Hmmm
1454config MIPS_VPE_APSP_API
1455 bool "Enable support for AP/SP API (RTLX)"
1456 depends on MIPS_VPE_LOADER
1457 help
1425 1458
1426config SB1_PASS_1_WORKAROUNDS 1459config SB1_PASS_1_WORKAROUNDS
1427 bool 1460 bool
@@ -1440,7 +1473,7 @@ config SB1_PASS_2_1_WORKAROUNDS
1440 1473
1441config 64BIT_PHYS_ADDR 1474config 64BIT_PHYS_ADDR
1442 bool "Support for 64-bit physical address space" 1475 bool "Support for 64-bit physical address space"
1443 depends on (CPU_R4X00 || CPU_R5000 || CPU_RM7000 || CPU_RM9000 || CPU_R10000 || CPU_SB1 || CPU_MIPS32 || CPU_MIPS64) && 32BIT 1476 depends on (CPU_R4X00 || CPU_R5000 || CPU_RM7000 || CPU_RM9000 || CPU_R10000 || CPU_SB1 || CPU_MIPS32_R1 || CPU_MIPS64_R1) && 32BIT
1444 1477
1445config CPU_ADVANCED 1478config CPU_ADVANCED
1446 bool "Override CPU Options" 1479 bool "Override CPU Options"
@@ -1463,7 +1496,7 @@ config CPU_HAS_LLSC
1463 1496
1464config CPU_HAS_LLDSCD 1497config CPU_HAS_LLDSCD
1465 bool "lld/scd Instructions available" if CPU_ADVANCED 1498 bool "lld/scd Instructions available" if CPU_ADVANCED
1466 default y if !CPU_ADVANCED && !CPU_R3000 && !CPU_VR41XX && !CPU_TX39XX && !CPU_MIPS32 1499 default y if !CPU_ADVANCED && !CPU_R3000 && !CPU_VR41XX && !CPU_TX39XX && !CPU_MIPS32_R1
1467 help 1500 help
1468 Say Y here if your CPU has the lld and scd instructions, the 64-bit 1501 Say Y here if your CPU has the lld and scd instructions, the 64-bit
1469 equivalents of ll and sc. Say Y here for better performance, N if 1502 equivalents of ll and sc. Say Y here for better performance, N if
@@ -1477,12 +1510,52 @@ config CPU_HAS_WB
1477 machines which require flushing of write buffers in software. Saying 1510 machines which require flushing of write buffers in software. Saying
1478 Y is the safe option; N may result in kernel malfunction and crashes. 1511 Y is the safe option; N may result in kernel malfunction and crashes.
1479 1512
1513menu "MIPSR2 Interrupt handling"
1514 depends on CPU_MIPSR2 && CPU_ADVANCED
1515
1516config CPU_MIPSR2_IRQ_VI
1517 bool "Vectored interrupt mode"
1518 help
1519 Vectored interrupt mode allowing faster dispatching of interrupts.
1520 The board support code needs to be written to take advantage of this
1521 mode. Compatibility code is included to allow the kernel to run on
1522 a CPU that does not support vectored interrupts. It's safe to
1523 say Y here.
1524
1525config CPU_MIPSR2_IRQ_EI
1526 bool "External interrupt controller mode"
1527 help
1528 Extended interrupt mode takes advantage of an external interrupt
1529 controller to allow fast dispatching from many possible interrupt
1530 sources. Say N unless you know that external interrupt support is
1531 required.
1532
1533config CPU_MIPSR2_SRS
1534 bool "Make shadow set registers available for interrupt handlers"
1535 depends on CPU_MIPSR2_IRQ_VI || CPU_MIPSR2_IRQ_EI
1536 help
1537 Allow the kernel to use shadow register sets for fast interrupts.
1538 Interrupt handlers must be specially written to use shadow sets.
1539 Say N unless you know that shadow register set upport is needed.
1540endmenu
1541
1480config CPU_HAS_SYNC 1542config CPU_HAS_SYNC
1481 bool 1543 bool
1482 depends on !CPU_R3000 1544 depends on !CPU_R3000
1483 default y 1545 default y
1484 1546
1485# 1547#
1548# Use the generic interrupt handling code in kernel/irq/:
1549#
1550config GENERIC_HARDIRQS
1551 bool
1552 default y
1553
1554config GENERIC_IRQ_PROBE
1555 bool
1556 default y
1557
1558#
1486# - Highmem only makes sense for the 32-bit kernel. 1559# - Highmem only makes sense for the 32-bit kernel.
1487# - The current highmem code will only work properly on physically indexed 1560# - The current highmem code will only work properly on physically indexed
1488# caches such as R3000, SB1, R7000 or those that look like they're virtually 1561# caches such as R3000, SB1, R7000 or those that look like they're virtually
@@ -1491,14 +1564,19 @@ config CPU_HAS_SYNC
1491# where it's known to be safe. This will not offer highmem on a few systems 1564# where it's known to be safe. This will not offer highmem on a few systems
1492# such as MIPS32 and MIPS64 CPUs which may have virtual and physically 1565# such as MIPS32 and MIPS64 CPUs which may have virtual and physically
1493# indexed CPUs but we're playing safe. 1566# indexed CPUs but we're playing safe.
1494# - We should not offer highmem for system of which we already know that they 1567# - We use SYS_SUPPORTS_HIGHMEM to offer highmem only for systems where we
1495# don't have memory configurations that could gain from highmem support in 1568# know they might have memory configurations that could make use of highmem
1496# the kernel because they don't support configurations with RAM at physical 1569# support.
1497# addresses > 0x20000000.
1498# 1570#
1499config HIGHMEM 1571config HIGHMEM
1500 bool "High Memory Support" 1572 bool "High Memory Support"
1501 depends on 32BIT && (CPU_R3000 || CPU_SB1 || CPU_R7000 || CPU_RM9000 || CPU_R10000) && !(MACH_DECSTATION || MOMENCO_JAGUAR_ATX) 1573 depends on 32BIT && CPU_SUPPORTS_HIGHMEM && SYS_SUPPORTS_HIGHMEM
1574
1575config CPU_SUPPORTS_HIGHMEM
1576 bool
1577
1578config SYS_SUPPORTS_HIGHMEM
1579 bool
1502 1580
1503config ARCH_FLATMEM_ENABLE 1581config ARCH_FLATMEM_ENABLE
1504 def_bool y 1582 def_bool y
@@ -1508,7 +1586,7 @@ source "mm/Kconfig"
1508 1586
1509config SMP 1587config SMP
1510 bool "Multi-Processing support" 1588 bool "Multi-Processing support"
1511 depends on CPU_RM9000 || (SIBYTE_SB1250 && !SIBYTE_STANDALONE) || SGI_IP27 1589 depends on CPU_RM9000 || ((SIBYTE_BCM1x80 || SIBYTE_BCM1x55 || SIBYTE_SB1250) && !SIBYTE_STANDALONE) || SGI_IP27 || MIPS_MT_SMP
1512 ---help--- 1590 ---help---
1513 This enables support for systems with more than one CPU. If you have 1591 This enables support for systems with more than one CPU. If you have
1514 a system with only one CPU, like most personal computers, say N. If 1592 a system with only one CPU, like most personal computers, say N. If
@@ -1543,14 +1621,7 @@ config NR_CPUS
1543 This is purely to save memory - each supported CPU adds 1621 This is purely to save memory - each supported CPU adds
1544 approximately eight kilobytes to the kernel image. 1622 approximately eight kilobytes to the kernel image.
1545 1623
1546config PREEMPT 1624source "kernel/Kconfig.preempt"
1547 bool "Preemptible Kernel"
1548 help
1549 This option reduces the latency of the kernel when reacting to
1550 real-time or interactive events by allowing a low priority process to
1551 be preempted even if it is in kernel mode executing a system call.
1552 This allows applications to run more reliably even when the system is
1553 under load.
1554 1625
1555config RTC_DS1742 1626config RTC_DS1742
1556 bool "DS1742 BRAM/RTC support" 1627 bool "DS1742 BRAM/RTC support"
@@ -1566,14 +1637,16 @@ config MIPS_INSANE_LARGE
1566 This will result in additional memory usage, so it is not 1637 This will result in additional memory usage, so it is not
1567 recommended for normal users. 1638 recommended for normal users.
1568 1639
1640endmenu
1641
1569config RWSEM_GENERIC_SPINLOCK 1642config RWSEM_GENERIC_SPINLOCK
1570 bool 1643 bool
1571 default y 1644 default y
1572 1645
1573endmenu
1574
1575menu "Bus options (PCI, PCMCIA, EISA, ISA, TC)" 1646menu "Bus options (PCI, PCMCIA, EISA, ISA, TC)"
1576 1647
1648config HW_HAS_EISA
1649 bool
1577config HW_HAS_PCI 1650config HW_HAS_PCI
1578 bool 1651 bool
1579 1652
@@ -1607,7 +1680,7 @@ config ISA
1607 1680
1608config EISA 1681config EISA
1609 bool "EISA support" 1682 bool "EISA support"
1610 depends on SGI_IP22 || SNI_RM200_PCI 1683 depends on HW_HAS_EISA
1611 select ISA 1684 select ISA
1612 ---help--- 1685 ---help---
1613 The Extended Industry Standard Architecture (EISA) bus was 1686 The Extended Industry Standard Architecture (EISA) bus was
@@ -1641,12 +1714,6 @@ config MMU
1641 bool 1714 bool
1642 default y 1715 default y
1643 1716
1644config MCA
1645 bool
1646
1647config SBUS
1648 bool
1649
1650source "drivers/pcmcia/Kconfig" 1717source "drivers/pcmcia/Kconfig"
1651 1718
1652source "drivers/pci/hotplug/Kconfig" 1719source "drivers/pci/hotplug/Kconfig"
@@ -1659,7 +1726,6 @@ source "fs/Kconfig.binfmt"
1659 1726
1660config TRAD_SIGNALS 1727config TRAD_SIGNALS
1661 bool 1728 bool
1662 default y if 32BIT
1663 1729
1664config BUILD_ELF64 1730config BUILD_ELF64
1665 bool "Use 64-bit ELF format for building" 1731 bool "Use 64-bit ELF format for building"
@@ -1678,7 +1744,7 @@ config BUILD_ELF64
1678 1744
1679config BINFMT_IRIX 1745config BINFMT_IRIX
1680 bool "Include IRIX binary compatibility" 1746 bool "Include IRIX binary compatibility"
1681 depends on !CPU_LITTLE_ENDIAN && 32BIT && BROKEN 1747 depends on CPU_BIG_ENDIAN && 32BIT && BROKEN
1682 1748
1683config MIPS32_COMPAT 1749config MIPS32_COMPAT
1684 bool "Kernel support for Linux/MIPS 32-bit binary compatibility" 1750 bool "Kernel support for Linux/MIPS 32-bit binary compatibility"
@@ -1718,9 +1784,26 @@ config BINFMT_ELF32
1718 bool 1784 bool
1719 default y if MIPS32_O32 || MIPS32_N32 1785 default y if MIPS32_O32 || MIPS32_N32
1720 1786
1787config SECCOMP
1788 bool "Enable seccomp to safely compute untrusted bytecode"
1789 depends on PROC_FS && BROKEN
1790 default y
1791 help
1792 This kernel feature is useful for number crunching applications
1793 that may need to compute untrusted bytecode during their
1794 execution. By using pipes or other transports made available to
1795 the process as file descriptors supporting the read/write
1796 syscalls, it's possible to isolate those applications in
1797 their own address space using seccomp. Once seccomp is
1798 enabled via /proc/<pid>/seccomp, it cannot be disabled
1799 and the task is only allowed to execute a few safe syscalls
1800 defined by each seccomp mode.
1801
1802 If unsure, say Y. Only embedded should say N here.
1803
1721config PM 1804config PM
1722 bool "Power Management support (EXPERIMENTAL)" 1805 bool "Power Management support (EXPERIMENTAL)"
1723 depends on EXPERIMENTAL && MACH_AU1X00 1806 depends on EXPERIMENTAL && SOC_AU1X00
1724 1807
1725endmenu 1808endmenu
1726 1809
@@ -1730,6 +1813,8 @@ source "drivers/Kconfig"
1730 1813
1731source "fs/Kconfig" 1814source "fs/Kconfig"
1732 1815
1816source "arch/mips/oprofile/Kconfig"
1817
1733source "arch/mips/Kconfig.debug" 1818source "arch/mips/Kconfig.debug"
1734 1819
1735source "security/Kconfig" 1820source "security/Kconfig"
@@ -1737,18 +1822,3 @@ source "security/Kconfig"
1737source "crypto/Kconfig" 1822source "crypto/Kconfig"
1738 1823
1739source "lib/Kconfig" 1824source "lib/Kconfig"
1740
1741#
1742# Use the generic interrupt handling code in kernel/irq/:
1743#
1744config GENERIC_HARDIRQS
1745 bool
1746 default y
1747
1748config GENERIC_IRQ_PROBE
1749 bool
1750 default y
1751
1752config ISA_DMA_API
1753 bool
1754 default y
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index 346e803f153b..02692027730a 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -52,6 +52,21 @@ ifdef CONFIG_CROSSCOMPILE
52CROSS_COMPILE := $(tool-prefix) 52CROSS_COMPILE := $(tool-prefix)
53endif 53endif
54 54
55CHECKFLAGS-y += -D__linux__ -D__mips__ \
56 -D_ABIO32=1 \
57 -D_ABIN32=2 \
58 -D_ABI64=3
59CHECKFLAGS-$(CONFIG_32BIT) += -D_MIPS_SIM=_ABIO32 \
60 -D_MIPS_SZLONG=32 \
61 -D__PTRDIFF_TYPE__=int
62CHECKFLAGS-$(CONFIG_64BIT) += -m64 -D_MIPS_SIM=_ABI64 \
63 -D_MIPS_SZLONG=64 \
64 -D__PTRDIFF_TYPE__="long int"
65CHECKFLAGS-$(CONFIG_CPU_BIG_ENDIAN) += -D__MIPSEB__
66CHECKFLAGS-$(CONFIG_CPU_LITTLE_ENDIAN) += -D__MIPSEL__
67
68CHECKFLAGS = $(CHECKFLAGS-y)
69
55ifdef CONFIG_BUILD_ELF64 70ifdef CONFIG_BUILD_ELF64
56gas-abi = 64 71gas-abi = 64
57ld-emul = $(64bit-emul) 72ld-emul = $(64bit-emul)
@@ -79,9 +94,18 @@ endif
79cflags-y += -I $(TOPDIR)/include/asm/gcc 94cflags-y += -I $(TOPDIR)/include/asm/gcc
80cflags-y += -G 0 -mno-abicalls -fno-pic -pipe 95cflags-y += -G 0 -mno-abicalls -fno-pic -pipe
81cflags-y += $(call cc-option, -finline-limit=100000) 96cflags-y += $(call cc-option, -finline-limit=100000)
82LDFLAGS_vmlinux += -G 0 -static -n 97LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
83MODFLAGS += -mlong-calls 98MODFLAGS += -mlong-calls
84 99
100#
101# We explicitly add the endianness specifier if needed, this allows
102# to compile kernels with a toolchain for the other endianness. We
103# carefully avoid to add it redundantly because gcc 3.3/3.4 complains
104# when fed the toolchain default!
105#
106cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' && echo -EB)
107cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' || echo -EL)
108
85cflags-$(CONFIG_SB1XXX_CORELIS) += -mno-sched-prolog -fno-omit-frame-pointer 109cflags-$(CONFIG_SB1XXX_CORELIS) += -mno-sched-prolog -fno-omit-frame-pointer
86 110
87# 111#
@@ -167,14 +191,22 @@ cflags-$(CONFIG_CPU_TX49XX) += \
167 $(call set_gccflags,r4600,mips3,r4600,mips3,mips2) \ 191 $(call set_gccflags,r4600,mips3,r4600,mips3,mips2) \
168 -Wa,--trap 192 -Wa,--trap
169 193
170cflags-$(CONFIG_CPU_MIPS32) += \ 194cflags-$(CONFIG_CPU_MIPS32_R1) += \
171 $(call set_gccflags,mips32,mips32,r4600,mips3,mips2) \ 195 $(call set_gccflags,mips32,mips32,r4600,mips3,mips2) \
172 -Wa,--trap 196 -Wa,--trap
173 197
174cflags-$(CONFIG_CPU_MIPS64) += \ 198cflags-$(CONFIG_CPU_MIPS32_R2) += \
199 $(call set_gccflags,mips32r2,mips32r2,r4600,mips3,mips2) \
200 -Wa,--trap
201
202cflags-$(CONFIG_CPU_MIPS64_R1) += \
175 $(call set_gccflags,mips64,mips64,r4600,mips3,mips2) \ 203 $(call set_gccflags,mips64,mips64,r4600,mips3,mips2) \
176 -Wa,--trap 204 -Wa,--trap
177 205
206cflags-$(CONFIG_CPU_MIPS64_R2) += \
207 $(call set_gccflags,mips64r2,mips64r2,r4600,mips3,mips2) \
208 -Wa,--trap
209
178cflags-$(CONFIG_CPU_R5000) += \ 210cflags-$(CONFIG_CPU_R5000) += \
179 $(call set_gccflags,r5000,mips4,r5000,mips4,mips2) \ 211 $(call set_gccflags,r5000,mips4,r5000,mips4,mips2) \
180 -Wa,--trap 212 -Wa,--trap
@@ -196,6 +228,7 @@ cflags-$(CONFIG_CPU_RM9000) += \
196 $(call set_gccflags,rm9000,mips4,r5000,mips4,mips2) \ 228 $(call set_gccflags,rm9000,mips4,r5000,mips4,mips2) \
197 -Wa,--trap 229 -Wa,--trap
198 230
231
199cflags-$(CONFIG_CPU_SB1) += \ 232cflags-$(CONFIG_CPU_SB1) += \
200 $(call set_gccflags,sb1,mips64,r5000,mips4,mips2) \ 233 $(call set_gccflags,sb1,mips64,r5000,mips4,mips2) \
201 -Wa,--trap 234 -Wa,--trap
@@ -266,6 +299,13 @@ cflags-$(CONFIG_MIPS_PB1550) += -Iinclude/asm-mips/mach-pb1x00
266load-$(CONFIG_MIPS_PB1550) += 0xffffffff80100000 299load-$(CONFIG_MIPS_PB1550) += 0xffffffff80100000
267 300
268# 301#
302# AMD Alchemy Pb1200 eval board
303#
304libs-$(CONFIG_MIPS_PB1200) += arch/mips/au1000/pb1200/
305cflags-$(CONFIG_MIPS_PB1200) += -Iinclude/asm-mips/mach-pb1x00
306load-$(CONFIG_MIPS_PB1200) += 0xffffffff80100000
307
308#
269# AMD Alchemy Db1000 eval board 309# AMD Alchemy Db1000 eval board
270# 310#
271libs-$(CONFIG_MIPS_DB1000) += arch/mips/au1000/db1x00/ 311libs-$(CONFIG_MIPS_DB1000) += arch/mips/au1000/db1x00/
@@ -294,6 +334,13 @@ cflags-$(CONFIG_MIPS_DB1550) += -Iinclude/asm-mips/mach-db1x00
294load-$(CONFIG_MIPS_DB1550) += 0xffffffff80100000 334load-$(CONFIG_MIPS_DB1550) += 0xffffffff80100000
295 335
296# 336#
337# AMD Alchemy Db1200 eval board
338#
339libs-$(CONFIG_MIPS_DB1200) += arch/mips/au1000/pb1200/
340cflags-$(CONFIG_MIPS_DB1200) += -Iinclude/asm-mips/mach-db1x00
341load-$(CONFIG_MIPS_DB1200) += 0xffffffff80100000
342
343#
297# AMD Alchemy Bosporus eval board 344# AMD Alchemy Bosporus eval board
298# 345#
299libs-$(CONFIG_MIPS_BOSPORUS) += arch/mips/au1000/db1x00/ 346libs-$(CONFIG_MIPS_BOSPORUS) += arch/mips/au1000/db1x00/
@@ -323,6 +370,7 @@ load-$(CONFIG_MIPS_XXS1500) += 0xffffffff80100000
323# Cobalt Server 370# Cobalt Server
324# 371#
325core-$(CONFIG_MIPS_COBALT) += arch/mips/cobalt/ 372core-$(CONFIG_MIPS_COBALT) += arch/mips/cobalt/
373cflags-$(CONFIG_MIPS_COBALT) += -Iinclude/asm-mips/cobalt
326load-$(CONFIG_MIPS_COBALT) += 0xffffffff80080000 374load-$(CONFIG_MIPS_COBALT) += 0xffffffff80080000
327 375
328# 376#
@@ -389,6 +437,13 @@ core-$(CONFIG_MIPS_SEAD) += arch/mips/mips-boards/sead/
389load-$(CONFIG_MIPS_SEAD) += 0xffffffff80100000 437load-$(CONFIG_MIPS_SEAD) += 0xffffffff80100000
390 438
391# 439#
440# MIPS SIM
441#
442core-$(CONFIG_MIPS_SIM) += arch/mips/mips-boards/sim/
443cflags-$(CONFIG_MIPS_SIM) += -Iinclude/asm-mips/mach-sim
444load-$(CONFIG_MIPS_SIM) += 0x80100000
445
446#
392# Momentum Ocelot board 447# Momentum Ocelot board
393# 448#
394# The Ocelot setup.o must be linked early - it does the ioremap() for the 449# The Ocelot setup.o must be linked early - it does the ioremap() for the
@@ -514,6 +569,19 @@ load-$(CONFIG_CASIO_E55) += 0xffffffff80004000
514load-$(CONFIG_TANBAC_TB022X) += 0xffffffff80000000 569load-$(CONFIG_TANBAC_TB022X) += 0xffffffff80000000
515 570
516# 571#
572# Common Philips PNX8550
573#
574core-$(CONFIG_SOC_PNX8550) += arch/mips/philips/pnx8550/common/
575cflags-$(CONFIG_SOC_PNX8550) += -Iinclude/asm-mips/mach-pnx8550
576
577#
578# Philips PNX8550 JBS board
579#
580libs-$(CONFIG_PNX8550_JBS) += arch/mips/philips/pnx8550/jbs/
581#cflags-$(CONFIG_PNX8550_JBS) += -Iinclude/asm-mips/mach-pnx8550
582load-$(CONFIG_PNX8550_JBS) += 0xffffffff80060000
583
584#
517# SGI IP22 (Indy/Indigo2) 585# SGI IP22 (Indy/Indigo2)
518# 586#
519# Set the load address to >= 0xffffffff88069000 if you want to leave space for 587# Set the load address to >= 0xffffffff88069000 if you want to leave space for
@@ -582,10 +650,20 @@ load-$(CONFIG_SGI_IP32) += 0xffffffff80004000
582# removed (as happens, even if they have __initcall/module_init) 650# removed (as happens, even if they have __initcall/module_init)
583# 651#
584core-$(CONFIG_SIBYTE_BCM112X) += arch/mips/sibyte/sb1250/ 652core-$(CONFIG_SIBYTE_BCM112X) += arch/mips/sibyte/sb1250/
585cflags-$(CONFIG_SIBYTE_BCM112X) += -Iinclude/asm-mips/mach-sibyte 653cflags-$(CONFIG_SIBYTE_BCM112X) += -Iinclude/asm-mips/mach-sibyte \
654 -DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1250_112x_ALL
586 655
587core-$(CONFIG_SIBYTE_SB1250) += arch/mips/sibyte/sb1250/ 656core-$(CONFIG_SIBYTE_SB1250) += arch/mips/sibyte/sb1250/
588cflags-$(CONFIG_SIBYTE_SB1250) += -Iinclude/asm-mips/mach-sibyte 657cflags-$(CONFIG_SIBYTE_SB1250) += -Iinclude/asm-mips/mach-sibyte \
658 -DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1250_112x_ALL
659
660core-$(CONFIG_SIBYTE_BCM1x55) += arch/mips/sibyte/bcm1480/
661cflags-$(CONFIG_SIBYTE_BCM1x55) += -Iinclude/asm-mips/mach-sibyte \
662 -DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1480_ALL
663
664core-$(CONFIG_SIBYTE_BCM1x80) += arch/mips/sibyte/bcm1480/
665cflags-$(CONFIG_SIBYTE_BCM1x80) += -Iinclude/asm-mips/mach-sibyte \
666 -DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1480_ALL
589 667
590# 668#
591# Sibyte BCM91120x (Carmel) board 669# Sibyte BCM91120x (Carmel) board
@@ -593,6 +671,7 @@ cflags-$(CONFIG_SIBYTE_SB1250) += -Iinclude/asm-mips/mach-sibyte
593# Sibyte BCM91125C (CRhone) board 671# Sibyte BCM91125C (CRhone) board
594# Sibyte BCM91125E (Rhone) board 672# Sibyte BCM91125E (Rhone) board
595# Sibyte SWARM board 673# Sibyte SWARM board
674# Sibyte BCM91x80 (BigSur) board
596# 675#
597libs-$(CONFIG_SIBYTE_CARMEL) += arch/mips/sibyte/swarm/ 676libs-$(CONFIG_SIBYTE_CARMEL) += arch/mips/sibyte/swarm/
598load-$(CONFIG_SIBYTE_CARMEL) := 0xffffffff80100000 677load-$(CONFIG_SIBYTE_CARMEL) := 0xffffffff80100000
@@ -606,6 +685,8 @@ libs-$(CONFIG_SIBYTE_SENTOSA) += arch/mips/sibyte/swarm/
606load-$(CONFIG_SIBYTE_SENTOSA) := 0xffffffff80100000 685load-$(CONFIG_SIBYTE_SENTOSA) := 0xffffffff80100000
607libs-$(CONFIG_SIBYTE_SWARM) += arch/mips/sibyte/swarm/ 686libs-$(CONFIG_SIBYTE_SWARM) += arch/mips/sibyte/swarm/
608load-$(CONFIG_SIBYTE_SWARM) := 0xffffffff80100000 687load-$(CONFIG_SIBYTE_SWARM) := 0xffffffff80100000
688libs-$(CONFIG_SIBYTE_BIGSUR) += arch/mips/sibyte/swarm/
689load-$(CONFIG_SIBYTE_BIGSUR) := 0xffffffff80100000
609 690
610# 691#
611# SNI RM200 PCI 692# SNI RM200 PCI
@@ -629,6 +710,13 @@ core-$(CONFIG_TOSHIBA_RBTX4927) += arch/mips/tx4927/toshiba_rbtx4927/
629core-$(CONFIG_TOSHIBA_RBTX4927) += arch/mips/tx4927/common/ 710core-$(CONFIG_TOSHIBA_RBTX4927) += arch/mips/tx4927/common/
630load-$(CONFIG_TOSHIBA_RBTX4927) += 0xffffffff80020000 711load-$(CONFIG_TOSHIBA_RBTX4927) += 0xffffffff80020000
631 712
713#
714# Toshiba RBTX4938 board
715#
716core-$(CONFIG_TOSHIBA_RBTX4938) += arch/mips/tx4938/toshiba_rbtx4938/
717core-$(CONFIG_TOSHIBA_RBTX4938) += arch/mips/tx4938/common/
718load-$(CONFIG_TOSHIBA_RBTX4938) += 0xffffffff80100000
719
632cflags-y += -Iinclude/asm-mips/mach-generic 720cflags-y += -Iinclude/asm-mips/mach-generic
633drivers-$(CONFIG_PCI) += arch/mips/pci/ 721drivers-$(CONFIG_PCI) += arch/mips/pci/
634 722
@@ -701,10 +789,29 @@ ifdef CONFIG_BOOT_ELF64
701all: $(vmlinux-64) 789all: $(vmlinux-64)
702endif 790endif
703 791
792ifdef CONFIG_MIPS_ATLAS
793all: vmlinux.srec
794endif
795
796ifdef CONFIG_MIPS_MALTA
797all: vmlinux.srec
798endif
799
800ifdef CONFIG_MIPS_SEAD
801all: vmlinux.srec
802endif
803
804ifdef CONFIG_QEMU
805all: vmlinux.bin
806endif
807
704ifdef CONFIG_SNI_RM200_PCI 808ifdef CONFIG_SNI_RM200_PCI
705all: vmlinux.ecoff 809all: vmlinux.ecoff
706endif 810endif
707 811
812vmlinux.bin: $(vmlinux-32)
813 +@$(call makeboot,$@)
814
708vmlinux.ecoff vmlinux.rm200: $(vmlinux-32) 815vmlinux.ecoff vmlinux.rm200: $(vmlinux-32)
709 +@$(call makeboot,$@) 816 +@$(call makeboot,$@)
710 817
@@ -720,7 +827,6 @@ archclean:
720 @$(MAKE) $(clean)=arch/mips/boot 827 @$(MAKE) $(clean)=arch/mips/boot
721 @$(MAKE) $(clean)=arch/mips/lasat 828 @$(MAKE) $(clean)=arch/mips/lasat
722 829
723
724CLEAN_FILES += vmlinux.32 \ 830CLEAN_FILES += vmlinux.32 \
725 vmlinux.64 \ 831 vmlinux.64 \
726 vmlinux.ecoff 832 vmlinux.ecoff
diff --git a/arch/mips/arc/Makefile b/arch/mips/arc/Makefile
index e8424932e1a3..4f349ec1ea2d 100644
--- a/arch/mips/arc/Makefile
+++ b/arch/mips/arc/Makefile
@@ -3,7 +3,7 @@
3# 3#
4 4
5lib-y += cmdline.o env.o file.o identify.o init.o \ 5lib-y += cmdline.o env.o file.o identify.o init.o \
6 misc.o time.o tree.o 6 misc.o salone.o time.o tree.o
7 7
8lib-$(CONFIG_ARC_MEMORY) += memory.o 8lib-$(CONFIG_ARC_MEMORY) += memory.o
9lib-$(CONFIG_ARC_CONSOLE) += arc_con.o 9lib-$(CONFIG_ARC_CONSOLE) += arc_con.o
diff --git a/arch/mips/arc/identify.c b/arch/mips/arc/identify.c
index 0dd7a345eb79..1bd6199e174a 100644
--- a/arch/mips/arc/identify.c
+++ b/arch/mips/arc/identify.c
@@ -44,6 +44,11 @@ static struct smatch mach_table[] = {
44 MACH_GROUP_SGI, 44 MACH_GROUP_SGI,
45 MACH_SGI_IP28, 45 MACH_SGI_IP28,
46 PROM_FLAG_ARCS 46 PROM_FLAG_ARCS
47 }, { "SGI-IP30",
48 "SGI Octane",
49 MACH_GROUP_SGI,
50 MACH_SGI_IP30,
51 PROM_FLAG_ARCS
47 }, { "SGI-IP32", 52 }, { "SGI-IP32",
48 "SGI O2", 53 "SGI O2",
49 MACH_GROUP_SGI, 54 MACH_GROUP_SGI,
diff --git a/arch/mips/au1000/common/Makefile b/arch/mips/au1000/common/Makefile
index 594b75e5e080..a1edfd1f643c 100644
--- a/arch/mips/au1000/common/Makefile
+++ b/arch/mips/au1000/common/Makefile
@@ -8,7 +8,7 @@
8 8
9obj-y += prom.o int-handler.o irq.o puts.o time.o reset.o \ 9obj-y += prom.o int-handler.o irq.o puts.o time.o reset.o \
10 au1xxx_irqmap.o clocks.o platform.o power.o setup.o \ 10 au1xxx_irqmap.o clocks.o platform.o power.o setup.o \
11 sleeper.o cputable.o dma.o dbdma.o 11 sleeper.o cputable.o dma.o dbdma.o gpio.o
12 12
13obj-$(CONFIG_AU1X00_USB_DEVICE) += usbdev.o 13obj-$(CONFIG_AU1X00_USB_DEVICE) += usbdev.o
14obj-$(CONFIG_KGDB) += dbg_io.o 14obj-$(CONFIG_KGDB) += dbg_io.o
diff --git a/arch/mips/au1000/common/au1xxx_irqmap.c b/arch/mips/au1000/common/au1xxx_irqmap.c
index 8a0f39f67c59..0b2c03c52319 100644
--- a/arch/mips/au1000/common/au1xxx_irqmap.c
+++ b/arch/mips/au1000/common/au1xxx_irqmap.c
@@ -173,14 +173,14 @@ au1xxx_irq_map_t au1xxx_ic0_map[] = {
173 { AU1550_PSC1_INT, INTC_INT_HIGH_LEVEL, 0}, 173 { AU1550_PSC1_INT, INTC_INT_HIGH_LEVEL, 0},
174 { AU1550_PSC2_INT, INTC_INT_HIGH_LEVEL, 0}, 174 { AU1550_PSC2_INT, INTC_INT_HIGH_LEVEL, 0},
175 { AU1550_PSC3_INT, INTC_INT_HIGH_LEVEL, 0}, 175 { AU1550_PSC3_INT, INTC_INT_HIGH_LEVEL, 0},
176 { AU1550_TOY_INT, INTC_INT_RISE_EDGE, 0 }, 176 { AU1000_TOY_INT, INTC_INT_RISE_EDGE, 0 },
177 { AU1550_TOY_MATCH0_INT, INTC_INT_RISE_EDGE, 0 }, 177 { AU1000_TOY_MATCH0_INT, INTC_INT_RISE_EDGE, 0 },
178 { AU1550_TOY_MATCH1_INT, INTC_INT_RISE_EDGE, 0 }, 178 { AU1000_TOY_MATCH1_INT, INTC_INT_RISE_EDGE, 0 },
179 { AU1550_TOY_MATCH2_INT, INTC_INT_RISE_EDGE, 1 }, 179 { AU1000_TOY_MATCH2_INT, INTC_INT_RISE_EDGE, 1 },
180 { AU1550_RTC_INT, INTC_INT_RISE_EDGE, 0 }, 180 { AU1000_RTC_INT, INTC_INT_RISE_EDGE, 0 },
181 { AU1550_RTC_MATCH0_INT, INTC_INT_RISE_EDGE, 0 }, 181 { AU1000_RTC_MATCH0_INT, INTC_INT_RISE_EDGE, 0 },
182 { AU1550_RTC_MATCH1_INT, INTC_INT_RISE_EDGE, 0 }, 182 { AU1000_RTC_MATCH1_INT, INTC_INT_RISE_EDGE, 0 },
183 { AU1550_RTC_MATCH2_INT, INTC_INT_RISE_EDGE, 0 }, 183 { AU1000_RTC_MATCH2_INT, INTC_INT_RISE_EDGE, 0 },
184 { AU1550_NAND_INT, INTC_INT_RISE_EDGE, 0}, 184 { AU1550_NAND_INT, INTC_INT_RISE_EDGE, 0},
185 { AU1550_USB_DEV_REQ_INT, INTC_INT_HIGH_LEVEL, 0 }, 185 { AU1550_USB_DEV_REQ_INT, INTC_INT_HIGH_LEVEL, 0 },
186 { AU1550_USB_DEV_SUS_INT, INTC_INT_RISE_EDGE, 0 }, 186 { AU1550_USB_DEV_SUS_INT, INTC_INT_RISE_EDGE, 0 },
@@ -201,14 +201,14 @@ au1xxx_irq_map_t au1xxx_ic0_map[] = {
201 { AU1200_PSC1_INT, INTC_INT_HIGH_LEVEL, 0}, 201 { AU1200_PSC1_INT, INTC_INT_HIGH_LEVEL, 0},
202 { AU1200_AES_INT, INTC_INT_HIGH_LEVEL, 0}, 202 { AU1200_AES_INT, INTC_INT_HIGH_LEVEL, 0},
203 { AU1200_CAMERA_INT, INTC_INT_HIGH_LEVEL, 0}, 203 { AU1200_CAMERA_INT, INTC_INT_HIGH_LEVEL, 0},
204 { AU1200_TOY_INT, INTC_INT_RISE_EDGE, 0 }, 204 { AU1000_TOY_INT, INTC_INT_RISE_EDGE, 0 },
205 { AU1200_TOY_MATCH0_INT, INTC_INT_RISE_EDGE, 0 }, 205 { AU1000_TOY_MATCH0_INT, INTC_INT_RISE_EDGE, 0 },
206 { AU1200_TOY_MATCH1_INT, INTC_INT_RISE_EDGE, 0 }, 206 { AU1000_TOY_MATCH1_INT, INTC_INT_RISE_EDGE, 0 },
207 { AU1200_TOY_MATCH2_INT, INTC_INT_RISE_EDGE, 1 }, 207 { AU1000_TOY_MATCH2_INT, INTC_INT_RISE_EDGE, 1 },
208 { AU1200_RTC_INT, INTC_INT_RISE_EDGE, 0 }, 208 { AU1000_RTC_INT, INTC_INT_RISE_EDGE, 0 },
209 { AU1200_RTC_MATCH0_INT, INTC_INT_RISE_EDGE, 0 }, 209 { AU1000_RTC_MATCH0_INT, INTC_INT_RISE_EDGE, 0 },
210 { AU1200_RTC_MATCH1_INT, INTC_INT_RISE_EDGE, 0 }, 210 { AU1000_RTC_MATCH1_INT, INTC_INT_RISE_EDGE, 0 },
211 { AU1200_RTC_MATCH2_INT, INTC_INT_RISE_EDGE, 0 }, 211 { AU1000_RTC_MATCH2_INT, INTC_INT_RISE_EDGE, 0 },
212 { AU1200_NAND_INT, INTC_INT_RISE_EDGE, 0}, 212 { AU1200_NAND_INT, INTC_INT_RISE_EDGE, 0},
213 { AU1200_USB_INT, INTC_INT_HIGH_LEVEL, 0 }, 213 { AU1200_USB_INT, INTC_INT_HIGH_LEVEL, 0 },
214 { AU1200_LCD_INT, INTC_INT_HIGH_LEVEL, 0}, 214 { AU1200_LCD_INT, INTC_INT_HIGH_LEVEL, 0},
diff --git a/arch/mips/au1000/common/cputable.c b/arch/mips/au1000/common/cputable.c
index f5521dfccfd6..4dbde82c8215 100644
--- a/arch/mips/au1000/common/cputable.c
+++ b/arch/mips/au1000/common/cputable.c
@@ -37,7 +37,8 @@ struct cpu_spec cpu_specs[] = {
37 { 0xffffffff, 0x02030203, "Au1100 BD", 0, 1 }, 37 { 0xffffffff, 0x02030203, "Au1100 BD", 0, 1 },
38 { 0xffffffff, 0x02030204, "Au1100 BE", 0, 1 }, 38 { 0xffffffff, 0x02030204, "Au1100 BE", 0, 1 },
39 { 0xffffffff, 0x03030200, "Au1550 AA", 0, 1 }, 39 { 0xffffffff, 0x03030200, "Au1550 AA", 0, 1 },
40 { 0xffffffff, 0x04030200, "Au1200 AA", 0, 1 }, 40 { 0xffffffff, 0x04030200, "Au1200 AB", 0, 0 },
41 { 0xffffffff, 0x04030201, "Au1200 AC", 0, 1 },
41 { 0x00000000, 0x00000000, "Unknown Au1xxx", 1, 0 }, 42 { 0x00000000, 0x00000000, "Unknown Au1xxx", 1, 0 },
42}; 43};
43 44
diff --git a/arch/mips/au1000/common/dbdma.c b/arch/mips/au1000/common/dbdma.c
index adfc3172aace..d00e8247d6c2 100644
--- a/arch/mips/au1000/common/dbdma.c
+++ b/arch/mips/au1000/common/dbdma.c
@@ -29,6 +29,7 @@
29 * 675 Mass Ave, Cambridge, MA 02139, USA. 29 * 675 Mass Ave, Cambridge, MA 02139, USA.
30 * 30 *
31 */ 31 */
32
32#include <linux/config.h> 33#include <linux/config.h>
33#include <linux/kernel.h> 34#include <linux/kernel.h>
34#include <linux/errno.h> 35#include <linux/errno.h>
@@ -38,10 +39,12 @@
38#include <linux/string.h> 39#include <linux/string.h>
39#include <linux/delay.h> 40#include <linux/delay.h>
40#include <linux/interrupt.h> 41#include <linux/interrupt.h>
42#include <linux/module.h>
41#include <asm/mach-au1x00/au1000.h> 43#include <asm/mach-au1x00/au1000.h>
42#include <asm/mach-au1x00/au1xxx_dbdma.h> 44#include <asm/mach-au1x00/au1xxx_dbdma.h>
43#include <asm/system.h> 45#include <asm/system.h>
44 46
47
45#if defined(CONFIG_SOC_AU1550) || defined(CONFIG_SOC_AU1200) 48#if defined(CONFIG_SOC_AU1550) || defined(CONFIG_SOC_AU1200)
46 49
47/* 50/*
@@ -61,37 +64,10 @@ static DEFINE_SPINLOCK(au1xxx_dbdma_spin_lock);
61*/ 64*/
62#define ALIGN_ADDR(x, a) ((((u32)(x)) + (a-1)) & ~(a-1)) 65#define ALIGN_ADDR(x, a) ((((u32)(x)) + (a-1)) & ~(a-1))
63 66
64static volatile dbdma_global_t *dbdma_gptr = (dbdma_global_t *)DDMA_GLOBAL_BASE; 67static dbdma_global_t *dbdma_gptr = (dbdma_global_t *)DDMA_GLOBAL_BASE;
65static int dbdma_initialized; 68static int dbdma_initialized=0;
66static void au1xxx_dbdma_init(void); 69static void au1xxx_dbdma_init(void);
67 70
68typedef struct dbdma_device_table {
69 u32 dev_id;
70 u32 dev_flags;
71 u32 dev_tsize;
72 u32 dev_devwidth;
73 u32 dev_physaddr; /* If FIFO */
74 u32 dev_intlevel;
75 u32 dev_intpolarity;
76} dbdev_tab_t;
77
78typedef struct dbdma_chan_config {
79 u32 chan_flags;
80 u32 chan_index;
81 dbdev_tab_t *chan_src;
82 dbdev_tab_t *chan_dest;
83 au1x_dma_chan_t *chan_ptr;
84 au1x_ddma_desc_t *chan_desc_base;
85 au1x_ddma_desc_t *get_ptr, *put_ptr, *cur_ptr;
86 void *chan_callparam;
87 void (*chan_callback)(int, void *, struct pt_regs *);
88} chan_tab_t;
89
90#define DEV_FLAGS_INUSE (1 << 0)
91#define DEV_FLAGS_ANYUSE (1 << 1)
92#define DEV_FLAGS_OUT (1 << 2)
93#define DEV_FLAGS_IN (1 << 3)
94
95static dbdev_tab_t dbdev_tab[] = { 71static dbdev_tab_t dbdev_tab[] = {
96#ifdef CONFIG_SOC_AU1550 72#ifdef CONFIG_SOC_AU1550
97 /* UARTS */ 73 /* UARTS */
@@ -157,25 +133,25 @@ static dbdev_tab_t dbdev_tab[] = {
157 { DSCR_CMD0_MAE_BOTH, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 }, 133 { DSCR_CMD0_MAE_BOTH, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 },
158 { DSCR_CMD0_LCD, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 }, 134 { DSCR_CMD0_LCD, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 },
159 135
160 { DSCR_CMD0_SDMS_TX0, DEV_FLAGS_OUT, 0, 0, 0x00000000, 0, 0 }, 136 { DSCR_CMD0_SDMS_TX0, DEV_FLAGS_OUT, 4, 8, 0x10600000, 0, 0 },
161 { DSCR_CMD0_SDMS_RX0, DEV_FLAGS_IN, 0, 0, 0x00000000, 0, 0 }, 137 { DSCR_CMD0_SDMS_RX0, DEV_FLAGS_IN, 4, 8, 0x10600004, 0, 0 },
162 { DSCR_CMD0_SDMS_TX1, DEV_FLAGS_OUT, 0, 0, 0x00000000, 0, 0 }, 138 { DSCR_CMD0_SDMS_TX1, DEV_FLAGS_OUT, 4, 8, 0x10680000, 0, 0 },
163 { DSCR_CMD0_SDMS_RX1, DEV_FLAGS_IN, 0, 0, 0x00000000, 0, 0 }, 139 { DSCR_CMD0_SDMS_RX1, DEV_FLAGS_IN, 4, 8, 0x10680004, 0, 0 },
164 140
165 { DSCR_CMD0_AES_TX, DEV_FLAGS_OUT, 0, 0, 0x00000000, 0, 0 }, 141 { DSCR_CMD0_AES_RX, DEV_FLAGS_IN , 4, 32, 0x10300008, 0, 0 },
166 { DSCR_CMD0_AES_RX, DEV_FLAGS_IN, 0, 0, 0x00000000, 0, 0 }, 142 { DSCR_CMD0_AES_TX, DEV_FLAGS_OUT, 4, 32, 0x10300004, 0, 0 },
167 143
168 { DSCR_CMD0_PSC0_TX, DEV_FLAGS_OUT, 0, 0, 0x11a0001c, 0, 0 }, 144 { DSCR_CMD0_PSC0_TX, DEV_FLAGS_OUT, 0, 16, 0x11a0001c, 0, 0 },
169 { DSCR_CMD0_PSC0_RX, DEV_FLAGS_IN, 0, 0, 0x11a0001c, 0, 0 }, 145 { DSCR_CMD0_PSC0_RX, DEV_FLAGS_IN, 0, 16, 0x11a0001c, 0, 0 },
170 { DSCR_CMD0_PSC0_SYNC, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 }, 146 { DSCR_CMD0_PSC0_SYNC, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 },
171 147
172 { DSCR_CMD0_PSC1_TX, DEV_FLAGS_OUT, 0, 0, 0x11b0001c, 0, 0 }, 148 { DSCR_CMD0_PSC1_TX, DEV_FLAGS_OUT, 0, 16, 0x11b0001c, 0, 0 },
173 { DSCR_CMD0_PSC1_RX, DEV_FLAGS_IN, 0, 0, 0x11b0001c, 0, 0 }, 149 { DSCR_CMD0_PSC1_RX, DEV_FLAGS_IN, 0, 16, 0x11b0001c, 0, 0 },
174 { DSCR_CMD0_PSC1_SYNC, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 }, 150 { DSCR_CMD0_PSC1_SYNC, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 },
175 151
176 { DSCR_CMD0_CIM_RXA, DEV_FLAGS_IN, 0, 0, 0x00000000, 0, 0 }, 152 { DSCR_CMD0_CIM_RXA, DEV_FLAGS_IN, 0, 32, 0x14004020, 0, 0 },
177 { DSCR_CMD0_CIM_RXB, DEV_FLAGS_IN, 0, 0, 0x00000000, 0, 0 }, 153 { DSCR_CMD0_CIM_RXB, DEV_FLAGS_IN, 0, 32, 0x14004040, 0, 0 },
178 { DSCR_CMD0_CIM_RXC, DEV_FLAGS_IN, 0, 0, 0x00000000, 0, 0 }, 154 { DSCR_CMD0_CIM_RXC, DEV_FLAGS_IN, 0, 32, 0x14004060, 0, 0 },
179 { DSCR_CMD0_CIM_SYNC, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 }, 155 { DSCR_CMD0_CIM_SYNC, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 },
180 156
181 { DSCR_CMD0_NAND_FLASH, DEV_FLAGS_IN, 0, 0, 0x00000000, 0, 0 }, 157 { DSCR_CMD0_NAND_FLASH, DEV_FLAGS_IN, 0, 0, 0x00000000, 0, 0 },
@@ -184,6 +160,24 @@ static dbdev_tab_t dbdev_tab[] = {
184 160
185 { DSCR_CMD0_THROTTLE, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 }, 161 { DSCR_CMD0_THROTTLE, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 },
186 { DSCR_CMD0_ALWAYS, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 }, 162 { DSCR_CMD0_ALWAYS, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 },
163
164 /* Provide 16 user definable device types */
165 { 0, 0, 0, 0, 0, 0, 0 },
166 { 0, 0, 0, 0, 0, 0, 0 },
167 { 0, 0, 0, 0, 0, 0, 0 },
168 { 0, 0, 0, 0, 0, 0, 0 },
169 { 0, 0, 0, 0, 0, 0, 0 },
170 { 0, 0, 0, 0, 0, 0, 0 },
171 { 0, 0, 0, 0, 0, 0, 0 },
172 { 0, 0, 0, 0, 0, 0, 0 },
173 { 0, 0, 0, 0, 0, 0, 0 },
174 { 0, 0, 0, 0, 0, 0, 0 },
175 { 0, 0, 0, 0, 0, 0, 0 },
176 { 0, 0, 0, 0, 0, 0, 0 },
177 { 0, 0, 0, 0, 0, 0, 0 },
178 { 0, 0, 0, 0, 0, 0, 0 },
179 { 0, 0, 0, 0, 0, 0, 0 },
180 { 0, 0, 0, 0, 0, 0, 0 },
187}; 181};
188 182
189#define DBDEV_TAB_SIZE (sizeof(dbdev_tab) / sizeof(dbdev_tab_t)) 183#define DBDEV_TAB_SIZE (sizeof(dbdev_tab) / sizeof(dbdev_tab_t))
@@ -203,6 +197,36 @@ find_dbdev_id (u32 id)
203 return NULL; 197 return NULL;
204} 198}
205 199
200void * au1xxx_ddma_get_nextptr_virt(au1x_ddma_desc_t *dp)
201{
202 return phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr));
203}
204EXPORT_SYMBOL(au1xxx_ddma_get_nextptr_virt);
205
206u32
207au1xxx_ddma_add_device(dbdev_tab_t *dev)
208{
209 u32 ret = 0;
210 dbdev_tab_t *p=NULL;
211 static u16 new_id=0x1000;
212
213 p = find_dbdev_id(0);
214 if ( NULL != p )
215 {
216 memcpy(p, dev, sizeof(dbdev_tab_t));
217 p->dev_id = DSCR_DEV2CUSTOM_ID(new_id,dev->dev_id);
218 ret = p->dev_id;
219 new_id++;
220#if 0
221 printk("add_device: id:%x flags:%x padd:%x\n",
222 p->dev_id, p->dev_flags, p->dev_physaddr );
223#endif
224 }
225
226 return ret;
227}
228EXPORT_SYMBOL(au1xxx_ddma_add_device);
229
206/* Allocate a channel and return a non-zero descriptor if successful. 230/* Allocate a channel and return a non-zero descriptor if successful.
207*/ 231*/
208u32 232u32
@@ -215,7 +239,7 @@ au1xxx_dbdma_chan_alloc(u32 srcid, u32 destid,
215 int i; 239 int i;
216 dbdev_tab_t *stp, *dtp; 240 dbdev_tab_t *stp, *dtp;
217 chan_tab_t *ctp; 241 chan_tab_t *ctp;
218 volatile au1x_dma_chan_t *cp; 242 au1x_dma_chan_t *cp;
219 243
220 /* We do the intialization on the first channel allocation. 244 /* We do the intialization on the first channel allocation.
221 * We have to wait because of the interrupt handler initialization 245 * We have to wait because of the interrupt handler initialization
@@ -225,9 +249,6 @@ au1xxx_dbdma_chan_alloc(u32 srcid, u32 destid,
225 au1xxx_dbdma_init(); 249 au1xxx_dbdma_init();
226 dbdma_initialized = 1; 250 dbdma_initialized = 1;
227 251
228 if ((srcid > DSCR_NDEV_IDS) || (destid > DSCR_NDEV_IDS))
229 return 0;
230
231 if ((stp = find_dbdev_id(srcid)) == NULL) return 0; 252 if ((stp = find_dbdev_id(srcid)) == NULL) return 0;
232 if ((dtp = find_dbdev_id(destid)) == NULL) return 0; 253 if ((dtp = find_dbdev_id(destid)) == NULL) return 0;
233 254
@@ -271,7 +292,6 @@ au1xxx_dbdma_chan_alloc(u32 srcid, u32 destid,
271 */ 292 */
272 ctp = kmalloc(sizeof(chan_tab_t), GFP_KERNEL); 293 ctp = kmalloc(sizeof(chan_tab_t), GFP_KERNEL);
273 chan_tab_ptr[i] = ctp; 294 chan_tab_ptr[i] = ctp;
274 ctp->chan_index = chan = i;
275 break; 295 break;
276 } 296 }
277 } 297 }
@@ -279,10 +299,11 @@ au1xxx_dbdma_chan_alloc(u32 srcid, u32 destid,
279 299
280 if (ctp != NULL) { 300 if (ctp != NULL) {
281 memset(ctp, 0, sizeof(chan_tab_t)); 301 memset(ctp, 0, sizeof(chan_tab_t));
302 ctp->chan_index = chan = i;
282 dcp = DDMA_CHANNEL_BASE; 303 dcp = DDMA_CHANNEL_BASE;
283 dcp += (0x0100 * chan); 304 dcp += (0x0100 * chan);
284 ctp->chan_ptr = (au1x_dma_chan_t *)dcp; 305 ctp->chan_ptr = (au1x_dma_chan_t *)dcp;
285 cp = (volatile au1x_dma_chan_t *)dcp; 306 cp = (au1x_dma_chan_t *)dcp;
286 ctp->chan_src = stp; 307 ctp->chan_src = stp;
287 ctp->chan_dest = dtp; 308 ctp->chan_dest = dtp;
288 ctp->chan_callback = callback; 309 ctp->chan_callback = callback;
@@ -299,6 +320,9 @@ au1xxx_dbdma_chan_alloc(u32 srcid, u32 destid,
299 i |= DDMA_CFG_DED; 320 i |= DDMA_CFG_DED;
300 if (dtp->dev_intpolarity) 321 if (dtp->dev_intpolarity)
301 i |= DDMA_CFG_DP; 322 i |= DDMA_CFG_DP;
323 if ((stp->dev_flags & DEV_FLAGS_SYNC) ||
324 (dtp->dev_flags & DEV_FLAGS_SYNC))
325 i |= DDMA_CFG_SYNC;
302 cp->ddma_cfg = i; 326 cp->ddma_cfg = i;
303 au_sync(); 327 au_sync();
304 328
@@ -309,14 +333,14 @@ au1xxx_dbdma_chan_alloc(u32 srcid, u32 destid,
309 rv = (u32)(&chan_tab_ptr[chan]); 333 rv = (u32)(&chan_tab_ptr[chan]);
310 } 334 }
311 else { 335 else {
312 /* Release devices. 336 /* Release devices */
313 */
314 stp->dev_flags &= ~DEV_FLAGS_INUSE; 337 stp->dev_flags &= ~DEV_FLAGS_INUSE;
315 dtp->dev_flags &= ~DEV_FLAGS_INUSE; 338 dtp->dev_flags &= ~DEV_FLAGS_INUSE;
316 } 339 }
317 } 340 }
318 return rv; 341 return rv;
319} 342}
343EXPORT_SYMBOL(au1xxx_dbdma_chan_alloc);
320 344
321/* Set the device width if source or destination is a FIFO. 345/* Set the device width if source or destination is a FIFO.
322 * Should be 8, 16, or 32 bits. 346 * Should be 8, 16, or 32 bits.
@@ -344,6 +368,7 @@ au1xxx_dbdma_set_devwidth(u32 chanid, int bits)
344 368
345 return rv; 369 return rv;
346} 370}
371EXPORT_SYMBOL(au1xxx_dbdma_set_devwidth);
347 372
348/* Allocate a descriptor ring, initializing as much as possible. 373/* Allocate a descriptor ring, initializing as much as possible.
349*/ 374*/
@@ -370,7 +395,8 @@ au1xxx_dbdma_ring_alloc(u32 chanid, int entries)
370 * and if we try that first we are likely to not waste larger 395 * and if we try that first we are likely to not waste larger
371 * slabs of memory. 396 * slabs of memory.
372 */ 397 */
373 desc_base = (u32)kmalloc(entries * sizeof(au1x_ddma_desc_t), GFP_KERNEL); 398 desc_base = (u32)kmalloc(entries * sizeof(au1x_ddma_desc_t),
399 GFP_KERNEL|GFP_DMA);
374 if (desc_base == 0) 400 if (desc_base == 0)
375 return 0; 401 return 0;
376 402
@@ -381,7 +407,7 @@ au1xxx_dbdma_ring_alloc(u32 chanid, int entries)
381 kfree((const void *)desc_base); 407 kfree((const void *)desc_base);
382 i = entries * sizeof(au1x_ddma_desc_t); 408 i = entries * sizeof(au1x_ddma_desc_t);
383 i += (sizeof(au1x_ddma_desc_t) - 1); 409 i += (sizeof(au1x_ddma_desc_t) - 1);
384 if ((desc_base = (u32)kmalloc(i, GFP_KERNEL)) == 0) 410 if ((desc_base = (u32)kmalloc(i, GFP_KERNEL|GFP_DMA)) == 0)
385 return 0; 411 return 0;
386 412
387 desc_base = ALIGN_ADDR(desc_base, sizeof(au1x_ddma_desc_t)); 413 desc_base = ALIGN_ADDR(desc_base, sizeof(au1x_ddma_desc_t));
@@ -403,7 +429,13 @@ au1xxx_dbdma_ring_alloc(u32 chanid, int entries)
403 cmd0 |= DSCR_CMD0_SID(srcid); 429 cmd0 |= DSCR_CMD0_SID(srcid);
404 cmd0 |= DSCR_CMD0_DID(destid); 430 cmd0 |= DSCR_CMD0_DID(destid);
405 cmd0 |= DSCR_CMD0_IE | DSCR_CMD0_CV; 431 cmd0 |= DSCR_CMD0_IE | DSCR_CMD0_CV;
406 cmd0 |= DSCR_CMD0_ST(DSCR_CMD0_ST_CURRENT); 432 cmd0 |= DSCR_CMD0_ST(DSCR_CMD0_ST_NOCHANGE);
433
434 /* is it mem to mem transfer? */
435 if(((DSCR_CUSTOM2DEV_ID(srcid) == DSCR_CMD0_THROTTLE) || (DSCR_CUSTOM2DEV_ID(srcid) == DSCR_CMD0_ALWAYS)) &&
436 ((DSCR_CUSTOM2DEV_ID(destid) == DSCR_CMD0_THROTTLE) || (DSCR_CUSTOM2DEV_ID(destid) == DSCR_CMD0_ALWAYS))) {
437 cmd0 |= DSCR_CMD0_MEM;
438 }
407 439
408 switch (stp->dev_devwidth) { 440 switch (stp->dev_devwidth) {
409 case 8: 441 case 8:
@@ -461,9 +493,14 @@ au1xxx_dbdma_ring_alloc(u32 chanid, int entries)
461 /* If source input is fifo, set static address. 493 /* If source input is fifo, set static address.
462 */ 494 */
463 if (stp->dev_flags & DEV_FLAGS_IN) { 495 if (stp->dev_flags & DEV_FLAGS_IN) {
464 src0 = stp->dev_physaddr; 496 if ( stp->dev_flags & DEV_FLAGS_BURSTABLE )
497 src1 |= DSCR_SRC1_SAM(DSCR_xAM_BURST);
498 else
465 src1 |= DSCR_SRC1_SAM(DSCR_xAM_STATIC); 499 src1 |= DSCR_SRC1_SAM(DSCR_xAM_STATIC);
500
466 } 501 }
502 if (stp->dev_physaddr)
503 src0 = stp->dev_physaddr;
467 504
468 /* Set up dest1. For now, assume no stride and increment. 505 /* Set up dest1. For now, assume no stride and increment.
469 * A channel attribute update can change this later. 506 * A channel attribute update can change this later.
@@ -487,10 +524,18 @@ au1xxx_dbdma_ring_alloc(u32 chanid, int entries)
487 /* If destination output is fifo, set static address. 524 /* If destination output is fifo, set static address.
488 */ 525 */
489 if (dtp->dev_flags & DEV_FLAGS_OUT) { 526 if (dtp->dev_flags & DEV_FLAGS_OUT) {
490 dest0 = dtp->dev_physaddr; 527 if ( dtp->dev_flags & DEV_FLAGS_BURSTABLE )
528 dest1 |= DSCR_DEST1_DAM(DSCR_xAM_BURST);
529 else
491 dest1 |= DSCR_DEST1_DAM(DSCR_xAM_STATIC); 530 dest1 |= DSCR_DEST1_DAM(DSCR_xAM_STATIC);
492 } 531 }
532 if (dtp->dev_physaddr)
533 dest0 = dtp->dev_physaddr;
493 534
535#if 0
536 printk("did:%x sid:%x cmd0:%x cmd1:%x source0:%x source1:%x dest0:%x dest1:%x\n",
537 dtp->dev_id, stp->dev_id, cmd0, cmd1, src0, src1, dest0, dest1 );
538#endif
494 for (i=0; i<entries; i++) { 539 for (i=0; i<entries; i++) {
495 dp->dscr_cmd0 = cmd0; 540 dp->dscr_cmd0 = cmd0;
496 dp->dscr_cmd1 = cmd1; 541 dp->dscr_cmd1 = cmd1;
@@ -499,6 +544,8 @@ au1xxx_dbdma_ring_alloc(u32 chanid, int entries)
499 dp->dscr_dest0 = dest0; 544 dp->dscr_dest0 = dest0;
500 dp->dscr_dest1 = dest1; 545 dp->dscr_dest1 = dest1;
501 dp->dscr_stat = 0; 546 dp->dscr_stat = 0;
547 dp->sw_context = 0;
548 dp->sw_status = 0;
502 dp->dscr_nxtptr = DSCR_NXTPTR(virt_to_phys(dp + 1)); 549 dp->dscr_nxtptr = DSCR_NXTPTR(virt_to_phys(dp + 1));
503 dp++; 550 dp++;
504 } 551 }
@@ -511,13 +558,14 @@ au1xxx_dbdma_ring_alloc(u32 chanid, int entries)
511 558
512 return (u32)(ctp->chan_desc_base); 559 return (u32)(ctp->chan_desc_base);
513} 560}
561EXPORT_SYMBOL(au1xxx_dbdma_ring_alloc);
514 562
515/* Put a source buffer into the DMA ring. 563/* Put a source buffer into the DMA ring.
516 * This updates the source pointer and byte count. Normally used 564 * This updates the source pointer and byte count. Normally used
517 * for memory to fifo transfers. 565 * for memory to fifo transfers.
518 */ 566 */
519u32 567u32
520au1xxx_dbdma_put_source(u32 chanid, void *buf, int nbytes) 568_au1xxx_dbdma_put_source(u32 chanid, void *buf, int nbytes, u32 flags)
521{ 569{
522 chan_tab_t *ctp; 570 chan_tab_t *ctp;
523 au1x_ddma_desc_t *dp; 571 au1x_ddma_desc_t *dp;
@@ -544,8 +592,24 @@ au1xxx_dbdma_put_source(u32 chanid, void *buf, int nbytes)
544 */ 592 */
545 dp->dscr_source0 = virt_to_phys(buf); 593 dp->dscr_source0 = virt_to_phys(buf);
546 dp->dscr_cmd1 = nbytes; 594 dp->dscr_cmd1 = nbytes;
547 dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */ 595 /* Check flags */
548 ctp->chan_ptr->ddma_dbell = 0xffffffff; /* Make it go */ 596 if (flags & DDMA_FLAGS_IE)
597 dp->dscr_cmd0 |= DSCR_CMD0_IE;
598 if (flags & DDMA_FLAGS_NOIE)
599 dp->dscr_cmd0 &= ~DSCR_CMD0_IE;
600
601 /*
602 * There is an errata on the Au1200/Au1550 parts that could result
603 * in "stale" data being DMA'd. It has to do with the snoop logic on
604 * the dache eviction buffer. NONCOHERENT_IO is on by default for
605 * these parts. If it is fixedin the future, these dma_cache_inv will
606 * just be nothing more than empty macros. See io.h.
607 * */
608 dma_cache_wback_inv((unsigned long)buf, nbytes);
609 dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */
610 au_sync();
611 dma_cache_wback_inv((unsigned long)dp, sizeof(dp));
612 ctp->chan_ptr->ddma_dbell = 0;
549 613
550 /* Get next descriptor pointer. 614 /* Get next descriptor pointer.
551 */ 615 */
@@ -555,13 +619,14 @@ au1xxx_dbdma_put_source(u32 chanid, void *buf, int nbytes)
555 */ 619 */
556 return nbytes; 620 return nbytes;
557} 621}
622EXPORT_SYMBOL(_au1xxx_dbdma_put_source);
558 623
559/* Put a destination buffer into the DMA ring. 624/* Put a destination buffer into the DMA ring.
560 * This updates the destination pointer and byte count. Normally used 625 * This updates the destination pointer and byte count. Normally used
561 * to place an empty buffer into the ring for fifo to memory transfers. 626 * to place an empty buffer into the ring for fifo to memory transfers.
562 */ 627 */
563u32 628u32
564au1xxx_dbdma_put_dest(u32 chanid, void *buf, int nbytes) 629_au1xxx_dbdma_put_dest(u32 chanid, void *buf, int nbytes, u32 flags)
565{ 630{
566 chan_tab_t *ctp; 631 chan_tab_t *ctp;
567 au1x_ddma_desc_t *dp; 632 au1x_ddma_desc_t *dp;
@@ -583,11 +648,33 @@ au1xxx_dbdma_put_dest(u32 chanid, void *buf, int nbytes)
583 if (dp->dscr_cmd0 & DSCR_CMD0_V) 648 if (dp->dscr_cmd0 & DSCR_CMD0_V)
584 return 0; 649 return 0;
585 650
586 /* Load up buffer address and byte count. 651 /* Load up buffer address and byte count */
587 */ 652
653 /* Check flags */
654 if (flags & DDMA_FLAGS_IE)
655 dp->dscr_cmd0 |= DSCR_CMD0_IE;
656 if (flags & DDMA_FLAGS_NOIE)
657 dp->dscr_cmd0 &= ~DSCR_CMD0_IE;
658
588 dp->dscr_dest0 = virt_to_phys(buf); 659 dp->dscr_dest0 = virt_to_phys(buf);
589 dp->dscr_cmd1 = nbytes; 660 dp->dscr_cmd1 = nbytes;
661#if 0
662 printk("cmd0:%x cmd1:%x source0:%x source1:%x dest0:%x dest1:%x\n",
663 dp->dscr_cmd0, dp->dscr_cmd1, dp->dscr_source0,
664 dp->dscr_source1, dp->dscr_dest0, dp->dscr_dest1 );
665#endif
666 /*
667 * There is an errata on the Au1200/Au1550 parts that could result in
668 * "stale" data being DMA'd. It has to do with the snoop logic on the
669 * dache eviction buffer. NONCOHERENT_IO is on by default for these
670 * parts. If it is fixedin the future, these dma_cache_inv will just
671 * be nothing more than empty macros. See io.h.
672 * */
673 dma_cache_inv((unsigned long)buf,nbytes);
590 dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */ 674 dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */
675 au_sync();
676 dma_cache_wback_inv((unsigned long)dp, sizeof(dp));
677 ctp->chan_ptr->ddma_dbell = 0;
591 678
592 /* Get next descriptor pointer. 679 /* Get next descriptor pointer.
593 */ 680 */
@@ -597,6 +684,7 @@ au1xxx_dbdma_put_dest(u32 chanid, void *buf, int nbytes)
597 */ 684 */
598 return nbytes; 685 return nbytes;
599} 686}
687EXPORT_SYMBOL(_au1xxx_dbdma_put_dest);
600 688
601/* Get a destination buffer into the DMA ring. 689/* Get a destination buffer into the DMA ring.
602 * Normally used to get a full buffer from the ring during fifo 690 * Normally used to get a full buffer from the ring during fifo
@@ -646,7 +734,7 @@ void
646au1xxx_dbdma_stop(u32 chanid) 734au1xxx_dbdma_stop(u32 chanid)
647{ 735{
648 chan_tab_t *ctp; 736 chan_tab_t *ctp;
649 volatile au1x_dma_chan_t *cp; 737 au1x_dma_chan_t *cp;
650 int halt_timeout = 0; 738 int halt_timeout = 0;
651 739
652 ctp = *((chan_tab_t **)chanid); 740 ctp = *((chan_tab_t **)chanid);
@@ -666,6 +754,7 @@ au1xxx_dbdma_stop(u32 chanid)
666 cp->ddma_stat |= (DDMA_STAT_DB | DDMA_STAT_V); 754 cp->ddma_stat |= (DDMA_STAT_DB | DDMA_STAT_V);
667 au_sync(); 755 au_sync();
668} 756}
757EXPORT_SYMBOL(au1xxx_dbdma_stop);
669 758
670/* Start using the current descriptor pointer. If the dbdma encounters 759/* Start using the current descriptor pointer. If the dbdma encounters
671 * a not valid descriptor, it will stop. In this case, we can just 760 * a not valid descriptor, it will stop. In this case, we can just
@@ -675,17 +764,17 @@ void
675au1xxx_dbdma_start(u32 chanid) 764au1xxx_dbdma_start(u32 chanid)
676{ 765{
677 chan_tab_t *ctp; 766 chan_tab_t *ctp;
678 volatile au1x_dma_chan_t *cp; 767 au1x_dma_chan_t *cp;
679 768
680 ctp = *((chan_tab_t **)chanid); 769 ctp = *((chan_tab_t **)chanid);
681
682 cp = ctp->chan_ptr; 770 cp = ctp->chan_ptr;
683 cp->ddma_desptr = virt_to_phys(ctp->cur_ptr); 771 cp->ddma_desptr = virt_to_phys(ctp->cur_ptr);
684 cp->ddma_cfg |= DDMA_CFG_EN; /* Enable channel */ 772 cp->ddma_cfg |= DDMA_CFG_EN; /* Enable channel */
685 au_sync(); 773 au_sync();
686 cp->ddma_dbell = 0xffffffff; /* Make it go */ 774 cp->ddma_dbell = 0;
687 au_sync(); 775 au_sync();
688} 776}
777EXPORT_SYMBOL(au1xxx_dbdma_start);
689 778
690void 779void
691au1xxx_dbdma_reset(u32 chanid) 780au1xxx_dbdma_reset(u32 chanid)
@@ -704,15 +793,21 @@ au1xxx_dbdma_reset(u32 chanid)
704 793
705 do { 794 do {
706 dp->dscr_cmd0 &= ~DSCR_CMD0_V; 795 dp->dscr_cmd0 &= ~DSCR_CMD0_V;
796 /* reset our SW status -- this is used to determine
797 * if a descriptor is in use by upper level SW. Since
798 * posting can reset 'V' bit.
799 */
800 dp->sw_status = 0;
707 dp = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr)); 801 dp = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr));
708 } while (dp != ctp->chan_desc_base); 802 } while (dp != ctp->chan_desc_base);
709} 803}
804EXPORT_SYMBOL(au1xxx_dbdma_reset);
710 805
711u32 806u32
712au1xxx_get_dma_residue(u32 chanid) 807au1xxx_get_dma_residue(u32 chanid)
713{ 808{
714 chan_tab_t *ctp; 809 chan_tab_t *ctp;
715 volatile au1x_dma_chan_t *cp; 810 au1x_dma_chan_t *cp;
716 u32 rv; 811 u32 rv;
717 812
718 ctp = *((chan_tab_t **)chanid); 813 ctp = *((chan_tab_t **)chanid);
@@ -738,8 +833,7 @@ au1xxx_dbdma_chan_free(u32 chanid)
738 833
739 au1xxx_dbdma_stop(chanid); 834 au1xxx_dbdma_stop(chanid);
740 835
741 if (ctp->chan_desc_base != NULL) 836 kfree((void *)ctp->chan_desc_base);
742 kfree(ctp->chan_desc_base);
743 837
744 stp->dev_flags &= ~DEV_FLAGS_INUSE; 838 stp->dev_flags &= ~DEV_FLAGS_INUSE;
745 dtp->dev_flags &= ~DEV_FLAGS_INUSE; 839 dtp->dev_flags &= ~DEV_FLAGS_INUSE;
@@ -747,15 +841,16 @@ au1xxx_dbdma_chan_free(u32 chanid)
747 841
748 kfree(ctp); 842 kfree(ctp);
749} 843}
844EXPORT_SYMBOL(au1xxx_dbdma_chan_free);
750 845
751static irqreturn_t 846static irqreturn_t
752dbdma_interrupt(int irq, void *dev_id, struct pt_regs *regs) 847dbdma_interrupt(int irq, void *dev_id, struct pt_regs *regs)
753{ 848{
754 u32 intstat; 849 u32 intstat;
755 u32 chan_index; 850 u32 chan_index;
756 chan_tab_t *ctp; 851 chan_tab_t *ctp;
757 au1x_ddma_desc_t *dp; 852 au1x_ddma_desc_t *dp;
758 volatile au1x_dma_chan_t *cp; 853 au1x_dma_chan_t *cp;
759 854
760 intstat = dbdma_gptr->ddma_intstat; 855 intstat = dbdma_gptr->ddma_intstat;
761 au_sync(); 856 au_sync();
@@ -774,19 +869,27 @@ dbdma_interrupt(int irq, void *dev_id, struct pt_regs *regs)
774 (ctp->chan_callback)(irq, ctp->chan_callparam, regs); 869 (ctp->chan_callback)(irq, ctp->chan_callparam, regs);
775 870
776 ctp->cur_ptr = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr)); 871 ctp->cur_ptr = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr));
777 872 return IRQ_RETVAL(1);
778 return IRQ_HANDLED;
779} 873}
780 874
781static void 875static void au1xxx_dbdma_init(void)
782au1xxx_dbdma_init(void)
783{ 876{
877 int irq_nr;
878
784 dbdma_gptr->ddma_config = 0; 879 dbdma_gptr->ddma_config = 0;
785 dbdma_gptr->ddma_throttle = 0; 880 dbdma_gptr->ddma_throttle = 0;
786 dbdma_gptr->ddma_inten = 0xffff; 881 dbdma_gptr->ddma_inten = 0xffff;
787 au_sync(); 882 au_sync();
788 883
789 if (request_irq(AU1550_DDMA_INT, dbdma_interrupt, SA_INTERRUPT, 884#if defined(CONFIG_SOC_AU1550)
885 irq_nr = AU1550_DDMA_INT;
886#elif defined(CONFIG_SOC_AU1200)
887 irq_nr = AU1200_DDMA_INT;
888#else
889 #error Unknown Au1x00 SOC
890#endif
891
892 if (request_irq(irq_nr, dbdma_interrupt, SA_INTERRUPT,
790 "Au1xxx dbdma", (void *)dbdma_gptr)) 893 "Au1xxx dbdma", (void *)dbdma_gptr))
791 printk("Can't get 1550 dbdma irq"); 894 printk("Can't get 1550 dbdma irq");
792} 895}
@@ -797,7 +900,8 @@ au1xxx_dbdma_dump(u32 chanid)
797 chan_tab_t *ctp; 900 chan_tab_t *ctp;
798 au1x_ddma_desc_t *dp; 901 au1x_ddma_desc_t *dp;
799 dbdev_tab_t *stp, *dtp; 902 dbdev_tab_t *stp, *dtp;
800 volatile au1x_dma_chan_t *cp; 903 au1x_dma_chan_t *cp;
904 u32 i = 0;
801 905
802 ctp = *((chan_tab_t **)chanid); 906 ctp = *((chan_tab_t **)chanid);
803 stp = ctp->chan_src; 907 stp = ctp->chan_src;
@@ -822,15 +926,64 @@ au1xxx_dbdma_dump(u32 chanid)
822 dp = ctp->chan_desc_base; 926 dp = ctp->chan_desc_base;
823 927
824 do { 928 do {
825 printk("dp %08x, cmd0 %08x, cmd1 %08x\n", 929 printk("Dp[%d]= %08x, cmd0 %08x, cmd1 %08x\n",
826 (u32)dp, dp->dscr_cmd0, dp->dscr_cmd1); 930 i++, (u32)dp, dp->dscr_cmd0, dp->dscr_cmd1);
827 printk("src0 %08x, src1 %08x, dest0 %08x\n", 931 printk("src0 %08x, src1 %08x, dest0 %08x, dest1 %08x\n",
828 dp->dscr_source0, dp->dscr_source1, dp->dscr_dest0); 932 dp->dscr_source0, dp->dscr_source1, dp->dscr_dest0, dp->dscr_dest1);
829 printk("dest1 %08x, stat %08x, nxtptr %08x\n", 933 printk("stat %08x, nxtptr %08x\n",
830 dp->dscr_dest1, dp->dscr_stat, dp->dscr_nxtptr); 934 dp->dscr_stat, dp->dscr_nxtptr);
831 dp = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr)); 935 dp = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr));
832 } while (dp != ctp->chan_desc_base); 936 } while (dp != ctp->chan_desc_base);
833} 937}
834 938
939/* Put a descriptor into the DMA ring.
940 * This updates the source/destination pointers and byte count.
941 */
942u32
943au1xxx_dbdma_put_dscr(u32 chanid, au1x_ddma_desc_t *dscr )
944{
945 chan_tab_t *ctp;
946 au1x_ddma_desc_t *dp;
947 u32 nbytes=0;
948
949 /* I guess we could check this to be within the
950 * range of the table......
951 */
952 ctp = *((chan_tab_t **)chanid);
953
954 /* We should have multiple callers for a particular channel,
955 * an interrupt doesn't affect this pointer nor the descriptor,
956 * so no locking should be needed.
957 */
958 dp = ctp->put_ptr;
959
960 /* If the descriptor is valid, we are way ahead of the DMA
961 * engine, so just return an error condition.
962 */
963 if (dp->dscr_cmd0 & DSCR_CMD0_V)
964 return 0;
965
966 /* Load up buffer addresses and byte count.
967 */
968 dp->dscr_dest0 = dscr->dscr_dest0;
969 dp->dscr_source0 = dscr->dscr_source0;
970 dp->dscr_dest1 = dscr->dscr_dest1;
971 dp->dscr_source1 = dscr->dscr_source1;
972 dp->dscr_cmd1 = dscr->dscr_cmd1;
973 nbytes = dscr->dscr_cmd1;
974 /* Allow the caller to specifiy if an interrupt is generated */
975 dp->dscr_cmd0 &= ~DSCR_CMD0_IE;
976 dp->dscr_cmd0 |= dscr->dscr_cmd0 | DSCR_CMD0_V;
977 ctp->chan_ptr->ddma_dbell = 0;
978
979 /* Get next descriptor pointer.
980 */
981 ctp->put_ptr = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr));
982
983 /* return something not zero.
984 */
985 return nbytes;
986}
987
835#endif /* defined(CONFIG_SOC_AU1550) || defined(CONFIG_SOC_AU1200) */ 988#endif /* defined(CONFIG_SOC_AU1550) || defined(CONFIG_SOC_AU1200) */
836 989
diff --git a/arch/mips/au1000/common/dma.c b/arch/mips/au1000/common/dma.c
index 372c33f1353d..1905c6b104f2 100644
--- a/arch/mips/au1000/common/dma.c
+++ b/arch/mips/au1000/common/dma.c
@@ -39,7 +39,6 @@
39#include <linux/string.h> 39#include <linux/string.h>
40#include <linux/delay.h> 40#include <linux/delay.h>
41#include <linux/interrupt.h> 41#include <linux/interrupt.h>
42#include <linux/module.h>
43#include <asm/system.h> 42#include <asm/system.h>
44#include <asm/mach-au1x00/au1000.h> 43#include <asm/mach-au1x00/au1000.h>
45#include <asm/mach-au1x00/au1000_dma.h> 44#include <asm/mach-au1x00/au1000_dma.h>
diff --git a/arch/mips/au1000/common/gpio.c b/arch/mips/au1000/common/gpio.c
new file mode 100644
index 000000000000..5f5915b83142
--- /dev/null
+++ b/arch/mips/au1000/common/gpio.c
@@ -0,0 +1,119 @@
1/*
2 * This program is free software; you can redistribute it and/or modify it
3 * under the terms of the GNU General Public License as published by the
4 * Free Software Foundation; either version 2 of the License, or (at your
5 * option) any later version.
6 *
7 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
8 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
9 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
10 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
11 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
12 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
13 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
14 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
15 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
16 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
17 *
18 * You should have received a copy of the GNU General Public License along
19 * with this program; if not, write to the Free Software Foundation, Inc.,
20 * 675 Mass Ave, Cambridge, MA 02139, USA.
21 */
22#include <linux/config.h>
23#include <linux/module.h>
24#include <au1000.h>
25#include <au1xxx_gpio.h>
26
27#define gpio1 sys
28#if !defined(CONFIG_SOC_AU1000)
29static AU1X00_GPIO2 * const gpio2 = (AU1X00_GPIO2 *)GPIO2_BASE;
30
31#define GPIO2_OUTPUT_ENABLE_MASK 0x00010000
32
33int au1xxx_gpio2_read(int signal)
34{
35 signal -= 200;
36/* gpio2->dir &= ~(0x01 << signal); //Set GPIO to input */
37 return ((gpio2->pinstate >> signal) & 0x01);
38}
39
40void au1xxx_gpio2_write(int signal, int value)
41{
42 signal -= 200;
43
44 gpio2->output = (GPIO2_OUTPUT_ENABLE_MASK << signal) |
45 (value << signal);
46}
47
48void au1xxx_gpio2_tristate(int signal)
49{
50 signal -= 200;
51 gpio2->dir &= ~(0x01 << signal); /* Set GPIO to input */
52}
53#endif
54
55int au1xxx_gpio1_read(int signal)
56{
57/* gpio1->trioutclr |= (0x01 << signal); */
58 return ((gpio1->pinstaterd >> signal) & 0x01);
59}
60
61void au1xxx_gpio1_write(int signal, int value)
62{
63 if(value)
64 gpio1->outputset = (0x01 << signal);
65 else
66 gpio1->outputclr = (0x01 << signal); /* Output a Zero */
67}
68
69void au1xxx_gpio1_tristate(int signal)
70{
71 gpio1->trioutclr = (0x01 << signal); /* Tristate signal */
72}
73
74
75int au1xxx_gpio_read(int signal)
76{
77 if(signal >= 200)
78#if defined(CONFIG_SOC_AU1000)
79 return 0;
80#else
81 return au1xxx_gpio2_read(signal);
82#endif
83 else
84 return au1xxx_gpio1_read(signal);
85}
86
87void au1xxx_gpio_write(int signal, int value)
88{
89 if(signal >= 200)
90#if defined(CONFIG_SOC_AU1000)
91 ;
92#else
93 au1xxx_gpio2_write(signal, value);
94#endif
95 else
96 au1xxx_gpio1_write(signal, value);
97}
98
99void au1xxx_gpio_tristate(int signal)
100{
101 if(signal >= 200)
102#if defined(CONFIG_SOC_AU1000)
103 ;
104#else
105 au1xxx_gpio2_tristate(signal);
106#endif
107 else
108 au1xxx_gpio1_tristate(signal);
109}
110
111void au1xxx_gpio1_set_inputs(void)
112{
113 gpio1->pininputen = 0;
114}
115
116EXPORT_SYMBOL(au1xxx_gpio1_set_inputs);
117EXPORT_SYMBOL(au1xxx_gpio_tristate);
118EXPORT_SYMBOL(au1xxx_gpio_write);
119EXPORT_SYMBOL(au1xxx_gpio_read);
diff --git a/arch/mips/au1000/common/irq.c b/arch/mips/au1000/common/irq.c
index d1eb5a4a9a19..1339a0979f66 100644
--- a/arch/mips/au1000/common/irq.c
+++ b/arch/mips/au1000/common/irq.c
@@ -83,7 +83,7 @@ inline void local_disable_irq(unsigned int irq_nr);
83void (*board_init_irq)(void); 83void (*board_init_irq)(void);
84 84
85#ifdef CONFIG_PM 85#ifdef CONFIG_PM
86extern void counter0_irq(int irq, void *dev_id, struct pt_regs *regs); 86extern irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs);
87#endif 87#endif
88 88
89static DEFINE_SPINLOCK(irq_lock); 89static DEFINE_SPINLOCK(irq_lock);
@@ -253,52 +253,72 @@ void restore_local_and_enable(int controller, unsigned long mask)
253 253
254 254
255static struct hw_interrupt_type rise_edge_irq_type = { 255static struct hw_interrupt_type rise_edge_irq_type = {
256 "Au1000 Rise Edge", 256 .typename = "Au1000 Rise Edge",
257 startup_irq, 257 .startup = startup_irq,
258 shutdown_irq, 258 .shutdown = shutdown_irq,
259 local_enable_irq, 259 .enable = local_enable_irq,
260 local_disable_irq, 260 .disable = local_disable_irq,
261 mask_and_ack_rise_edge_irq, 261 .ack = mask_and_ack_rise_edge_irq,
262 end_irq, 262 .end = end_irq,
263 NULL
264}; 263};
265 264
266static struct hw_interrupt_type fall_edge_irq_type = { 265static struct hw_interrupt_type fall_edge_irq_type = {
267 "Au1000 Fall Edge", 266 .typename = "Au1000 Fall Edge",
268 startup_irq, 267 .startup = startup_irq,
269 shutdown_irq, 268 .shutdown = shutdown_irq,
270 local_enable_irq, 269 .enable = local_enable_irq,
271 local_disable_irq, 270 .disable = local_disable_irq,
272 mask_and_ack_fall_edge_irq, 271 .ack = mask_and_ack_fall_edge_irq,
273 end_irq, 272 .end = end_irq,
274 NULL
275}; 273};
276 274
277static struct hw_interrupt_type either_edge_irq_type = { 275static struct hw_interrupt_type either_edge_irq_type = {
278 "Au1000 Rise or Fall Edge", 276 .typename = "Au1000 Rise or Fall Edge",
279 startup_irq, 277 .startup = startup_irq,
280 shutdown_irq, 278 .shutdown = shutdown_irq,
281 local_enable_irq, 279 .enable = local_enable_irq,
282 local_disable_irq, 280 .disable = local_disable_irq,
283 mask_and_ack_either_edge_irq, 281 .ack = mask_and_ack_either_edge_irq,
284 end_irq, 282 .end = end_irq,
285 NULL
286}; 283};
287 284
288static struct hw_interrupt_type level_irq_type = { 285static struct hw_interrupt_type level_irq_type = {
289 "Au1000 Level", 286 .typename = "Au1000 Level",
290 startup_irq, 287 .startup = startup_irq,
291 shutdown_irq, 288 .shutdown = shutdown_irq,
292 local_enable_irq, 289 .enable = local_enable_irq,
293 local_disable_irq, 290 .disable = local_disable_irq,
294 mask_and_ack_level_irq, 291 .ack = mask_and_ack_level_irq,
295 end_irq, 292 .end = end_irq,
296 NULL
297}; 293};
298 294
299#ifdef CONFIG_PM 295#ifdef CONFIG_PM
300void startup_match20_interrupt(void) 296void startup_match20_interrupt(irqreturn_t (*handler)(int, void *, struct pt_regs *))
301{ 297{
298 struct irq_desc *desc = &irq_desc[AU1000_TOY_MATCH2_INT];
299
300 static struct irqaction action;
301 memset(&action, 0, sizeof(struct irqaction));
302
303 /* This is a big problem.... since we didn't use request_irq
304 * when kernel/irq.c calls probe_irq_xxx this interrupt will
305 * be probed for usage. This will end up disabling the device :(
306 * Give it a bogus "action" pointer -- this will keep it from
307 * getting auto-probed!
308 *
309 * By setting the status to match that of request_irq() we
310 * can avoid it. --cgray
311 */
312 action.dev_id = handler;
313 action.flags = SA_INTERRUPT;
314 cpus_clear(action.mask);
315 action.name = "Au1xxx TOY";
316 action.handler = handler;
317 action.next = NULL;
318
319 desc->action = &action;
320 desc->status &= ~(IRQ_DISABLED | IRQ_AUTODETECT | IRQ_WAITING | IRQ_INPROGRESS);
321
302 local_enable_irq(AU1000_TOY_MATCH2_INT); 322 local_enable_irq(AU1000_TOY_MATCH2_INT);
303} 323}
304#endif 324#endif
@@ -426,7 +446,6 @@ void __init arch_init_irq(void)
426 extern int au1xxx_ic0_nr_irqs; 446 extern int au1xxx_ic0_nr_irqs;
427 447
428 cp0_status = read_c0_status(); 448 cp0_status = read_c0_status();
429 memset(irq_desc, 0, sizeof(irq_desc));
430 set_except_vector(0, au1000_IRQ); 449 set_except_vector(0, au1000_IRQ);
431 450
432 /* Initialize interrupt controllers to a safe state. 451 /* Initialize interrupt controllers to a safe state.
@@ -492,7 +511,7 @@ void intc0_req0_irqdispatch(struct pt_regs *regs)
492 intc0_req0 |= au_readl(IC0_REQ0INT); 511 intc0_req0 |= au_readl(IC0_REQ0INT);
493 512
494 if (!intc0_req0) return; 513 if (!intc0_req0) return;
495 514#ifdef AU1000_USB_DEV_REQ_INT
496 /* 515 /*
497 * Because of the tight timing of SETUP token to reply 516 * Because of the tight timing of SETUP token to reply
498 * transactions, the USB devices-side packet complete 517 * transactions, the USB devices-side packet complete
@@ -503,7 +522,7 @@ void intc0_req0_irqdispatch(struct pt_regs *regs)
503 do_IRQ(AU1000_USB_DEV_REQ_INT, regs); 522 do_IRQ(AU1000_USB_DEV_REQ_INT, regs);
504 return; 523 return;
505 } 524 }
506 525#endif
507 irq = au_ffs(intc0_req0) - 1; 526 irq = au_ffs(intc0_req0) - 1;
508 intc0_req0 &= ~(1<<irq); 527 intc0_req0 &= ~(1<<irq);
509 do_IRQ(irq, regs); 528 do_IRQ(irq, regs);
@@ -521,17 +540,7 @@ void intc0_req1_irqdispatch(struct pt_regs *regs)
521 540
522 irq = au_ffs(intc0_req1) - 1; 541 irq = au_ffs(intc0_req1) - 1;
523 intc0_req1 &= ~(1<<irq); 542 intc0_req1 &= ~(1<<irq);
524#ifdef CONFIG_PM 543 do_IRQ(irq, regs);
525 if (irq == AU1000_TOY_MATCH2_INT) {
526 mask_and_ack_rise_edge_irq(irq);
527 counter0_irq(irq, NULL, regs);
528 local_enable_irq(irq);
529 }
530 else
531#endif
532 {
533 do_IRQ(irq, regs);
534 }
535} 544}
536 545
537 546
diff --git a/arch/mips/au1000/common/platform.c b/arch/mips/au1000/common/platform.c
index 0776b2db5641..1f7b465c8038 100644
--- a/arch/mips/au1000/common/platform.c
+++ b/arch/mips/au1000/common/platform.c
@@ -7,13 +7,15 @@
7 * License version 2. This program is licensed "as is" without any 7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied. 8 * warranty of any kind, whether express or implied.
9 */ 9 */
10#include <linux/config.h>
10#include <linux/device.h> 11#include <linux/device.h>
11#include <linux/kernel.h> 12#include <linux/kernel.h>
12#include <linux/init.h> 13#include <linux/init.h>
13#include <linux/resource.h> 14#include <linux/resource.h>
14 15
15#include <asm/mach-au1x00/au1000.h> 16#include <asm/mach-au1x00/au1xxx.h>
16 17
18/* OHCI (USB full speed host controller) */
17static struct resource au1xxx_usb_ohci_resources[] = { 19static struct resource au1xxx_usb_ohci_resources[] = {
18 [0] = { 20 [0] = {
19 .start = USB_OHCI_BASE, 21 .start = USB_OHCI_BASE,
@@ -41,8 +43,252 @@ static struct platform_device au1xxx_usb_ohci_device = {
41 .resource = au1xxx_usb_ohci_resources, 43 .resource = au1xxx_usb_ohci_resources,
42}; 44};
43 45
46/*** AU1100 LCD controller ***/
47
48#ifdef CONFIG_FB_AU1100
49static struct resource au1100_lcd_resources[] = {
50 [0] = {
51 .start = LCD_PHYS_ADDR,
52 .end = LCD_PHYS_ADDR + 0x800 - 1,
53 .flags = IORESOURCE_MEM,
54 },
55 [1] = {
56 .start = AU1100_LCD_INT,
57 .end = AU1100_LCD_INT,
58 .flags = IORESOURCE_IRQ,
59 }
60};
61
62static u64 au1100_lcd_dmamask = ~(u32)0;
63
64static struct platform_device au1100_lcd_device = {
65 .name = "au1100-lcd",
66 .id = 0,
67 .dev = {
68 .dma_mask = &au1100_lcd_dmamask,
69 .coherent_dma_mask = 0xffffffff,
70 },
71 .num_resources = ARRAY_SIZE(au1100_lcd_resources),
72 .resource = au1100_lcd_resources,
73};
74#endif
75
76#ifdef CONFIG_SOC_AU1200
77/* EHCI (USB high speed host controller) */
78static struct resource au1xxx_usb_ehci_resources[] = {
79 [0] = {
80 .start = USB_EHCI_BASE,
81 .end = USB_EHCI_BASE + USB_EHCI_LEN - 1,
82 .flags = IORESOURCE_MEM,
83 },
84 [1] = {
85 .start = AU1000_USB_HOST_INT,
86 .end = AU1000_USB_HOST_INT,
87 .flags = IORESOURCE_IRQ,
88 },
89};
90
91static u64 ehci_dmamask = ~(u32)0;
92
93static struct platform_device au1xxx_usb_ehci_device = {
94 .name = "au1xxx-ehci",
95 .id = 0,
96 .dev = {
97 .dma_mask = &ehci_dmamask,
98 .coherent_dma_mask = 0xffffffff,
99 },
100 .num_resources = ARRAY_SIZE(au1xxx_usb_ehci_resources),
101 .resource = au1xxx_usb_ehci_resources,
102};
103
104/* Au1200 UDC (USB gadget controller) */
105static struct resource au1xxx_usb_gdt_resources[] = {
106 [0] = {
107 .start = USB_UDC_BASE,
108 .end = USB_UDC_BASE + USB_UDC_LEN - 1,
109 .flags = IORESOURCE_MEM,
110 },
111 [1] = {
112 .start = AU1200_USB_INT,
113 .end = AU1200_USB_INT,
114 .flags = IORESOURCE_IRQ,
115 },
116};
117
118static struct resource au1xxx_mmc_resources[] = {
119 [0] = {
120 .start = SD0_PHYS_ADDR,
121 .end = SD0_PHYS_ADDR + 0x40,
122 .flags = IORESOURCE_MEM,
123 },
124 [1] = {
125 .start = SD1_PHYS_ADDR,
126 .end = SD1_PHYS_ADDR + 0x40,
127 .flags = IORESOURCE_MEM,
128 },
129 [2] = {
130 .start = AU1200_SD_INT,
131 .end = AU1200_SD_INT,
132 .flags = IORESOURCE_IRQ,
133 }
134};
135
136static u64 udc_dmamask = ~(u32)0;
137
138static struct platform_device au1xxx_usb_gdt_device = {
139 .name = "au1xxx-udc",
140 .id = 0,
141 .dev = {
142 .dma_mask = &udc_dmamask,
143 .coherent_dma_mask = 0xffffffff,
144 },
145 .num_resources = ARRAY_SIZE(au1xxx_usb_gdt_resources),
146 .resource = au1xxx_usb_gdt_resources,
147};
148
149/* Au1200 UOC (USB OTG controller) */
150static struct resource au1xxx_usb_otg_resources[] = {
151 [0] = {
152 .start = USB_UOC_BASE,
153 .end = USB_UOC_BASE + USB_UOC_LEN - 1,
154 .flags = IORESOURCE_MEM,
155 },
156 [1] = {
157 .start = AU1200_USB_INT,
158 .end = AU1200_USB_INT,
159 .flags = IORESOURCE_IRQ,
160 },
161};
162
163static u64 uoc_dmamask = ~(u32)0;
164
165static struct platform_device au1xxx_usb_otg_device = {
166 .name = "au1xxx-uoc",
167 .id = 0,
168 .dev = {
169 .dma_mask = &uoc_dmamask,
170 .coherent_dma_mask = 0xffffffff,
171 },
172 .num_resources = ARRAY_SIZE(au1xxx_usb_otg_resources),
173 .resource = au1xxx_usb_otg_resources,
174};
175
176static struct resource au1200_lcd_resources[] = {
177 [0] = {
178 .start = LCD_PHYS_ADDR,
179 .end = LCD_PHYS_ADDR + 0x800 - 1,
180 .flags = IORESOURCE_MEM,
181 },
182 [1] = {
183 .start = AU1200_LCD_INT,
184 .end = AU1200_LCD_INT,
185 .flags = IORESOURCE_IRQ,
186 }
187};
188
189static struct resource au1200_ide0_resources[] = {
190 [0] = {
191 .start = AU1XXX_ATA_PHYS_ADDR,
192 .end = AU1XXX_ATA_PHYS_ADDR + AU1XXX_ATA_PHYS_LEN,
193 .flags = IORESOURCE_MEM,
194 },
195 [1] = {
196 .start = AU1XXX_ATA_INT,
197 .end = AU1XXX_ATA_INT,
198 .flags = IORESOURCE_IRQ,
199 }
200};
201
202static u64 au1200_lcd_dmamask = ~(u32)0;
203
204static struct platform_device au1200_lcd_device = {
205 .name = "au1200-lcd",
206 .id = 0,
207 .dev = {
208 .dma_mask = &au1200_lcd_dmamask,
209 .coherent_dma_mask = 0xffffffff,
210 },
211 .num_resources = ARRAY_SIZE(au1200_lcd_resources),
212 .resource = au1200_lcd_resources,
213};
214
215
216static u64 ide0_dmamask = ~(u32)0;
217
218static struct platform_device au1200_ide0_device = {
219 .name = "au1200-ide",
220 .id = 0,
221 .dev = {
222 .dma_mask = &ide0_dmamask,
223 .coherent_dma_mask = 0xffffffff,
224 },
225 .num_resources = ARRAY_SIZE(au1200_ide0_resources),
226 .resource = au1200_ide0_resources,
227};
228
229static u64 au1xxx_mmc_dmamask = ~(u32)0;
230
231static struct platform_device au1xxx_mmc_device = {
232 .name = "au1xxx-mmc",
233 .id = 0,
234 .dev = {
235 .dma_mask = &au1xxx_mmc_dmamask,
236 .coherent_dma_mask = 0xffffffff,
237 },
238 .num_resources = ARRAY_SIZE(au1xxx_mmc_resources),
239 .resource = au1xxx_mmc_resources,
240};
241#endif /* #ifdef CONFIG_SOC_AU1200 */
242
243static struct platform_device au1x00_pcmcia_device = {
244 .name = "au1x00-pcmcia",
245 .id = 0,
246};
247
248#ifdef CONFIG_MIPS_DB1200
249
250static struct resource smc91x_resources[] = {
251 [0] = {
252 .name = "smc91x-regs",
253 .start = AU1XXX_SMC91111_PHYS_ADDR,
254 .end = AU1XXX_SMC91111_PHYS_ADDR + 0xfffff,
255 .flags = IORESOURCE_MEM,
256 },
257 [1] = {
258 .start = AU1XXX_SMC91111_IRQ,
259 .end = AU1XXX_SMC91111_IRQ,
260 .flags = IORESOURCE_IRQ,
261 },
262};
263
264static struct platform_device smc91x_device = {
265 .name = "smc91x",
266 .id = -1,
267 .num_resources = ARRAY_SIZE(smc91x_resources),
268 .resource = smc91x_resources,
269};
270
271#endif
272
44static struct platform_device *au1xxx_platform_devices[] __initdata = { 273static struct platform_device *au1xxx_platform_devices[] __initdata = {
45 &au1xxx_usb_ohci_device, 274 &au1xxx_usb_ohci_device,
275 &au1x00_pcmcia_device,
276#ifdef CONFIG_FB_AU1100
277 &au1100_lcd_device,
278#endif
279#ifdef CONFIG_SOC_AU1200
280#if 0 /* fixme */
281 &au1xxx_usb_ehci_device,
282#endif
283 &au1xxx_usb_gdt_device,
284 &au1xxx_usb_otg_device,
285 &au1200_lcd_device,
286 &au1200_ide0_device,
287 &au1xxx_mmc_device,
288#endif
289#ifdef CONFIG_MIPS_DB1200
290 &smc91x_device,
291#endif
46}; 292};
47 293
48int au1xxx_platform_init(void) 294int au1xxx_platform_init(void)
diff --git a/arch/mips/au1000/common/power.c b/arch/mips/au1000/common/power.c
index c40daccbb5b1..f85093b8d54d 100644
--- a/arch/mips/au1000/common/power.c
+++ b/arch/mips/au1000/common/power.c
@@ -34,11 +34,13 @@
34#include <linux/pm.h> 34#include <linux/pm.h>
35#include <linux/slab.h> 35#include <linux/slab.h>
36#include <linux/sysctl.h> 36#include <linux/sysctl.h>
37#include <linux/jiffies.h>
37 38
38#include <asm/string.h> 39#include <asm/string.h>
39#include <asm/uaccess.h> 40#include <asm/uaccess.h>
40#include <asm/io.h> 41#include <asm/io.h>
41#include <asm/system.h> 42#include <asm/system.h>
43#include <asm/cacheflush.h>
42#include <asm/mach-au1x00/au1000.h> 44#include <asm/mach-au1x00/au1000.h>
43 45
44#ifdef CONFIG_PM 46#ifdef CONFIG_PM
@@ -50,7 +52,7 @@
50# define DPRINTK(fmt, args...) 52# define DPRINTK(fmt, args...)
51#endif 53#endif
52 54
53static void calibrate_delay(void); 55static void au1000_calibrate_delay(void);
54 56
55extern void set_au1x00_speed(unsigned int new_freq); 57extern void set_au1x00_speed(unsigned int new_freq);
56extern unsigned int get_au1x00_speed(void); 58extern unsigned int get_au1x00_speed(void);
@@ -260,7 +262,7 @@ int au_sleep(void)
260} 262}
261 263
262static int pm_do_sleep(ctl_table * ctl, int write, struct file *file, 264static int pm_do_sleep(ctl_table * ctl, int write, struct file *file,
263 void *buffer, size_t * len) 265 void __user *buffer, size_t * len, loff_t *ppos)
264{ 266{
265 int retval = 0; 267 int retval = 0;
266#ifdef SLEEP_TEST_TIMEOUT 268#ifdef SLEEP_TEST_TIMEOUT
@@ -294,10 +296,9 @@ static int pm_do_sleep(ctl_table * ctl, int write, struct file *file,
294} 296}
295 297
296static int pm_do_suspend(ctl_table * ctl, int write, struct file *file, 298static int pm_do_suspend(ctl_table * ctl, int write, struct file *file,
297 void *buffer, size_t * len) 299 void __user *buffer, size_t * len, loff_t *ppos)
298{ 300{
299 int retval = 0; 301 int retval = 0;
300 void au1k_wait(void);
301 302
302 if (!write) { 303 if (!write) {
303 *len = 0; 304 *len = 0;
@@ -306,7 +307,7 @@ static int pm_do_suspend(ctl_table * ctl, int write, struct file *file,
306 if (retval) 307 if (retval)
307 return retval; 308 return retval;
308 suspend_mode = 1; 309 suspend_mode = 1;
309 au1k_wait(); 310
310 retval = pm_send_all(PM_RESUME, (void *) 0); 311 retval = pm_send_all(PM_RESUME, (void *) 0);
311 } 312 }
312 return retval; 313 return retval;
@@ -314,7 +315,7 @@ static int pm_do_suspend(ctl_table * ctl, int write, struct file *file,
314 315
315 316
316static int pm_do_freq(ctl_table * ctl, int write, struct file *file, 317static int pm_do_freq(ctl_table * ctl, int write, struct file *file,
317 void *buffer, size_t * len) 318 void __user *buffer, size_t * len, loff_t *ppos)
318{ 319{
319 int retval = 0, i; 320 int retval = 0, i;
320 unsigned long val, pll; 321 unsigned long val, pll;
@@ -409,14 +410,14 @@ static int pm_do_freq(ctl_table * ctl, int write, struct file *file,
409 410
410 411
411 /* We don't want _any_ interrupts other than 412 /* We don't want _any_ interrupts other than
412 * match20. Otherwise our calibrate_delay() 413 * match20. Otherwise our au1000_calibrate_delay()
413 * calculation will be off, potentially a lot. 414 * calculation will be off, potentially a lot.
414 */ 415 */
415 intc0_mask = save_local_and_disable(0); 416 intc0_mask = save_local_and_disable(0);
416 intc1_mask = save_local_and_disable(1); 417 intc1_mask = save_local_and_disable(1);
417 local_enable_irq(AU1000_TOY_MATCH2_INT); 418 local_enable_irq(AU1000_TOY_MATCH2_INT);
418 spin_unlock_irqrestore(&pm_lock, flags); 419 spin_unlock_irqrestore(&pm_lock, flags);
419 calibrate_delay(); 420 au1000_calibrate_delay();
420 restore_local_and_enable(0, intc0_mask); 421 restore_local_and_enable(0, intc0_mask);
421 restore_local_and_enable(1, intc1_mask); 422 restore_local_and_enable(1, intc1_mask);
422 return retval; 423 return retval;
@@ -456,7 +457,7 @@ __initcall(pm_init);
456 better than 1% */ 457 better than 1% */
457#define LPS_PREC 8 458#define LPS_PREC 8
458 459
459static void calibrate_delay(void) 460static void au1000_calibrate_delay(void)
460{ 461{
461 unsigned long ticks, loopbit; 462 unsigned long ticks, loopbit;
462 int lps_precision = LPS_PREC; 463 int lps_precision = LPS_PREC;
diff --git a/arch/mips/au1000/common/prom.c b/arch/mips/au1000/common/prom.c
index 22e5a85af4d5..9c171afd9a53 100644
--- a/arch/mips/au1000/common/prom.c
+++ b/arch/mips/au1000/common/prom.c
@@ -75,7 +75,8 @@ void prom_init_cmdline(void)
75 } 75 }
76 if (cp != &(arcs_cmdline[0])) /* get rid of trailing space */ 76 if (cp != &(arcs_cmdline[0])) /* get rid of trailing space */
77 --cp; 77 --cp;
78 *cp = '\0'; 78 if (prom_argc > 1)
79 *cp = '\0';
79 80
80} 81}
81 82
diff --git a/arch/mips/au1000/common/puts.c b/arch/mips/au1000/common/puts.c
index c2ae4624b77b..2705829cd466 100644
--- a/arch/mips/au1000/common/puts.c
+++ b/arch/mips/au1000/common/puts.c
@@ -39,7 +39,6 @@
39#define TIMEOUT 0xffffff 39#define TIMEOUT 0xffffff
40#define SLOW_DOWN 40#define SLOW_DOWN
41 41
42static const char digits[16] = "0123456789abcdef";
43static volatile unsigned long * const com1 = (unsigned long *)SERIAL_BASE; 42static volatile unsigned long * const com1 = (unsigned long *)SERIAL_BASE;
44 43
45 44
@@ -54,7 +53,7 @@ static inline void slow_down(void)
54#endif 53#endif
55 54
56void 55void
57putch(const unsigned char c) 56prom_putchar(const unsigned char c)
58{ 57{
59 unsigned char ch; 58 unsigned char ch;
60 int i = 0; 59 int i = 0;
@@ -69,77 +68,3 @@ putch(const unsigned char c)
69 } while (0 == (ch & TX_BUSY)); 68 } while (0 == (ch & TX_BUSY));
70 com1[SER_DATA] = c; 69 com1[SER_DATA] = c;
71} 70}
72
73void
74puts(unsigned char *cp)
75{
76 unsigned char ch;
77 int i = 0;
78
79 while (*cp) {
80 do {
81 ch = com1[SER_CMD];
82 slow_down();
83 i++;
84 if (i>TIMEOUT) {
85 break;
86 }
87 } while (0 == (ch & TX_BUSY));
88 com1[SER_DATA] = *cp++;
89 }
90 putch('\r');
91 putch('\n');
92}
93
94void
95fputs(const char *cp)
96{
97 unsigned char ch;
98 int i = 0;
99
100 while (*cp) {
101
102 do {
103 ch = com1[SER_CMD];
104 slow_down();
105 i++;
106 if (i>TIMEOUT) {
107 break;
108 }
109 } while (0 == (ch & TX_BUSY));
110 com1[SER_DATA] = *cp++;
111 }
112}
113
114
115void
116put64(uint64_t ul)
117{
118 int cnt;
119 unsigned ch;
120
121 cnt = 16; /* 16 nibbles in a 64 bit long */
122 putch('0');
123 putch('x');
124 do {
125 cnt--;
126 ch = (unsigned char)(ul >> cnt * 4) & 0x0F;
127 putch(digits[ch]);
128 } while (cnt > 0);
129}
130
131void
132put32(unsigned u)
133{
134 int cnt;
135 unsigned ch;
136
137 cnt = 8; /* 8 nibbles in a 32 bit long */
138 putch('0');
139 putch('x');
140 do {
141 cnt--;
142 ch = (unsigned char)(u >> cnt * 4) & 0x0F;
143 putch(digits[ch]);
144 } while (cnt > 0);
145}
diff --git a/arch/mips/au1000/common/setup.c b/arch/mips/au1000/common/setup.c
index eff89e109ce6..1ef15d5ef943 100644
--- a/arch/mips/au1000/common/setup.c
+++ b/arch/mips/au1000/common/setup.c
@@ -32,6 +32,7 @@
32#include <linux/mm.h> 32#include <linux/mm.h>
33#include <linux/delay.h> 33#include <linux/delay.h>
34#include <linux/interrupt.h> 34#include <linux/interrupt.h>
35#include <linux/module.h>
35 36
36#include <asm/cpu.h> 37#include <asm/cpu.h>
37#include <asm/bootinfo.h> 38#include <asm/bootinfo.h>
@@ -57,7 +58,7 @@ extern void au1xxx_time_init(void);
57extern void au1xxx_timer_setup(struct irqaction *irq); 58extern void au1xxx_timer_setup(struct irqaction *irq);
58extern void set_cpuspec(void); 59extern void set_cpuspec(void);
59 60
60static int __init au1x00_setup(void) 61void __init plat_setup(void)
61{ 62{
62 struct cpu_spec *sp; 63 struct cpu_spec *sp;
63 char *argptr; 64 char *argptr;
@@ -106,8 +107,6 @@ static int __init au1x00_setup(void)
106 /*strcat(argptr, " video=au1100fb:panel:Sharp_320x240_16");*/ 107 /*strcat(argptr, " video=au1100fb:panel:Sharp_320x240_16");*/
107#ifdef CONFIG_MIPS_HYDROGEN3 108#ifdef CONFIG_MIPS_HYDROGEN3
108 strcat(argptr, " video=au1100fb:panel:Hydrogen_3_NEC_panel_320x240,nohwcursor"); 109 strcat(argptr, " video=au1100fb:panel:Hydrogen_3_NEC_panel_320x240,nohwcursor");
109#else
110 strcat(argptr, " video=au1100fb:panel:s10,nohwcursor");
111#endif 110#endif
112 } 111 }
113#endif 112#endif
@@ -153,15 +152,11 @@ static int __init au1x00_setup(void)
153 au_sync(); 152 au_sync();
154 while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T0S); 153 while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T0S);
155 au_writel(0, SYS_TOYTRIM); 154 au_writel(0, SYS_TOYTRIM);
156
157 return 0;
158} 155}
159 156
160early_initcall(au1x00_setup);
161
162#if defined(CONFIG_64BIT_PHYS_ADDR) 157#if defined(CONFIG_64BIT_PHYS_ADDR)
163/* This routine should be valid for all Au1x based boards */ 158/* This routine should be valid for all Au1x based boards */
164phys_t fixup_bigphys_addr(phys_t phys_addr, phys_t size) 159phys_t __fixup_bigphys_addr(phys_t phys_addr, phys_t size)
165{ 160{
166 u32 start, end; 161 u32 start, end;
167 162
@@ -192,4 +187,5 @@ phys_t fixup_bigphys_addr(phys_t phys_addr, phys_t size)
192 /* default nop */ 187 /* default nop */
193 return phys_addr; 188 return phys_addr;
194} 189}
190EXPORT_SYMBOL(__fixup_bigphys_addr);
195#endif 191#endif
diff --git a/arch/mips/au1000/common/time.c b/arch/mips/au1000/common/time.c
index 57675b41480e..883d3f3d8c53 100644
--- a/arch/mips/au1000/common/time.c
+++ b/arch/mips/au1000/common/time.c
@@ -50,7 +50,6 @@
50#include <linux/mc146818rtc.h> 50#include <linux/mc146818rtc.h>
51#include <linux/timex.h> 51#include <linux/timex.h>
52 52
53extern void startup_match20_interrupt(void);
54extern void do_softirq(void); 53extern void do_softirq(void);
55extern volatile unsigned long wall_jiffies; 54extern volatile unsigned long wall_jiffies;
56unsigned long missed_heart_beats = 0; 55unsigned long missed_heart_beats = 0;
@@ -58,14 +57,17 @@ unsigned long missed_heart_beats = 0;
58static unsigned long r4k_offset; /* Amount to increment compare reg each time */ 57static unsigned long r4k_offset; /* Amount to increment compare reg each time */
59static unsigned long r4k_cur; /* What counter should be at next timer irq */ 58static unsigned long r4k_cur; /* What counter should be at next timer irq */
60int no_au1xxx_32khz; 59int no_au1xxx_32khz;
61void (*au1k_wait_ptr)(void); 60extern int allow_au1k_wait; /* default off for CP0 Counter */
62 61
63/* Cycle counter value at the previous timer interrupt.. */ 62/* Cycle counter value at the previous timer interrupt.. */
64static unsigned int timerhi = 0, timerlo = 0; 63static unsigned int timerhi = 0, timerlo = 0;
65 64
66#ifdef CONFIG_PM 65#ifdef CONFIG_PM
67#define MATCH20_INC 328 66#if HZ < 100 || HZ > 1000
68extern void startup_match20_interrupt(void); 67#error "unsupported HZ value! Must be in [100,1000]"
68#endif
69#define MATCH20_INC (328*100/HZ) /* magic number 328 is for HZ=100... */
70extern void startup_match20_interrupt(irqreturn_t (*handler)(int, void *, struct pt_regs *));
69static unsigned long last_pc0, last_match20; 71static unsigned long last_pc0, last_match20;
70#endif 72#endif
71 73
@@ -117,17 +119,16 @@ null:
117} 119}
118 120
119#ifdef CONFIG_PM 121#ifdef CONFIG_PM
120void counter0_irq(int irq, void *dev_id, struct pt_regs *regs) 122irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs)
121{ 123{
122 unsigned long pc0; 124 unsigned long pc0;
123 int time_elapsed; 125 int time_elapsed;
124 static int jiffie_drift = 0; 126 static int jiffie_drift = 0;
125 127
126 kstat.irqs[0][irq]++;
127 if (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20) { 128 if (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20) {
128 /* should never happen! */ 129 /* should never happen! */
129 printk(KERN_WARNING "counter 0 w status eror\n"); 130 printk(KERN_WARNING "counter 0 w status error\n");
130 return; 131 return IRQ_NONE;
131 } 132 }
132 133
133 pc0 = au_readl(SYS_TOYREAD); 134 pc0 = au_readl(SYS_TOYREAD);
@@ -164,6 +165,8 @@ void counter0_irq(int irq, void *dev_id, struct pt_regs *regs)
164 update_process_times(user_mode(regs)); 165 update_process_times(user_mode(regs));
165#endif 166#endif
166 } 167 }
168
169 return IRQ_HANDLED;
167} 170}
168 171
169/* When we wakeup from sleep, we have to "catch up" on all of the 172/* When we wakeup from sleep, we have to "catch up" on all of the
@@ -388,7 +391,6 @@ void au1xxx_timer_setup(struct irqaction *irq)
388{ 391{
389 unsigned int est_freq; 392 unsigned int est_freq;
390 extern unsigned long (*do_gettimeoffset)(void); 393 extern unsigned long (*do_gettimeoffset)(void);
391 extern void au1k_wait(void);
392 394
393 printk("calculating r4koff... "); 395 printk("calculating r4koff... ");
394 r4k_offset = cal_r4koff(); 396 r4k_offset = cal_r4koff();
@@ -441,18 +443,18 @@ void au1xxx_timer_setup(struct irqaction *irq)
441 au_sync(); 443 au_sync();
442 while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20); 444 while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20);
443 445
444 /* setup match20 to interrupt once every 10ms */ 446 /* setup match20 to interrupt once every HZ */
445 last_pc0 = last_match20 = au_readl(SYS_TOYREAD); 447 last_pc0 = last_match20 = au_readl(SYS_TOYREAD);
446 au_writel(last_match20 + MATCH20_INC, SYS_TOYMATCH2); 448 au_writel(last_match20 + MATCH20_INC, SYS_TOYMATCH2);
447 au_sync(); 449 au_sync();
448 while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20); 450 while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20);
449 startup_match20_interrupt(); 451 startup_match20_interrupt(counter0_irq);
450 452
451 do_gettimeoffset = do_fast_pm_gettimeoffset; 453 do_gettimeoffset = do_fast_pm_gettimeoffset;
452 454
453 /* We can use the real 'wait' instruction. 455 /* We can use the real 'wait' instruction.
454 */ 456 */
455 au1k_wait_ptr = au1k_wait; 457 allow_au1k_wait = 1;
456 } 458 }
457 459
458#else 460#else
diff --git a/arch/mips/au1000/common/usbdev.c b/arch/mips/au1000/common/usbdev.c
index 447a9a4612a8..0b21bed7ee55 100644
--- a/arch/mips/au1000/common/usbdev.c
+++ b/arch/mips/au1000/common/usbdev.c
@@ -1005,11 +1005,11 @@ process_ep0_receive (struct usb_dev* dev)
1005#endif 1005#endif
1006 dev->ep0_stage = SETUP_STAGE; 1006 dev->ep0_stage = SETUP_STAGE;
1007 break; 1007 break;
1008 } 1008 }
1009 1009
1010 spin_unlock(&ep0->lock); 1010 spin_unlock(&ep0->lock);
1011 // we're done processing the packet, free it 1011 // we're done processing the packet, free it
1012 kfree(pkt); 1012 kfree(pkt);
1013} 1013}
1014 1014
1015 1015
@@ -1072,8 +1072,7 @@ dma_done_ep0_intr(int irq, void *dev_id, struct pt_regs *regs)
1072 clear_dma_done1(ep0->indma); 1072 clear_dma_done1(ep0->indma);
1073 1073
1074 pkt = send_packet_complete(ep0); 1074 pkt = send_packet_complete(ep0);
1075 if (pkt) 1075 kfree(pkt);
1076 kfree(pkt);
1077 } 1076 }
1078 1077
1079 /* 1078 /*
@@ -1302,8 +1301,7 @@ usbdev_exit(void)
1302 endpoint_flush(ep); 1301 endpoint_flush(ep);
1303 } 1302 }
1304 1303
1305 if (usbdev.full_conf_desc) 1304 kfree(usbdev.full_conf_desc);
1306 kfree(usbdev.full_conf_desc);
1307} 1305}
1308 1306
1309int 1307int
diff --git a/arch/mips/au1000/csb250/init.c b/arch/mips/au1000/csb250/init.c
index bd99733abc0b..a4898b1bc66a 100644
--- a/arch/mips/au1000/csb250/init.c
+++ b/arch/mips/au1000/csb250/init.c
@@ -35,7 +35,6 @@
35#include <asm/bootinfo.h> 35#include <asm/bootinfo.h>
36#include <linux/string.h> 36#include <linux/string.h>
37#include <linux/kernel.h> 37#include <linux/kernel.h>
38#include <linux/sched.h>
39 38
40int prom_argc; 39int prom_argc;
41char **prom_argv, **prom_envp; 40char **prom_argv, **prom_envp;
diff --git a/arch/mips/au1000/db1x00/irqmap.c b/arch/mips/au1000/db1x00/irqmap.c
index 8f6ef0dbe1f8..f63024a9893a 100644
--- a/arch/mips/au1000/db1x00/irqmap.c
+++ b/arch/mips/au1000/db1x00/irqmap.c
@@ -48,6 +48,38 @@
48#include <asm/system.h> 48#include <asm/system.h>
49#include <asm/mach-au1x00/au1000.h> 49#include <asm/mach-au1x00/au1000.h>
50 50
51#ifdef CONFIG_MIPS_DB1500
52char irq_tab_alchemy[][5] __initdata = {
53 [12] = { -1, INTA, INTX, INTX, INTX}, /* IDSEL 12 - HPT371 */
54 [13] = { -1, INTA, INTB, INTC, INTD}, /* IDSEL 13 - PCI slot */
55};
56#endif
57
58#ifdef CONFIG_MIPS_BOSPORUS
59char irq_tab_alchemy[][5] __initdata = {
60 [11] = { -1, INTA, INTB, INTX, INTX}, /* IDSEL 11 - miniPCI */
61 [12] = { -1, INTA, INTX, INTX, INTX}, /* IDSEL 12 - SN1741 */
62 [13] = { -1, INTA, INTB, INTC, INTD}, /* IDSEL 13 - PCI slot */
63};
64#endif
65
66#ifdef CONFIG_MIPS_MIRAGE
67char irq_tab_alchemy[][5] __initdata = {
68 [11] = { -1, INTD, INTX, INTX, INTX}, /* IDSEL 11 - SMI VGX */
69 [12] = { -1, INTX, INTX, INTC, INTX}, /* IDSEL 12 - PNX1300 */
70 [13] = { -1, INTA, INTB, INTX, INTX}, /* IDSEL 13 - miniPCI */
71};
72#endif
73
74#ifdef CONFIG_MIPS_DB1550
75char irq_tab_alchemy[][5] __initdata = {
76 [11] = { -1, INTC, INTX, INTX, INTX}, /* IDSEL 11 - on-board HPT371 */
77 [12] = { -1, INTB, INTC, INTD, INTA}, /* IDSEL 12 - PCI slot 2 (left) */
78 [13] = { -1, INTA, INTB, INTC, INTD}, /* IDSEL 13 - PCI slot 1 (right) */
79};
80#endif
81
82
51au1xxx_irq_map_t au1xxx_irq_map[] = { 83au1xxx_irq_map_t au1xxx_irq_map[] = {
52 84
53#ifndef CONFIG_MIPS_MIRAGE 85#ifndef CONFIG_MIPS_MIRAGE
diff --git a/arch/mips/au1000/db1x00/mirage_ts.c b/arch/mips/au1000/db1x00/mirage_ts.c
index ade35e432004..c29852c24b4f 100644
--- a/arch/mips/au1000/db1x00/mirage_ts.c
+++ b/arch/mips/au1000/db1x00/mirage_ts.c
@@ -102,15 +102,15 @@ static struct {
102} mirage_ts_cal = 102} mirage_ts_cal =
103{ 103{
104#if 0 104#if 0
105 xscale: 84, 105 .xscale = 84,
106 xtrans: -157, 106 .xtrans = -157,
107 yscale: 66, 107 .yscale = 66,
108 ytrans: -150, 108 .ytrans = -150,
109#else 109#else
110 xscale: 84, 110 .xscale = 84,
111 xtrans: -150, 111 .xtrans = -150,
112 yscale: 66, 112 .yscale = 66,
113 ytrans: -146, 113 .ytrans = -146,
114#endif 114#endif
115}; 115};
116 116
diff --git a/arch/mips/au1000/hydrogen3/init.c b/arch/mips/au1000/hydrogen3/init.c
index 8cc9879dd582..01ab28483959 100644
--- a/arch/mips/au1000/hydrogen3/init.c
+++ b/arch/mips/au1000/hydrogen3/init.c
@@ -37,7 +37,6 @@
37#include <linux/config.h> 37#include <linux/config.h>
38#include <linux/string.h> 38#include <linux/string.h>
39#include <linux/kernel.h> 39#include <linux/kernel.h>
40#include <linux/sched.h>
41 40
42int prom_argc; 41int prom_argc;
43char **prom_argv, **prom_envp; 42char **prom_argv, **prom_envp;
diff --git a/arch/mips/au1000/mtx-1/init.c b/arch/mips/au1000/mtx-1/init.c
index 02e7dbcff727..88f2b6d97281 100644
--- a/arch/mips/au1000/mtx-1/init.c
+++ b/arch/mips/au1000/mtx-1/init.c
@@ -33,7 +33,6 @@
33#include <linux/sched.h> 33#include <linux/sched.h>
34#include <linux/init.h> 34#include <linux/init.h>
35#include <linux/mm.h> 35#include <linux/mm.h>
36#include <linux/sched.h>
37#include <linux/bootmem.h> 36#include <linux/bootmem.h>
38#include <asm/addrspace.h> 37#include <asm/addrspace.h>
39#include <asm/bootinfo.h> 38#include <asm/bootinfo.h>
diff --git a/arch/mips/au1000/mtx-1/irqmap.c b/arch/mips/au1000/mtx-1/irqmap.c
index ddcb9d089dc1..f9a0a8b9def2 100644
--- a/arch/mips/au1000/mtx-1/irqmap.c
+++ b/arch/mips/au1000/mtx-1/irqmap.c
@@ -47,6 +47,17 @@
47#include <asm/system.h> 47#include <asm/system.h>
48#include <asm/mach-au1x00/au1000.h> 48#include <asm/mach-au1x00/au1000.h>
49 49
50char irq_tab_alchemy[][5] __initdata = {
51 [0] = { -1, INTA, INTB, INTX, INTX}, /* IDSEL 00 - AdapterA-Slot0 (top) */
52 [1] = { -1, INTB, INTA, INTX, INTX}, /* IDSEL 01 - AdapterA-Slot1 (bottom) */
53 [2] = { -1, INTC, INTD, INTX, INTX}, /* IDSEL 02 - AdapterB-Slot0 (top) */
54 [3] = { -1, INTD, INTC, INTX, INTX}, /* IDSEL 03 - AdapterB-Slot1 (bottom) */
55 [4] = { -1, INTA, INTB, INTX, INTX}, /* IDSEL 04 - AdapterC-Slot0 (top) */
56 [5] = { -1, INTB, INTA, INTX, INTX}, /* IDSEL 05 - AdapterC-Slot1 (bottom) */
57 [6] = { -1, INTC, INTD, INTX, INTX}, /* IDSEL 06 - AdapterD-Slot0 (top) */
58 [7] = { -1, INTD, INTC, INTX, INTX}, /* IDSEL 07 - AdapterD-Slot1 (bottom) */
59};
60
50au1xxx_irq_map_t au1xxx_irq_map[] = { 61au1xxx_irq_map_t au1xxx_irq_map[] = {
51 { AU1500_GPIO_204, INTC_INT_HIGH_LEVEL, 0}, 62 { AU1500_GPIO_204, INTC_INT_HIGH_LEVEL, 0},
52 { AU1500_GPIO_201, INTC_INT_LOW_LEVEL, 0 }, 63 { AU1500_GPIO_201, INTC_INT_LOW_LEVEL, 0 },
diff --git a/arch/mips/au1000/pb1000/init.c b/arch/mips/au1000/pb1000/init.c
index 34713c5df0d7..e9fa1bab81f3 100644
--- a/arch/mips/au1000/pb1000/init.c
+++ b/arch/mips/au1000/pb1000/init.c
@@ -65,5 +65,4 @@ void __init prom_init(void)
65 memsize = simple_strtol(memsize_str, NULL, 0); 65 memsize = simple_strtol(memsize_str, NULL, 0);
66 } 66 }
67 add_memory_region(0, memsize, BOOT_MEM_RAM); 67 add_memory_region(0, memsize, BOOT_MEM_RAM);
68 return 0;
69} 68}
diff --git a/arch/mips/au1000/pb1200/Makefile b/arch/mips/au1000/pb1200/Makefile
new file mode 100644
index 000000000000..22b673cf55af
--- /dev/null
+++ b/arch/mips/au1000/pb1200/Makefile
@@ -0,0 +1,5 @@
1#
2# Makefile for the Alchemy Semiconductor PB1200 board.
3#
4
5lib-y := init.o board_setup.o irqmap.o
diff --git a/arch/mips/au1000/pb1200/board_setup.c b/arch/mips/au1000/pb1200/board_setup.c
new file mode 100644
index 000000000000..a45b17538ac9
--- /dev/null
+++ b/arch/mips/au1000/pb1200/board_setup.c
@@ -0,0 +1,193 @@
1/*
2 *
3 * BRIEF MODULE DESCRIPTION
4 * Alchemy Pb1200/Db1200 board setup.
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version.
10 *
11 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
12 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
13 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
14 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
15 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
17 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
18 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
19 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
20 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
21 *
22 * You should have received a copy of the GNU General Public License along
23 * with this program; if not, write to the Free Software Foundation, Inc.,
24 * 675 Mass Ave, Cambridge, MA 02139, USA.
25 */
26#include <linux/config.h>
27#include <linux/init.h>
28#include <linux/sched.h>
29#include <linux/ioport.h>
30#include <linux/mm.h>
31#include <linux/console.h>
32#include <linux/mc146818rtc.h>
33#include <linux/delay.h>
34
35#if defined(CONFIG_BLK_DEV_IDE_AU1XXX)
36#include <linux/ide.h>
37#endif
38
39#include <asm/cpu.h>
40#include <asm/bootinfo.h>
41#include <asm/irq.h>
42#include <asm/mipsregs.h>
43#include <asm/reboot.h>
44#include <asm/pgtable.h>
45#include <asm/mach-au1x00/au1000.h>
46#include <asm/mach-au1x00/au1xxx_dbdma.h>
47
48#ifdef CONFIG_MIPS_PB1200
49#include <asm/mach-pb1x00/pb1200.h>
50#endif
51
52#ifdef CONFIG_MIPS_DB1200
53#include <asm/mach-db1x00/db1200.h>
54#define PB1200_ETH_INT DB1200_ETH_INT
55#define PB1200_IDE_INT DB1200_IDE_INT
56#endif
57
58extern void _board_init_irq(void);
59extern void (*board_init_irq)(void);
60
61void board_reset (void)
62{
63 bcsr->resets = 0;
64 bcsr->system = 0;
65}
66
67void __init board_setup(void)
68{
69 char *argptr = NULL;
70 u32 pin_func;
71
72#if 0
73 /* Enable PSC1 SYNC for AC97. Normaly done in audio driver,
74 * but it is board specific code, so put it here.
75 */
76 pin_func = au_readl(SYS_PINFUNC);
77 au_sync();
78 pin_func |= SYS_PF_MUST_BE_SET | SYS_PF_PSC1_S1;
79 au_writel(pin_func, SYS_PINFUNC);
80
81 au_writel(0, (u32)bcsr|0x10); /* turn off pcmcia power */
82 au_sync();
83#endif
84
85#if defined(CONFIG_I2C_AU1550)
86 {
87 u32 freq0, clksrc;
88
89 /* Select SMBUS in CPLD */
90 bcsr->resets &= ~(BCSR_RESETS_PCS0MUX);
91
92 pin_func = au_readl(SYS_PINFUNC);
93 au_sync();
94 pin_func &= ~(3<<17 | 1<<4);
95 /* Set GPIOs correctly */
96 pin_func |= 2<<17;
97 au_writel(pin_func, SYS_PINFUNC);
98 au_sync();
99
100 /* The i2c driver depends on 50Mhz clock */
101 freq0 = au_readl(SYS_FREQCTRL0);
102 au_sync();
103 freq0 &= ~(SYS_FC_FRDIV1_MASK | SYS_FC_FS1 | SYS_FC_FE1);
104 freq0 |= (3<<SYS_FC_FRDIV1_BIT);
105 /* 396Mhz / (3+1)*2 == 49.5Mhz */
106 au_writel(freq0, SYS_FREQCTRL0);
107 au_sync();
108 freq0 |= SYS_FC_FE1;
109 au_writel(freq0, SYS_FREQCTRL0);
110 au_sync();
111
112 clksrc = au_readl(SYS_CLKSRC);
113 au_sync();
114 clksrc &= ~0x01f00000;
115 /* bit 22 is EXTCLK0 for PSC0 */
116 clksrc |= (0x3 << 22);
117 au_writel(clksrc, SYS_CLKSRC);
118 au_sync();
119 }
120#endif
121
122#ifdef CONFIG_FB_AU1200
123 argptr = prom_getcmdline();
124#ifdef CONFIG_MIPS_PB1200
125 strcat(argptr, " video=au1200fb:panel:bs");
126#endif
127#ifdef CONFIG_MIPS_DB1200
128 strcat(argptr, " video=au1200fb:panel:bs");
129#endif
130#endif
131
132 /* The Pb1200 development board uses external MUX for PSC0 to
133 support SMB/SPI. bcsr->resets bit 12: 0=SMB 1=SPI
134 */
135#if defined(CONFIG_AU1XXX_PSC_SPI) && defined(CONFIG_I2C_AU1550)
136 #error I2C and SPI are mutually exclusive. Both are physically connected to PSC0.\
137 Refer to Pb1200/Db1200 documentation.
138#elif defined( CONFIG_AU1XXX_PSC_SPI )
139 bcsr->resets |= BCSR_RESETS_PCS0MUX;
140 /*Hard Coding Value to enable Temp Sensors [bit 14] Value for SOC Au1200. Pls refer documentation*/
141 bcsr->resets =0x900f;
142#elif defined( CONFIG_I2C_AU1550 )
143 bcsr->resets &= (~BCSR_RESETS_PCS0MUX);
144#endif
145 au_sync();
146
147#ifdef CONFIG_MIPS_PB1200
148 printk("AMD Alchemy Pb1200 Board\n");
149#endif
150#ifdef CONFIG_MIPS_DB1200
151 printk("AMD Alchemy Db1200 Board\n");
152#endif
153
154 /* Setup Pb1200 External Interrupt Controller */
155 {
156 extern void (*board_init_irq)(void);
157 extern void _board_init_irq(void);
158 board_init_irq = _board_init_irq;
159 }
160}
161
162int
163board_au1200fb_panel (void)
164{
165 BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR;
166 int p;
167
168 p = bcsr->switches;
169 p >>= 8;
170 p &= 0x0F;
171 return p;
172}
173
174int
175board_au1200fb_panel_init (void)
176{
177 /* Apply power */
178 BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR;
179 bcsr->board |= (BCSR_BOARD_LCDVEE | BCSR_BOARD_LCDVDD | BCSR_BOARD_LCDBL);
180 /*printk("board_au1200fb_panel_init()\n"); */
181 return 0;
182}
183
184int
185board_au1200fb_panel_shutdown (void)
186{
187 /* Remove power */
188 BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR;
189 bcsr->board &= ~(BCSR_BOARD_LCDVEE | BCSR_BOARD_LCDVDD | BCSR_BOARD_LCDBL);
190 /*printk("board_au1200fb_panel_shutdown()\n"); */
191 return 0;
192}
193
diff --git a/arch/mips/au1000/pb1200/init.c b/arch/mips/au1000/pb1200/init.c
new file mode 100644
index 000000000000..27f09e374e15
--- /dev/null
+++ b/arch/mips/au1000/pb1200/init.c
@@ -0,0 +1,69 @@
1/*
2 *
3 * BRIEF MODULE DESCRIPTION
4 * PB1200 board setup
5 *
6 * Copyright 2001 MontaVista Software Inc.
7 * Author: MontaVista Software, Inc.
8 * ppopov@mvista.com or source@mvista.com
9 *
10 * This program 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 of the License, or (at your
13 * option) any later version.
14 *
15 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
16 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
17 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
18 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
21 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
22 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 *
26 * You should have received a copy of the GNU General Public License along
27 * with this program; if not, write to the Free Software Foundation, Inc.,
28 * 675 Mass Ave, Cambridge, MA 02139, USA.
29 */
30#include <linux/init.h>
31#include <linux/mm.h>
32#include <linux/sched.h>
33#include <linux/bootmem.h>
34#include <asm/addrspace.h>
35#include <asm/bootinfo.h>
36#include <linux/string.h>
37#include <linux/kernel.h>
38
39int prom_argc;
40char **prom_argv, **prom_envp;
41extern void __init prom_init_cmdline(void);
42extern char *prom_getenv(char *envname);
43
44const char *get_system_type(void)
45{
46 return "Alchemy Pb1200";
47}
48
49void __init prom_init(void)
50{
51 unsigned char *memsize_str;
52 unsigned long memsize;
53
54 prom_argc = (int) fw_arg0;
55 prom_argv = (char **) fw_arg1;
56 prom_envp = (char **) fw_arg2;
57
58 mips_machgroup = MACH_GROUP_ALCHEMY;
59 mips_machtype = MACH_PB1200;
60
61 prom_init_cmdline();
62 memsize_str = prom_getenv("memsize");
63 if (!memsize_str) {
64 memsize = 0x08000000;
65 } else {
66 memsize = simple_strtol(memsize_str, NULL, 0);
67 }
68 add_memory_region(0, memsize, BOOT_MEM_RAM);
69}
diff --git a/arch/mips/au1000/pb1200/irqmap.c b/arch/mips/au1000/pb1200/irqmap.c
new file mode 100644
index 000000000000..59e70e5cf325
--- /dev/null
+++ b/arch/mips/au1000/pb1200/irqmap.c
@@ -0,0 +1,182 @@
1/*
2 * BRIEF MODULE DESCRIPTION
3 * Au1xxx irq map table
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version.
9 *
10 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
11 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
13 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
14 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
15 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
16 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
17 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
18 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
19 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
20 *
21 * You should have received a copy of the GNU General Public License along
22 * with this program; if not, write to the Free Software Foundation, Inc.,
23 * 675 Mass Ave, Cambridge, MA 02139, USA.
24 */
25#include <linux/config.h>
26#include <linux/errno.h>
27#include <linux/init.h>
28#include <linux/irq.h>
29#include <linux/kernel_stat.h>
30#include <linux/module.h>
31#include <linux/signal.h>
32#include <linux/sched.h>
33#include <linux/types.h>
34#include <linux/interrupt.h>
35#include <linux/ioport.h>
36#include <linux/timex.h>
37#include <linux/slab.h>
38#include <linux/random.h>
39#include <linux/delay.h>
40
41#include <asm/bitops.h>
42#include <asm/bootinfo.h>
43#include <asm/io.h>
44#include <asm/mipsregs.h>
45#include <asm/system.h>
46#include <asm/mach-au1x00/au1000.h>
47
48#ifdef CONFIG_MIPS_PB1200
49#include <asm/mach-pb1x00/pb1200.h>
50#endif
51
52#ifdef CONFIG_MIPS_DB1200
53#include <asm/mach-db1x00/db1200.h>
54#define PB1200_INT_BEGIN DB1200_INT_BEGIN
55#define PB1200_INT_END DB1200_INT_END
56#endif
57
58au1xxx_irq_map_t au1xxx_irq_map[] = {
59 { AU1000_GPIO_7, INTC_INT_LOW_LEVEL, 0 }, // This is exteranl interrupt cascade
60};
61
62int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t);
63
64/*
65 * Support for External interrupts on the PbAu1200 Development platform.
66 */
67static volatile int pb1200_cascade_en=0;
68
69irqreturn_t pb1200_cascade_handler( int irq, void *dev_id, struct pt_regs *regs)
70{
71 unsigned short bisr = bcsr->int_status;
72 int extirq_nr = 0;
73
74 /* Clear all the edge interrupts. This has no effect on level */
75 bcsr->int_status = bisr;
76 for( ; bisr; bisr &= (bisr-1) )
77 {
78 extirq_nr = (PB1200_INT_BEGIN-1) + au_ffs(bisr);
79 /* Ack and dispatch IRQ */
80 do_IRQ(extirq_nr,regs);
81 }
82 return IRQ_RETVAL(1);
83}
84
85inline void pb1200_enable_irq(unsigned int irq_nr)
86{
87 bcsr->intset_mask = 1<<(irq_nr - PB1200_INT_BEGIN);
88 bcsr->intset = 1<<(irq_nr - PB1200_INT_BEGIN);
89}
90
91inline void pb1200_disable_irq(unsigned int irq_nr)
92{
93 bcsr->intclr_mask = 1<<(irq_nr - PB1200_INT_BEGIN);
94 bcsr->intclr = 1<<(irq_nr - PB1200_INT_BEGIN);
95}
96
97static unsigned int pb1200_startup_irq( unsigned int irq_nr )
98{
99 if (++pb1200_cascade_en == 1)
100 {
101 request_irq(AU1000_GPIO_7, &pb1200_cascade_handler,
102 0, "Pb1200 Cascade", (void *)&pb1200_cascade_handler );
103#ifdef CONFIG_MIPS_PB1200
104 /* We have a problem with CPLD rev3. Enable a workaround */
105 if( ((bcsr->whoami & BCSR_WHOAMI_CPLD)>>4) <= 3)
106 {
107 printk("\nWARNING!!!\n");
108 printk("\nWARNING!!!\n");
109 printk("\nWARNING!!!\n");
110 printk("\nWARNING!!!\n");
111 printk("\nWARNING!!!\n");
112 printk("\nWARNING!!!\n");
113 printk("Pb1200 must be at CPLD rev4. Please have Pb1200\n");
114 printk("updated to latest revision. This software will not\n");
115 printk("work on anything less than CPLD rev4\n");
116 printk("\nWARNING!!!\n");
117 printk("\nWARNING!!!\n");
118 printk("\nWARNING!!!\n");
119 printk("\nWARNING!!!\n");
120 printk("\nWARNING!!!\n");
121 printk("\nWARNING!!!\n");
122 while(1);
123 }
124#endif
125 }
126 pb1200_enable_irq(irq_nr);
127 return 0;
128}
129
130static void pb1200_shutdown_irq( unsigned int irq_nr )
131{
132 pb1200_disable_irq(irq_nr);
133 if (--pb1200_cascade_en == 0)
134 {
135 free_irq(AU1000_GPIO_7,&pb1200_cascade_handler );
136 }
137 return;
138}
139
140static inline void pb1200_mask_and_ack_irq(unsigned int irq_nr)
141{
142 pb1200_disable_irq( irq_nr );
143}
144
145static void pb1200_end_irq(unsigned int irq_nr)
146{
147 if (!(irq_desc[irq_nr].status & (IRQ_DISABLED|IRQ_INPROGRESS))) {
148 pb1200_enable_irq(irq_nr);
149 }
150}
151
152static struct hw_interrupt_type external_irq_type =
153{
154#ifdef CONFIG_MIPS_PB1200
155 "Pb1200 Ext",
156#endif
157#ifdef CONFIG_MIPS_DB1200
158 "Db1200 Ext",
159#endif
160 pb1200_startup_irq,
161 pb1200_shutdown_irq,
162 pb1200_enable_irq,
163 pb1200_disable_irq,
164 pb1200_mask_and_ack_irq,
165 pb1200_end_irq,
166 NULL
167};
168
169void _board_init_irq(void)
170{
171 int irq_nr;
172
173 for (irq_nr = PB1200_INT_BEGIN; irq_nr <= PB1200_INT_END; irq_nr++)
174 {
175 irq_desc[irq_nr].handler = &external_irq_type;
176 pb1200_disable_irq(irq_nr);
177 }
178
179 /* GPIO_7 can not be hooked here, so it is hooked upon first
180 request of any source attached to the cascade */
181}
182
diff --git a/arch/mips/au1000/pb1500/irqmap.c b/arch/mips/au1000/pb1500/irqmap.c
index 476e25001681..8cb76c2edb5e 100644
--- a/arch/mips/au1000/pb1500/irqmap.c
+++ b/arch/mips/au1000/pb1500/irqmap.c
@@ -47,6 +47,11 @@
47#include <asm/system.h> 47#include <asm/system.h>
48#include <asm/mach-au1x00/au1000.h> 48#include <asm/mach-au1x00/au1000.h>
49 49
50char irq_tab_alchemy[][5] __initdata = {
51 [12] = { -1, INTA, INTX, INTX, INTX}, /* IDSEL 12 - HPT370 */
52 [13] = { -1, INTA, INTB, INTC, INTD}, /* IDSEL 13 - PCI slot */
53};
54
50au1xxx_irq_map_t au1xxx_irq_map[] = { 55au1xxx_irq_map_t au1xxx_irq_map[] = {
51 { AU1500_GPIO_204, INTC_INT_HIGH_LEVEL, 0}, 56 { AU1500_GPIO_204, INTC_INT_HIGH_LEVEL, 0},
52 { AU1500_GPIO_201, INTC_INT_LOW_LEVEL, 0 }, 57 { AU1500_GPIO_201, INTC_INT_LOW_LEVEL, 0 },
diff --git a/arch/mips/au1000/pb1550/irqmap.c b/arch/mips/au1000/pb1550/irqmap.c
index 889d4949ee76..47c7a1c19f4b 100644
--- a/arch/mips/au1000/pb1550/irqmap.c
+++ b/arch/mips/au1000/pb1550/irqmap.c
@@ -47,6 +47,11 @@
47#include <asm/system.h> 47#include <asm/system.h>
48#include <asm/mach-au1x00/au1000.h> 48#include <asm/mach-au1x00/au1000.h>
49 49
50char irq_tab_alchemy[][5] __initdata = {
51 [12] = { -1, INTB, INTC, INTD, INTA}, /* IDSEL 12 - PCI slot 2 (left) */
52 [13] = { -1, INTA, INTB, INTC, INTD}, /* IDSEL 13 - PCI slot 1 (right) */
53};
54
50au1xxx_irq_map_t au1xxx_irq_map[] = { 55au1xxx_irq_map_t au1xxx_irq_map[] = {
51 { AU1000_GPIO_0, INTC_INT_LOW_LEVEL, 0 }, 56 { AU1000_GPIO_0, INTC_INT_LOW_LEVEL, 0 },
52 { AU1000_GPIO_1, INTC_INT_LOW_LEVEL, 0 }, 57 { AU1000_GPIO_1, INTC_INT_LOW_LEVEL, 0 },
diff --git a/arch/mips/boot/Makefile b/arch/mips/boot/Makefile
index efbeac326815..0dc84417bf49 100644
--- a/arch/mips/boot/Makefile
+++ b/arch/mips/boot/Makefile
@@ -33,6 +33,9 @@ vmlinux.ecoff: $(obj)/elf2ecoff $(VMLINUX)
33$(obj)/elf2ecoff: $(obj)/elf2ecoff.c 33$(obj)/elf2ecoff: $(obj)/elf2ecoff.c
34 $(HOSTCC) -o $@ $^ 34 $(HOSTCC) -o $@ $^
35 35
36vmlinux.bin: $(VMLINUX)
37 $(OBJCOPY) -O binary $(strip-flags) $(VMLINUX) $(obj)/vmlinux.bin
38
36vmlinux.srec: $(VMLINUX) 39vmlinux.srec: $(VMLINUX)
37 $(OBJCOPY) -S -O srec $(strip-flags) $(VMLINUX) $(obj)/vmlinux.srec 40 $(OBJCOPY) -S -O srec $(strip-flags) $(VMLINUX) $(obj)/vmlinux.srec
38 41
@@ -45,5 +48,6 @@ archhelp:
45 48
46clean-files += addinitrd \ 49clean-files += addinitrd \
47 elf2ecoff \ 50 elf2ecoff \
51 vmlinux.bin \
48 vmlinux.ecoff \ 52 vmlinux.ecoff \
49 vmlinux.srec 53 vmlinux.srec
diff --git a/arch/mips/cobalt/Makefile b/arch/mips/cobalt/Makefile
index a5e6554b2326..3b6b7579d1de 100644
--- a/arch/mips/cobalt/Makefile
+++ b/arch/mips/cobalt/Makefile
@@ -2,6 +2,6 @@
2# Makefile for the Cobalt micro systems family specific parts of the kernel 2# Makefile for the Cobalt micro systems family specific parts of the kernel
3# 3#
4 4
5obj-y := irq.o int-handler.o reset.o setup.o promcon.o 5obj-y := irq.o int-handler.o reset.o setup.o
6 6
7EXTRA_AFLAGS := $(CFLAGS) 7EXTRA_AFLAGS := $(CFLAGS)
diff --git a/arch/mips/cobalt/int-handler.S b/arch/mips/cobalt/int-handler.S
index 1a21dec1b3ca..f92608e8d84f 100644
--- a/arch/mips/cobalt/int-handler.S
+++ b/arch/mips/cobalt/int-handler.S
@@ -18,8 +18,8 @@
18 SAVE_ALL 18 SAVE_ALL
19 CLI 19 CLI
20 20
21 la ra, ret_from_irq 21 PTR_LA ra, ret_from_irq
22 move a1, sp 22 move a0, sp
23 j cobalt_irq 23 j cobalt_irq
24 24
25 END(cobalt_handle_int) 25 END(cobalt_handle_int)
diff --git a/arch/mips/cobalt/irq.c b/arch/mips/cobalt/irq.c
index 6d2a81581397..0d90851f925e 100644
--- a/arch/mips/cobalt/irq.c
+++ b/arch/mips/cobalt/irq.c
@@ -10,6 +10,8 @@
10#include <linux/kernel.h> 10#include <linux/kernel.h>
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/irq.h> 12#include <linux/irq.h>
13#include <linux/interrupt.h>
14#include <linux/pci.h>
13 15
14#include <asm/i8259.h> 16#include <asm/i8259.h>
15#include <asm/irq_cpu.h> 17#include <asm/irq_cpu.h>
@@ -25,8 +27,8 @@ extern void cobalt_handle_int(void);
25 * the CPU interrupt lines, and ones that come in on the via chip. The CPU 27 * the CPU interrupt lines, and ones that come in on the via chip. The CPU
26 * mappings are: 28 * mappings are:
27 * 29 *
28 * 16, - Software interrupt 0 (unused) IE_SW0 30 * 16 - Software interrupt 0 (unused) IE_SW0
29 * 17 - Software interrupt 1 (unused) IE_SW0 31 * 17 - Software interrupt 1 (unused) IE_SW1
30 * 18 - Galileo chip (timer) IE_IRQ0 32 * 18 - Galileo chip (timer) IE_IRQ0
31 * 19 - Tulip 0 + NCR SCSI IE_IRQ1 33 * 19 - Tulip 0 + NCR SCSI IE_IRQ1
32 * 20 - Tulip 1 IE_IRQ2 34 * 20 - Tulip 1 IE_IRQ2
@@ -42,61 +44,94 @@ extern void cobalt_handle_int(void);
42 * 15 - IDE1 44 * 15 - IDE1
43 */ 45 */
44 46
45asmlinkage void cobalt_irq(struct pt_regs *regs) 47static inline void galileo_irq(struct pt_regs *regs)
46{ 48{
47 unsigned int pending = read_c0_status() & read_c0_cause(); 49 unsigned int mask, pending, devfn;
48
49 if (pending & CAUSEF_IP2) { /* int 18 */
50 unsigned long irq_src = GALILEO_INL(GT_INTRCAUSE_OFS);
51
52 /* Check for timer irq ... */
53 if (irq_src & GALILEO_T0EXP) {
54 /* Clear the int line */
55 GALILEO_OUTL(0, GT_INTRCAUSE_OFS);
56 do_IRQ(COBALT_TIMER_IRQ, regs);
57 }
58 return;
59 }
60 50
61 if (pending & CAUSEF_IP6) { /* int 22 */ 51 mask = GALILEO_INL(GT_INTRMASK_OFS);
62 int irq = i8259_irq(); 52 pending = GALILEO_INL(GT_INTRCAUSE_OFS) & mask;
63 53
64 if (irq >= 0) 54 if (pending & GALILEO_INTR_T0EXP) {
65 do_IRQ(irq, regs);
66 return;
67 }
68 55
69 if (pending & CAUSEF_IP3) { /* int 19 */ 56 GALILEO_OUTL(~GALILEO_INTR_T0EXP, GT_INTRCAUSE_OFS);
70 do_IRQ(COBALT_ETH0_IRQ, regs); 57 do_IRQ(COBALT_GALILEO_IRQ, regs);
71 return;
72 }
73 58
74 if (pending & CAUSEF_IP4) { /* int 20 */ 59 } else if (pending & GALILEO_INTR_RETRY_CTR) {
75 do_IRQ(COBALT_ETH1_IRQ, regs);
76 return;
77 }
78 60
79 if (pending & CAUSEF_IP5) { /* int 21 */ 61 devfn = GALILEO_INL(GT_PCI0_CFGADDR_OFS) >> 8;
80 do_IRQ(COBALT_SERIAL_IRQ, regs); 62 GALILEO_OUTL(~GALILEO_INTR_RETRY_CTR, GT_INTRCAUSE_OFS);
81 return; 63 printk(KERN_WARNING "Galileo: PCI retry count exceeded (%02x.%u)\n",
82 } 64 PCI_SLOT(devfn), PCI_FUNC(devfn));
65
66 } else {
83 67
84 if (pending & CAUSEF_IP7) { /* int 23 */ 68 GALILEO_OUTL(mask & ~pending, GT_INTRMASK_OFS);
85 do_IRQ(COBALT_QUBE_SLOT_IRQ, regs); 69 printk(KERN_WARNING "Galileo: masking unexpected interrupt %08x\n", pending);
86 return;
87 } 70 }
88} 71}
89 72
73static inline void via_pic_irq(struct pt_regs *regs)
74{
75 int irq;
76
77 irq = i8259_irq();
78 if (irq >= 0)
79 do_IRQ(irq, regs);
80}
81
82asmlinkage void cobalt_irq(struct pt_regs *regs)
83{
84 unsigned pending;
85
86 pending = read_c0_status() & read_c0_cause();
87
88 if (pending & CAUSEF_IP2) /* COBALT_GALILEO_IRQ (18) */
89
90 galileo_irq(regs);
91
92 else if (pending & CAUSEF_IP6) /* COBALT_VIA_IRQ (22) */
93
94 via_pic_irq(regs);
95
96 else if (pending & CAUSEF_IP3) /* COBALT_ETH0_IRQ (19) */
97
98 do_IRQ(COBALT_CPU_IRQ + 3, regs);
99
100 else if (pending & CAUSEF_IP4) /* COBALT_ETH1_IRQ (20) */
101
102 do_IRQ(COBALT_CPU_IRQ + 4, regs);
103
104 else if (pending & CAUSEF_IP5) /* COBALT_SERIAL_IRQ (21) */
105
106 do_IRQ(COBALT_CPU_IRQ + 5, regs);
107
108 else if (pending & CAUSEF_IP7) /* IRQ 23 */
109
110 do_IRQ(COBALT_CPU_IRQ + 7, regs);
111}
112
113static struct irqaction irq_via = {
114 no_action, 0, { { 0, } }, "cascade", NULL, NULL
115};
116
90void __init arch_init_irq(void) 117void __init arch_init_irq(void)
91{ 118{
119 /*
120 * Mask all Galileo interrupts. The Galileo
121 * handler is set in cobalt_timer_setup()
122 */
123 GALILEO_OUTL(0, GT_INTRMASK_OFS);
124
92 set_except_vector(0, cobalt_handle_int); 125 set_except_vector(0, cobalt_handle_int);
93 126
94 init_i8259_irqs(); /* 0 ... 15 */ 127 init_i8259_irqs(); /* 0 ... 15 */
95 mips_cpu_irq_init(16); /* 16 ... 23 */ 128 mips_cpu_irq_init(COBALT_CPU_IRQ); /* 16 ... 23 */
96 129
97 /* 130 /*
98 * Mask all cpu interrupts 131 * Mask all cpu interrupts
99 * (except IE4, we already masked those at VIA level) 132 * (except IE4, we already masked those at VIA level)
100 */ 133 */
101 change_c0_status(ST0_IM, IE_IRQ4); 134 change_c0_status(ST0_IM, IE_IRQ4);
135
136 setup_irq(COBALT_VIA_IRQ, &irq_via);
102} 137}
diff --git a/arch/mips/cobalt/promcon.c b/arch/mips/cobalt/promcon.c
deleted file mode 100644
index f03df761e9f1..000000000000
--- a/arch/mips/cobalt/promcon.c
+++ /dev/null
@@ -1,87 +0,0 @@
1/*
2 * PROM console for Cobalt Raq2
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 *
8 * Copyright (C) 1995, 1996, 1997 by Ralf Baechle
9 * Copyright (C) 2001 by Liam Davies (ldavies@agile.tv)
10 *
11 */
12
13#include <linux/init.h>
14#include <linux/console.h>
15#include <linux/kdev_t.h>
16#include <linux/serial_reg.h>
17
18#include <asm/delay.h>
19#include <asm/serial.h>
20#include <asm/io.h>
21
22static unsigned long port = 0xc800000;
23
24static __inline__ void ns16550_cons_put_char(char ch, unsigned long ioaddr)
25{
26 char lsr;
27
28 do {
29 lsr = inb(ioaddr + UART_LSR);
30 } while ((lsr & (UART_LSR_TEMT | UART_LSR_THRE)) != (UART_LSR_TEMT | UART_LSR_THRE));
31 outb(ch, ioaddr + UART_TX);
32}
33
34static __inline__ char ns16550_cons_get_char(unsigned long ioaddr)
35{
36 while ((inb(ioaddr + UART_LSR) & UART_LSR_DR) == 0)
37 udelay(1);
38 return inb(ioaddr + UART_RX);
39}
40
41void ns16550_console_write(struct console *co, const char *s, unsigned count)
42{
43 char lsr, ier;
44 unsigned i;
45
46 ier = inb(port + UART_IER);
47 outb(0x00, port + UART_IER);
48 for (i=0; i < count; i++, s++) {
49
50 if(*s == '\n')
51 ns16550_cons_put_char('\r', port);
52 ns16550_cons_put_char(*s, port);
53 }
54
55 do {
56 lsr = inb(port + UART_LSR);
57 } while ((lsr & (UART_LSR_TEMT | UART_LSR_THRE)) != (UART_LSR_TEMT | UART_LSR_THRE));
58
59 outb(ier, port + UART_IER);
60}
61
62char getDebugChar(void)
63{
64 return ns16550_cons_get_char(port);
65}
66
67void putDebugChar(char kgdb_char)
68{
69 ns16550_cons_put_char(kgdb_char, port);
70}
71
72static struct console ns16550_console = {
73 .name = "prom",
74 .setup = NULL,
75 .write = ns16550_console_write,
76 .flags = CON_PRINTBUFFER,
77 .index = -1,
78};
79
80static int __init ns16550_setup_console(void)
81{
82 register_console(&ns16550_console);
83
84 return 0;
85}
86
87console_initcall(ns16550_setup_console);
diff --git a/arch/mips/cobalt/reset.c b/arch/mips/cobalt/reset.c
index 084c8e59f42c..805a0e88507b 100644
--- a/arch/mips/cobalt/reset.c
+++ b/arch/mips/cobalt/reset.c
@@ -16,48 +16,45 @@
16#include <asm/reboot.h> 16#include <asm/reboot.h>
17#include <asm/system.h> 17#include <asm/system.h>
18#include <asm/mipsregs.h> 18#include <asm/mipsregs.h>
19#include <asm/cobalt/cobalt.h>
19 20
20void cobalt_machine_restart(char *command) 21void cobalt_machine_halt(void)
21{ 22{
22 *(volatile char *)0xbc000000 = 0x0f; 23 int state, last, diff;
24 unsigned long mark;
23 25
24 /* 26 /*
25 * Ouch, we're still alive ... This time we take the silver bullet ... 27 * turn off bar on Qube, flash power off LED on RaQ (0.5Hz)
26 * ... and find that we leave the hardware in a state in which the 28 *
27 * kernel in the flush locks up somewhen during of after the PCI 29 * restart if ENTER and SELECT are pressed
28 * detection stuff.
29 */ 30 */
30 set_c0_status(ST0_BEV | ST0_ERL);
31 change_c0_config(CONF_CM_CMASK, CONF_CM_UNCACHED);
32 flush_cache_all();
33 write_c0_wired(0);
34 __asm__ __volatile__(
35 "jr\t%0"
36 :
37 : "r" (0xbfc00000));
38}
39 31
40extern int led_state; 32 last = COBALT_KEY_PORT;
41#define kLED 0xBC000000
42#define LEDSet(x) (*(volatile unsigned char *) kLED) = (( unsigned char)x)
43 33
44void cobalt_machine_halt(void) 34 for (state = 0;;) {
45{ 35
46 int mark; 36 state ^= COBALT_LED_POWER_OFF;
37 COBALT_LED_PORT = state;
38
39 diff = COBALT_KEY_PORT ^ last;
40 last ^= diff;
47 41
48 /* Blink our cute? little LED (number 3)... */ 42 if((diff & (COBALT_KEY_ENTER | COBALT_KEY_SELECT)) && !(~last & (COBALT_KEY_ENTER | COBALT_KEY_SELECT)))
49 while (1) { 43 COBALT_LED_PORT = COBALT_LED_RESET;
50 led_state = led_state | ( 1 << 3 ); 44
51 LEDSet(led_state); 45 for (mark = jiffies; jiffies - mark < HZ;)
52 mark = jiffies; 46 ;
53 while (jiffies<(mark+HZ));
54 led_state = led_state & ~( 1 << 3 );
55 LEDSet(led_state);
56 mark = jiffies;
57 while (jiffies<(mark+HZ));
58 } 47 }
59} 48}
60 49
50void cobalt_machine_restart(char *command)
51{
52 COBALT_LED_PORT = COBALT_LED_RESET;
53
54 /* we should never get here */
55 cobalt_machine_halt();
56}
57
61/* 58/*
62 * This triggers the luser mode device driver for the power switch ;-) 59 * This triggers the luser mode device driver for the power switch ;-)
63 */ 60 */
diff --git a/arch/mips/cobalt/setup.c b/arch/mips/cobalt/setup.c
index 6b4737e425ed..d358a118fa31 100644
--- a/arch/mips/cobalt/setup.c
+++ b/arch/mips/cobalt/setup.c
@@ -13,6 +13,8 @@
13#include <linux/interrupt.h> 13#include <linux/interrupt.h>
14#include <linux/pci.h> 14#include <linux/pci.h>
15#include <linux/init.h> 15#include <linux/init.h>
16#include <linux/serial.h>
17#include <linux/serial_core.h>
16 18
17#include <asm/bootinfo.h> 19#include <asm/bootinfo.h>
18#include <asm/time.h> 20#include <asm/time.h>
@@ -21,6 +23,7 @@
21#include <asm/processor.h> 23#include <asm/processor.h>
22#include <asm/reboot.h> 24#include <asm/reboot.h>
23#include <asm/gt64120.h> 25#include <asm/gt64120.h>
26#include <asm/serial.h>
24 27
25#include <asm/cobalt/cobalt.h> 28#include <asm/cobalt/cobalt.h>
26 29
@@ -30,45 +33,44 @@ extern void cobalt_machine_power_off(void);
30 33
31int cobalt_board_id; 34int cobalt_board_id;
32 35
33static char my_cmdline[CL_SIZE] = {
34 "console=ttyS0,115200 "
35#ifdef CONFIG_IP_PNP
36 "ip=on "
37#endif
38#ifdef CONFIG_ROOT_NFS
39 "root=/dev/nfs "
40#else
41 "root=/dev/hda1 "
42#endif
43 };
44
45const char *get_system_type(void) 36const char *get_system_type(void)
46{ 37{
38 switch (cobalt_board_id) {
39 case COBALT_BRD_ID_QUBE1:
40 return "Cobalt Qube";
41 case COBALT_BRD_ID_RAQ1:
42 return "Cobalt RaQ";
43 case COBALT_BRD_ID_QUBE2:
44 return "Cobalt Qube2";
45 case COBALT_BRD_ID_RAQ2:
46 return "Cobalt RaQ2";
47 }
47 return "MIPS Cobalt"; 48 return "MIPS Cobalt";
48} 49}
49 50
50static void __init cobalt_timer_setup(struct irqaction *irq) 51static void __init cobalt_timer_setup(struct irqaction *irq)
51{ 52{
52 /* Load timer value for 150 Hz */ 53 /* Load timer value for 1KHz (TCLK is 50MHz) */
53 GALILEO_OUTL(500000, GT_TC0_OFS); 54 GALILEO_OUTL(50*1000*1000 / 1000, GT_TC0_OFS);
54 55
55 /* Register our timer interrupt */ 56 /* Enable timer */
56 setup_irq(COBALT_TIMER_IRQ, irq); 57 GALILEO_OUTL(GALILEO_ENTC0 | GALILEO_SELTC0, GT_TC_CONTROL_OFS);
57 58
58 /* Enable timer ints */ 59 /* Register interrupt */
59 GALILEO_OUTL((GALILEO_ENTC0 | GALILEO_SELTC0), GT_TC_CONTROL_OFS); 60 setup_irq(COBALT_GALILEO_IRQ, irq);
60 /* Unmask timer int */ 61
61 GALILEO_OUTL(0x100, GT_INTRMASK_OFS); 62 /* Enable interrupt */
63 GALILEO_OUTL(GALILEO_INTR_T0EXP | GALILEO_INL(GT_INTRMASK_OFS), GT_INTRMASK_OFS);
62} 64}
63 65
64extern struct pci_ops gt64111_pci_ops; 66extern struct pci_ops gt64111_pci_ops;
65 67
66static struct resource cobalt_mem_resource = { 68static struct resource cobalt_mem_resource = {
67 "GT64111 PCI MEM", GT64111_IO_BASE, 0xffffffffUL, IORESOURCE_MEM 69 "PCI memory", GT64111_MEM_BASE, GT64111_MEM_END, IORESOURCE_MEM
68}; 70};
69 71
70static struct resource cobalt_io_resource = { 72static struct resource cobalt_io_resource = {
71 "GT64111 IO MEM", 0x00001000UL, 0x0fffffffUL, IORESOURCE_IO 73 "PCI I/O", 0x1000, 0xffff, IORESOURCE_IO
72}; 74};
73 75
74static struct resource cobalt_io_resources[] = { 76static struct resource cobalt_io_resources[] = {
@@ -86,11 +88,12 @@ static struct pci_controller cobalt_pci_controller = {
86 .mem_resource = &cobalt_mem_resource, 88 .mem_resource = &cobalt_mem_resource,
87 .mem_offset = 0, 89 .mem_offset = 0,
88 .io_resource = &cobalt_io_resource, 90 .io_resource = &cobalt_io_resource,
89 .io_offset = 0x00001000UL - GT64111_IO_BASE 91 .io_offset = 0 - GT64111_IO_BASE
90}; 92};
91 93
92static void __init cobalt_setup(void) 94void __init plat_setup(void)
93{ 95{
96 static struct uart_port uart;
94 unsigned int devfn = PCI_DEVFN(COBALT_PCICONF_VIA, 0); 97 unsigned int devfn = PCI_DEVFN(COBALT_PCICONF_VIA, 0);
95 int i; 98 int i;
96 99
@@ -100,7 +103,10 @@ static void __init cobalt_setup(void)
100 103
101 board_timer_setup = cobalt_timer_setup; 104 board_timer_setup = cobalt_timer_setup;
102 105
103 set_io_port_base(KSEG1ADDR(GT64111_IO_BASE)); 106 set_io_port_base(CKSEG1ADDR(GT64111_IO_BASE));
107
108 /* I/O port resource must include UART and LCD/buttons */
109 ioport_resource.end = 0x0fffffff;
104 110
105 /* 111 /*
106 * This is a prom style console. We just poke at the 112 * This is a prom style console. We just poke at the
@@ -120,27 +126,61 @@ static void __init cobalt_setup(void)
120 cobalt_board_id >>= ((VIA_COBALT_BRD_ID_REG & 3) * 8); 126 cobalt_board_id >>= ((VIA_COBALT_BRD_ID_REG & 3) * 8);
121 cobalt_board_id = VIA_COBALT_BRD_REG_to_ID(cobalt_board_id); 127 cobalt_board_id = VIA_COBALT_BRD_REG_to_ID(cobalt_board_id);
122 128
129 printk("Cobalt board ID: %d\n", cobalt_board_id);
130
123#ifdef CONFIG_PCI 131#ifdef CONFIG_PCI
124 register_pci_controller(&cobalt_pci_controller); 132 register_pci_controller(&cobalt_pci_controller);
125#endif 133#endif
126}
127 134
128early_initcall(cobalt_setup); 135#ifdef CONFIG_SERIAL_8250
136 if (cobalt_board_id > COBALT_BRD_ID_RAQ1) {
137
138 uart.line = 0;
139 uart.type = PORT_UNKNOWN;
140 uart.uartclk = 18432000;
141 uart.irq = COBALT_SERIAL_IRQ;
142 uart.flags = STD_COM_FLAGS;
143 uart.iobase = 0xc800000;
144 uart.iotype = UPIO_PORT;
145
146 early_serial_setup(&uart);
147 }
148#endif
149}
129 150
130/* 151/*
131 * Prom init. We read our one and only communication with the firmware. 152 * Prom init. We read our one and only communication with the firmware.
132 * Grab the amount of installed memory 153 * Grab the amount of installed memory.
154 * Better boot loaders (CoLo) pass a command line too :-)
133 */ 155 */
134 156
135void __init prom_init(void) 157void __init prom_init(void)
136{ 158{
137 int argc = fw_arg0; 159 int narg, indx, posn, nchr;
138 160 unsigned long memsz;
139 strcpy(arcs_cmdline, my_cmdline); 161 char **argv;
140 162
141 mips_machgroup = MACH_GROUP_COBALT; 163 mips_machgroup = MACH_GROUP_COBALT;
142 164
143 add_memory_region(0x0, argc & 0x7fffffff, BOOT_MEM_RAM); 165 memsz = fw_arg0 & 0x7fff0000;
166 narg = fw_arg0 & 0x0000ffff;
167
168 if (narg) {
169 arcs_cmdline[0] = '\0';
170 argv = (char **) fw_arg1;
171 posn = 0;
172 for (indx = 1; indx < narg; ++indx) {
173 nchr = strlen(argv[indx]);
174 if (posn + 1 + nchr + 1 > sizeof(arcs_cmdline))
175 break;
176 if (posn)
177 arcs_cmdline[posn++] = ' ';
178 strcpy(arcs_cmdline + posn, argv[indx]);
179 posn += nchr;
180 }
181 }
182
183 add_memory_region(0x0, memsz, BOOT_MEM_RAM);
144} 184}
145 185
146unsigned long __init prom_free_prom_memory(void) 186unsigned long __init prom_free_prom_memory(void)
diff --git a/arch/mips/configs/atlas_defconfig b/arch/mips/configs/atlas_defconfig
index 3120a02b8670..132ec3dac63f 100644
--- a/arch/mips/configs/atlas_defconfig
+++ b/arch/mips/configs/atlas_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:00 2005 4# Thu Oct 20 22:25:13 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14
29CONFIG_HOTPLUG=y 27CONFIG_HOTPLUG=y
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,42 +59,72 @@ CONFIG_KMOD=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60# CONFIG_MACH_VR41XX is not set 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_TOSHIBA_JMR3927 is not set 64# CONFIG_MIPS_PB1000 is not set
65# CONFIG_MIPS_PB1100 is not set
66# CONFIG_MIPS_PB1500 is not set
67# CONFIG_MIPS_PB1550 is not set
68# CONFIG_MIPS_PB1200 is not set
69# CONFIG_MIPS_DB1000 is not set
70# CONFIG_MIPS_DB1100 is not set
71# CONFIG_MIPS_DB1500 is not set
72# CONFIG_MIPS_DB1550 is not set
73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
62# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
63# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
64# CONFIG_MIPS_EV64120 is not set 77# CONFIG_MIPS_EV64120 is not set
65# CONFIG_MIPS_EV96100 is not set 78# CONFIG_MIPS_EV96100 is not set
66# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
67# CONFIG_LASAT is not set
68# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
69CONFIG_MIPS_ATLAS=y 83CONFIG_MIPS_ATLAS=y
70# CONFIG_MIPS_MALTA is not set 84# CONFIG_MIPS_MALTA is not set
71# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
72# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
73# CONFIG_MOMENCO_OCELOT_G is not set
74# CONFIG_MOMENCO_OCELOT_C is not set
75# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
76# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
77# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
78# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
79# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
80# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
81# CONFIG_NEC_OSPREY is not set 98# CONFIG_MACH_VR41XX is not set
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
82# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
83# CONFIG_SOC_AU1X00 is not set 102# CONFIG_SGI_IP27 is not set
84# CONFIG_SIBYTE_SB1xxx_SOC is not set 103# CONFIG_SGI_IP32 is not set
104# CONFIG_SIBYTE_BIGSUR is not set
105# CONFIG_SIBYTE_SWARM is not set
106# CONFIG_SIBYTE_SENTOSA is not set
107# CONFIG_SIBYTE_RHONE is not set
108# CONFIG_SIBYTE_CARMEL is not set
109# CONFIG_SIBYTE_PTSWARM is not set
110# CONFIG_SIBYTE_LITTLESUR is not set
111# CONFIG_SIBYTE_CRHINE is not set
112# CONFIG_SIBYTE_CRHONE is not set
85# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
86# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
87CONFIG_RWSEM_GENERIC_SPINLOCK=y 117CONFIG_RWSEM_GENERIC_SPINLOCK=y
88CONFIG_GENERIC_CALIBRATE_DELAY=y 118CONFIG_GENERIC_CALIBRATE_DELAY=y
89CONFIG_HAVE_DEC_LOCK=y
90CONFIG_DMA_NONCOHERENT=y 119CONFIG_DMA_NONCOHERENT=y
91CONFIG_DMA_NEED_PCI_MAP_STATE=y 120CONFIG_DMA_NEED_PCI_MAP_STATE=y
92CONFIG_MIPS_BONITO64=y 121CONFIG_MIPS_BONITO64=y
93CONFIG_MIPS_MSC=y 122CONFIG_MIPS_MSC=y
94# CONFIG_CPU_LITTLE_ENDIAN is not set 123# CONFIG_CPU_BIG_ENDIAN is not set
124CONFIG_CPU_LITTLE_ENDIAN=y
125CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
126CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
127CONFIG_IRQ_CPU=y
95CONFIG_MIPS_BOARDS_GEN=y 128CONFIG_MIPS_BOARDS_GEN=y
96CONFIG_MIPS_GT64120=y 129CONFIG_MIPS_GT64120=y
97CONFIG_SWAP_IO_SPACE=y 130CONFIG_SWAP_IO_SPACE=y
@@ -101,8 +134,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
101# 134#
102# CPU selection 135# CPU selection
103# 136#
104CONFIG_CPU_MIPS32=y 137CONFIG_CPU_MIPS32_R1=y
105# CONFIG_CPU_MIPS64 is not set 138# CONFIG_CPU_MIPS32_R2 is not set
139# CONFIG_CPU_MIPS64_R1 is not set
140# CONFIG_CPU_MIPS64_R2 is not set
106# CONFIG_CPU_R3000 is not set 141# CONFIG_CPU_R3000 is not set
107# CONFIG_CPU_TX39XX is not set 142# CONFIG_CPU_TX39XX is not set
108# CONFIG_CPU_VR41XX is not set 143# CONFIG_CPU_VR41XX is not set
@@ -118,15 +153,46 @@ CONFIG_CPU_MIPS32=y
118# CONFIG_CPU_RM7000 is not set 153# CONFIG_CPU_RM7000 is not set
119# CONFIG_CPU_RM9000 is not set 154# CONFIG_CPU_RM9000 is not set
120# CONFIG_CPU_SB1 is not set 155# CONFIG_CPU_SB1 is not set
156CONFIG_SYS_HAS_CPU_MIPS32_R1=y
157CONFIG_SYS_HAS_CPU_MIPS32_R2=y
158CONFIG_SYS_HAS_CPU_MIPS64_R1=y
159CONFIG_SYS_HAS_CPU_NEVADA=y
160CONFIG_SYS_HAS_CPU_RM7000=y
161CONFIG_CPU_MIPS32=y
162CONFIG_CPU_MIPSR1=y
163CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
164CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
165CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
166
167#
168# Kernel type
169#
170CONFIG_32BIT=y
171# CONFIG_64BIT is not set
121CONFIG_PAGE_SIZE_4KB=y 172CONFIG_PAGE_SIZE_4KB=y
122# CONFIG_PAGE_SIZE_8KB is not set 173# CONFIG_PAGE_SIZE_8KB is not set
123# CONFIG_PAGE_SIZE_16KB is not set 174# CONFIG_PAGE_SIZE_16KB is not set
124# CONFIG_PAGE_SIZE_64KB is not set 175# CONFIG_PAGE_SIZE_64KB is not set
176CONFIG_BOARD_SCACHE=y
177CONFIG_RM7000_CPU_SCACHE=y
125CONFIG_CPU_HAS_PREFETCH=y 178CONFIG_CPU_HAS_PREFETCH=y
179# CONFIG_MIPS_MT is not set
126# CONFIG_64BIT_PHYS_ADDR is not set 180# CONFIG_64BIT_PHYS_ADDR is not set
127# CONFIG_CPU_ADVANCED is not set 181# CONFIG_CPU_ADVANCED is not set
128CONFIG_CPU_HAS_LLSC=y 182CONFIG_CPU_HAS_LLSC=y
129CONFIG_CPU_HAS_SYNC=y 183CONFIG_CPU_HAS_SYNC=y
184CONFIG_GENERIC_HARDIRQS=y
185CONFIG_GENERIC_IRQ_PROBE=y
186CONFIG_ARCH_FLATMEM_ENABLE=y
187CONFIG_SELECT_MEMORY_MODEL=y
188CONFIG_FLATMEM_MANUAL=y
189# CONFIG_DISCONTIGMEM_MANUAL is not set
190# CONFIG_SPARSEMEM_MANUAL is not set
191CONFIG_FLATMEM=y
192CONFIG_FLAT_NODE_MEM_MAP=y
193# CONFIG_SPARSEMEM_STATIC is not set
194CONFIG_PREEMPT_NONE=y
195# CONFIG_PREEMPT_VOLUNTARY is not set
130# CONFIG_PREEMPT is not set 196# CONFIG_PREEMPT is not set
131 197
132# 198#
@@ -135,7 +201,6 @@ CONFIG_CPU_HAS_SYNC=y
135CONFIG_HW_HAS_PCI=y 201CONFIG_HW_HAS_PCI=y
136CONFIG_PCI=y 202CONFIG_PCI=y
137CONFIG_PCI_LEGACY_PROC=y 203CONFIG_PCI_LEGACY_PROC=y
138CONFIG_PCI_NAMES=y
139CONFIG_MMU=y 204CONFIG_MMU=y
140 205
141# 206#
@@ -144,10 +209,6 @@ CONFIG_MMU=y
144# CONFIG_PCCARD is not set 209# CONFIG_PCCARD is not set
145 210
146# 211#
147# PC-card bridges
148#
149
150#
151# PCI Hotplug Support 212# PCI Hotplug Support
152# 213#
153# CONFIG_HOTPLUG_PCI is not set 214# CONFIG_HOTPLUG_PCI is not set
@@ -160,199 +221,7 @@ CONFIG_BINFMT_ELF=y
160CONFIG_TRAD_SIGNALS=y 221CONFIG_TRAD_SIGNALS=y
161 222
162# 223#
163# Device Drivers 224# Networking
164#
165
166#
167# Generic Driver Options
168#
169CONFIG_STANDALONE=y
170CONFIG_PREVENT_FIRMWARE_BUILD=y
171CONFIG_FW_LOADER=y
172
173#
174# Memory Technology Devices (MTD)
175#
176# CONFIG_MTD is not set
177
178#
179# Parallel port support
180#
181# CONFIG_PARPORT is not set
182
183#
184# Plug and Play support
185#
186
187#
188# Block devices
189#
190# CONFIG_BLK_DEV_FD is not set
191# CONFIG_BLK_CPQ_DA is not set
192# CONFIG_BLK_CPQ_CISS_DA is not set
193# CONFIG_BLK_DEV_DAC960 is not set
194CONFIG_BLK_DEV_UMEM=m
195# CONFIG_BLK_DEV_COW_COMMON is not set
196CONFIG_BLK_DEV_LOOP=m
197CONFIG_BLK_DEV_CRYPTOLOOP=m
198CONFIG_BLK_DEV_NBD=m
199# CONFIG_BLK_DEV_SX8 is not set
200CONFIG_BLK_DEV_RAM=y
201CONFIG_BLK_DEV_RAM_COUNT=16
202CONFIG_BLK_DEV_RAM_SIZE=4096
203# CONFIG_BLK_DEV_INITRD is not set
204CONFIG_INITRAMFS_SOURCE=""
205# CONFIG_LBD is not set
206CONFIG_CDROM_PKTCDVD=m
207CONFIG_CDROM_PKTCDVD_BUFFERS=8
208# CONFIG_CDROM_PKTCDVD_WCACHE is not set
209
210#
211# IO Schedulers
212#
213CONFIG_IOSCHED_NOOP=y
214CONFIG_IOSCHED_AS=y
215CONFIG_IOSCHED_DEADLINE=y
216CONFIG_IOSCHED_CFQ=y
217CONFIG_ATA_OVER_ETH=m
218
219#
220# ATA/ATAPI/MFM/RLL support
221#
222CONFIG_IDE=y
223CONFIG_BLK_DEV_IDE=y
224
225#
226# Please see Documentation/ide.txt for help/info on IDE drives
227#
228# CONFIG_BLK_DEV_IDE_SATA is not set
229CONFIG_BLK_DEV_IDEDISK=y
230# CONFIG_IDEDISK_MULTI_MODE is not set
231CONFIG_BLK_DEV_IDECD=y
232# CONFIG_BLK_DEV_IDETAPE is not set
233# CONFIG_BLK_DEV_IDEFLOPPY is not set
234# CONFIG_BLK_DEV_IDESCSI is not set
235# CONFIG_IDE_TASK_IOCTL is not set
236
237#
238# IDE chipset support/bugfixes
239#
240CONFIG_IDE_GENERIC=y
241# CONFIG_BLK_DEV_IDEPCI is not set
242# CONFIG_IDE_ARM is not set
243# CONFIG_BLK_DEV_IDEDMA is not set
244# CONFIG_IDEDMA_AUTO is not set
245# CONFIG_BLK_DEV_HD is not set
246
247#
248# SCSI device support
249#
250CONFIG_SCSI=y
251CONFIG_SCSI_PROC_FS=y
252
253#
254# SCSI support type (disk, tape, CD-ROM)
255#
256CONFIG_BLK_DEV_SD=y
257CONFIG_CHR_DEV_ST=m
258CONFIG_CHR_DEV_OSST=m
259CONFIG_BLK_DEV_SR=m
260CONFIG_BLK_DEV_SR_VENDOR=y
261CONFIG_CHR_DEV_SG=m
262
263#
264# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
265#
266CONFIG_SCSI_MULTI_LUN=y
267CONFIG_SCSI_CONSTANTS=y
268CONFIG_SCSI_LOGGING=y
269
270#
271# SCSI Transport Attributes
272#
273CONFIG_SCSI_SPI_ATTRS=y
274CONFIG_SCSI_FC_ATTRS=m
275CONFIG_SCSI_ISCSI_ATTRS=m
276
277#
278# SCSI low-level drivers
279#
280# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
281# CONFIG_SCSI_3W_9XXX is not set
282# CONFIG_SCSI_ACARD is not set
283# CONFIG_SCSI_AACRAID is not set
284# CONFIG_SCSI_AIC7XXX is not set
285# CONFIG_SCSI_AIC7XXX_OLD is not set
286# CONFIG_SCSI_AIC79XX is not set
287# CONFIG_SCSI_DPT_I2O is not set
288# CONFIG_MEGARAID_NEWGEN is not set
289# CONFIG_MEGARAID_LEGACY is not set
290# CONFIG_SCSI_SATA is not set
291# CONFIG_SCSI_BUSLOGIC is not set
292# CONFIG_SCSI_DMX3191D is not set
293# CONFIG_SCSI_EATA is not set
294# CONFIG_SCSI_EATA_PIO is not set
295# CONFIG_SCSI_FUTURE_DOMAIN is not set
296# CONFIG_SCSI_GDTH is not set
297# CONFIG_SCSI_IPS is not set
298# CONFIG_SCSI_INITIO is not set
299# CONFIG_SCSI_INIA100 is not set
300CONFIG_SCSI_SYM53C8XX_2=y
301CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
302CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
303CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
304# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
305# CONFIG_SCSI_IPR is not set
306# CONFIG_SCSI_QLOGIC_ISP is not set
307# CONFIG_SCSI_QLOGIC_FC is not set
308# CONFIG_SCSI_QLOGIC_1280 is not set
309CONFIG_SCSI_QLA2XXX=y
310# CONFIG_SCSI_QLA21XX is not set
311# CONFIG_SCSI_QLA22XX is not set
312# CONFIG_SCSI_QLA2300 is not set
313# CONFIG_SCSI_QLA2322 is not set
314# CONFIG_SCSI_QLA6312 is not set
315# CONFIG_SCSI_DC395x is not set
316# CONFIG_SCSI_DC390T is not set
317# CONFIG_SCSI_NSP32 is not set
318# CONFIG_SCSI_DEBUG is not set
319
320#
321# Multi-device support (RAID and LVM)
322#
323CONFIG_MD=y
324CONFIG_BLK_DEV_MD=m
325CONFIG_MD_LINEAR=m
326CONFIG_MD_RAID0=m
327CONFIG_MD_RAID1=m
328CONFIG_MD_RAID10=m
329CONFIG_MD_RAID5=m
330CONFIG_MD_RAID6=m
331CONFIG_MD_MULTIPATH=m
332CONFIG_MD_FAULTY=m
333CONFIG_BLK_DEV_DM=m
334CONFIG_DM_CRYPT=m
335CONFIG_DM_SNAPSHOT=m
336CONFIG_DM_MIRROR=m
337CONFIG_DM_ZERO=m
338
339#
340# Fusion MPT device support
341#
342# CONFIG_FUSION is not set
343
344#
345# IEEE 1394 (FireWire) support
346#
347# CONFIG_IEEE1394 is not set
348
349#
350# I2O device support
351#
352# CONFIG_I2O is not set
353
354#
355# Networking support
356# 225#
357CONFIG_NET=y 226CONFIG_NET=y
358 227
@@ -361,15 +230,20 @@ CONFIG_NET=y
361# 230#
362CONFIG_PACKET=y 231CONFIG_PACKET=y
363CONFIG_PACKET_MMAP=y 232CONFIG_PACKET_MMAP=y
364CONFIG_NETLINK_DEV=y
365CONFIG_UNIX=y 233CONFIG_UNIX=y
234CONFIG_XFRM=y
235CONFIG_XFRM_USER=m
366CONFIG_NET_KEY=y 236CONFIG_NET_KEY=y
367CONFIG_INET=y 237CONFIG_INET=y
368CONFIG_IP_MULTICAST=y 238CONFIG_IP_MULTICAST=y
369CONFIG_IP_ADVANCED_ROUTER=y 239CONFIG_IP_ADVANCED_ROUTER=y
240CONFIG_ASK_IP_FIB_HASH=y
241# CONFIG_IP_FIB_TRIE is not set
242CONFIG_IP_FIB_HASH=y
370CONFIG_IP_MULTIPLE_TABLES=y 243CONFIG_IP_MULTIPLE_TABLES=y
371CONFIG_IP_ROUTE_FWMARK=y 244CONFIG_IP_ROUTE_FWMARK=y
372CONFIG_IP_ROUTE_MULTIPATH=y 245CONFIG_IP_ROUTE_MULTIPATH=y
246# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
373CONFIG_IP_ROUTE_VERBOSE=y 247CONFIG_IP_ROUTE_VERBOSE=y
374CONFIG_IP_PNP=y 248CONFIG_IP_PNP=y
375CONFIG_IP_PNP_DHCP=y 249CONFIG_IP_PNP_DHCP=y
@@ -387,8 +261,10 @@ CONFIG_INET_AH=m
387CONFIG_INET_ESP=m 261CONFIG_INET_ESP=m
388CONFIG_INET_IPCOMP=m 262CONFIG_INET_IPCOMP=m
389CONFIG_INET_TUNNEL=m 263CONFIG_INET_TUNNEL=m
390CONFIG_IP_TCPDIAG=m 264CONFIG_INET_DIAG=y
391CONFIG_IP_TCPDIAG_IPV6=y 265CONFIG_INET_TCP_DIAG=y
266# CONFIG_TCP_CONG_ADVANCED is not set
267CONFIG_TCP_CONG_BIC=y
392 268
393# 269#
394# IP: Virtual Server Configuration 270# IP: Virtual Server Configuration
@@ -433,6 +309,9 @@ CONFIG_IPV6_TUNNEL=m
433CONFIG_NETFILTER=y 309CONFIG_NETFILTER=y
434# CONFIG_NETFILTER_DEBUG is not set 310# CONFIG_NETFILTER_DEBUG is not set
435CONFIG_BRIDGE_NETFILTER=y 311CONFIG_BRIDGE_NETFILTER=y
312CONFIG_NETFILTER_NETLINK=m
313CONFIG_NETFILTER_NETLINK_QUEUE=m
314CONFIG_NETFILTER_NETLINK_LOG=m
436 315
437# 316#
438# IP: Netfilter Configuration 317# IP: Netfilter Configuration
@@ -440,11 +319,15 @@ CONFIG_BRIDGE_NETFILTER=y
440CONFIG_IP_NF_CONNTRACK=m 319CONFIG_IP_NF_CONNTRACK=m
441CONFIG_IP_NF_CT_ACCT=y 320CONFIG_IP_NF_CT_ACCT=y
442CONFIG_IP_NF_CONNTRACK_MARK=y 321CONFIG_IP_NF_CONNTRACK_MARK=y
322CONFIG_IP_NF_CONNTRACK_EVENTS=y
323CONFIG_IP_NF_CONNTRACK_NETLINK=m
443CONFIG_IP_NF_CT_PROTO_SCTP=m 324CONFIG_IP_NF_CT_PROTO_SCTP=m
444CONFIG_IP_NF_FTP=m 325CONFIG_IP_NF_FTP=m
445CONFIG_IP_NF_IRC=m 326CONFIG_IP_NF_IRC=m
327# CONFIG_IP_NF_NETBIOS_NS is not set
446CONFIG_IP_NF_TFTP=m 328CONFIG_IP_NF_TFTP=m
447CONFIG_IP_NF_AMANDA=m 329CONFIG_IP_NF_AMANDA=m
330CONFIG_IP_NF_PPTP=m
448CONFIG_IP_NF_QUEUE=m 331CONFIG_IP_NF_QUEUE=m
449CONFIG_IP_NF_IPTABLES=m 332CONFIG_IP_NF_IPTABLES=m
450CONFIG_IP_NF_MATCH_LIMIT=m 333CONFIG_IP_NF_MATCH_LIMIT=m
@@ -469,9 +352,12 @@ CONFIG_IP_NF_MATCH_PHYSDEV=m
469CONFIG_IP_NF_MATCH_ADDRTYPE=m 352CONFIG_IP_NF_MATCH_ADDRTYPE=m
470CONFIG_IP_NF_MATCH_REALM=m 353CONFIG_IP_NF_MATCH_REALM=m
471CONFIG_IP_NF_MATCH_SCTP=m 354CONFIG_IP_NF_MATCH_SCTP=m
355CONFIG_IP_NF_MATCH_DCCP=m
472CONFIG_IP_NF_MATCH_COMMENT=m 356CONFIG_IP_NF_MATCH_COMMENT=m
473CONFIG_IP_NF_MATCH_CONNMARK=m 357CONFIG_IP_NF_MATCH_CONNMARK=m
358CONFIG_IP_NF_MATCH_CONNBYTES=m
474CONFIG_IP_NF_MATCH_HASHLIMIT=m 359CONFIG_IP_NF_MATCH_HASHLIMIT=m
360CONFIG_IP_NF_MATCH_STRING=m
475CONFIG_IP_NF_FILTER=m 361CONFIG_IP_NF_FILTER=m
476CONFIG_IP_NF_TARGET_REJECT=m 362CONFIG_IP_NF_TARGET_REJECT=m
477CONFIG_IP_NF_TARGET_LOG=m 363CONFIG_IP_NF_TARGET_LOG=m
@@ -488,12 +374,14 @@ CONFIG_IP_NF_NAT_IRC=m
488CONFIG_IP_NF_NAT_FTP=m 374CONFIG_IP_NF_NAT_FTP=m
489CONFIG_IP_NF_NAT_TFTP=m 375CONFIG_IP_NF_NAT_TFTP=m
490CONFIG_IP_NF_NAT_AMANDA=m 376CONFIG_IP_NF_NAT_AMANDA=m
377CONFIG_IP_NF_NAT_PPTP=m
491CONFIG_IP_NF_MANGLE=m 378CONFIG_IP_NF_MANGLE=m
492CONFIG_IP_NF_TARGET_TOS=m 379CONFIG_IP_NF_TARGET_TOS=m
493CONFIG_IP_NF_TARGET_ECN=m 380CONFIG_IP_NF_TARGET_ECN=m
494CONFIG_IP_NF_TARGET_DSCP=m 381CONFIG_IP_NF_TARGET_DSCP=m
495CONFIG_IP_NF_TARGET_MARK=m 382CONFIG_IP_NF_TARGET_MARK=m
496CONFIG_IP_NF_TARGET_CLASSIFY=m 383CONFIG_IP_NF_TARGET_CLASSIFY=m
384CONFIG_IP_NF_TARGET_TTL=m
497CONFIG_IP_NF_TARGET_CONNMARK=m 385CONFIG_IP_NF_TARGET_CONNMARK=m
498CONFIG_IP_NF_TARGET_CLUSTERIP=m 386CONFIG_IP_NF_TARGET_CLUSTERIP=m
499CONFIG_IP_NF_RAW=m 387CONFIG_IP_NF_RAW=m
@@ -503,7 +391,7 @@ CONFIG_IP_NF_ARPFILTER=m
503CONFIG_IP_NF_ARP_MANGLE=m 391CONFIG_IP_NF_ARP_MANGLE=m
504 392
505# 393#
506# IPv6: Netfilter Configuration 394# IPv6: Netfilter Configuration (EXPERIMENTAL)
507# 395#
508CONFIG_IP6_NF_QUEUE=m 396CONFIG_IP6_NF_QUEUE=m
509CONFIG_IP6_NF_IPTABLES=m 397CONFIG_IP6_NF_IPTABLES=m
@@ -523,8 +411,10 @@ CONFIG_IP6_NF_MATCH_EUI64=m
523CONFIG_IP6_NF_MATCH_PHYSDEV=m 411CONFIG_IP6_NF_MATCH_PHYSDEV=m
524CONFIG_IP6_NF_FILTER=m 412CONFIG_IP6_NF_FILTER=m
525CONFIG_IP6_NF_TARGET_LOG=m 413CONFIG_IP6_NF_TARGET_LOG=m
414CONFIG_IP6_NF_TARGET_REJECT=m
526CONFIG_IP6_NF_MANGLE=m 415CONFIG_IP6_NF_MANGLE=m
527CONFIG_IP6_NF_TARGET_MARK=m 416CONFIG_IP6_NF_TARGET_MARK=m
417CONFIG_IP6_NF_TARGET_HL=m
528CONFIG_IP6_NF_RAW=m 418CONFIG_IP6_NF_RAW=m
529 419
530# 420#
@@ -550,8 +440,11 @@ CONFIG_BRIDGE_EBT_REDIRECT=m
550CONFIG_BRIDGE_EBT_SNAT=m 440CONFIG_BRIDGE_EBT_SNAT=m
551CONFIG_BRIDGE_EBT_LOG=m 441CONFIG_BRIDGE_EBT_LOG=m
552CONFIG_BRIDGE_EBT_ULOG=m 442CONFIG_BRIDGE_EBT_ULOG=m
553CONFIG_XFRM=y 443
554CONFIG_XFRM_USER=m 444#
445# DCCP Configuration (EXPERIMENTAL)
446#
447# CONFIG_IP_DCCP is not set
555 448
556# 449#
557# SCTP Configuration (EXPERIMENTAL) 450# SCTP Configuration (EXPERIMENTAL)
@@ -579,10 +472,6 @@ CONFIG_IPDDP_DECAP=y
579CONFIG_NET_DIVERT=y 472CONFIG_NET_DIVERT=y
580# CONFIG_ECONET is not set 473# CONFIG_ECONET is not set
581# CONFIG_WAN_ROUTER is not set 474# CONFIG_WAN_ROUTER is not set
582
583#
584# QoS and/or fair queueing
585#
586CONFIG_NET_SCHED=y 475CONFIG_NET_SCHED=y
587CONFIG_NET_SCH_CLK_JIFFIES=y 476CONFIG_NET_SCH_CLK_JIFFIES=y
588# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set 477# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
@@ -602,6 +491,7 @@ CONFIG_NET_SCH_INGRESS=m
602CONFIG_NET_QOS=y 491CONFIG_NET_QOS=y
603CONFIG_NET_ESTIMATOR=y 492CONFIG_NET_ESTIMATOR=y
604CONFIG_NET_CLS=y 493CONFIG_NET_CLS=y
494CONFIG_NET_CLS_BASIC=m
605CONFIG_NET_CLS_TCINDEX=m 495CONFIG_NET_CLS_TCINDEX=m
606CONFIG_NET_CLS_ROUTE4=m 496CONFIG_NET_CLS_ROUTE4=m
607CONFIG_NET_CLS_ROUTE=y 497CONFIG_NET_CLS_ROUTE=y
@@ -612,6 +502,7 @@ CONFIG_NET_CLS_IND=y
612# CONFIG_CLS_U32_MARK is not set 502# CONFIG_CLS_U32_MARK is not set
613CONFIG_NET_CLS_RSVP=m 503CONFIG_NET_CLS_RSVP=m
614CONFIG_NET_CLS_RSVP6=m 504CONFIG_NET_CLS_RSVP6=m
505# CONFIG_NET_EMATCH is not set
615# CONFIG_NET_CLS_ACT is not set 506# CONFIG_NET_CLS_ACT is not set
616CONFIG_NET_CLS_POLICE=y 507CONFIG_NET_CLS_POLICE=y
617 508
@@ -619,17 +510,222 @@ CONFIG_NET_CLS_POLICE=y
619# Network testing 510# Network testing
620# 511#
621# CONFIG_NET_PKTGEN is not set 512# CONFIG_NET_PKTGEN is not set
622# CONFIG_NETPOLL is not set
623# CONFIG_NET_POLL_CONTROLLER is not set
624# CONFIG_HAMRADIO is not set 513# CONFIG_HAMRADIO is not set
625# CONFIG_IRDA is not set 514# CONFIG_IRDA is not set
626# CONFIG_BT is not set 515# CONFIG_BT is not set
516CONFIG_IEEE80211=m
517# CONFIG_IEEE80211_DEBUG is not set
518CONFIG_IEEE80211_CRYPT_WEP=m
519CONFIG_IEEE80211_CRYPT_CCMP=m
520CONFIG_IEEE80211_CRYPT_TKIP=m
521
522#
523# Device Drivers
524#
525
526#
527# Generic Driver Options
528#
529CONFIG_STANDALONE=y
530CONFIG_PREVENT_FIRMWARE_BUILD=y
531CONFIG_FW_LOADER=y
532
533#
534# Connector - unified userspace <-> kernelspace linker
535#
536CONFIG_CONNECTOR=m
537
538#
539# Memory Technology Devices (MTD)
540#
541# CONFIG_MTD is not set
542
543#
544# Parallel port support
545#
546# CONFIG_PARPORT is not set
547
548#
549# Plug and Play support
550#
551
552#
553# Block devices
554#
555# CONFIG_BLK_CPQ_DA is not set
556# CONFIG_BLK_CPQ_CISS_DA is not set
557# CONFIG_BLK_DEV_DAC960 is not set
558CONFIG_BLK_DEV_UMEM=m
559# CONFIG_BLK_DEV_COW_COMMON is not set
560CONFIG_BLK_DEV_LOOP=m
561CONFIG_BLK_DEV_CRYPTOLOOP=m
562CONFIG_BLK_DEV_NBD=m
563# CONFIG_BLK_DEV_SX8 is not set
564CONFIG_BLK_DEV_RAM=y
565CONFIG_BLK_DEV_RAM_COUNT=16
566CONFIG_BLK_DEV_RAM_SIZE=4096
567# CONFIG_BLK_DEV_INITRD is not set
568# CONFIG_LBD is not set
569CONFIG_CDROM_PKTCDVD=m
570CONFIG_CDROM_PKTCDVD_BUFFERS=8
571# CONFIG_CDROM_PKTCDVD_WCACHE is not set
572
573#
574# IO Schedulers
575#
576CONFIG_IOSCHED_NOOP=y
577CONFIG_IOSCHED_AS=y
578CONFIG_IOSCHED_DEADLINE=y
579CONFIG_IOSCHED_CFQ=y
580CONFIG_ATA_OVER_ETH=m
581
582#
583# ATA/ATAPI/MFM/RLL support
584#
585CONFIG_IDE=y
586CONFIG_BLK_DEV_IDE=y
587
588#
589# Please see Documentation/ide.txt for help/info on IDE drives
590#
591# CONFIG_BLK_DEV_IDE_SATA is not set
592CONFIG_BLK_DEV_IDEDISK=y
593# CONFIG_IDEDISK_MULTI_MODE is not set
594CONFIG_BLK_DEV_IDECD=y
595# CONFIG_BLK_DEV_IDETAPE is not set
596# CONFIG_BLK_DEV_IDEFLOPPY is not set
597# CONFIG_BLK_DEV_IDESCSI is not set
598# CONFIG_IDE_TASK_IOCTL is not set
599
600#
601# IDE chipset support/bugfixes
602#
603CONFIG_IDE_GENERIC=y
604# CONFIG_BLK_DEV_IDEPCI is not set
605# CONFIG_IDE_ARM is not set
606# CONFIG_BLK_DEV_IDEDMA is not set
607# CONFIG_IDEDMA_AUTO is not set
608# CONFIG_BLK_DEV_HD is not set
609
610#
611# SCSI device support
612#
613CONFIG_RAID_ATTRS=m
614CONFIG_SCSI=y
615CONFIG_SCSI_PROC_FS=y
616
617#
618# SCSI support type (disk, tape, CD-ROM)
619#
620CONFIG_BLK_DEV_SD=y
621CONFIG_CHR_DEV_ST=m
622CONFIG_CHR_DEV_OSST=m
623CONFIG_BLK_DEV_SR=m
624CONFIG_BLK_DEV_SR_VENDOR=y
625CONFIG_CHR_DEV_SG=m
626CONFIG_CHR_DEV_SCH=m
627
628#
629# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
630#
631CONFIG_SCSI_MULTI_LUN=y
632CONFIG_SCSI_CONSTANTS=y
633CONFIG_SCSI_LOGGING=y
634
635#
636# SCSI Transport Attributes
637#
638CONFIG_SCSI_SPI_ATTRS=y
639CONFIG_SCSI_FC_ATTRS=m
640CONFIG_SCSI_ISCSI_ATTRS=m
641CONFIG_SCSI_SAS_ATTRS=m
642
643#
644# SCSI low-level drivers
645#
646# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
647# CONFIG_SCSI_3W_9XXX is not set
648# CONFIG_SCSI_ACARD is not set
649# CONFIG_SCSI_AACRAID is not set
650# CONFIG_SCSI_AIC7XXX is not set
651# CONFIG_SCSI_AIC7XXX_OLD is not set
652# CONFIG_SCSI_AIC79XX is not set
653# CONFIG_SCSI_DPT_I2O is not set
654# CONFIG_MEGARAID_NEWGEN is not set
655# CONFIG_MEGARAID_LEGACY is not set
656# CONFIG_SCSI_SATA is not set
657# CONFIG_SCSI_DMX3191D is not set
658# CONFIG_SCSI_FUTURE_DOMAIN is not set
659# CONFIG_SCSI_IPS is not set
660# CONFIG_SCSI_INITIO is not set
661# CONFIG_SCSI_INIA100 is not set
662CONFIG_SCSI_SYM53C8XX_2=y
663CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
664CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
665CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
666# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
667# CONFIG_SCSI_IPR is not set
668# CONFIG_SCSI_QLOGIC_FC is not set
669# CONFIG_SCSI_QLOGIC_1280 is not set
670CONFIG_SCSI_QLA2XXX=y
671# CONFIG_SCSI_QLA21XX is not set
672# CONFIG_SCSI_QLA22XX is not set
673# CONFIG_SCSI_QLA2300 is not set
674# CONFIG_SCSI_QLA2322 is not set
675# CONFIG_SCSI_QLA6312 is not set
676# CONFIG_SCSI_QLA24XX is not set
677# CONFIG_SCSI_LPFC is not set
678# CONFIG_SCSI_DC395x is not set
679# CONFIG_SCSI_DC390T is not set
680# CONFIG_SCSI_NSP32 is not set
681# CONFIG_SCSI_DEBUG is not set
682
683#
684# Multi-device support (RAID and LVM)
685#
686CONFIG_MD=y
687CONFIG_BLK_DEV_MD=m
688CONFIG_MD_LINEAR=m
689CONFIG_MD_RAID0=m
690CONFIG_MD_RAID1=m
691CONFIG_MD_RAID10=m
692CONFIG_MD_RAID5=m
693CONFIG_MD_RAID6=m
694CONFIG_MD_MULTIPATH=m
695CONFIG_MD_FAULTY=m
696CONFIG_BLK_DEV_DM=m
697CONFIG_DM_CRYPT=m
698CONFIG_DM_SNAPSHOT=m
699CONFIG_DM_MIRROR=m
700CONFIG_DM_ZERO=m
701CONFIG_DM_MULTIPATH=m
702CONFIG_DM_MULTIPATH_EMC=m
703
704#
705# Fusion MPT device support
706#
707# CONFIG_FUSION is not set
708# CONFIG_FUSION_SPI is not set
709# CONFIG_FUSION_FC is not set
710
711#
712# IEEE 1394 (FireWire) support
713#
714# CONFIG_IEEE1394 is not set
715
716#
717# I2O device support
718#
719# CONFIG_I2O is not set
720
721#
722# Network device support
723#
627CONFIG_NETDEVICES=y 724CONFIG_NETDEVICES=y
628CONFIG_DUMMY=m 725CONFIG_DUMMY=m
629CONFIG_BONDING=m 726CONFIG_BONDING=m
630CONFIG_EQUALIZER=m 727CONFIG_EQUALIZER=m
631CONFIG_TUN=m 728CONFIG_TUN=m
632# CONFIG_ETHERTAP is not set
633 729
634# 730#
635# ARCnet devices 731# ARCnet devices
@@ -637,6 +733,21 @@ CONFIG_TUN=m
637# CONFIG_ARCNET is not set 733# CONFIG_ARCNET is not set
638 734
639# 735#
736# PHY device support
737#
738CONFIG_PHYLIB=m
739CONFIG_PHYCONTROL=y
740
741#
742# MII PHY device drivers
743#
744CONFIG_MARVELL_PHY=m
745CONFIG_DAVICOM_PHY=m
746CONFIG_QSEMI_PHY=m
747CONFIG_LXT_PHY=m
748CONFIG_CICADA_PHY=m
749
750#
640# Ethernet (10 or 100Mbit) 751# Ethernet (10 or 100Mbit)
641# 752#
642CONFIG_NET_ETHERNET=y 753CONFIG_NET_ETHERNET=y
@@ -681,13 +792,17 @@ CONFIG_LAN_SAA9730=y
681# CONFIG_HAMACHI is not set 792# CONFIG_HAMACHI is not set
682# CONFIG_YELLOWFIN is not set 793# CONFIG_YELLOWFIN is not set
683# CONFIG_R8169 is not set 794# CONFIG_R8169 is not set
795# CONFIG_SIS190 is not set
796# CONFIG_SKGE is not set
684# CONFIG_SK98LIN is not set 797# CONFIG_SK98LIN is not set
685# CONFIG_VIA_VELOCITY is not set 798# CONFIG_VIA_VELOCITY is not set
686# CONFIG_TIGON3 is not set 799# CONFIG_TIGON3 is not set
800# CONFIG_BNX2 is not set
687 801
688# 802#
689# Ethernet (10000 Mbit) 803# Ethernet (10000 Mbit)
690# 804#
805# CONFIG_CHELSIO_T1 is not set
691# CONFIG_IXGB is not set 806# CONFIG_IXGB is not set
692# CONFIG_S2IO is not set 807# CONFIG_S2IO is not set
693 808
@@ -700,6 +815,8 @@ CONFIG_LAN_SAA9730=y
700# Wireless LAN (non-hamradio) 815# Wireless LAN (non-hamradio)
701# 816#
702# CONFIG_NET_RADIO is not set 817# CONFIG_NET_RADIO is not set
818# CONFIG_IPW_DEBUG is not set
819CONFIG_IPW2200=m
703 820
704# 821#
705# Wan interfaces 822# Wan interfaces
@@ -712,6 +829,8 @@ CONFIG_LAN_SAA9730=y
712# CONFIG_NET_FC is not set 829# CONFIG_NET_FC is not set
713# CONFIG_SHAPER is not set 830# CONFIG_SHAPER is not set
714# CONFIG_NETCONSOLE is not set 831# CONFIG_NETCONSOLE is not set
832# CONFIG_NETPOLL is not set
833# CONFIG_NET_POLL_CONTROLLER is not set
715 834
716# 835#
717# ISDN subsystem 836# ISDN subsystem
@@ -741,19 +860,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
741# CONFIG_INPUT_EVBUG is not set 860# CONFIG_INPUT_EVBUG is not set
742 861
743# 862#
744# Input I/O drivers
745#
746# CONFIG_GAMEPORT is not set
747CONFIG_SOUND_GAMEPORT=y
748CONFIG_SERIO=y
749# CONFIG_SERIO_I8042 is not set
750CONFIG_SERIO_SERPORT=y
751# CONFIG_SERIO_CT82C710 is not set
752# CONFIG_SERIO_PCIPS2 is not set
753CONFIG_SERIO_LIBPS2=y
754CONFIG_SERIO_RAW=y
755
756#
757# Input Device Drivers 863# Input Device Drivers
758# 864#
759# CONFIG_INPUT_KEYBOARD is not set 865# CONFIG_INPUT_KEYBOARD is not set
@@ -766,6 +872,17 @@ CONFIG_MOUSE_SERIAL=m
766# CONFIG_INPUT_MISC is not set 872# CONFIG_INPUT_MISC is not set
767 873
768# 874#
875# Hardware I/O ports
876#
877CONFIG_SERIO=y
878# CONFIG_SERIO_I8042 is not set
879CONFIG_SERIO_SERPORT=y
880# CONFIG_SERIO_PCIPS2 is not set
881CONFIG_SERIO_LIBPS2=y
882CONFIG_SERIO_RAW=y
883# CONFIG_GAMEPORT is not set
884
885#
769# Character devices 886# Character devices
770# 887#
771CONFIG_VT=y 888CONFIG_VT=y
@@ -786,6 +903,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4
786# 903#
787CONFIG_SERIAL_CORE=y 904CONFIG_SERIAL_CORE=y
788CONFIG_SERIAL_CORE_CONSOLE=y 905CONFIG_SERIAL_CORE_CONSOLE=y
906# CONFIG_SERIAL_JSM is not set
789CONFIG_UNIX98_PTYS=y 907CONFIG_UNIX98_PTYS=y
790CONFIG_LEGACY_PTYS=y 908CONFIG_LEGACY_PTYS=y
791CONFIG_LEGACY_PTY_COUNT=256 909CONFIG_LEGACY_PTY_COUNT=256
@@ -812,6 +930,11 @@ CONFIG_LEGACY_PTY_COUNT=256
812# CONFIG_RAW_DRIVER is not set 930# CONFIG_RAW_DRIVER is not set
813 931
814# 932#
933# TPM devices
934#
935# CONFIG_TCG_TPM is not set
936
937#
815# I2C support 938# I2C support
816# 939#
817# CONFIG_I2C is not set 940# CONFIG_I2C is not set
@@ -822,10 +945,20 @@ CONFIG_LEGACY_PTY_COUNT=256
822# CONFIG_W1 is not set 945# CONFIG_W1 is not set
823 946
824# 947#
948# Hardware Monitoring support
949#
950# CONFIG_HWMON is not set
951# CONFIG_HWMON_VID is not set
952
953#
825# Misc devices 954# Misc devices
826# 955#
827 956
828# 957#
958# Multimedia Capabilities Port drivers
959#
960
961#
829# Multimedia devices 962# Multimedia devices
830# 963#
831# CONFIG_VIDEO_DEV is not set 964# CONFIG_VIDEO_DEV is not set
@@ -845,7 +978,6 @@ CONFIG_LEGACY_PTY_COUNT=256
845# 978#
846# CONFIG_VGA_CONSOLE is not set 979# CONFIG_VGA_CONSOLE is not set
847CONFIG_DUMMY_CONSOLE=y 980CONFIG_DUMMY_CONSOLE=y
848# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
849 981
850# 982#
851# Sound 983# Sound
@@ -855,13 +987,9 @@ CONFIG_DUMMY_CONSOLE=y
855# 987#
856# USB support 988# USB support
857# 989#
858# CONFIG_USB is not set
859CONFIG_USB_ARCH_HAS_HCD=y 990CONFIG_USB_ARCH_HAS_HCD=y
860CONFIG_USB_ARCH_HAS_OHCI=y 991CONFIG_USB_ARCH_HAS_OHCI=y
861 992# CONFIG_USB is not set
862#
863# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
864#
865 993
866# 994#
867# USB Gadget Support 995# USB Gadget Support
@@ -879,10 +1007,15 @@ CONFIG_USB_ARCH_HAS_OHCI=y
879# CONFIG_INFINIBAND is not set 1007# CONFIG_INFINIBAND is not set
880 1008
881# 1009#
1010# SN Devices
1011#
1012
1013#
882# File systems 1014# File systems
883# 1015#
884CONFIG_EXT2_FS=y 1016CONFIG_EXT2_FS=y
885# CONFIG_EXT2_FS_XATTR is not set 1017# CONFIG_EXT2_FS_XATTR is not set
1018# CONFIG_EXT2_FS_XIP is not set
886CONFIG_EXT3_FS=y 1019CONFIG_EXT3_FS=y
887CONFIG_EXT3_FS_XATTR=y 1020CONFIG_EXT3_FS_XATTR=y
888# CONFIG_EXT3_FS_POSIX_ACL is not set 1021# CONFIG_EXT3_FS_POSIX_ACL is not set
@@ -903,12 +1036,14 @@ CONFIG_JFS_SECURITY=y
903# CONFIG_JFS_STATISTICS is not set 1036# CONFIG_JFS_STATISTICS is not set
904CONFIG_FS_POSIX_ACL=y 1037CONFIG_FS_POSIX_ACL=y
905CONFIG_XFS_FS=m 1038CONFIG_XFS_FS=m
906# CONFIG_XFS_RT is not set 1039CONFIG_XFS_EXPORT=y
907CONFIG_XFS_QUOTA=y 1040CONFIG_XFS_QUOTA=m
908CONFIG_XFS_SECURITY=y 1041CONFIG_XFS_SECURITY=y
909CONFIG_XFS_POSIX_ACL=y 1042CONFIG_XFS_POSIX_ACL=y
1043# CONFIG_XFS_RT is not set
910CONFIG_MINIX_FS=m 1044CONFIG_MINIX_FS=m
911CONFIG_ROMFS_FS=m 1045CONFIG_ROMFS_FS=m
1046CONFIG_INOTIFY=y
912CONFIG_QUOTA=y 1047CONFIG_QUOTA=y
913# CONFIG_QFMT_V1 is not set 1048# CONFIG_QFMT_V1 is not set
914CONFIG_QFMT_V2=y 1049CONFIG_QFMT_V2=y
@@ -916,6 +1051,7 @@ CONFIG_QUOTACTL=y
916CONFIG_DNOTIFY=y 1051CONFIG_DNOTIFY=y
917CONFIG_AUTOFS_FS=y 1052CONFIG_AUTOFS_FS=y
918# CONFIG_AUTOFS4_FS is not set 1053# CONFIG_AUTOFS4_FS is not set
1054CONFIG_FUSE_FS=m
919 1055
920# 1056#
921# CD-ROM/DVD Filesystems 1057# CD-ROM/DVD Filesystems
@@ -943,12 +1079,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
943CONFIG_PROC_FS=y 1079CONFIG_PROC_FS=y
944CONFIG_PROC_KCORE=y 1080CONFIG_PROC_KCORE=y
945CONFIG_SYSFS=y 1081CONFIG_SYSFS=y
946# CONFIG_DEVFS_FS is not set
947CONFIG_DEVPTS_FS_XATTR=y
948CONFIG_DEVPTS_FS_SECURITY=y
949# CONFIG_TMPFS is not set 1082# CONFIG_TMPFS is not set
950# CONFIG_HUGETLB_PAGE is not set 1083# CONFIG_HUGETLB_PAGE is not set
951CONFIG_RAMFS=y 1084CONFIG_RAMFS=y
1085CONFIG_RELAYFS_FS=m
952 1086
953# 1087#
954# Miscellaneous filesystems 1088# Miscellaneous filesystems
@@ -974,16 +1108,19 @@ CONFIG_UFS_FS=m
974# 1108#
975CONFIG_NFS_FS=y 1109CONFIG_NFS_FS=y
976CONFIG_NFS_V3=y 1110CONFIG_NFS_V3=y
1111# CONFIG_NFS_V3_ACL is not set
977# CONFIG_NFS_V4 is not set 1112# CONFIG_NFS_V4 is not set
978# CONFIG_NFS_DIRECTIO is not set 1113# CONFIG_NFS_DIRECTIO is not set
979CONFIG_NFSD=y 1114CONFIG_NFSD=y
980CONFIG_NFSD_V3=y 1115CONFIG_NFSD_V3=y
1116# CONFIG_NFSD_V3_ACL is not set
981# CONFIG_NFSD_V4 is not set 1117# CONFIG_NFSD_V4 is not set
982# CONFIG_NFSD_TCP is not set 1118# CONFIG_NFSD_TCP is not set
983CONFIG_ROOT_NFS=y 1119CONFIG_ROOT_NFS=y
984CONFIG_LOCKD=y 1120CONFIG_LOCKD=y
985CONFIG_LOCKD_V4=y 1121CONFIG_LOCKD_V4=y
986CONFIG_EXPORTFS=y 1122CONFIG_EXPORTFS=y
1123CONFIG_NFS_COMMON=y
987CONFIG_SUNRPC=y 1124CONFIG_SUNRPC=y
988# CONFIG_RPCSEC_GSS_KRB5 is not set 1125# CONFIG_RPCSEC_GSS_KRB5 is not set
989# CONFIG_RPCSEC_GSS_SPKM3 is not set 1126# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -992,6 +1129,7 @@ CONFIG_SUNRPC=y
992# CONFIG_NCP_FS is not set 1129# CONFIG_NCP_FS is not set
993# CONFIG_CODA_FS is not set 1130# CONFIG_CODA_FS is not set
994# CONFIG_AFS_FS is not set 1131# CONFIG_AFS_FS is not set
1132# CONFIG_9P_FS is not set
995 1133
996# 1134#
997# Partition Types 1135# Partition Types
@@ -1051,7 +1189,9 @@ CONFIG_NLS_UTF8=m
1051# 1189#
1052# Kernel hacking 1190# Kernel hacking
1053# 1191#
1192# CONFIG_PRINTK_TIME is not set
1054# CONFIG_DEBUG_KERNEL is not set 1193# CONFIG_DEBUG_KERNEL is not set
1194CONFIG_LOG_BUF_SHIFT=14
1055CONFIG_CROSSCOMPILE=y 1195CONFIG_CROSSCOMPILE=y
1056CONFIG_CMDLINE="" 1196CONFIG_CMDLINE=""
1057 1197
@@ -1073,6 +1213,7 @@ CONFIG_CRYPTO_SHA1=m
1073CONFIG_CRYPTO_SHA256=m 1213CONFIG_CRYPTO_SHA256=m
1074CONFIG_CRYPTO_SHA512=m 1214CONFIG_CRYPTO_SHA512=m
1075CONFIG_CRYPTO_WP512=m 1215CONFIG_CRYPTO_WP512=m
1216CONFIG_CRYPTO_TGR192=m
1076CONFIG_CRYPTO_DES=m 1217CONFIG_CRYPTO_DES=m
1077CONFIG_CRYPTO_BLOWFISH=m 1218CONFIG_CRYPTO_BLOWFISH=m
1078CONFIG_CRYPTO_TWOFISH=m 1219CONFIG_CRYPTO_TWOFISH=m
@@ -1097,9 +1238,12 @@ CONFIG_CRYPTO_CRC32C=m
1097# Library routines 1238# Library routines
1098# 1239#
1099# CONFIG_CRC_CCITT is not set 1240# CONFIG_CRC_CCITT is not set
1241CONFIG_CRC16=m
1100CONFIG_CRC32=y 1242CONFIG_CRC32=y
1101CONFIG_LIBCRC32C=m 1243CONFIG_LIBCRC32C=m
1102CONFIG_ZLIB_INFLATE=m 1244CONFIG_ZLIB_INFLATE=m
1103CONFIG_ZLIB_DEFLATE=m 1245CONFIG_ZLIB_DEFLATE=m
1104CONFIG_GENERIC_HARDIRQS=y 1246CONFIG_TEXTSEARCH=y
1105CONFIG_GENERIC_IRQ_PROBE=y 1247CONFIG_TEXTSEARCH_KMP=m
1248CONFIG_TEXTSEARCH_BM=m
1249CONFIG_TEXTSEARCH_FSM=m
diff --git a/arch/mips/configs/bigsur_defconfig b/arch/mips/configs/bigsur_defconfig
new file mode 100644
index 000000000000..25e8a08e68be
--- /dev/null
+++ b/arch/mips/configs/bigsur_defconfig
@@ -0,0 +1,881 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.14-rc2
4# Thu Oct 20 22:25:17 2005
5#
6CONFIG_MIPS=y
7
8#
9# Code maturity level options
10#
11CONFIG_EXPERIMENTAL=y
12CONFIG_CLEAN_COMPILE=y
13CONFIG_LOCK_KERNEL=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
15
16#
17# General setup
18#
19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
21CONFIG_SWAP=y
22CONFIG_SYSVIPC=y
23# CONFIG_POSIX_MQUEUE is not set
24# CONFIG_BSD_PROCESS_ACCT is not set
25CONFIG_SYSCTL=y
26# CONFIG_AUDIT is not set
27# CONFIG_HOTPLUG is not set
28CONFIG_KOBJECT_UEVENT=y
29CONFIG_IKCONFIG=y
30CONFIG_IKCONFIG_PROC=y
31# CONFIG_CPUSETS is not set
32CONFIG_INITRAMFS_SOURCE=""
33CONFIG_EMBEDDED=y
34CONFIG_KALLSYMS=y
35# CONFIG_KALLSYMS_ALL is not set
36# CONFIG_KALLSYMS_EXTRA_PASS is not set
37CONFIG_PRINTK=y
38CONFIG_BUG=y
39CONFIG_BASE_FULL=y
40CONFIG_FUTEX=y
41CONFIG_EPOLL=y
42# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
43CONFIG_SHMEM=y
44CONFIG_CC_ALIGN_FUNCTIONS=0
45CONFIG_CC_ALIGN_LABELS=0
46CONFIG_CC_ALIGN_LOOPS=0
47CONFIG_CC_ALIGN_JUMPS=0
48# CONFIG_TINY_SHMEM is not set
49CONFIG_BASE_SMALL=0
50
51#
52# Loadable module support
53#
54CONFIG_MODULES=y
55CONFIG_MODULE_UNLOAD=y
56# CONFIG_MODULE_FORCE_UNLOAD is not set
57CONFIG_OBSOLETE_MODPARM=y
58CONFIG_MODVERSIONS=y
59CONFIG_MODULE_SRCVERSION_ALL=y
60CONFIG_KMOD=y
61CONFIG_STOP_MACHINE=y
62
63#
64# Machine selection
65#
66# CONFIG_MIPS_MTX1 is not set
67# CONFIG_MIPS_BOSPORUS is not set
68# CONFIG_MIPS_PB1000 is not set
69# CONFIG_MIPS_PB1100 is not set
70# CONFIG_MIPS_PB1500 is not set
71# CONFIG_MIPS_PB1550 is not set
72# CONFIG_MIPS_PB1200 is not set
73# CONFIG_MIPS_DB1000 is not set
74# CONFIG_MIPS_DB1100 is not set
75# CONFIG_MIPS_DB1500 is not set
76# CONFIG_MIPS_DB1550 is not set
77# CONFIG_MIPS_DB1200 is not set
78# CONFIG_MIPS_MIRAGE is not set
79# CONFIG_MIPS_COBALT is not set
80# CONFIG_MACH_DECSTATION is not set
81# CONFIG_MIPS_EV64120 is not set
82# CONFIG_MIPS_EV96100 is not set
83# CONFIG_MIPS_IVR is not set
84# CONFIG_MIPS_ITE8172 is not set
85# CONFIG_MACH_JAZZ is not set
86# CONFIG_LASAT is not set
87# CONFIG_MIPS_ATLAS is not set
88# CONFIG_MIPS_MALTA is not set
89# CONFIG_MIPS_SEAD is not set
90# CONFIG_MIPS_SIM is not set
91# CONFIG_MOMENCO_JAGUAR_ATX is not set
92# CONFIG_MOMENCO_OCELOT is not set
93# CONFIG_MOMENCO_OCELOT_3 is not set
94# CONFIG_MOMENCO_OCELOT_C is not set
95# CONFIG_MOMENCO_OCELOT_G is not set
96# CONFIG_MIPS_XXS1500 is not set
97# CONFIG_PNX8550_V2PCI is not set
98# CONFIG_PNX8550_JBS is not set
99# CONFIG_DDB5074 is not set
100# CONFIG_DDB5476 is not set
101# CONFIG_DDB5477 is not set
102# CONFIG_MACH_VR41XX is not set
103# CONFIG_PMC_YOSEMITE is not set
104# CONFIG_QEMU is not set
105# CONFIG_SGI_IP22 is not set
106# CONFIG_SGI_IP27 is not set
107# CONFIG_SGI_IP32 is not set
108CONFIG_SIBYTE_BIGSUR=y
109# CONFIG_SIBYTE_SWARM is not set
110# CONFIG_SIBYTE_SENTOSA is not set
111# CONFIG_SIBYTE_RHONE is not set
112# CONFIG_SIBYTE_CARMEL is not set
113# CONFIG_SIBYTE_PTSWARM is not set
114# CONFIG_SIBYTE_LITTLESUR is not set
115# CONFIG_SIBYTE_CRHINE is not set
116# CONFIG_SIBYTE_CRHONE is not set
117# CONFIG_SNI_RM200_PCI is not set
118# CONFIG_TOSHIBA_JMR3927 is not set
119# CONFIG_TOSHIBA_RBTX4927 is not set
120# CONFIG_TOSHIBA_RBTX4938 is not set
121CONFIG_SIBYTE_BCM1x80=y
122CONFIG_SIBYTE_SB1xxx_SOC=y
123# CONFIG_CPU_SB1_PASS_1 is not set
124# CONFIG_CPU_SB1_PASS_2_1250 is not set
125# CONFIG_CPU_SB1_PASS_2_2 is not set
126# CONFIG_CPU_SB1_PASS_4 is not set
127# CONFIG_CPU_SB1_PASS_2_112x is not set
128# CONFIG_CPU_SB1_PASS_3 is not set
129# CONFIG_SIMULATION is not set
130# CONFIG_CONFIG_SB1_CEX_ALWAYS_FATAL is not set
131# CONFIG_CONFIG_SB1_CERR_STALL is not set
132CONFIG_SIBYTE_CFE=y
133# CONFIG_SIBYTE_CFE_CONSOLE is not set
134# CONFIG_SIBYTE_BUS_WATCHER is not set
135# CONFIG_SIBYTE_SB1250_PROF is not set
136# CONFIG_SIBYTE_TBPROF is not set
137CONFIG_RWSEM_GENERIC_SPINLOCK=y
138CONFIG_GENERIC_CALIBRATE_DELAY=y
139CONFIG_DMA_COHERENT=y
140CONFIG_CPU_BIG_ENDIAN=y
141# CONFIG_CPU_LITTLE_ENDIAN is not set
142CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
143CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
144CONFIG_SWAP_IO_SPACE=y
145CONFIG_BOOT_ELF32=y
146CONFIG_MIPS_L1_CACHE_SHIFT=5
147
148#
149# CPU selection
150#
151# CONFIG_CPU_MIPS32_R1 is not set
152# CONFIG_CPU_MIPS32_R2 is not set
153# CONFIG_CPU_MIPS64_R1 is not set
154# CONFIG_CPU_MIPS64_R2 is not set
155# CONFIG_CPU_R3000 is not set
156# CONFIG_CPU_TX39XX is not set
157# CONFIG_CPU_VR41XX is not set
158# CONFIG_CPU_R4300 is not set
159# CONFIG_CPU_R4X00 is not set
160# CONFIG_CPU_TX49XX is not set
161# CONFIG_CPU_R5000 is not set
162# CONFIG_CPU_R5432 is not set
163# CONFIG_CPU_R6000 is not set
164# CONFIG_CPU_NEVADA is not set
165# CONFIG_CPU_R8000 is not set
166# CONFIG_CPU_R10000 is not set
167# CONFIG_CPU_RM7000 is not set
168# CONFIG_CPU_RM9000 is not set
169CONFIG_CPU_SB1=y
170CONFIG_SYS_HAS_CPU_SB1=y
171CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
172CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
173CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
174CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
175
176#
177# Kernel type
178#
179# CONFIG_32BIT is not set
180CONFIG_64BIT=y
181CONFIG_PAGE_SIZE_4KB=y
182# CONFIG_PAGE_SIZE_8KB is not set
183# CONFIG_PAGE_SIZE_16KB is not set
184# CONFIG_PAGE_SIZE_64KB is not set
185# CONFIG_SIBYTE_DMA_PAGEOPS is not set
186# CONFIG_MIPS_MT is not set
187CONFIG_CPU_HAS_LLSC=y
188CONFIG_CPU_HAS_LLDSCD=y
189CONFIG_CPU_HAS_SYNC=y
190CONFIG_GENERIC_HARDIRQS=y
191CONFIG_GENERIC_IRQ_PROBE=y
192CONFIG_CPU_SUPPORTS_HIGHMEM=y
193CONFIG_ARCH_FLATMEM_ENABLE=y
194CONFIG_SELECT_MEMORY_MODEL=y
195CONFIG_FLATMEM_MANUAL=y
196# CONFIG_DISCONTIGMEM_MANUAL is not set
197# CONFIG_SPARSEMEM_MANUAL is not set
198CONFIG_FLATMEM=y
199CONFIG_FLAT_NODE_MEM_MAP=y
200# CONFIG_SPARSEMEM_STATIC is not set
201CONFIG_SMP=y
202CONFIG_NR_CPUS=4
203CONFIG_PREEMPT_NONE=y
204# CONFIG_PREEMPT_VOLUNTARY is not set
205# CONFIG_PREEMPT is not set
206# CONFIG_PREEMPT_BKL is not set
207
208#
209# Bus options (PCI, PCMCIA, EISA, ISA, TC)
210#
211CONFIG_HW_HAS_PCI=y
212CONFIG_PCI=y
213CONFIG_PCI_DOMAINS=y
214CONFIG_PCI_LEGACY_PROC=y
215CONFIG_PCI_DEBUG=y
216CONFIG_MMU=y
217
218#
219# PCCARD (PCMCIA/CardBus) support
220#
221# CONFIG_PCCARD is not set
222
223#
224# PCI Hotplug Support
225#
226# CONFIG_HOTPLUG_PCI is not set
227
228#
229# Executable file formats
230#
231CONFIG_BINFMT_ELF=y
232# CONFIG_BINFMT_MISC is not set
233CONFIG_BUILD_ELF64=y
234CONFIG_MIPS32_COMPAT=y
235CONFIG_COMPAT=y
236CONFIG_MIPS32_O32=y
237# CONFIG_MIPS32_N32 is not set
238CONFIG_BINFMT_ELF32=y
239
240#
241# Networking
242#
243CONFIG_NET=y
244
245#
246# Networking options
247#
248CONFIG_PACKET=y
249CONFIG_PACKET_MMAP=y
250CONFIG_UNIX=y
251CONFIG_XFRM=y
252CONFIG_XFRM_USER=m
253CONFIG_NET_KEY=y
254CONFIG_INET=y
255# CONFIG_IP_MULTICAST is not set
256# CONFIG_IP_ADVANCED_ROUTER is not set
257CONFIG_IP_FIB_HASH=y
258CONFIG_IP_PNP=y
259CONFIG_IP_PNP_DHCP=y
260CONFIG_IP_PNP_BOOTP=y
261# CONFIG_IP_PNP_RARP is not set
262# CONFIG_NET_IPIP is not set
263# CONFIG_NET_IPGRE is not set
264# CONFIG_ARPD is not set
265# CONFIG_SYN_COOKIES is not set
266# CONFIG_INET_AH is not set
267# CONFIG_INET_ESP is not set
268# CONFIG_INET_IPCOMP is not set
269CONFIG_INET_TUNNEL=m
270CONFIG_INET_DIAG=y
271CONFIG_INET_TCP_DIAG=y
272# CONFIG_TCP_CONG_ADVANCED is not set
273CONFIG_TCP_CONG_BIC=y
274# CONFIG_IPV6 is not set
275# CONFIG_NETFILTER is not set
276
277#
278# DCCP Configuration (EXPERIMENTAL)
279#
280# CONFIG_IP_DCCP is not set
281
282#
283# SCTP Configuration (EXPERIMENTAL)
284#
285# CONFIG_IP_SCTP is not set
286# CONFIG_ATM is not set
287# CONFIG_BRIDGE is not set
288# CONFIG_VLAN_8021Q is not set
289# CONFIG_DECNET is not set
290# CONFIG_LLC2 is not set
291# CONFIG_IPX is not set
292# CONFIG_ATALK is not set
293# CONFIG_X25 is not set
294# CONFIG_LAPB is not set
295# CONFIG_NET_DIVERT is not set
296# CONFIG_ECONET is not set
297# CONFIG_WAN_ROUTER is not set
298# CONFIG_NET_SCHED is not set
299# CONFIG_NET_CLS_ROUTE is not set
300
301#
302# Network testing
303#
304# CONFIG_NET_PKTGEN is not set
305# CONFIG_HAMRADIO is not set
306# CONFIG_IRDA is not set
307# CONFIG_BT is not set
308# CONFIG_IEEE80211 is not set
309
310#
311# Device Drivers
312#
313
314#
315# Generic Driver Options
316#
317CONFIG_STANDALONE=y
318CONFIG_PREVENT_FIRMWARE_BUILD=y
319# CONFIG_FW_LOADER is not set
320# CONFIG_DEBUG_DRIVER is not set
321
322#
323# Connector - unified userspace <-> kernelspace linker
324#
325# CONFIG_CONNECTOR is not set
326
327#
328# Memory Technology Devices (MTD)
329#
330# CONFIG_MTD is not set
331
332#
333# Parallel port support
334#
335# CONFIG_PARPORT is not set
336
337#
338# Plug and Play support
339#
340
341#
342# Block devices
343#
344# CONFIG_BLK_CPQ_DA is not set
345# CONFIG_BLK_CPQ_CISS_DA is not set
346# CONFIG_BLK_DEV_DAC960 is not set
347# CONFIG_BLK_DEV_UMEM is not set
348# CONFIG_BLK_DEV_COW_COMMON is not set
349CONFIG_BLK_DEV_LOOP=m
350# CONFIG_BLK_DEV_CRYPTOLOOP is not set
351CONFIG_BLK_DEV_NBD=m
352# CONFIG_BLK_DEV_SX8 is not set
353# CONFIG_BLK_DEV_RAM is not set
354CONFIG_BLK_DEV_RAM_COUNT=16
355# CONFIG_CDROM_PKTCDVD is not set
356
357#
358# IO Schedulers
359#
360CONFIG_IOSCHED_NOOP=y
361CONFIG_IOSCHED_AS=y
362CONFIG_IOSCHED_DEADLINE=y
363CONFIG_IOSCHED_CFQ=y
364# CONFIG_ATA_OVER_ETH is not set
365
366#
367# ATA/ATAPI/MFM/RLL support
368#
369CONFIG_IDE=y
370CONFIG_BLK_DEV_IDE=y
371
372#
373# Please see Documentation/ide.txt for help/info on IDE drives
374#
375# CONFIG_BLK_DEV_IDE_SATA is not set
376CONFIG_BLK_DEV_IDEDISK=y
377# CONFIG_IDEDISK_MULTI_MODE is not set
378CONFIG_BLK_DEV_IDECD=y
379CONFIG_BLK_DEV_IDETAPE=y
380CONFIG_BLK_DEV_IDEFLOPPY=y
381# CONFIG_IDE_TASK_IOCTL is not set
382
383#
384# IDE chipset support/bugfixes
385#
386CONFIG_IDE_GENERIC=y
387# CONFIG_BLK_DEV_IDEPCI is not set
388# CONFIG_BLK_DEV_IDE_SWARM is not set
389# CONFIG_IDE_ARM is not set
390# CONFIG_BLK_DEV_IDEDMA is not set
391# CONFIG_IDEDMA_AUTO is not set
392# CONFIG_BLK_DEV_HD is not set
393
394#
395# SCSI device support
396#
397# CONFIG_RAID_ATTRS is not set
398# CONFIG_SCSI is not set
399
400#
401# Multi-device support (RAID and LVM)
402#
403# CONFIG_MD is not set
404
405#
406# Fusion MPT device support
407#
408# CONFIG_FUSION is not set
409
410#
411# IEEE 1394 (FireWire) support
412#
413# CONFIG_IEEE1394 is not set
414
415#
416# I2O device support
417#
418# CONFIG_I2O is not set
419
420#
421# Network device support
422#
423CONFIG_NETDEVICES=y
424# CONFIG_DUMMY is not set
425# CONFIG_BONDING is not set
426# CONFIG_EQUALIZER is not set
427# CONFIG_TUN is not set
428
429#
430# ARCnet devices
431#
432# CONFIG_ARCNET is not set
433
434#
435# PHY device support
436#
437# CONFIG_PHYLIB is not set
438
439#
440# Ethernet (10 or 100Mbit)
441#
442CONFIG_NET_ETHERNET=y
443CONFIG_MII=y
444# CONFIG_HAPPYMEAL is not set
445# CONFIG_SUNGEM is not set
446# CONFIG_NET_VENDOR_3COM is not set
447
448#
449# Tulip family network device support
450#
451# CONFIG_NET_TULIP is not set
452# CONFIG_HP100 is not set
453# CONFIG_NET_PCI is not set
454
455#
456# Ethernet (1000 Mbit)
457#
458# CONFIG_ACENIC is not set
459# CONFIG_DL2K is not set
460# CONFIG_E1000 is not set
461# CONFIG_NS83820 is not set
462# CONFIG_HAMACHI is not set
463# CONFIG_YELLOWFIN is not set
464# CONFIG_R8169 is not set
465CONFIG_NET_SB1250_MAC=y
466# CONFIG_SIS190 is not set
467# CONFIG_SKGE is not set
468# CONFIG_SK98LIN is not set
469# CONFIG_TIGON3 is not set
470# CONFIG_BNX2 is not set
471
472#
473# Ethernet (10000 Mbit)
474#
475# CONFIG_CHELSIO_T1 is not set
476# CONFIG_IXGB is not set
477# CONFIG_S2IO is not set
478
479#
480# Token Ring devices
481#
482# CONFIG_TR is not set
483
484#
485# Wireless LAN (non-hamradio)
486#
487# CONFIG_NET_RADIO is not set
488
489#
490# Wan interfaces
491#
492# CONFIG_WAN is not set
493# CONFIG_FDDI is not set
494# CONFIG_HIPPI is not set
495# CONFIG_PPP is not set
496# CONFIG_SLIP is not set
497# CONFIG_SHAPER is not set
498# CONFIG_NETCONSOLE is not set
499# CONFIG_NETPOLL is not set
500# CONFIG_NET_POLL_CONTROLLER is not set
501
502#
503# ISDN subsystem
504#
505# CONFIG_ISDN is not set
506
507#
508# Telephony Support
509#
510# CONFIG_PHONE is not set
511
512#
513# Input device support
514#
515# CONFIG_INPUT is not set
516
517#
518# Hardware I/O ports
519#
520CONFIG_SERIO=y
521# CONFIG_SERIO_I8042 is not set
522CONFIG_SERIO_SERPORT=y
523# CONFIG_SERIO_PCIPS2 is not set
524# CONFIG_SERIO_LIBPS2 is not set
525CONFIG_SERIO_RAW=m
526# CONFIG_GAMEPORT is not set
527
528#
529# Character devices
530#
531# CONFIG_VT is not set
532CONFIG_SERIAL_NONSTANDARD=y
533# CONFIG_ROCKETPORT is not set
534# CONFIG_CYCLADES is not set
535# CONFIG_DIGIEPCA is not set
536# CONFIG_MOXA_SMARTIO is not set
537# CONFIG_ISI is not set
538# CONFIG_SYNCLINKMP is not set
539# CONFIG_N_HDLC is not set
540# CONFIG_SPECIALIX is not set
541# CONFIG_SX is not set
542# CONFIG_STALDRV is not set
543CONFIG_SIBYTE_SB1250_DUART=y
544CONFIG_SIBYTE_SB1250_DUART_CONSOLE=y
545
546#
547# Serial drivers
548#
549# CONFIG_SERIAL_8250 is not set
550
551#
552# Non-8250 serial port support
553#
554# CONFIG_SERIAL_JSM is not set
555CONFIG_UNIX98_PTYS=y
556CONFIG_LEGACY_PTYS=y
557CONFIG_LEGACY_PTY_COUNT=256
558
559#
560# IPMI
561#
562# CONFIG_IPMI_HANDLER is not set
563
564#
565# Watchdog Cards
566#
567# CONFIG_WATCHDOG is not set
568# CONFIG_RTC is not set
569CONFIG_GEN_RTC=y
570# CONFIG_GEN_RTC_X is not set
571# CONFIG_DTLK is not set
572# CONFIG_R3964 is not set
573# CONFIG_APPLICOM is not set
574
575#
576# Ftape, the floppy tape device driver
577#
578# CONFIG_DRM is not set
579# CONFIG_RAW_DRIVER is not set
580
581#
582# TPM devices
583#
584# CONFIG_TCG_TPM is not set
585
586#
587# I2C support
588#
589CONFIG_I2C=y
590CONFIG_I2C_CHARDEV=y
591
592#
593# I2C Algorithms
594#
595# CONFIG_I2C_ALGOBIT is not set
596# CONFIG_I2C_ALGOPCF is not set
597# CONFIG_I2C_ALGOPCA is not set
598CONFIG_I2C_ALGO_SIBYTE=y
599
600#
601# I2C Hardware Bus support
602#
603# CONFIG_I2C_ALI1535 is not set
604# CONFIG_I2C_ALI1563 is not set
605# CONFIG_I2C_ALI15X3 is not set
606# CONFIG_I2C_AMD756 is not set
607# CONFIG_I2C_AMD8111 is not set
608# CONFIG_I2C_I801 is not set
609# CONFIG_I2C_I810 is not set
610# CONFIG_I2C_PIIX4 is not set
611# CONFIG_I2C_NFORCE2 is not set
612# CONFIG_I2C_PARPORT_LIGHT is not set
613# CONFIG_I2C_PROSAVAGE is not set
614# CONFIG_I2C_SAVAGE4 is not set
615CONFIG_I2C_SIBYTE=y
616# CONFIG_SCx200_ACB is not set
617# CONFIG_I2C_SIS5595 is not set
618# CONFIG_I2C_SIS630 is not set
619# CONFIG_I2C_SIS96X is not set
620# CONFIG_I2C_STUB is not set
621# CONFIG_I2C_VIA is not set
622# CONFIG_I2C_VIAPRO is not set
623# CONFIG_I2C_VOODOO3 is not set
624# CONFIG_I2C_PCA_ISA is not set
625
626#
627# Miscellaneous I2C Chip support
628#
629CONFIG_SENSORS_DS1337=y
630CONFIG_SENSORS_DS1374=y
631CONFIG_SENSORS_EEPROM=y
632CONFIG_SENSORS_PCF8574=y
633CONFIG_SENSORS_PCA9539=y
634CONFIG_SENSORS_PCF8591=y
635CONFIG_SENSORS_RTC8564=y
636CONFIG_SENSORS_MAX6875=y
637CONFIG_I2C_DEBUG_CORE=y
638CONFIG_I2C_DEBUG_ALGO=y
639CONFIG_I2C_DEBUG_BUS=y
640CONFIG_I2C_DEBUG_CHIP=y
641
642#
643# Dallas's 1-wire bus
644#
645# CONFIG_W1 is not set
646
647#
648# Hardware Monitoring support
649#
650# CONFIG_HWMON is not set
651# CONFIG_HWMON_VID is not set
652
653#
654# Misc devices
655#
656
657#
658# Multimedia Capabilities Port drivers
659#
660
661#
662# Multimedia devices
663#
664# CONFIG_VIDEO_DEV is not set
665
666#
667# Digital Video Broadcasting Devices
668#
669# CONFIG_DVB is not set
670
671#
672# Graphics support
673#
674# CONFIG_FB is not set
675
676#
677# Sound
678#
679# CONFIG_SOUND is not set
680
681#
682# USB support
683#
684CONFIG_USB_ARCH_HAS_HCD=y
685CONFIG_USB_ARCH_HAS_OHCI=y
686# CONFIG_USB is not set
687
688#
689# USB Gadget Support
690#
691# CONFIG_USB_GADGET is not set
692
693#
694# MMC/SD Card support
695#
696# CONFIG_MMC is not set
697
698#
699# InfiniBand support
700#
701# CONFIG_INFINIBAND is not set
702
703#
704# SN Devices
705#
706
707#
708# File systems
709#
710CONFIG_EXT2_FS=y
711CONFIG_EXT2_FS_XATTR=y
712CONFIG_EXT2_FS_POSIX_ACL=y
713CONFIG_EXT2_FS_SECURITY=y
714# CONFIG_EXT2_FS_XIP is not set
715# CONFIG_EXT3_FS is not set
716# CONFIG_JBD is not set
717CONFIG_FS_MBCACHE=y
718# CONFIG_REISERFS_FS is not set
719# CONFIG_JFS_FS is not set
720CONFIG_FS_POSIX_ACL=y
721# CONFIG_XFS_FS is not set
722# CONFIG_MINIX_FS is not set
723# CONFIG_ROMFS_FS is not set
724CONFIG_INOTIFY=y
725# CONFIG_QUOTA is not set
726CONFIG_DNOTIFY=y
727# CONFIG_AUTOFS_FS is not set
728# CONFIG_AUTOFS4_FS is not set
729# CONFIG_FUSE_FS is not set
730
731#
732# CD-ROM/DVD Filesystems
733#
734# CONFIG_ISO9660_FS is not set
735# CONFIG_UDF_FS is not set
736
737#
738# DOS/FAT/NT Filesystems
739#
740# CONFIG_MSDOS_FS is not set
741# CONFIG_VFAT_FS is not set
742# CONFIG_NTFS_FS is not set
743
744#
745# Pseudo filesystems
746#
747CONFIG_PROC_FS=y
748CONFIG_PROC_KCORE=y
749CONFIG_SYSFS=y
750# CONFIG_TMPFS is not set
751# CONFIG_HUGETLB_PAGE is not set
752CONFIG_RAMFS=y
753# CONFIG_RELAYFS_FS is not set
754
755#
756# Miscellaneous filesystems
757#
758# CONFIG_ADFS_FS is not set
759# CONFIG_AFFS_FS is not set
760# CONFIG_HFS_FS is not set
761# CONFIG_HFSPLUS_FS is not set
762# CONFIG_BEFS_FS is not set
763# CONFIG_BFS_FS is not set
764# CONFIG_EFS_FS is not set
765# CONFIG_CRAMFS is not set
766# CONFIG_VXFS_FS is not set
767# CONFIG_HPFS_FS is not set
768# CONFIG_QNX4FS_FS is not set
769# CONFIG_SYSV_FS is not set
770# CONFIG_UFS_FS is not set
771
772#
773# Network File Systems
774#
775CONFIG_NFS_FS=y
776CONFIG_NFS_V3=y
777# CONFIG_NFS_V3_ACL is not set
778# CONFIG_NFS_V4 is not set
779# CONFIG_NFS_DIRECTIO is not set
780# CONFIG_NFSD is not set
781CONFIG_ROOT_NFS=y
782CONFIG_LOCKD=y
783CONFIG_LOCKD_V4=y
784CONFIG_NFS_COMMON=y
785CONFIG_SUNRPC=y
786# CONFIG_RPCSEC_GSS_KRB5 is not set
787# CONFIG_RPCSEC_GSS_SPKM3 is not set
788# CONFIG_SMB_FS is not set
789# CONFIG_CIFS is not set
790# CONFIG_NCP_FS is not set
791# CONFIG_CODA_FS is not set
792# CONFIG_AFS_FS is not set
793# CONFIG_9P_FS is not set
794
795#
796# Partition Types
797#
798# CONFIG_PARTITION_ADVANCED is not set
799CONFIG_MSDOS_PARTITION=y
800
801#
802# Native Language Support
803#
804# CONFIG_NLS is not set
805
806#
807# Profiling support
808#
809# CONFIG_PROFILING is not set
810
811#
812# Kernel hacking
813#
814CONFIG_PRINTK_TIME=y
815CONFIG_DEBUG_KERNEL=y
816CONFIG_MAGIC_SYSRQ=y
817CONFIG_LOG_BUF_SHIFT=16
818CONFIG_DETECT_SOFTLOCKUP=y
819# CONFIG_SCHEDSTATS is not set
820# CONFIG_DEBUG_SLAB is not set
821# CONFIG_DEBUG_SPINLOCK is not set
822# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
823# CONFIG_DEBUG_KOBJECT is not set
824# CONFIG_DEBUG_INFO is not set
825# CONFIG_DEBUG_FS is not set
826CONFIG_CROSSCOMPILE=y
827CONFIG_CMDLINE=""
828# CONFIG_DEBUG_STACK_USAGE is not set
829# CONFIG_KGDB is not set
830# CONFIG_SB1XXX_CORELIS is not set
831# CONFIG_RUNTIME_DEBUG is not set
832
833#
834# Security options
835#
836CONFIG_KEYS=y
837CONFIG_KEYS_DEBUG_PROC_KEYS=y
838# CONFIG_SECURITY is not set
839
840#
841# Cryptographic options
842#
843CONFIG_CRYPTO=y
844CONFIG_CRYPTO_HMAC=y
845CONFIG_CRYPTO_NULL=y
846CONFIG_CRYPTO_MD4=y
847CONFIG_CRYPTO_MD5=y
848CONFIG_CRYPTO_SHA1=y
849CONFIG_CRYPTO_SHA256=y
850CONFIG_CRYPTO_SHA512=y
851CONFIG_CRYPTO_WP512=m
852CONFIG_CRYPTO_TGR192=m
853CONFIG_CRYPTO_DES=y
854CONFIG_CRYPTO_BLOWFISH=y
855CONFIG_CRYPTO_TWOFISH=y
856CONFIG_CRYPTO_SERPENT=y
857CONFIG_CRYPTO_AES=m
858# CONFIG_CRYPTO_CAST5 is not set
859# CONFIG_CRYPTO_CAST6 is not set
860CONFIG_CRYPTO_TEA=m
861# CONFIG_CRYPTO_ARC4 is not set
862CONFIG_CRYPTO_KHAZAD=m
863CONFIG_CRYPTO_ANUBIS=m
864CONFIG_CRYPTO_DEFLATE=y
865CONFIG_CRYPTO_MICHAEL_MIC=y
866# CONFIG_CRYPTO_CRC32C is not set
867# CONFIG_CRYPTO_TEST is not set
868
869#
870# Hardware crypto devices
871#
872
873#
874# Library routines
875#
876# CONFIG_CRC_CCITT is not set
877# CONFIG_CRC16 is not set
878CONFIG_CRC32=y
879# CONFIG_LIBCRC32C is not set
880CONFIG_ZLIB_INFLATE=y
881CONFIG_ZLIB_DEFLATE=y
diff --git a/arch/mips/configs/capcella_defconfig b/arch/mips/configs/capcella_defconfig
index 158e7165f4e3..bfbaa08c47cb 100644
--- a/arch/mips/configs/capcella_defconfig
+++ b/arch/mips/configs/capcella_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:00 2005 4# Thu Oct 20 22:25:20 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14 27CONFIG_HOTPLUG=y
29# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,57 +59,86 @@ CONFIG_KMOD=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60CONFIG_MACH_VR41XX=y 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_NEC_CMBVR4133 is not set 64# CONFIG_MIPS_PB1000 is not set
62# CONFIG_CASIO_E55 is not set 65# CONFIG_MIPS_PB1100 is not set
63# CONFIG_IBM_WORKPAD is not set 66# CONFIG_MIPS_PB1500 is not set
64# CONFIG_TANBAC_TB0226 is not set 67# CONFIG_MIPS_PB1550 is not set
65# CONFIG_TANBAC_TB0229 is not set 68# CONFIG_MIPS_PB1200 is not set
66# CONFIG_VICTOR_MPC30X is not set 69# CONFIG_MIPS_DB1000 is not set
67CONFIG_ZAO_CAPCELLA=y 70# CONFIG_MIPS_DB1100 is not set
68CONFIG_PCI_VR41XX=y 71# CONFIG_MIPS_DB1500 is not set
69CONFIG_VRC4173=y 72# CONFIG_MIPS_DB1550 is not set
70# CONFIG_TOSHIBA_JMR3927 is not set 73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
71# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
72# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
73# CONFIG_MIPS_EV64120 is not set 77# CONFIG_MIPS_EV64120 is not set
74# CONFIG_MIPS_EV96100 is not set 78# CONFIG_MIPS_EV96100 is not set
75# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
76# CONFIG_LASAT is not set
77# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
78# CONFIG_MIPS_ATLAS is not set 83# CONFIG_MIPS_ATLAS is not set
79# CONFIG_MIPS_MALTA is not set 84# CONFIG_MIPS_MALTA is not set
80# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
81# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
82# CONFIG_MOMENCO_OCELOT_G is not set
83# CONFIG_MOMENCO_OCELOT_C is not set
84# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
85# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
86# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
87# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
88# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
89# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
90# CONFIG_NEC_OSPREY is not set 98CONFIG_MACH_VR41XX=y
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
91# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
92# CONFIG_SOC_AU1X00 is not set 102# CONFIG_SGI_IP27 is not set
93# CONFIG_SIBYTE_SB1xxx_SOC is not set 103# CONFIG_SGI_IP32 is not set
104# CONFIG_SIBYTE_BIGSUR is not set
105# CONFIG_SIBYTE_SWARM is not set
106# CONFIG_SIBYTE_SENTOSA is not set
107# CONFIG_SIBYTE_RHONE is not set
108# CONFIG_SIBYTE_CARMEL is not set
109# CONFIG_SIBYTE_PTSWARM is not set
110# CONFIG_SIBYTE_LITTLESUR is not set
111# CONFIG_SIBYTE_CRHINE is not set
112# CONFIG_SIBYTE_CRHONE is not set
94# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
95# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
117# CONFIG_NEC_CMBVR4133 is not set
118# CONFIG_CASIO_E55 is not set
119# CONFIG_IBM_WORKPAD is not set
120# CONFIG_TANBAC_TB022X is not set
121# CONFIG_VICTOR_MPC30X is not set
122CONFIG_ZAO_CAPCELLA=y
123CONFIG_PCI_VR41XX=y
124# CONFIG_VRC4173 is not set
96CONFIG_RWSEM_GENERIC_SPINLOCK=y 125CONFIG_RWSEM_GENERIC_SPINLOCK=y
97CONFIG_GENERIC_CALIBRATE_DELAY=y 126CONFIG_GENERIC_CALIBRATE_DELAY=y
98CONFIG_HAVE_DEC_LOCK=y
99CONFIG_DMA_NONCOHERENT=y 127CONFIG_DMA_NONCOHERENT=y
100CONFIG_DMA_NEED_PCI_MAP_STATE=y 128CONFIG_DMA_NEED_PCI_MAP_STATE=y
129# CONFIG_CPU_BIG_ENDIAN is not set
101CONFIG_CPU_LITTLE_ENDIAN=y 130CONFIG_CPU_LITTLE_ENDIAN=y
131CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
102CONFIG_IRQ_CPU=y 132CONFIG_IRQ_CPU=y
103CONFIG_MIPS_L1_CACHE_SHIFT=5 133CONFIG_MIPS_L1_CACHE_SHIFT=5
104 134
105# 135#
106# CPU selection 136# CPU selection
107# 137#
108# CONFIG_CPU_MIPS32 is not set 138# CONFIG_CPU_MIPS32_R1 is not set
109# CONFIG_CPU_MIPS64 is not set 139# CONFIG_CPU_MIPS32_R2 is not set
140# CONFIG_CPU_MIPS64_R1 is not set
141# CONFIG_CPU_MIPS64_R2 is not set
110# CONFIG_CPU_R3000 is not set 142# CONFIG_CPU_R3000 is not set
111# CONFIG_CPU_TX39XX is not set 143# CONFIG_CPU_TX39XX is not set
112CONFIG_CPU_VR41XX=y 144CONFIG_CPU_VR41XX=y
@@ -122,12 +154,36 @@ CONFIG_CPU_VR41XX=y
122# CONFIG_CPU_RM7000 is not set 154# CONFIG_CPU_RM7000 is not set
123# CONFIG_CPU_RM9000 is not set 155# CONFIG_CPU_RM9000 is not set
124# CONFIG_CPU_SB1 is not set 156# CONFIG_CPU_SB1 is not set
157CONFIG_SYS_HAS_CPU_VR41XX=y
158CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
159CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
160CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
161CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
162
163#
164# Kernel type
165#
166CONFIG_32BIT=y
167# CONFIG_64BIT is not set
125CONFIG_PAGE_SIZE_4KB=y 168CONFIG_PAGE_SIZE_4KB=y
126# CONFIG_PAGE_SIZE_8KB is not set 169# CONFIG_PAGE_SIZE_8KB is not set
127# CONFIG_PAGE_SIZE_16KB is not set 170# CONFIG_PAGE_SIZE_16KB is not set
128# CONFIG_PAGE_SIZE_64KB is not set 171# CONFIG_PAGE_SIZE_64KB is not set
172# CONFIG_MIPS_MT is not set
129# CONFIG_CPU_ADVANCED is not set 173# CONFIG_CPU_ADVANCED is not set
130CONFIG_CPU_HAS_SYNC=y 174CONFIG_CPU_HAS_SYNC=y
175CONFIG_GENERIC_HARDIRQS=y
176CONFIG_GENERIC_IRQ_PROBE=y
177CONFIG_ARCH_FLATMEM_ENABLE=y
178CONFIG_SELECT_MEMORY_MODEL=y
179CONFIG_FLATMEM_MANUAL=y
180# CONFIG_DISCONTIGMEM_MANUAL is not set
181# CONFIG_SPARSEMEM_MANUAL is not set
182CONFIG_FLATMEM=y
183CONFIG_FLAT_NODE_MEM_MAP=y
184# CONFIG_SPARSEMEM_STATIC is not set
185CONFIG_PREEMPT_NONE=y
186# CONFIG_PREEMPT_VOLUNTARY is not set
131# CONFIG_PREEMPT is not set 187# CONFIG_PREEMPT is not set
132 188
133# 189#
@@ -136,7 +192,6 @@ CONFIG_CPU_HAS_SYNC=y
136CONFIG_HW_HAS_PCI=y 192CONFIG_HW_HAS_PCI=y
137CONFIG_PCI=y 193CONFIG_PCI=y
138CONFIG_PCI_LEGACY_PROC=y 194CONFIG_PCI_LEGACY_PROC=y
139CONFIG_PCI_NAMES=y
140CONFIG_MMU=y 195CONFIG_MMU=y
141 196
142# 197#
@@ -145,10 +200,6 @@ CONFIG_MMU=y
145# CONFIG_PCCARD is not set 200# CONFIG_PCCARD is not set
146 201
147# 202#
148# PC-card bridges
149#
150
151#
152# PCI Hotplug Support 203# PCI Hotplug Support
153# 204#
154# CONFIG_HOTPLUG_PCI is not set 205# CONFIG_HOTPLUG_PCI is not set
@@ -161,6 +212,81 @@ CONFIG_BINFMT_ELF=y
161CONFIG_TRAD_SIGNALS=y 212CONFIG_TRAD_SIGNALS=y
162 213
163# 214#
215# Networking
216#
217CONFIG_NET=y
218
219#
220# Networking options
221#
222CONFIG_PACKET=y
223CONFIG_PACKET_MMAP=y
224CONFIG_UNIX=y
225CONFIG_XFRM=y
226CONFIG_XFRM_USER=m
227CONFIG_NET_KEY=y
228CONFIG_INET=y
229CONFIG_IP_MULTICAST=y
230# CONFIG_IP_ADVANCED_ROUTER is not set
231CONFIG_IP_FIB_HASH=y
232CONFIG_IP_PNP=y
233# CONFIG_IP_PNP_DHCP is not set
234CONFIG_IP_PNP_BOOTP=y
235# CONFIG_IP_PNP_RARP is not set
236# CONFIG_NET_IPIP is not set
237# CONFIG_NET_IPGRE is not set
238# CONFIG_IP_MROUTE is not set
239# CONFIG_ARPD is not set
240# CONFIG_SYN_COOKIES is not set
241# CONFIG_INET_AH is not set
242# CONFIG_INET_ESP is not set
243# CONFIG_INET_IPCOMP is not set
244CONFIG_INET_TUNNEL=m
245CONFIG_INET_DIAG=y
246CONFIG_INET_TCP_DIAG=y
247# CONFIG_TCP_CONG_ADVANCED is not set
248CONFIG_TCP_CONG_BIC=y
249# CONFIG_IPV6 is not set
250# CONFIG_NETFILTER is not set
251
252#
253# DCCP Configuration (EXPERIMENTAL)
254#
255# CONFIG_IP_DCCP is not set
256
257#
258# SCTP Configuration (EXPERIMENTAL)
259#
260# CONFIG_IP_SCTP is not set
261# CONFIG_ATM is not set
262# CONFIG_BRIDGE is not set
263# CONFIG_VLAN_8021Q is not set
264# CONFIG_DECNET is not set
265# CONFIG_LLC2 is not set
266# CONFIG_IPX is not set
267# CONFIG_ATALK is not set
268# CONFIG_X25 is not set
269# CONFIG_LAPB is not set
270# CONFIG_NET_DIVERT is not set
271# CONFIG_ECONET is not set
272# CONFIG_WAN_ROUTER is not set
273# CONFIG_NET_SCHED is not set
274# CONFIG_NET_CLS_ROUTE is not set
275
276#
277# Network testing
278#
279# CONFIG_NET_PKTGEN is not set
280# CONFIG_HAMRADIO is not set
281# CONFIG_IRDA is not set
282# CONFIG_BT is not set
283CONFIG_IEEE80211=m
284# CONFIG_IEEE80211_DEBUG is not set
285CONFIG_IEEE80211_CRYPT_WEP=m
286CONFIG_IEEE80211_CRYPT_CCMP=m
287CONFIG_IEEE80211_CRYPT_TKIP=m
288
289#
164# Device Drivers 290# Device Drivers
165# 291#
166 292
@@ -169,7 +295,12 @@ CONFIG_TRAD_SIGNALS=y
169# 295#
170CONFIG_STANDALONE=y 296CONFIG_STANDALONE=y
171CONFIG_PREVENT_FIRMWARE_BUILD=y 297CONFIG_PREVENT_FIRMWARE_BUILD=y
172# CONFIG_FW_LOADER is not set 298CONFIG_FW_LOADER=m
299
300#
301# Connector - unified userspace <-> kernelspace linker
302#
303CONFIG_CONNECTOR=m
173 304
174# 305#
175# Memory Technology Devices (MTD) 306# Memory Technology Devices (MTD)
@@ -188,7 +319,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
188# 319#
189# Block devices 320# Block devices
190# 321#
191# CONFIG_BLK_DEV_FD is not set
192# CONFIG_BLK_CPQ_DA is not set 322# CONFIG_BLK_CPQ_DA is not set
193# CONFIG_BLK_CPQ_CISS_DA is not set 323# CONFIG_BLK_CPQ_CISS_DA is not set
194# CONFIG_BLK_DEV_DAC960 is not set 324# CONFIG_BLK_DEV_DAC960 is not set
@@ -199,11 +329,8 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
199# CONFIG_BLK_DEV_SX8 is not set 329# CONFIG_BLK_DEV_SX8 is not set
200# CONFIG_BLK_DEV_RAM is not set 330# CONFIG_BLK_DEV_RAM is not set
201CONFIG_BLK_DEV_RAM_COUNT=16 331CONFIG_BLK_DEV_RAM_COUNT=16
202CONFIG_INITRAMFS_SOURCE=""
203# CONFIG_LBD is not set 332# CONFIG_LBD is not set
204CONFIG_CDROM_PKTCDVD=m 333# CONFIG_CDROM_PKTCDVD is not set
205CONFIG_CDROM_PKTCDVD_BUFFERS=8
206# CONFIG_CDROM_PKTCDVD_WCACHE is not set
207 334
208# 335#
209# IO Schedulers 336# IO Schedulers
@@ -244,6 +371,7 @@ CONFIG_IDE_GENERIC=y
244# 371#
245# SCSI device support 372# SCSI device support
246# 373#
374# CONFIG_RAID_ATTRS is not set
247# CONFIG_SCSI is not set 375# CONFIG_SCSI is not set
248 376
249# 377#
@@ -254,6 +382,7 @@ CONFIG_IDE_GENERIC=y
254# 382#
255# Fusion MPT device support 383# Fusion MPT device support
256# 384#
385# CONFIG_FUSION is not set
257 386
258# 387#
259# IEEE 1394 (FireWire) support 388# IEEE 1394 (FireWire) support
@@ -266,79 +395,13 @@ CONFIG_IDE_GENERIC=y
266# CONFIG_I2O is not set 395# CONFIG_I2O is not set
267 396
268# 397#
269# Networking support 398# Network device support
270#
271CONFIG_NET=y
272
273#
274# Networking options
275#
276CONFIG_PACKET=y
277CONFIG_PACKET_MMAP=y
278CONFIG_NETLINK_DEV=y
279CONFIG_UNIX=y
280CONFIG_NET_KEY=y
281CONFIG_INET=y
282CONFIG_IP_MULTICAST=y
283# CONFIG_IP_ADVANCED_ROUTER is not set
284CONFIG_IP_PNP=y
285# CONFIG_IP_PNP_DHCP is not set
286CONFIG_IP_PNP_BOOTP=y
287# CONFIG_IP_PNP_RARP is not set
288# CONFIG_NET_IPIP is not set
289# CONFIG_NET_IPGRE is not set
290# CONFIG_IP_MROUTE is not set
291# CONFIG_ARPD is not set
292# CONFIG_SYN_COOKIES is not set
293# CONFIG_INET_AH is not set
294# CONFIG_INET_ESP is not set
295# CONFIG_INET_IPCOMP is not set
296CONFIG_INET_TUNNEL=m
297CONFIG_IP_TCPDIAG=m
298# CONFIG_IP_TCPDIAG_IPV6 is not set
299# CONFIG_IPV6 is not set
300# CONFIG_NETFILTER is not set
301CONFIG_XFRM=y
302CONFIG_XFRM_USER=m
303
304#
305# SCTP Configuration (EXPERIMENTAL)
306#
307# CONFIG_IP_SCTP is not set
308# CONFIG_ATM is not set
309# CONFIG_BRIDGE is not set
310# CONFIG_VLAN_8021Q is not set
311# CONFIG_DECNET is not set
312# CONFIG_LLC2 is not set
313# CONFIG_IPX is not set
314# CONFIG_ATALK is not set
315# CONFIG_X25 is not set
316# CONFIG_LAPB is not set
317# CONFIG_NET_DIVERT is not set
318# CONFIG_ECONET is not set
319# CONFIG_WAN_ROUTER is not set
320
321#
322# QoS and/or fair queueing
323#
324# CONFIG_NET_SCHED is not set
325# CONFIG_NET_CLS_ROUTE is not set
326
327#
328# Network testing
329# 399#
330# CONFIG_NET_PKTGEN is not set
331# CONFIG_NETPOLL is not set
332# CONFIG_NET_POLL_CONTROLLER is not set
333# CONFIG_HAMRADIO is not set
334# CONFIG_IRDA is not set
335# CONFIG_BT is not set
336CONFIG_NETDEVICES=y 400CONFIG_NETDEVICES=y
337# CONFIG_DUMMY is not set 401# CONFIG_DUMMY is not set
338# CONFIG_BONDING is not set 402# CONFIG_BONDING is not set
339# CONFIG_EQUALIZER is not set 403# CONFIG_EQUALIZER is not set
340# CONFIG_TUN is not set 404# CONFIG_TUN is not set
341# CONFIG_ETHERTAP is not set
342 405
343# 406#
344# ARCnet devices 407# ARCnet devices
@@ -346,10 +409,25 @@ CONFIG_NETDEVICES=y
346# CONFIG_ARCNET is not set 409# CONFIG_ARCNET is not set
347 410
348# 411#
412# PHY device support
413#
414CONFIG_PHYLIB=m
415CONFIG_PHYCONTROL=y
416
417#
418# MII PHY device drivers
419#
420CONFIG_MARVELL_PHY=m
421CONFIG_DAVICOM_PHY=m
422CONFIG_QSEMI_PHY=m
423CONFIG_LXT_PHY=m
424CONFIG_CICADA_PHY=m
425
426#
349# Ethernet (10 or 100Mbit) 427# Ethernet (10 or 100Mbit)
350# 428#
351CONFIG_NET_ETHERNET=y 429CONFIG_NET_ETHERNET=y
352# CONFIG_MII is not set 430CONFIG_MII=y
353# CONFIG_HAPPYMEAL is not set 431# CONFIG_HAPPYMEAL is not set
354# CONFIG_SUNGEM is not set 432# CONFIG_SUNGEM is not set
355# CONFIG_NET_VENDOR_3COM is not set 433# CONFIG_NET_VENDOR_3COM is not set
@@ -359,7 +437,30 @@ CONFIG_NET_ETHERNET=y
359# 437#
360# CONFIG_NET_TULIP is not set 438# CONFIG_NET_TULIP is not set
361# CONFIG_HP100 is not set 439# CONFIG_HP100 is not set
362# CONFIG_NET_PCI is not set 440CONFIG_NET_PCI=y
441# CONFIG_PCNET32 is not set
442# CONFIG_AMD8111_ETH is not set
443# CONFIG_ADAPTEC_STARFIRE is not set
444# CONFIG_B44 is not set
445# CONFIG_FORCEDETH is not set
446# CONFIG_DGRS is not set
447# CONFIG_EEPRO100 is not set
448# CONFIG_E100 is not set
449# CONFIG_FEALNX is not set
450# CONFIG_NATSEMI is not set
451# CONFIG_NE2K_PCI is not set
452# CONFIG_8139CP is not set
453CONFIG_8139TOO=y
454CONFIG_8139TOO_PIO=y
455# CONFIG_8139TOO_TUNE_TWISTER is not set
456# CONFIG_8139TOO_8129 is not set
457# CONFIG_8139_OLD_RX_RESET is not set
458# CONFIG_SIS900 is not set
459# CONFIG_EPIC100 is not set
460# CONFIG_SUNDANCE is not set
461# CONFIG_TLAN is not set
462# CONFIG_VIA_RHINE is not set
463# CONFIG_LAN_SAA9730 is not set
363 464
364# 465#
365# Ethernet (1000 Mbit) 466# Ethernet (1000 Mbit)
@@ -371,12 +472,17 @@ CONFIG_NET_ETHERNET=y
371# CONFIG_HAMACHI is not set 472# CONFIG_HAMACHI is not set
372# CONFIG_YELLOWFIN is not set 473# CONFIG_YELLOWFIN is not set
373# CONFIG_R8169 is not set 474# CONFIG_R8169 is not set
475# CONFIG_SIS190 is not set
476# CONFIG_SKGE is not set
374# CONFIG_SK98LIN is not set 477# CONFIG_SK98LIN is not set
478# CONFIG_VIA_VELOCITY is not set
375# CONFIG_TIGON3 is not set 479# CONFIG_TIGON3 is not set
480# CONFIG_BNX2 is not set
376 481
377# 482#
378# Ethernet (10000 Mbit) 483# Ethernet (10000 Mbit)
379# 484#
485# CONFIG_CHELSIO_T1 is not set
380# CONFIG_IXGB is not set 486# CONFIG_IXGB is not set
381# CONFIG_S2IO is not set 487# CONFIG_S2IO is not set
382 488
@@ -389,6 +495,8 @@ CONFIG_NET_ETHERNET=y
389# Wireless LAN (non-hamradio) 495# Wireless LAN (non-hamradio)
390# 496#
391# CONFIG_NET_RADIO is not set 497# CONFIG_NET_RADIO is not set
498# CONFIG_IPW_DEBUG is not set
499CONFIG_IPW2200=m
392 500
393# 501#
394# Wan interfaces 502# Wan interfaces
@@ -400,6 +508,8 @@ CONFIG_NET_ETHERNET=y
400# CONFIG_SLIP is not set 508# CONFIG_SLIP is not set
401# CONFIG_SHAPER is not set 509# CONFIG_SHAPER is not set
402# CONFIG_NETCONSOLE is not set 510# CONFIG_NETCONSOLE is not set
511# CONFIG_NETPOLL is not set
512# CONFIG_NET_POLL_CONTROLLER is not set
403 513
404# 514#
405# ISDN subsystem 515# ISDN subsystem
@@ -419,29 +529,13 @@ CONFIG_INPUT=y
419# 529#
420# Userland interfaces 530# Userland interfaces
421# 531#
422CONFIG_INPUT_MOUSEDEV=y 532# CONFIG_INPUT_MOUSEDEV is not set
423CONFIG_INPUT_MOUSEDEV_PSAUX=y
424CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
425CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
426# CONFIG_INPUT_JOYDEV is not set 533# CONFIG_INPUT_JOYDEV is not set
427# CONFIG_INPUT_TSDEV is not set 534# CONFIG_INPUT_TSDEV is not set
428# CONFIG_INPUT_EVDEV is not set 535# CONFIG_INPUT_EVDEV is not set
429# CONFIG_INPUT_EVBUG is not set 536# CONFIG_INPUT_EVBUG is not set
430 537
431# 538#
432# Input I/O drivers
433#
434# CONFIG_GAMEPORT is not set
435CONFIG_SOUND_GAMEPORT=y
436CONFIG_SERIO=y
437CONFIG_SERIO_I8042=y
438CONFIG_SERIO_SERPORT=y
439# CONFIG_SERIO_CT82C710 is not set
440# CONFIG_SERIO_PCIPS2 is not set
441CONFIG_SERIO_LIBPS2=m
442CONFIG_SERIO_RAW=m
443
444#
445# Input Device Drivers 539# Input Device Drivers
446# 540#
447# CONFIG_INPUT_KEYBOARD is not set 541# CONFIG_INPUT_KEYBOARD is not set
@@ -451,6 +545,12 @@ CONFIG_SERIO_RAW=m
451# CONFIG_INPUT_MISC is not set 545# CONFIG_INPUT_MISC is not set
452 546
453# 547#
548# Hardware I/O ports
549#
550# CONFIG_SERIO is not set
551# CONFIG_GAMEPORT is not set
552
553#
454# Character devices 554# Character devices
455# 555#
456CONFIG_VT=y 556CONFIG_VT=y
@@ -461,16 +561,16 @@ CONFIG_HW_CONSOLE=y
461# 561#
462# Serial drivers 562# Serial drivers
463# 563#
464CONFIG_SERIAL_8250=y 564# CONFIG_SERIAL_8250 is not set
465CONFIG_SERIAL_8250_CONSOLE=y
466CONFIG_SERIAL_8250_NR_UARTS=4
467# CONFIG_SERIAL_8250_EXTENDED is not set
468 565
469# 566#
470# Non-8250 serial port support 567# Non-8250 serial port support
471# 568#
472CONFIG_SERIAL_CORE=y 569CONFIG_SERIAL_CORE=y
473CONFIG_SERIAL_CORE_CONSOLE=y 570CONFIG_SERIAL_CORE_CONSOLE=y
571CONFIG_SERIAL_VR41XX=y
572CONFIG_SERIAL_VR41XX_CONSOLE=y
573# CONFIG_SERIAL_JSM is not set
474CONFIG_UNIX98_PTYS=y 574CONFIG_UNIX98_PTYS=y
475CONFIG_LEGACY_PTYS=y 575CONFIG_LEGACY_PTYS=y
476CONFIG_LEGACY_PTY_COUNT=256 576CONFIG_LEGACY_PTY_COUNT=256
@@ -483,19 +583,7 @@ CONFIG_LEGACY_PTY_COUNT=256
483# 583#
484# Watchdog Cards 584# Watchdog Cards
485# 585#
486CONFIG_WATCHDOG=y 586# CONFIG_WATCHDOG is not set
487# CONFIG_WATCHDOG_NOWAYOUT is not set
488
489#
490# Watchdog Device Drivers
491#
492# CONFIG_SOFT_WATCHDOG is not set
493
494#
495# PCI-based Watchdog Cards
496#
497# CONFIG_PCIPCWATCHDOG is not set
498# CONFIG_WDTPCI is not set
499# CONFIG_RTC is not set 587# CONFIG_RTC is not set
500# CONFIG_GEN_RTC is not set 588# CONFIG_GEN_RTC is not set
501# CONFIG_DTLK is not set 589# CONFIG_DTLK is not set
@@ -506,9 +594,15 @@ CONFIG_WATCHDOG=y
506# Ftape, the floppy tape device driver 594# Ftape, the floppy tape device driver
507# 595#
508# CONFIG_DRM is not set 596# CONFIG_DRM is not set
597CONFIG_GPIO_VR41XX=y
509# CONFIG_RAW_DRIVER is not set 598# CONFIG_RAW_DRIVER is not set
510 599
511# 600#
601# TPM devices
602#
603# CONFIG_TCG_TPM is not set
604
605#
512# I2C support 606# I2C support
513# 607#
514# CONFIG_I2C is not set 608# CONFIG_I2C is not set
@@ -519,10 +613,20 @@ CONFIG_WATCHDOG=y
519# CONFIG_W1 is not set 613# CONFIG_W1 is not set
520 614
521# 615#
616# Hardware Monitoring support
617#
618# CONFIG_HWMON is not set
619# CONFIG_HWMON_VID is not set
620
621#
522# Misc devices 622# Misc devices
523# 623#
524 624
525# 625#
626# Multimedia Capabilities Port drivers
627#
628
629#
526# Multimedia devices 630# Multimedia devices
527# 631#
528# CONFIG_VIDEO_DEV is not set 632# CONFIG_VIDEO_DEV is not set
@@ -542,7 +646,6 @@ CONFIG_WATCHDOG=y
542# 646#
543# CONFIG_VGA_CONSOLE is not set 647# CONFIG_VGA_CONSOLE is not set
544CONFIG_DUMMY_CONSOLE=y 648CONFIG_DUMMY_CONSOLE=y
545# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
546 649
547# 650#
548# Sound 651# Sound
@@ -552,13 +655,9 @@ CONFIG_DUMMY_CONSOLE=y
552# 655#
553# USB support 656# USB support
554# 657#
555# CONFIG_USB is not set
556CONFIG_USB_ARCH_HAS_HCD=y 658CONFIG_USB_ARCH_HAS_HCD=y
557CONFIG_USB_ARCH_HAS_OHCI=y 659CONFIG_USB_ARCH_HAS_OHCI=y
558 660# CONFIG_USB is not set
559#
560# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
561#
562 661
563# 662#
564# USB Gadget Support 663# USB Gadget Support
@@ -576,21 +675,29 @@ CONFIG_USB_ARCH_HAS_OHCI=y
576# CONFIG_INFINIBAND is not set 675# CONFIG_INFINIBAND is not set
577 676
578# 677#
678# SN Devices
679#
680
681#
579# File systems 682# File systems
580# 683#
581CONFIG_EXT2_FS=y 684CONFIG_EXT2_FS=y
582# CONFIG_EXT2_FS_XATTR is not set 685# CONFIG_EXT2_FS_XATTR is not set
686# CONFIG_EXT2_FS_XIP is not set
583# CONFIG_EXT3_FS is not set 687# CONFIG_EXT3_FS is not set
584# CONFIG_JBD is not set 688# CONFIG_JBD is not set
585# CONFIG_REISERFS_FS is not set 689# CONFIG_REISERFS_FS is not set
586# CONFIG_JFS_FS is not set 690# CONFIG_JFS_FS is not set
691# CONFIG_FS_POSIX_ACL is not set
587# CONFIG_XFS_FS is not set 692# CONFIG_XFS_FS is not set
588# CONFIG_MINIX_FS is not set 693# CONFIG_MINIX_FS is not set
589# CONFIG_ROMFS_FS is not set 694# CONFIG_ROMFS_FS is not set
695CONFIG_INOTIFY=y
590# CONFIG_QUOTA is not set 696# CONFIG_QUOTA is not set
591CONFIG_DNOTIFY=y 697CONFIG_DNOTIFY=y
592CONFIG_AUTOFS_FS=y 698CONFIG_AUTOFS_FS=y
593CONFIG_AUTOFS4_FS=y 699CONFIG_AUTOFS4_FS=y
700CONFIG_FUSE_FS=m
594 701
595# 702#
596# CD-ROM/DVD Filesystems 703# CD-ROM/DVD Filesystems
@@ -611,12 +718,10 @@ CONFIG_AUTOFS4_FS=y
611CONFIG_PROC_FS=y 718CONFIG_PROC_FS=y
612CONFIG_PROC_KCORE=y 719CONFIG_PROC_KCORE=y
613CONFIG_SYSFS=y 720CONFIG_SYSFS=y
614# CONFIG_DEVFS_FS is not set
615CONFIG_DEVPTS_FS_XATTR=y
616CONFIG_DEVPTS_FS_SECURITY=y
617# CONFIG_TMPFS is not set 721# CONFIG_TMPFS is not set
618# CONFIG_HUGETLB_PAGE is not set 722# CONFIG_HUGETLB_PAGE is not set
619CONFIG_RAMFS=y 723CONFIG_RAMFS=y
724CONFIG_RELAYFS_FS=m
620 725
621# 726#
622# Miscellaneous filesystems 727# Miscellaneous filesystems
@@ -648,6 +753,7 @@ CONFIG_NFSD=y
648CONFIG_ROOT_NFS=y 753CONFIG_ROOT_NFS=y
649CONFIG_LOCKD=y 754CONFIG_LOCKD=y
650CONFIG_EXPORTFS=y 755CONFIG_EXPORTFS=y
756CONFIG_NFS_COMMON=y
651CONFIG_SUNRPC=y 757CONFIG_SUNRPC=y
652# CONFIG_RPCSEC_GSS_KRB5 is not set 758# CONFIG_RPCSEC_GSS_KRB5 is not set
653# CONFIG_RPCSEC_GSS_SPKM3 is not set 759# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -656,6 +762,7 @@ CONFIG_SUNRPC=y
656# CONFIG_NCP_FS is not set 762# CONFIG_NCP_FS is not set
657# CONFIG_CODA_FS is not set 763# CONFIG_CODA_FS is not set
658# CONFIG_AFS_FS is not set 764# CONFIG_AFS_FS is not set
765# CONFIG_9P_FS is not set
659 766
660# 767#
661# Partition Types 768# Partition Types
@@ -676,9 +783,11 @@ CONFIG_MSDOS_PARTITION=y
676# 783#
677# Kernel hacking 784# Kernel hacking
678# 785#
786# CONFIG_PRINTK_TIME is not set
679# CONFIG_DEBUG_KERNEL is not set 787# CONFIG_DEBUG_KERNEL is not set
788CONFIG_LOG_BUF_SHIFT=14
680CONFIG_CROSSCOMPILE=y 789CONFIG_CROSSCOMPILE=y
681CONFIG_CMDLINE="" 790CONFIG_CMDLINE="mem=32M console=ttyVR0,38400"
682 791
683# 792#
684# Security options 793# Security options
@@ -690,7 +799,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
690# 799#
691# Cryptographic options 800# Cryptographic options
692# 801#
693# CONFIG_CRYPTO is not set 802CONFIG_CRYPTO=y
803CONFIG_CRYPTO_HMAC=y
804CONFIG_CRYPTO_NULL=m
805CONFIG_CRYPTO_MD4=m
806CONFIG_CRYPTO_MD5=m
807CONFIG_CRYPTO_SHA1=m
808CONFIG_CRYPTO_SHA256=m
809CONFIG_CRYPTO_SHA512=m
810CONFIG_CRYPTO_WP512=m
811CONFIG_CRYPTO_TGR192=m
812CONFIG_CRYPTO_DES=m
813CONFIG_CRYPTO_BLOWFISH=m
814CONFIG_CRYPTO_TWOFISH=m
815CONFIG_CRYPTO_SERPENT=m
816CONFIG_CRYPTO_AES=m
817CONFIG_CRYPTO_CAST5=m
818CONFIG_CRYPTO_CAST6=m
819CONFIG_CRYPTO_TEA=m
820CONFIG_CRYPTO_ARC4=m
821CONFIG_CRYPTO_KHAZAD=m
822CONFIG_CRYPTO_ANUBIS=m
823CONFIG_CRYPTO_DEFLATE=m
824CONFIG_CRYPTO_MICHAEL_MIC=m
825CONFIG_CRYPTO_CRC32C=m
826# CONFIG_CRYPTO_TEST is not set
694 827
695# 828#
696# Hardware crypto devices 829# Hardware crypto devices
@@ -700,7 +833,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
700# Library routines 833# Library routines
701# 834#
702# CONFIG_CRC_CCITT is not set 835# CONFIG_CRC_CCITT is not set
703# CONFIG_CRC32 is not set 836CONFIG_CRC16=m
837CONFIG_CRC32=y
704CONFIG_LIBCRC32C=m 838CONFIG_LIBCRC32C=m
705CONFIG_GENERIC_HARDIRQS=y 839CONFIG_ZLIB_INFLATE=m
706CONFIG_GENERIC_IRQ_PROBE=y 840CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/mips/configs/cobalt_defconfig b/arch/mips/configs/cobalt_defconfig
index 4302c6f914f5..4b4d1ddb3d42 100644
--- a/arch/mips/configs/cobalt_defconfig
+++ b/arch/mips/configs/cobalt_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:00 2005 4# Thu Oct 20 22:25:23 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14
29CONFIG_HOTPLUG=y 27CONFIG_HOTPLUG=y
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -50,41 +53,69 @@ CONFIG_CC_ALIGN_JUMPS=0
50# 53#
51# Machine selection 54# Machine selection
52# 55#
53# CONFIG_MACH_JAZZ is not set 56# CONFIG_MIPS_MTX1 is not set
54# CONFIG_MACH_VR41XX is not set 57# CONFIG_MIPS_BOSPORUS is not set
55# CONFIG_TOSHIBA_JMR3927 is not set 58# CONFIG_MIPS_PB1000 is not set
59# CONFIG_MIPS_PB1100 is not set
60# CONFIG_MIPS_PB1500 is not set
61# CONFIG_MIPS_PB1550 is not set
62# CONFIG_MIPS_PB1200 is not set
63# CONFIG_MIPS_DB1000 is not set
64# CONFIG_MIPS_DB1100 is not set
65# CONFIG_MIPS_DB1500 is not set
66# CONFIG_MIPS_DB1550 is not set
67# CONFIG_MIPS_DB1200 is not set
68# CONFIG_MIPS_MIRAGE is not set
56CONFIG_MIPS_COBALT=y 69CONFIG_MIPS_COBALT=y
57# CONFIG_MACH_DECSTATION is not set 70# CONFIG_MACH_DECSTATION is not set
58# CONFIG_MIPS_EV64120 is not set 71# CONFIG_MIPS_EV64120 is not set
59# CONFIG_MIPS_EV96100 is not set 72# CONFIG_MIPS_EV96100 is not set
60# CONFIG_MIPS_IVR is not set 73# CONFIG_MIPS_IVR is not set
61# CONFIG_LASAT is not set
62# CONFIG_MIPS_ITE8172 is not set 74# CONFIG_MIPS_ITE8172 is not set
75# CONFIG_MACH_JAZZ is not set
76# CONFIG_LASAT is not set
63# CONFIG_MIPS_ATLAS is not set 77# CONFIG_MIPS_ATLAS is not set
64# CONFIG_MIPS_MALTA is not set 78# CONFIG_MIPS_MALTA is not set
65# CONFIG_MIPS_SEAD is not set 79# CONFIG_MIPS_SEAD is not set
80# CONFIG_MIPS_SIM is not set
81# CONFIG_MOMENCO_JAGUAR_ATX is not set
66# CONFIG_MOMENCO_OCELOT is not set 82# CONFIG_MOMENCO_OCELOT is not set
67# CONFIG_MOMENCO_OCELOT_G is not set
68# CONFIG_MOMENCO_OCELOT_C is not set
69# CONFIG_MOMENCO_OCELOT_3 is not set 83# CONFIG_MOMENCO_OCELOT_3 is not set
70# CONFIG_MOMENCO_JAGUAR_ATX is not set 84# CONFIG_MOMENCO_OCELOT_C is not set
71# CONFIG_PMC_YOSEMITE is not set 85# CONFIG_MOMENCO_OCELOT_G is not set
86# CONFIG_MIPS_XXS1500 is not set
87# CONFIG_PNX8550_V2PCI is not set
88# CONFIG_PNX8550_JBS is not set
72# CONFIG_DDB5074 is not set 89# CONFIG_DDB5074 is not set
73# CONFIG_DDB5476 is not set 90# CONFIG_DDB5476 is not set
74# CONFIG_DDB5477 is not set 91# CONFIG_DDB5477 is not set
75# CONFIG_NEC_OSPREY is not set 92# CONFIG_MACH_VR41XX is not set
93# CONFIG_PMC_YOSEMITE is not set
94# CONFIG_QEMU is not set
76# CONFIG_SGI_IP22 is not set 95# CONFIG_SGI_IP22 is not set
77# CONFIG_SOC_AU1X00 is not set 96# CONFIG_SGI_IP27 is not set
78# CONFIG_SIBYTE_SB1xxx_SOC is not set 97# CONFIG_SGI_IP32 is not set
98# CONFIG_SIBYTE_BIGSUR is not set
99# CONFIG_SIBYTE_SWARM is not set
100# CONFIG_SIBYTE_SENTOSA is not set
101# CONFIG_SIBYTE_RHONE is not set
102# CONFIG_SIBYTE_CARMEL is not set
103# CONFIG_SIBYTE_PTSWARM is not set
104# CONFIG_SIBYTE_LITTLESUR is not set
105# CONFIG_SIBYTE_CRHINE is not set
106# CONFIG_SIBYTE_CRHONE is not set
79# CONFIG_SNI_RM200_PCI is not set 107# CONFIG_SNI_RM200_PCI is not set
108# CONFIG_TOSHIBA_JMR3927 is not set
80# CONFIG_TOSHIBA_RBTX4927 is not set 109# CONFIG_TOSHIBA_RBTX4927 is not set
110# CONFIG_TOSHIBA_RBTX4938 is not set
81CONFIG_RWSEM_GENERIC_SPINLOCK=y 111CONFIG_RWSEM_GENERIC_SPINLOCK=y
82CONFIG_GENERIC_CALIBRATE_DELAY=y 112CONFIG_GENERIC_CALIBRATE_DELAY=y
83CONFIG_HAVE_DEC_LOCK=y
84CONFIG_DMA_NONCOHERENT=y 113CONFIG_DMA_NONCOHERENT=y
85CONFIG_DMA_NEED_PCI_MAP_STATE=y 114CONFIG_DMA_NEED_PCI_MAP_STATE=y
86CONFIG_I8259=y 115CONFIG_I8259=y
116# CONFIG_CPU_BIG_ENDIAN is not set
87CONFIG_CPU_LITTLE_ENDIAN=y 117CONFIG_CPU_LITTLE_ENDIAN=y
118CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
88CONFIG_IRQ_CPU=y 119CONFIG_IRQ_CPU=y
89CONFIG_MIPS_GT64111=y 120CONFIG_MIPS_GT64111=y
90CONFIG_MIPS_L1_CACHE_SHIFT=5 121CONFIG_MIPS_L1_CACHE_SHIFT=5
@@ -92,8 +123,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
92# 123#
93# CPU selection 124# CPU selection
94# 125#
95# CONFIG_CPU_MIPS32 is not set 126# CONFIG_CPU_MIPS32_R1 is not set
96# CONFIG_CPU_MIPS64 is not set 127# CONFIG_CPU_MIPS32_R2 is not set
128# CONFIG_CPU_MIPS64_R1 is not set
129# CONFIG_CPU_MIPS64_R2 is not set
97# CONFIG_CPU_R3000 is not set 130# CONFIG_CPU_R3000 is not set
98# CONFIG_CPU_TX39XX is not set 131# CONFIG_CPU_TX39XX is not set
99# CONFIG_CPU_VR41XX is not set 132# CONFIG_CPU_VR41XX is not set
@@ -109,14 +142,38 @@ CONFIG_CPU_NEVADA=y
109# CONFIG_CPU_RM7000 is not set 142# CONFIG_CPU_RM7000 is not set
110# CONFIG_CPU_RM9000 is not set 143# CONFIG_CPU_RM9000 is not set
111# CONFIG_CPU_SB1 is not set 144# CONFIG_CPU_SB1 is not set
145CONFIG_SYS_HAS_CPU_NEVADA=y
146CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
147CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
148CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
149CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
150
151#
152# Kernel type
153#
154CONFIG_32BIT=y
155# CONFIG_64BIT is not set
112CONFIG_PAGE_SIZE_4KB=y 156CONFIG_PAGE_SIZE_4KB=y
113# CONFIG_PAGE_SIZE_8KB is not set 157# CONFIG_PAGE_SIZE_8KB is not set
114# CONFIG_PAGE_SIZE_16KB is not set 158# CONFIG_PAGE_SIZE_16KB is not set
115# CONFIG_PAGE_SIZE_64KB is not set 159# CONFIG_PAGE_SIZE_64KB is not set
160# CONFIG_MIPS_MT is not set
116# CONFIG_CPU_ADVANCED is not set 161# CONFIG_CPU_ADVANCED is not set
117CONFIG_CPU_HAS_LLSC=y 162CONFIG_CPU_HAS_LLSC=y
118CONFIG_CPU_HAS_LLDSCD=y 163CONFIG_CPU_HAS_LLDSCD=y
119CONFIG_CPU_HAS_SYNC=y 164CONFIG_CPU_HAS_SYNC=y
165CONFIG_GENERIC_HARDIRQS=y
166CONFIG_GENERIC_IRQ_PROBE=y
167CONFIG_ARCH_FLATMEM_ENABLE=y
168CONFIG_SELECT_MEMORY_MODEL=y
169CONFIG_FLATMEM_MANUAL=y
170# CONFIG_DISCONTIGMEM_MANUAL is not set
171# CONFIG_SPARSEMEM_MANUAL is not set
172CONFIG_FLATMEM=y
173CONFIG_FLAT_NODE_MEM_MAP=y
174# CONFIG_SPARSEMEM_STATIC is not set
175CONFIG_PREEMPT_NONE=y
176# CONFIG_PREEMPT_VOLUNTARY is not set
120# CONFIG_PREEMPT is not set 177# CONFIG_PREEMPT is not set
121 178
122# 179#
@@ -125,7 +182,6 @@ CONFIG_CPU_HAS_SYNC=y
125CONFIG_HW_HAS_PCI=y 182CONFIG_HW_HAS_PCI=y
126CONFIG_PCI=y 183CONFIG_PCI=y
127CONFIG_PCI_LEGACY_PROC=y 184CONFIG_PCI_LEGACY_PROC=y
128CONFIG_PCI_NAMES=y
129CONFIG_MMU=y 185CONFIG_MMU=y
130 186
131# 187#
@@ -134,10 +190,6 @@ CONFIG_MMU=y
134# CONFIG_PCCARD is not set 190# CONFIG_PCCARD is not set
135 191
136# 192#
137# PC-card bridges
138#
139
140#
141# PCI Hotplug Support 193# PCI Hotplug Support
142# 194#
143# CONFIG_HOTPLUG_PCI is not set 195# CONFIG_HOTPLUG_PCI is not set
@@ -150,6 +202,77 @@ CONFIG_BINFMT_ELF=y
150CONFIG_TRAD_SIGNALS=y 202CONFIG_TRAD_SIGNALS=y
151 203
152# 204#
205# Networking
206#
207CONFIG_NET=y
208
209#
210# Networking options
211#
212CONFIG_PACKET=y
213# CONFIG_PACKET_MMAP is not set
214CONFIG_UNIX=y
215CONFIG_XFRM=y
216CONFIG_XFRM_USER=y
217CONFIG_NET_KEY=y
218CONFIG_INET=y
219# CONFIG_IP_MULTICAST is not set
220# CONFIG_IP_ADVANCED_ROUTER is not set
221CONFIG_IP_FIB_HASH=y
222# CONFIG_IP_PNP is not set
223# CONFIG_NET_IPIP is not set
224# CONFIG_NET_IPGRE is not set
225# CONFIG_ARPD is not set
226# CONFIG_SYN_COOKIES is not set
227# CONFIG_INET_AH is not set
228# CONFIG_INET_ESP is not set
229# CONFIG_INET_IPCOMP is not set
230CONFIG_INET_TUNNEL=y
231CONFIG_INET_DIAG=y
232CONFIG_INET_TCP_DIAG=y
233# CONFIG_TCP_CONG_ADVANCED is not set
234CONFIG_TCP_CONG_BIC=y
235# CONFIG_IPV6 is not set
236# CONFIG_NETFILTER is not set
237
238#
239# DCCP Configuration (EXPERIMENTAL)
240#
241# CONFIG_IP_DCCP is not set
242
243#
244# SCTP Configuration (EXPERIMENTAL)
245#
246# CONFIG_IP_SCTP is not set
247# CONFIG_ATM is not set
248# CONFIG_BRIDGE is not set
249# CONFIG_VLAN_8021Q is not set
250# CONFIG_DECNET is not set
251# CONFIG_LLC2 is not set
252# CONFIG_IPX is not set
253# CONFIG_ATALK is not set
254# CONFIG_X25 is not set
255# CONFIG_LAPB is not set
256# CONFIG_NET_DIVERT is not set
257# CONFIG_ECONET is not set
258# CONFIG_WAN_ROUTER is not set
259# CONFIG_NET_SCHED is not set
260# CONFIG_NET_CLS_ROUTE is not set
261
262#
263# Network testing
264#
265# CONFIG_NET_PKTGEN is not set
266# CONFIG_HAMRADIO is not set
267# CONFIG_IRDA is not set
268# CONFIG_BT is not set
269CONFIG_IEEE80211=y
270# CONFIG_IEEE80211_DEBUG is not set
271CONFIG_IEEE80211_CRYPT_WEP=y
272CONFIG_IEEE80211_CRYPT_CCMP=y
273CONFIG_IEEE80211_CRYPT_TKIP=y
274
275#
153# Device Drivers 276# Device Drivers
154# 277#
155 278
@@ -161,6 +284,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
161CONFIG_FW_LOADER=y 284CONFIG_FW_LOADER=y
162 285
163# 286#
287# Connector - unified userspace <-> kernelspace linker
288#
289CONFIG_CONNECTOR=y
290
291#
164# Memory Technology Devices (MTD) 292# Memory Technology Devices (MTD)
165# 293#
166# CONFIG_MTD is not set 294# CONFIG_MTD is not set
@@ -177,7 +305,6 @@ CONFIG_FW_LOADER=y
177# 305#
178# Block devices 306# Block devices
179# 307#
180# CONFIG_BLK_DEV_FD is not set
181# CONFIG_BLK_CPQ_DA is not set 308# CONFIG_BLK_CPQ_DA is not set
182# CONFIG_BLK_CPQ_CISS_DA is not set 309# CONFIG_BLK_CPQ_CISS_DA is not set
183# CONFIG_BLK_DEV_DAC960 is not set 310# CONFIG_BLK_DEV_DAC960 is not set
@@ -189,7 +316,6 @@ CONFIG_BLK_DEV_LOOP=y
189# CONFIG_BLK_DEV_SX8 is not set 316# CONFIG_BLK_DEV_SX8 is not set
190# CONFIG_BLK_DEV_RAM is not set 317# CONFIG_BLK_DEV_RAM is not set
191CONFIG_BLK_DEV_RAM_COUNT=16 318CONFIG_BLK_DEV_RAM_COUNT=16
192CONFIG_INITRAMFS_SOURCE=""
193# CONFIG_LBD is not set 319# CONFIG_LBD is not set
194CONFIG_CDROM_PKTCDVD=y 320CONFIG_CDROM_PKTCDVD=y
195CONFIG_CDROM_PKTCDVD_BUFFERS=8 321CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -234,6 +360,7 @@ CONFIG_IDE_GENERIC=y
234# 360#
235# SCSI device support 361# SCSI device support
236# 362#
363CONFIG_RAID_ATTRS=y
237# CONFIG_SCSI is not set 364# CONFIG_SCSI is not set
238 365
239# 366#
@@ -244,6 +371,7 @@ CONFIG_IDE_GENERIC=y
244# 371#
245# Fusion MPT device support 372# Fusion MPT device support
246# 373#
374# CONFIG_FUSION is not set
247 375
248# 376#
249# IEEE 1394 (FireWire) support 377# IEEE 1394 (FireWire) support
@@ -256,75 +384,13 @@ CONFIG_IDE_GENERIC=y
256# CONFIG_I2O is not set 384# CONFIG_I2O is not set
257 385
258# 386#
259# Networking support 387# Network device support
260#
261CONFIG_NET=y
262
263#
264# Networking options
265#
266CONFIG_PACKET=y
267# CONFIG_PACKET_MMAP is not set
268CONFIG_NETLINK_DEV=y
269CONFIG_UNIX=y
270CONFIG_NET_KEY=y
271CONFIG_INET=y
272# CONFIG_IP_MULTICAST is not set
273# CONFIG_IP_ADVANCED_ROUTER is not set
274# CONFIG_IP_PNP is not set
275# CONFIG_NET_IPIP is not set
276# CONFIG_NET_IPGRE is not set
277# CONFIG_ARPD is not set
278# CONFIG_SYN_COOKIES is not set
279# CONFIG_INET_AH is not set
280# CONFIG_INET_ESP is not set
281# CONFIG_INET_IPCOMP is not set
282CONFIG_INET_TUNNEL=y
283CONFIG_IP_TCPDIAG=y
284# CONFIG_IP_TCPDIAG_IPV6 is not set
285# CONFIG_IPV6 is not set
286# CONFIG_NETFILTER is not set
287CONFIG_XFRM=y
288CONFIG_XFRM_USER=y
289
290#
291# SCTP Configuration (EXPERIMENTAL)
292#
293# CONFIG_IP_SCTP is not set
294# CONFIG_ATM is not set
295# CONFIG_BRIDGE is not set
296# CONFIG_VLAN_8021Q is not set
297# CONFIG_DECNET is not set
298# CONFIG_LLC2 is not set
299# CONFIG_IPX is not set
300# CONFIG_ATALK is not set
301# CONFIG_X25 is not set
302# CONFIG_LAPB is not set
303# CONFIG_NET_DIVERT is not set
304# CONFIG_ECONET is not set
305# CONFIG_WAN_ROUTER is not set
306
307#
308# QoS and/or fair queueing
309#
310# CONFIG_NET_SCHED is not set
311# CONFIG_NET_CLS_ROUTE is not set
312
313#
314# Network testing
315# 388#
316# CONFIG_NET_PKTGEN is not set
317# CONFIG_NETPOLL is not set
318# CONFIG_NET_POLL_CONTROLLER is not set
319# CONFIG_HAMRADIO is not set
320# CONFIG_IRDA is not set
321# CONFIG_BT is not set
322CONFIG_NETDEVICES=y 389CONFIG_NETDEVICES=y
323# CONFIG_DUMMY is not set 390# CONFIG_DUMMY is not set
324# CONFIG_BONDING is not set 391# CONFIG_BONDING is not set
325# CONFIG_EQUALIZER is not set 392# CONFIG_EQUALIZER is not set
326# CONFIG_TUN is not set 393# CONFIG_TUN is not set
327# CONFIG_ETHERTAP is not set
328 394
329# 395#
330# ARCnet devices 396# ARCnet devices
@@ -332,6 +398,21 @@ CONFIG_NETDEVICES=y
332# CONFIG_ARCNET is not set 398# CONFIG_ARCNET is not set
333 399
334# 400#
401# PHY device support
402#
403CONFIG_PHYLIB=y
404CONFIG_PHYCONTROL=y
405
406#
407# MII PHY device drivers
408#
409CONFIG_MARVELL_PHY=y
410CONFIG_DAVICOM_PHY=y
411CONFIG_QSEMI_PHY=y
412CONFIG_LXT_PHY=y
413CONFIG_CICADA_PHY=y
414
415#
335# Ethernet (10 or 100Mbit) 416# Ethernet (10 or 100Mbit)
336# 417#
337CONFIG_NET_ETHERNET=y 418CONFIG_NET_ETHERNET=y
@@ -357,12 +438,16 @@ CONFIG_NET_ETHERNET=y
357# CONFIG_HAMACHI is not set 438# CONFIG_HAMACHI is not set
358# CONFIG_YELLOWFIN is not set 439# CONFIG_YELLOWFIN is not set
359# CONFIG_R8169 is not set 440# CONFIG_R8169 is not set
441# CONFIG_SIS190 is not set
442# CONFIG_SKGE is not set
360# CONFIG_SK98LIN is not set 443# CONFIG_SK98LIN is not set
361# CONFIG_TIGON3 is not set 444# CONFIG_TIGON3 is not set
445# CONFIG_BNX2 is not set
362 446
363# 447#
364# Ethernet (10000 Mbit) 448# Ethernet (10000 Mbit)
365# 449#
450# CONFIG_CHELSIO_T1 is not set
366# CONFIG_IXGB is not set 451# CONFIG_IXGB is not set
367# CONFIG_S2IO is not set 452# CONFIG_S2IO is not set
368 453
@@ -375,6 +460,8 @@ CONFIG_NET_ETHERNET=y
375# Wireless LAN (non-hamradio) 460# Wireless LAN (non-hamradio)
376# 461#
377# CONFIG_NET_RADIO is not set 462# CONFIG_NET_RADIO is not set
463# CONFIG_IPW_DEBUG is not set
464CONFIG_IPW2200=y
378 465
379# 466#
380# Wan interfaces 467# Wan interfaces
@@ -386,6 +473,8 @@ CONFIG_NET_ETHERNET=y
386# CONFIG_SLIP is not set 473# CONFIG_SLIP is not set
387# CONFIG_SHAPER is not set 474# CONFIG_SHAPER is not set
388# CONFIG_NETCONSOLE is not set 475# CONFIG_NETCONSOLE is not set
476# CONFIG_NETPOLL is not set
477# CONFIG_NET_POLL_CONTROLLER is not set
389 478
390# 479#
391# ISDN subsystem 480# ISDN subsystem
@@ -415,19 +504,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
415# CONFIG_INPUT_EVBUG is not set 504# CONFIG_INPUT_EVBUG is not set
416 505
417# 506#
418# Input I/O drivers
419#
420# CONFIG_GAMEPORT is not set
421CONFIG_SOUND_GAMEPORT=y
422CONFIG_SERIO=y
423# CONFIG_SERIO_I8042 is not set
424CONFIG_SERIO_SERPORT=y
425# CONFIG_SERIO_CT82C710 is not set
426# CONFIG_SERIO_PCIPS2 is not set
427# CONFIG_SERIO_LIBPS2 is not set
428CONFIG_SERIO_RAW=y
429
430#
431# Input Device Drivers 507# Input Device Drivers
432# 508#
433# CONFIG_INPUT_KEYBOARD is not set 509# CONFIG_INPUT_KEYBOARD is not set
@@ -437,6 +513,17 @@ CONFIG_SERIO_RAW=y
437# CONFIG_INPUT_MISC is not set 513# CONFIG_INPUT_MISC is not set
438 514
439# 515#
516# Hardware I/O ports
517#
518CONFIG_SERIO=y
519# CONFIG_SERIO_I8042 is not set
520CONFIG_SERIO_SERPORT=y
521# CONFIG_SERIO_PCIPS2 is not set
522# CONFIG_SERIO_LIBPS2 is not set
523CONFIG_SERIO_RAW=y
524# CONFIG_GAMEPORT is not set
525
526#
440# Character devices 527# Character devices
441# 528#
442CONFIG_VT=y 529CONFIG_VT=y
@@ -457,6 +544,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4
457# 544#
458CONFIG_SERIAL_CORE=y 545CONFIG_SERIAL_CORE=y
459CONFIG_SERIAL_CORE_CONSOLE=y 546CONFIG_SERIAL_CORE_CONSOLE=y
547# CONFIG_SERIAL_JSM is not set
460CONFIG_UNIX98_PTYS=y 548CONFIG_UNIX98_PTYS=y
461CONFIG_LEGACY_PTYS=y 549CONFIG_LEGACY_PTYS=y
462CONFIG_LEGACY_PTY_COUNT=256 550CONFIG_LEGACY_PTY_COUNT=256
@@ -483,6 +571,11 @@ CONFIG_COBALT_LCD=y
483# CONFIG_RAW_DRIVER is not set 571# CONFIG_RAW_DRIVER is not set
484 572
485# 573#
574# TPM devices
575#
576# CONFIG_TCG_TPM is not set
577
578#
486# I2C support 579# I2C support
487# 580#
488# CONFIG_I2C is not set 581# CONFIG_I2C is not set
@@ -493,10 +586,20 @@ CONFIG_COBALT_LCD=y
493# CONFIG_W1 is not set 586# CONFIG_W1 is not set
494 587
495# 588#
589# Hardware Monitoring support
590#
591# CONFIG_HWMON is not set
592# CONFIG_HWMON_VID is not set
593
594#
496# Misc devices 595# Misc devices
497# 596#
498 597
499# 598#
599# Multimedia Capabilities Port drivers
600#
601
602#
500# Multimedia devices 603# Multimedia devices
501# 604#
502# CONFIG_VIDEO_DEV is not set 605# CONFIG_VIDEO_DEV is not set
@@ -516,7 +619,6 @@ CONFIG_COBALT_LCD=y
516# 619#
517# CONFIG_VGA_CONSOLE is not set 620# CONFIG_VGA_CONSOLE is not set
518CONFIG_DUMMY_CONSOLE=y 621CONFIG_DUMMY_CONSOLE=y
519# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
520 622
521# 623#
522# Sound 624# Sound
@@ -526,13 +628,9 @@ CONFIG_DUMMY_CONSOLE=y
526# 628#
527# USB support 629# USB support
528# 630#
529# CONFIG_USB is not set
530CONFIG_USB_ARCH_HAS_HCD=y 631CONFIG_USB_ARCH_HAS_HCD=y
531CONFIG_USB_ARCH_HAS_OHCI=y 632CONFIG_USB_ARCH_HAS_OHCI=y
532 633# CONFIG_USB is not set
533#
534# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
535#
536 634
537# 635#
538# USB Gadget Support 636# USB Gadget Support
@@ -550,12 +648,17 @@ CONFIG_USB_ARCH_HAS_OHCI=y
550# CONFIG_INFINIBAND is not set 648# CONFIG_INFINIBAND is not set
551 649
552# 650#
651# SN Devices
652#
653
654#
553# File systems 655# File systems
554# 656#
555CONFIG_EXT2_FS=y 657CONFIG_EXT2_FS=y
556CONFIG_EXT2_FS_XATTR=y 658CONFIG_EXT2_FS_XATTR=y
557CONFIG_EXT2_FS_POSIX_ACL=y 659CONFIG_EXT2_FS_POSIX_ACL=y
558CONFIG_EXT2_FS_SECURITY=y 660CONFIG_EXT2_FS_SECURITY=y
661# CONFIG_EXT2_FS_XIP is not set
559# CONFIG_EXT3_FS is not set 662# CONFIG_EXT3_FS is not set
560# CONFIG_JBD is not set 663# CONFIG_JBD is not set
561CONFIG_FS_MBCACHE=y 664CONFIG_FS_MBCACHE=y
@@ -565,10 +668,12 @@ CONFIG_FS_POSIX_ACL=y
565# CONFIG_XFS_FS is not set 668# CONFIG_XFS_FS is not set
566# CONFIG_MINIX_FS is not set 669# CONFIG_MINIX_FS is not set
567# CONFIG_ROMFS_FS is not set 670# CONFIG_ROMFS_FS is not set
671CONFIG_INOTIFY=y
568# CONFIG_QUOTA is not set 672# CONFIG_QUOTA is not set
569CONFIG_DNOTIFY=y 673CONFIG_DNOTIFY=y
570# CONFIG_AUTOFS_FS is not set 674# CONFIG_AUTOFS_FS is not set
571# CONFIG_AUTOFS4_FS is not set 675# CONFIG_AUTOFS4_FS is not set
676CONFIG_FUSE_FS=y
572 677
573# 678#
574# CD-ROM/DVD Filesystems 679# CD-ROM/DVD Filesystems
@@ -589,12 +694,10 @@ CONFIG_DNOTIFY=y
589CONFIG_PROC_FS=y 694CONFIG_PROC_FS=y
590CONFIG_PROC_KCORE=y 695CONFIG_PROC_KCORE=y
591CONFIG_SYSFS=y 696CONFIG_SYSFS=y
592# CONFIG_DEVFS_FS is not set
593CONFIG_DEVPTS_FS_XATTR=y
594CONFIG_DEVPTS_FS_SECURITY=y
595# CONFIG_TMPFS is not set 697# CONFIG_TMPFS is not set
596# CONFIG_HUGETLB_PAGE is not set 698# CONFIG_HUGETLB_PAGE is not set
597CONFIG_RAMFS=y 699CONFIG_RAMFS=y
700CONFIG_RELAYFS_FS=y
598 701
599# 702#
600# Miscellaneous filesystems 703# Miscellaneous filesystems
@@ -622,7 +725,7 @@ CONFIG_NFS_FS=y
622# CONFIG_NFS_DIRECTIO is not set 725# CONFIG_NFS_DIRECTIO is not set
623# CONFIG_NFSD is not set 726# CONFIG_NFSD is not set
624CONFIG_LOCKD=y 727CONFIG_LOCKD=y
625# CONFIG_EXPORTFS is not set 728CONFIG_NFS_COMMON=y
626CONFIG_SUNRPC=y 729CONFIG_SUNRPC=y
627# CONFIG_RPCSEC_GSS_KRB5 is not set 730# CONFIG_RPCSEC_GSS_KRB5 is not set
628# CONFIG_RPCSEC_GSS_SPKM3 is not set 731# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -631,6 +734,7 @@ CONFIG_SUNRPC=y
631# CONFIG_NCP_FS is not set 734# CONFIG_NCP_FS is not set
632# CONFIG_CODA_FS is not set 735# CONFIG_CODA_FS is not set
633# CONFIG_AFS_FS is not set 736# CONFIG_AFS_FS is not set
737# CONFIG_9P_FS is not set
634 738
635# 739#
636# Partition Types 740# Partition Types
@@ -651,7 +755,9 @@ CONFIG_MSDOS_PARTITION=y
651# 755#
652# Kernel hacking 756# Kernel hacking
653# 757#
758# CONFIG_PRINTK_TIME is not set
654# CONFIG_DEBUG_KERNEL is not set 759# CONFIG_DEBUG_KERNEL is not set
760CONFIG_LOG_BUF_SHIFT=14
655CONFIG_CROSSCOMPILE=y 761CONFIG_CROSSCOMPILE=y
656CONFIG_CMDLINE="" 762CONFIG_CMDLINE=""
657 763
@@ -665,7 +771,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
665# 771#
666# Cryptographic options 772# Cryptographic options
667# 773#
668# CONFIG_CRYPTO is not set 774CONFIG_CRYPTO=y
775CONFIG_CRYPTO_HMAC=y
776CONFIG_CRYPTO_NULL=y
777CONFIG_CRYPTO_MD4=y
778CONFIG_CRYPTO_MD5=y
779CONFIG_CRYPTO_SHA1=y
780CONFIG_CRYPTO_SHA256=y
781CONFIG_CRYPTO_SHA512=y
782CONFIG_CRYPTO_WP512=y
783CONFIG_CRYPTO_TGR192=y
784CONFIG_CRYPTO_DES=y
785CONFIG_CRYPTO_BLOWFISH=y
786CONFIG_CRYPTO_TWOFISH=y
787CONFIG_CRYPTO_SERPENT=y
788CONFIG_CRYPTO_AES=y
789CONFIG_CRYPTO_CAST5=y
790CONFIG_CRYPTO_CAST6=y
791CONFIG_CRYPTO_TEA=y
792CONFIG_CRYPTO_ARC4=y
793CONFIG_CRYPTO_KHAZAD=y
794CONFIG_CRYPTO_ANUBIS=y
795CONFIG_CRYPTO_DEFLATE=y
796CONFIG_CRYPTO_MICHAEL_MIC=y
797CONFIG_CRYPTO_CRC32C=y
798# CONFIG_CRYPTO_TEST is not set
669 799
670# 800#
671# Hardware crypto devices 801# Hardware crypto devices
@@ -675,7 +805,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
675# Library routines 805# Library routines
676# 806#
677# CONFIG_CRC_CCITT is not set 807# CONFIG_CRC_CCITT is not set
678# CONFIG_CRC32 is not set 808CONFIG_CRC16=y
679# CONFIG_LIBCRC32C is not set 809CONFIG_CRC32=y
680CONFIG_GENERIC_HARDIRQS=y 810CONFIG_LIBCRC32C=y
681CONFIG_GENERIC_IRQ_PROBE=y 811CONFIG_ZLIB_INFLATE=y
812CONFIG_ZLIB_DEFLATE=y
diff --git a/arch/mips/configs/db1000_defconfig b/arch/mips/configs/db1000_defconfig
index 962fc14b58c2..6501144ec612 100644
--- a/arch/mips/configs/db1000_defconfig
+++ b/arch/mips/configs/db1000_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:01 2005 4# Thu Oct 20 22:25:26 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14
29CONFIG_HOTPLUG=y 27CONFIG_HOTPLUG=y
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,63 +59,79 @@ CONFIG_KMOD=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60# CONFIG_MACH_VR41XX is not set 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_TOSHIBA_JMR3927 is not set 64# CONFIG_MIPS_PB1000 is not set
65# CONFIG_MIPS_PB1100 is not set
66# CONFIG_MIPS_PB1500 is not set
67# CONFIG_MIPS_PB1550 is not set
68# CONFIG_MIPS_PB1200 is not set
69CONFIG_MIPS_DB1000=y
70# CONFIG_MIPS_DB1100 is not set
71# CONFIG_MIPS_DB1500 is not set
72# CONFIG_MIPS_DB1550 is not set
73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
62# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
63# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
64# CONFIG_MIPS_EV64120 is not set 77# CONFIG_MIPS_EV64120 is not set
65# CONFIG_MIPS_EV96100 is not set 78# CONFIG_MIPS_EV96100 is not set
66# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
67# CONFIG_LASAT is not set
68# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
69# CONFIG_MIPS_ATLAS is not set 83# CONFIG_MIPS_ATLAS is not set
70# CONFIG_MIPS_MALTA is not set 84# CONFIG_MIPS_MALTA is not set
71# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
72# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
73# CONFIG_MOMENCO_OCELOT_G is not set
74# CONFIG_MOMENCO_OCELOT_C is not set
75# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
76# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
77# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
78# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
79# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
80# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
81# CONFIG_NEC_OSPREY is not set 98# CONFIG_MACH_VR41XX is not set
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
82# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
83CONFIG_SOC_AU1X00=y 102# CONFIG_SGI_IP27 is not set
84CONFIG_SOC_AU1000=y 103# CONFIG_SGI_IP32 is not set
85# CONFIG_SOC_AU1100 is not set 104# CONFIG_SIBYTE_BIGSUR is not set
86# CONFIG_SOC_AU1500 is not set 105# CONFIG_SIBYTE_SWARM is not set
87# CONFIG_SOC_AU1550 is not set 106# CONFIG_SIBYTE_SENTOSA is not set
88# CONFIG_MIPS_PB1000 is not set 107# CONFIG_SIBYTE_RHONE is not set
89# CONFIG_MIPS_PB1100 is not set 108# CONFIG_SIBYTE_CARMEL is not set
90# CONFIG_MIPS_PB1500 is not set 109# CONFIG_SIBYTE_PTSWARM is not set
91# CONFIG_MIPS_PB1550 is not set 110# CONFIG_SIBYTE_LITTLESUR is not set
92CONFIG_MIPS_DB1000=y 111# CONFIG_SIBYTE_CRHINE is not set
93# CONFIG_MIPS_DB1100 is not set 112# CONFIG_SIBYTE_CRHONE is not set
94# CONFIG_MIPS_DB1500 is not set
95# CONFIG_MIPS_DB1550 is not set
96# CONFIG_MIPS_BOSPORUS is not set
97# CONFIG_MIPS_MIRAGE is not set
98# CONFIG_MIPS_XXS1500 is not set
99# CONFIG_MIPS_MTX1 is not set
100# CONFIG_SIBYTE_SB1xxx_SOC is not set
101# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
102# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
103CONFIG_RWSEM_GENERIC_SPINLOCK=y 117CONFIG_RWSEM_GENERIC_SPINLOCK=y
104CONFIG_GENERIC_CALIBRATE_DELAY=y 118CONFIG_GENERIC_CALIBRATE_DELAY=y
105CONFIG_HAVE_DEC_LOCK=y
106CONFIG_DMA_NONCOHERENT=y 119CONFIG_DMA_NONCOHERENT=y
107CONFIG_DMA_NEED_PCI_MAP_STATE=y 120CONFIG_DMA_NEED_PCI_MAP_STATE=y
121# CONFIG_CPU_BIG_ENDIAN is not set
108CONFIG_CPU_LITTLE_ENDIAN=y 122CONFIG_CPU_LITTLE_ENDIAN=y
123CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
124CONFIG_SOC_AU1000=y
125CONFIG_SOC_AU1X00=y
109CONFIG_MIPS_L1_CACHE_SHIFT=5 126CONFIG_MIPS_L1_CACHE_SHIFT=5
110 127
111# 128#
112# CPU selection 129# CPU selection
113# 130#
114CONFIG_CPU_MIPS32=y 131CONFIG_CPU_MIPS32_R1=y
115# CONFIG_CPU_MIPS64 is not set 132# CONFIG_CPU_MIPS32_R2 is not set
133# CONFIG_CPU_MIPS64_R1 is not set
134# CONFIG_CPU_MIPS64_R2 is not set
116# CONFIG_CPU_R3000 is not set 135# CONFIG_CPU_R3000 is not set
117# CONFIG_CPU_TX39XX is not set 136# CONFIG_CPU_TX39XX is not set
118# CONFIG_CPU_VR41XX is not set 137# CONFIG_CPU_VR41XX is not set
@@ -128,15 +147,39 @@ CONFIG_CPU_MIPS32=y
128# CONFIG_CPU_RM7000 is not set 147# CONFIG_CPU_RM7000 is not set
129# CONFIG_CPU_RM9000 is not set 148# CONFIG_CPU_RM9000 is not set
130# CONFIG_CPU_SB1 is not set 149# CONFIG_CPU_SB1 is not set
150CONFIG_SYS_HAS_CPU_MIPS32_R1=y
151CONFIG_CPU_MIPS32=y
152CONFIG_CPU_MIPSR1=y
153CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
154CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
155
156#
157# Kernel type
158#
159CONFIG_32BIT=y
160# CONFIG_64BIT is not set
131CONFIG_PAGE_SIZE_4KB=y 161CONFIG_PAGE_SIZE_4KB=y
132# CONFIG_PAGE_SIZE_8KB is not set 162# CONFIG_PAGE_SIZE_8KB is not set
133# CONFIG_PAGE_SIZE_16KB is not set 163# CONFIG_PAGE_SIZE_16KB is not set
134# CONFIG_PAGE_SIZE_64KB is not set 164# CONFIG_PAGE_SIZE_64KB is not set
135CONFIG_CPU_HAS_PREFETCH=y 165CONFIG_CPU_HAS_PREFETCH=y
166# CONFIG_MIPS_MT is not set
136CONFIG_64BIT_PHYS_ADDR=y 167CONFIG_64BIT_PHYS_ADDR=y
137# CONFIG_CPU_ADVANCED is not set 168# CONFIG_CPU_ADVANCED is not set
138CONFIG_CPU_HAS_LLSC=y 169CONFIG_CPU_HAS_LLSC=y
139CONFIG_CPU_HAS_SYNC=y 170CONFIG_CPU_HAS_SYNC=y
171CONFIG_GENERIC_HARDIRQS=y
172CONFIG_GENERIC_IRQ_PROBE=y
173CONFIG_ARCH_FLATMEM_ENABLE=y
174CONFIG_SELECT_MEMORY_MODEL=y
175CONFIG_FLATMEM_MANUAL=y
176# CONFIG_DISCONTIGMEM_MANUAL is not set
177# CONFIG_SPARSEMEM_MANUAL is not set
178CONFIG_FLATMEM=y
179CONFIG_FLAT_NODE_MEM_MAP=y
180# CONFIG_SPARSEMEM_STATIC is not set
181CONFIG_PREEMPT_NONE=y
182# CONFIG_PREEMPT_VOLUNTARY is not set
140# CONFIG_PREEMPT is not set 183# CONFIG_PREEMPT is not set
141 184
142# 185#
@@ -152,6 +195,8 @@ CONFIG_MMU=y
152CONFIG_PCCARD=m 195CONFIG_PCCARD=m
153# CONFIG_PCMCIA_DEBUG is not set 196# CONFIG_PCMCIA_DEBUG is not set
154CONFIG_PCMCIA=m 197CONFIG_PCMCIA=m
198CONFIG_PCMCIA_LOAD_CIS=y
199CONFIG_PCMCIA_IOCTL=y
155 200
156# 201#
157# PC-card bridges 202# PC-card bridges
@@ -169,6 +214,100 @@ CONFIG_PCMCIA=m
169CONFIG_BINFMT_ELF=y 214CONFIG_BINFMT_ELF=y
170# CONFIG_BINFMT_MISC is not set 215# CONFIG_BINFMT_MISC is not set
171CONFIG_TRAD_SIGNALS=y 216CONFIG_TRAD_SIGNALS=y
217# CONFIG_PM is not set
218
219#
220# Networking
221#
222CONFIG_NET=y
223
224#
225# Networking options
226#
227CONFIG_PACKET=y
228# CONFIG_PACKET_MMAP is not set
229CONFIG_UNIX=y
230CONFIG_XFRM=y
231CONFIG_XFRM_USER=m
232CONFIG_NET_KEY=y
233CONFIG_INET=y
234CONFIG_IP_MULTICAST=y
235# CONFIG_IP_ADVANCED_ROUTER is not set
236CONFIG_IP_FIB_HASH=y
237CONFIG_IP_PNP=y
238# CONFIG_IP_PNP_DHCP is not set
239CONFIG_IP_PNP_BOOTP=y
240# CONFIG_IP_PNP_RARP is not set
241# CONFIG_NET_IPIP is not set
242# CONFIG_NET_IPGRE is not set
243# CONFIG_IP_MROUTE is not set
244# CONFIG_ARPD is not set
245# CONFIG_SYN_COOKIES is not set
246# CONFIG_INET_AH is not set
247# CONFIG_INET_ESP is not set
248# CONFIG_INET_IPCOMP is not set
249CONFIG_INET_TUNNEL=m
250CONFIG_INET_DIAG=y
251CONFIG_INET_TCP_DIAG=y
252# CONFIG_TCP_CONG_ADVANCED is not set
253CONFIG_TCP_CONG_BIC=y
254
255#
256# IP: Virtual Server Configuration
257#
258# CONFIG_IP_VS is not set
259# CONFIG_IPV6 is not set
260CONFIG_NETFILTER=y
261# CONFIG_NETFILTER_DEBUG is not set
262CONFIG_NETFILTER_NETLINK=m
263CONFIG_NETFILTER_NETLINK_QUEUE=m
264CONFIG_NETFILTER_NETLINK_LOG=m
265
266#
267# IP: Netfilter Configuration
268#
269# CONFIG_IP_NF_CONNTRACK is not set
270CONFIG_IP_NF_PPTP=m
271# CONFIG_IP_NF_QUEUE is not set
272# CONFIG_IP_NF_IPTABLES is not set
273# CONFIG_IP_NF_ARPTABLES is not set
274
275#
276# DCCP Configuration (EXPERIMENTAL)
277#
278# CONFIG_IP_DCCP is not set
279
280#
281# SCTP Configuration (EXPERIMENTAL)
282#
283# CONFIG_IP_SCTP is not set
284# CONFIG_ATM is not set
285# CONFIG_BRIDGE is not set
286# CONFIG_VLAN_8021Q is not set
287# CONFIG_DECNET is not set
288# CONFIG_LLC2 is not set
289# CONFIG_IPX is not set
290# CONFIG_ATALK is not set
291# CONFIG_X25 is not set
292# CONFIG_LAPB is not set
293# CONFIG_NET_DIVERT is not set
294# CONFIG_ECONET is not set
295# CONFIG_WAN_ROUTER is not set
296# CONFIG_NET_SCHED is not set
297# CONFIG_NET_CLS_ROUTE is not set
298
299#
300# Network testing
301#
302# CONFIG_NET_PKTGEN is not set
303# CONFIG_HAMRADIO is not set
304# CONFIG_IRDA is not set
305# CONFIG_BT is not set
306CONFIG_IEEE80211=m
307# CONFIG_IEEE80211_DEBUG is not set
308CONFIG_IEEE80211_CRYPT_WEP=m
309CONFIG_IEEE80211_CRYPT_CCMP=m
310CONFIG_IEEE80211_CRYPT_TKIP=m
172 311
173# 312#
174# Device Drivers 313# Device Drivers
@@ -179,12 +318,86 @@ CONFIG_TRAD_SIGNALS=y
179# 318#
180CONFIG_STANDALONE=y 319CONFIG_STANDALONE=y
181CONFIG_PREVENT_FIRMWARE_BUILD=y 320CONFIG_PREVENT_FIRMWARE_BUILD=y
182# CONFIG_FW_LOADER is not set 321CONFIG_FW_LOADER=m
322
323#
324# Connector - unified userspace <-> kernelspace linker
325#
326CONFIG_CONNECTOR=m
183 327
184# 328#
185# Memory Technology Devices (MTD) 329# Memory Technology Devices (MTD)
186# 330#
187# CONFIG_MTD is not set 331CONFIG_MTD=y
332# CONFIG_MTD_DEBUG is not set
333# CONFIG_MTD_CONCAT is not set
334CONFIG_MTD_PARTITIONS=y
335# CONFIG_MTD_REDBOOT_PARTS is not set
336# CONFIG_MTD_CMDLINE_PARTS is not set
337
338#
339# User Modules And Translation Layers
340#
341CONFIG_MTD_CHAR=y
342CONFIG_MTD_BLOCK=y
343# CONFIG_FTL is not set
344# CONFIG_NFTL is not set
345# CONFIG_INFTL is not set
346
347#
348# RAM/ROM/Flash chip drivers
349#
350CONFIG_MTD_CFI=y
351# CONFIG_MTD_JEDECPROBE is not set
352CONFIG_MTD_GEN_PROBE=y
353# CONFIG_MTD_CFI_ADV_OPTIONS is not set
354CONFIG_MTD_MAP_BANK_WIDTH_1=y
355CONFIG_MTD_MAP_BANK_WIDTH_2=y
356CONFIG_MTD_MAP_BANK_WIDTH_4=y
357# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
358# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
359# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
360CONFIG_MTD_CFI_I1=y
361CONFIG_MTD_CFI_I2=y
362# CONFIG_MTD_CFI_I4 is not set
363# CONFIG_MTD_CFI_I8 is not set
364# CONFIG_MTD_CFI_INTELEXT is not set
365CONFIG_MTD_CFI_AMDSTD=y
366CONFIG_MTD_CFI_AMDSTD_RETRY=0
367# CONFIG_MTD_CFI_STAA is not set
368CONFIG_MTD_CFI_UTIL=y
369# CONFIG_MTD_RAM is not set
370# CONFIG_MTD_ROM is not set
371# CONFIG_MTD_ABSENT is not set
372
373#
374# Mapping drivers for chip access
375#
376# CONFIG_MTD_COMPLEX_MAPPINGS is not set
377# CONFIG_MTD_PHYSMAP is not set
378CONFIG_MTD_ALCHEMY=y
379# CONFIG_MTD_PLATRAM is not set
380
381#
382# Self-contained MTD device drivers
383#
384# CONFIG_MTD_SLRAM is not set
385# CONFIG_MTD_PHRAM is not set
386# CONFIG_MTD_MTDRAM is not set
387# CONFIG_MTD_BLKMTD is not set
388# CONFIG_MTD_BLOCK2MTD is not set
389
390#
391# Disk-On-Chip Device Drivers
392#
393# CONFIG_MTD_DOC2000 is not set
394# CONFIG_MTD_DOC2001 is not set
395# CONFIG_MTD_DOC2001PLUS is not set
396
397#
398# NAND Flash Device Drivers
399#
400# CONFIG_MTD_NAND is not set
188 401
189# 402#
190# Parallel port support 403# Parallel port support
@@ -198,14 +411,12 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
198# 411#
199# Block devices 412# Block devices
200# 413#
201# CONFIG_BLK_DEV_FD is not set
202# CONFIG_BLK_DEV_COW_COMMON is not set 414# CONFIG_BLK_DEV_COW_COMMON is not set
203CONFIG_BLK_DEV_LOOP=y 415CONFIG_BLK_DEV_LOOP=y
204# CONFIG_BLK_DEV_CRYPTOLOOP is not set 416# CONFIG_BLK_DEV_CRYPTOLOOP is not set
205# CONFIG_BLK_DEV_NBD is not set 417# CONFIG_BLK_DEV_NBD is not set
206# CONFIG_BLK_DEV_RAM is not set 418# CONFIG_BLK_DEV_RAM is not set
207CONFIG_BLK_DEV_RAM_COUNT=16 419CONFIG_BLK_DEV_RAM_COUNT=16
208CONFIG_INITRAMFS_SOURCE=""
209# CONFIG_LBD is not set 420# CONFIG_LBD is not set
210CONFIG_CDROM_PKTCDVD=m 421CONFIG_CDROM_PKTCDVD=m
211CONFIG_CDROM_PKTCDVD_BUFFERS=8 422CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -228,6 +439,7 @@ CONFIG_ATA_OVER_ETH=m
228# 439#
229# SCSI device support 440# SCSI device support
230# 441#
442CONFIG_RAID_ATTRS=m
231# CONFIG_SCSI is not set 443# CONFIG_SCSI is not set
232 444
233# 445#
@@ -238,6 +450,7 @@ CONFIG_ATA_OVER_ETH=m
238# 450#
239# Fusion MPT device support 451# Fusion MPT device support
240# 452#
453# CONFIG_FUSION is not set
241 454
242# 455#
243# IEEE 1394 (FireWire) support 456# IEEE 1394 (FireWire) support
@@ -248,94 +461,28 @@ CONFIG_ATA_OVER_ETH=m
248# 461#
249 462
250# 463#
251# Networking support 464# Network device support
252#
253CONFIG_NET=y
254
255#
256# Networking options
257#
258CONFIG_PACKET=y
259# CONFIG_PACKET_MMAP is not set
260CONFIG_NETLINK_DEV=y
261CONFIG_UNIX=y
262CONFIG_NET_KEY=y
263CONFIG_INET=y
264CONFIG_IP_MULTICAST=y
265# CONFIG_IP_ADVANCED_ROUTER is not set
266CONFIG_IP_PNP=y
267# CONFIG_IP_PNP_DHCP is not set
268CONFIG_IP_PNP_BOOTP=y
269# CONFIG_IP_PNP_RARP is not set
270# CONFIG_NET_IPIP is not set
271# CONFIG_NET_IPGRE is not set
272# CONFIG_IP_MROUTE is not set
273# CONFIG_ARPD is not set
274# CONFIG_SYN_COOKIES is not set
275# CONFIG_INET_AH is not set
276# CONFIG_INET_ESP is not set
277# CONFIG_INET_IPCOMP is not set
278CONFIG_INET_TUNNEL=m
279CONFIG_IP_TCPDIAG=m
280# CONFIG_IP_TCPDIAG_IPV6 is not set
281
282#
283# IP: Virtual Server Configuration
284#
285# CONFIG_IP_VS is not set
286# CONFIG_IPV6 is not set
287CONFIG_NETFILTER=y
288# CONFIG_NETFILTER_DEBUG is not set
289
290#
291# IP: Netfilter Configuration
292# 465#
293# CONFIG_IP_NF_CONNTRACK is not set 466CONFIG_NETDEVICES=y
294CONFIG_IP_NF_CONNTRACK_MARK=y 467# CONFIG_DUMMY is not set
295# CONFIG_IP_NF_QUEUE is not set 468# CONFIG_BONDING is not set
296# CONFIG_IP_NF_IPTABLES is not set 469# CONFIG_EQUALIZER is not set
297# CONFIG_IP_NF_ARPTABLES is not set 470# CONFIG_TUN is not set
298CONFIG_XFRM=y
299CONFIG_XFRM_USER=m
300
301#
302# SCTP Configuration (EXPERIMENTAL)
303#
304# CONFIG_IP_SCTP is not set
305# CONFIG_ATM is not set
306# CONFIG_BRIDGE is not set
307# CONFIG_VLAN_8021Q is not set
308# CONFIG_DECNET is not set
309# CONFIG_LLC2 is not set
310# CONFIG_IPX is not set
311# CONFIG_ATALK is not set
312# CONFIG_X25 is not set
313# CONFIG_LAPB is not set
314# CONFIG_NET_DIVERT is not set
315# CONFIG_ECONET is not set
316# CONFIG_WAN_ROUTER is not set
317 471
318# 472#
319# QoS and/or fair queueing 473# PHY device support
320# 474#
321# CONFIG_NET_SCHED is not set 475CONFIG_PHYLIB=m
322# CONFIG_NET_CLS_ROUTE is not set 476CONFIG_PHYCONTROL=y
323 477
324# 478#
325# Network testing 479# MII PHY device drivers
326# 480#
327# CONFIG_NET_PKTGEN is not set 481CONFIG_MARVELL_PHY=m
328# CONFIG_NETPOLL is not set 482CONFIG_DAVICOM_PHY=m
329# CONFIG_NET_POLL_CONTROLLER is not set 483CONFIG_QSEMI_PHY=m
330# CONFIG_HAMRADIO is not set 484CONFIG_LXT_PHY=m
331# CONFIG_IRDA is not set 485CONFIG_CICADA_PHY=m
332# CONFIG_BT is not set
333CONFIG_NETDEVICES=y
334# CONFIG_DUMMY is not set
335# CONFIG_BONDING is not set
336# CONFIG_EQUALIZER is not set
337# CONFIG_TUN is not set
338# CONFIG_ETHERTAP is not set
339 486
340# 487#
341# Ethernet (10 or 100Mbit) 488# Ethernet (10 or 100Mbit)
@@ -389,6 +536,8 @@ CONFIG_PPPOE=m
389# CONFIG_SLIP is not set 536# CONFIG_SLIP is not set
390# CONFIG_SHAPER is not set 537# CONFIG_SHAPER is not set
391# CONFIG_NETCONSOLE is not set 538# CONFIG_NETCONSOLE is not set
539# CONFIG_NETPOLL is not set
540# CONFIG_NET_POLL_CONTROLLER is not set
392 541
393# 542#
394# ISDN subsystem 543# ISDN subsystem
@@ -418,18 +567,6 @@ CONFIG_INPUT_EVDEV=y
418# CONFIG_INPUT_EVBUG is not set 567# CONFIG_INPUT_EVBUG is not set
419 568
420# 569#
421# Input I/O drivers
422#
423# CONFIG_GAMEPORT is not set
424CONFIG_SOUND_GAMEPORT=y
425CONFIG_SERIO=y
426# CONFIG_SERIO_I8042 is not set
427CONFIG_SERIO_SERPORT=y
428# CONFIG_SERIO_CT82C710 is not set
429# CONFIG_SERIO_LIBPS2 is not set
430CONFIG_SERIO_RAW=m
431
432#
433# Input Device Drivers 570# Input Device Drivers
434# 571#
435# CONFIG_INPUT_KEYBOARD is not set 572# CONFIG_INPUT_KEYBOARD is not set
@@ -439,6 +576,16 @@ CONFIG_SERIO_RAW=m
439# CONFIG_INPUT_MISC is not set 576# CONFIG_INPUT_MISC is not set
440 577
441# 578#
579# Hardware I/O ports
580#
581CONFIG_SERIO=y
582# CONFIG_SERIO_I8042 is not set
583CONFIG_SERIO_SERPORT=y
584# CONFIG_SERIO_LIBPS2 is not set
585CONFIG_SERIO_RAW=m
586# CONFIG_GAMEPORT is not set
587
588#
442# Character devices 589# Character devices
443# 590#
444CONFIG_VT=y 591CONFIG_VT=y
@@ -473,14 +620,14 @@ CONFIG_LEGACY_PTY_COUNT=256
473# Watchdog Cards 620# Watchdog Cards
474# 621#
475# CONFIG_WATCHDOG is not set 622# CONFIG_WATCHDOG is not set
476CONFIG_RTC=y 623# CONFIG_RTC is not set
624# CONFIG_GEN_RTC is not set
477# CONFIG_DTLK is not set 625# CONFIG_DTLK is not set
478# CONFIG_R3964 is not set 626# CONFIG_R3964 is not set
479 627
480# 628#
481# Ftape, the floppy tape device driver 629# Ftape, the floppy tape device driver
482# 630#
483# CONFIG_DRM is not set
484 631
485# 632#
486# PCMCIA character devices 633# PCMCIA character devices
@@ -489,6 +636,10 @@ CONFIG_SYNCLINK_CS=m
489# CONFIG_RAW_DRIVER is not set 636# CONFIG_RAW_DRIVER is not set
490 637
491# 638#
639# TPM devices
640#
641
642#
492# I2C support 643# I2C support
493# 644#
494# CONFIG_I2C is not set 645# CONFIG_I2C is not set
@@ -499,10 +650,20 @@ CONFIG_SYNCLINK_CS=m
499# CONFIG_W1 is not set 650# CONFIG_W1 is not set
500 651
501# 652#
653# Hardware Monitoring support
654#
655# CONFIG_HWMON is not set
656# CONFIG_HWMON_VID is not set
657
658#
502# Misc devices 659# Misc devices
503# 660#
504 661
505# 662#
663# Multimedia Capabilities Port drivers
664#
665
666#
506# Multimedia devices 667# Multimedia devices
507# 668#
508# CONFIG_VIDEO_DEV is not set 669# CONFIG_VIDEO_DEV is not set
@@ -522,7 +683,6 @@ CONFIG_SYNCLINK_CS=m
522# 683#
523# CONFIG_VGA_CONSOLE is not set 684# CONFIG_VGA_CONSOLE is not set
524CONFIG_DUMMY_CONSOLE=y 685CONFIG_DUMMY_CONSOLE=y
525# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
526 686
527# 687#
528# Sound 688# Sound
@@ -532,12 +692,9 @@ CONFIG_DUMMY_CONSOLE=y
532# 692#
533# USB support 693# USB support
534# 694#
535# CONFIG_USB_ARCH_HAS_HCD is not set 695CONFIG_USB_ARCH_HAS_HCD=y
536# CONFIG_USB_ARCH_HAS_OHCI is not set 696CONFIG_USB_ARCH_HAS_OHCI=y
537 697# CONFIG_USB is not set
538#
539# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
540#
541 698
542# 699#
543# USB Gadget Support 700# USB Gadget Support
@@ -552,7 +709,10 @@ CONFIG_DUMMY_CONSOLE=y
552# 709#
553# InfiniBand support 710# InfiniBand support
554# 711#
555# CONFIG_INFINIBAND is not set 712
713#
714# SN Devices
715#
556 716
557# 717#
558# File systems 718# File systems
@@ -561,6 +721,7 @@ CONFIG_EXT2_FS=y
561CONFIG_EXT2_FS_XATTR=y 721CONFIG_EXT2_FS_XATTR=y
562CONFIG_EXT2_FS_POSIX_ACL=y 722CONFIG_EXT2_FS_POSIX_ACL=y
563# CONFIG_EXT2_FS_SECURITY is not set 723# CONFIG_EXT2_FS_SECURITY is not set
724# CONFIG_EXT2_FS_XIP is not set
564CONFIG_EXT3_FS=y 725CONFIG_EXT3_FS=y
565CONFIG_EXT3_FS_XATTR=y 726CONFIG_EXT3_FS_XATTR=y
566CONFIG_EXT3_FS_POSIX_ACL=y 727CONFIG_EXT3_FS_POSIX_ACL=y
@@ -579,10 +740,12 @@ CONFIG_FS_POSIX_ACL=y
579# CONFIG_XFS_FS is not set 740# CONFIG_XFS_FS is not set
580# CONFIG_MINIX_FS is not set 741# CONFIG_MINIX_FS is not set
581# CONFIG_ROMFS_FS is not set 742# CONFIG_ROMFS_FS is not set
743CONFIG_INOTIFY=y
582# CONFIG_QUOTA is not set 744# CONFIG_QUOTA is not set
583CONFIG_DNOTIFY=y 745CONFIG_DNOTIFY=y
584CONFIG_AUTOFS_FS=m 746CONFIG_AUTOFS_FS=m
585CONFIG_AUTOFS4_FS=m 747CONFIG_AUTOFS4_FS=m
748CONFIG_FUSE_FS=m
586 749
587# 750#
588# CD-ROM/DVD Filesystems 751# CD-ROM/DVD Filesystems
@@ -603,13 +766,10 @@ CONFIG_AUTOFS4_FS=m
603CONFIG_PROC_FS=y 766CONFIG_PROC_FS=y
604CONFIG_PROC_KCORE=y 767CONFIG_PROC_KCORE=y
605CONFIG_SYSFS=y 768CONFIG_SYSFS=y
606# CONFIG_DEVFS_FS is not set
607CONFIG_DEVPTS_FS_XATTR=y
608CONFIG_DEVPTS_FS_SECURITY=y
609CONFIG_TMPFS=y 769CONFIG_TMPFS=y
610# CONFIG_TMPFS_XATTR is not set
611# CONFIG_HUGETLB_PAGE is not set 770# CONFIG_HUGETLB_PAGE is not set
612CONFIG_RAMFS=y 771CONFIG_RAMFS=y
772CONFIG_RELAYFS_FS=m
613 773
614# 774#
615# Miscellaneous filesystems 775# Miscellaneous filesystems
@@ -621,6 +781,8 @@ CONFIG_RAMFS=y
621# CONFIG_BEFS_FS is not set 781# CONFIG_BEFS_FS is not set
622# CONFIG_BFS_FS is not set 782# CONFIG_BFS_FS is not set
623# CONFIG_EFS_FS is not set 783# CONFIG_EFS_FS is not set
784# CONFIG_JFFS_FS is not set
785# CONFIG_JFFS2_FS is not set
624CONFIG_CRAMFS=m 786CONFIG_CRAMFS=m
625# CONFIG_VXFS_FS is not set 787# CONFIG_VXFS_FS is not set
626# CONFIG_HPFS_FS is not set 788# CONFIG_HPFS_FS is not set
@@ -641,6 +803,7 @@ CONFIG_NFSD=m
641CONFIG_ROOT_NFS=y 803CONFIG_ROOT_NFS=y
642CONFIG_LOCKD=y 804CONFIG_LOCKD=y
643CONFIG_EXPORTFS=m 805CONFIG_EXPORTFS=m
806CONFIG_NFS_COMMON=y
644CONFIG_SUNRPC=y 807CONFIG_SUNRPC=y
645# CONFIG_RPCSEC_GSS_KRB5 is not set 808# CONFIG_RPCSEC_GSS_KRB5 is not set
646# CONFIG_RPCSEC_GSS_SPKM3 is not set 809# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -650,6 +813,7 @@ CONFIG_SMB_FS=m
650# CONFIG_NCP_FS is not set 813# CONFIG_NCP_FS is not set
651# CONFIG_CODA_FS is not set 814# CONFIG_CODA_FS is not set
652# CONFIG_AFS_FS is not set 815# CONFIG_AFS_FS is not set
816# CONFIG_9P_FS is not set
653 817
654# 818#
655# Partition Types 819# Partition Types
@@ -709,7 +873,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
709# 873#
710# Kernel hacking 874# Kernel hacking
711# 875#
876# CONFIG_PRINTK_TIME is not set
712# CONFIG_DEBUG_KERNEL is not set 877# CONFIG_DEBUG_KERNEL is not set
878CONFIG_LOG_BUF_SHIFT=14
713CONFIG_CROSSCOMPILE=y 879CONFIG_CROSSCOMPILE=y
714CONFIG_CMDLINE="" 880CONFIG_CMDLINE=""
715 881
@@ -725,26 +891,27 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
725# 891#
726CONFIG_CRYPTO=y 892CONFIG_CRYPTO=y
727CONFIG_CRYPTO_HMAC=y 893CONFIG_CRYPTO_HMAC=y
728CONFIG_CRYPTO_NULL=y 894CONFIG_CRYPTO_NULL=m
729# CONFIG_CRYPTO_MD4 is not set 895CONFIG_CRYPTO_MD4=m
730# CONFIG_CRYPTO_MD5 is not set 896CONFIG_CRYPTO_MD5=m
731# CONFIG_CRYPTO_SHA1 is not set 897CONFIG_CRYPTO_SHA1=m
732# CONFIG_CRYPTO_SHA256 is not set 898CONFIG_CRYPTO_SHA256=m
733CONFIG_CRYPTO_SHA512=y 899CONFIG_CRYPTO_SHA512=m
734CONFIG_CRYPTO_WP512=m 900CONFIG_CRYPTO_WP512=m
735# CONFIG_CRYPTO_DES is not set 901CONFIG_CRYPTO_TGR192=m
736# CONFIG_CRYPTO_BLOWFISH is not set 902CONFIG_CRYPTO_DES=m
737CONFIG_CRYPTO_TWOFISH=y 903CONFIG_CRYPTO_BLOWFISH=m
738# CONFIG_CRYPTO_SERPENT is not set 904CONFIG_CRYPTO_TWOFISH=m
905CONFIG_CRYPTO_SERPENT=m
739CONFIG_CRYPTO_AES=m 906CONFIG_CRYPTO_AES=m
740# CONFIG_CRYPTO_CAST5 is not set 907CONFIG_CRYPTO_CAST5=m
741# CONFIG_CRYPTO_CAST6 is not set 908CONFIG_CRYPTO_CAST6=m
742CONFIG_CRYPTO_TEA=m 909CONFIG_CRYPTO_TEA=m
743# CONFIG_CRYPTO_ARC4 is not set 910CONFIG_CRYPTO_ARC4=m
744CONFIG_CRYPTO_KHAZAD=m 911CONFIG_CRYPTO_KHAZAD=m
745CONFIG_CRYPTO_ANUBIS=m 912CONFIG_CRYPTO_ANUBIS=m
746CONFIG_CRYPTO_DEFLATE=y 913CONFIG_CRYPTO_DEFLATE=m
747CONFIG_CRYPTO_MICHAEL_MIC=y 914CONFIG_CRYPTO_MICHAEL_MIC=m
748CONFIG_CRYPTO_CRC32C=m 915CONFIG_CRYPTO_CRC32C=m
749# CONFIG_CRYPTO_TEST is not set 916# CONFIG_CRYPTO_TEST is not set
750 917
@@ -756,9 +923,8 @@ CONFIG_CRYPTO_CRC32C=m
756# Library routines 923# Library routines
757# 924#
758CONFIG_CRC_CCITT=m 925CONFIG_CRC_CCITT=m
926CONFIG_CRC16=m
759CONFIG_CRC32=y 927CONFIG_CRC32=y
760CONFIG_LIBCRC32C=m 928CONFIG_LIBCRC32C=m
761CONFIG_ZLIB_INFLATE=y 929CONFIG_ZLIB_INFLATE=m
762CONFIG_ZLIB_DEFLATE=y 930CONFIG_ZLIB_DEFLATE=m
763CONFIG_GENERIC_HARDIRQS=y
764CONFIG_GENERIC_IRQ_PROBE=y
diff --git a/arch/mips/configs/db1100_defconfig b/arch/mips/configs/db1100_defconfig
index 6a528d479d70..b8cd2cd923dd 100644
--- a/arch/mips/configs/db1100_defconfig
+++ b/arch/mips/configs/db1100_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:01 2005 4# Thu Oct 20 22:25:29 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14
29CONFIG_HOTPLUG=y 27CONFIG_HOTPLUG=y
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,63 +59,79 @@ CONFIG_KMOD=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60# CONFIG_MACH_VR41XX is not set 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_TOSHIBA_JMR3927 is not set 64# CONFIG_MIPS_PB1000 is not set
65# CONFIG_MIPS_PB1100 is not set
66# CONFIG_MIPS_PB1500 is not set
67# CONFIG_MIPS_PB1550 is not set
68# CONFIG_MIPS_PB1200 is not set
69# CONFIG_MIPS_DB1000 is not set
70CONFIG_MIPS_DB1100=y
71# CONFIG_MIPS_DB1500 is not set
72# CONFIG_MIPS_DB1550 is not set
73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
62# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
63# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
64# CONFIG_MIPS_EV64120 is not set 77# CONFIG_MIPS_EV64120 is not set
65# CONFIG_MIPS_EV96100 is not set 78# CONFIG_MIPS_EV96100 is not set
66# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
67# CONFIG_LASAT is not set
68# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
69# CONFIG_MIPS_ATLAS is not set 83# CONFIG_MIPS_ATLAS is not set
70# CONFIG_MIPS_MALTA is not set 84# CONFIG_MIPS_MALTA is not set
71# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
72# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
73# CONFIG_MOMENCO_OCELOT_G is not set
74# CONFIG_MOMENCO_OCELOT_C is not set
75# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
76# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
77# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
78# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
79# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
80# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
81# CONFIG_NEC_OSPREY is not set 98# CONFIG_MACH_VR41XX is not set
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
82# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
83CONFIG_SOC_AU1X00=y 102# CONFIG_SGI_IP27 is not set
84# CONFIG_SOC_AU1000 is not set 103# CONFIG_SGI_IP32 is not set
85CONFIG_SOC_AU1100=y 104# CONFIG_SIBYTE_BIGSUR is not set
86# CONFIG_SOC_AU1500 is not set 105# CONFIG_SIBYTE_SWARM is not set
87# CONFIG_SOC_AU1550 is not set 106# CONFIG_SIBYTE_SENTOSA is not set
88# CONFIG_MIPS_PB1000 is not set 107# CONFIG_SIBYTE_RHONE is not set
89# CONFIG_MIPS_PB1100 is not set 108# CONFIG_SIBYTE_CARMEL is not set
90# CONFIG_MIPS_PB1500 is not set 109# CONFIG_SIBYTE_PTSWARM is not set
91# CONFIG_MIPS_PB1550 is not set 110# CONFIG_SIBYTE_LITTLESUR is not set
92# CONFIG_MIPS_DB1000 is not set 111# CONFIG_SIBYTE_CRHINE is not set
93CONFIG_MIPS_DB1100=y 112# CONFIG_SIBYTE_CRHONE is not set
94# CONFIG_MIPS_DB1500 is not set
95# CONFIG_MIPS_DB1550 is not set
96# CONFIG_MIPS_BOSPORUS is not set
97# CONFIG_MIPS_MIRAGE is not set
98# CONFIG_MIPS_XXS1500 is not set
99# CONFIG_MIPS_MTX1 is not set
100# CONFIG_SIBYTE_SB1xxx_SOC is not set
101# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
102# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
103CONFIG_RWSEM_GENERIC_SPINLOCK=y 117CONFIG_RWSEM_GENERIC_SPINLOCK=y
104CONFIG_GENERIC_CALIBRATE_DELAY=y 118CONFIG_GENERIC_CALIBRATE_DELAY=y
105CONFIG_HAVE_DEC_LOCK=y
106CONFIG_DMA_NONCOHERENT=y 119CONFIG_DMA_NONCOHERENT=y
107CONFIG_DMA_NEED_PCI_MAP_STATE=y 120CONFIG_DMA_NEED_PCI_MAP_STATE=y
121# CONFIG_CPU_BIG_ENDIAN is not set
108CONFIG_CPU_LITTLE_ENDIAN=y 122CONFIG_CPU_LITTLE_ENDIAN=y
123CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
124CONFIG_SOC_AU1100=y
125CONFIG_SOC_AU1X00=y
109CONFIG_MIPS_L1_CACHE_SHIFT=5 126CONFIG_MIPS_L1_CACHE_SHIFT=5
110 127
111# 128#
112# CPU selection 129# CPU selection
113# 130#
114CONFIG_CPU_MIPS32=y 131CONFIG_CPU_MIPS32_R1=y
115# CONFIG_CPU_MIPS64 is not set 132# CONFIG_CPU_MIPS32_R2 is not set
133# CONFIG_CPU_MIPS64_R1 is not set
134# CONFIG_CPU_MIPS64_R2 is not set
116# CONFIG_CPU_R3000 is not set 135# CONFIG_CPU_R3000 is not set
117# CONFIG_CPU_TX39XX is not set 136# CONFIG_CPU_TX39XX is not set
118# CONFIG_CPU_VR41XX is not set 137# CONFIG_CPU_VR41XX is not set
@@ -128,15 +147,39 @@ CONFIG_CPU_MIPS32=y
128# CONFIG_CPU_RM7000 is not set 147# CONFIG_CPU_RM7000 is not set
129# CONFIG_CPU_RM9000 is not set 148# CONFIG_CPU_RM9000 is not set
130# CONFIG_CPU_SB1 is not set 149# CONFIG_CPU_SB1 is not set
150CONFIG_SYS_HAS_CPU_MIPS32_R1=y
151CONFIG_CPU_MIPS32=y
152CONFIG_CPU_MIPSR1=y
153CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
154CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
155
156#
157# Kernel type
158#
159CONFIG_32BIT=y
160# CONFIG_64BIT is not set
131CONFIG_PAGE_SIZE_4KB=y 161CONFIG_PAGE_SIZE_4KB=y
132# CONFIG_PAGE_SIZE_8KB is not set 162# CONFIG_PAGE_SIZE_8KB is not set
133# CONFIG_PAGE_SIZE_16KB is not set 163# CONFIG_PAGE_SIZE_16KB is not set
134# CONFIG_PAGE_SIZE_64KB is not set 164# CONFIG_PAGE_SIZE_64KB is not set
135CONFIG_CPU_HAS_PREFETCH=y 165CONFIG_CPU_HAS_PREFETCH=y
136# CONFIG_64BIT_PHYS_ADDR is not set 166# CONFIG_MIPS_MT is not set
167CONFIG_64BIT_PHYS_ADDR=y
137# CONFIG_CPU_ADVANCED is not set 168# CONFIG_CPU_ADVANCED is not set
138CONFIG_CPU_HAS_LLSC=y 169CONFIG_CPU_HAS_LLSC=y
139CONFIG_CPU_HAS_SYNC=y 170CONFIG_CPU_HAS_SYNC=y
171CONFIG_GENERIC_HARDIRQS=y
172CONFIG_GENERIC_IRQ_PROBE=y
173CONFIG_ARCH_FLATMEM_ENABLE=y
174CONFIG_SELECT_MEMORY_MODEL=y
175CONFIG_FLATMEM_MANUAL=y
176# CONFIG_DISCONTIGMEM_MANUAL is not set
177# CONFIG_SPARSEMEM_MANUAL is not set
178CONFIG_FLATMEM=y
179CONFIG_FLAT_NODE_MEM_MAP=y
180# CONFIG_SPARSEMEM_STATIC is not set
181CONFIG_PREEMPT_NONE=y
182# CONFIG_PREEMPT_VOLUNTARY is not set
140# CONFIG_PREEMPT is not set 183# CONFIG_PREEMPT is not set
141 184
142# 185#
@@ -147,15 +190,7 @@ CONFIG_MMU=y
147# 190#
148# PCCARD (PCMCIA/CardBus) support 191# PCCARD (PCMCIA/CardBus) support
149# 192#
150CONFIG_PCCARD=m 193# CONFIG_PCCARD is not set
151# CONFIG_PCMCIA_DEBUG is not set
152CONFIG_PCMCIA=m
153
154#
155# PC-card bridges
156#
157# CONFIG_TCIC is not set
158# CONFIG_PCMCIA_AU1X00 is not set
159 194
160# 195#
161# PCI Hotplug Support 196# PCI Hotplug Support
@@ -167,6 +202,100 @@ CONFIG_PCMCIA=m
167CONFIG_BINFMT_ELF=y 202CONFIG_BINFMT_ELF=y
168# CONFIG_BINFMT_MISC is not set 203# CONFIG_BINFMT_MISC is not set
169CONFIG_TRAD_SIGNALS=y 204CONFIG_TRAD_SIGNALS=y
205# CONFIG_PM is not set
206
207#
208# Networking
209#
210CONFIG_NET=y
211
212#
213# Networking options
214#
215CONFIG_PACKET=y
216# CONFIG_PACKET_MMAP is not set
217CONFIG_UNIX=y
218CONFIG_XFRM=y
219CONFIG_XFRM_USER=m
220CONFIG_NET_KEY=y
221CONFIG_INET=y
222CONFIG_IP_MULTICAST=y
223# CONFIG_IP_ADVANCED_ROUTER is not set
224CONFIG_IP_FIB_HASH=y
225CONFIG_IP_PNP=y
226# CONFIG_IP_PNP_DHCP is not set
227CONFIG_IP_PNP_BOOTP=y
228# CONFIG_IP_PNP_RARP is not set
229# CONFIG_NET_IPIP is not set
230# CONFIG_NET_IPGRE is not set
231# CONFIG_IP_MROUTE is not set
232# CONFIG_ARPD is not set
233# CONFIG_SYN_COOKIES is not set
234# CONFIG_INET_AH is not set
235# CONFIG_INET_ESP is not set
236# CONFIG_INET_IPCOMP is not set
237CONFIG_INET_TUNNEL=m
238CONFIG_INET_DIAG=y
239CONFIG_INET_TCP_DIAG=y
240# CONFIG_TCP_CONG_ADVANCED is not set
241CONFIG_TCP_CONG_BIC=y
242
243#
244# IP: Virtual Server Configuration
245#
246# CONFIG_IP_VS is not set
247# CONFIG_IPV6 is not set
248CONFIG_NETFILTER=y
249# CONFIG_NETFILTER_DEBUG is not set
250CONFIG_NETFILTER_NETLINK=m
251CONFIG_NETFILTER_NETLINK_QUEUE=m
252CONFIG_NETFILTER_NETLINK_LOG=m
253
254#
255# IP: Netfilter Configuration
256#
257# CONFIG_IP_NF_CONNTRACK is not set
258CONFIG_IP_NF_PPTP=m
259# CONFIG_IP_NF_QUEUE is not set
260# CONFIG_IP_NF_IPTABLES is not set
261# CONFIG_IP_NF_ARPTABLES is not set
262
263#
264# DCCP Configuration (EXPERIMENTAL)
265#
266# CONFIG_IP_DCCP is not set
267
268#
269# SCTP Configuration (EXPERIMENTAL)
270#
271# CONFIG_IP_SCTP is not set
272# CONFIG_ATM is not set
273# CONFIG_BRIDGE is not set
274# CONFIG_VLAN_8021Q is not set
275# CONFIG_DECNET is not set
276# CONFIG_LLC2 is not set
277# CONFIG_IPX is not set
278# CONFIG_ATALK is not set
279# CONFIG_X25 is not set
280# CONFIG_LAPB is not set
281# CONFIG_NET_DIVERT is not set
282# CONFIG_ECONET is not set
283# CONFIG_WAN_ROUTER is not set
284# CONFIG_NET_SCHED is not set
285# CONFIG_NET_CLS_ROUTE is not set
286
287#
288# Network testing
289#
290# CONFIG_NET_PKTGEN is not set
291# CONFIG_HAMRADIO is not set
292# CONFIG_IRDA is not set
293# CONFIG_BT is not set
294CONFIG_IEEE80211=m
295# CONFIG_IEEE80211_DEBUG is not set
296CONFIG_IEEE80211_CRYPT_WEP=m
297CONFIG_IEEE80211_CRYPT_CCMP=m
298CONFIG_IEEE80211_CRYPT_TKIP=m
170 299
171# 300#
172# Device Drivers 301# Device Drivers
@@ -180,9 +309,83 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
180# CONFIG_FW_LOADER is not set 309# CONFIG_FW_LOADER is not set
181 310
182# 311#
312# Connector - unified userspace <-> kernelspace linker
313#
314CONFIG_CONNECTOR=m
315
316#
183# Memory Technology Devices (MTD) 317# Memory Technology Devices (MTD)
184# 318#
185# CONFIG_MTD is not set 319CONFIG_MTD=y
320# CONFIG_MTD_DEBUG is not set
321# CONFIG_MTD_CONCAT is not set
322CONFIG_MTD_PARTITIONS=y
323# CONFIG_MTD_REDBOOT_PARTS is not set
324# CONFIG_MTD_CMDLINE_PARTS is not set
325
326#
327# User Modules And Translation Layers
328#
329CONFIG_MTD_CHAR=y
330CONFIG_MTD_BLOCK=y
331# CONFIG_FTL is not set
332# CONFIG_NFTL is not set
333# CONFIG_INFTL is not set
334
335#
336# RAM/ROM/Flash chip drivers
337#
338CONFIG_MTD_CFI=y
339# CONFIG_MTD_JEDECPROBE is not set
340CONFIG_MTD_GEN_PROBE=y
341# CONFIG_MTD_CFI_ADV_OPTIONS is not set
342CONFIG_MTD_MAP_BANK_WIDTH_1=y
343CONFIG_MTD_MAP_BANK_WIDTH_2=y
344CONFIG_MTD_MAP_BANK_WIDTH_4=y
345# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
346# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
347# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
348CONFIG_MTD_CFI_I1=y
349CONFIG_MTD_CFI_I2=y
350# CONFIG_MTD_CFI_I4 is not set
351# CONFIG_MTD_CFI_I8 is not set
352# CONFIG_MTD_CFI_INTELEXT is not set
353CONFIG_MTD_CFI_AMDSTD=y
354CONFIG_MTD_CFI_AMDSTD_RETRY=0
355# CONFIG_MTD_CFI_STAA is not set
356CONFIG_MTD_CFI_UTIL=y
357# CONFIG_MTD_RAM is not set
358# CONFIG_MTD_ROM is not set
359# CONFIG_MTD_ABSENT is not set
360
361#
362# Mapping drivers for chip access
363#
364# CONFIG_MTD_COMPLEX_MAPPINGS is not set
365# CONFIG_MTD_PHYSMAP is not set
366CONFIG_MTD_ALCHEMY=y
367# CONFIG_MTD_PLATRAM is not set
368
369#
370# Self-contained MTD device drivers
371#
372# CONFIG_MTD_SLRAM is not set
373# CONFIG_MTD_PHRAM is not set
374# CONFIG_MTD_MTDRAM is not set
375# CONFIG_MTD_BLKMTD is not set
376# CONFIG_MTD_BLOCK2MTD is not set
377
378#
379# Disk-On-Chip Device Drivers
380#
381# CONFIG_MTD_DOC2000 is not set
382# CONFIG_MTD_DOC2001 is not set
383# CONFIG_MTD_DOC2001PLUS is not set
384
385#
386# NAND Flash Device Drivers
387#
388# CONFIG_MTD_NAND is not set
186 389
187# 390#
188# Parallel port support 391# Parallel port support
@@ -196,14 +399,12 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
196# 399#
197# Block devices 400# Block devices
198# 401#
199# CONFIG_BLK_DEV_FD is not set
200# CONFIG_BLK_DEV_COW_COMMON is not set 402# CONFIG_BLK_DEV_COW_COMMON is not set
201CONFIG_BLK_DEV_LOOP=y 403CONFIG_BLK_DEV_LOOP=y
202# CONFIG_BLK_DEV_CRYPTOLOOP is not set 404# CONFIG_BLK_DEV_CRYPTOLOOP is not set
203# CONFIG_BLK_DEV_NBD is not set 405# CONFIG_BLK_DEV_NBD is not set
204# CONFIG_BLK_DEV_RAM is not set 406# CONFIG_BLK_DEV_RAM is not set
205CONFIG_BLK_DEV_RAM_COUNT=16 407CONFIG_BLK_DEV_RAM_COUNT=16
206CONFIG_INITRAMFS_SOURCE=""
207# CONFIG_LBD is not set 408# CONFIG_LBD is not set
208CONFIG_CDROM_PKTCDVD=m 409CONFIG_CDROM_PKTCDVD=m
209CONFIG_CDROM_PKTCDVD_BUFFERS=8 410CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -226,6 +427,7 @@ CONFIG_ATA_OVER_ETH=m
226# 427#
227# SCSI device support 428# SCSI device support
228# 429#
430CONFIG_RAID_ATTRS=m
229# CONFIG_SCSI is not set 431# CONFIG_SCSI is not set
230 432
231# 433#
@@ -236,6 +438,7 @@ CONFIG_ATA_OVER_ETH=m
236# 438#
237# Fusion MPT device support 439# Fusion MPT device support
238# 440#
441# CONFIG_FUSION is not set
239 442
240# 443#
241# IEEE 1394 (FireWire) support 444# IEEE 1394 (FireWire) support
@@ -246,101 +449,35 @@ CONFIG_ATA_OVER_ETH=m
246# 449#
247 450
248# 451#
249# Networking support 452# Network device support
250#
251CONFIG_NET=y
252
253#
254# Networking options
255#
256CONFIG_PACKET=y
257# CONFIG_PACKET_MMAP is not set
258CONFIG_NETLINK_DEV=y
259CONFIG_UNIX=y
260CONFIG_NET_KEY=y
261CONFIG_INET=y
262CONFIG_IP_MULTICAST=y
263# CONFIG_IP_ADVANCED_ROUTER is not set
264CONFIG_IP_PNP=y
265# CONFIG_IP_PNP_DHCP is not set
266CONFIG_IP_PNP_BOOTP=y
267# CONFIG_IP_PNP_RARP is not set
268# CONFIG_NET_IPIP is not set
269# CONFIG_NET_IPGRE is not set
270# CONFIG_IP_MROUTE is not set
271# CONFIG_ARPD is not set
272# CONFIG_SYN_COOKIES is not set
273# CONFIG_INET_AH is not set
274# CONFIG_INET_ESP is not set
275# CONFIG_INET_IPCOMP is not set
276CONFIG_INET_TUNNEL=m
277CONFIG_IP_TCPDIAG=m
278# CONFIG_IP_TCPDIAG_IPV6 is not set
279
280#
281# IP: Virtual Server Configuration
282#
283# CONFIG_IP_VS is not set
284# CONFIG_IPV6 is not set
285CONFIG_NETFILTER=y
286# CONFIG_NETFILTER_DEBUG is not set
287
288#
289# IP: Netfilter Configuration
290# 453#
291# CONFIG_IP_NF_CONNTRACK is not set 454CONFIG_NETDEVICES=y
292CONFIG_IP_NF_CONNTRACK_MARK=y 455# CONFIG_DUMMY is not set
293# CONFIG_IP_NF_QUEUE is not set 456# CONFIG_BONDING is not set
294# CONFIG_IP_NF_IPTABLES is not set 457# CONFIG_EQUALIZER is not set
295# CONFIG_IP_NF_ARPTABLES is not set 458# CONFIG_TUN is not set
296CONFIG_XFRM=y
297CONFIG_XFRM_USER=m
298
299#
300# SCTP Configuration (EXPERIMENTAL)
301#
302# CONFIG_IP_SCTP is not set
303# CONFIG_ATM is not set
304# CONFIG_BRIDGE is not set
305# CONFIG_VLAN_8021Q is not set
306# CONFIG_DECNET is not set
307# CONFIG_LLC2 is not set
308# CONFIG_IPX is not set
309# CONFIG_ATALK is not set
310# CONFIG_X25 is not set
311# CONFIG_LAPB is not set
312# CONFIG_NET_DIVERT is not set
313# CONFIG_ECONET is not set
314# CONFIG_WAN_ROUTER is not set
315 459
316# 460#
317# QoS and/or fair queueing 461# PHY device support
318# 462#
319# CONFIG_NET_SCHED is not set 463CONFIG_PHYLIB=m
320# CONFIG_NET_CLS_ROUTE is not set 464CONFIG_PHYCONTROL=y
321 465
322# 466#
323# Network testing 467# MII PHY device drivers
324# 468#
325# CONFIG_NET_PKTGEN is not set 469CONFIG_MARVELL_PHY=m
326# CONFIG_NETPOLL is not set 470CONFIG_DAVICOM_PHY=m
327# CONFIG_NET_POLL_CONTROLLER is not set 471CONFIG_QSEMI_PHY=m
328# CONFIG_HAMRADIO is not set 472CONFIG_LXT_PHY=m
329# CONFIG_IRDA is not set 473CONFIG_CICADA_PHY=m
330# CONFIG_BT is not set
331CONFIG_NETDEVICES=y
332# CONFIG_DUMMY is not set
333# CONFIG_BONDING is not set
334# CONFIG_EQUALIZER is not set
335# CONFIG_TUN is not set
336# CONFIG_ETHERTAP is not set
337 474
338# 475#
339# Ethernet (10 or 100Mbit) 476# Ethernet (10 or 100Mbit)
340# 477#
341CONFIG_NET_ETHERNET=y 478CONFIG_NET_ETHERNET=y
342CONFIG_MII=m 479CONFIG_MII=m
343# CONFIG_MIPS_AU1X00_ENET is not set 480CONFIG_MIPS_AU1X00_ENET=y
344 481
345# 482#
346# Ethernet (1000 Mbit) 483# Ethernet (1000 Mbit)
@@ -360,19 +497,6 @@ CONFIG_MII=m
360# CONFIG_NET_RADIO is not set 497# CONFIG_NET_RADIO is not set
361 498
362# 499#
363# PCMCIA network device support
364#
365CONFIG_NET_PCMCIA=y
366CONFIG_PCMCIA_3C589=m
367CONFIG_PCMCIA_3C574=m
368CONFIG_PCMCIA_FMVJ18X=m
369CONFIG_PCMCIA_PCNET=m
370CONFIG_PCMCIA_NMCLAN=m
371CONFIG_PCMCIA_SMC91C92=m
372CONFIG_PCMCIA_XIRC2PS=m
373CONFIG_PCMCIA_AXNET=m
374
375#
376# Wan interfaces 500# Wan interfaces
377# 501#
378# CONFIG_WAN is not set 502# CONFIG_WAN is not set
@@ -387,6 +511,8 @@ CONFIG_PPPOE=m
387# CONFIG_SLIP is not set 511# CONFIG_SLIP is not set
388# CONFIG_SHAPER is not set 512# CONFIG_SHAPER is not set
389# CONFIG_NETCONSOLE is not set 513# CONFIG_NETCONSOLE is not set
514# CONFIG_NETPOLL is not set
515# CONFIG_NET_POLL_CONTROLLER is not set
390 516
391# 517#
392# ISDN subsystem 518# ISDN subsystem
@@ -416,18 +542,6 @@ CONFIG_INPUT_EVDEV=y
416# CONFIG_INPUT_EVBUG is not set 542# CONFIG_INPUT_EVBUG is not set
417 543
418# 544#
419# Input I/O drivers
420#
421# CONFIG_GAMEPORT is not set
422CONFIG_SOUND_GAMEPORT=y
423CONFIG_SERIO=y
424# CONFIG_SERIO_I8042 is not set
425CONFIG_SERIO_SERPORT=y
426# CONFIG_SERIO_CT82C710 is not set
427CONFIG_SERIO_LIBPS2=m
428CONFIG_SERIO_RAW=m
429
430#
431# Input Device Drivers 545# Input Device Drivers
432# 546#
433# CONFIG_INPUT_KEYBOARD is not set 547# CONFIG_INPUT_KEYBOARD is not set
@@ -437,6 +551,16 @@ CONFIG_SERIO_RAW=m
437# CONFIG_INPUT_MISC is not set 551# CONFIG_INPUT_MISC is not set
438 552
439# 553#
554# Hardware I/O ports
555#
556CONFIG_SERIO=y
557# CONFIG_SERIO_I8042 is not set
558CONFIG_SERIO_SERPORT=y
559CONFIG_SERIO_LIBPS2=m
560CONFIG_SERIO_RAW=m
561# CONFIG_GAMEPORT is not set
562
563#
440# Character devices 564# Character devices
441# 565#
442CONFIG_VT=y 566CONFIG_VT=y
@@ -454,7 +578,10 @@ CONFIG_HW_CONSOLE=y
454# 578#
455# Non-8250 serial port support 579# Non-8250 serial port support
456# 580#
457# CONFIG_SERIAL_AU1X00 is not set 581CONFIG_SERIAL_AU1X00=y
582CONFIG_SERIAL_AU1X00_CONSOLE=y
583CONFIG_SERIAL_CORE=y
584CONFIG_SERIAL_CORE_CONSOLE=y
458CONFIG_UNIX98_PTYS=y 585CONFIG_UNIX98_PTYS=y
459CONFIG_LEGACY_PTYS=y 586CONFIG_LEGACY_PTYS=y
460CONFIG_LEGACY_PTY_COUNT=256 587CONFIG_LEGACY_PTY_COUNT=256
@@ -468,20 +595,19 @@ CONFIG_LEGACY_PTY_COUNT=256
468# Watchdog Cards 595# Watchdog Cards
469# 596#
470# CONFIG_WATCHDOG is not set 597# CONFIG_WATCHDOG is not set
471CONFIG_RTC=y 598# CONFIG_RTC is not set
599# CONFIG_GEN_RTC is not set
472# CONFIG_DTLK is not set 600# CONFIG_DTLK is not set
473# CONFIG_R3964 is not set 601# CONFIG_R3964 is not set
474 602
475# 603#
476# Ftape, the floppy tape device driver 604# Ftape, the floppy tape device driver
477# 605#
478# CONFIG_DRM is not set 606# CONFIG_RAW_DRIVER is not set
479 607
480# 608#
481# PCMCIA character devices 609# TPM devices
482# 610#
483CONFIG_SYNCLINK_CS=m
484# CONFIG_RAW_DRIVER is not set
485 611
486# 612#
487# I2C support 613# I2C support
@@ -494,10 +620,20 @@ CONFIG_SYNCLINK_CS=m
494# CONFIG_W1 is not set 620# CONFIG_W1 is not set
495 621
496# 622#
623# Hardware Monitoring support
624#
625# CONFIG_HWMON is not set
626# CONFIG_HWMON_VID is not set
627
628#
497# Misc devices 629# Misc devices
498# 630#
499 631
500# 632#
633# Multimedia Capabilities Port drivers
634#
635
636#
501# Multimedia devices 637# Multimedia devices
502# 638#
503# CONFIG_VIDEO_DEV is not set 639# CONFIG_VIDEO_DEV is not set
@@ -510,13 +646,43 @@ CONFIG_SYNCLINK_CS=m
510# 646#
511# Graphics support 647# Graphics support
512# 648#
513# CONFIG_FB is not set 649CONFIG_FB=y
650CONFIG_FB_CFB_FILLRECT=y
651CONFIG_FB_CFB_COPYAREA=y
652CONFIG_FB_CFB_IMAGEBLIT=y
653CONFIG_FB_SOFT_CURSOR=y
654# CONFIG_FB_MACMODES is not set
655# CONFIG_FB_MODE_HELPERS is not set
656# CONFIG_FB_TILEBLITTING is not set
657CONFIG_FB_AU1100=y
658# CONFIG_FB_S1D13XXX is not set
659# CONFIG_FB_VIRTUAL is not set
514 660
515# 661#
516# Console display driver support 662# Console display driver support
517# 663#
518# CONFIG_VGA_CONSOLE is not set 664# CONFIG_VGA_CONSOLE is not set
519CONFIG_DUMMY_CONSOLE=y 665CONFIG_DUMMY_CONSOLE=y
666CONFIG_FRAMEBUFFER_CONSOLE=y
667CONFIG_FONTS=y
668CONFIG_FONT_8x8=y
669CONFIG_FONT_8x16=y
670# CONFIG_FONT_6x11 is not set
671# CONFIG_FONT_7x14 is not set
672# CONFIG_FONT_PEARL_8x8 is not set
673# CONFIG_FONT_ACORN_8x8 is not set
674# CONFIG_FONT_MINI_4x6 is not set
675# CONFIG_FONT_SUN8x16 is not set
676# CONFIG_FONT_SUN12x22 is not set
677# CONFIG_FONT_10x18 is not set
678
679#
680# Logo configuration
681#
682CONFIG_LOGO=y
683CONFIG_LOGO_LINUX_MONO=y
684CONFIG_LOGO_LINUX_VGA16=y
685CONFIG_LOGO_LINUX_CLUT224=y
520# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 686# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
521 687
522# 688#
@@ -527,12 +693,9 @@ CONFIG_DUMMY_CONSOLE=y
527# 693#
528# USB support 694# USB support
529# 695#
530# CONFIG_USB_ARCH_HAS_HCD is not set 696CONFIG_USB_ARCH_HAS_HCD=y
531# CONFIG_USB_ARCH_HAS_OHCI is not set 697CONFIG_USB_ARCH_HAS_OHCI=y
532 698# CONFIG_USB is not set
533#
534# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
535#
536 699
537# 700#
538# USB Gadget Support 701# USB Gadget Support
@@ -547,7 +710,10 @@ CONFIG_DUMMY_CONSOLE=y
547# 710#
548# InfiniBand support 711# InfiniBand support
549# 712#
550# CONFIG_INFINIBAND is not set 713
714#
715# SN Devices
716#
551 717
552# 718#
553# File systems 719# File systems
@@ -556,6 +722,7 @@ CONFIG_EXT2_FS=y
556CONFIG_EXT2_FS_XATTR=y 722CONFIG_EXT2_FS_XATTR=y
557CONFIG_EXT2_FS_POSIX_ACL=y 723CONFIG_EXT2_FS_POSIX_ACL=y
558# CONFIG_EXT2_FS_SECURITY is not set 724# CONFIG_EXT2_FS_SECURITY is not set
725# CONFIG_EXT2_FS_XIP is not set
559CONFIG_EXT3_FS=y 726CONFIG_EXT3_FS=y
560CONFIG_EXT3_FS_XATTR=y 727CONFIG_EXT3_FS_XATTR=y
561CONFIG_EXT3_FS_POSIX_ACL=y 728CONFIG_EXT3_FS_POSIX_ACL=y
@@ -574,10 +741,12 @@ CONFIG_FS_POSIX_ACL=y
574# CONFIG_XFS_FS is not set 741# CONFIG_XFS_FS is not set
575# CONFIG_MINIX_FS is not set 742# CONFIG_MINIX_FS is not set
576# CONFIG_ROMFS_FS is not set 743# CONFIG_ROMFS_FS is not set
744CONFIG_INOTIFY=y
577# CONFIG_QUOTA is not set 745# CONFIG_QUOTA is not set
578CONFIG_DNOTIFY=y 746CONFIG_DNOTIFY=y
579CONFIG_AUTOFS_FS=m 747CONFIG_AUTOFS_FS=m
580CONFIG_AUTOFS4_FS=m 748CONFIG_AUTOFS4_FS=m
749CONFIG_FUSE_FS=m
581 750
582# 751#
583# CD-ROM/DVD Filesystems 752# CD-ROM/DVD Filesystems
@@ -598,13 +767,10 @@ CONFIG_AUTOFS4_FS=m
598CONFIG_PROC_FS=y 767CONFIG_PROC_FS=y
599CONFIG_PROC_KCORE=y 768CONFIG_PROC_KCORE=y
600CONFIG_SYSFS=y 769CONFIG_SYSFS=y
601# CONFIG_DEVFS_FS is not set
602CONFIG_DEVPTS_FS_XATTR=y
603CONFIG_DEVPTS_FS_SECURITY=y
604CONFIG_TMPFS=y 770CONFIG_TMPFS=y
605# CONFIG_TMPFS_XATTR is not set
606# CONFIG_HUGETLB_PAGE is not set 771# CONFIG_HUGETLB_PAGE is not set
607CONFIG_RAMFS=y 772CONFIG_RAMFS=y
773CONFIG_RELAYFS_FS=m
608 774
609# 775#
610# Miscellaneous filesystems 776# Miscellaneous filesystems
@@ -616,6 +782,8 @@ CONFIG_RAMFS=y
616# CONFIG_BEFS_FS is not set 782# CONFIG_BEFS_FS is not set
617# CONFIG_BFS_FS is not set 783# CONFIG_BFS_FS is not set
618# CONFIG_EFS_FS is not set 784# CONFIG_EFS_FS is not set
785# CONFIG_JFFS_FS is not set
786# CONFIG_JFFS2_FS is not set
619CONFIG_CRAMFS=m 787CONFIG_CRAMFS=m
620# CONFIG_VXFS_FS is not set 788# CONFIG_VXFS_FS is not set
621# CONFIG_HPFS_FS is not set 789# CONFIG_HPFS_FS is not set
@@ -636,6 +804,7 @@ CONFIG_NFSD=m
636CONFIG_ROOT_NFS=y 804CONFIG_ROOT_NFS=y
637CONFIG_LOCKD=y 805CONFIG_LOCKD=y
638CONFIG_EXPORTFS=m 806CONFIG_EXPORTFS=m
807CONFIG_NFS_COMMON=y
639CONFIG_SUNRPC=y 808CONFIG_SUNRPC=y
640# CONFIG_RPCSEC_GSS_KRB5 is not set 809# CONFIG_RPCSEC_GSS_KRB5 is not set
641# CONFIG_RPCSEC_GSS_SPKM3 is not set 810# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -645,6 +814,7 @@ CONFIG_SMB_FS=m
645# CONFIG_NCP_FS is not set 814# CONFIG_NCP_FS is not set
646# CONFIG_CODA_FS is not set 815# CONFIG_CODA_FS is not set
647# CONFIG_AFS_FS is not set 816# CONFIG_AFS_FS is not set
817# CONFIG_9P_FS is not set
648 818
649# 819#
650# Partition Types 820# Partition Types
@@ -704,7 +874,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
704# 874#
705# Kernel hacking 875# Kernel hacking
706# 876#
877# CONFIG_PRINTK_TIME is not set
707# CONFIG_DEBUG_KERNEL is not set 878# CONFIG_DEBUG_KERNEL is not set
879CONFIG_LOG_BUF_SHIFT=14
708CONFIG_CROSSCOMPILE=y 880CONFIG_CROSSCOMPILE=y
709CONFIG_CMDLINE="" 881CONFIG_CMDLINE=""
710 882
@@ -720,26 +892,27 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
720# 892#
721CONFIG_CRYPTO=y 893CONFIG_CRYPTO=y
722CONFIG_CRYPTO_HMAC=y 894CONFIG_CRYPTO_HMAC=y
723CONFIG_CRYPTO_NULL=y 895CONFIG_CRYPTO_NULL=m
724# CONFIG_CRYPTO_MD4 is not set 896CONFIG_CRYPTO_MD4=m
725# CONFIG_CRYPTO_MD5 is not set 897CONFIG_CRYPTO_MD5=m
726# CONFIG_CRYPTO_SHA1 is not set 898CONFIG_CRYPTO_SHA1=m
727# CONFIG_CRYPTO_SHA256 is not set 899CONFIG_CRYPTO_SHA256=m
728CONFIG_CRYPTO_SHA512=y 900CONFIG_CRYPTO_SHA512=m
729CONFIG_CRYPTO_WP512=m 901CONFIG_CRYPTO_WP512=m
730# CONFIG_CRYPTO_DES is not set 902CONFIG_CRYPTO_TGR192=m
731# CONFIG_CRYPTO_BLOWFISH is not set 903CONFIG_CRYPTO_DES=m
732CONFIG_CRYPTO_TWOFISH=y 904CONFIG_CRYPTO_BLOWFISH=m
733# CONFIG_CRYPTO_SERPENT is not set 905CONFIG_CRYPTO_TWOFISH=m
906CONFIG_CRYPTO_SERPENT=m
734CONFIG_CRYPTO_AES=m 907CONFIG_CRYPTO_AES=m
735# CONFIG_CRYPTO_CAST5 is not set 908CONFIG_CRYPTO_CAST5=m
736# CONFIG_CRYPTO_CAST6 is not set 909CONFIG_CRYPTO_CAST6=m
737CONFIG_CRYPTO_TEA=m 910CONFIG_CRYPTO_TEA=m
738# CONFIG_CRYPTO_ARC4 is not set 911CONFIG_CRYPTO_ARC4=m
739CONFIG_CRYPTO_KHAZAD=m 912CONFIG_CRYPTO_KHAZAD=m
740CONFIG_CRYPTO_ANUBIS=m 913CONFIG_CRYPTO_ANUBIS=m
741CONFIG_CRYPTO_DEFLATE=y 914CONFIG_CRYPTO_DEFLATE=m
742CONFIG_CRYPTO_MICHAEL_MIC=y 915CONFIG_CRYPTO_MICHAEL_MIC=m
743CONFIG_CRYPTO_CRC32C=m 916CONFIG_CRYPTO_CRC32C=m
744# CONFIG_CRYPTO_TEST is not set 917# CONFIG_CRYPTO_TEST is not set
745 918
@@ -751,9 +924,8 @@ CONFIG_CRYPTO_CRC32C=m
751# Library routines 924# Library routines
752# 925#
753CONFIG_CRC_CCITT=m 926CONFIG_CRC_CCITT=m
927CONFIG_CRC16=m
754CONFIG_CRC32=y 928CONFIG_CRC32=y
755CONFIG_LIBCRC32C=m 929CONFIG_LIBCRC32C=m
756CONFIG_ZLIB_INFLATE=y 930CONFIG_ZLIB_INFLATE=m
757CONFIG_ZLIB_DEFLATE=y 931CONFIG_ZLIB_DEFLATE=m
758CONFIG_GENERIC_HARDIRQS=y
759CONFIG_GENERIC_IRQ_PROBE=y
diff --git a/arch/mips/configs/db1200_defconfig b/arch/mips/configs/db1200_defconfig
new file mode 100644
index 000000000000..530b6c2d99f6
--- /dev/null
+++ b/arch/mips/configs/db1200_defconfig
@@ -0,0 +1,987 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.14-rc2
4# Thu Oct 20 22:25:32 2005
5#
6CONFIG_MIPS=y
7
8#
9# Code maturity level options
10#
11CONFIG_EXPERIMENTAL=y
12CONFIG_CLEAN_COMPILE=y
13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
15
16#
17# General setup
18#
19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
21CONFIG_SWAP=y
22CONFIG_SYSVIPC=y
23# CONFIG_POSIX_MQUEUE is not set
24# CONFIG_BSD_PROCESS_ACCT is not set
25CONFIG_SYSCTL=y
26# CONFIG_AUDIT is not set
27CONFIG_HOTPLUG=y
28CONFIG_KOBJECT_UEVENT=y
29CONFIG_IKCONFIG=y
30CONFIG_IKCONFIG_PROC=y
31CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set
35CONFIG_PRINTK=y
36CONFIG_BUG=y
37CONFIG_BASE_FULL=y
38CONFIG_FUTEX=y
39CONFIG_EPOLL=y
40# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
41CONFIG_SHMEM=y
42CONFIG_CC_ALIGN_FUNCTIONS=0
43CONFIG_CC_ALIGN_LABELS=0
44CONFIG_CC_ALIGN_LOOPS=0
45CONFIG_CC_ALIGN_JUMPS=0
46# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0
48
49#
50# Loadable module support
51#
52CONFIG_MODULES=y
53CONFIG_MODULE_UNLOAD=y
54# CONFIG_MODULE_FORCE_UNLOAD is not set
55CONFIG_OBSOLETE_MODPARM=y
56CONFIG_MODVERSIONS=y
57CONFIG_MODULE_SRCVERSION_ALL=y
58CONFIG_KMOD=y
59
60#
61# Machine selection
62#
63# CONFIG_MIPS_MTX1 is not set
64# CONFIG_MIPS_BOSPORUS is not set
65# CONFIG_MIPS_PB1000 is not set
66# CONFIG_MIPS_PB1100 is not set
67# CONFIG_MIPS_PB1500 is not set
68# CONFIG_MIPS_PB1550 is not set
69# CONFIG_MIPS_PB1200 is not set
70# CONFIG_MIPS_DB1000 is not set
71# CONFIG_MIPS_DB1100 is not set
72# CONFIG_MIPS_DB1500 is not set
73# CONFIG_MIPS_DB1550 is not set
74CONFIG_MIPS_DB1200=y
75# CONFIG_MIPS_MIRAGE is not set
76# CONFIG_MIPS_COBALT is not set
77# CONFIG_MACH_DECSTATION is not set
78# CONFIG_MIPS_EV64120 is not set
79# CONFIG_MIPS_EV96100 is not set
80# CONFIG_MIPS_IVR is not set
81# CONFIG_MIPS_ITE8172 is not set
82# CONFIG_MACH_JAZZ is not set
83# CONFIG_LASAT is not set
84# CONFIG_MIPS_ATLAS is not set
85# CONFIG_MIPS_MALTA is not set
86# CONFIG_MIPS_SEAD is not set
87# CONFIG_MIPS_SIM is not set
88# CONFIG_MOMENCO_JAGUAR_ATX is not set
89# CONFIG_MOMENCO_OCELOT is not set
90# CONFIG_MOMENCO_OCELOT_3 is not set
91# CONFIG_MOMENCO_OCELOT_C is not set
92# CONFIG_MOMENCO_OCELOT_G is not set
93# CONFIG_MIPS_XXS1500 is not set
94# CONFIG_PNX8550_V2PCI is not set
95# CONFIG_PNX8550_JBS is not set
96# CONFIG_DDB5074 is not set
97# CONFIG_DDB5476 is not set
98# CONFIG_DDB5477 is not set
99# CONFIG_MACH_VR41XX is not set
100# CONFIG_PMC_YOSEMITE is not set
101# CONFIG_QEMU is not set
102# CONFIG_SGI_IP22 is not set
103# CONFIG_SGI_IP27 is not set
104# CONFIG_SGI_IP32 is not set
105# CONFIG_SIBYTE_BIGSUR is not set
106# CONFIG_SIBYTE_SWARM is not set
107# CONFIG_SIBYTE_SENTOSA is not set
108# CONFIG_SIBYTE_RHONE is not set
109# CONFIG_SIBYTE_CARMEL is not set
110# CONFIG_SIBYTE_PTSWARM is not set
111# CONFIG_SIBYTE_LITTLESUR is not set
112# CONFIG_SIBYTE_CRHINE is not set
113# CONFIG_SIBYTE_CRHONE is not set
114# CONFIG_SNI_RM200_PCI is not set
115# CONFIG_TOSHIBA_JMR3927 is not set
116# CONFIG_TOSHIBA_RBTX4927 is not set
117# CONFIG_TOSHIBA_RBTX4938 is not set
118CONFIG_RWSEM_GENERIC_SPINLOCK=y
119CONFIG_GENERIC_CALIBRATE_DELAY=y
120CONFIG_DMA_COHERENT=y
121CONFIG_MIPS_DISABLE_OBSOLETE_IDE=y
122# CONFIG_CPU_BIG_ENDIAN is not set
123CONFIG_CPU_LITTLE_ENDIAN=y
124CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
125CONFIG_SOC_AU1200=y
126CONFIG_SOC_AU1X00=y
127CONFIG_MIPS_L1_CACHE_SHIFT=5
128
129#
130# CPU selection
131#
132CONFIG_CPU_MIPS32_R1=y
133# CONFIG_CPU_MIPS32_R2 is not set
134# CONFIG_CPU_MIPS64_R1 is not set
135# CONFIG_CPU_MIPS64_R2 is not set
136# CONFIG_CPU_R3000 is not set
137# CONFIG_CPU_TX39XX is not set
138# CONFIG_CPU_VR41XX is not set
139# CONFIG_CPU_R4300 is not set
140# CONFIG_CPU_R4X00 is not set
141# CONFIG_CPU_TX49XX is not set
142# CONFIG_CPU_R5000 is not set
143# CONFIG_CPU_R5432 is not set
144# CONFIG_CPU_R6000 is not set
145# CONFIG_CPU_NEVADA is not set
146# CONFIG_CPU_R8000 is not set
147# CONFIG_CPU_R10000 is not set
148# CONFIG_CPU_RM7000 is not set
149# CONFIG_CPU_RM9000 is not set
150# CONFIG_CPU_SB1 is not set
151CONFIG_SYS_HAS_CPU_MIPS32_R1=y
152CONFIG_CPU_MIPS32=y
153CONFIG_CPU_MIPSR1=y
154CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
155CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
156
157#
158# Kernel type
159#
160CONFIG_32BIT=y
161# CONFIG_64BIT is not set
162CONFIG_PAGE_SIZE_4KB=y
163# CONFIG_PAGE_SIZE_8KB is not set
164# CONFIG_PAGE_SIZE_16KB is not set
165# CONFIG_PAGE_SIZE_64KB is not set
166CONFIG_CPU_HAS_PREFETCH=y
167# CONFIG_MIPS_MT is not set
168CONFIG_64BIT_PHYS_ADDR=y
169# CONFIG_CPU_ADVANCED is not set
170CONFIG_CPU_HAS_LLSC=y
171CONFIG_CPU_HAS_SYNC=y
172CONFIG_GENERIC_HARDIRQS=y
173CONFIG_GENERIC_IRQ_PROBE=y
174CONFIG_ARCH_FLATMEM_ENABLE=y
175CONFIG_SELECT_MEMORY_MODEL=y
176CONFIG_FLATMEM_MANUAL=y
177# CONFIG_DISCONTIGMEM_MANUAL is not set
178# CONFIG_SPARSEMEM_MANUAL is not set
179CONFIG_FLATMEM=y
180CONFIG_FLAT_NODE_MEM_MAP=y
181# CONFIG_SPARSEMEM_STATIC is not set
182CONFIG_PREEMPT_NONE=y
183# CONFIG_PREEMPT_VOLUNTARY is not set
184# CONFIG_PREEMPT is not set
185
186#
187# Bus options (PCI, PCMCIA, EISA, ISA, TC)
188#
189CONFIG_MMU=y
190
191#
192# PCCARD (PCMCIA/CardBus) support
193#
194CONFIG_PCCARD=m
195# CONFIG_PCMCIA_DEBUG is not set
196CONFIG_PCMCIA=m
197CONFIG_PCMCIA_LOAD_CIS=y
198CONFIG_PCMCIA_IOCTL=y
199
200#
201# PC-card bridges
202#
203# CONFIG_TCIC is not set
204CONFIG_PCMCIA_AU1X00=m
205
206#
207# PCI Hotplug Support
208#
209
210#
211# Executable file formats
212#
213CONFIG_BINFMT_ELF=y
214# CONFIG_BINFMT_MISC is not set
215CONFIG_TRAD_SIGNALS=y
216# CONFIG_PM is not set
217
218#
219# Networking
220#
221CONFIG_NET=y
222
223#
224# Networking options
225#
226CONFIG_PACKET=y
227# CONFIG_PACKET_MMAP is not set
228CONFIG_UNIX=y
229CONFIG_XFRM=y
230CONFIG_XFRM_USER=m
231CONFIG_NET_KEY=y
232CONFIG_INET=y
233CONFIG_IP_MULTICAST=y
234# CONFIG_IP_ADVANCED_ROUTER is not set
235CONFIG_IP_FIB_HASH=y
236# CONFIG_IP_PNP is not set
237# CONFIG_NET_IPIP is not set
238# CONFIG_NET_IPGRE is not set
239# CONFIG_IP_MROUTE is not set
240# CONFIG_ARPD is not set
241# CONFIG_SYN_COOKIES is not set
242# CONFIG_INET_AH is not set
243# CONFIG_INET_ESP is not set
244# CONFIG_INET_IPCOMP is not set
245CONFIG_INET_TUNNEL=m
246CONFIG_INET_DIAG=y
247CONFIG_INET_TCP_DIAG=y
248# CONFIG_TCP_CONG_ADVANCED is not set
249CONFIG_TCP_CONG_BIC=y
250
251#
252# IP: Virtual Server Configuration
253#
254# CONFIG_IP_VS is not set
255# CONFIG_IPV6 is not set
256CONFIG_NETFILTER=y
257# CONFIG_NETFILTER_DEBUG is not set
258# CONFIG_NETFILTER_NETLINK is not set
259
260#
261# IP: Netfilter Configuration
262#
263# CONFIG_IP_NF_CONNTRACK is not set
264CONFIG_IP_NF_PPTP=m
265# CONFIG_IP_NF_QUEUE is not set
266# CONFIG_IP_NF_IPTABLES is not set
267# CONFIG_IP_NF_ARPTABLES is not set
268
269#
270# DCCP Configuration (EXPERIMENTAL)
271#
272# CONFIG_IP_DCCP is not set
273
274#
275# SCTP Configuration (EXPERIMENTAL)
276#
277# CONFIG_IP_SCTP is not set
278# CONFIG_ATM is not set
279# CONFIG_BRIDGE is not set
280# CONFIG_VLAN_8021Q is not set
281# CONFIG_DECNET is not set
282# CONFIG_LLC2 is not set
283# CONFIG_IPX is not set
284# CONFIG_ATALK is not set
285# CONFIG_X25 is not set
286# CONFIG_LAPB is not set
287# CONFIG_NET_DIVERT is not set
288# CONFIG_ECONET is not set
289# CONFIG_WAN_ROUTER is not set
290# CONFIG_NET_SCHED is not set
291# CONFIG_NET_CLS_ROUTE is not set
292
293#
294# Network testing
295#
296# CONFIG_NET_PKTGEN is not set
297# CONFIG_HAMRADIO is not set
298# CONFIG_IRDA is not set
299# CONFIG_BT is not set
300# CONFIG_IEEE80211 is not set
301
302#
303# Device Drivers
304#
305
306#
307# Generic Driver Options
308#
309CONFIG_STANDALONE=y
310CONFIG_PREVENT_FIRMWARE_BUILD=y
311CONFIG_FW_LOADER=y
312
313#
314# Connector - unified userspace <-> kernelspace linker
315#
316# CONFIG_CONNECTOR is not set
317
318#
319# Memory Technology Devices (MTD)
320#
321CONFIG_MTD=y
322# CONFIG_MTD_DEBUG is not set
323# CONFIG_MTD_CONCAT is not set
324CONFIG_MTD_PARTITIONS=y
325# CONFIG_MTD_REDBOOT_PARTS is not set
326# CONFIG_MTD_CMDLINE_PARTS is not set
327
328#
329# User Modules And Translation Layers
330#
331CONFIG_MTD_CHAR=y
332CONFIG_MTD_BLOCK=y
333# CONFIG_FTL is not set
334# CONFIG_NFTL is not set
335# CONFIG_INFTL is not set
336
337#
338# RAM/ROM/Flash chip drivers
339#
340CONFIG_MTD_CFI=y
341# CONFIG_MTD_JEDECPROBE is not set
342CONFIG_MTD_GEN_PROBE=y
343# CONFIG_MTD_CFI_ADV_OPTIONS is not set
344CONFIG_MTD_MAP_BANK_WIDTH_1=y
345CONFIG_MTD_MAP_BANK_WIDTH_2=y
346CONFIG_MTD_MAP_BANK_WIDTH_4=y
347# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
348# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
349# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
350CONFIG_MTD_CFI_I1=y
351CONFIG_MTD_CFI_I2=y
352# CONFIG_MTD_CFI_I4 is not set
353# CONFIG_MTD_CFI_I8 is not set
354# CONFIG_MTD_CFI_INTELEXT is not set
355CONFIG_MTD_CFI_AMDSTD=y
356CONFIG_MTD_CFI_AMDSTD_RETRY=0
357# CONFIG_MTD_CFI_STAA is not set
358CONFIG_MTD_CFI_UTIL=y
359# CONFIG_MTD_RAM is not set
360# CONFIG_MTD_ROM is not set
361# CONFIG_MTD_ABSENT is not set
362
363#
364# Mapping drivers for chip access
365#
366# CONFIG_MTD_COMPLEX_MAPPINGS is not set
367# CONFIG_MTD_PHYSMAP is not set
368CONFIG_MTD_ALCHEMY=y
369# CONFIG_MTD_PLATRAM is not set
370
371#
372# Self-contained MTD device drivers
373#
374# CONFIG_MTD_SLRAM is not set
375# CONFIG_MTD_PHRAM is not set
376# CONFIG_MTD_MTDRAM is not set
377# CONFIG_MTD_BLKMTD is not set
378# CONFIG_MTD_BLOCK2MTD is not set
379
380#
381# Disk-On-Chip Device Drivers
382#
383# CONFIG_MTD_DOC2000 is not set
384# CONFIG_MTD_DOC2001 is not set
385# CONFIG_MTD_DOC2001PLUS is not set
386
387#
388# NAND Flash Device Drivers
389#
390CONFIG_MTD_NAND=y
391# CONFIG_MTD_NAND_VERIFY_WRITE is not set
392CONFIG_MTD_NAND_IDS=y
393# CONFIG_MTD_NAND_AU1550 is not set
394# CONFIG_MTD_NAND_DISKONCHIP is not set
395# CONFIG_MTD_NAND_NANDSIM is not set
396
397#
398# Parallel port support
399#
400# CONFIG_PARPORT is not set
401
402#
403# Plug and Play support
404#
405
406#
407# Block devices
408#
409# CONFIG_BLK_DEV_COW_COMMON is not set
410CONFIG_BLK_DEV_LOOP=y
411# CONFIG_BLK_DEV_CRYPTOLOOP is not set
412# CONFIG_BLK_DEV_NBD is not set
413CONFIG_BLK_DEV_RAM=y
414CONFIG_BLK_DEV_RAM_COUNT=16
415CONFIG_BLK_DEV_RAM_SIZE=4096
416# CONFIG_BLK_DEV_INITRD is not set
417# CONFIG_LBD is not set
418# CONFIG_CDROM_PKTCDVD is not set
419
420#
421# IO Schedulers
422#
423CONFIG_IOSCHED_NOOP=y
424CONFIG_IOSCHED_AS=y
425CONFIG_IOSCHED_DEADLINE=y
426CONFIG_IOSCHED_CFQ=y
427# CONFIG_ATA_OVER_ETH is not set
428
429#
430# ATA/ATAPI/MFM/RLL support
431#
432CONFIG_IDE=y
433CONFIG_BLK_DEV_IDE=y
434
435#
436# Please see Documentation/ide.txt for help/info on IDE drives
437#
438# CONFIG_BLK_DEV_IDE_SATA is not set
439CONFIG_BLK_DEV_IDEDISK=y
440CONFIG_IDEDISK_MULTI_MODE=y
441CONFIG_BLK_DEV_IDECS=m
442# CONFIG_BLK_DEV_IDECD is not set
443# CONFIG_BLK_DEV_IDETAPE is not set
444# CONFIG_BLK_DEV_IDEFLOPPY is not set
445# CONFIG_BLK_DEV_IDESCSI is not set
446# CONFIG_IDE_TASK_IOCTL is not set
447
448#
449# IDE chipset support/bugfixes
450#
451CONFIG_IDE_GENERIC=y
452CONFIG_BLK_DEV_IDE_AU1XXX=y
453CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA=y
454# CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA is not set
455# CONFIG_BLK_DEV_IDE_AU1XXX_BURSTABLE_ON is not set
456CONFIG_BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ=128
457# CONFIG_IDE_ARM is not set
458# CONFIG_BLK_DEV_IDEDMA is not set
459# CONFIG_IDEDMA_AUTO is not set
460# CONFIG_BLK_DEV_HD is not set
461
462#
463# SCSI device support
464#
465# CONFIG_RAID_ATTRS is not set
466CONFIG_SCSI=y
467CONFIG_SCSI_PROC_FS=y
468
469#
470# SCSI support type (disk, tape, CD-ROM)
471#
472CONFIG_BLK_DEV_SD=y
473# CONFIG_CHR_DEV_ST is not set
474# CONFIG_CHR_DEV_OSST is not set
475CONFIG_BLK_DEV_SR=y
476# CONFIG_BLK_DEV_SR_VENDOR is not set
477CONFIG_CHR_DEV_SG=y
478# CONFIG_CHR_DEV_SCH is not set
479
480#
481# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
482#
483CONFIG_SCSI_MULTI_LUN=y
484# CONFIG_SCSI_CONSTANTS is not set
485# CONFIG_SCSI_LOGGING is not set
486
487#
488# SCSI Transport Attributes
489#
490# CONFIG_SCSI_SPI_ATTRS is not set
491# CONFIG_SCSI_FC_ATTRS is not set
492# CONFIG_SCSI_ISCSI_ATTRS is not set
493# CONFIG_SCSI_SAS_ATTRS is not set
494
495#
496# SCSI low-level drivers
497#
498# CONFIG_SCSI_SATA is not set
499# CONFIG_SCSI_DEBUG is not set
500
501#
502# PCMCIA SCSI adapter support
503#
504# CONFIG_PCMCIA_AHA152X is not set
505# CONFIG_PCMCIA_FDOMAIN is not set
506# CONFIG_PCMCIA_NINJA_SCSI is not set
507# CONFIG_PCMCIA_QLOGIC is not set
508# CONFIG_PCMCIA_SYM53C500 is not set
509
510#
511# Multi-device support (RAID and LVM)
512#
513# CONFIG_MD is not set
514
515#
516# Fusion MPT device support
517#
518# CONFIG_FUSION is not set
519
520#
521# IEEE 1394 (FireWire) support
522#
523
524#
525# I2O device support
526#
527
528#
529# Network device support
530#
531CONFIG_NETDEVICES=y
532# CONFIG_DUMMY is not set
533# CONFIG_BONDING is not set
534# CONFIG_EQUALIZER is not set
535# CONFIG_TUN is not set
536
537#
538# PHY device support
539#
540# CONFIG_PHYLIB is not set
541
542#
543# Ethernet (10 or 100Mbit)
544#
545CONFIG_NET_ETHERNET=y
546CONFIG_MII=m
547# CONFIG_MIPS_AU1X00_ENET is not set
548
549#
550# Ethernet (1000 Mbit)
551#
552
553#
554# Ethernet (10000 Mbit)
555#
556
557#
558# Token Ring devices
559#
560
561#
562# Wireless LAN (non-hamradio)
563#
564# CONFIG_NET_RADIO is not set
565
566#
567# PCMCIA network device support
568#
569# CONFIG_NET_PCMCIA is not set
570
571#
572# Wan interfaces
573#
574# CONFIG_WAN is not set
575# CONFIG_PPP is not set
576# CONFIG_SLIP is not set
577# CONFIG_SHAPER is not set
578# CONFIG_NETCONSOLE is not set
579# CONFIG_NETPOLL is not set
580# CONFIG_NET_POLL_CONTROLLER is not set
581
582#
583# ISDN subsystem
584#
585# CONFIG_ISDN is not set
586
587#
588# Telephony Support
589#
590# CONFIG_PHONE is not set
591
592#
593# Input device support
594#
595CONFIG_INPUT=y
596
597#
598# Userland interfaces
599#
600CONFIG_INPUT_MOUSEDEV=y
601CONFIG_INPUT_MOUSEDEV_PSAUX=y
602CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
603CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
604# CONFIG_INPUT_JOYDEV is not set
605# CONFIG_INPUT_TSDEV is not set
606CONFIG_INPUT_EVDEV=y
607# CONFIG_INPUT_EVBUG is not set
608
609#
610# Input Device Drivers
611#
612# CONFIG_INPUT_KEYBOARD is not set
613# CONFIG_INPUT_MOUSE is not set
614# CONFIG_INPUT_JOYSTICK is not set
615# CONFIG_INPUT_TOUCHSCREEN is not set
616# CONFIG_INPUT_MISC is not set
617
618#
619# Hardware I/O ports
620#
621CONFIG_SERIO=y
622# CONFIG_SERIO_I8042 is not set
623CONFIG_SERIO_SERPORT=y
624# CONFIG_SERIO_LIBPS2 is not set
625CONFIG_SERIO_RAW=y
626# CONFIG_GAMEPORT is not set
627
628#
629# Character devices
630#
631CONFIG_VT=y
632CONFIG_VT_CONSOLE=y
633CONFIG_HW_CONSOLE=y
634# CONFIG_SERIAL_NONSTANDARD is not set
635# CONFIG_AU1X00_GPIO is not set
636# CONFIG_TS_AU1X00_ADS7846 is not set
637
638#
639# Serial drivers
640#
641# CONFIG_SERIAL_8250 is not set
642
643#
644# Non-8250 serial port support
645#
646CONFIG_SERIAL_AU1X00=y
647CONFIG_SERIAL_AU1X00_CONSOLE=y
648CONFIG_SERIAL_CORE=y
649CONFIG_SERIAL_CORE_CONSOLE=y
650CONFIG_UNIX98_PTYS=y
651CONFIG_LEGACY_PTYS=y
652CONFIG_LEGACY_PTY_COUNT=256
653
654#
655# IPMI
656#
657# CONFIG_IPMI_HANDLER is not set
658
659#
660# Watchdog Cards
661#
662# CONFIG_WATCHDOG is not set
663# CONFIG_RTC is not set
664# CONFIG_GEN_RTC is not set
665# CONFIG_DTLK is not set
666# CONFIG_R3964 is not set
667
668#
669# Ftape, the floppy tape device driver
670#
671
672#
673# PCMCIA character devices
674#
675# CONFIG_SYNCLINK_CS is not set
676# CONFIG_RAW_DRIVER is not set
677
678#
679# TPM devices
680#
681
682#
683# I2C support
684#
685# CONFIG_I2C is not set
686
687#
688# Dallas's 1-wire bus
689#
690# CONFIG_W1 is not set
691
692#
693# Hardware Monitoring support
694#
695# CONFIG_HWMON is not set
696# CONFIG_HWMON_VID is not set
697
698#
699# Misc devices
700#
701
702#
703# Multimedia Capabilities Port drivers
704#
705
706#
707# Multimedia devices
708#
709# CONFIG_VIDEO_DEV is not set
710
711#
712# Digital Video Broadcasting Devices
713#
714# CONFIG_DVB is not set
715
716#
717# Graphics support
718#
719CONFIG_FB=y
720CONFIG_FB_CFB_FILLRECT=y
721CONFIG_FB_CFB_COPYAREA=y
722CONFIG_FB_CFB_IMAGEBLIT=y
723CONFIG_FB_SOFT_CURSOR=y
724# CONFIG_FB_MACMODES is not set
725# CONFIG_FB_MODE_HELPERS is not set
726# CONFIG_FB_TILEBLITTING is not set
727CONFIG_FB_AU1200=y
728# CONFIG_FB_S1D13XXX is not set
729# CONFIG_FB_VIRTUAL is not set
730
731#
732# Console display driver support
733#
734CONFIG_VGA_CONSOLE=y
735CONFIG_DUMMY_CONSOLE=y
736# CONFIG_FRAMEBUFFER_CONSOLE is not set
737
738#
739# Logo configuration
740#
741CONFIG_LOGO=y
742CONFIG_LOGO_LINUX_MONO=y
743CONFIG_LOGO_LINUX_VGA16=y
744CONFIG_LOGO_LINUX_CLUT224=y
745# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
746
747#
748# Sound
749#
750# CONFIG_SOUND is not set
751
752#
753# USB support
754#
755CONFIG_USB_ARCH_HAS_HCD=y
756CONFIG_USB_ARCH_HAS_OHCI=y
757# CONFIG_USB is not set
758
759#
760# USB Gadget Support
761#
762CONFIG_USB_GADGET=m
763# CONFIG_USB_GADGET_DEBUG_FILES is not set
764# CONFIG_USB_GADGET_NET2280 is not set
765# CONFIG_USB_GADGET_PXA2XX is not set
766# CONFIG_USB_GADGET_GOKU is not set
767# CONFIG_USB_GADGET_LH7A40X is not set
768# CONFIG_USB_GADGET_OMAP is not set
769# CONFIG_USB_GADGET_DUMMY_HCD is not set
770# CONFIG_USB_GADGET_DUALSPEED is not set
771
772#
773# MMC/SD Card support
774#
775CONFIG_MMC=y
776# CONFIG_MMC_DEBUG is not set
777CONFIG_MMC_BLOCK=y
778CONFIG_MMC_AU1X=y
779
780#
781# InfiniBand support
782#
783
784#
785# SN Devices
786#
787
788#
789# File systems
790#
791CONFIG_EXT2_FS=y
792CONFIG_EXT2_FS_XATTR=y
793CONFIG_EXT2_FS_POSIX_ACL=y
794# CONFIG_EXT2_FS_SECURITY is not set
795# CONFIG_EXT2_FS_XIP is not set
796CONFIG_EXT3_FS=y
797CONFIG_EXT3_FS_XATTR=y
798CONFIG_EXT3_FS_POSIX_ACL=y
799CONFIG_EXT3_FS_SECURITY=y
800CONFIG_JBD=y
801# CONFIG_JBD_DEBUG is not set
802CONFIG_FS_MBCACHE=y
803# CONFIG_REISERFS_FS is not set
804CONFIG_JFS_FS=y
805# CONFIG_JFS_POSIX_ACL is not set
806# CONFIG_JFS_SECURITY is not set
807# CONFIG_JFS_DEBUG is not set
808# CONFIG_JFS_STATISTICS is not set
809CONFIG_FS_POSIX_ACL=y
810# CONFIG_XFS_FS is not set
811# CONFIG_MINIX_FS is not set
812# CONFIG_ROMFS_FS is not set
813CONFIG_INOTIFY=y
814# CONFIG_QUOTA is not set
815CONFIG_DNOTIFY=y
816# CONFIG_AUTOFS_FS is not set
817# CONFIG_AUTOFS4_FS is not set
818# CONFIG_FUSE_FS is not set
819
820#
821# CD-ROM/DVD Filesystems
822#
823CONFIG_ISO9660_FS=m
824CONFIG_JOLIET=y
825CONFIG_ZISOFS=y
826CONFIG_ZISOFS_FS=m
827CONFIG_UDF_FS=m
828CONFIG_UDF_NLS=y
829
830#
831# DOS/FAT/NT Filesystems
832#
833CONFIG_FAT_FS=m
834CONFIG_MSDOS_FS=m
835CONFIG_VFAT_FS=m
836CONFIG_FAT_DEFAULT_CODEPAGE=437
837CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
838# CONFIG_NTFS_FS is not set
839
840#
841# Pseudo filesystems
842#
843CONFIG_PROC_FS=y
844CONFIG_PROC_KCORE=y
845CONFIG_SYSFS=y
846CONFIG_TMPFS=y
847# CONFIG_HUGETLB_PAGE is not set
848CONFIG_RAMFS=y
849# CONFIG_RELAYFS_FS is not set
850
851#
852# Miscellaneous filesystems
853#
854# CONFIG_ADFS_FS is not set
855# CONFIG_AFFS_FS is not set
856# CONFIG_HFS_FS is not set
857# CONFIG_HFSPLUS_FS is not set
858# CONFIG_BEFS_FS is not set
859# CONFIG_BFS_FS is not set
860# CONFIG_EFS_FS is not set
861# CONFIG_JFFS_FS is not set
862CONFIG_JFFS2_FS=y
863CONFIG_JFFS2_FS_DEBUG=0
864CONFIG_JFFS2_FS_WRITEBUFFER=y
865# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
866CONFIG_JFFS2_ZLIB=y
867CONFIG_JFFS2_RTIME=y
868# CONFIG_JFFS2_RUBIN is not set
869CONFIG_CRAMFS=m
870# CONFIG_VXFS_FS is not set
871# CONFIG_HPFS_FS is not set
872# CONFIG_QNX4FS_FS is not set
873# CONFIG_SYSV_FS is not set
874# CONFIG_UFS_FS is not set
875
876#
877# Network File Systems
878#
879CONFIG_NFS_FS=y
880CONFIG_NFS_V3=y
881# CONFIG_NFS_V3_ACL is not set
882# CONFIG_NFS_V4 is not set
883# CONFIG_NFS_DIRECTIO is not set
884# CONFIG_NFSD is not set
885CONFIG_LOCKD=y
886CONFIG_LOCKD_V4=y
887CONFIG_NFS_COMMON=y
888CONFIG_SUNRPC=y
889# CONFIG_RPCSEC_GSS_KRB5 is not set
890# CONFIG_RPCSEC_GSS_SPKM3 is not set
891CONFIG_SMB_FS=y
892# CONFIG_SMB_NLS_DEFAULT is not set
893# CONFIG_CIFS is not set
894# CONFIG_NCP_FS is not set
895# CONFIG_CODA_FS is not set
896# CONFIG_AFS_FS is not set
897# CONFIG_9P_FS is not set
898
899#
900# Partition Types
901#
902# CONFIG_PARTITION_ADVANCED is not set
903CONFIG_MSDOS_PARTITION=y
904
905#
906# Native Language Support
907#
908CONFIG_NLS=y
909CONFIG_NLS_DEFAULT="iso8859-1"
910CONFIG_NLS_CODEPAGE_437=m
911CONFIG_NLS_CODEPAGE_737=m
912CONFIG_NLS_CODEPAGE_775=m
913CONFIG_NLS_CODEPAGE_850=m
914CONFIG_NLS_CODEPAGE_852=m
915CONFIG_NLS_CODEPAGE_855=m
916CONFIG_NLS_CODEPAGE_857=m
917CONFIG_NLS_CODEPAGE_860=m
918CONFIG_NLS_CODEPAGE_861=m
919CONFIG_NLS_CODEPAGE_862=m
920CONFIG_NLS_CODEPAGE_863=m
921CONFIG_NLS_CODEPAGE_864=m
922CONFIG_NLS_CODEPAGE_865=m
923CONFIG_NLS_CODEPAGE_866=m
924CONFIG_NLS_CODEPAGE_869=m
925CONFIG_NLS_CODEPAGE_936=m
926CONFIG_NLS_CODEPAGE_950=m
927CONFIG_NLS_CODEPAGE_932=m
928CONFIG_NLS_CODEPAGE_949=m
929CONFIG_NLS_CODEPAGE_874=m
930CONFIG_NLS_ISO8859_8=m
931CONFIG_NLS_CODEPAGE_1250=m
932CONFIG_NLS_CODEPAGE_1251=m
933CONFIG_NLS_ASCII=m
934CONFIG_NLS_ISO8859_1=m
935CONFIG_NLS_ISO8859_2=m
936CONFIG_NLS_ISO8859_3=m
937CONFIG_NLS_ISO8859_4=m
938CONFIG_NLS_ISO8859_5=m
939CONFIG_NLS_ISO8859_6=m
940CONFIG_NLS_ISO8859_7=m
941CONFIG_NLS_ISO8859_9=m
942CONFIG_NLS_ISO8859_13=m
943CONFIG_NLS_ISO8859_14=m
944CONFIG_NLS_ISO8859_15=m
945CONFIG_NLS_KOI8_R=m
946CONFIG_NLS_KOI8_U=m
947CONFIG_NLS_UTF8=m
948
949#
950# Profiling support
951#
952# CONFIG_PROFILING is not set
953
954#
955# Kernel hacking
956#
957# CONFIG_PRINTK_TIME is not set
958# CONFIG_DEBUG_KERNEL is not set
959CONFIG_LOG_BUF_SHIFT=14
960CONFIG_CROSSCOMPILE=y
961CONFIG_CMDLINE="mem=48M"
962
963#
964# Security options
965#
966CONFIG_KEYS=y
967CONFIG_KEYS_DEBUG_PROC_KEYS=y
968# CONFIG_SECURITY is not set
969
970#
971# Cryptographic options
972#
973# CONFIG_CRYPTO is not set
974
975#
976# Hardware crypto devices
977#
978
979#
980# Library routines
981#
982CONFIG_CRC_CCITT=y
983# CONFIG_CRC16 is not set
984CONFIG_CRC32=y
985CONFIG_LIBCRC32C=y
986CONFIG_ZLIB_INFLATE=y
987CONFIG_ZLIB_DEFLATE=y
diff --git a/arch/mips/configs/db1500_defconfig b/arch/mips/configs/db1500_defconfig
index fed6f2fab48b..1c2784dee697 100644
--- a/arch/mips/configs/db1500_defconfig
+++ b/arch/mips/configs/db1500_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:01 2005 4# Thu Oct 20 22:25:36 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14
29CONFIG_HOTPLUG=y 27CONFIG_HOTPLUG=y
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,63 +59,81 @@ CONFIG_KMOD=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60# CONFIG_MACH_VR41XX is not set 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_TOSHIBA_JMR3927 is not set 64# CONFIG_MIPS_PB1000 is not set
65# CONFIG_MIPS_PB1100 is not set
66# CONFIG_MIPS_PB1500 is not set
67# CONFIG_MIPS_PB1550 is not set
68# CONFIG_MIPS_PB1200 is not set
69# CONFIG_MIPS_DB1000 is not set
70# CONFIG_MIPS_DB1100 is not set
71CONFIG_MIPS_DB1500=y
72# CONFIG_MIPS_DB1550 is not set
73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
62# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
63# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
64# CONFIG_MIPS_EV64120 is not set 77# CONFIG_MIPS_EV64120 is not set
65# CONFIG_MIPS_EV96100 is not set 78# CONFIG_MIPS_EV96100 is not set
66# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
67# CONFIG_LASAT is not set
68# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
69# CONFIG_MIPS_ATLAS is not set 83# CONFIG_MIPS_ATLAS is not set
70# CONFIG_MIPS_MALTA is not set 84# CONFIG_MIPS_MALTA is not set
71# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
72# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
73# CONFIG_MOMENCO_OCELOT_G is not set
74# CONFIG_MOMENCO_OCELOT_C is not set
75# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
76# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
77# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
78# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
79# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
80# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
81# CONFIG_NEC_OSPREY is not set 98# CONFIG_MACH_VR41XX is not set
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
82# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
83CONFIG_SOC_AU1X00=y 102# CONFIG_SGI_IP27 is not set
84# CONFIG_SOC_AU1000 is not set 103# CONFIG_SGI_IP32 is not set
85# CONFIG_SOC_AU1100 is not set 104# CONFIG_SIBYTE_BIGSUR is not set
86CONFIG_SOC_AU1500=y 105# CONFIG_SIBYTE_SWARM is not set
87# CONFIG_SOC_AU1550 is not set 106# CONFIG_SIBYTE_SENTOSA is not set
88# CONFIG_MIPS_PB1000 is not set 107# CONFIG_SIBYTE_RHONE is not set
89# CONFIG_MIPS_PB1100 is not set 108# CONFIG_SIBYTE_CARMEL is not set
90# CONFIG_MIPS_PB1500 is not set 109# CONFIG_SIBYTE_PTSWARM is not set
91# CONFIG_MIPS_PB1550 is not set 110# CONFIG_SIBYTE_LITTLESUR is not set
92# CONFIG_MIPS_DB1000 is not set 111# CONFIG_SIBYTE_CRHINE is not set
93# CONFIG_MIPS_DB1100 is not set 112# CONFIG_SIBYTE_CRHONE is not set
94CONFIG_MIPS_DB1500=y
95# CONFIG_MIPS_DB1550 is not set
96# CONFIG_MIPS_BOSPORUS is not set
97# CONFIG_MIPS_MIRAGE is not set
98# CONFIG_MIPS_XXS1500 is not set
99# CONFIG_MIPS_MTX1 is not set
100# CONFIG_SIBYTE_SB1xxx_SOC is not set
101# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
102# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
103CONFIG_RWSEM_GENERIC_SPINLOCK=y 117CONFIG_RWSEM_GENERIC_SPINLOCK=y
104CONFIG_GENERIC_CALIBRATE_DELAY=y 118CONFIG_GENERIC_CALIBRATE_DELAY=y
105CONFIG_HAVE_DEC_LOCK=y 119CONFIG_DMA_NONCOHERENT=y
106CONFIG_DMA_COHERENT=y 120CONFIG_DMA_NEED_PCI_MAP_STATE=y
107CONFIG_MIPS_DISABLE_OBSOLETE_IDE=y 121CONFIG_MIPS_DISABLE_OBSOLETE_IDE=y
122# CONFIG_CPU_BIG_ENDIAN is not set
108CONFIG_CPU_LITTLE_ENDIAN=y 123CONFIG_CPU_LITTLE_ENDIAN=y
124CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
125CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
126CONFIG_SOC_AU1500=y
127CONFIG_SOC_AU1X00=y
109CONFIG_MIPS_L1_CACHE_SHIFT=5 128CONFIG_MIPS_L1_CACHE_SHIFT=5
110 129
111# 130#
112# CPU selection 131# CPU selection
113# 132#
114CONFIG_CPU_MIPS32=y 133CONFIG_CPU_MIPS32_R1=y
115# CONFIG_CPU_MIPS64 is not set 134# CONFIG_CPU_MIPS32_R2 is not set
135# CONFIG_CPU_MIPS64_R1 is not set
136# CONFIG_CPU_MIPS64_R2 is not set
116# CONFIG_CPU_R3000 is not set 137# CONFIG_CPU_R3000 is not set
117# CONFIG_CPU_TX39XX is not set 138# CONFIG_CPU_TX39XX is not set
118# CONFIG_CPU_VR41XX is not set 139# CONFIG_CPU_VR41XX is not set
@@ -128,15 +149,39 @@ CONFIG_CPU_MIPS32=y
128# CONFIG_CPU_RM7000 is not set 149# CONFIG_CPU_RM7000 is not set
129# CONFIG_CPU_RM9000 is not set 150# CONFIG_CPU_RM9000 is not set
130# CONFIG_CPU_SB1 is not set 151# CONFIG_CPU_SB1 is not set
152CONFIG_SYS_HAS_CPU_MIPS32_R1=y
153CONFIG_CPU_MIPS32=y
154CONFIG_CPU_MIPSR1=y
155CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
156CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
157
158#
159# Kernel type
160#
161CONFIG_32BIT=y
162# CONFIG_64BIT is not set
131CONFIG_PAGE_SIZE_4KB=y 163CONFIG_PAGE_SIZE_4KB=y
132# CONFIG_PAGE_SIZE_8KB is not set 164# CONFIG_PAGE_SIZE_8KB is not set
133# CONFIG_PAGE_SIZE_16KB is not set 165# CONFIG_PAGE_SIZE_16KB is not set
134# CONFIG_PAGE_SIZE_64KB is not set 166# CONFIG_PAGE_SIZE_64KB is not set
135CONFIG_CPU_HAS_PREFETCH=y 167CONFIG_CPU_HAS_PREFETCH=y
168# CONFIG_MIPS_MT is not set
136CONFIG_64BIT_PHYS_ADDR=y 169CONFIG_64BIT_PHYS_ADDR=y
137# CONFIG_CPU_ADVANCED is not set 170# CONFIG_CPU_ADVANCED is not set
138CONFIG_CPU_HAS_LLSC=y 171CONFIG_CPU_HAS_LLSC=y
139CONFIG_CPU_HAS_SYNC=y 172CONFIG_CPU_HAS_SYNC=y
173CONFIG_GENERIC_HARDIRQS=y
174CONFIG_GENERIC_IRQ_PROBE=y
175CONFIG_ARCH_FLATMEM_ENABLE=y
176CONFIG_SELECT_MEMORY_MODEL=y
177CONFIG_FLATMEM_MANUAL=y
178# CONFIG_DISCONTIGMEM_MANUAL is not set
179# CONFIG_SPARSEMEM_MANUAL is not set
180CONFIG_FLATMEM=y
181CONFIG_FLAT_NODE_MEM_MAP=y
182# CONFIG_SPARSEMEM_STATIC is not set
183CONFIG_PREEMPT_NONE=y
184# CONFIG_PREEMPT_VOLUNTARY is not set
140# CONFIG_PREEMPT is not set 185# CONFIG_PREEMPT is not set
141 186
142# 187#
@@ -145,7 +190,6 @@ CONFIG_CPU_HAS_SYNC=y
145CONFIG_HW_HAS_PCI=y 190CONFIG_HW_HAS_PCI=y
146CONFIG_PCI=y 191CONFIG_PCI=y
147CONFIG_PCI_LEGACY_PROC=y 192CONFIG_PCI_LEGACY_PROC=y
148CONFIG_PCI_NAMES=y
149CONFIG_MMU=y 193CONFIG_MMU=y
150 194
151# 195#
@@ -154,6 +198,8 @@ CONFIG_MMU=y
154CONFIG_PCCARD=m 198CONFIG_PCCARD=m
155# CONFIG_PCMCIA_DEBUG is not set 199# CONFIG_PCMCIA_DEBUG is not set
156CONFIG_PCMCIA=m 200CONFIG_PCMCIA=m
201CONFIG_PCMCIA_LOAD_CIS=y
202CONFIG_PCMCIA_IOCTL=y
157CONFIG_CARDBUS=y 203CONFIG_CARDBUS=y
158 204
159# 205#
@@ -176,6 +222,100 @@ CONFIG_PCMCIA_AU1X00=m
176CONFIG_BINFMT_ELF=y 222CONFIG_BINFMT_ELF=y
177# CONFIG_BINFMT_MISC is not set 223# CONFIG_BINFMT_MISC is not set
178CONFIG_TRAD_SIGNALS=y 224CONFIG_TRAD_SIGNALS=y
225# CONFIG_PM is not set
226
227#
228# Networking
229#
230CONFIG_NET=y
231
232#
233# Networking options
234#
235CONFIG_PACKET=y
236# CONFIG_PACKET_MMAP is not set
237CONFIG_UNIX=y
238CONFIG_XFRM=y
239CONFIG_XFRM_USER=m
240CONFIG_NET_KEY=y
241CONFIG_INET=y
242CONFIG_IP_MULTICAST=y
243# CONFIG_IP_ADVANCED_ROUTER is not set
244CONFIG_IP_FIB_HASH=y
245CONFIG_IP_PNP=y
246# CONFIG_IP_PNP_DHCP is not set
247CONFIG_IP_PNP_BOOTP=y
248# CONFIG_IP_PNP_RARP is not set
249# CONFIG_NET_IPIP is not set
250# CONFIG_NET_IPGRE is not set
251# CONFIG_IP_MROUTE is not set
252# CONFIG_ARPD is not set
253# CONFIG_SYN_COOKIES is not set
254# CONFIG_INET_AH is not set
255# CONFIG_INET_ESP is not set
256# CONFIG_INET_IPCOMP is not set
257CONFIG_INET_TUNNEL=m
258CONFIG_INET_DIAG=y
259CONFIG_INET_TCP_DIAG=y
260# CONFIG_TCP_CONG_ADVANCED is not set
261CONFIG_TCP_CONG_BIC=y
262
263#
264# IP: Virtual Server Configuration
265#
266# CONFIG_IP_VS is not set
267# CONFIG_IPV6 is not set
268CONFIG_NETFILTER=y
269# CONFIG_NETFILTER_DEBUG is not set
270CONFIG_NETFILTER_NETLINK=m
271CONFIG_NETFILTER_NETLINK_QUEUE=m
272CONFIG_NETFILTER_NETLINK_LOG=m
273
274#
275# IP: Netfilter Configuration
276#
277# CONFIG_IP_NF_CONNTRACK is not set
278CONFIG_IP_NF_PPTP=m
279# CONFIG_IP_NF_QUEUE is not set
280# CONFIG_IP_NF_IPTABLES is not set
281# CONFIG_IP_NF_ARPTABLES is not set
282
283#
284# DCCP Configuration (EXPERIMENTAL)
285#
286# CONFIG_IP_DCCP is not set
287
288#
289# SCTP Configuration (EXPERIMENTAL)
290#
291# CONFIG_IP_SCTP is not set
292# CONFIG_ATM is not set
293# CONFIG_BRIDGE is not set
294# CONFIG_VLAN_8021Q is not set
295# CONFIG_DECNET is not set
296# CONFIG_LLC2 is not set
297# CONFIG_IPX is not set
298# CONFIG_ATALK is not set
299# CONFIG_X25 is not set
300# CONFIG_LAPB is not set
301# CONFIG_NET_DIVERT is not set
302# CONFIG_ECONET is not set
303# CONFIG_WAN_ROUTER is not set
304# CONFIG_NET_SCHED is not set
305# CONFIG_NET_CLS_ROUTE is not set
306
307#
308# Network testing
309#
310# CONFIG_NET_PKTGEN is not set
311# CONFIG_HAMRADIO is not set
312# CONFIG_IRDA is not set
313# CONFIG_BT is not set
314CONFIG_IEEE80211=m
315# CONFIG_IEEE80211_DEBUG is not set
316CONFIG_IEEE80211_CRYPT_WEP=m
317CONFIG_IEEE80211_CRYPT_CCMP=m
318CONFIG_IEEE80211_CRYPT_TKIP=m
179 319
180# 320#
181# Device Drivers 321# Device Drivers
@@ -186,15 +326,20 @@ CONFIG_TRAD_SIGNALS=y
186# 326#
187CONFIG_STANDALONE=y 327CONFIG_STANDALONE=y
188CONFIG_PREVENT_FIRMWARE_BUILD=y 328CONFIG_PREVENT_FIRMWARE_BUILD=y
189# CONFIG_FW_LOADER is not set 329CONFIG_FW_LOADER=m
330
331#
332# Connector - unified userspace <-> kernelspace linker
333#
334CONFIG_CONNECTOR=m
190 335
191# 336#
192# Memory Technology Devices (MTD) 337# Memory Technology Devices (MTD)
193# 338#
194CONFIG_MTD=y 339CONFIG_MTD=y
195# CONFIG_MTD_DEBUG is not set 340# CONFIG_MTD_DEBUG is not set
196CONFIG_MTD_PARTITIONS=y
197# CONFIG_MTD_CONCAT is not set 341# CONFIG_MTD_CONCAT is not set
342CONFIG_MTD_PARTITIONS=y
198# CONFIG_MTD_REDBOOT_PARTS is not set 343# CONFIG_MTD_REDBOOT_PARTS is not set
199# CONFIG_MTD_CMDLINE_PARTS is not set 344# CONFIG_MTD_CMDLINE_PARTS is not set
200 345
@@ -232,16 +377,14 @@ CONFIG_MTD_CFI_UTIL=y
232# CONFIG_MTD_RAM is not set 377# CONFIG_MTD_RAM is not set
233# CONFIG_MTD_ROM is not set 378# CONFIG_MTD_ROM is not set
234# CONFIG_MTD_ABSENT is not set 379# CONFIG_MTD_ABSENT is not set
235# CONFIG_MTD_XIP is not set
236 380
237# 381#
238# Mapping drivers for chip access 382# Mapping drivers for chip access
239# 383#
240# CONFIG_MTD_COMPLEX_MAPPINGS is not set 384# CONFIG_MTD_COMPLEX_MAPPINGS is not set
241# CONFIG_MTD_PHYSMAP is not set 385# CONFIG_MTD_PHYSMAP is not set
242CONFIG_MTD_DB1X00=y 386CONFIG_MTD_ALCHEMY=y
243CONFIG_MTD_DB1X00_BOOT=y 387# CONFIG_MTD_PLATRAM is not set
244CONFIG_MTD_DB1X00_USER=y
245 388
246# 389#
247# Self-contained MTD device drivers 390# Self-contained MTD device drivers
@@ -277,7 +420,6 @@ CONFIG_MTD_DB1X00_USER=y
277# 420#
278# Block devices 421# Block devices
279# 422#
280# CONFIG_BLK_DEV_FD is not set
281# CONFIG_BLK_CPQ_DA is not set 423# CONFIG_BLK_CPQ_DA is not set
282# CONFIG_BLK_CPQ_CISS_DA is not set 424# CONFIG_BLK_CPQ_CISS_DA is not set
283# CONFIG_BLK_DEV_DAC960 is not set 425# CONFIG_BLK_DEV_DAC960 is not set
@@ -290,7 +432,6 @@ CONFIG_BLK_DEV_LOOP=y
290# CONFIG_BLK_DEV_UB is not set 432# CONFIG_BLK_DEV_UB is not set
291# CONFIG_BLK_DEV_RAM is not set 433# CONFIG_BLK_DEV_RAM is not set
292CONFIG_BLK_DEV_RAM_COUNT=16 434CONFIG_BLK_DEV_RAM_COUNT=16
293CONFIG_INITRAMFS_SOURCE=""
294# CONFIG_LBD is not set 435# CONFIG_LBD is not set
295CONFIG_CDROM_PKTCDVD=m 436CONFIG_CDROM_PKTCDVD=m
296CONFIG_CDROM_PKTCDVD_BUFFERS=8 437CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -336,6 +477,7 @@ CONFIG_BLK_DEV_IDECS=m
336# 477#
337# SCSI device support 478# SCSI device support
338# 479#
480CONFIG_RAID_ATTRS=m
339# CONFIG_SCSI is not set 481# CONFIG_SCSI is not set
340 482
341# 483#
@@ -346,6 +488,7 @@ CONFIG_BLK_DEV_IDECS=m
346# 488#
347# Fusion MPT device support 489# Fusion MPT device support
348# 490#
491# CONFIG_FUSION is not set
349 492
350# 493#
351# IEEE 1394 (FireWire) support 494# IEEE 1394 (FireWire) support
@@ -358,94 +501,13 @@ CONFIG_BLK_DEV_IDECS=m
358# CONFIG_I2O is not set 501# CONFIG_I2O is not set
359 502
360# 503#
361# Networking support 504# Network device support
362#
363CONFIG_NET=y
364
365#
366# Networking options
367#
368CONFIG_PACKET=y
369# CONFIG_PACKET_MMAP is not set
370CONFIG_NETLINK_DEV=y
371CONFIG_UNIX=y
372CONFIG_NET_KEY=y
373CONFIG_INET=y
374CONFIG_IP_MULTICAST=y
375# CONFIG_IP_ADVANCED_ROUTER is not set
376CONFIG_IP_PNP=y
377# CONFIG_IP_PNP_DHCP is not set
378CONFIG_IP_PNP_BOOTP=y
379# CONFIG_IP_PNP_RARP is not set
380# CONFIG_NET_IPIP is not set
381# CONFIG_NET_IPGRE is not set
382# CONFIG_IP_MROUTE is not set
383# CONFIG_ARPD is not set
384# CONFIG_SYN_COOKIES is not set
385# CONFIG_INET_AH is not set
386# CONFIG_INET_ESP is not set
387# CONFIG_INET_IPCOMP is not set
388CONFIG_INET_TUNNEL=m
389CONFIG_IP_TCPDIAG=m
390# CONFIG_IP_TCPDIAG_IPV6 is not set
391
392#
393# IP: Virtual Server Configuration
394# 505#
395# CONFIG_IP_VS is not set
396# CONFIG_IPV6 is not set
397CONFIG_NETFILTER=y
398# CONFIG_NETFILTER_DEBUG is not set
399
400#
401# IP: Netfilter Configuration
402#
403# CONFIG_IP_NF_CONNTRACK is not set
404CONFIG_IP_NF_CONNTRACK_MARK=y
405# CONFIG_IP_NF_QUEUE is not set
406# CONFIG_IP_NF_IPTABLES is not set
407# CONFIG_IP_NF_ARPTABLES is not set
408CONFIG_XFRM=y
409CONFIG_XFRM_USER=m
410
411#
412# SCTP Configuration (EXPERIMENTAL)
413#
414# CONFIG_IP_SCTP is not set
415# CONFIG_ATM is not set
416# CONFIG_BRIDGE is not set
417# CONFIG_VLAN_8021Q is not set
418# CONFIG_DECNET is not set
419# CONFIG_LLC2 is not set
420# CONFIG_IPX is not set
421# CONFIG_ATALK is not set
422# CONFIG_X25 is not set
423# CONFIG_LAPB is not set
424# CONFIG_NET_DIVERT is not set
425# CONFIG_ECONET is not set
426# CONFIG_WAN_ROUTER is not set
427
428#
429# QoS and/or fair queueing
430#
431# CONFIG_NET_SCHED is not set
432# CONFIG_NET_CLS_ROUTE is not set
433
434#
435# Network testing
436#
437# CONFIG_NET_PKTGEN is not set
438# CONFIG_NETPOLL is not set
439# CONFIG_NET_POLL_CONTROLLER is not set
440# CONFIG_HAMRADIO is not set
441# CONFIG_IRDA is not set
442# CONFIG_BT is not set
443CONFIG_NETDEVICES=y 506CONFIG_NETDEVICES=y
444# CONFIG_DUMMY is not set 507# CONFIG_DUMMY is not set
445# CONFIG_BONDING is not set 508# CONFIG_BONDING is not set
446# CONFIG_EQUALIZER is not set 509# CONFIG_EQUALIZER is not set
447# CONFIG_TUN is not set 510# CONFIG_TUN is not set
448# CONFIG_ETHERTAP is not set
449 511
450# 512#
451# ARCnet devices 513# ARCnet devices
@@ -453,6 +515,21 @@ CONFIG_NETDEVICES=y
453# CONFIG_ARCNET is not set 515# CONFIG_ARCNET is not set
454 516
455# 517#
518# PHY device support
519#
520CONFIG_PHYLIB=m
521CONFIG_PHYCONTROL=y
522
523#
524# MII PHY device drivers
525#
526CONFIG_MARVELL_PHY=m
527CONFIG_DAVICOM_PHY=m
528CONFIG_QSEMI_PHY=m
529CONFIG_LXT_PHY=m
530CONFIG_CICADA_PHY=m
531
532#
456# Ethernet (10 or 100Mbit) 533# Ethernet (10 or 100Mbit)
457# 534#
458CONFIG_NET_ETHERNET=y 535CONFIG_NET_ETHERNET=y
@@ -479,12 +556,16 @@ CONFIG_MIPS_AU1X00_ENET=y
479# CONFIG_HAMACHI is not set 556# CONFIG_HAMACHI is not set
480# CONFIG_YELLOWFIN is not set 557# CONFIG_YELLOWFIN is not set
481# CONFIG_R8169 is not set 558# CONFIG_R8169 is not set
559# CONFIG_SIS190 is not set
560# CONFIG_SKGE is not set
482# CONFIG_SK98LIN is not set 561# CONFIG_SK98LIN is not set
483# CONFIG_TIGON3 is not set 562# CONFIG_TIGON3 is not set
563# CONFIG_BNX2 is not set
484 564
485# 565#
486# Ethernet (10000 Mbit) 566# Ethernet (10000 Mbit)
487# 567#
568# CONFIG_CHELSIO_T1 is not set
488# CONFIG_IXGB is not set 569# CONFIG_IXGB is not set
489# CONFIG_S2IO is not set 570# CONFIG_S2IO is not set
490 571
@@ -497,6 +578,8 @@ CONFIG_MIPS_AU1X00_ENET=y
497# Wireless LAN (non-hamradio) 578# Wireless LAN (non-hamradio)
498# 579#
499# CONFIG_NET_RADIO is not set 580# CONFIG_NET_RADIO is not set
581# CONFIG_IPW_DEBUG is not set
582CONFIG_IPW2200=m
500 583
501# 584#
502# PCMCIA network device support 585# PCMCIA network device support
@@ -520,6 +603,8 @@ CONFIG_PPPOE=m
520# CONFIG_SLIP is not set 603# CONFIG_SLIP is not set
521# CONFIG_SHAPER is not set 604# CONFIG_SHAPER is not set
522# CONFIG_NETCONSOLE is not set 605# CONFIG_NETCONSOLE is not set
606# CONFIG_NETPOLL is not set
607# CONFIG_NET_POLL_CONTROLLER is not set
523 608
524# 609#
525# ISDN subsystem 610# ISDN subsystem
@@ -549,19 +634,6 @@ CONFIG_INPUT_EVDEV=y
549# CONFIG_INPUT_EVBUG is not set 634# CONFIG_INPUT_EVBUG is not set
550 635
551# 636#
552# Input I/O drivers
553#
554# CONFIG_GAMEPORT is not set
555CONFIG_SOUND_GAMEPORT=y
556CONFIG_SERIO=y
557# CONFIG_SERIO_I8042 is not set
558CONFIG_SERIO_SERPORT=y
559# CONFIG_SERIO_CT82C710 is not set
560# CONFIG_SERIO_PCIPS2 is not set
561# CONFIG_SERIO_LIBPS2 is not set
562CONFIG_SERIO_RAW=m
563
564#
565# Input Device Drivers 637# Input Device Drivers
566# 638#
567# CONFIG_INPUT_KEYBOARD is not set 639# CONFIG_INPUT_KEYBOARD is not set
@@ -571,6 +643,17 @@ CONFIG_SERIO_RAW=m
571# CONFIG_INPUT_MISC is not set 643# CONFIG_INPUT_MISC is not set
572 644
573# 645#
646# Hardware I/O ports
647#
648CONFIG_SERIO=y
649# CONFIG_SERIO_I8042 is not set
650CONFIG_SERIO_SERPORT=y
651# CONFIG_SERIO_PCIPS2 is not set
652# CONFIG_SERIO_LIBPS2 is not set
653CONFIG_SERIO_RAW=m
654# CONFIG_GAMEPORT is not set
655
656#
574# Character devices 657# Character devices
575# 658#
576# CONFIG_VT is not set 659# CONFIG_VT is not set
@@ -590,6 +673,7 @@ CONFIG_SERIAL_AU1X00=y
590CONFIG_SERIAL_AU1X00_CONSOLE=y 673CONFIG_SERIAL_AU1X00_CONSOLE=y
591CONFIG_SERIAL_CORE=y 674CONFIG_SERIAL_CORE=y
592CONFIG_SERIAL_CORE_CONSOLE=y 675CONFIG_SERIAL_CORE_CONSOLE=y
676# CONFIG_SERIAL_JSM is not set
593CONFIG_UNIX98_PTYS=y 677CONFIG_UNIX98_PTYS=y
594CONFIG_LEGACY_PTYS=y 678CONFIG_LEGACY_PTYS=y
595CONFIG_LEGACY_PTY_COUNT=256 679CONFIG_LEGACY_PTY_COUNT=256
@@ -603,7 +687,8 @@ CONFIG_LEGACY_PTY_COUNT=256
603# Watchdog Cards 687# Watchdog Cards
604# 688#
605# CONFIG_WATCHDOG is not set 689# CONFIG_WATCHDOG is not set
606CONFIG_RTC=y 690# CONFIG_RTC is not set
691# CONFIG_GEN_RTC is not set
607# CONFIG_DTLK is not set 692# CONFIG_DTLK is not set
608# CONFIG_R3964 is not set 693# CONFIG_R3964 is not set
609# CONFIG_APPLICOM is not set 694# CONFIG_APPLICOM is not set
@@ -620,6 +705,11 @@ CONFIG_SYNCLINK_CS=m
620# CONFIG_RAW_DRIVER is not set 705# CONFIG_RAW_DRIVER is not set
621 706
622# 707#
708# TPM devices
709#
710# CONFIG_TCG_TPM is not set
711
712#
623# I2C support 713# I2C support
624# 714#
625# CONFIG_I2C is not set 715# CONFIG_I2C is not set
@@ -630,10 +720,20 @@ CONFIG_SYNCLINK_CS=m
630# CONFIG_W1 is not set 720# CONFIG_W1 is not set
631 721
632# 722#
723# Hardware Monitoring support
724#
725# CONFIG_HWMON is not set
726# CONFIG_HWMON_VID is not set
727
728#
633# Misc devices 729# Misc devices
634# 730#
635 731
636# 732#
733# Multimedia Capabilities Port drivers
734#
735
736#
637# Multimedia devices 737# Multimedia devices
638# 738#
639# CONFIG_VIDEO_DEV is not set 739# CONFIG_VIDEO_DEV is not set
@@ -647,7 +747,6 @@ CONFIG_SYNCLINK_CS=m
647# Graphics support 747# Graphics support
648# 748#
649# CONFIG_FB is not set 749# CONFIG_FB is not set
650# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
651 750
652# 751#
653# Sound 752# Sound
@@ -680,7 +779,6 @@ CONFIG_SOUND_AU1000=y
680# CONFIG_SOUND_MSNDCLAS is not set 779# CONFIG_SOUND_MSNDCLAS is not set
681# CONFIG_SOUND_MSNDPIN is not set 780# CONFIG_SOUND_MSNDPIN is not set
682# CONFIG_SOUND_VIA82CXXX is not set 781# CONFIG_SOUND_VIA82CXXX is not set
683# CONFIG_SOUND_OSS is not set
684# CONFIG_SOUND_ALI5455 is not set 782# CONFIG_SOUND_ALI5455 is not set
685# CONFIG_SOUND_FORTE is not set 783# CONFIG_SOUND_FORTE is not set
686# CONFIG_SOUND_RME96XX is not set 784# CONFIG_SOUND_RME96XX is not set
@@ -689,6 +787,8 @@ CONFIG_SOUND_AU1000=y
689# 787#
690# USB support 788# USB support
691# 789#
790CONFIG_USB_ARCH_HAS_HCD=y
791CONFIG_USB_ARCH_HAS_OHCI=y
692CONFIG_USB=y 792CONFIG_USB=y
693# CONFIG_USB_DEBUG is not set 793# CONFIG_USB_DEBUG is not set
694 794
@@ -699,23 +799,23 @@ CONFIG_USB=y
699# CONFIG_USB_BANDWIDTH is not set 799# CONFIG_USB_BANDWIDTH is not set
700# CONFIG_USB_DYNAMIC_MINORS is not set 800# CONFIG_USB_DYNAMIC_MINORS is not set
701# CONFIG_USB_OTG is not set 801# CONFIG_USB_OTG is not set
702CONFIG_USB_ARCH_HAS_HCD=y
703CONFIG_USB_ARCH_HAS_OHCI=y
704 802
705# 803#
706# USB Host Controller Drivers 804# USB Host Controller Drivers
707# 805#
708# CONFIG_USB_EHCI_HCD is not set 806# CONFIG_USB_EHCI_HCD is not set
807# CONFIG_USB_ISP116X_HCD is not set
709CONFIG_USB_OHCI_HCD=y 808CONFIG_USB_OHCI_HCD=y
809# CONFIG_USB_OHCI_BIG_ENDIAN is not set
810CONFIG_USB_OHCI_LITTLE_ENDIAN=y
710# CONFIG_USB_UHCI_HCD is not set 811# CONFIG_USB_UHCI_HCD is not set
711# CONFIG_USB_SL811_HCD is not set 812# CONFIG_USB_SL811_HCD is not set
712 813
713# 814#
714# USB Device Class drivers 815# USB Device Class drivers
715# 816#
716# CONFIG_USB_AUDIO is not set 817# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
717# CONFIG_USB_BLUETOOTH_TTY is not set 818# CONFIG_USB_BLUETOOTH_TTY is not set
718# CONFIG_USB_MIDI is not set
719# CONFIG_USB_ACM is not set 819# CONFIG_USB_ACM is not set
720# CONFIG_USB_PRINTER is not set 820# CONFIG_USB_PRINTER is not set
721 821
@@ -733,12 +833,17 @@ CONFIG_USB_HIDINPUT=y
733# CONFIG_USB_HIDDEV is not set 833# CONFIG_USB_HIDDEV is not set
734# CONFIG_USB_AIPTEK is not set 834# CONFIG_USB_AIPTEK is not set
735# CONFIG_USB_WACOM is not set 835# CONFIG_USB_WACOM is not set
836# CONFIG_USB_ACECAD is not set
736# CONFIG_USB_KBTAB is not set 837# CONFIG_USB_KBTAB is not set
737# CONFIG_USB_POWERMATE is not set 838# CONFIG_USB_POWERMATE is not set
738# CONFIG_USB_MTOUCH is not set 839# CONFIG_USB_MTOUCH is not set
840# CONFIG_USB_ITMTOUCH is not set
739# CONFIG_USB_EGALAX is not set 841# CONFIG_USB_EGALAX is not set
842CONFIG_USB_YEALINK=m
740# CONFIG_USB_XPAD is not set 843# CONFIG_USB_XPAD is not set
741# CONFIG_USB_ATI_REMOTE is not set 844# CONFIG_USB_ATI_REMOTE is not set
845# CONFIG_USB_KEYSPAN_REMOTE is not set
846# CONFIG_USB_APPLETOUCH is not set
742 847
743# 848#
744# USB Imaging devices 849# USB Imaging devices
@@ -762,6 +867,7 @@ CONFIG_USB_HIDINPUT=y
762# CONFIG_USB_PEGASUS is not set 867# CONFIG_USB_PEGASUS is not set
763# CONFIG_USB_RTL8150 is not set 868# CONFIG_USB_RTL8150 is not set
764# CONFIG_USB_USBNET is not set 869# CONFIG_USB_USBNET is not set
870CONFIG_USB_MON=y
765 871
766# 872#
767# USB port drivers 873# USB port drivers
@@ -786,9 +892,10 @@ CONFIG_USB_HIDINPUT=y
786# CONFIG_USB_PHIDGETKIT is not set 892# CONFIG_USB_PHIDGETKIT is not set
787# CONFIG_USB_PHIDGETSERVO is not set 893# CONFIG_USB_PHIDGETSERVO is not set
788# CONFIG_USB_IDMOUSE is not set 894# CONFIG_USB_IDMOUSE is not set
895CONFIG_USB_LD=m
789 896
790# 897#
791# USB ATM/DSL drivers 898# USB DSL modem support
792# 899#
793 900
794# 901#
@@ -807,12 +914,17 @@ CONFIG_USB_HIDINPUT=y
807# CONFIG_INFINIBAND is not set 914# CONFIG_INFINIBAND is not set
808 915
809# 916#
917# SN Devices
918#
919
920#
810# File systems 921# File systems
811# 922#
812CONFIG_EXT2_FS=y 923CONFIG_EXT2_FS=y
813CONFIG_EXT2_FS_XATTR=y 924CONFIG_EXT2_FS_XATTR=y
814CONFIG_EXT2_FS_POSIX_ACL=y 925CONFIG_EXT2_FS_POSIX_ACL=y
815# CONFIG_EXT2_FS_SECURITY is not set 926# CONFIG_EXT2_FS_SECURITY is not set
927# CONFIG_EXT2_FS_XIP is not set
816CONFIG_EXT3_FS=y 928CONFIG_EXT3_FS=y
817CONFIG_EXT3_FS_XATTR=y 929CONFIG_EXT3_FS_XATTR=y
818CONFIG_EXT3_FS_POSIX_ACL=y 930CONFIG_EXT3_FS_POSIX_ACL=y
@@ -831,10 +943,12 @@ CONFIG_FS_POSIX_ACL=y
831# CONFIG_XFS_FS is not set 943# CONFIG_XFS_FS is not set
832# CONFIG_MINIX_FS is not set 944# CONFIG_MINIX_FS is not set
833# CONFIG_ROMFS_FS is not set 945# CONFIG_ROMFS_FS is not set
946CONFIG_INOTIFY=y
834# CONFIG_QUOTA is not set 947# CONFIG_QUOTA is not set
835CONFIG_DNOTIFY=y 948CONFIG_DNOTIFY=y
836CONFIG_AUTOFS_FS=m 949CONFIG_AUTOFS_FS=m
837CONFIG_AUTOFS4_FS=m 950CONFIG_AUTOFS4_FS=m
951CONFIG_FUSE_FS=m
838 952
839# 953#
840# CD-ROM/DVD Filesystems 954# CD-ROM/DVD Filesystems
@@ -855,13 +969,10 @@ CONFIG_AUTOFS4_FS=m
855CONFIG_PROC_FS=y 969CONFIG_PROC_FS=y
856CONFIG_PROC_KCORE=y 970CONFIG_PROC_KCORE=y
857CONFIG_SYSFS=y 971CONFIG_SYSFS=y
858# CONFIG_DEVFS_FS is not set
859CONFIG_DEVPTS_FS_XATTR=y
860CONFIG_DEVPTS_FS_SECURITY=y
861CONFIG_TMPFS=y 972CONFIG_TMPFS=y
862# CONFIG_TMPFS_XATTR is not set
863# CONFIG_HUGETLB_PAGE is not set 973# CONFIG_HUGETLB_PAGE is not set
864CONFIG_RAMFS=y 974CONFIG_RAMFS=y
975CONFIG_RELAYFS_FS=m
865 976
866# 977#
867# Miscellaneous filesystems 978# Miscellaneous filesystems
@@ -895,6 +1006,7 @@ CONFIG_NFSD=m
895CONFIG_ROOT_NFS=y 1006CONFIG_ROOT_NFS=y
896CONFIG_LOCKD=y 1007CONFIG_LOCKD=y
897CONFIG_EXPORTFS=m 1008CONFIG_EXPORTFS=m
1009CONFIG_NFS_COMMON=y
898CONFIG_SUNRPC=y 1010CONFIG_SUNRPC=y
899# CONFIG_RPCSEC_GSS_KRB5 is not set 1011# CONFIG_RPCSEC_GSS_KRB5 is not set
900# CONFIG_RPCSEC_GSS_SPKM3 is not set 1012# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -904,6 +1016,7 @@ CONFIG_SMB_FS=m
904# CONFIG_NCP_FS is not set 1016# CONFIG_NCP_FS is not set
905# CONFIG_CODA_FS is not set 1017# CONFIG_CODA_FS is not set
906# CONFIG_AFS_FS is not set 1018# CONFIG_AFS_FS is not set
1019# CONFIG_9P_FS is not set
907 1020
908# 1021#
909# Partition Types 1022# Partition Types
@@ -963,7 +1076,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
963# 1076#
964# Kernel hacking 1077# Kernel hacking
965# 1078#
1079# CONFIG_PRINTK_TIME is not set
966# CONFIG_DEBUG_KERNEL is not set 1080# CONFIG_DEBUG_KERNEL is not set
1081CONFIG_LOG_BUF_SHIFT=14
967CONFIG_CROSSCOMPILE=y 1082CONFIG_CROSSCOMPILE=y
968CONFIG_CMDLINE="" 1083CONFIG_CMDLINE=""
969 1084
@@ -979,26 +1094,27 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
979# 1094#
980CONFIG_CRYPTO=y 1095CONFIG_CRYPTO=y
981CONFIG_CRYPTO_HMAC=y 1096CONFIG_CRYPTO_HMAC=y
982CONFIG_CRYPTO_NULL=y 1097CONFIG_CRYPTO_NULL=m
983# CONFIG_CRYPTO_MD4 is not set 1098CONFIG_CRYPTO_MD4=m
984# CONFIG_CRYPTO_MD5 is not set 1099CONFIG_CRYPTO_MD5=m
985# CONFIG_CRYPTO_SHA1 is not set 1100CONFIG_CRYPTO_SHA1=m
986# CONFIG_CRYPTO_SHA256 is not set 1101CONFIG_CRYPTO_SHA256=m
987CONFIG_CRYPTO_SHA512=y 1102CONFIG_CRYPTO_SHA512=m
988CONFIG_CRYPTO_WP512=m 1103CONFIG_CRYPTO_WP512=m
989# CONFIG_CRYPTO_DES is not set 1104CONFIG_CRYPTO_TGR192=m
990# CONFIG_CRYPTO_BLOWFISH is not set 1105CONFIG_CRYPTO_DES=m
991CONFIG_CRYPTO_TWOFISH=y 1106CONFIG_CRYPTO_BLOWFISH=m
992# CONFIG_CRYPTO_SERPENT is not set 1107CONFIG_CRYPTO_TWOFISH=m
1108CONFIG_CRYPTO_SERPENT=m
993CONFIG_CRYPTO_AES=m 1109CONFIG_CRYPTO_AES=m
994# CONFIG_CRYPTO_CAST5 is not set 1110CONFIG_CRYPTO_CAST5=m
995# CONFIG_CRYPTO_CAST6 is not set 1111CONFIG_CRYPTO_CAST6=m
996CONFIG_CRYPTO_TEA=m 1112CONFIG_CRYPTO_TEA=m
997# CONFIG_CRYPTO_ARC4 is not set 1113CONFIG_CRYPTO_ARC4=m
998CONFIG_CRYPTO_KHAZAD=m 1114CONFIG_CRYPTO_KHAZAD=m
999CONFIG_CRYPTO_ANUBIS=m 1115CONFIG_CRYPTO_ANUBIS=m
1000CONFIG_CRYPTO_DEFLATE=y 1116CONFIG_CRYPTO_DEFLATE=m
1001CONFIG_CRYPTO_MICHAEL_MIC=y 1117CONFIG_CRYPTO_MICHAEL_MIC=m
1002CONFIG_CRYPTO_CRC32C=m 1118CONFIG_CRYPTO_CRC32C=m
1003# CONFIG_CRYPTO_TEST is not set 1119# CONFIG_CRYPTO_TEST is not set
1004 1120
@@ -1010,9 +1126,8 @@ CONFIG_CRYPTO_CRC32C=m
1010# Library routines 1126# Library routines
1011# 1127#
1012CONFIG_CRC_CCITT=m 1128CONFIG_CRC_CCITT=m
1129CONFIG_CRC16=m
1013CONFIG_CRC32=y 1130CONFIG_CRC32=y
1014CONFIG_LIBCRC32C=m 1131CONFIG_LIBCRC32C=m
1015CONFIG_ZLIB_INFLATE=y 1132CONFIG_ZLIB_INFLATE=m
1016CONFIG_ZLIB_DEFLATE=y 1133CONFIG_ZLIB_DEFLATE=m
1017CONFIG_GENERIC_HARDIRQS=y
1018CONFIG_GENERIC_IRQ_PROBE=y
diff --git a/arch/mips/configs/db1550_defconfig b/arch/mips/configs/db1550_defconfig
index 178c0ad1af75..64248e2e924a 100644
--- a/arch/mips/configs/db1550_defconfig
+++ b/arch/mips/configs/db1550_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:02 2005 4# Thu Oct 20 22:25:39 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14
29CONFIG_HOTPLUG=y 27CONFIG_HOTPLUG=y
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,63 +59,80 @@ CONFIG_KMOD=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60# CONFIG_MACH_VR41XX is not set 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_TOSHIBA_JMR3927 is not set 64# CONFIG_MIPS_PB1000 is not set
65# CONFIG_MIPS_PB1100 is not set
66# CONFIG_MIPS_PB1500 is not set
67# CONFIG_MIPS_PB1550 is not set
68# CONFIG_MIPS_PB1200 is not set
69# CONFIG_MIPS_DB1000 is not set
70# CONFIG_MIPS_DB1100 is not set
71# CONFIG_MIPS_DB1500 is not set
72CONFIG_MIPS_DB1550=y
73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
62# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
63# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
64# CONFIG_MIPS_EV64120 is not set 77# CONFIG_MIPS_EV64120 is not set
65# CONFIG_MIPS_EV96100 is not set 78# CONFIG_MIPS_EV96100 is not set
66# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
67# CONFIG_LASAT is not set
68# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
69# CONFIG_MIPS_ATLAS is not set 83# CONFIG_MIPS_ATLAS is not set
70# CONFIG_MIPS_MALTA is not set 84# CONFIG_MIPS_MALTA is not set
71# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
72# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
73# CONFIG_MOMENCO_OCELOT_G is not set
74# CONFIG_MOMENCO_OCELOT_C is not set
75# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
76# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
77# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
78# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
79# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
80# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
81# CONFIG_NEC_OSPREY is not set 98# CONFIG_MACH_VR41XX is not set
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
82# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
83CONFIG_SOC_AU1X00=y 102# CONFIG_SGI_IP27 is not set
84# CONFIG_SOC_AU1000 is not set 103# CONFIG_SGI_IP32 is not set
85# CONFIG_SOC_AU1100 is not set 104# CONFIG_SIBYTE_BIGSUR is not set
86# CONFIG_SOC_AU1500 is not set 105# CONFIG_SIBYTE_SWARM is not set
87CONFIG_SOC_AU1550=y 106# CONFIG_SIBYTE_SENTOSA is not set
88# CONFIG_MIPS_PB1000 is not set 107# CONFIG_SIBYTE_RHONE is not set
89# CONFIG_MIPS_PB1100 is not set 108# CONFIG_SIBYTE_CARMEL is not set
90# CONFIG_MIPS_PB1500 is not set 109# CONFIG_SIBYTE_PTSWARM is not set
91# CONFIG_MIPS_PB1550 is not set 110# CONFIG_SIBYTE_LITTLESUR is not set
92# CONFIG_MIPS_DB1000 is not set 111# CONFIG_SIBYTE_CRHINE is not set
93# CONFIG_MIPS_DB1100 is not set 112# CONFIG_SIBYTE_CRHONE is not set
94# CONFIG_MIPS_DB1500 is not set
95CONFIG_MIPS_DB1550=y
96# CONFIG_MIPS_BOSPORUS is not set
97# CONFIG_MIPS_MIRAGE is not set
98# CONFIG_MIPS_XXS1500 is not set
99# CONFIG_MIPS_MTX1 is not set
100# CONFIG_SIBYTE_SB1xxx_SOC is not set
101# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
102# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
103CONFIG_RWSEM_GENERIC_SPINLOCK=y 117CONFIG_RWSEM_GENERIC_SPINLOCK=y
104CONFIG_GENERIC_CALIBRATE_DELAY=y 118CONFIG_GENERIC_CALIBRATE_DELAY=y
105CONFIG_HAVE_DEC_LOCK=y 119CONFIG_DMA_NONCOHERENT=y
106CONFIG_DMA_COHERENT=y 120CONFIG_DMA_NEED_PCI_MAP_STATE=y
107CONFIG_MIPS_DISABLE_OBSOLETE_IDE=y 121CONFIG_MIPS_DISABLE_OBSOLETE_IDE=y
122# CONFIG_CPU_BIG_ENDIAN is not set
108CONFIG_CPU_LITTLE_ENDIAN=y 123CONFIG_CPU_LITTLE_ENDIAN=y
124CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
125CONFIG_SOC_AU1550=y
126CONFIG_SOC_AU1X00=y
109CONFIG_MIPS_L1_CACHE_SHIFT=5 127CONFIG_MIPS_L1_CACHE_SHIFT=5
110 128
111# 129#
112# CPU selection 130# CPU selection
113# 131#
114CONFIG_CPU_MIPS32=y 132CONFIG_CPU_MIPS32_R1=y
115# CONFIG_CPU_MIPS64 is not set 133# CONFIG_CPU_MIPS32_R2 is not set
134# CONFIG_CPU_MIPS64_R1 is not set
135# CONFIG_CPU_MIPS64_R2 is not set
116# CONFIG_CPU_R3000 is not set 136# CONFIG_CPU_R3000 is not set
117# CONFIG_CPU_TX39XX is not set 137# CONFIG_CPU_TX39XX is not set
118# CONFIG_CPU_VR41XX is not set 138# CONFIG_CPU_VR41XX is not set
@@ -128,15 +148,39 @@ CONFIG_CPU_MIPS32=y
128# CONFIG_CPU_RM7000 is not set 148# CONFIG_CPU_RM7000 is not set
129# CONFIG_CPU_RM9000 is not set 149# CONFIG_CPU_RM9000 is not set
130# CONFIG_CPU_SB1 is not set 150# CONFIG_CPU_SB1 is not set
151CONFIG_SYS_HAS_CPU_MIPS32_R1=y
152CONFIG_CPU_MIPS32=y
153CONFIG_CPU_MIPSR1=y
154CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
155CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
156
157#
158# Kernel type
159#
160CONFIG_32BIT=y
161# CONFIG_64BIT is not set
131CONFIG_PAGE_SIZE_4KB=y 162CONFIG_PAGE_SIZE_4KB=y
132# CONFIG_PAGE_SIZE_8KB is not set 163# CONFIG_PAGE_SIZE_8KB is not set
133# CONFIG_PAGE_SIZE_16KB is not set 164# CONFIG_PAGE_SIZE_16KB is not set
134# CONFIG_PAGE_SIZE_64KB is not set 165# CONFIG_PAGE_SIZE_64KB is not set
135CONFIG_CPU_HAS_PREFETCH=y 166CONFIG_CPU_HAS_PREFETCH=y
167# CONFIG_MIPS_MT is not set
136CONFIG_64BIT_PHYS_ADDR=y 168CONFIG_64BIT_PHYS_ADDR=y
137# CONFIG_CPU_ADVANCED is not set 169# CONFIG_CPU_ADVANCED is not set
138CONFIG_CPU_HAS_LLSC=y 170CONFIG_CPU_HAS_LLSC=y
139CONFIG_CPU_HAS_SYNC=y 171CONFIG_CPU_HAS_SYNC=y
172CONFIG_GENERIC_HARDIRQS=y
173CONFIG_GENERIC_IRQ_PROBE=y
174CONFIG_ARCH_FLATMEM_ENABLE=y
175CONFIG_SELECT_MEMORY_MODEL=y
176CONFIG_FLATMEM_MANUAL=y
177# CONFIG_DISCONTIGMEM_MANUAL is not set
178# CONFIG_SPARSEMEM_MANUAL is not set
179CONFIG_FLATMEM=y
180CONFIG_FLAT_NODE_MEM_MAP=y
181# CONFIG_SPARSEMEM_STATIC is not set
182CONFIG_PREEMPT_NONE=y
183# CONFIG_PREEMPT_VOLUNTARY is not set
140# CONFIG_PREEMPT is not set 184# CONFIG_PREEMPT is not set
141 185
142# 186#
@@ -145,7 +189,6 @@ CONFIG_CPU_HAS_SYNC=y
145CONFIG_HW_HAS_PCI=y 189CONFIG_HW_HAS_PCI=y
146CONFIG_PCI=y 190CONFIG_PCI=y
147CONFIG_PCI_LEGACY_PROC=y 191CONFIG_PCI_LEGACY_PROC=y
148CONFIG_PCI_NAMES=y
149CONFIG_MMU=y 192CONFIG_MMU=y
150 193
151# 194#
@@ -154,6 +197,8 @@ CONFIG_MMU=y
154CONFIG_PCCARD=m 197CONFIG_PCCARD=m
155# CONFIG_PCMCIA_DEBUG is not set 198# CONFIG_PCMCIA_DEBUG is not set
156CONFIG_PCMCIA=m 199CONFIG_PCMCIA=m
200CONFIG_PCMCIA_LOAD_CIS=y
201CONFIG_PCMCIA_IOCTL=y
157CONFIG_CARDBUS=y 202CONFIG_CARDBUS=y
158 203
159# 204#
@@ -176,6 +221,100 @@ CONFIG_PCMCIA_AU1X00=m
176CONFIG_BINFMT_ELF=y 221CONFIG_BINFMT_ELF=y
177# CONFIG_BINFMT_MISC is not set 222# CONFIG_BINFMT_MISC is not set
178CONFIG_TRAD_SIGNALS=y 223CONFIG_TRAD_SIGNALS=y
224# CONFIG_PM is not set
225
226#
227# Networking
228#
229CONFIG_NET=y
230
231#
232# Networking options
233#
234CONFIG_PACKET=y
235# CONFIG_PACKET_MMAP is not set
236CONFIG_UNIX=y
237CONFIG_XFRM=y
238CONFIG_XFRM_USER=m
239CONFIG_NET_KEY=y
240CONFIG_INET=y
241CONFIG_IP_MULTICAST=y
242# CONFIG_IP_ADVANCED_ROUTER is not set
243CONFIG_IP_FIB_HASH=y
244CONFIG_IP_PNP=y
245# CONFIG_IP_PNP_DHCP is not set
246CONFIG_IP_PNP_BOOTP=y
247# CONFIG_IP_PNP_RARP is not set
248# CONFIG_NET_IPIP is not set
249# CONFIG_NET_IPGRE is not set
250# CONFIG_IP_MROUTE is not set
251# CONFIG_ARPD is not set
252# CONFIG_SYN_COOKIES is not set
253# CONFIG_INET_AH is not set
254# CONFIG_INET_ESP is not set
255# CONFIG_INET_IPCOMP is not set
256CONFIG_INET_TUNNEL=m
257CONFIG_INET_DIAG=y
258CONFIG_INET_TCP_DIAG=y
259# CONFIG_TCP_CONG_ADVANCED is not set
260CONFIG_TCP_CONG_BIC=y
261
262#
263# IP: Virtual Server Configuration
264#
265# CONFIG_IP_VS is not set
266# CONFIG_IPV6 is not set
267CONFIG_NETFILTER=y
268# CONFIG_NETFILTER_DEBUG is not set
269CONFIG_NETFILTER_NETLINK=m
270CONFIG_NETFILTER_NETLINK_QUEUE=m
271CONFIG_NETFILTER_NETLINK_LOG=m
272
273#
274# IP: Netfilter Configuration
275#
276# CONFIG_IP_NF_CONNTRACK is not set
277CONFIG_IP_NF_PPTP=m
278# CONFIG_IP_NF_QUEUE is not set
279# CONFIG_IP_NF_IPTABLES is not set
280# CONFIG_IP_NF_ARPTABLES is not set
281
282#
283# DCCP Configuration (EXPERIMENTAL)
284#
285# CONFIG_IP_DCCP is not set
286
287#
288# SCTP Configuration (EXPERIMENTAL)
289#
290# CONFIG_IP_SCTP is not set
291# CONFIG_ATM is not set
292# CONFIG_BRIDGE is not set
293# CONFIG_VLAN_8021Q is not set
294# CONFIG_DECNET is not set
295# CONFIG_LLC2 is not set
296# CONFIG_IPX is not set
297# CONFIG_ATALK is not set
298# CONFIG_X25 is not set
299# CONFIG_LAPB is not set
300# CONFIG_NET_DIVERT is not set
301# CONFIG_ECONET is not set
302# CONFIG_WAN_ROUTER is not set
303# CONFIG_NET_SCHED is not set
304# CONFIG_NET_CLS_ROUTE is not set
305
306#
307# Network testing
308#
309# CONFIG_NET_PKTGEN is not set
310# CONFIG_HAMRADIO is not set
311# CONFIG_IRDA is not set
312# CONFIG_BT is not set
313CONFIG_IEEE80211=m
314# CONFIG_IEEE80211_DEBUG is not set
315CONFIG_IEEE80211_CRYPT_WEP=m
316CONFIG_IEEE80211_CRYPT_CCMP=m
317CONFIG_IEEE80211_CRYPT_TKIP=m
179 318
180# 319#
181# Device Drivers 320# Device Drivers
@@ -186,15 +325,20 @@ CONFIG_TRAD_SIGNALS=y
186# 325#
187CONFIG_STANDALONE=y 326CONFIG_STANDALONE=y
188CONFIG_PREVENT_FIRMWARE_BUILD=y 327CONFIG_PREVENT_FIRMWARE_BUILD=y
189# CONFIG_FW_LOADER is not set 328CONFIG_FW_LOADER=m
329
330#
331# Connector - unified userspace <-> kernelspace linker
332#
333CONFIG_CONNECTOR=m
190 334
191# 335#
192# Memory Technology Devices (MTD) 336# Memory Technology Devices (MTD)
193# 337#
194CONFIG_MTD=y 338CONFIG_MTD=y
195# CONFIG_MTD_DEBUG is not set 339# CONFIG_MTD_DEBUG is not set
196CONFIG_MTD_PARTITIONS=y
197# CONFIG_MTD_CONCAT is not set 340# CONFIG_MTD_CONCAT is not set
341CONFIG_MTD_PARTITIONS=y
198# CONFIG_MTD_REDBOOT_PARTS is not set 342# CONFIG_MTD_REDBOOT_PARTS is not set
199# CONFIG_MTD_CMDLINE_PARTS is not set 343# CONFIG_MTD_CMDLINE_PARTS is not set
200 344
@@ -238,9 +382,8 @@ CONFIG_MTD_CFI_UTIL=y
238# 382#
239# CONFIG_MTD_COMPLEX_MAPPINGS is not set 383# CONFIG_MTD_COMPLEX_MAPPINGS is not set
240# CONFIG_MTD_PHYSMAP is not set 384# CONFIG_MTD_PHYSMAP is not set
241CONFIG_MTD_DB1550=y 385CONFIG_MTD_ALCHEMY=y
242CONFIG_MTD_DB1550_BOOT=y 386# CONFIG_MTD_PLATRAM is not set
243CONFIG_MTD_DB1550_USER=y
244 387
245# 388#
246# Self-contained MTD device drivers 389# Self-contained MTD device drivers
@@ -281,7 +424,6 @@ CONFIG_MTD_NAND_AU1550=m
281# 424#
282# Block devices 425# Block devices
283# 426#
284# CONFIG_BLK_DEV_FD is not set
285# CONFIG_BLK_CPQ_DA is not set 427# CONFIG_BLK_CPQ_DA is not set
286# CONFIG_BLK_CPQ_CISS_DA is not set 428# CONFIG_BLK_CPQ_CISS_DA is not set
287# CONFIG_BLK_DEV_DAC960 is not set 429# CONFIG_BLK_DEV_DAC960 is not set
@@ -293,7 +435,6 @@ CONFIG_BLK_DEV_LOOP=y
293# CONFIG_BLK_DEV_SX8 is not set 435# CONFIG_BLK_DEV_SX8 is not set
294# CONFIG_BLK_DEV_RAM is not set 436# CONFIG_BLK_DEV_RAM is not set
295CONFIG_BLK_DEV_RAM_COUNT=16 437CONFIG_BLK_DEV_RAM_COUNT=16
296CONFIG_INITRAMFS_SOURCE=""
297# CONFIG_LBD is not set 438# CONFIG_LBD is not set
298CONFIG_CDROM_PKTCDVD=m 439CONFIG_CDROM_PKTCDVD=m
299CONFIG_CDROM_PKTCDVD_BUFFERS=8 440CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -350,6 +491,7 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
350# CONFIG_BLK_DEV_HPT366 is not set 491# CONFIG_BLK_DEV_HPT366 is not set
351# CONFIG_BLK_DEV_SC1200 is not set 492# CONFIG_BLK_DEV_SC1200 is not set
352# CONFIG_BLK_DEV_PIIX is not set 493# CONFIG_BLK_DEV_PIIX is not set
494# CONFIG_BLK_DEV_IT821X is not set
353# CONFIG_BLK_DEV_NS87415 is not set 495# CONFIG_BLK_DEV_NS87415 is not set
354# CONFIG_BLK_DEV_PDC202XX_OLD is not set 496# CONFIG_BLK_DEV_PDC202XX_OLD is not set
355# CONFIG_BLK_DEV_PDC202XX_NEW is not set 497# CONFIG_BLK_DEV_PDC202XX_NEW is not set
@@ -367,6 +509,7 @@ CONFIG_BLK_DEV_IDEDMA=y
367# 509#
368# SCSI device support 510# SCSI device support
369# 511#
512CONFIG_RAID_ATTRS=m
370# CONFIG_SCSI is not set 513# CONFIG_SCSI is not set
371 514
372# 515#
@@ -377,6 +520,7 @@ CONFIG_BLK_DEV_IDEDMA=y
377# 520#
378# Fusion MPT device support 521# Fusion MPT device support
379# 522#
523# CONFIG_FUSION is not set
380 524
381# 525#
382# IEEE 1394 (FireWire) support 526# IEEE 1394 (FireWire) support
@@ -389,94 +533,13 @@ CONFIG_BLK_DEV_IDEDMA=y
389# CONFIG_I2O is not set 533# CONFIG_I2O is not set
390 534
391# 535#
392# Networking support 536# Network device support
393#
394CONFIG_NET=y
395
396#
397# Networking options
398#
399CONFIG_PACKET=y
400# CONFIG_PACKET_MMAP is not set
401CONFIG_NETLINK_DEV=y
402CONFIG_UNIX=y
403CONFIG_NET_KEY=y
404CONFIG_INET=y
405CONFIG_IP_MULTICAST=y
406# CONFIG_IP_ADVANCED_ROUTER is not set
407CONFIG_IP_PNP=y
408# CONFIG_IP_PNP_DHCP is not set
409CONFIG_IP_PNP_BOOTP=y
410# CONFIG_IP_PNP_RARP is not set
411# CONFIG_NET_IPIP is not set
412# CONFIG_NET_IPGRE is not set
413# CONFIG_IP_MROUTE is not set
414# CONFIG_ARPD is not set
415# CONFIG_SYN_COOKIES is not set
416# CONFIG_INET_AH is not set
417# CONFIG_INET_ESP is not set
418# CONFIG_INET_IPCOMP is not set
419CONFIG_INET_TUNNEL=m
420CONFIG_IP_TCPDIAG=m
421# CONFIG_IP_TCPDIAG_IPV6 is not set
422
423#
424# IP: Virtual Server Configuration
425# 537#
426# CONFIG_IP_VS is not set
427# CONFIG_IPV6 is not set
428CONFIG_NETFILTER=y
429# CONFIG_NETFILTER_DEBUG is not set
430
431#
432# IP: Netfilter Configuration
433#
434# CONFIG_IP_NF_CONNTRACK is not set
435CONFIG_IP_NF_CONNTRACK_MARK=y
436# CONFIG_IP_NF_QUEUE is not set
437# CONFIG_IP_NF_IPTABLES is not set
438# CONFIG_IP_NF_ARPTABLES is not set
439CONFIG_XFRM=y
440CONFIG_XFRM_USER=m
441
442#
443# SCTP Configuration (EXPERIMENTAL)
444#
445# CONFIG_IP_SCTP is not set
446# CONFIG_ATM is not set
447# CONFIG_BRIDGE is not set
448# CONFIG_VLAN_8021Q is not set
449# CONFIG_DECNET is not set
450# CONFIG_LLC2 is not set
451# CONFIG_IPX is not set
452# CONFIG_ATALK is not set
453# CONFIG_X25 is not set
454# CONFIG_LAPB is not set
455# CONFIG_NET_DIVERT is not set
456# CONFIG_ECONET is not set
457# CONFIG_WAN_ROUTER is not set
458
459#
460# QoS and/or fair queueing
461#
462# CONFIG_NET_SCHED is not set
463# CONFIG_NET_CLS_ROUTE is not set
464
465#
466# Network testing
467#
468# CONFIG_NET_PKTGEN is not set
469# CONFIG_NETPOLL is not set
470# CONFIG_NET_POLL_CONTROLLER is not set
471# CONFIG_HAMRADIO is not set
472# CONFIG_IRDA is not set
473# CONFIG_BT is not set
474CONFIG_NETDEVICES=y 538CONFIG_NETDEVICES=y
475# CONFIG_DUMMY is not set 539# CONFIG_DUMMY is not set
476# CONFIG_BONDING is not set 540# CONFIG_BONDING is not set
477# CONFIG_EQUALIZER is not set 541# CONFIG_EQUALIZER is not set
478# CONFIG_TUN is not set 542# CONFIG_TUN is not set
479# CONFIG_ETHERTAP is not set
480 543
481# 544#
482# ARCnet devices 545# ARCnet devices
@@ -484,6 +547,21 @@ CONFIG_NETDEVICES=y
484# CONFIG_ARCNET is not set 547# CONFIG_ARCNET is not set
485 548
486# 549#
550# PHY device support
551#
552CONFIG_PHYLIB=m
553CONFIG_PHYCONTROL=y
554
555#
556# MII PHY device drivers
557#
558CONFIG_MARVELL_PHY=m
559CONFIG_DAVICOM_PHY=m
560CONFIG_QSEMI_PHY=m
561CONFIG_LXT_PHY=m
562CONFIG_CICADA_PHY=m
563
564#
487# Ethernet (10 or 100Mbit) 565# Ethernet (10 or 100Mbit)
488# 566#
489CONFIG_NET_ETHERNET=y 567CONFIG_NET_ETHERNET=y
@@ -510,12 +588,16 @@ CONFIG_MIPS_AU1X00_ENET=y
510# CONFIG_HAMACHI is not set 588# CONFIG_HAMACHI is not set
511# CONFIG_YELLOWFIN is not set 589# CONFIG_YELLOWFIN is not set
512# CONFIG_R8169 is not set 590# CONFIG_R8169 is not set
591# CONFIG_SIS190 is not set
592# CONFIG_SKGE is not set
513# CONFIG_SK98LIN is not set 593# CONFIG_SK98LIN is not set
514# CONFIG_TIGON3 is not set 594# CONFIG_TIGON3 is not set
595# CONFIG_BNX2 is not set
515 596
516# 597#
517# Ethernet (10000 Mbit) 598# Ethernet (10000 Mbit)
518# 599#
600# CONFIG_CHELSIO_T1 is not set
519# CONFIG_IXGB is not set 601# CONFIG_IXGB is not set
520# CONFIG_S2IO is not set 602# CONFIG_S2IO is not set
521 603
@@ -528,6 +610,8 @@ CONFIG_MIPS_AU1X00_ENET=y
528# Wireless LAN (non-hamradio) 610# Wireless LAN (non-hamradio)
529# 611#
530# CONFIG_NET_RADIO is not set 612# CONFIG_NET_RADIO is not set
613# CONFIG_IPW_DEBUG is not set
614CONFIG_IPW2200=m
531 615
532# 616#
533# PCMCIA network device support 617# PCMCIA network device support
@@ -559,6 +643,8 @@ CONFIG_PPPOE=m
559# CONFIG_SLIP is not set 643# CONFIG_SLIP is not set
560# CONFIG_SHAPER is not set 644# CONFIG_SHAPER is not set
561# CONFIG_NETCONSOLE is not set 645# CONFIG_NETCONSOLE is not set
646# CONFIG_NETPOLL is not set
647# CONFIG_NET_POLL_CONTROLLER is not set
562 648
563# 649#
564# ISDN subsystem 650# ISDN subsystem
@@ -588,19 +674,6 @@ CONFIG_INPUT_EVDEV=y
588# CONFIG_INPUT_EVBUG is not set 674# CONFIG_INPUT_EVBUG is not set
589 675
590# 676#
591# Input I/O drivers
592#
593# CONFIG_GAMEPORT is not set
594CONFIG_SOUND_GAMEPORT=y
595CONFIG_SERIO=y
596# CONFIG_SERIO_I8042 is not set
597CONFIG_SERIO_SERPORT=y
598# CONFIG_SERIO_CT82C710 is not set
599# CONFIG_SERIO_PCIPS2 is not set
600# CONFIG_SERIO_LIBPS2 is not set
601CONFIG_SERIO_RAW=m
602
603#
604# Input Device Drivers 677# Input Device Drivers
605# 678#
606# CONFIG_INPUT_KEYBOARD is not set 679# CONFIG_INPUT_KEYBOARD is not set
@@ -610,6 +683,17 @@ CONFIG_SERIO_RAW=m
610# CONFIG_INPUT_MISC is not set 683# CONFIG_INPUT_MISC is not set
611 684
612# 685#
686# Hardware I/O ports
687#
688CONFIG_SERIO=y
689# CONFIG_SERIO_I8042 is not set
690CONFIG_SERIO_SERPORT=y
691# CONFIG_SERIO_PCIPS2 is not set
692# CONFIG_SERIO_LIBPS2 is not set
693CONFIG_SERIO_RAW=m
694# CONFIG_GAMEPORT is not set
695
696#
613# Character devices 697# Character devices
614# 698#
615# CONFIG_VT is not set 699# CONFIG_VT is not set
@@ -629,6 +713,7 @@ CONFIG_SERIAL_AU1X00=y
629CONFIG_SERIAL_AU1X00_CONSOLE=y 713CONFIG_SERIAL_AU1X00_CONSOLE=y
630CONFIG_SERIAL_CORE=y 714CONFIG_SERIAL_CORE=y
631CONFIG_SERIAL_CORE_CONSOLE=y 715CONFIG_SERIAL_CORE_CONSOLE=y
716# CONFIG_SERIAL_JSM is not set
632CONFIG_UNIX98_PTYS=y 717CONFIG_UNIX98_PTYS=y
633CONFIG_LEGACY_PTYS=y 718CONFIG_LEGACY_PTYS=y
634CONFIG_LEGACY_PTY_COUNT=256 719CONFIG_LEGACY_PTY_COUNT=256
@@ -660,6 +745,11 @@ CONFIG_SYNCLINK_CS=m
660# CONFIG_RAW_DRIVER is not set 745# CONFIG_RAW_DRIVER is not set
661 746
662# 747#
748# TPM devices
749#
750# CONFIG_TCG_TPM is not set
751
752#
663# I2C support 753# I2C support
664# 754#
665# CONFIG_I2C is not set 755# CONFIG_I2C is not set
@@ -670,10 +760,20 @@ CONFIG_SYNCLINK_CS=m
670# CONFIG_W1 is not set 760# CONFIG_W1 is not set
671 761
672# 762#
763# Hardware Monitoring support
764#
765# CONFIG_HWMON is not set
766# CONFIG_HWMON_VID is not set
767
768#
673# Misc devices 769# Misc devices
674# 770#
675 771
676# 772#
773# Multimedia Capabilities Port drivers
774#
775
776#
677# Multimedia devices 777# Multimedia devices
678# 778#
679# CONFIG_VIDEO_DEV is not set 779# CONFIG_VIDEO_DEV is not set
@@ -687,7 +787,6 @@ CONFIG_SYNCLINK_CS=m
687# Graphics support 787# Graphics support
688# 788#
689# CONFIG_FB is not set 789# CONFIG_FB is not set
690# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
691 790
692# 791#
693# Sound 792# Sound
@@ -697,13 +796,9 @@ CONFIG_SYNCLINK_CS=m
697# 796#
698# USB support 797# USB support
699# 798#
700# CONFIG_USB is not set
701CONFIG_USB_ARCH_HAS_HCD=y 799CONFIG_USB_ARCH_HAS_HCD=y
702CONFIG_USB_ARCH_HAS_OHCI=y 800CONFIG_USB_ARCH_HAS_OHCI=y
703 801# CONFIG_USB is not set
704#
705# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
706#
707 802
708# 803#
709# USB Gadget Support 804# USB Gadget Support
@@ -721,12 +816,17 @@ CONFIG_USB_ARCH_HAS_OHCI=y
721# CONFIG_INFINIBAND is not set 816# CONFIG_INFINIBAND is not set
722 817
723# 818#
819# SN Devices
820#
821
822#
724# File systems 823# File systems
725# 824#
726CONFIG_EXT2_FS=y 825CONFIG_EXT2_FS=y
727CONFIG_EXT2_FS_XATTR=y 826CONFIG_EXT2_FS_XATTR=y
728CONFIG_EXT2_FS_POSIX_ACL=y 827CONFIG_EXT2_FS_POSIX_ACL=y
729# CONFIG_EXT2_FS_SECURITY is not set 828# CONFIG_EXT2_FS_SECURITY is not set
829# CONFIG_EXT2_FS_XIP is not set
730CONFIG_EXT3_FS=y 830CONFIG_EXT3_FS=y
731CONFIG_EXT3_FS_XATTR=y 831CONFIG_EXT3_FS_XATTR=y
732CONFIG_EXT3_FS_POSIX_ACL=y 832CONFIG_EXT3_FS_POSIX_ACL=y
@@ -745,10 +845,12 @@ CONFIG_FS_POSIX_ACL=y
745# CONFIG_XFS_FS is not set 845# CONFIG_XFS_FS is not set
746# CONFIG_MINIX_FS is not set 846# CONFIG_MINIX_FS is not set
747# CONFIG_ROMFS_FS is not set 847# CONFIG_ROMFS_FS is not set
848CONFIG_INOTIFY=y
748# CONFIG_QUOTA is not set 849# CONFIG_QUOTA is not set
749CONFIG_DNOTIFY=y 850CONFIG_DNOTIFY=y
750CONFIG_AUTOFS_FS=m 851CONFIG_AUTOFS_FS=m
751CONFIG_AUTOFS4_FS=m 852CONFIG_AUTOFS4_FS=m
853CONFIG_FUSE_FS=m
752 854
753# 855#
754# CD-ROM/DVD Filesystems 856# CD-ROM/DVD Filesystems
@@ -769,13 +871,10 @@ CONFIG_AUTOFS4_FS=m
769CONFIG_PROC_FS=y 871CONFIG_PROC_FS=y
770CONFIG_PROC_KCORE=y 872CONFIG_PROC_KCORE=y
771CONFIG_SYSFS=y 873CONFIG_SYSFS=y
772# CONFIG_DEVFS_FS is not set
773CONFIG_DEVPTS_FS_XATTR=y
774CONFIG_DEVPTS_FS_SECURITY=y
775CONFIG_TMPFS=y 874CONFIG_TMPFS=y
776# CONFIG_TMPFS_XATTR is not set
777# CONFIG_HUGETLB_PAGE is not set 875# CONFIG_HUGETLB_PAGE is not set
778CONFIG_RAMFS=y 876CONFIG_RAMFS=y
877CONFIG_RELAYFS_FS=m
779 878
780# 879#
781# Miscellaneous filesystems 880# Miscellaneous filesystems
@@ -809,6 +908,7 @@ CONFIG_NFSD=m
809CONFIG_ROOT_NFS=y 908CONFIG_ROOT_NFS=y
810CONFIG_LOCKD=y 909CONFIG_LOCKD=y
811CONFIG_EXPORTFS=m 910CONFIG_EXPORTFS=m
911CONFIG_NFS_COMMON=y
812CONFIG_SUNRPC=y 912CONFIG_SUNRPC=y
813# CONFIG_RPCSEC_GSS_KRB5 is not set 913# CONFIG_RPCSEC_GSS_KRB5 is not set
814# CONFIG_RPCSEC_GSS_SPKM3 is not set 914# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -818,6 +918,7 @@ CONFIG_SMB_FS=m
818# CONFIG_NCP_FS is not set 918# CONFIG_NCP_FS is not set
819# CONFIG_CODA_FS is not set 919# CONFIG_CODA_FS is not set
820# CONFIG_AFS_FS is not set 920# CONFIG_AFS_FS is not set
921# CONFIG_9P_FS is not set
821 922
822# 923#
823# Partition Types 924# Partition Types
@@ -877,7 +978,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
877# 978#
878# Kernel hacking 979# Kernel hacking
879# 980#
981# CONFIG_PRINTK_TIME is not set
880# CONFIG_DEBUG_KERNEL is not set 982# CONFIG_DEBUG_KERNEL is not set
983CONFIG_LOG_BUF_SHIFT=14
881CONFIG_CROSSCOMPILE=y 984CONFIG_CROSSCOMPILE=y
882CONFIG_CMDLINE="" 985CONFIG_CMDLINE=""
883 986
@@ -893,26 +996,27 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
893# 996#
894CONFIG_CRYPTO=y 997CONFIG_CRYPTO=y
895CONFIG_CRYPTO_HMAC=y 998CONFIG_CRYPTO_HMAC=y
896CONFIG_CRYPTO_NULL=y 999CONFIG_CRYPTO_NULL=m
897# CONFIG_CRYPTO_MD4 is not set 1000CONFIG_CRYPTO_MD4=m
898# CONFIG_CRYPTO_MD5 is not set 1001CONFIG_CRYPTO_MD5=m
899# CONFIG_CRYPTO_SHA1 is not set 1002CONFIG_CRYPTO_SHA1=m
900# CONFIG_CRYPTO_SHA256 is not set 1003CONFIG_CRYPTO_SHA256=m
901CONFIG_CRYPTO_SHA512=y 1004CONFIG_CRYPTO_SHA512=m
902CONFIG_CRYPTO_WP512=m 1005CONFIG_CRYPTO_WP512=m
903# CONFIG_CRYPTO_DES is not set 1006CONFIG_CRYPTO_TGR192=m
904# CONFIG_CRYPTO_BLOWFISH is not set 1007CONFIG_CRYPTO_DES=m
905CONFIG_CRYPTO_TWOFISH=y 1008CONFIG_CRYPTO_BLOWFISH=m
906# CONFIG_CRYPTO_SERPENT is not set 1009CONFIG_CRYPTO_TWOFISH=m
1010CONFIG_CRYPTO_SERPENT=m
907CONFIG_CRYPTO_AES=m 1011CONFIG_CRYPTO_AES=m
908# CONFIG_CRYPTO_CAST5 is not set 1012CONFIG_CRYPTO_CAST5=m
909# CONFIG_CRYPTO_CAST6 is not set 1013CONFIG_CRYPTO_CAST6=m
910CONFIG_CRYPTO_TEA=m 1014CONFIG_CRYPTO_TEA=m
911# CONFIG_CRYPTO_ARC4 is not set 1015CONFIG_CRYPTO_ARC4=m
912CONFIG_CRYPTO_KHAZAD=m 1016CONFIG_CRYPTO_KHAZAD=m
913CONFIG_CRYPTO_ANUBIS=m 1017CONFIG_CRYPTO_ANUBIS=m
914CONFIG_CRYPTO_DEFLATE=y 1018CONFIG_CRYPTO_DEFLATE=m
915CONFIG_CRYPTO_MICHAEL_MIC=y 1019CONFIG_CRYPTO_MICHAEL_MIC=m
916CONFIG_CRYPTO_CRC32C=m 1020CONFIG_CRYPTO_CRC32C=m
917# CONFIG_CRYPTO_TEST is not set 1021# CONFIG_CRYPTO_TEST is not set
918 1022
@@ -924,9 +1028,8 @@ CONFIG_CRYPTO_CRC32C=m
924# Library routines 1028# Library routines
925# 1029#
926CONFIG_CRC_CCITT=m 1030CONFIG_CRC_CCITT=m
1031CONFIG_CRC16=m
927CONFIG_CRC32=y 1032CONFIG_CRC32=y
928CONFIG_LIBCRC32C=m 1033CONFIG_LIBCRC32C=m
929CONFIG_ZLIB_INFLATE=y 1034CONFIG_ZLIB_INFLATE=m
930CONFIG_ZLIB_DEFLATE=y 1035CONFIG_ZLIB_DEFLATE=m
931CONFIG_GENERIC_HARDIRQS=y
932CONFIG_GENERIC_IRQ_PROBE=y
diff --git a/arch/mips/configs/ddb5476_defconfig b/arch/mips/configs/ddb5476_defconfig
index 70addc73f699..b260e51eb517 100644
--- a/arch/mips/configs/ddb5476_defconfig
+++ b/arch/mips/configs/ddb5476_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:02 2005 4# Thu Oct 20 22:25:42 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14 27CONFIG_HOTPLUG=y
29# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -50,41 +53,69 @@ CONFIG_CC_ALIGN_JUMPS=0
50# 53#
51# Machine selection 54# Machine selection
52# 55#
53# CONFIG_MACH_JAZZ is not set 56# CONFIG_MIPS_MTX1 is not set
54# CONFIG_MACH_VR41XX is not set 57# CONFIG_MIPS_BOSPORUS is not set
55# CONFIG_TOSHIBA_JMR3927 is not set 58# CONFIG_MIPS_PB1000 is not set
59# CONFIG_MIPS_PB1100 is not set
60# CONFIG_MIPS_PB1500 is not set
61# CONFIG_MIPS_PB1550 is not set
62# CONFIG_MIPS_PB1200 is not set
63# CONFIG_MIPS_DB1000 is not set
64# CONFIG_MIPS_DB1100 is not set
65# CONFIG_MIPS_DB1500 is not set
66# CONFIG_MIPS_DB1550 is not set
67# CONFIG_MIPS_DB1200 is not set
68# CONFIG_MIPS_MIRAGE is not set
56# CONFIG_MIPS_COBALT is not set 69# CONFIG_MIPS_COBALT is not set
57# CONFIG_MACH_DECSTATION is not set 70# CONFIG_MACH_DECSTATION is not set
58# CONFIG_MIPS_EV64120 is not set 71# CONFIG_MIPS_EV64120 is not set
59# CONFIG_MIPS_EV96100 is not set 72# CONFIG_MIPS_EV96100 is not set
60# CONFIG_MIPS_IVR is not set 73# CONFIG_MIPS_IVR is not set
61# CONFIG_LASAT is not set
62# CONFIG_MIPS_ITE8172 is not set 74# CONFIG_MIPS_ITE8172 is not set
75# CONFIG_MACH_JAZZ is not set
76# CONFIG_LASAT is not set
63# CONFIG_MIPS_ATLAS is not set 77# CONFIG_MIPS_ATLAS is not set
64# CONFIG_MIPS_MALTA is not set 78# CONFIG_MIPS_MALTA is not set
65# CONFIG_MIPS_SEAD is not set 79# CONFIG_MIPS_SEAD is not set
80# CONFIG_MIPS_SIM is not set
81# CONFIG_MOMENCO_JAGUAR_ATX is not set
66# CONFIG_MOMENCO_OCELOT is not set 82# CONFIG_MOMENCO_OCELOT is not set
67# CONFIG_MOMENCO_OCELOT_G is not set
68# CONFIG_MOMENCO_OCELOT_C is not set
69# CONFIG_MOMENCO_OCELOT_3 is not set 83# CONFIG_MOMENCO_OCELOT_3 is not set
70# CONFIG_MOMENCO_JAGUAR_ATX is not set 84# CONFIG_MOMENCO_OCELOT_C is not set
71# CONFIG_PMC_YOSEMITE is not set 85# CONFIG_MOMENCO_OCELOT_G is not set
86# CONFIG_MIPS_XXS1500 is not set
87# CONFIG_PNX8550_V2PCI is not set
88# CONFIG_PNX8550_JBS is not set
72# CONFIG_DDB5074 is not set 89# CONFIG_DDB5074 is not set
73CONFIG_DDB5476=y 90CONFIG_DDB5476=y
74# CONFIG_DDB5477 is not set 91# CONFIG_DDB5477 is not set
75# CONFIG_NEC_OSPREY is not set 92# CONFIG_MACH_VR41XX is not set
93# CONFIG_PMC_YOSEMITE is not set
94# CONFIG_QEMU is not set
76# CONFIG_SGI_IP22 is not set 95# CONFIG_SGI_IP22 is not set
77# CONFIG_SOC_AU1X00 is not set 96# CONFIG_SGI_IP27 is not set
78# CONFIG_SIBYTE_SB1xxx_SOC is not set 97# CONFIG_SGI_IP32 is not set
98# CONFIG_SIBYTE_BIGSUR is not set
99# CONFIG_SIBYTE_SWARM is not set
100# CONFIG_SIBYTE_SENTOSA is not set
101# CONFIG_SIBYTE_RHONE is not set
102# CONFIG_SIBYTE_CARMEL is not set
103# CONFIG_SIBYTE_PTSWARM is not set
104# CONFIG_SIBYTE_LITTLESUR is not set
105# CONFIG_SIBYTE_CRHINE is not set
106# CONFIG_SIBYTE_CRHONE is not set
79# CONFIG_SNI_RM200_PCI is not set 107# CONFIG_SNI_RM200_PCI is not set
108# CONFIG_TOSHIBA_JMR3927 is not set
80# CONFIG_TOSHIBA_RBTX4927 is not set 109# CONFIG_TOSHIBA_RBTX4927 is not set
110# CONFIG_TOSHIBA_RBTX4938 is not set
81CONFIG_RWSEM_GENERIC_SPINLOCK=y 111CONFIG_RWSEM_GENERIC_SPINLOCK=y
82CONFIG_GENERIC_CALIBRATE_DELAY=y 112CONFIG_GENERIC_CALIBRATE_DELAY=y
83CONFIG_HAVE_DEC_LOCK=y
84CONFIG_DMA_NONCOHERENT=y 113CONFIG_DMA_NONCOHERENT=y
85CONFIG_DMA_NEED_PCI_MAP_STATE=y 114CONFIG_DMA_NEED_PCI_MAP_STATE=y
86CONFIG_I8259=y 115CONFIG_I8259=y
116# CONFIG_CPU_BIG_ENDIAN is not set
87CONFIG_CPU_LITTLE_ENDIAN=y 117CONFIG_CPU_LITTLE_ENDIAN=y
118CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
88CONFIG_IRQ_CPU=y 119CONFIG_IRQ_CPU=y
89CONFIG_DDB5XXX_COMMON=y 120CONFIG_DDB5XXX_COMMON=y
90CONFIG_MIPS_L1_CACHE_SHIFT=5 121CONFIG_MIPS_L1_CACHE_SHIFT=5
@@ -93,8 +124,10 @@ CONFIG_HAVE_STD_PC_SERIAL_PORT=y
93# 124#
94# CPU selection 125# CPU selection
95# 126#
96# CONFIG_CPU_MIPS32 is not set 127# CONFIG_CPU_MIPS32_R1 is not set
97# CONFIG_CPU_MIPS64 is not set 128# CONFIG_CPU_MIPS32_R2 is not set
129# CONFIG_CPU_MIPS64_R1 is not set
130# CONFIG_CPU_MIPS64_R2 is not set
98# CONFIG_CPU_R3000 is not set 131# CONFIG_CPU_R3000 is not set
99# CONFIG_CPU_TX39XX is not set 132# CONFIG_CPU_TX39XX is not set
100# CONFIG_CPU_VR41XX is not set 133# CONFIG_CPU_VR41XX is not set
@@ -110,14 +143,38 @@ CONFIG_CPU_R5432=y
110# CONFIG_CPU_RM7000 is not set 143# CONFIG_CPU_RM7000 is not set
111# CONFIG_CPU_RM9000 is not set 144# CONFIG_CPU_RM9000 is not set
112# CONFIG_CPU_SB1 is not set 145# CONFIG_CPU_SB1 is not set
146CONFIG_SYS_HAS_CPU_R5432=y
147CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
148CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
149CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
150CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
151
152#
153# Kernel type
154#
155CONFIG_32BIT=y
156# CONFIG_64BIT is not set
113CONFIG_PAGE_SIZE_4KB=y 157CONFIG_PAGE_SIZE_4KB=y
114# CONFIG_PAGE_SIZE_8KB is not set 158# CONFIG_PAGE_SIZE_8KB is not set
115# CONFIG_PAGE_SIZE_16KB is not set 159# CONFIG_PAGE_SIZE_16KB is not set
116# CONFIG_PAGE_SIZE_64KB is not set 160# CONFIG_PAGE_SIZE_64KB is not set
161# CONFIG_MIPS_MT is not set
117# CONFIG_CPU_ADVANCED is not set 162# CONFIG_CPU_ADVANCED is not set
118CONFIG_CPU_HAS_LLSC=y 163CONFIG_CPU_HAS_LLSC=y
119CONFIG_CPU_HAS_LLDSCD=y 164CONFIG_CPU_HAS_LLDSCD=y
120CONFIG_CPU_HAS_SYNC=y 165CONFIG_CPU_HAS_SYNC=y
166CONFIG_GENERIC_HARDIRQS=y
167CONFIG_GENERIC_IRQ_PROBE=y
168CONFIG_ARCH_FLATMEM_ENABLE=y
169CONFIG_SELECT_MEMORY_MODEL=y
170CONFIG_FLATMEM_MANUAL=y
171# CONFIG_DISCONTIGMEM_MANUAL is not set
172# CONFIG_SPARSEMEM_MANUAL is not set
173CONFIG_FLATMEM=y
174CONFIG_FLAT_NODE_MEM_MAP=y
175# CONFIG_SPARSEMEM_STATIC is not set
176CONFIG_PREEMPT_NONE=y
177# CONFIG_PREEMPT_VOLUNTARY is not set
121# CONFIG_PREEMPT is not set 178# CONFIG_PREEMPT is not set
122 179
123# 180#
@@ -126,7 +183,6 @@ CONFIG_CPU_HAS_SYNC=y
126CONFIG_HW_HAS_PCI=y 183CONFIG_HW_HAS_PCI=y
127CONFIG_PCI=y 184CONFIG_PCI=y
128CONFIG_PCI_LEGACY_PROC=y 185CONFIG_PCI_LEGACY_PROC=y
129CONFIG_PCI_NAMES=y
130CONFIG_ISA=y 186CONFIG_ISA=y
131CONFIG_MMU=y 187CONFIG_MMU=y
132 188
@@ -136,11 +192,6 @@ CONFIG_MMU=y
136# CONFIG_PCCARD is not set 192# CONFIG_PCCARD is not set
137 193
138# 194#
139# PC-card bridges
140#
141CONFIG_PCMCIA_PROBE=y
142
143#
144# PCI Hotplug Support 195# PCI Hotplug Support
145# 196#
146# CONFIG_HOTPLUG_PCI is not set 197# CONFIG_HOTPLUG_PCI is not set
@@ -153,6 +204,80 @@ CONFIG_BINFMT_ELF=y
153CONFIG_TRAD_SIGNALS=y 204CONFIG_TRAD_SIGNALS=y
154 205
155# 206#
207# Networking
208#
209CONFIG_NET=y
210
211#
212# Networking options
213#
214CONFIG_PACKET=y
215# CONFIG_PACKET_MMAP is not set
216CONFIG_UNIX=y
217CONFIG_XFRM=y
218CONFIG_XFRM_USER=y
219CONFIG_NET_KEY=y
220CONFIG_INET=y
221# CONFIG_IP_MULTICAST is not set
222# CONFIG_IP_ADVANCED_ROUTER is not set
223CONFIG_IP_FIB_HASH=y
224CONFIG_IP_PNP=y
225# CONFIG_IP_PNP_DHCP is not set
226CONFIG_IP_PNP_BOOTP=y
227# CONFIG_IP_PNP_RARP is not set
228# CONFIG_NET_IPIP is not set
229# CONFIG_NET_IPGRE is not set
230# CONFIG_ARPD is not set
231# CONFIG_SYN_COOKIES is not set
232# CONFIG_INET_AH is not set
233# CONFIG_INET_ESP is not set
234# CONFIG_INET_IPCOMP is not set
235CONFIG_INET_TUNNEL=y
236CONFIG_INET_DIAG=y
237CONFIG_INET_TCP_DIAG=y
238# CONFIG_TCP_CONG_ADVANCED is not set
239CONFIG_TCP_CONG_BIC=y
240# CONFIG_IPV6 is not set
241# CONFIG_NETFILTER is not set
242
243#
244# DCCP Configuration (EXPERIMENTAL)
245#
246# CONFIG_IP_DCCP is not set
247
248#
249# SCTP Configuration (EXPERIMENTAL)
250#
251# CONFIG_IP_SCTP is not set
252# CONFIG_ATM is not set
253# CONFIG_BRIDGE is not set
254# CONFIG_VLAN_8021Q is not set
255# CONFIG_DECNET is not set
256# CONFIG_LLC2 is not set
257# CONFIG_IPX is not set
258# CONFIG_ATALK is not set
259# CONFIG_X25 is not set
260# CONFIG_LAPB is not set
261# CONFIG_NET_DIVERT is not set
262# CONFIG_ECONET is not set
263# CONFIG_WAN_ROUTER is not set
264# CONFIG_NET_SCHED is not set
265# CONFIG_NET_CLS_ROUTE is not set
266
267#
268# Network testing
269#
270# CONFIG_NET_PKTGEN is not set
271# CONFIG_HAMRADIO is not set
272# CONFIG_IRDA is not set
273# CONFIG_BT is not set
274CONFIG_IEEE80211=y
275# CONFIG_IEEE80211_DEBUG is not set
276CONFIG_IEEE80211_CRYPT_WEP=y
277CONFIG_IEEE80211_CRYPT_CCMP=y
278CONFIG_IEEE80211_CRYPT_TKIP=y
279
280#
156# Device Drivers 281# Device Drivers
157# 282#
158 283
@@ -161,7 +286,12 @@ CONFIG_TRAD_SIGNALS=y
161# 286#
162CONFIG_STANDALONE=y 287CONFIG_STANDALONE=y
163CONFIG_PREVENT_FIRMWARE_BUILD=y 288CONFIG_PREVENT_FIRMWARE_BUILD=y
164# CONFIG_FW_LOADER is not set 289CONFIG_FW_LOADER=y
290
291#
292# Connector - unified userspace <-> kernelspace linker
293#
294CONFIG_CONNECTOR=y
165 295
166# 296#
167# Memory Technology Devices (MTD) 297# Memory Technology Devices (MTD)
@@ -181,8 +311,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
181# 311#
182# Block devices 312# Block devices
183# 313#
184# CONFIG_BLK_DEV_FD is not set
185# CONFIG_BLK_DEV_XD is not set
186# CONFIG_BLK_CPQ_DA is not set 314# CONFIG_BLK_CPQ_DA is not set
187# CONFIG_BLK_CPQ_CISS_DA is not set 315# CONFIG_BLK_CPQ_CISS_DA is not set
188# CONFIG_BLK_DEV_DAC960 is not set 316# CONFIG_BLK_DEV_DAC960 is not set
@@ -193,7 +321,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
193# CONFIG_BLK_DEV_SX8 is not set 321# CONFIG_BLK_DEV_SX8 is not set
194# CONFIG_BLK_DEV_RAM is not set 322# CONFIG_BLK_DEV_RAM is not set
195CONFIG_BLK_DEV_RAM_COUNT=16 323CONFIG_BLK_DEV_RAM_COUNT=16
196CONFIG_INITRAMFS_SOURCE=""
197# CONFIG_LBD is not set 324# CONFIG_LBD is not set
198CONFIG_CDROM_PKTCDVD=y 325CONFIG_CDROM_PKTCDVD=y
199CONFIG_CDROM_PKTCDVD_BUFFERS=8 326CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -239,6 +366,7 @@ CONFIG_IDE_GENERIC=y
239# 366#
240# SCSI device support 367# SCSI device support
241# 368#
369CONFIG_RAID_ATTRS=y
242# CONFIG_SCSI is not set 370# CONFIG_SCSI is not set
243 371
244# 372#
@@ -254,6 +382,7 @@ CONFIG_IDE_GENERIC=y
254# 382#
255# Fusion MPT device support 383# Fusion MPT device support
256# 384#
385# CONFIG_FUSION is not set
257 386
258# 387#
259# IEEE 1394 (FireWire) support 388# IEEE 1394 (FireWire) support
@@ -266,78 +395,13 @@ CONFIG_IDE_GENERIC=y
266# CONFIG_I2O is not set 395# CONFIG_I2O is not set
267 396
268# 397#
269# Networking support 398# Network device support
270#
271CONFIG_NET=y
272
273#
274# Networking options
275#
276CONFIG_PACKET=y
277# CONFIG_PACKET_MMAP is not set
278CONFIG_NETLINK_DEV=y
279CONFIG_UNIX=y
280CONFIG_NET_KEY=y
281CONFIG_INET=y
282# CONFIG_IP_MULTICAST is not set
283# CONFIG_IP_ADVANCED_ROUTER is not set
284CONFIG_IP_PNP=y
285# CONFIG_IP_PNP_DHCP is not set
286CONFIG_IP_PNP_BOOTP=y
287# CONFIG_IP_PNP_RARP is not set
288# CONFIG_NET_IPIP is not set
289# CONFIG_NET_IPGRE is not set
290# CONFIG_ARPD is not set
291# CONFIG_SYN_COOKIES is not set
292# CONFIG_INET_AH is not set
293# CONFIG_INET_ESP is not set
294# CONFIG_INET_IPCOMP is not set
295CONFIG_INET_TUNNEL=y
296CONFIG_IP_TCPDIAG=y
297# CONFIG_IP_TCPDIAG_IPV6 is not set
298# CONFIG_IPV6 is not set
299# CONFIG_NETFILTER is not set
300CONFIG_XFRM=y
301CONFIG_XFRM_USER=y
302
303#
304# SCTP Configuration (EXPERIMENTAL)
305# 399#
306# CONFIG_IP_SCTP is not set
307# CONFIG_ATM is not set
308# CONFIG_BRIDGE is not set
309# CONFIG_VLAN_8021Q is not set
310# CONFIG_DECNET is not set
311# CONFIG_LLC2 is not set
312# CONFIG_IPX is not set
313# CONFIG_ATALK is not set
314# CONFIG_X25 is not set
315# CONFIG_LAPB is not set
316# CONFIG_NET_DIVERT is not set
317# CONFIG_ECONET is not set
318# CONFIG_WAN_ROUTER is not set
319
320#
321# QoS and/or fair queueing
322#
323# CONFIG_NET_SCHED is not set
324# CONFIG_NET_CLS_ROUTE is not set
325
326#
327# Network testing
328#
329# CONFIG_NET_PKTGEN is not set
330# CONFIG_NETPOLL is not set
331# CONFIG_NET_POLL_CONTROLLER is not set
332# CONFIG_HAMRADIO is not set
333# CONFIG_IRDA is not set
334# CONFIG_BT is not set
335CONFIG_NETDEVICES=y 400CONFIG_NETDEVICES=y
336# CONFIG_DUMMY is not set 401# CONFIG_DUMMY is not set
337# CONFIG_BONDING is not set 402# CONFIG_BONDING is not set
338# CONFIG_EQUALIZER is not set 403# CONFIG_EQUALIZER is not set
339# CONFIG_TUN is not set 404# CONFIG_TUN is not set
340# CONFIG_ETHERTAP is not set
341 405
342# 406#
343# ARCnet devices 407# ARCnet devices
@@ -345,6 +409,21 @@ CONFIG_NETDEVICES=y
345# CONFIG_ARCNET is not set 409# CONFIG_ARCNET is not set
346 410
347# 411#
412# PHY device support
413#
414CONFIG_PHYLIB=y
415CONFIG_PHYCONTROL=y
416
417#
418# MII PHY device drivers
419#
420CONFIG_MARVELL_PHY=y
421CONFIG_DAVICOM_PHY=y
422CONFIG_QSEMI_PHY=y
423CONFIG_LXT_PHY=y
424CONFIG_CICADA_PHY=y
425
426#
348# Ethernet (10 or 100Mbit) 427# Ethernet (10 or 100Mbit)
349# 428#
350CONFIG_NET_ETHERNET=y 429CONFIG_NET_ETHERNET=y
@@ -352,7 +431,6 @@ CONFIG_NET_ETHERNET=y
352# CONFIG_HAPPYMEAL is not set 431# CONFIG_HAPPYMEAL is not set
353# CONFIG_SUNGEM is not set 432# CONFIG_SUNGEM is not set
354# CONFIG_NET_VENDOR_3COM is not set 433# CONFIG_NET_VENDOR_3COM is not set
355# CONFIG_LANCE is not set
356# CONFIG_NET_VENDOR_SMC is not set 434# CONFIG_NET_VENDOR_SMC is not set
357# CONFIG_NET_VENDOR_RACAL is not set 435# CONFIG_NET_VENDOR_RACAL is not set
358 436
@@ -377,12 +455,16 @@ CONFIG_NET_ETHERNET=y
377# CONFIG_HAMACHI is not set 455# CONFIG_HAMACHI is not set
378# CONFIG_YELLOWFIN is not set 456# CONFIG_YELLOWFIN is not set
379# CONFIG_R8169 is not set 457# CONFIG_R8169 is not set
458# CONFIG_SIS190 is not set
459# CONFIG_SKGE is not set
380# CONFIG_SK98LIN is not set 460# CONFIG_SK98LIN is not set
381# CONFIG_TIGON3 is not set 461# CONFIG_TIGON3 is not set
462# CONFIG_BNX2 is not set
382 463
383# 464#
384# Ethernet (10000 Mbit) 465# Ethernet (10000 Mbit)
385# 466#
467# CONFIG_CHELSIO_T1 is not set
386# CONFIG_IXGB is not set 468# CONFIG_IXGB is not set
387# CONFIG_S2IO is not set 469# CONFIG_S2IO is not set
388 470
@@ -395,6 +477,8 @@ CONFIG_NET_ETHERNET=y
395# Wireless LAN (non-hamradio) 477# Wireless LAN (non-hamradio)
396# 478#
397# CONFIG_NET_RADIO is not set 479# CONFIG_NET_RADIO is not set
480# CONFIG_IPW_DEBUG is not set
481CONFIG_IPW2200=y
398 482
399# 483#
400# Wan interfaces 484# Wan interfaces
@@ -406,6 +490,8 @@ CONFIG_NET_ETHERNET=y
406# CONFIG_SLIP is not set 490# CONFIG_SLIP is not set
407# CONFIG_SHAPER is not set 491# CONFIG_SHAPER is not set
408# CONFIG_NETCONSOLE is not set 492# CONFIG_NETCONSOLE is not set
493# CONFIG_NETPOLL is not set
494# CONFIG_NET_POLL_CONTROLLER is not set
409 495
410# 496#
411# ISDN subsystem 497# ISDN subsystem
@@ -435,19 +521,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
435# CONFIG_INPUT_EVBUG is not set 521# CONFIG_INPUT_EVBUG is not set
436 522
437# 523#
438# Input I/O drivers
439#
440# CONFIG_GAMEPORT is not set
441CONFIG_SOUND_GAMEPORT=y
442CONFIG_SERIO=y
443# CONFIG_SERIO_I8042 is not set
444CONFIG_SERIO_SERPORT=y
445# CONFIG_SERIO_CT82C710 is not set
446# CONFIG_SERIO_PCIPS2 is not set
447# CONFIG_SERIO_LIBPS2 is not set
448CONFIG_SERIO_RAW=y
449
450#
451# Input Device Drivers 524# Input Device Drivers
452# 525#
453# CONFIG_INPUT_KEYBOARD is not set 526# CONFIG_INPUT_KEYBOARD is not set
@@ -457,6 +530,17 @@ CONFIG_SERIO_RAW=y
457# CONFIG_INPUT_MISC is not set 530# CONFIG_INPUT_MISC is not set
458 531
459# 532#
533# Hardware I/O ports
534#
535CONFIG_SERIO=y
536# CONFIG_SERIO_I8042 is not set
537CONFIG_SERIO_SERPORT=y
538# CONFIG_SERIO_PCIPS2 is not set
539# CONFIG_SERIO_LIBPS2 is not set
540CONFIG_SERIO_RAW=y
541# CONFIG_GAMEPORT is not set
542
543#
460# Character devices 544# Character devices
461# 545#
462CONFIG_VT=y 546CONFIG_VT=y
@@ -477,6 +561,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4
477# 561#
478CONFIG_SERIAL_CORE=y 562CONFIG_SERIAL_CORE=y
479CONFIG_SERIAL_CORE_CONSOLE=y 563CONFIG_SERIAL_CORE_CONSOLE=y
564# CONFIG_SERIAL_JSM is not set
480CONFIG_UNIX98_PTYS=y 565CONFIG_UNIX98_PTYS=y
481CONFIG_LEGACY_PTYS=y 566CONFIG_LEGACY_PTYS=y
482CONFIG_LEGACY_PTY_COUNT=256 567CONFIG_LEGACY_PTY_COUNT=256
@@ -503,6 +588,11 @@ CONFIG_LEGACY_PTY_COUNT=256
503# CONFIG_RAW_DRIVER is not set 588# CONFIG_RAW_DRIVER is not set
504 589
505# 590#
591# TPM devices
592#
593# CONFIG_TCG_TPM is not set
594
595#
506# I2C support 596# I2C support
507# 597#
508# CONFIG_I2C is not set 598# CONFIG_I2C is not set
@@ -513,10 +603,20 @@ CONFIG_LEGACY_PTY_COUNT=256
513# CONFIG_W1 is not set 603# CONFIG_W1 is not set
514 604
515# 605#
606# Hardware Monitoring support
607#
608# CONFIG_HWMON is not set
609# CONFIG_HWMON_VID is not set
610
611#
516# Misc devices 612# Misc devices
517# 613#
518 614
519# 615#
616# Multimedia Capabilities Port drivers
617#
618
619#
520# Multimedia devices 620# Multimedia devices
521# 621#
522# CONFIG_VIDEO_DEV is not set 622# CONFIG_VIDEO_DEV is not set
@@ -530,6 +630,11 @@ CONFIG_LEGACY_PTY_COUNT=256
530# Graphics support 630# Graphics support
531# 631#
532CONFIG_FB=y 632CONFIG_FB=y
633# CONFIG_FB_CFB_FILLRECT is not set
634# CONFIG_FB_CFB_COPYAREA is not set
635# CONFIG_FB_CFB_IMAGEBLIT is not set
636# CONFIG_FB_SOFT_CURSOR is not set
637# CONFIG_FB_MACMODES is not set
533# CONFIG_FB_MODE_HELPERS is not set 638# CONFIG_FB_MODE_HELPERS is not set
534# CONFIG_FB_TILEBLITTING is not set 639# CONFIG_FB_TILEBLITTING is not set
535# CONFIG_FB_CIRRUS is not set 640# CONFIG_FB_CIRRUS is not set
@@ -537,6 +642,7 @@ CONFIG_FB=y
537# CONFIG_FB_CYBER2000 is not set 642# CONFIG_FB_CYBER2000 is not set
538# CONFIG_FB_ASILIANT is not set 643# CONFIG_FB_ASILIANT is not set
539# CONFIG_FB_IMSTT is not set 644# CONFIG_FB_IMSTT is not set
645# CONFIG_FB_NVIDIA is not set
540# CONFIG_FB_RIVA is not set 646# CONFIG_FB_RIVA is not set
541# CONFIG_FB_MATROX is not set 647# CONFIG_FB_MATROX is not set
542# CONFIG_FB_RADEON_OLD is not set 648# CONFIG_FB_RADEON_OLD is not set
@@ -549,8 +655,11 @@ CONFIG_FB=y
549# CONFIG_FB_KYRO is not set 655# CONFIG_FB_KYRO is not set
550# CONFIG_FB_3DFX is not set 656# CONFIG_FB_3DFX is not set
551# CONFIG_FB_VOODOO1 is not set 657# CONFIG_FB_VOODOO1 is not set
658# CONFIG_FB_SMIVGX is not set
659# CONFIG_FB_CYBLA is not set
552# CONFIG_FB_TRIDENT is not set 660# CONFIG_FB_TRIDENT is not set
553# CONFIG_FB_E1356 is not set 661# CONFIG_FB_E1356 is not set
662# CONFIG_FB_S1D13XXX is not set
554# CONFIG_FB_VIRTUAL is not set 663# CONFIG_FB_VIRTUAL is not set
555 664
556# 665#
@@ -575,13 +684,9 @@ CONFIG_DUMMY_CONSOLE=y
575# 684#
576# USB support 685# USB support
577# 686#
578# CONFIG_USB is not set
579CONFIG_USB_ARCH_HAS_HCD=y 687CONFIG_USB_ARCH_HAS_HCD=y
580CONFIG_USB_ARCH_HAS_OHCI=y 688CONFIG_USB_ARCH_HAS_OHCI=y
581 689# CONFIG_USB is not set
582#
583# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
584#
585 690
586# 691#
587# USB Gadget Support 692# USB Gadget Support
@@ -599,21 +704,29 @@ CONFIG_USB_ARCH_HAS_OHCI=y
599# CONFIG_INFINIBAND is not set 704# CONFIG_INFINIBAND is not set
600 705
601# 706#
707# SN Devices
708#
709
710#
602# File systems 711# File systems
603# 712#
604CONFIG_EXT2_FS=y 713CONFIG_EXT2_FS=y
605# CONFIG_EXT2_FS_XATTR is not set 714# CONFIG_EXT2_FS_XATTR is not set
715# CONFIG_EXT2_FS_XIP is not set
606# CONFIG_EXT3_FS is not set 716# CONFIG_EXT3_FS is not set
607# CONFIG_JBD is not set 717# CONFIG_JBD is not set
608# CONFIG_REISERFS_FS is not set 718# CONFIG_REISERFS_FS is not set
609# CONFIG_JFS_FS is not set 719# CONFIG_JFS_FS is not set
720# CONFIG_FS_POSIX_ACL is not set
610# CONFIG_XFS_FS is not set 721# CONFIG_XFS_FS is not set
611# CONFIG_MINIX_FS is not set 722# CONFIG_MINIX_FS is not set
612# CONFIG_ROMFS_FS is not set 723# CONFIG_ROMFS_FS is not set
724CONFIG_INOTIFY=y
613# CONFIG_QUOTA is not set 725# CONFIG_QUOTA is not set
614CONFIG_DNOTIFY=y 726CONFIG_DNOTIFY=y
615# CONFIG_AUTOFS_FS is not set 727# CONFIG_AUTOFS_FS is not set
616# CONFIG_AUTOFS4_FS is not set 728# CONFIG_AUTOFS4_FS is not set
729CONFIG_FUSE_FS=y
617 730
618# 731#
619# CD-ROM/DVD Filesystems 732# CD-ROM/DVD Filesystems
@@ -634,12 +747,10 @@ CONFIG_DNOTIFY=y
634CONFIG_PROC_FS=y 747CONFIG_PROC_FS=y
635CONFIG_PROC_KCORE=y 748CONFIG_PROC_KCORE=y
636CONFIG_SYSFS=y 749CONFIG_SYSFS=y
637# CONFIG_DEVFS_FS is not set
638CONFIG_DEVPTS_FS_XATTR=y
639CONFIG_DEVPTS_FS_SECURITY=y
640# CONFIG_TMPFS is not set 750# CONFIG_TMPFS is not set
641# CONFIG_HUGETLB_PAGE is not set 751# CONFIG_HUGETLB_PAGE is not set
642CONFIG_RAMFS=y 752CONFIG_RAMFS=y
753CONFIG_RELAYFS_FS=y
643 754
644# 755#
645# Miscellaneous filesystems 756# Miscellaneous filesystems
@@ -668,7 +779,7 @@ CONFIG_NFS_FS=y
668# CONFIG_NFSD is not set 779# CONFIG_NFSD is not set
669CONFIG_ROOT_NFS=y 780CONFIG_ROOT_NFS=y
670CONFIG_LOCKD=y 781CONFIG_LOCKD=y
671# CONFIG_EXPORTFS is not set 782CONFIG_NFS_COMMON=y
672CONFIG_SUNRPC=y 783CONFIG_SUNRPC=y
673# CONFIG_RPCSEC_GSS_KRB5 is not set 784# CONFIG_RPCSEC_GSS_KRB5 is not set
674# CONFIG_RPCSEC_GSS_SPKM3 is not set 785# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -677,6 +788,7 @@ CONFIG_SUNRPC=y
677# CONFIG_NCP_FS is not set 788# CONFIG_NCP_FS is not set
678# CONFIG_CODA_FS is not set 789# CONFIG_CODA_FS is not set
679# CONFIG_AFS_FS is not set 790# CONFIG_AFS_FS is not set
791# CONFIG_9P_FS is not set
680 792
681# 793#
682# Partition Types 794# Partition Types
@@ -697,7 +809,9 @@ CONFIG_MSDOS_PARTITION=y
697# 809#
698# Kernel hacking 810# Kernel hacking
699# 811#
812# CONFIG_PRINTK_TIME is not set
700# CONFIG_DEBUG_KERNEL is not set 813# CONFIG_DEBUG_KERNEL is not set
814CONFIG_LOG_BUF_SHIFT=14
701CONFIG_CROSSCOMPILE=y 815CONFIG_CROSSCOMPILE=y
702CONFIG_CMDLINE="ip=any" 816CONFIG_CMDLINE="ip=any"
703 817
@@ -711,7 +825,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
711# 825#
712# Cryptographic options 826# Cryptographic options
713# 827#
714# CONFIG_CRYPTO is not set 828CONFIG_CRYPTO=y
829CONFIG_CRYPTO_HMAC=y
830CONFIG_CRYPTO_NULL=y
831CONFIG_CRYPTO_MD4=y
832CONFIG_CRYPTO_MD5=y
833CONFIG_CRYPTO_SHA1=y
834CONFIG_CRYPTO_SHA256=y
835CONFIG_CRYPTO_SHA512=y
836CONFIG_CRYPTO_WP512=y
837CONFIG_CRYPTO_TGR192=y
838CONFIG_CRYPTO_DES=y
839CONFIG_CRYPTO_BLOWFISH=y
840CONFIG_CRYPTO_TWOFISH=y
841CONFIG_CRYPTO_SERPENT=y
842CONFIG_CRYPTO_AES=y
843CONFIG_CRYPTO_CAST5=y
844CONFIG_CRYPTO_CAST6=y
845CONFIG_CRYPTO_TEA=y
846CONFIG_CRYPTO_ARC4=y
847CONFIG_CRYPTO_KHAZAD=y
848CONFIG_CRYPTO_ANUBIS=y
849CONFIG_CRYPTO_DEFLATE=y
850CONFIG_CRYPTO_MICHAEL_MIC=y
851CONFIG_CRYPTO_CRC32C=y
852# CONFIG_CRYPTO_TEST is not set
715 853
716# 854#
717# Hardware crypto devices 855# Hardware crypto devices
@@ -721,7 +859,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
721# Library routines 859# Library routines
722# 860#
723# CONFIG_CRC_CCITT is not set 861# CONFIG_CRC_CCITT is not set
724# CONFIG_CRC32 is not set 862CONFIG_CRC16=y
725# CONFIG_LIBCRC32C is not set 863CONFIG_CRC32=y
726CONFIG_GENERIC_HARDIRQS=y 864CONFIG_LIBCRC32C=y
727CONFIG_GENERIC_IRQ_PROBE=y 865CONFIG_ZLIB_INFLATE=y
866CONFIG_ZLIB_DEFLATE=y
diff --git a/arch/mips/configs/ddb5477_defconfig b/arch/mips/configs/ddb5477_defconfig
index 60292808b384..c2a01df3c8df 100644
--- a/arch/mips/configs/ddb5477_defconfig
+++ b/arch/mips/configs/ddb5477_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:02 2005 4# Thu Oct 20 22:25:45 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14 27CONFIG_HOTPLUG=y
29# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -50,42 +53,70 @@ CONFIG_CC_ALIGN_JUMPS=0
50# 53#
51# Machine selection 54# Machine selection
52# 55#
53# CONFIG_MACH_JAZZ is not set 56# CONFIG_MIPS_MTX1 is not set
54# CONFIG_MACH_VR41XX is not set 57# CONFIG_MIPS_BOSPORUS is not set
55# CONFIG_TOSHIBA_JMR3927 is not set 58# CONFIG_MIPS_PB1000 is not set
59# CONFIG_MIPS_PB1100 is not set
60# CONFIG_MIPS_PB1500 is not set
61# CONFIG_MIPS_PB1550 is not set
62# CONFIG_MIPS_PB1200 is not set
63# CONFIG_MIPS_DB1000 is not set
64# CONFIG_MIPS_DB1100 is not set
65# CONFIG_MIPS_DB1500 is not set
66# CONFIG_MIPS_DB1550 is not set
67# CONFIG_MIPS_DB1200 is not set
68# CONFIG_MIPS_MIRAGE is not set
56# CONFIG_MIPS_COBALT is not set 69# CONFIG_MIPS_COBALT is not set
57# CONFIG_MACH_DECSTATION is not set 70# CONFIG_MACH_DECSTATION is not set
58# CONFIG_MIPS_EV64120 is not set 71# CONFIG_MIPS_EV64120 is not set
59# CONFIG_MIPS_EV96100 is not set 72# CONFIG_MIPS_EV96100 is not set
60# CONFIG_MIPS_IVR is not set 73# CONFIG_MIPS_IVR is not set
61# CONFIG_LASAT is not set
62# CONFIG_MIPS_ITE8172 is not set 74# CONFIG_MIPS_ITE8172 is not set
75# CONFIG_MACH_JAZZ is not set
76# CONFIG_LASAT is not set
63# CONFIG_MIPS_ATLAS is not set 77# CONFIG_MIPS_ATLAS is not set
64# CONFIG_MIPS_MALTA is not set 78# CONFIG_MIPS_MALTA is not set
65# CONFIG_MIPS_SEAD is not set 79# CONFIG_MIPS_SEAD is not set
80# CONFIG_MIPS_SIM is not set
81# CONFIG_MOMENCO_JAGUAR_ATX is not set
66# CONFIG_MOMENCO_OCELOT is not set 82# CONFIG_MOMENCO_OCELOT is not set
67# CONFIG_MOMENCO_OCELOT_G is not set
68# CONFIG_MOMENCO_OCELOT_C is not set
69# CONFIG_MOMENCO_OCELOT_3 is not set 83# CONFIG_MOMENCO_OCELOT_3 is not set
70# CONFIG_MOMENCO_JAGUAR_ATX is not set 84# CONFIG_MOMENCO_OCELOT_C is not set
71# CONFIG_PMC_YOSEMITE is not set 85# CONFIG_MOMENCO_OCELOT_G is not set
86# CONFIG_MIPS_XXS1500 is not set
87# CONFIG_PNX8550_V2PCI is not set
88# CONFIG_PNX8550_JBS is not set
72# CONFIG_DDB5074 is not set 89# CONFIG_DDB5074 is not set
73# CONFIG_DDB5476 is not set 90# CONFIG_DDB5476 is not set
74CONFIG_DDB5477=y 91CONFIG_DDB5477=y
75CONFIG_DDB5477_BUS_FREQUENCY=0 92# CONFIG_MACH_VR41XX is not set
76# CONFIG_NEC_OSPREY is not set 93# CONFIG_PMC_YOSEMITE is not set
94# CONFIG_QEMU is not set
77# CONFIG_SGI_IP22 is not set 95# CONFIG_SGI_IP22 is not set
78# CONFIG_SOC_AU1X00 is not set 96# CONFIG_SGI_IP27 is not set
79# CONFIG_SIBYTE_SB1xxx_SOC is not set 97# CONFIG_SGI_IP32 is not set
98# CONFIG_SIBYTE_BIGSUR is not set
99# CONFIG_SIBYTE_SWARM is not set
100# CONFIG_SIBYTE_SENTOSA is not set
101# CONFIG_SIBYTE_RHONE is not set
102# CONFIG_SIBYTE_CARMEL is not set
103# CONFIG_SIBYTE_PTSWARM is not set
104# CONFIG_SIBYTE_LITTLESUR is not set
105# CONFIG_SIBYTE_CRHINE is not set
106# CONFIG_SIBYTE_CRHONE is not set
80# CONFIG_SNI_RM200_PCI is not set 107# CONFIG_SNI_RM200_PCI is not set
108# CONFIG_TOSHIBA_JMR3927 is not set
81# CONFIG_TOSHIBA_RBTX4927 is not set 109# CONFIG_TOSHIBA_RBTX4927 is not set
110# CONFIG_TOSHIBA_RBTX4938 is not set
111CONFIG_DDB5477_BUS_FREQUENCY=0
82CONFIG_RWSEM_GENERIC_SPINLOCK=y 112CONFIG_RWSEM_GENERIC_SPINLOCK=y
83CONFIG_GENERIC_CALIBRATE_DELAY=y 113CONFIG_GENERIC_CALIBRATE_DELAY=y
84CONFIG_HAVE_DEC_LOCK=y
85CONFIG_DMA_NONCOHERENT=y 114CONFIG_DMA_NONCOHERENT=y
86CONFIG_DMA_NEED_PCI_MAP_STATE=y 115CONFIG_DMA_NEED_PCI_MAP_STATE=y
87CONFIG_I8259=y 116CONFIG_I8259=y
117# CONFIG_CPU_BIG_ENDIAN is not set
88CONFIG_CPU_LITTLE_ENDIAN=y 118CONFIG_CPU_LITTLE_ENDIAN=y
119CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
89CONFIG_IRQ_CPU=y 120CONFIG_IRQ_CPU=y
90CONFIG_DDB5XXX_COMMON=y 121CONFIG_DDB5XXX_COMMON=y
91CONFIG_MIPS_L1_CACHE_SHIFT=5 122CONFIG_MIPS_L1_CACHE_SHIFT=5
@@ -93,8 +124,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
93# 124#
94# CPU selection 125# CPU selection
95# 126#
96# CONFIG_CPU_MIPS32 is not set 127# CONFIG_CPU_MIPS32_R1 is not set
97# CONFIG_CPU_MIPS64 is not set 128# CONFIG_CPU_MIPS32_R2 is not set
129# CONFIG_CPU_MIPS64_R1 is not set
130# CONFIG_CPU_MIPS64_R2 is not set
98# CONFIG_CPU_R3000 is not set 131# CONFIG_CPU_R3000 is not set
99# CONFIG_CPU_TX39XX is not set 132# CONFIG_CPU_TX39XX is not set
100# CONFIG_CPU_VR41XX is not set 133# CONFIG_CPU_VR41XX is not set
@@ -110,14 +143,38 @@ CONFIG_CPU_R5432=y
110# CONFIG_CPU_RM7000 is not set 143# CONFIG_CPU_RM7000 is not set
111# CONFIG_CPU_RM9000 is not set 144# CONFIG_CPU_RM9000 is not set
112# CONFIG_CPU_SB1 is not set 145# CONFIG_CPU_SB1 is not set
146CONFIG_SYS_HAS_CPU_R5432=y
147CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
148CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
149CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
150CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
151
152#
153# Kernel type
154#
155CONFIG_32BIT=y
156# CONFIG_64BIT is not set
113CONFIG_PAGE_SIZE_4KB=y 157CONFIG_PAGE_SIZE_4KB=y
114# CONFIG_PAGE_SIZE_8KB is not set 158# CONFIG_PAGE_SIZE_8KB is not set
115# CONFIG_PAGE_SIZE_16KB is not set 159# CONFIG_PAGE_SIZE_16KB is not set
116# CONFIG_PAGE_SIZE_64KB is not set 160# CONFIG_PAGE_SIZE_64KB is not set
161# CONFIG_MIPS_MT is not set
117# CONFIG_CPU_ADVANCED is not set 162# CONFIG_CPU_ADVANCED is not set
118CONFIG_CPU_HAS_LLSC=y 163CONFIG_CPU_HAS_LLSC=y
119CONFIG_CPU_HAS_LLDSCD=y 164CONFIG_CPU_HAS_LLDSCD=y
120CONFIG_CPU_HAS_SYNC=y 165CONFIG_CPU_HAS_SYNC=y
166CONFIG_GENERIC_HARDIRQS=y
167CONFIG_GENERIC_IRQ_PROBE=y
168CONFIG_ARCH_FLATMEM_ENABLE=y
169CONFIG_SELECT_MEMORY_MODEL=y
170CONFIG_FLATMEM_MANUAL=y
171# CONFIG_DISCONTIGMEM_MANUAL is not set
172# CONFIG_SPARSEMEM_MANUAL is not set
173CONFIG_FLATMEM=y
174CONFIG_FLAT_NODE_MEM_MAP=y
175# CONFIG_SPARSEMEM_STATIC is not set
176CONFIG_PREEMPT_NONE=y
177# CONFIG_PREEMPT_VOLUNTARY is not set
121# CONFIG_PREEMPT is not set 178# CONFIG_PREEMPT is not set
122 179
123# 180#
@@ -126,7 +183,6 @@ CONFIG_CPU_HAS_SYNC=y
126CONFIG_HW_HAS_PCI=y 183CONFIG_HW_HAS_PCI=y
127CONFIG_PCI=y 184CONFIG_PCI=y
128CONFIG_PCI_LEGACY_PROC=y 185CONFIG_PCI_LEGACY_PROC=y
129CONFIG_PCI_NAMES=y
130CONFIG_MMU=y 186CONFIG_MMU=y
131 187
132# 188#
@@ -135,10 +191,6 @@ CONFIG_MMU=y
135# CONFIG_PCCARD is not set 191# CONFIG_PCCARD is not set
136 192
137# 193#
138# PC-card bridges
139#
140
141#
142# PCI Hotplug Support 194# PCI Hotplug Support
143# 195#
144# CONFIG_HOTPLUG_PCI is not set 196# CONFIG_HOTPLUG_PCI is not set
@@ -151,6 +203,80 @@ CONFIG_BINFMT_ELF=y
151CONFIG_TRAD_SIGNALS=y 203CONFIG_TRAD_SIGNALS=y
152 204
153# 205#
206# Networking
207#
208CONFIG_NET=y
209
210#
211# Networking options
212#
213CONFIG_PACKET=y
214# CONFIG_PACKET_MMAP is not set
215CONFIG_UNIX=y
216CONFIG_XFRM=y
217CONFIG_XFRM_USER=y
218CONFIG_NET_KEY=y
219CONFIG_INET=y
220# CONFIG_IP_MULTICAST is not set
221# CONFIG_IP_ADVANCED_ROUTER is not set
222CONFIG_IP_FIB_HASH=y
223CONFIG_IP_PNP=y
224# CONFIG_IP_PNP_DHCP is not set
225CONFIG_IP_PNP_BOOTP=y
226# CONFIG_IP_PNP_RARP is not set
227# CONFIG_NET_IPIP is not set
228# CONFIG_NET_IPGRE is not set
229# CONFIG_ARPD is not set
230# CONFIG_SYN_COOKIES is not set
231# CONFIG_INET_AH is not set
232# CONFIG_INET_ESP is not set
233# CONFIG_INET_IPCOMP is not set
234CONFIG_INET_TUNNEL=y
235CONFIG_INET_DIAG=y
236CONFIG_INET_TCP_DIAG=y
237# CONFIG_TCP_CONG_ADVANCED is not set
238CONFIG_TCP_CONG_BIC=y
239# CONFIG_IPV6 is not set
240# CONFIG_NETFILTER is not set
241
242#
243# DCCP Configuration (EXPERIMENTAL)
244#
245# CONFIG_IP_DCCP is not set
246
247#
248# SCTP Configuration (EXPERIMENTAL)
249#
250# CONFIG_IP_SCTP is not set
251# CONFIG_ATM is not set
252# CONFIG_BRIDGE is not set
253# CONFIG_VLAN_8021Q is not set
254# CONFIG_DECNET is not set
255# CONFIG_LLC2 is not set
256# CONFIG_IPX is not set
257# CONFIG_ATALK is not set
258# CONFIG_X25 is not set
259# CONFIG_LAPB is not set
260# CONFIG_NET_DIVERT is not set
261# CONFIG_ECONET is not set
262# CONFIG_WAN_ROUTER is not set
263# CONFIG_NET_SCHED is not set
264# CONFIG_NET_CLS_ROUTE is not set
265
266#
267# Network testing
268#
269# CONFIG_NET_PKTGEN is not set
270# CONFIG_HAMRADIO is not set
271# CONFIG_IRDA is not set
272# CONFIG_BT is not set
273CONFIG_IEEE80211=y
274# CONFIG_IEEE80211_DEBUG is not set
275CONFIG_IEEE80211_CRYPT_WEP=y
276CONFIG_IEEE80211_CRYPT_CCMP=y
277CONFIG_IEEE80211_CRYPT_TKIP=y
278
279#
154# Device Drivers 280# Device Drivers
155# 281#
156 282
@@ -159,7 +285,12 @@ CONFIG_TRAD_SIGNALS=y
159# 285#
160CONFIG_STANDALONE=y 286CONFIG_STANDALONE=y
161CONFIG_PREVENT_FIRMWARE_BUILD=y 287CONFIG_PREVENT_FIRMWARE_BUILD=y
162# CONFIG_FW_LOADER is not set 288CONFIG_FW_LOADER=y
289
290#
291# Connector - unified userspace <-> kernelspace linker
292#
293CONFIG_CONNECTOR=y
163 294
164# 295#
165# Memory Technology Devices (MTD) 296# Memory Technology Devices (MTD)
@@ -178,7 +309,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
178# 309#
179# Block devices 310# Block devices
180# 311#
181# CONFIG_BLK_DEV_FD is not set
182# CONFIG_BLK_CPQ_DA is not set 312# CONFIG_BLK_CPQ_DA is not set
183# CONFIG_BLK_CPQ_CISS_DA is not set 313# CONFIG_BLK_CPQ_CISS_DA is not set
184# CONFIG_BLK_DEV_DAC960 is not set 314# CONFIG_BLK_DEV_DAC960 is not set
@@ -189,7 +319,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
189# CONFIG_BLK_DEV_SX8 is not set 319# CONFIG_BLK_DEV_SX8 is not set
190# CONFIG_BLK_DEV_RAM is not set 320# CONFIG_BLK_DEV_RAM is not set
191CONFIG_BLK_DEV_RAM_COUNT=16 321CONFIG_BLK_DEV_RAM_COUNT=16
192CONFIG_INITRAMFS_SOURCE=""
193# CONFIG_LBD is not set 322# CONFIG_LBD is not set
194CONFIG_CDROM_PKTCDVD=y 323CONFIG_CDROM_PKTCDVD=y
195CONFIG_CDROM_PKTCDVD_BUFFERS=8 324CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -212,6 +341,7 @@ CONFIG_ATA_OVER_ETH=y
212# 341#
213# SCSI device support 342# SCSI device support
214# 343#
344CONFIG_RAID_ATTRS=y
215# CONFIG_SCSI is not set 345# CONFIG_SCSI is not set
216 346
217# 347#
@@ -222,6 +352,7 @@ CONFIG_ATA_OVER_ETH=y
222# 352#
223# Fusion MPT device support 353# Fusion MPT device support
224# 354#
355# CONFIG_FUSION is not set
225 356
226# 357#
227# IEEE 1394 (FireWire) support 358# IEEE 1394 (FireWire) support
@@ -234,78 +365,13 @@ CONFIG_ATA_OVER_ETH=y
234# CONFIG_I2O is not set 365# CONFIG_I2O is not set
235 366
236# 367#
237# Networking support 368# Network device support
238#
239CONFIG_NET=y
240
241#
242# Networking options
243#
244CONFIG_PACKET=y
245# CONFIG_PACKET_MMAP is not set
246CONFIG_NETLINK_DEV=y
247CONFIG_UNIX=y
248CONFIG_NET_KEY=y
249CONFIG_INET=y
250# CONFIG_IP_MULTICAST is not set
251# CONFIG_IP_ADVANCED_ROUTER is not set
252CONFIG_IP_PNP=y
253# CONFIG_IP_PNP_DHCP is not set
254CONFIG_IP_PNP_BOOTP=y
255# CONFIG_IP_PNP_RARP is not set
256# CONFIG_NET_IPIP is not set
257# CONFIG_NET_IPGRE is not set
258# CONFIG_ARPD is not set
259# CONFIG_SYN_COOKIES is not set
260# CONFIG_INET_AH is not set
261# CONFIG_INET_ESP is not set
262# CONFIG_INET_IPCOMP is not set
263CONFIG_INET_TUNNEL=y
264CONFIG_IP_TCPDIAG=y
265# CONFIG_IP_TCPDIAG_IPV6 is not set
266# CONFIG_IPV6 is not set
267# CONFIG_NETFILTER is not set
268CONFIG_XFRM=y
269CONFIG_XFRM_USER=y
270
271#
272# SCTP Configuration (EXPERIMENTAL)
273#
274# CONFIG_IP_SCTP is not set
275# CONFIG_ATM is not set
276# CONFIG_BRIDGE is not set
277# CONFIG_VLAN_8021Q is not set
278# CONFIG_DECNET is not set
279# CONFIG_LLC2 is not set
280# CONFIG_IPX is not set
281# CONFIG_ATALK is not set
282# CONFIG_X25 is not set
283# CONFIG_LAPB is not set
284# CONFIG_NET_DIVERT is not set
285# CONFIG_ECONET is not set
286# CONFIG_WAN_ROUTER is not set
287
288#
289# QoS and/or fair queueing
290# 369#
291# CONFIG_NET_SCHED is not set
292# CONFIG_NET_CLS_ROUTE is not set
293
294#
295# Network testing
296#
297# CONFIG_NET_PKTGEN is not set
298# CONFIG_NETPOLL is not set
299# CONFIG_NET_POLL_CONTROLLER is not set
300# CONFIG_HAMRADIO is not set
301# CONFIG_IRDA is not set
302# CONFIG_BT is not set
303CONFIG_NETDEVICES=y 370CONFIG_NETDEVICES=y
304# CONFIG_DUMMY is not set 371# CONFIG_DUMMY is not set
305# CONFIG_BONDING is not set 372# CONFIG_BONDING is not set
306# CONFIG_EQUALIZER is not set 373# CONFIG_EQUALIZER is not set
307# CONFIG_TUN is not set 374# CONFIG_TUN is not set
308# CONFIG_ETHERTAP is not set
309 375
310# 376#
311# ARCnet devices 377# ARCnet devices
@@ -313,6 +379,21 @@ CONFIG_NETDEVICES=y
313# CONFIG_ARCNET is not set 379# CONFIG_ARCNET is not set
314 380
315# 381#
382# PHY device support
383#
384CONFIG_PHYLIB=y
385CONFIG_PHYCONTROL=y
386
387#
388# MII PHY device drivers
389#
390CONFIG_MARVELL_PHY=y
391CONFIG_DAVICOM_PHY=y
392CONFIG_QSEMI_PHY=y
393CONFIG_LXT_PHY=y
394CONFIG_CICADA_PHY=y
395
396#
316# Ethernet (10 or 100Mbit) 397# Ethernet (10 or 100Mbit)
317# 398#
318CONFIG_NET_ETHERNET=y 399CONFIG_NET_ETHERNET=y
@@ -357,13 +438,17 @@ CONFIG_PCNET32=y
357# CONFIG_HAMACHI is not set 438# CONFIG_HAMACHI is not set
358# CONFIG_YELLOWFIN is not set 439# CONFIG_YELLOWFIN is not set
359# CONFIG_R8169 is not set 440# CONFIG_R8169 is not set
441# CONFIG_SIS190 is not set
442# CONFIG_SKGE is not set
360# CONFIG_SK98LIN is not set 443# CONFIG_SK98LIN is not set
361# CONFIG_VIA_VELOCITY is not set 444# CONFIG_VIA_VELOCITY is not set
362# CONFIG_TIGON3 is not set 445# CONFIG_TIGON3 is not set
446# CONFIG_BNX2 is not set
363 447
364# 448#
365# Ethernet (10000 Mbit) 449# Ethernet (10000 Mbit)
366# 450#
451# CONFIG_CHELSIO_T1 is not set
367# CONFIG_IXGB is not set 452# CONFIG_IXGB is not set
368# CONFIG_S2IO is not set 453# CONFIG_S2IO is not set
369 454
@@ -376,6 +461,8 @@ CONFIG_PCNET32=y
376# Wireless LAN (non-hamradio) 461# Wireless LAN (non-hamradio)
377# 462#
378# CONFIG_NET_RADIO is not set 463# CONFIG_NET_RADIO is not set
464# CONFIG_IPW_DEBUG is not set
465CONFIG_IPW2200=y
379 466
380# 467#
381# Wan interfaces 468# Wan interfaces
@@ -387,6 +474,8 @@ CONFIG_PCNET32=y
387# CONFIG_SLIP is not set 474# CONFIG_SLIP is not set
388# CONFIG_SHAPER is not set 475# CONFIG_SHAPER is not set
389# CONFIG_NETCONSOLE is not set 476# CONFIG_NETCONSOLE is not set
477# CONFIG_NETPOLL is not set
478# CONFIG_NET_POLL_CONTROLLER is not set
390 479
391# 480#
392# ISDN subsystem 481# ISDN subsystem
@@ -416,19 +505,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
416# CONFIG_INPUT_EVBUG is not set 505# CONFIG_INPUT_EVBUG is not set
417 506
418# 507#
419# Input I/O drivers
420#
421# CONFIG_GAMEPORT is not set
422CONFIG_SOUND_GAMEPORT=y
423CONFIG_SERIO=y
424# CONFIG_SERIO_I8042 is not set
425CONFIG_SERIO_SERPORT=y
426# CONFIG_SERIO_CT82C710 is not set
427# CONFIG_SERIO_PCIPS2 is not set
428# CONFIG_SERIO_LIBPS2 is not set
429CONFIG_SERIO_RAW=y
430
431#
432# Input Device Drivers 508# Input Device Drivers
433# 509#
434# CONFIG_INPUT_KEYBOARD is not set 510# CONFIG_INPUT_KEYBOARD is not set
@@ -438,6 +514,17 @@ CONFIG_SERIO_RAW=y
438# CONFIG_INPUT_MISC is not set 514# CONFIG_INPUT_MISC is not set
439 515
440# 516#
517# Hardware I/O ports
518#
519CONFIG_SERIO=y
520# CONFIG_SERIO_I8042 is not set
521CONFIG_SERIO_SERPORT=y
522# CONFIG_SERIO_PCIPS2 is not set
523# CONFIG_SERIO_LIBPS2 is not set
524CONFIG_SERIO_RAW=y
525# CONFIG_GAMEPORT is not set
526
527#
441# Character devices 528# Character devices
442# 529#
443CONFIG_VT=y 530CONFIG_VT=y
@@ -458,6 +545,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4
458# 545#
459CONFIG_SERIAL_CORE=y 546CONFIG_SERIAL_CORE=y
460CONFIG_SERIAL_CORE_CONSOLE=y 547CONFIG_SERIAL_CORE_CONSOLE=y
548# CONFIG_SERIAL_JSM is not set
461CONFIG_UNIX98_PTYS=y 549CONFIG_UNIX98_PTYS=y
462CONFIG_LEGACY_PTYS=y 550CONFIG_LEGACY_PTYS=y
463CONFIG_LEGACY_PTY_COUNT=256 551CONFIG_LEGACY_PTY_COUNT=256
@@ -484,6 +572,11 @@ CONFIG_LEGACY_PTY_COUNT=256
484# CONFIG_RAW_DRIVER is not set 572# CONFIG_RAW_DRIVER is not set
485 573
486# 574#
575# TPM devices
576#
577# CONFIG_TCG_TPM is not set
578
579#
487# I2C support 580# I2C support
488# 581#
489# CONFIG_I2C is not set 582# CONFIG_I2C is not set
@@ -494,10 +587,20 @@ CONFIG_LEGACY_PTY_COUNT=256
494# CONFIG_W1 is not set 587# CONFIG_W1 is not set
495 588
496# 589#
590# Hardware Monitoring support
591#
592# CONFIG_HWMON is not set
593# CONFIG_HWMON_VID is not set
594
595#
497# Misc devices 596# Misc devices
498# 597#
499 598
500# 599#
600# Multimedia Capabilities Port drivers
601#
602
603#
501# Multimedia devices 604# Multimedia devices
502# 605#
503# CONFIG_VIDEO_DEV is not set 606# CONFIG_VIDEO_DEV is not set
@@ -517,7 +620,6 @@ CONFIG_LEGACY_PTY_COUNT=256
517# 620#
518# CONFIG_VGA_CONSOLE is not set 621# CONFIG_VGA_CONSOLE is not set
519CONFIG_DUMMY_CONSOLE=y 622CONFIG_DUMMY_CONSOLE=y
520# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
521 623
522# 624#
523# Sound 625# Sound
@@ -527,13 +629,9 @@ CONFIG_DUMMY_CONSOLE=y
527# 629#
528# USB support 630# USB support
529# 631#
530# CONFIG_USB is not set
531CONFIG_USB_ARCH_HAS_HCD=y 632CONFIG_USB_ARCH_HAS_HCD=y
532CONFIG_USB_ARCH_HAS_OHCI=y 633CONFIG_USB_ARCH_HAS_OHCI=y
533 634# CONFIG_USB is not set
534#
535# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
536#
537 635
538# 636#
539# USB Gadget Support 637# USB Gadget Support
@@ -551,21 +649,29 @@ CONFIG_USB_ARCH_HAS_OHCI=y
551# CONFIG_INFINIBAND is not set 649# CONFIG_INFINIBAND is not set
552 650
553# 651#
652# SN Devices
653#
654
655#
554# File systems 656# File systems
555# 657#
556CONFIG_EXT2_FS=y 658CONFIG_EXT2_FS=y
557# CONFIG_EXT2_FS_XATTR is not set 659# CONFIG_EXT2_FS_XATTR is not set
660# CONFIG_EXT2_FS_XIP is not set
558# CONFIG_EXT3_FS is not set 661# CONFIG_EXT3_FS is not set
559# CONFIG_JBD is not set 662# CONFIG_JBD is not set
560# CONFIG_REISERFS_FS is not set 663# CONFIG_REISERFS_FS is not set
561# CONFIG_JFS_FS is not set 664# CONFIG_JFS_FS is not set
665# CONFIG_FS_POSIX_ACL is not set
562# CONFIG_XFS_FS is not set 666# CONFIG_XFS_FS is not set
563# CONFIG_MINIX_FS is not set 667# CONFIG_MINIX_FS is not set
564# CONFIG_ROMFS_FS is not set 668# CONFIG_ROMFS_FS is not set
669CONFIG_INOTIFY=y
565# CONFIG_QUOTA is not set 670# CONFIG_QUOTA is not set
566CONFIG_DNOTIFY=y 671CONFIG_DNOTIFY=y
567CONFIG_AUTOFS_FS=y 672CONFIG_AUTOFS_FS=y
568CONFIG_AUTOFS4_FS=y 673CONFIG_AUTOFS4_FS=y
674CONFIG_FUSE_FS=y
569 675
570# 676#
571# CD-ROM/DVD Filesystems 677# CD-ROM/DVD Filesystems
@@ -586,12 +692,10 @@ CONFIG_AUTOFS4_FS=y
586CONFIG_PROC_FS=y 692CONFIG_PROC_FS=y
587CONFIG_PROC_KCORE=y 693CONFIG_PROC_KCORE=y
588CONFIG_SYSFS=y 694CONFIG_SYSFS=y
589# CONFIG_DEVFS_FS is not set
590CONFIG_DEVPTS_FS_XATTR=y
591CONFIG_DEVPTS_FS_SECURITY=y
592# CONFIG_TMPFS is not set 695# CONFIG_TMPFS is not set
593# CONFIG_HUGETLB_PAGE is not set 696# CONFIG_HUGETLB_PAGE is not set
594CONFIG_RAMFS=y 697CONFIG_RAMFS=y
698CONFIG_RELAYFS_FS=y
595 699
596# 700#
597# Miscellaneous filesystems 701# Miscellaneous filesystems
@@ -623,6 +727,7 @@ CONFIG_NFSD=y
623CONFIG_ROOT_NFS=y 727CONFIG_ROOT_NFS=y
624CONFIG_LOCKD=y 728CONFIG_LOCKD=y
625CONFIG_EXPORTFS=y 729CONFIG_EXPORTFS=y
730CONFIG_NFS_COMMON=y
626CONFIG_SUNRPC=y 731CONFIG_SUNRPC=y
627# CONFIG_RPCSEC_GSS_KRB5 is not set 732# CONFIG_RPCSEC_GSS_KRB5 is not set
628# CONFIG_RPCSEC_GSS_SPKM3 is not set 733# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -631,6 +736,7 @@ CONFIG_SUNRPC=y
631# CONFIG_NCP_FS is not set 736# CONFIG_NCP_FS is not set
632# CONFIG_CODA_FS is not set 737# CONFIG_CODA_FS is not set
633# CONFIG_AFS_FS is not set 738# CONFIG_AFS_FS is not set
739# CONFIG_9P_FS is not set
634 740
635# 741#
636# Partition Types 742# Partition Types
@@ -651,7 +757,9 @@ CONFIG_MSDOS_PARTITION=y
651# 757#
652# Kernel hacking 758# Kernel hacking
653# 759#
760# CONFIG_PRINTK_TIME is not set
654# CONFIG_DEBUG_KERNEL is not set 761# CONFIG_DEBUG_KERNEL is not set
762CONFIG_LOG_BUF_SHIFT=14
655CONFIG_CROSSCOMPILE=y 763CONFIG_CROSSCOMPILE=y
656CONFIG_CMDLINE="ip=any" 764CONFIG_CMDLINE="ip=any"
657 765
@@ -665,7 +773,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
665# 773#
666# Cryptographic options 774# Cryptographic options
667# 775#
668# CONFIG_CRYPTO is not set 776CONFIG_CRYPTO=y
777CONFIG_CRYPTO_HMAC=y
778CONFIG_CRYPTO_NULL=y
779CONFIG_CRYPTO_MD4=y
780CONFIG_CRYPTO_MD5=y
781CONFIG_CRYPTO_SHA1=y
782CONFIG_CRYPTO_SHA256=y
783CONFIG_CRYPTO_SHA512=y
784CONFIG_CRYPTO_WP512=y
785CONFIG_CRYPTO_TGR192=y
786CONFIG_CRYPTO_DES=y
787CONFIG_CRYPTO_BLOWFISH=y
788CONFIG_CRYPTO_TWOFISH=y
789CONFIG_CRYPTO_SERPENT=y
790CONFIG_CRYPTO_AES=y
791CONFIG_CRYPTO_CAST5=y
792CONFIG_CRYPTO_CAST6=y
793CONFIG_CRYPTO_TEA=y
794CONFIG_CRYPTO_ARC4=y
795CONFIG_CRYPTO_KHAZAD=y
796CONFIG_CRYPTO_ANUBIS=y
797CONFIG_CRYPTO_DEFLATE=y
798CONFIG_CRYPTO_MICHAEL_MIC=y
799CONFIG_CRYPTO_CRC32C=y
800# CONFIG_CRYPTO_TEST is not set
669 801
670# 802#
671# Hardware crypto devices 803# Hardware crypto devices
@@ -675,7 +807,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
675# Library routines 807# Library routines
676# 808#
677# CONFIG_CRC_CCITT is not set 809# CONFIG_CRC_CCITT is not set
810CONFIG_CRC16=y
678CONFIG_CRC32=y 811CONFIG_CRC32=y
679# CONFIG_LIBCRC32C is not set 812CONFIG_LIBCRC32C=y
680CONFIG_GENERIC_HARDIRQS=y 813CONFIG_ZLIB_INFLATE=y
681CONFIG_GENERIC_IRQ_PROBE=y 814CONFIG_ZLIB_DEFLATE=y
diff --git a/arch/mips/configs/decstation_defconfig b/arch/mips/configs/decstation_defconfig
index 66ec1f41d122..5bc885b72d14 100644
--- a/arch/mips/configs/decstation_defconfig
+++ b/arch/mips/configs/decstation_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:03 2005 4# Thu Oct 20 22:25:48 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,30 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14
29# CONFIG_HOTPLUG is not set 27# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
33# CONFIG_KALLSYMS_ALL is not set
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 34# CONFIG_KALLSYMS_EXTRA_PASS is not set
35CONFIG_PRINTK=y
36CONFIG_BUG=y
37CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 38CONFIG_FUTEX=y
36CONFIG_EPOLL=y 39CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 40# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +44,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 44CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 45CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 46# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0
44 48
45# 49#
46# Loadable module support 50# Loadable module support
@@ -49,48 +53,76 @@ CONFIG_MODULES=y
49CONFIG_MODULE_UNLOAD=y 53CONFIG_MODULE_UNLOAD=y
50# CONFIG_MODULE_FORCE_UNLOAD is not set 54# CONFIG_MODULE_FORCE_UNLOAD is not set
51CONFIG_OBSOLETE_MODPARM=y 55CONFIG_OBSOLETE_MODPARM=y
52CONFIG_MODVERSIONS=y 56# CONFIG_MODVERSIONS is not set
53CONFIG_MODULE_SRCVERSION_ALL=y 57CONFIG_MODULE_SRCVERSION_ALL=y
54CONFIG_KMOD=y 58CONFIG_KMOD=y
55 59
56# 60#
57# Machine selection 61# Machine selection
58# 62#
59# CONFIG_MACH_JAZZ is not set 63# CONFIG_MIPS_MTX1 is not set
60# CONFIG_MACH_VR41XX is not set 64# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_TOSHIBA_JMR3927 is not set 65# CONFIG_MIPS_PB1000 is not set
66# CONFIG_MIPS_PB1100 is not set
67# CONFIG_MIPS_PB1500 is not set
68# CONFIG_MIPS_PB1550 is not set
69# CONFIG_MIPS_PB1200 is not set
70# CONFIG_MIPS_DB1000 is not set
71# CONFIG_MIPS_DB1100 is not set
72# CONFIG_MIPS_DB1500 is not set
73# CONFIG_MIPS_DB1550 is not set
74# CONFIG_MIPS_DB1200 is not set
75# CONFIG_MIPS_MIRAGE is not set
62# CONFIG_MIPS_COBALT is not set 76# CONFIG_MIPS_COBALT is not set
63CONFIG_MACH_DECSTATION=y 77CONFIG_MACH_DECSTATION=y
64# CONFIG_MIPS_EV64120 is not set 78# CONFIG_MIPS_EV64120 is not set
65# CONFIG_MIPS_EV96100 is not set 79# CONFIG_MIPS_EV96100 is not set
66# CONFIG_MIPS_IVR is not set 80# CONFIG_MIPS_IVR is not set
67# CONFIG_LASAT is not set
68# CONFIG_MIPS_ITE8172 is not set 81# CONFIG_MIPS_ITE8172 is not set
82# CONFIG_MACH_JAZZ is not set
83# CONFIG_LASAT is not set
69# CONFIG_MIPS_ATLAS is not set 84# CONFIG_MIPS_ATLAS is not set
70# CONFIG_MIPS_MALTA is not set 85# CONFIG_MIPS_MALTA is not set
71# CONFIG_MIPS_SEAD is not set 86# CONFIG_MIPS_SEAD is not set
87# CONFIG_MIPS_SIM is not set
88# CONFIG_MOMENCO_JAGUAR_ATX is not set
72# CONFIG_MOMENCO_OCELOT is not set 89# CONFIG_MOMENCO_OCELOT is not set
73# CONFIG_MOMENCO_OCELOT_G is not set
74# CONFIG_MOMENCO_OCELOT_C is not set
75# CONFIG_MOMENCO_OCELOT_3 is not set 90# CONFIG_MOMENCO_OCELOT_3 is not set
76# CONFIG_MOMENCO_JAGUAR_ATX is not set 91# CONFIG_MOMENCO_OCELOT_C is not set
77# CONFIG_PMC_YOSEMITE is not set 92# CONFIG_MOMENCO_OCELOT_G is not set
93# CONFIG_MIPS_XXS1500 is not set
94# CONFIG_PNX8550_V2PCI is not set
95# CONFIG_PNX8550_JBS is not set
78# CONFIG_DDB5074 is not set 96# CONFIG_DDB5074 is not set
79# CONFIG_DDB5476 is not set 97# CONFIG_DDB5476 is not set
80# CONFIG_DDB5477 is not set 98# CONFIG_DDB5477 is not set
81# CONFIG_NEC_OSPREY is not set 99# CONFIG_MACH_VR41XX is not set
100# CONFIG_PMC_YOSEMITE is not set
101# CONFIG_QEMU is not set
82# CONFIG_SGI_IP22 is not set 102# CONFIG_SGI_IP22 is not set
83# CONFIG_SOC_AU1X00 is not set 103# CONFIG_SGI_IP27 is not set
84# CONFIG_SIBYTE_SB1xxx_SOC is not set 104# CONFIG_SGI_IP32 is not set
105# CONFIG_SIBYTE_BIGSUR is not set
106# CONFIG_SIBYTE_SWARM is not set
107# CONFIG_SIBYTE_SENTOSA is not set
108# CONFIG_SIBYTE_RHONE is not set
109# CONFIG_SIBYTE_CARMEL is not set
110# CONFIG_SIBYTE_PTSWARM is not set
111# CONFIG_SIBYTE_LITTLESUR is not set
112# CONFIG_SIBYTE_CRHINE is not set
113# CONFIG_SIBYTE_CRHONE is not set
85# CONFIG_SNI_RM200_PCI is not set 114# CONFIG_SNI_RM200_PCI is not set
115# CONFIG_TOSHIBA_JMR3927 is not set
86# CONFIG_TOSHIBA_RBTX4927 is not set 116# CONFIG_TOSHIBA_RBTX4927 is not set
117# CONFIG_TOSHIBA_RBTX4938 is not set
87CONFIG_RWSEM_GENERIC_SPINLOCK=y 118CONFIG_RWSEM_GENERIC_SPINLOCK=y
88CONFIG_GENERIC_CALIBRATE_DELAY=y 119CONFIG_GENERIC_CALIBRATE_DELAY=y
89CONFIG_HAVE_DEC_LOCK=y
90CONFIG_DMA_NONCOHERENT=y 120CONFIG_DMA_NONCOHERENT=y
91CONFIG_DMA_NEED_PCI_MAP_STATE=y 121CONFIG_DMA_NEED_PCI_MAP_STATE=y
92CONFIG_EARLY_PRINTK=y 122CONFIG_EARLY_PRINTK=y
123# CONFIG_CPU_BIG_ENDIAN is not set
93CONFIG_CPU_LITTLE_ENDIAN=y 124CONFIG_CPU_LITTLE_ENDIAN=y
125CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
94CONFIG_IRQ_CPU=y 126CONFIG_IRQ_CPU=y
95CONFIG_BOOT_ELF32=y 127CONFIG_BOOT_ELF32=y
96CONFIG_MIPS_L1_CACHE_SHIFT=4 128CONFIG_MIPS_L1_CACHE_SHIFT=4
@@ -98,8 +130,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=4
98# 130#
99# CPU selection 131# CPU selection
100# 132#
101# CONFIG_CPU_MIPS32 is not set 133# CONFIG_CPU_MIPS32_R1 is not set
102# CONFIG_CPU_MIPS64 is not set 134# CONFIG_CPU_MIPS32_R2 is not set
135# CONFIG_CPU_MIPS64_R1 is not set
136# CONFIG_CPU_MIPS64_R2 is not set
103CONFIG_CPU_R3000=y 137CONFIG_CPU_R3000=y
104# CONFIG_CPU_TX39XX is not set 138# CONFIG_CPU_TX39XX is not set
105# CONFIG_CPU_VR41XX is not set 139# CONFIG_CPU_VR41XX is not set
@@ -115,12 +149,37 @@ CONFIG_CPU_R3000=y
115# CONFIG_CPU_RM7000 is not set 149# CONFIG_CPU_RM7000 is not set
116# CONFIG_CPU_RM9000 is not set 150# CONFIG_CPU_RM9000 is not set
117# CONFIG_CPU_SB1 is not set 151# CONFIG_CPU_SB1 is not set
152CONFIG_SYS_HAS_CPU_R3000=y
153CONFIG_SYS_HAS_CPU_R4X00=y
154CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
155CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
156CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
157
158#
159# Kernel type
160#
161CONFIG_32BIT=y
162# CONFIG_64BIT is not set
118CONFIG_PAGE_SIZE_4KB=y 163CONFIG_PAGE_SIZE_4KB=y
119# CONFIG_PAGE_SIZE_8KB is not set 164# CONFIG_PAGE_SIZE_8KB is not set
120# CONFIG_PAGE_SIZE_16KB is not set 165# CONFIG_PAGE_SIZE_16KB is not set
121# CONFIG_PAGE_SIZE_64KB is not set 166# CONFIG_PAGE_SIZE_64KB is not set
167# CONFIG_MIPS_MT is not set
122# CONFIG_CPU_ADVANCED is not set 168# CONFIG_CPU_ADVANCED is not set
123CONFIG_CPU_HAS_WB=y 169CONFIG_CPU_HAS_WB=y
170CONFIG_GENERIC_HARDIRQS=y
171CONFIG_GENERIC_IRQ_PROBE=y
172CONFIG_CPU_SUPPORTS_HIGHMEM=y
173CONFIG_ARCH_FLATMEM_ENABLE=y
174CONFIG_SELECT_MEMORY_MODEL=y
175CONFIG_FLATMEM_MANUAL=y
176# CONFIG_DISCONTIGMEM_MANUAL is not set
177# CONFIG_SPARSEMEM_MANUAL is not set
178CONFIG_FLATMEM=y
179CONFIG_FLAT_NODE_MEM_MAP=y
180# CONFIG_SPARSEMEM_STATIC is not set
181CONFIG_PREEMPT_NONE=y
182# CONFIG_PREEMPT_VOLUNTARY is not set
124# CONFIG_PREEMPT is not set 183# CONFIG_PREEMPT is not set
125 184
126# 185#
@@ -135,10 +194,6 @@ CONFIG_MMU=y
135# CONFIG_PCCARD is not set 194# CONFIG_PCCARD is not set
136 195
137# 196#
138# PC-card bridges
139#
140
141#
142# PCI Hotplug Support 197# PCI Hotplug Support
143# 198#
144 199
@@ -150,6 +205,80 @@ CONFIG_BINFMT_ELF=y
150CONFIG_TRAD_SIGNALS=y 205CONFIG_TRAD_SIGNALS=y
151 206
152# 207#
208# Networking
209#
210CONFIG_NET=y
211
212#
213# Networking options
214#
215CONFIG_PACKET=y
216CONFIG_PACKET_MMAP=y
217CONFIG_UNIX=y
218CONFIG_XFRM=y
219CONFIG_XFRM_USER=m
220# CONFIG_NET_KEY is not set
221CONFIG_INET=y
222# CONFIG_IP_MULTICAST is not set
223# CONFIG_IP_ADVANCED_ROUTER is not set
224CONFIG_IP_FIB_HASH=y
225CONFIG_IP_PNP=y
226# CONFIG_IP_PNP_DHCP is not set
227CONFIG_IP_PNP_BOOTP=y
228# CONFIG_IP_PNP_RARP is not set
229# CONFIG_NET_IPIP is not set
230# CONFIG_NET_IPGRE is not set
231# CONFIG_ARPD is not set
232# CONFIG_SYN_COOKIES is not set
233# CONFIG_INET_AH is not set
234# CONFIG_INET_ESP is not set
235# CONFIG_INET_IPCOMP is not set
236CONFIG_INET_TUNNEL=m
237CONFIG_INET_DIAG=y
238CONFIG_INET_TCP_DIAG=y
239# CONFIG_TCP_CONG_ADVANCED is not set
240CONFIG_TCP_CONG_BIC=y
241# CONFIG_IPV6 is not set
242# CONFIG_NETFILTER is not set
243
244#
245# DCCP Configuration (EXPERIMENTAL)
246#
247# CONFIG_IP_DCCP is not set
248
249#
250# SCTP Configuration (EXPERIMENTAL)
251#
252# CONFIG_IP_SCTP is not set
253# CONFIG_ATM is not set
254# CONFIG_BRIDGE is not set
255# CONFIG_VLAN_8021Q is not set
256# CONFIG_DECNET is not set
257# CONFIG_LLC2 is not set
258# CONFIG_IPX is not set
259# CONFIG_ATALK is not set
260# CONFIG_X25 is not set
261# CONFIG_LAPB is not set
262# CONFIG_NET_DIVERT is not set
263# CONFIG_ECONET is not set
264# CONFIG_WAN_ROUTER is not set
265# CONFIG_NET_SCHED is not set
266# CONFIG_NET_CLS_ROUTE is not set
267
268#
269# Network testing
270#
271# CONFIG_NET_PKTGEN is not set
272# CONFIG_HAMRADIO is not set
273# CONFIG_IRDA is not set
274# CONFIG_BT is not set
275CONFIG_IEEE80211=m
276# CONFIG_IEEE80211_DEBUG is not set
277CONFIG_IEEE80211_CRYPT_WEP=m
278CONFIG_IEEE80211_CRYPT_CCMP=m
279CONFIG_IEEE80211_CRYPT_TKIP=m
280
281#
153# Device Drivers 282# Device Drivers
154# 283#
155 284
@@ -159,6 +288,12 @@ CONFIG_TRAD_SIGNALS=y
159CONFIG_STANDALONE=y 288CONFIG_STANDALONE=y
160CONFIG_PREVENT_FIRMWARE_BUILD=y 289CONFIG_PREVENT_FIRMWARE_BUILD=y
161# CONFIG_FW_LOADER is not set 290# CONFIG_FW_LOADER is not set
291# CONFIG_DEBUG_DRIVER is not set
292
293#
294# Connector - unified userspace <-> kernelspace linker
295#
296CONFIG_CONNECTOR=m
162 297
163# 298#
164# Memory Technology Devices (MTD) 299# Memory Technology Devices (MTD)
@@ -177,17 +312,14 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
177# 312#
178# Block devices 313# Block devices
179# 314#
180# CONFIG_BLK_DEV_FD is not set
181# CONFIG_BLK_DEV_COW_COMMON is not set 315# CONFIG_BLK_DEV_COW_COMMON is not set
182# CONFIG_BLK_DEV_LOOP is not set 316CONFIG_BLK_DEV_LOOP=m
317# CONFIG_BLK_DEV_CRYPTOLOOP is not set
183# CONFIG_BLK_DEV_NBD is not set 318# CONFIG_BLK_DEV_NBD is not set
184# CONFIG_BLK_DEV_RAM is not set 319# CONFIG_BLK_DEV_RAM is not set
185CONFIG_BLK_DEV_RAM_COUNT=16 320CONFIG_BLK_DEV_RAM_COUNT=16
186CONFIG_INITRAMFS_SOURCE=""
187# CONFIG_LBD is not set 321# CONFIG_LBD is not set
188CONFIG_CDROM_PKTCDVD=m 322# CONFIG_CDROM_PKTCDVD is not set
189CONFIG_CDROM_PKTCDVD_BUFFERS=8
190# CONFIG_CDROM_PKTCDVD_WCACHE is not set
191 323
192# 324#
193# IO Schedulers 325# IO Schedulers
@@ -196,7 +328,7 @@ CONFIG_IOSCHED_NOOP=y
196CONFIG_IOSCHED_AS=y 328CONFIG_IOSCHED_AS=y
197CONFIG_IOSCHED_DEADLINE=y 329CONFIG_IOSCHED_DEADLINE=y
198CONFIG_IOSCHED_CFQ=y 330CONFIG_IOSCHED_CFQ=y
199CONFIG_ATA_OVER_ETH=m 331# CONFIG_ATA_OVER_ETH is not set
200 332
201# 333#
202# ATA/ATAPI/MFM/RLL support 334# ATA/ATAPI/MFM/RLL support
@@ -206,6 +338,7 @@ CONFIG_ATA_OVER_ETH=m
206# 338#
207# SCSI device support 339# SCSI device support
208# 340#
341CONFIG_RAID_ATTRS=m
209CONFIG_SCSI=y 342CONFIG_SCSI=y
210CONFIG_SCSI_PROC_FS=y 343CONFIG_SCSI_PROC_FS=y
211 344
@@ -213,10 +346,12 @@ CONFIG_SCSI_PROC_FS=y
213# SCSI support type (disk, tape, CD-ROM) 346# SCSI support type (disk, tape, CD-ROM)
214# 347#
215CONFIG_BLK_DEV_SD=y 348CONFIG_BLK_DEV_SD=y
216# CONFIG_CHR_DEV_ST is not set 349CONFIG_CHR_DEV_ST=m
217# CONFIG_CHR_DEV_OSST is not set 350# CONFIG_CHR_DEV_OSST is not set
218# CONFIG_BLK_DEV_SR is not set 351CONFIG_BLK_DEV_SR=m
219# CONFIG_CHR_DEV_SG is not set 352# CONFIG_BLK_DEV_SR_VENDOR is not set
353CONFIG_CHR_DEV_SG=m
354# CONFIG_CHR_DEV_SCH is not set
220 355
221# 356#
222# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 357# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
@@ -228,9 +363,10 @@ CONFIG_SCSI_CONSTANTS=y
228# 363#
229# SCSI Transport Attributes 364# SCSI Transport Attributes
230# 365#
231# CONFIG_SCSI_SPI_ATTRS is not set 366CONFIG_SCSI_SPI_ATTRS=m
232# CONFIG_SCSI_FC_ATTRS is not set 367# CONFIG_SCSI_FC_ATTRS is not set
233# CONFIG_SCSI_ISCSI_ATTRS is not set 368# CONFIG_SCSI_ISCSI_ATTRS is not set
369CONFIG_SCSI_SAS_ATTRS=m
234 370
235# 371#
236# SCSI low-level drivers 372# SCSI low-level drivers
@@ -248,6 +384,7 @@ CONFIG_SCSI_DECNCR=y
248# 384#
249# Fusion MPT device support 385# Fusion MPT device support
250# 386#
387# CONFIG_FUSION is not set
251 388
252# 389#
253# IEEE 1394 (FireWire) support 390# IEEE 1394 (FireWire) support
@@ -258,78 +395,28 @@ CONFIG_SCSI_DECNCR=y
258# 395#
259 396
260# 397#
261# Networking support 398# Network device support
262#
263CONFIG_NET=y
264
265#
266# Networking options
267#
268CONFIG_PACKET=y
269# CONFIG_PACKET_MMAP is not set
270CONFIG_NETLINK_DEV=y
271CONFIG_UNIX=y
272CONFIG_NET_KEY=y
273CONFIG_INET=y
274# CONFIG_IP_MULTICAST is not set
275# CONFIG_IP_ADVANCED_ROUTER is not set
276CONFIG_IP_PNP=y
277# CONFIG_IP_PNP_DHCP is not set
278CONFIG_IP_PNP_BOOTP=y
279# CONFIG_IP_PNP_RARP is not set
280# CONFIG_NET_IPIP is not set
281# CONFIG_NET_IPGRE is not set
282# CONFIG_ARPD is not set
283# CONFIG_SYN_COOKIES is not set
284# CONFIG_INET_AH is not set
285# CONFIG_INET_ESP is not set
286# CONFIG_INET_IPCOMP is not set
287CONFIG_INET_TUNNEL=m
288CONFIG_IP_TCPDIAG=m
289# CONFIG_IP_TCPDIAG_IPV6 is not set
290# CONFIG_IPV6 is not set
291# CONFIG_NETFILTER is not set
292CONFIG_XFRM=y
293CONFIG_XFRM_USER=m
294
295#
296# SCTP Configuration (EXPERIMENTAL)
297# 399#
298# CONFIG_IP_SCTP is not set 400CONFIG_NETDEVICES=y
299# CONFIG_ATM is not set 401# CONFIG_DUMMY is not set
300# CONFIG_BRIDGE is not set 402# CONFIG_BONDING is not set
301# CONFIG_VLAN_8021Q is not set 403# CONFIG_EQUALIZER is not set
302# CONFIG_DECNET is not set 404# CONFIG_TUN is not set
303# CONFIG_LLC2 is not set
304# CONFIG_IPX is not set
305# CONFIG_ATALK is not set
306# CONFIG_X25 is not set
307# CONFIG_LAPB is not set
308# CONFIG_NET_DIVERT is not set
309# CONFIG_ECONET is not set
310# CONFIG_WAN_ROUTER is not set
311 405
312# 406#
313# QoS and/or fair queueing 407# PHY device support
314# 408#
315# CONFIG_NET_SCHED is not set 409CONFIG_PHYLIB=m
316# CONFIG_NET_CLS_ROUTE is not set 410CONFIG_PHYCONTROL=y
317 411
318# 412#
319# Network testing 413# MII PHY device drivers
320# 414#
321# CONFIG_NET_PKTGEN is not set 415CONFIG_MARVELL_PHY=m
322# CONFIG_NETPOLL is not set 416CONFIG_DAVICOM_PHY=m
323# CONFIG_NET_POLL_CONTROLLER is not set 417CONFIG_QSEMI_PHY=m
324# CONFIG_HAMRADIO is not set 418CONFIG_LXT_PHY=m
325# CONFIG_IRDA is not set 419CONFIG_CICADA_PHY=m
326# CONFIG_BT is not set
327CONFIG_NETDEVICES=y
328# CONFIG_DUMMY is not set
329# CONFIG_BONDING is not set
330# CONFIG_EQUALIZER is not set
331# CONFIG_TUN is not set
332# CONFIG_ETHERTAP is not set
333 420
334# 421#
335# Ethernet (10 or 100Mbit) 422# Ethernet (10 or 100Mbit)
@@ -363,6 +450,8 @@ CONFIG_DECLANCE=y
363# CONFIG_SLIP is not set 450# CONFIG_SLIP is not set
364# CONFIG_SHAPER is not set 451# CONFIG_SHAPER is not set
365# CONFIG_NETCONSOLE is not set 452# CONFIG_NETCONSOLE is not set
453# CONFIG_NETPOLL is not set
454# CONFIG_NET_POLL_CONTROLLER is not set
366 455
367# 456#
368# ISDN subsystem 457# ISDN subsystem
@@ -377,48 +466,22 @@ CONFIG_DECLANCE=y
377# 466#
378# Input device support 467# Input device support
379# 468#
380CONFIG_INPUT=y 469# CONFIG_INPUT is not set
381 470
382# 471#
383# Userland interfaces 472# Hardware I/O ports
384#
385CONFIG_INPUT_MOUSEDEV=y
386CONFIG_INPUT_MOUSEDEV_PSAUX=y
387CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
388CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
389# CONFIG_INPUT_JOYDEV is not set
390# CONFIG_INPUT_TSDEV is not set
391# CONFIG_INPUT_EVDEV is not set
392# CONFIG_INPUT_EVBUG is not set
393
394#
395# Input I/O drivers
396# 473#
474# CONFIG_SERIO is not set
397# CONFIG_GAMEPORT is not set 475# CONFIG_GAMEPORT is not set
398CONFIG_SOUND_GAMEPORT=y
399CONFIG_SERIO=y
400# CONFIG_SERIO_I8042 is not set
401CONFIG_SERIO_SERPORT=y
402# CONFIG_SERIO_CT82C710 is not set
403# CONFIG_SERIO_LIBPS2 is not set
404CONFIG_SERIO_RAW=m
405
406#
407# Input Device Drivers
408#
409# CONFIG_INPUT_KEYBOARD is not set
410# CONFIG_INPUT_MOUSE is not set
411# CONFIG_INPUT_JOYSTICK is not set
412# CONFIG_INPUT_TOUCHSCREEN is not set
413# CONFIG_INPUT_MISC is not set
414 476
415# 477#
416# Character devices 478# Character devices
417# 479#
418CONFIG_VT=y 480# CONFIG_VT is not set
419CONFIG_VT_CONSOLE=y
420CONFIG_HW_CONSOLE=y
421# CONFIG_SERIAL_NONSTANDARD is not set 481# CONFIG_SERIAL_NONSTANDARD is not set
482CONFIG_SERIAL_DEC=y
483CONFIG_SERIAL_DEC_CONSOLE=y
484CONFIG_ZS=y
422 485
423# 486#
424# Serial drivers 487# Serial drivers
@@ -445,18 +508,20 @@ CONFIG_LEGACY_PTY_COUNT=256
445# Watchdog Cards 508# Watchdog Cards
446# 509#
447# CONFIG_WATCHDOG is not set 510# CONFIG_WATCHDOG is not set
448# CONFIG_RTC is not set 511CONFIG_RTC=y
449# CONFIG_GEN_RTC is not set
450# CONFIG_DTLK is not set 512# CONFIG_DTLK is not set
451# CONFIG_R3964 is not set 513# CONFIG_R3964 is not set
452 514
453# 515#
454# Ftape, the floppy tape device driver 516# Ftape, the floppy tape device driver
455# 517#
456# CONFIG_DRM is not set
457# CONFIG_RAW_DRIVER is not set 518# CONFIG_RAW_DRIVER is not set
458 519
459# 520#
521# TPM devices
522#
523
524#
460# I2C support 525# I2C support
461# 526#
462# CONFIG_I2C is not set 527# CONFIG_I2C is not set
@@ -467,10 +532,20 @@ CONFIG_LEGACY_PTY_COUNT=256
467# CONFIG_W1 is not set 532# CONFIG_W1 is not set
468 533
469# 534#
535# Hardware Monitoring support
536#
537# CONFIG_HWMON is not set
538# CONFIG_HWMON_VID is not set
539
540#
470# Misc devices 541# Misc devices
471# 542#
472 543
473# 544#
545# Multimedia Capabilities Port drivers
546#
547
548#
474# Multimedia devices 549# Multimedia devices
475# 550#
476# CONFIG_VIDEO_DEV is not set 551# CONFIG_VIDEO_DEV is not set
@@ -483,13 +558,29 @@ CONFIG_LEGACY_PTY_COUNT=256
483# 558#
484# Graphics support 559# Graphics support
485# 560#
486# CONFIG_FB is not set 561CONFIG_FB=y
487 562CONFIG_FB_CFB_FILLRECT=y
488# 563CONFIG_FB_CFB_COPYAREA=y
489# Console display driver support 564CONFIG_FB_CFB_IMAGEBLIT=y
490# 565CONFIG_FB_SOFT_CURSOR=y
491# CONFIG_VGA_CONSOLE is not set 566# CONFIG_FB_MACMODES is not set
492CONFIG_DUMMY_CONSOLE=y 567# CONFIG_FB_MODE_HELPERS is not set
568# CONFIG_FB_TILEBLITTING is not set
569# CONFIG_FB_PMAG_AA is not set
570CONFIG_FB_PMAG_BA=y
571CONFIG_FB_PMAGB_B=y
572# CONFIG_FB_MAXINE is not set
573# CONFIG_FB_S1D13XXX is not set
574# CONFIG_FB_VIRTUAL is not set
575
576#
577# Logo configuration
578#
579CONFIG_LOGO=y
580# CONFIG_LOGO_LINUX_MONO is not set
581# CONFIG_LOGO_LINUX_VGA16 is not set
582# CONFIG_LOGO_LINUX_CLUT224 is not set
583CONFIG_LOGO_DEC_CLUT224=y
493# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 584# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
494 585
495# 586#
@@ -504,10 +595,6 @@ CONFIG_DUMMY_CONSOLE=y
504# CONFIG_USB_ARCH_HAS_OHCI is not set 595# CONFIG_USB_ARCH_HAS_OHCI is not set
505 596
506# 597#
507# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
508#
509
510#
511# USB Gadget Support 598# USB Gadget Support
512# 599#
513# CONFIG_USB_GADGET is not set 600# CONFIG_USB_GADGET is not set
@@ -520,7 +607,10 @@ CONFIG_DUMMY_CONSOLE=y
520# 607#
521# InfiniBand support 608# InfiniBand support
522# 609#
523# CONFIG_INFINIBAND is not set 610
611#
612# SN Devices
613#
524 614
525# 615#
526# File systems 616# File systems
@@ -529,6 +619,7 @@ CONFIG_EXT2_FS=y
529CONFIG_EXT2_FS_XATTR=y 619CONFIG_EXT2_FS_XATTR=y
530CONFIG_EXT2_FS_POSIX_ACL=y 620CONFIG_EXT2_FS_POSIX_ACL=y
531CONFIG_EXT2_FS_SECURITY=y 621CONFIG_EXT2_FS_SECURITY=y
622# CONFIG_EXT2_FS_XIP is not set
532# CONFIG_EXT3_FS is not set 623# CONFIG_EXT3_FS is not set
533# CONFIG_JBD is not set 624# CONFIG_JBD is not set
534CONFIG_FS_MBCACHE=y 625CONFIG_FS_MBCACHE=y
@@ -538,10 +629,12 @@ CONFIG_FS_POSIX_ACL=y
538# CONFIG_XFS_FS is not set 629# CONFIG_XFS_FS is not set
539# CONFIG_MINIX_FS is not set 630# CONFIG_MINIX_FS is not set
540# CONFIG_ROMFS_FS is not set 631# CONFIG_ROMFS_FS is not set
632CONFIG_INOTIFY=y
541# CONFIG_QUOTA is not set 633# CONFIG_QUOTA is not set
542CONFIG_DNOTIFY=y 634CONFIG_DNOTIFY=y
543# CONFIG_AUTOFS_FS is not set 635# CONFIG_AUTOFS_FS is not set
544# CONFIG_AUTOFS4_FS is not set 636# CONFIG_AUTOFS4_FS is not set
637CONFIG_FUSE_FS=m
545 638
546# 639#
547# CD-ROM/DVD Filesystems 640# CD-ROM/DVD Filesystems
@@ -562,12 +655,10 @@ CONFIG_DNOTIFY=y
562CONFIG_PROC_FS=y 655CONFIG_PROC_FS=y
563CONFIG_PROC_KCORE=y 656CONFIG_PROC_KCORE=y
564CONFIG_SYSFS=y 657CONFIG_SYSFS=y
565# CONFIG_DEVFS_FS is not set 658CONFIG_TMPFS=y
566CONFIG_DEVPTS_FS_XATTR=y
567CONFIG_DEVPTS_FS_SECURITY=y
568# CONFIG_TMPFS is not set
569# CONFIG_HUGETLB_PAGE is not set 659# CONFIG_HUGETLB_PAGE is not set
570CONFIG_RAMFS=y 660CONFIG_RAMFS=y
661CONFIG_RELAYFS_FS=m
571 662
572# 663#
573# Miscellaneous filesystems 664# Miscellaneous filesystems
@@ -584,19 +675,31 @@ CONFIG_RAMFS=y
584# CONFIG_HPFS_FS is not set 675# CONFIG_HPFS_FS is not set
585# CONFIG_QNX4FS_FS is not set 676# CONFIG_QNX4FS_FS is not set
586# CONFIG_SYSV_FS is not set 677# CONFIG_SYSV_FS is not set
587# CONFIG_UFS_FS is not set 678CONFIG_UFS_FS=y
679CONFIG_UFS_FS_WRITE=y
588 680
589# 681#
590# Network File Systems 682# Network File Systems
591# 683#
592# CONFIG_NFS_FS is not set 684CONFIG_NFS_FS=y
685CONFIG_NFS_V3=y
686# CONFIG_NFS_V3_ACL is not set
687# CONFIG_NFS_V4 is not set
688# CONFIG_NFS_DIRECTIO is not set
593# CONFIG_NFSD is not set 689# CONFIG_NFSD is not set
594# CONFIG_EXPORTFS is not set 690CONFIG_ROOT_NFS=y
691CONFIG_LOCKD=y
692CONFIG_LOCKD_V4=y
693CONFIG_NFS_COMMON=y
694CONFIG_SUNRPC=y
695# CONFIG_RPCSEC_GSS_KRB5 is not set
696# CONFIG_RPCSEC_GSS_SPKM3 is not set
595# CONFIG_SMB_FS is not set 697# CONFIG_SMB_FS is not set
596# CONFIG_CIFS is not set 698# CONFIG_CIFS is not set
597# CONFIG_NCP_FS is not set 699# CONFIG_NCP_FS is not set
598# CONFIG_CODA_FS is not set 700# CONFIG_CODA_FS is not set
599# CONFIG_AFS_FS is not set 701# CONFIG_AFS_FS is not set
702# CONFIG_9P_FS is not set
600 703
601# 704#
602# Partition Types 705# Partition Types
@@ -631,9 +734,24 @@ CONFIG_ULTRIX_PARTITION=y
631# 734#
632# Kernel hacking 735# Kernel hacking
633# 736#
634# CONFIG_DEBUG_KERNEL is not set 737# CONFIG_PRINTK_TIME is not set
738CONFIG_DEBUG_KERNEL=y
739CONFIG_MAGIC_SYSRQ=y
740CONFIG_LOG_BUF_SHIFT=14
741CONFIG_DETECT_SOFTLOCKUP=y
742# CONFIG_SCHEDSTATS is not set
743# CONFIG_DEBUG_SLAB is not set
744# CONFIG_DEBUG_SPINLOCK is not set
745# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
746# CONFIG_DEBUG_KOBJECT is not set
747# CONFIG_DEBUG_INFO is not set
748# CONFIG_DEBUG_FS is not set
635CONFIG_CROSSCOMPILE=y 749CONFIG_CROSSCOMPILE=y
636CONFIG_CMDLINE="" 750CONFIG_CMDLINE=""
751# CONFIG_DEBUG_STACK_USAGE is not set
752# CONFIG_KGDB is not set
753# CONFIG_RUNTIME_DEBUG is not set
754# CONFIG_MIPS_UNCACHED is not set
637 755
638# 756#
639# Security options 757# Security options
@@ -645,7 +763,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
645# 763#
646# Cryptographic options 764# Cryptographic options
647# 765#
648# CONFIG_CRYPTO is not set 766CONFIG_CRYPTO=y
767CONFIG_CRYPTO_HMAC=y
768CONFIG_CRYPTO_NULL=m
769CONFIG_CRYPTO_MD4=m
770CONFIG_CRYPTO_MD5=m
771CONFIG_CRYPTO_SHA1=m
772CONFIG_CRYPTO_SHA256=m
773CONFIG_CRYPTO_SHA512=m
774CONFIG_CRYPTO_WP512=m
775CONFIG_CRYPTO_TGR192=m
776CONFIG_CRYPTO_DES=m
777CONFIG_CRYPTO_BLOWFISH=m
778CONFIG_CRYPTO_TWOFISH=m
779CONFIG_CRYPTO_SERPENT=m
780CONFIG_CRYPTO_AES=m
781CONFIG_CRYPTO_CAST5=m
782CONFIG_CRYPTO_CAST6=m
783CONFIG_CRYPTO_TEA=m
784CONFIG_CRYPTO_ARC4=m
785CONFIG_CRYPTO_KHAZAD=m
786CONFIG_CRYPTO_ANUBIS=m
787CONFIG_CRYPTO_DEFLATE=m
788CONFIG_CRYPTO_MICHAEL_MIC=m
789CONFIG_CRYPTO_CRC32C=m
790# CONFIG_CRYPTO_TEST is not set
649 791
650# 792#
651# Hardware crypto devices 793# Hardware crypto devices
@@ -655,7 +797,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
655# Library routines 797# Library routines
656# 798#
657# CONFIG_CRC_CCITT is not set 799# CONFIG_CRC_CCITT is not set
800CONFIG_CRC16=m
658CONFIG_CRC32=y 801CONFIG_CRC32=y
659CONFIG_LIBCRC32C=m 802CONFIG_LIBCRC32C=m
660CONFIG_GENERIC_HARDIRQS=y 803CONFIG_ZLIB_INFLATE=m
661CONFIG_GENERIC_IRQ_PROBE=y 804CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/mips/configs/e55_defconfig b/arch/mips/configs/e55_defconfig
index ba2ec01defb1..c0d06ea5566c 100644
--- a/arch/mips/configs/e55_defconfig
+++ b/arch/mips/configs/e55_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:03 2005 4# Thu Oct 20 22:25:51 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14
29# CONFIG_HOTPLUG is not set 27# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,56 +59,84 @@ CONFIG_KMOD=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60CONFIG_MACH_VR41XX=y 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_NEC_CMBVR4133 is not set 64# CONFIG_MIPS_PB1000 is not set
62CONFIG_CASIO_E55=y 65# CONFIG_MIPS_PB1100 is not set
63# CONFIG_IBM_WORKPAD is not set 66# CONFIG_MIPS_PB1500 is not set
64# CONFIG_TANBAC_TB0226 is not set 67# CONFIG_MIPS_PB1550 is not set
65# CONFIG_TANBAC_TB0229 is not set 68# CONFIG_MIPS_PB1200 is not set
66# CONFIG_VICTOR_MPC30X is not set 69# CONFIG_MIPS_DB1000 is not set
67# CONFIG_ZAO_CAPCELLA is not set 70# CONFIG_MIPS_DB1100 is not set
68# CONFIG_VRC4171 is not set 71# CONFIG_MIPS_DB1500 is not set
69# CONFIG_TOSHIBA_JMR3927 is not set 72# CONFIG_MIPS_DB1550 is not set
73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
70# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
71# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
72# CONFIG_MIPS_EV64120 is not set 77# CONFIG_MIPS_EV64120 is not set
73# CONFIG_MIPS_EV96100 is not set 78# CONFIG_MIPS_EV96100 is not set
74# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
75# CONFIG_LASAT is not set
76# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
77# CONFIG_MIPS_ATLAS is not set 83# CONFIG_MIPS_ATLAS is not set
78# CONFIG_MIPS_MALTA is not set 84# CONFIG_MIPS_MALTA is not set
79# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
80# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
81# CONFIG_MOMENCO_OCELOT_G is not set
82# CONFIG_MOMENCO_OCELOT_C is not set
83# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
84# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
85# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
86# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
87# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
88# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
89# CONFIG_NEC_OSPREY is not set 98CONFIG_MACH_VR41XX=y
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
90# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
91# CONFIG_SOC_AU1X00 is not set 102# CONFIG_SGI_IP27 is not set
92# CONFIG_SIBYTE_SB1xxx_SOC is not set 103# CONFIG_SGI_IP32 is not set
104# CONFIG_SIBYTE_BIGSUR is not set
105# CONFIG_SIBYTE_SWARM is not set
106# CONFIG_SIBYTE_SENTOSA is not set
107# CONFIG_SIBYTE_RHONE is not set
108# CONFIG_SIBYTE_CARMEL is not set
109# CONFIG_SIBYTE_PTSWARM is not set
110# CONFIG_SIBYTE_LITTLESUR is not set
111# CONFIG_SIBYTE_CRHINE is not set
112# CONFIG_SIBYTE_CRHONE is not set
93# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
94# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
117# CONFIG_NEC_CMBVR4133 is not set
118CONFIG_CASIO_E55=y
119# CONFIG_IBM_WORKPAD is not set
120# CONFIG_TANBAC_TB022X is not set
121# CONFIG_VICTOR_MPC30X is not set
122# CONFIG_ZAO_CAPCELLA is not set
95CONFIG_RWSEM_GENERIC_SPINLOCK=y 123CONFIG_RWSEM_GENERIC_SPINLOCK=y
96CONFIG_GENERIC_CALIBRATE_DELAY=y 124CONFIG_GENERIC_CALIBRATE_DELAY=y
97CONFIG_HAVE_DEC_LOCK=y
98CONFIG_DMA_NONCOHERENT=y 125CONFIG_DMA_NONCOHERENT=y
99CONFIG_DMA_NEED_PCI_MAP_STATE=y 126CONFIG_DMA_NEED_PCI_MAP_STATE=y
127# CONFIG_CPU_BIG_ENDIAN is not set
100CONFIG_CPU_LITTLE_ENDIAN=y 128CONFIG_CPU_LITTLE_ENDIAN=y
129CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
101CONFIG_IRQ_CPU=y 130CONFIG_IRQ_CPU=y
102CONFIG_MIPS_L1_CACHE_SHIFT=5 131CONFIG_MIPS_L1_CACHE_SHIFT=5
103 132
104# 133#
105# CPU selection 134# CPU selection
106# 135#
107# CONFIG_CPU_MIPS32 is not set 136# CONFIG_CPU_MIPS32_R1 is not set
108# CONFIG_CPU_MIPS64 is not set 137# CONFIG_CPU_MIPS32_R2 is not set
138# CONFIG_CPU_MIPS64_R1 is not set
139# CONFIG_CPU_MIPS64_R2 is not set
109# CONFIG_CPU_R3000 is not set 140# CONFIG_CPU_R3000 is not set
110# CONFIG_CPU_TX39XX is not set 141# CONFIG_CPU_TX39XX is not set
111CONFIG_CPU_VR41XX=y 142CONFIG_CPU_VR41XX=y
@@ -121,12 +152,36 @@ CONFIG_CPU_VR41XX=y
121# CONFIG_CPU_RM7000 is not set 152# CONFIG_CPU_RM7000 is not set
122# CONFIG_CPU_RM9000 is not set 153# CONFIG_CPU_RM9000 is not set
123# CONFIG_CPU_SB1 is not set 154# CONFIG_CPU_SB1 is not set
155CONFIG_SYS_HAS_CPU_VR41XX=y
156CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
157CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
158CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
159CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
160
161#
162# Kernel type
163#
164CONFIG_32BIT=y
165# CONFIG_64BIT is not set
124CONFIG_PAGE_SIZE_4KB=y 166CONFIG_PAGE_SIZE_4KB=y
125# CONFIG_PAGE_SIZE_8KB is not set 167# CONFIG_PAGE_SIZE_8KB is not set
126# CONFIG_PAGE_SIZE_16KB is not set 168# CONFIG_PAGE_SIZE_16KB is not set
127# CONFIG_PAGE_SIZE_64KB is not set 169# CONFIG_PAGE_SIZE_64KB is not set
170# CONFIG_MIPS_MT is not set
128# CONFIG_CPU_ADVANCED is not set 171# CONFIG_CPU_ADVANCED is not set
129CONFIG_CPU_HAS_SYNC=y 172CONFIG_CPU_HAS_SYNC=y
173CONFIG_GENERIC_HARDIRQS=y
174CONFIG_GENERIC_IRQ_PROBE=y
175CONFIG_ARCH_FLATMEM_ENABLE=y
176CONFIG_SELECT_MEMORY_MODEL=y
177CONFIG_FLATMEM_MANUAL=y
178# CONFIG_DISCONTIGMEM_MANUAL is not set
179# CONFIG_SPARSEMEM_MANUAL is not set
180CONFIG_FLATMEM=y
181CONFIG_FLAT_NODE_MEM_MAP=y
182# CONFIG_SPARSEMEM_STATIC is not set
183CONFIG_PREEMPT_NONE=y
184# CONFIG_PREEMPT_VOLUNTARY is not set
130# CONFIG_PREEMPT is not set 185# CONFIG_PREEMPT is not set
131 186
132# 187#
@@ -141,11 +196,6 @@ CONFIG_MMU=y
141# CONFIG_PCCARD is not set 196# CONFIG_PCCARD is not set
142 197
143# 198#
144# PC-card bridges
145#
146CONFIG_PCMCIA_PROBE=y
147
148#
149# PCI Hotplug Support 199# PCI Hotplug Support
150# 200#
151 201
@@ -157,6 +207,78 @@ CONFIG_BINFMT_ELF=y
157CONFIG_TRAD_SIGNALS=y 207CONFIG_TRAD_SIGNALS=y
158 208
159# 209#
210# Networking
211#
212CONFIG_NET=y
213
214#
215# Networking options
216#
217CONFIG_PACKET=y
218CONFIG_PACKET_MMAP=y
219CONFIG_UNIX=y
220CONFIG_XFRM=y
221CONFIG_XFRM_USER=m
222CONFIG_NET_KEY=y
223CONFIG_INET=y
224CONFIG_IP_MULTICAST=y
225# CONFIG_IP_ADVANCED_ROUTER is not set
226CONFIG_IP_FIB_HASH=y
227# CONFIG_IP_PNP is not set
228# CONFIG_NET_IPIP is not set
229# CONFIG_NET_IPGRE is not set
230# CONFIG_IP_MROUTE is not set
231# CONFIG_ARPD is not set
232# CONFIG_SYN_COOKIES is not set
233# CONFIG_INET_AH is not set
234# CONFIG_INET_ESP is not set
235# CONFIG_INET_IPCOMP is not set
236CONFIG_INET_TUNNEL=m
237CONFIG_INET_DIAG=y
238CONFIG_INET_TCP_DIAG=y
239# CONFIG_TCP_CONG_ADVANCED is not set
240CONFIG_TCP_CONG_BIC=y
241# CONFIG_IPV6 is not set
242# CONFIG_NETFILTER is not set
243
244#
245# DCCP Configuration (EXPERIMENTAL)
246#
247# CONFIG_IP_DCCP is not set
248
249#
250# SCTP Configuration (EXPERIMENTAL)
251#
252# CONFIG_IP_SCTP is not set
253# CONFIG_ATM is not set
254# CONFIG_BRIDGE is not set
255# CONFIG_VLAN_8021Q is not set
256# CONFIG_DECNET is not set
257# CONFIG_LLC2 is not set
258# CONFIG_IPX is not set
259# CONFIG_ATALK is not set
260# CONFIG_X25 is not set
261# CONFIG_LAPB is not set
262# CONFIG_NET_DIVERT is not set
263# CONFIG_ECONET is not set
264# CONFIG_WAN_ROUTER is not set
265# CONFIG_NET_SCHED is not set
266# CONFIG_NET_CLS_ROUTE is not set
267
268#
269# Network testing
270#
271# CONFIG_NET_PKTGEN is not set
272# CONFIG_HAMRADIO is not set
273# CONFIG_IRDA is not set
274# CONFIG_BT is not set
275CONFIG_IEEE80211=m
276# CONFIG_IEEE80211_DEBUG is not set
277CONFIG_IEEE80211_CRYPT_WEP=m
278CONFIG_IEEE80211_CRYPT_CCMP=m
279CONFIG_IEEE80211_CRYPT_TKIP=m
280
281#
160# Device Drivers 282# Device Drivers
161# 283#
162 284
@@ -168,6 +290,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
168# CONFIG_FW_LOADER is not set 290# CONFIG_FW_LOADER is not set
169 291
170# 292#
293# Connector - unified userspace <-> kernelspace linker
294#
295CONFIG_CONNECTOR=m
296
297#
171# Memory Technology Devices (MTD) 298# Memory Technology Devices (MTD)
172# 299#
173# CONFIG_MTD is not set 300# CONFIG_MTD is not set
@@ -185,18 +312,13 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
185# 312#
186# Block devices 313# Block devices
187# 314#
188# CONFIG_BLK_DEV_FD is not set
189# CONFIG_BLK_DEV_XD is not set
190# CONFIG_BLK_DEV_COW_COMMON is not set 315# CONFIG_BLK_DEV_COW_COMMON is not set
191# CONFIG_BLK_DEV_LOOP is not set 316# CONFIG_BLK_DEV_LOOP is not set
192# CONFIG_BLK_DEV_NBD is not set 317# CONFIG_BLK_DEV_NBD is not set
193# CONFIG_BLK_DEV_RAM is not set 318# CONFIG_BLK_DEV_RAM is not set
194CONFIG_BLK_DEV_RAM_COUNT=16 319CONFIG_BLK_DEV_RAM_COUNT=16
195CONFIG_INITRAMFS_SOURCE=""
196# CONFIG_LBD is not set 320# CONFIG_LBD is not set
197CONFIG_CDROM_PKTCDVD=m 321# CONFIG_CDROM_PKTCDVD is not set
198CONFIG_CDROM_PKTCDVD_BUFFERS=8
199# CONFIG_CDROM_PKTCDVD_WCACHE is not set
200 322
201# 323#
202# IO Schedulers 324# IO Schedulers
@@ -205,7 +327,7 @@ CONFIG_IOSCHED_NOOP=y
205CONFIG_IOSCHED_AS=y 327CONFIG_IOSCHED_AS=y
206CONFIG_IOSCHED_DEADLINE=y 328CONFIG_IOSCHED_DEADLINE=y
207CONFIG_IOSCHED_CFQ=y 329CONFIG_IOSCHED_CFQ=y
208CONFIG_ATA_OVER_ETH=m 330# CONFIG_ATA_OVER_ETH is not set
209 331
210# 332#
211# ATA/ATAPI/MFM/RLL support 333# ATA/ATAPI/MFM/RLL support
@@ -237,6 +359,7 @@ CONFIG_IDE_GENERIC=y
237# 359#
238# SCSI device support 360# SCSI device support
239# 361#
362# CONFIG_RAID_ATTRS is not set
240# CONFIG_SCSI is not set 363# CONFIG_SCSI is not set
241 364
242# 365#
@@ -252,6 +375,7 @@ CONFIG_IDE_GENERIC=y
252# 375#
253# Fusion MPT device support 376# Fusion MPT device support
254# 377#
378# CONFIG_FUSION is not set
255 379
256# 380#
257# IEEE 1394 (FireWire) support 381# IEEE 1394 (FireWire) support
@@ -262,76 +386,13 @@ CONFIG_IDE_GENERIC=y
262# 386#
263 387
264# 388#
265# Networking support 389# Network device support
266#
267CONFIG_NET=y
268
269#
270# Networking options
271#
272CONFIG_PACKET=y
273CONFIG_PACKET_MMAP=y
274CONFIG_NETLINK_DEV=y
275CONFIG_UNIX=y
276CONFIG_NET_KEY=y
277CONFIG_INET=y
278CONFIG_IP_MULTICAST=y
279# CONFIG_IP_ADVANCED_ROUTER is not set
280# CONFIG_IP_PNP is not set
281# CONFIG_NET_IPIP is not set
282# CONFIG_NET_IPGRE is not set
283# CONFIG_IP_MROUTE is not set
284# CONFIG_ARPD is not set
285# CONFIG_SYN_COOKIES is not set
286# CONFIG_INET_AH is not set
287# CONFIG_INET_ESP is not set
288# CONFIG_INET_IPCOMP is not set
289CONFIG_INET_TUNNEL=m
290CONFIG_IP_TCPDIAG=m
291# CONFIG_IP_TCPDIAG_IPV6 is not set
292# CONFIG_IPV6 is not set
293# CONFIG_NETFILTER is not set
294CONFIG_XFRM=y
295CONFIG_XFRM_USER=m
296
297#
298# SCTP Configuration (EXPERIMENTAL)
299#
300# CONFIG_IP_SCTP is not set
301# CONFIG_ATM is not set
302# CONFIG_BRIDGE is not set
303# CONFIG_VLAN_8021Q is not set
304# CONFIG_DECNET is not set
305# CONFIG_LLC2 is not set
306# CONFIG_IPX is not set
307# CONFIG_ATALK is not set
308# CONFIG_X25 is not set
309# CONFIG_LAPB is not set
310# CONFIG_NET_DIVERT is not set
311# CONFIG_ECONET is not set
312# CONFIG_WAN_ROUTER is not set
313
314#
315# QoS and/or fair queueing
316#
317# CONFIG_NET_SCHED is not set
318# CONFIG_NET_CLS_ROUTE is not set
319
320#
321# Network testing
322# 390#
323# CONFIG_NET_PKTGEN is not set
324# CONFIG_NETPOLL is not set
325# CONFIG_NET_POLL_CONTROLLER is not set
326# CONFIG_HAMRADIO is not set
327# CONFIG_IRDA is not set
328# CONFIG_BT is not set
329CONFIG_NETDEVICES=y 391CONFIG_NETDEVICES=y
330# CONFIG_DUMMY is not set 392# CONFIG_DUMMY is not set
331# CONFIG_BONDING is not set 393# CONFIG_BONDING is not set
332# CONFIG_EQUALIZER is not set 394# CONFIG_EQUALIZER is not set
333# CONFIG_TUN is not set 395# CONFIG_TUN is not set
334# CONFIG_ETHERTAP is not set
335 396
336# 397#
337# ARCnet devices 398# ARCnet devices
@@ -339,12 +400,26 @@ CONFIG_NETDEVICES=y
339# CONFIG_ARCNET is not set 400# CONFIG_ARCNET is not set
340 401
341# 402#
403# PHY device support
404#
405CONFIG_PHYLIB=m
406CONFIG_PHYCONTROL=y
407
408#
409# MII PHY device drivers
410#
411CONFIG_MARVELL_PHY=m
412CONFIG_DAVICOM_PHY=m
413CONFIG_QSEMI_PHY=m
414CONFIG_LXT_PHY=m
415CONFIG_CICADA_PHY=m
416
417#
342# Ethernet (10 or 100Mbit) 418# Ethernet (10 or 100Mbit)
343# 419#
344CONFIG_NET_ETHERNET=y 420CONFIG_NET_ETHERNET=y
345# CONFIG_MII is not set 421# CONFIG_MII is not set
346# CONFIG_NET_VENDOR_3COM is not set 422# CONFIG_NET_VENDOR_3COM is not set
347# CONFIG_LANCE is not set
348# CONFIG_NET_VENDOR_SMC is not set 423# CONFIG_NET_VENDOR_SMC is not set
349# CONFIG_NET_VENDOR_RACAL is not set 424# CONFIG_NET_VENDOR_RACAL is not set
350# CONFIG_AT1700 is not set 425# CONFIG_AT1700 is not set
@@ -380,6 +455,8 @@ CONFIG_NET_ETHERNET=y
380# CONFIG_SLIP is not set 455# CONFIG_SLIP is not set
381# CONFIG_SHAPER is not set 456# CONFIG_SHAPER is not set
382# CONFIG_NETCONSOLE is not set 457# CONFIG_NETCONSOLE is not set
458# CONFIG_NETPOLL is not set
459# CONFIG_NET_POLL_CONTROLLER is not set
383 460
384# 461#
385# ISDN subsystem 462# ISDN subsystem
@@ -401,26 +478,14 @@ CONFIG_INPUT=y
401# 478#
402CONFIG_INPUT_MOUSEDEV=y 479CONFIG_INPUT_MOUSEDEV=y
403CONFIG_INPUT_MOUSEDEV_PSAUX=y 480CONFIG_INPUT_MOUSEDEV_PSAUX=y
404CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 481CONFIG_INPUT_MOUSEDEV_SCREEN_X=320
405CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 482CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
406# CONFIG_INPUT_JOYDEV is not set 483# CONFIG_INPUT_JOYDEV is not set
407# CONFIG_INPUT_TSDEV is not set 484# CONFIG_INPUT_TSDEV is not set
408# CONFIG_INPUT_EVDEV is not set 485# CONFIG_INPUT_EVDEV is not set
409# CONFIG_INPUT_EVBUG is not set 486# CONFIG_INPUT_EVBUG is not set
410 487
411# 488#
412# Input I/O drivers
413#
414# CONFIG_GAMEPORT is not set
415CONFIG_SOUND_GAMEPORT=y
416CONFIG_SERIO=y
417CONFIG_SERIO_I8042=y
418CONFIG_SERIO_SERPORT=y
419# CONFIG_SERIO_CT82C710 is not set
420# CONFIG_SERIO_LIBPS2 is not set
421CONFIG_SERIO_RAW=m
422
423#
424# Input Device Drivers 489# Input Device Drivers
425# 490#
426# CONFIG_INPUT_KEYBOARD is not set 491# CONFIG_INPUT_KEYBOARD is not set
@@ -430,6 +495,16 @@ CONFIG_SERIO_RAW=m
430# CONFIG_INPUT_MISC is not set 495# CONFIG_INPUT_MISC is not set
431 496
432# 497#
498# Hardware I/O ports
499#
500CONFIG_SERIO=y
501# CONFIG_SERIO_I8042 is not set
502CONFIG_SERIO_SERPORT=y
503# CONFIG_SERIO_LIBPS2 is not set
504CONFIG_SERIO_RAW=m
505# CONFIG_GAMEPORT is not set
506
507#
433# Character devices 508# Character devices
434# 509#
435CONFIG_VT=y 510CONFIG_VT=y
@@ -440,16 +515,15 @@ CONFIG_HW_CONSOLE=y
440# 515#
441# Serial drivers 516# Serial drivers
442# 517#
443CONFIG_SERIAL_8250=y 518# CONFIG_SERIAL_8250 is not set
444CONFIG_SERIAL_8250_CONSOLE=y
445CONFIG_SERIAL_8250_NR_UARTS=4
446# CONFIG_SERIAL_8250_EXTENDED is not set
447 519
448# 520#
449# Non-8250 serial port support 521# Non-8250 serial port support
450# 522#
451CONFIG_SERIAL_CORE=y 523CONFIG_SERIAL_CORE=y
452CONFIG_SERIAL_CORE_CONSOLE=y 524CONFIG_SERIAL_CORE_CONSOLE=y
525CONFIG_SERIAL_VR41XX=y
526CONFIG_SERIAL_VR41XX_CONSOLE=y
453CONFIG_UNIX98_PTYS=y 527CONFIG_UNIX98_PTYS=y
454CONFIG_LEGACY_PTYS=y 528CONFIG_LEGACY_PTYS=y
455CONFIG_LEGACY_PTY_COUNT=256 529CONFIG_LEGACY_PTY_COUNT=256
@@ -484,10 +558,14 @@ CONFIG_WATCHDOG=y
484# 558#
485# Ftape, the floppy tape device driver 559# Ftape, the floppy tape device driver
486# 560#
487# CONFIG_DRM is not set 561CONFIG_GPIO_VR41XX=y
488# CONFIG_RAW_DRIVER is not set 562# CONFIG_RAW_DRIVER is not set
489 563
490# 564#
565# TPM devices
566#
567
568#
491# I2C support 569# I2C support
492# 570#
493# CONFIG_I2C is not set 571# CONFIG_I2C is not set
@@ -498,10 +576,20 @@ CONFIG_WATCHDOG=y
498# CONFIG_W1 is not set 576# CONFIG_W1 is not set
499 577
500# 578#
579# Hardware Monitoring support
580#
581# CONFIG_HWMON is not set
582# CONFIG_HWMON_VID is not set
583
584#
501# Misc devices 585# Misc devices
502# 586#
503 587
504# 588#
589# Multimedia Capabilities Port drivers
590#
591
592#
505# Multimedia devices 593# Multimedia devices
506# 594#
507# CONFIG_VIDEO_DEV is not set 595# CONFIG_VIDEO_DEV is not set
@@ -522,7 +610,6 @@ CONFIG_WATCHDOG=y
522# CONFIG_VGA_CONSOLE is not set 610# CONFIG_VGA_CONSOLE is not set
523# CONFIG_MDA_CONSOLE is not set 611# CONFIG_MDA_CONSOLE is not set
524CONFIG_DUMMY_CONSOLE=y 612CONFIG_DUMMY_CONSOLE=y
525# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
526 613
527# 614#
528# Sound 615# Sound
@@ -536,10 +623,6 @@ CONFIG_DUMMY_CONSOLE=y
536# CONFIG_USB_ARCH_HAS_OHCI is not set 623# CONFIG_USB_ARCH_HAS_OHCI is not set
537 624
538# 625#
539# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
540#
541
542#
543# USB Gadget Support 626# USB Gadget Support
544# 627#
545# CONFIG_USB_GADGET is not set 628# CONFIG_USB_GADGET is not set
@@ -552,24 +635,31 @@ CONFIG_DUMMY_CONSOLE=y
552# 635#
553# InfiniBand support 636# InfiniBand support
554# 637#
555# CONFIG_INFINIBAND is not set 638
639#
640# SN Devices
641#
556 642
557# 643#
558# File systems 644# File systems
559# 645#
560CONFIG_EXT2_FS=y 646CONFIG_EXT2_FS=y
561# CONFIG_EXT2_FS_XATTR is not set 647# CONFIG_EXT2_FS_XATTR is not set
648# CONFIG_EXT2_FS_XIP is not set
562# CONFIG_EXT3_FS is not set 649# CONFIG_EXT3_FS is not set
563# CONFIG_JBD is not set 650# CONFIG_JBD is not set
564# CONFIG_REISERFS_FS is not set 651# CONFIG_REISERFS_FS is not set
565# CONFIG_JFS_FS is not set 652# CONFIG_JFS_FS is not set
653# CONFIG_FS_POSIX_ACL is not set
566# CONFIG_XFS_FS is not set 654# CONFIG_XFS_FS is not set
567# CONFIG_MINIX_FS is not set 655# CONFIG_MINIX_FS is not set
568# CONFIG_ROMFS_FS is not set 656# CONFIG_ROMFS_FS is not set
657CONFIG_INOTIFY=y
569# CONFIG_QUOTA is not set 658# CONFIG_QUOTA is not set
570CONFIG_DNOTIFY=y 659CONFIG_DNOTIFY=y
571CONFIG_AUTOFS_FS=y 660CONFIG_AUTOFS_FS=y
572CONFIG_AUTOFS4_FS=y 661CONFIG_AUTOFS4_FS=y
662CONFIG_FUSE_FS=m
573 663
574# 664#
575# CD-ROM/DVD Filesystems 665# CD-ROM/DVD Filesystems
@@ -590,12 +680,10 @@ CONFIG_AUTOFS4_FS=y
590CONFIG_PROC_FS=y 680CONFIG_PROC_FS=y
591CONFIG_PROC_KCORE=y 681CONFIG_PROC_KCORE=y
592CONFIG_SYSFS=y 682CONFIG_SYSFS=y
593# CONFIG_DEVFS_FS is not set
594CONFIG_DEVPTS_FS_XATTR=y
595CONFIG_DEVPTS_FS_SECURITY=y
596# CONFIG_TMPFS is not set 683# CONFIG_TMPFS is not set
597# CONFIG_HUGETLB_PAGE is not set 684# CONFIG_HUGETLB_PAGE is not set
598CONFIG_RAMFS=y 685CONFIG_RAMFS=y
686CONFIG_RELAYFS_FS=m
599 687
600# 688#
601# Miscellaneous filesystems 689# Miscellaneous filesystems
@@ -617,16 +705,17 @@ CONFIG_RAMFS=y
617# 705#
618# Network File Systems 706# Network File Systems
619# 707#
620CONFIG_NFS_FS=y 708CONFIG_NFS_FS=m
621# CONFIG_NFS_V3 is not set 709# CONFIG_NFS_V3 is not set
622# CONFIG_NFS_V4 is not set 710# CONFIG_NFS_V4 is not set
623# CONFIG_NFS_DIRECTIO is not set 711# CONFIG_NFS_DIRECTIO is not set
624CONFIG_NFSD=y 712CONFIG_NFSD=m
625# CONFIG_NFSD_V3 is not set 713# CONFIG_NFSD_V3 is not set
626# CONFIG_NFSD_TCP is not set 714# CONFIG_NFSD_TCP is not set
627CONFIG_LOCKD=y 715CONFIG_LOCKD=m
628CONFIG_EXPORTFS=y 716CONFIG_EXPORTFS=m
629CONFIG_SUNRPC=y 717CONFIG_NFS_COMMON=y
718CONFIG_SUNRPC=m
630# CONFIG_RPCSEC_GSS_KRB5 is not set 719# CONFIG_RPCSEC_GSS_KRB5 is not set
631# CONFIG_RPCSEC_GSS_SPKM3 is not set 720# CONFIG_RPCSEC_GSS_SPKM3 is not set
632# CONFIG_SMB_FS is not set 721# CONFIG_SMB_FS is not set
@@ -634,6 +723,7 @@ CONFIG_SUNRPC=y
634# CONFIG_NCP_FS is not set 723# CONFIG_NCP_FS is not set
635# CONFIG_CODA_FS is not set 724# CONFIG_CODA_FS is not set
636# CONFIG_AFS_FS is not set 725# CONFIG_AFS_FS is not set
726# CONFIG_9P_FS is not set
637 727
638# 728#
639# Partition Types 729# Partition Types
@@ -654,9 +744,11 @@ CONFIG_MSDOS_PARTITION=y
654# 744#
655# Kernel hacking 745# Kernel hacking
656# 746#
747# CONFIG_PRINTK_TIME is not set
657# CONFIG_DEBUG_KERNEL is not set 748# CONFIG_DEBUG_KERNEL is not set
749CONFIG_LOG_BUF_SHIFT=14
658CONFIG_CROSSCOMPILE=y 750CONFIG_CROSSCOMPILE=y
659CONFIG_CMDLINE="" 751CONFIG_CMDLINE="console=ttyVR0,19200 mem=8M"
660 752
661# 753#
662# Security options 754# Security options
@@ -668,7 +760,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
668# 760#
669# Cryptographic options 761# Cryptographic options
670# 762#
671# CONFIG_CRYPTO is not set 763CONFIG_CRYPTO=y
764CONFIG_CRYPTO_HMAC=y
765CONFIG_CRYPTO_NULL=m
766CONFIG_CRYPTO_MD4=m
767CONFIG_CRYPTO_MD5=m
768CONFIG_CRYPTO_SHA1=m
769CONFIG_CRYPTO_SHA256=m
770CONFIG_CRYPTO_SHA512=m
771CONFIG_CRYPTO_WP512=m
772CONFIG_CRYPTO_TGR192=m
773CONFIG_CRYPTO_DES=m
774CONFIG_CRYPTO_BLOWFISH=m
775CONFIG_CRYPTO_TWOFISH=m
776CONFIG_CRYPTO_SERPENT=m
777CONFIG_CRYPTO_AES=m
778CONFIG_CRYPTO_CAST5=m
779CONFIG_CRYPTO_CAST6=m
780CONFIG_CRYPTO_TEA=m
781CONFIG_CRYPTO_ARC4=m
782CONFIG_CRYPTO_KHAZAD=m
783CONFIG_CRYPTO_ANUBIS=m
784CONFIG_CRYPTO_DEFLATE=m
785CONFIG_CRYPTO_MICHAEL_MIC=m
786CONFIG_CRYPTO_CRC32C=m
787# CONFIG_CRYPTO_TEST is not set
672 788
673# 789#
674# Hardware crypto devices 790# Hardware crypto devices
@@ -678,7 +794,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
678# Library routines 794# Library routines
679# 795#
680# CONFIG_CRC_CCITT is not set 796# CONFIG_CRC_CCITT is not set
681# CONFIG_CRC32 is not set 797CONFIG_CRC16=m
798CONFIG_CRC32=m
682CONFIG_LIBCRC32C=m 799CONFIG_LIBCRC32C=m
683CONFIG_GENERIC_HARDIRQS=y 800CONFIG_ZLIB_INFLATE=m
684CONFIG_GENERIC_IRQ_PROBE=y 801CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/mips/configs/ev64120_defconfig b/arch/mips/configs/ev64120_defconfig
index 17e87f70f602..f1309d84d2fe 100644
--- a/arch/mips/configs/ev64120_defconfig
+++ b/arch/mips/configs/ev64120_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:03 2005 4# Thu Oct 20 22:25:54 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14 27CONFIG_HOTPLUG=y
29# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,41 +59,69 @@ CONFIG_MODULE_SRCVERSION_ALL=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60# CONFIG_MACH_VR41XX is not set 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_TOSHIBA_JMR3927 is not set 64# CONFIG_MIPS_PB1000 is not set
65# CONFIG_MIPS_PB1100 is not set
66# CONFIG_MIPS_PB1500 is not set
67# CONFIG_MIPS_PB1550 is not set
68# CONFIG_MIPS_PB1200 is not set
69# CONFIG_MIPS_DB1000 is not set
70# CONFIG_MIPS_DB1100 is not set
71# CONFIG_MIPS_DB1500 is not set
72# CONFIG_MIPS_DB1550 is not set
73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
62# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
63# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
64CONFIG_MIPS_EV64120=y 77CONFIG_MIPS_EV64120=y
65# CONFIG_EVB_PCI1 is not set
66# CONFIG_MIPS_EV96100 is not set 78# CONFIG_MIPS_EV96100 is not set
67# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
68# CONFIG_LASAT is not set
69# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
70# CONFIG_MIPS_ATLAS is not set 83# CONFIG_MIPS_ATLAS is not set
71# CONFIG_MIPS_MALTA is not set 84# CONFIG_MIPS_MALTA is not set
72# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
73# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
74# CONFIG_MOMENCO_OCELOT_G is not set
75# CONFIG_MOMENCO_OCELOT_C is not set
76# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
77# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
78# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
79# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
80# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
81# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
82# CONFIG_NEC_OSPREY is not set 98# CONFIG_MACH_VR41XX is not set
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
83# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
84# CONFIG_SOC_AU1X00 is not set 102# CONFIG_SGI_IP27 is not set
85# CONFIG_SIBYTE_SB1xxx_SOC is not set 103# CONFIG_SGI_IP32 is not set
104# CONFIG_SIBYTE_BIGSUR is not set
105# CONFIG_SIBYTE_SWARM is not set
106# CONFIG_SIBYTE_SENTOSA is not set
107# CONFIG_SIBYTE_RHONE is not set
108# CONFIG_SIBYTE_CARMEL is not set
109# CONFIG_SIBYTE_PTSWARM is not set
110# CONFIG_SIBYTE_LITTLESUR is not set
111# CONFIG_SIBYTE_CRHINE is not set
112# CONFIG_SIBYTE_CRHONE is not set
86# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
87# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
117# CONFIG_EVB_PCI1 is not set
88CONFIG_RWSEM_GENERIC_SPINLOCK=y 118CONFIG_RWSEM_GENERIC_SPINLOCK=y
89CONFIG_GENERIC_CALIBRATE_DELAY=y 119CONFIG_GENERIC_CALIBRATE_DELAY=y
90CONFIG_HAVE_DEC_LOCK=y
91CONFIG_DMA_NONCOHERENT=y 120CONFIG_DMA_NONCOHERENT=y
92CONFIG_DMA_NEED_PCI_MAP_STATE=y 121CONFIG_DMA_NEED_PCI_MAP_STATE=y
122CONFIG_CPU_BIG_ENDIAN=y
93# CONFIG_CPU_LITTLE_ENDIAN is not set 123# CONFIG_CPU_LITTLE_ENDIAN is not set
124CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
94CONFIG_MIPS_GT64120=y 125CONFIG_MIPS_GT64120=y
95# CONFIG_SYSCLK_75 is not set 126# CONFIG_SYSCLK_75 is not set
96# CONFIG_SYSCLK_83 is not set 127# CONFIG_SYSCLK_83 is not set
@@ -100,8 +131,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
100# 131#
101# CPU selection 132# CPU selection
102# 133#
103# CONFIG_CPU_MIPS32 is not set 134# CONFIG_CPU_MIPS32_R1 is not set
104# CONFIG_CPU_MIPS64 is not set 135# CONFIG_CPU_MIPS32_R2 is not set
136# CONFIG_CPU_MIPS64_R1 is not set
137# CONFIG_CPU_MIPS64_R2 is not set
105# CONFIG_CPU_R3000 is not set 138# CONFIG_CPU_R3000 is not set
106# CONFIG_CPU_TX39XX is not set 139# CONFIG_CPU_TX39XX is not set
107# CONFIG_CPU_VR41XX is not set 140# CONFIG_CPU_VR41XX is not set
@@ -117,15 +150,39 @@ CONFIG_CPU_R5000=y
117# CONFIG_CPU_RM7000 is not set 150# CONFIG_CPU_RM7000 is not set
118# CONFIG_CPU_RM9000 is not set 151# CONFIG_CPU_RM9000 is not set
119# CONFIG_CPU_SB1 is not set 152# CONFIG_CPU_SB1 is not set
153CONFIG_SYS_HAS_CPU_R5000=y
154CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
155CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
156CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
157CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
158
159#
160# Kernel type
161#
162CONFIG_32BIT=y
163# CONFIG_64BIT is not set
120CONFIG_PAGE_SIZE_4KB=y 164CONFIG_PAGE_SIZE_4KB=y
121# CONFIG_PAGE_SIZE_8KB is not set 165# CONFIG_PAGE_SIZE_8KB is not set
122# CONFIG_PAGE_SIZE_16KB is not set 166# CONFIG_PAGE_SIZE_16KB is not set
123# CONFIG_PAGE_SIZE_64KB is not set 167# CONFIG_PAGE_SIZE_64KB is not set
168# CONFIG_MIPS_MT is not set
124# CONFIG_64BIT_PHYS_ADDR is not set 169# CONFIG_64BIT_PHYS_ADDR is not set
125# CONFIG_CPU_ADVANCED is not set 170# CONFIG_CPU_ADVANCED is not set
126CONFIG_CPU_HAS_LLSC=y 171CONFIG_CPU_HAS_LLSC=y
127CONFIG_CPU_HAS_LLDSCD=y 172CONFIG_CPU_HAS_LLDSCD=y
128CONFIG_CPU_HAS_SYNC=y 173CONFIG_CPU_HAS_SYNC=y
174CONFIG_GENERIC_HARDIRQS=y
175CONFIG_GENERIC_IRQ_PROBE=y
176CONFIG_ARCH_FLATMEM_ENABLE=y
177CONFIG_SELECT_MEMORY_MODEL=y
178CONFIG_FLATMEM_MANUAL=y
179# CONFIG_DISCONTIGMEM_MANUAL is not set
180# CONFIG_SPARSEMEM_MANUAL is not set
181CONFIG_FLATMEM=y
182CONFIG_FLAT_NODE_MEM_MAP=y
183# CONFIG_SPARSEMEM_STATIC is not set
184CONFIG_PREEMPT_NONE=y
185# CONFIG_PREEMPT_VOLUNTARY is not set
129# CONFIG_PREEMPT is not set 186# CONFIG_PREEMPT is not set
130 187
131# 188#
@@ -134,7 +191,6 @@ CONFIG_CPU_HAS_SYNC=y
134CONFIG_HW_HAS_PCI=y 191CONFIG_HW_HAS_PCI=y
135CONFIG_PCI=y 192CONFIG_PCI=y
136CONFIG_PCI_LEGACY_PROC=y 193CONFIG_PCI_LEGACY_PROC=y
137CONFIG_PCI_NAMES=y
138CONFIG_MMU=y 194CONFIG_MMU=y
139 195
140# 196#
@@ -143,10 +199,6 @@ CONFIG_MMU=y
143# CONFIG_PCCARD is not set 199# CONFIG_PCCARD is not set
144 200
145# 201#
146# PC-card bridges
147#
148
149#
150# PCI Hotplug Support 202# PCI Hotplug Support
151# 203#
152# CONFIG_HOTPLUG_PCI is not set 204# CONFIG_HOTPLUG_PCI is not set
@@ -159,6 +211,79 @@ CONFIG_BINFMT_ELF=y
159CONFIG_TRAD_SIGNALS=y 211CONFIG_TRAD_SIGNALS=y
160 212
161# 213#
214# Networking
215#
216CONFIG_NET=y
217
218#
219# Networking options
220#
221# CONFIG_PACKET is not set
222CONFIG_UNIX=y
223CONFIG_XFRM=y
224CONFIG_XFRM_USER=m
225CONFIG_NET_KEY=y
226CONFIG_INET=y
227# CONFIG_IP_MULTICAST is not set
228# CONFIG_IP_ADVANCED_ROUTER is not set
229CONFIG_IP_FIB_HASH=y
230CONFIG_IP_PNP=y
231# CONFIG_IP_PNP_DHCP is not set
232# CONFIG_IP_PNP_BOOTP is not set
233# CONFIG_IP_PNP_RARP is not set
234# CONFIG_NET_IPIP is not set
235# CONFIG_NET_IPGRE is not set
236# CONFIG_ARPD is not set
237# CONFIG_SYN_COOKIES is not set
238# CONFIG_INET_AH is not set
239# CONFIG_INET_ESP is not set
240# CONFIG_INET_IPCOMP is not set
241CONFIG_INET_TUNNEL=m
242CONFIG_INET_DIAG=y
243CONFIG_INET_TCP_DIAG=y
244# CONFIG_TCP_CONG_ADVANCED is not set
245CONFIG_TCP_CONG_BIC=y
246# CONFIG_IPV6 is not set
247# CONFIG_NETFILTER is not set
248
249#
250# DCCP Configuration (EXPERIMENTAL)
251#
252# CONFIG_IP_DCCP is not set
253
254#
255# SCTP Configuration (EXPERIMENTAL)
256#
257# CONFIG_IP_SCTP is not set
258# CONFIG_ATM is not set
259# CONFIG_BRIDGE is not set
260# CONFIG_VLAN_8021Q is not set
261# CONFIG_DECNET is not set
262# CONFIG_LLC2 is not set
263# CONFIG_IPX is not set
264# CONFIG_ATALK is not set
265# CONFIG_X25 is not set
266# CONFIG_LAPB is not set
267# CONFIG_NET_DIVERT is not set
268# CONFIG_ECONET is not set
269# CONFIG_WAN_ROUTER is not set
270# CONFIG_NET_SCHED is not set
271# CONFIG_NET_CLS_ROUTE is not set
272
273#
274# Network testing
275#
276# CONFIG_NET_PKTGEN is not set
277# CONFIG_HAMRADIO is not set
278# CONFIG_IRDA is not set
279# CONFIG_BT is not set
280CONFIG_IEEE80211=m
281# CONFIG_IEEE80211_DEBUG is not set
282CONFIG_IEEE80211_CRYPT_WEP=m
283CONFIG_IEEE80211_CRYPT_CCMP=m
284CONFIG_IEEE80211_CRYPT_TKIP=m
285
286#
162# Device Drivers 287# Device Drivers
163# 288#
164 289
@@ -167,7 +292,12 @@ CONFIG_TRAD_SIGNALS=y
167# 292#
168CONFIG_STANDALONE=y 293CONFIG_STANDALONE=y
169CONFIG_PREVENT_FIRMWARE_BUILD=y 294CONFIG_PREVENT_FIRMWARE_BUILD=y
170# CONFIG_FW_LOADER is not set 295CONFIG_FW_LOADER=m
296
297#
298# Connector - unified userspace <-> kernelspace linker
299#
300CONFIG_CONNECTOR=m
171 301
172# 302#
173# Memory Technology Devices (MTD) 303# Memory Technology Devices (MTD)
@@ -186,7 +316,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
186# 316#
187# Block devices 317# Block devices
188# 318#
189# CONFIG_BLK_DEV_FD is not set
190# CONFIG_BLK_CPQ_DA is not set 319# CONFIG_BLK_CPQ_DA is not set
191# CONFIG_BLK_CPQ_CISS_DA is not set 320# CONFIG_BLK_CPQ_CISS_DA is not set
192# CONFIG_BLK_DEV_DAC960 is not set 321# CONFIG_BLK_DEV_DAC960 is not set
@@ -197,7 +326,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
197# CONFIG_BLK_DEV_SX8 is not set 326# CONFIG_BLK_DEV_SX8 is not set
198# CONFIG_BLK_DEV_RAM is not set 327# CONFIG_BLK_DEV_RAM is not set
199CONFIG_BLK_DEV_RAM_COUNT=16 328CONFIG_BLK_DEV_RAM_COUNT=16
200CONFIG_INITRAMFS_SOURCE=""
201# CONFIG_LBD is not set 329# CONFIG_LBD is not set
202CONFIG_CDROM_PKTCDVD=m 330CONFIG_CDROM_PKTCDVD=m
203CONFIG_CDROM_PKTCDVD_BUFFERS=8 331CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -220,6 +348,7 @@ CONFIG_ATA_OVER_ETH=m
220# 348#
221# SCSI device support 349# SCSI device support
222# 350#
351CONFIG_RAID_ATTRS=m
223# CONFIG_SCSI is not set 352# CONFIG_SCSI is not set
224 353
225# 354#
@@ -230,6 +359,7 @@ CONFIG_ATA_OVER_ETH=m
230# 359#
231# Fusion MPT device support 360# Fusion MPT device support
232# 361#
362# CONFIG_FUSION is not set
233 363
234# 364#
235# IEEE 1394 (FireWire) support 365# IEEE 1394 (FireWire) support
@@ -242,77 +372,13 @@ CONFIG_ATA_OVER_ETH=m
242# CONFIG_I2O is not set 372# CONFIG_I2O is not set
243 373
244# 374#
245# Networking support 375# Network device support
246#
247CONFIG_NET=y
248
249#
250# Networking options
251#
252# CONFIG_PACKET is not set
253CONFIG_NETLINK_DEV=y
254CONFIG_UNIX=y
255CONFIG_NET_KEY=y
256CONFIG_INET=y
257# CONFIG_IP_MULTICAST is not set
258# CONFIG_IP_ADVANCED_ROUTER is not set
259CONFIG_IP_PNP=y
260# CONFIG_IP_PNP_DHCP is not set
261# CONFIG_IP_PNP_BOOTP is not set
262# CONFIG_IP_PNP_RARP is not set
263# CONFIG_NET_IPIP is not set
264# CONFIG_NET_IPGRE is not set
265# CONFIG_ARPD is not set
266# CONFIG_SYN_COOKIES is not set
267# CONFIG_INET_AH is not set
268# CONFIG_INET_ESP is not set
269# CONFIG_INET_IPCOMP is not set
270CONFIG_INET_TUNNEL=m
271CONFIG_IP_TCPDIAG=m
272# CONFIG_IP_TCPDIAG_IPV6 is not set
273# CONFIG_IPV6 is not set
274# CONFIG_NETFILTER is not set
275CONFIG_XFRM=y
276CONFIG_XFRM_USER=m
277
278#
279# SCTP Configuration (EXPERIMENTAL)
280# 376#
281# CONFIG_IP_SCTP is not set
282# CONFIG_ATM is not set
283# CONFIG_BRIDGE is not set
284# CONFIG_VLAN_8021Q is not set
285# CONFIG_DECNET is not set
286# CONFIG_LLC2 is not set
287# CONFIG_IPX is not set
288# CONFIG_ATALK is not set
289# CONFIG_X25 is not set
290# CONFIG_LAPB is not set
291# CONFIG_NET_DIVERT is not set
292# CONFIG_ECONET is not set
293# CONFIG_WAN_ROUTER is not set
294
295#
296# QoS and/or fair queueing
297#
298# CONFIG_NET_SCHED is not set
299# CONFIG_NET_CLS_ROUTE is not set
300
301#
302# Network testing
303#
304# CONFIG_NET_PKTGEN is not set
305# CONFIG_NETPOLL is not set
306# CONFIG_NET_POLL_CONTROLLER is not set
307# CONFIG_HAMRADIO is not set
308# CONFIG_IRDA is not set
309# CONFIG_BT is not set
310CONFIG_NETDEVICES=y 377CONFIG_NETDEVICES=y
311# CONFIG_DUMMY is not set 378# CONFIG_DUMMY is not set
312# CONFIG_BONDING is not set 379# CONFIG_BONDING is not set
313# CONFIG_EQUALIZER is not set 380# CONFIG_EQUALIZER is not set
314# CONFIG_TUN is not set 381# CONFIG_TUN is not set
315# CONFIG_ETHERTAP is not set
316 382
317# 383#
318# ARCnet devices 384# ARCnet devices
@@ -320,6 +386,21 @@ CONFIG_NETDEVICES=y
320# CONFIG_ARCNET is not set 386# CONFIG_ARCNET is not set
321 387
322# 388#
389# PHY device support
390#
391CONFIG_PHYLIB=m
392CONFIG_PHYCONTROL=y
393
394#
395# MII PHY device drivers
396#
397CONFIG_MARVELL_PHY=m
398CONFIG_DAVICOM_PHY=m
399CONFIG_QSEMI_PHY=m
400CONFIG_LXT_PHY=m
401CONFIG_CICADA_PHY=m
402
403#
323# Ethernet (10 or 100Mbit) 404# Ethernet (10 or 100Mbit)
324# 405#
325CONFIG_NET_ETHERNET=y 406CONFIG_NET_ETHERNET=y
@@ -345,12 +426,16 @@ CONFIG_NET_ETHERNET=y
345# CONFIG_HAMACHI is not set 426# CONFIG_HAMACHI is not set
346# CONFIG_YELLOWFIN is not set 427# CONFIG_YELLOWFIN is not set
347# CONFIG_R8169 is not set 428# CONFIG_R8169 is not set
429# CONFIG_SIS190 is not set
430# CONFIG_SKGE is not set
348# CONFIG_SK98LIN is not set 431# CONFIG_SK98LIN is not set
349# CONFIG_TIGON3 is not set 432# CONFIG_TIGON3 is not set
433# CONFIG_BNX2 is not set
350 434
351# 435#
352# Ethernet (10000 Mbit) 436# Ethernet (10000 Mbit)
353# 437#
438# CONFIG_CHELSIO_T1 is not set
354# CONFIG_IXGB is not set 439# CONFIG_IXGB is not set
355# CONFIG_S2IO is not set 440# CONFIG_S2IO is not set
356 441
@@ -363,6 +448,8 @@ CONFIG_NET_ETHERNET=y
363# Wireless LAN (non-hamradio) 448# Wireless LAN (non-hamradio)
364# 449#
365# CONFIG_NET_RADIO is not set 450# CONFIG_NET_RADIO is not set
451# CONFIG_IPW_DEBUG is not set
452CONFIG_IPW2200=m
366 453
367# 454#
368# Wan interfaces 455# Wan interfaces
@@ -381,6 +468,8 @@ CONFIG_PPP_ASYNC=y
381# CONFIG_SLIP is not set 468# CONFIG_SLIP is not set
382# CONFIG_SHAPER is not set 469# CONFIG_SHAPER is not set
383# CONFIG_NETCONSOLE is not set 470# CONFIG_NETCONSOLE is not set
471# CONFIG_NETPOLL is not set
472# CONFIG_NET_POLL_CONTROLLER is not set
384 473
385# 474#
386# ISDN subsystem 475# ISDN subsystem
@@ -410,19 +499,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
410# CONFIG_INPUT_EVBUG is not set 499# CONFIG_INPUT_EVBUG is not set
411 500
412# 501#
413# Input I/O drivers
414#
415# CONFIG_GAMEPORT is not set
416CONFIG_SOUND_GAMEPORT=y
417CONFIG_SERIO=y
418# CONFIG_SERIO_I8042 is not set
419CONFIG_SERIO_SERPORT=y
420# CONFIG_SERIO_CT82C710 is not set
421# CONFIG_SERIO_PCIPS2 is not set
422# CONFIG_SERIO_LIBPS2 is not set
423CONFIG_SERIO_RAW=m
424
425#
426# Input Device Drivers 502# Input Device Drivers
427# 503#
428# CONFIG_INPUT_KEYBOARD is not set 504# CONFIG_INPUT_KEYBOARD is not set
@@ -432,6 +508,17 @@ CONFIG_SERIO_RAW=m
432# CONFIG_INPUT_MISC is not set 508# CONFIG_INPUT_MISC is not set
433 509
434# 510#
511# Hardware I/O ports
512#
513CONFIG_SERIO=y
514# CONFIG_SERIO_I8042 is not set
515CONFIG_SERIO_SERPORT=y
516# CONFIG_SERIO_PCIPS2 is not set
517# CONFIG_SERIO_LIBPS2 is not set
518CONFIG_SERIO_RAW=m
519# CONFIG_GAMEPORT is not set
520
521#
435# Character devices 522# Character devices
436# 523#
437CONFIG_VT=y 524CONFIG_VT=y
@@ -452,6 +539,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4
452# 539#
453CONFIG_SERIAL_CORE=y 540CONFIG_SERIAL_CORE=y
454CONFIG_SERIAL_CORE_CONSOLE=y 541CONFIG_SERIAL_CORE_CONSOLE=y
542# CONFIG_SERIAL_JSM is not set
455CONFIG_UNIX98_PTYS=y 543CONFIG_UNIX98_PTYS=y
456CONFIG_LEGACY_PTYS=y 544CONFIG_LEGACY_PTYS=y
457CONFIG_LEGACY_PTY_COUNT=256 545CONFIG_LEGACY_PTY_COUNT=256
@@ -478,6 +566,11 @@ CONFIG_LEGACY_PTY_COUNT=256
478# CONFIG_RAW_DRIVER is not set 566# CONFIG_RAW_DRIVER is not set
479 567
480# 568#
569# TPM devices
570#
571# CONFIG_TCG_TPM is not set
572
573#
481# I2C support 574# I2C support
482# 575#
483# CONFIG_I2C is not set 576# CONFIG_I2C is not set
@@ -488,10 +581,20 @@ CONFIG_LEGACY_PTY_COUNT=256
488# CONFIG_W1 is not set 581# CONFIG_W1 is not set
489 582
490# 583#
584# Hardware Monitoring support
585#
586# CONFIG_HWMON is not set
587# CONFIG_HWMON_VID is not set
588
589#
491# Misc devices 590# Misc devices
492# 591#
493 592
494# 593#
594# Multimedia Capabilities Port drivers
595#
596
597#
495# Multimedia devices 598# Multimedia devices
496# 599#
497# CONFIG_VIDEO_DEV is not set 600# CONFIG_VIDEO_DEV is not set
@@ -511,7 +614,6 @@ CONFIG_LEGACY_PTY_COUNT=256
511# 614#
512# CONFIG_VGA_CONSOLE is not set 615# CONFIG_VGA_CONSOLE is not set
513CONFIG_DUMMY_CONSOLE=y 616CONFIG_DUMMY_CONSOLE=y
514# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
515 617
516# 618#
517# Sound 619# Sound
@@ -521,13 +623,9 @@ CONFIG_DUMMY_CONSOLE=y
521# 623#
522# USB support 624# USB support
523# 625#
524# CONFIG_USB is not set
525CONFIG_USB_ARCH_HAS_HCD=y 626CONFIG_USB_ARCH_HAS_HCD=y
526CONFIG_USB_ARCH_HAS_OHCI=y 627CONFIG_USB_ARCH_HAS_OHCI=y
527 628# CONFIG_USB is not set
528#
529# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
530#
531 629
532# 630#
533# USB Gadget Support 631# USB Gadget Support
@@ -545,21 +643,29 @@ CONFIG_USB_ARCH_HAS_OHCI=y
545# CONFIG_INFINIBAND is not set 643# CONFIG_INFINIBAND is not set
546 644
547# 645#
646# SN Devices
647#
648
649#
548# File systems 650# File systems
549# 651#
550CONFIG_EXT2_FS=y 652CONFIG_EXT2_FS=y
551# CONFIG_EXT2_FS_XATTR is not set 653# CONFIG_EXT2_FS_XATTR is not set
654# CONFIG_EXT2_FS_XIP is not set
552# CONFIG_EXT3_FS is not set 655# CONFIG_EXT3_FS is not set
553# CONFIG_JBD is not set 656# CONFIG_JBD is not set
554# CONFIG_REISERFS_FS is not set 657# CONFIG_REISERFS_FS is not set
555# CONFIG_JFS_FS is not set 658# CONFIG_JFS_FS is not set
659# CONFIG_FS_POSIX_ACL is not set
556# CONFIG_XFS_FS is not set 660# CONFIG_XFS_FS is not set
557# CONFIG_MINIX_FS is not set 661# CONFIG_MINIX_FS is not set
558# CONFIG_ROMFS_FS is not set 662# CONFIG_ROMFS_FS is not set
663CONFIG_INOTIFY=y
559# CONFIG_QUOTA is not set 664# CONFIG_QUOTA is not set
560CONFIG_DNOTIFY=y 665CONFIG_DNOTIFY=y
561# CONFIG_AUTOFS_FS is not set 666# CONFIG_AUTOFS_FS is not set
562# CONFIG_AUTOFS4_FS is not set 667# CONFIG_AUTOFS4_FS is not set
668CONFIG_FUSE_FS=m
563 669
564# 670#
565# CD-ROM/DVD Filesystems 671# CD-ROM/DVD Filesystems
@@ -580,12 +686,10 @@ CONFIG_DNOTIFY=y
580CONFIG_PROC_FS=y 686CONFIG_PROC_FS=y
581CONFIG_PROC_KCORE=y 687CONFIG_PROC_KCORE=y
582CONFIG_SYSFS=y 688CONFIG_SYSFS=y
583# CONFIG_DEVFS_FS is not set
584CONFIG_DEVPTS_FS_XATTR=y
585CONFIG_DEVPTS_FS_SECURITY=y
586# CONFIG_TMPFS is not set 689# CONFIG_TMPFS is not set
587# CONFIG_HUGETLB_PAGE is not set 690# CONFIG_HUGETLB_PAGE is not set
588CONFIG_RAMFS=y 691CONFIG_RAMFS=y
692CONFIG_RELAYFS_FS=m
589 693
590# 694#
591# Miscellaneous filesystems 695# Miscellaneous filesystems
@@ -614,7 +718,7 @@ CONFIG_NFS_FS=y
614# CONFIG_NFSD is not set 718# CONFIG_NFSD is not set
615CONFIG_ROOT_NFS=y 719CONFIG_ROOT_NFS=y
616CONFIG_LOCKD=y 720CONFIG_LOCKD=y
617# CONFIG_EXPORTFS is not set 721CONFIG_NFS_COMMON=y
618CONFIG_SUNRPC=y 722CONFIG_SUNRPC=y
619# CONFIG_RPCSEC_GSS_KRB5 is not set 723# CONFIG_RPCSEC_GSS_KRB5 is not set
620# CONFIG_RPCSEC_GSS_SPKM3 is not set 724# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -623,6 +727,7 @@ CONFIG_SUNRPC=y
623# CONFIG_NCP_FS is not set 727# CONFIG_NCP_FS is not set
624# CONFIG_CODA_FS is not set 728# CONFIG_CODA_FS is not set
625# CONFIG_AFS_FS is not set 729# CONFIG_AFS_FS is not set
730# CONFIG_9P_FS is not set
626 731
627# 732#
628# Partition Types 733# Partition Types
@@ -643,7 +748,9 @@ CONFIG_MSDOS_PARTITION=y
643# 748#
644# Kernel hacking 749# Kernel hacking
645# 750#
751# CONFIG_PRINTK_TIME is not set
646# CONFIG_DEBUG_KERNEL is not set 752# CONFIG_DEBUG_KERNEL is not set
753CONFIG_LOG_BUF_SHIFT=14
647CONFIG_CROSSCOMPILE=y 754CONFIG_CROSSCOMPILE=y
648CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs rw nfsroot=192.168.1.1:/mnt/disk2/fs.gal ip=192.168.1.211:192.168.1.1:::gt::" 755CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs rw nfsroot=192.168.1.1:/mnt/disk2/fs.gal ip=192.168.1.211:192.168.1.1:::gt::"
649 756
@@ -657,7 +764,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
657# 764#
658# Cryptographic options 765# Cryptographic options
659# 766#
660# CONFIG_CRYPTO is not set 767CONFIG_CRYPTO=y
768CONFIG_CRYPTO_HMAC=y
769CONFIG_CRYPTO_NULL=m
770CONFIG_CRYPTO_MD4=m
771CONFIG_CRYPTO_MD5=m
772CONFIG_CRYPTO_SHA1=m
773CONFIG_CRYPTO_SHA256=m
774CONFIG_CRYPTO_SHA512=m
775CONFIG_CRYPTO_WP512=m
776CONFIG_CRYPTO_TGR192=m
777CONFIG_CRYPTO_DES=m
778CONFIG_CRYPTO_BLOWFISH=m
779CONFIG_CRYPTO_TWOFISH=m
780CONFIG_CRYPTO_SERPENT=m
781CONFIG_CRYPTO_AES=m
782CONFIG_CRYPTO_CAST5=m
783CONFIG_CRYPTO_CAST6=m
784CONFIG_CRYPTO_TEA=m
785CONFIG_CRYPTO_ARC4=m
786CONFIG_CRYPTO_KHAZAD=m
787CONFIG_CRYPTO_ANUBIS=m
788CONFIG_CRYPTO_DEFLATE=m
789CONFIG_CRYPTO_MICHAEL_MIC=m
790CONFIG_CRYPTO_CRC32C=m
791# CONFIG_CRYPTO_TEST is not set
661 792
662# 793#
663# Hardware crypto devices 794# Hardware crypto devices
@@ -667,7 +798,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
667# Library routines 798# Library routines
668# 799#
669CONFIG_CRC_CCITT=y 800CONFIG_CRC_CCITT=y
670# CONFIG_CRC32 is not set 801CONFIG_CRC16=m
802CONFIG_CRC32=m
671CONFIG_LIBCRC32C=m 803CONFIG_LIBCRC32C=m
672CONFIG_GENERIC_HARDIRQS=y 804CONFIG_ZLIB_INFLATE=m
673CONFIG_GENERIC_IRQ_PROBE=y 805CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/mips/configs/ev96100_defconfig b/arch/mips/configs/ev96100_defconfig
index 9da4140eae00..8ac55b7acc01 100644
--- a/arch/mips/configs/ev96100_defconfig
+++ b/arch/mips/configs/ev96100_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:03 2005 4# Thu Oct 20 22:25:57 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14
29# CONFIG_HOTPLUG is not set 27# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,40 +59,68 @@ CONFIG_MODULE_SRCVERSION_ALL=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60# CONFIG_MACH_VR41XX is not set 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_TOSHIBA_JMR3927 is not set 64# CONFIG_MIPS_PB1000 is not set
65# CONFIG_MIPS_PB1100 is not set
66# CONFIG_MIPS_PB1500 is not set
67# CONFIG_MIPS_PB1550 is not set
68# CONFIG_MIPS_PB1200 is not set
69# CONFIG_MIPS_DB1000 is not set
70# CONFIG_MIPS_DB1100 is not set
71# CONFIG_MIPS_DB1500 is not set
72# CONFIG_MIPS_DB1550 is not set
73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
62# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
63# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
64# CONFIG_MIPS_EV64120 is not set 77# CONFIG_MIPS_EV64120 is not set
65CONFIG_MIPS_EV96100=y 78CONFIG_MIPS_EV96100=y
66# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
67# CONFIG_LASAT is not set
68# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
69# CONFIG_MIPS_ATLAS is not set 83# CONFIG_MIPS_ATLAS is not set
70# CONFIG_MIPS_MALTA is not set 84# CONFIG_MIPS_MALTA is not set
71# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
72# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
73# CONFIG_MOMENCO_OCELOT_G is not set
74# CONFIG_MOMENCO_OCELOT_C is not set
75# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
76# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
77# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
78# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
79# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
80# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
81# CONFIG_NEC_OSPREY is not set 98# CONFIG_MACH_VR41XX is not set
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
82# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
83# CONFIG_SOC_AU1X00 is not set 102# CONFIG_SGI_IP27 is not set
84# CONFIG_SIBYTE_SB1xxx_SOC is not set 103# CONFIG_SGI_IP32 is not set
104# CONFIG_SIBYTE_BIGSUR is not set
105# CONFIG_SIBYTE_SWARM is not set
106# CONFIG_SIBYTE_SENTOSA is not set
107# CONFIG_SIBYTE_RHONE is not set
108# CONFIG_SIBYTE_CARMEL is not set
109# CONFIG_SIBYTE_PTSWARM is not set
110# CONFIG_SIBYTE_LITTLESUR is not set
111# CONFIG_SIBYTE_CRHINE is not set
112# CONFIG_SIBYTE_CRHONE is not set
85# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
86# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
87CONFIG_RWSEM_GENERIC_SPINLOCK=y 117CONFIG_RWSEM_GENERIC_SPINLOCK=y
88CONFIG_GENERIC_CALIBRATE_DELAY=y 118CONFIG_GENERIC_CALIBRATE_DELAY=y
89CONFIG_HAVE_DEC_LOCK=y
90CONFIG_DMA_NONCOHERENT=y 119CONFIG_DMA_NONCOHERENT=y
91CONFIG_DMA_NEED_PCI_MAP_STATE=y 120CONFIG_DMA_NEED_PCI_MAP_STATE=y
121CONFIG_CPU_BIG_ENDIAN=y
92# CONFIG_CPU_LITTLE_ENDIAN is not set 122# CONFIG_CPU_LITTLE_ENDIAN is not set
123CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
93CONFIG_IRQ_CPU=y 124CONFIG_IRQ_CPU=y
94CONFIG_MIPS_GT64120=y 125CONFIG_MIPS_GT64120=y
95CONFIG_SWAP_IO_SPACE=y 126CONFIG_SWAP_IO_SPACE=y
@@ -99,8 +130,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
99# 130#
100# CPU selection 131# CPU selection
101# 132#
102# CONFIG_CPU_MIPS32 is not set 133# CONFIG_CPU_MIPS32_R1 is not set
103# CONFIG_CPU_MIPS64 is not set 134# CONFIG_CPU_MIPS32_R2 is not set
135# CONFIG_CPU_MIPS64_R1 is not set
136# CONFIG_CPU_MIPS64_R2 is not set
104# CONFIG_CPU_R3000 is not set 137# CONFIG_CPU_R3000 is not set
105# CONFIG_CPU_TX39XX is not set 138# CONFIG_CPU_TX39XX is not set
106# CONFIG_CPU_VR41XX is not set 139# CONFIG_CPU_VR41XX is not set
@@ -116,6 +149,18 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
116CONFIG_CPU_RM7000=y 149CONFIG_CPU_RM7000=y
117# CONFIG_CPU_RM9000 is not set 150# CONFIG_CPU_RM9000 is not set
118# CONFIG_CPU_SB1 is not set 151# CONFIG_CPU_SB1 is not set
152CONFIG_SYS_HAS_CPU_R5000=y
153CONFIG_SYS_HAS_CPU_RM7000=y
154CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
155CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
156CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
157CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
158
159#
160# Kernel type
161#
162CONFIG_32BIT=y
163# CONFIG_64BIT is not set
119CONFIG_PAGE_SIZE_4KB=y 164CONFIG_PAGE_SIZE_4KB=y
120# CONFIG_PAGE_SIZE_8KB is not set 165# CONFIG_PAGE_SIZE_8KB is not set
121# CONFIG_PAGE_SIZE_16KB is not set 166# CONFIG_PAGE_SIZE_16KB is not set
@@ -123,11 +168,25 @@ CONFIG_PAGE_SIZE_4KB=y
123CONFIG_BOARD_SCACHE=y 168CONFIG_BOARD_SCACHE=y
124CONFIG_RM7000_CPU_SCACHE=y 169CONFIG_RM7000_CPU_SCACHE=y
125CONFIG_CPU_HAS_PREFETCH=y 170CONFIG_CPU_HAS_PREFETCH=y
171# CONFIG_MIPS_MT is not set
126# CONFIG_64BIT_PHYS_ADDR is not set 172# CONFIG_64BIT_PHYS_ADDR is not set
127# CONFIG_CPU_ADVANCED is not set 173# CONFIG_CPU_ADVANCED is not set
128CONFIG_CPU_HAS_LLSC=y 174CONFIG_CPU_HAS_LLSC=y
129CONFIG_CPU_HAS_LLDSCD=y 175CONFIG_CPU_HAS_LLDSCD=y
130CONFIG_CPU_HAS_SYNC=y 176CONFIG_CPU_HAS_SYNC=y
177CONFIG_GENERIC_HARDIRQS=y
178CONFIG_GENERIC_IRQ_PROBE=y
179CONFIG_CPU_SUPPORTS_HIGHMEM=y
180CONFIG_ARCH_FLATMEM_ENABLE=y
181CONFIG_SELECT_MEMORY_MODEL=y
182CONFIG_FLATMEM_MANUAL=y
183# CONFIG_DISCONTIGMEM_MANUAL is not set
184# CONFIG_SPARSEMEM_MANUAL is not set
185CONFIG_FLATMEM=y
186CONFIG_FLAT_NODE_MEM_MAP=y
187# CONFIG_SPARSEMEM_STATIC is not set
188CONFIG_PREEMPT_NONE=y
189# CONFIG_PREEMPT_VOLUNTARY is not set
131# CONFIG_PREEMPT is not set 190# CONFIG_PREEMPT is not set
132 191
133# 192#
@@ -143,10 +202,6 @@ CONFIG_MMU=y
143# CONFIG_PCCARD is not set 202# CONFIG_PCCARD is not set
144 203
145# 204#
146# PC-card bridges
147#
148
149#
150# PCI Hotplug Support 205# PCI Hotplug Support
151# 206#
152 207
@@ -158,6 +213,79 @@ CONFIG_BINFMT_ELF=y
158CONFIG_TRAD_SIGNALS=y 213CONFIG_TRAD_SIGNALS=y
159 214
160# 215#
216# Networking
217#
218CONFIG_NET=y
219
220#
221# Networking options
222#
223# CONFIG_PACKET is not set
224CONFIG_UNIX=y
225CONFIG_XFRM=y
226CONFIG_XFRM_USER=m
227CONFIG_NET_KEY=y
228CONFIG_INET=y
229# CONFIG_IP_MULTICAST is not set
230# CONFIG_IP_ADVANCED_ROUTER is not set
231CONFIG_IP_FIB_HASH=y
232CONFIG_IP_PNP=y
233# CONFIG_IP_PNP_DHCP is not set
234CONFIG_IP_PNP_BOOTP=y
235# CONFIG_IP_PNP_RARP is not set
236# CONFIG_NET_IPIP is not set
237# CONFIG_NET_IPGRE is not set
238# CONFIG_ARPD is not set
239# CONFIG_SYN_COOKIES is not set
240# CONFIG_INET_AH is not set
241# CONFIG_INET_ESP is not set
242# CONFIG_INET_IPCOMP is not set
243CONFIG_INET_TUNNEL=m
244CONFIG_INET_DIAG=y
245CONFIG_INET_TCP_DIAG=y
246# CONFIG_TCP_CONG_ADVANCED is not set
247CONFIG_TCP_CONG_BIC=y
248# CONFIG_IPV6 is not set
249# CONFIG_NETFILTER is not set
250
251#
252# DCCP Configuration (EXPERIMENTAL)
253#
254# CONFIG_IP_DCCP is not set
255
256#
257# SCTP Configuration (EXPERIMENTAL)
258#
259# CONFIG_IP_SCTP is not set
260# CONFIG_ATM is not set
261# CONFIG_BRIDGE is not set
262# CONFIG_VLAN_8021Q is not set
263# CONFIG_DECNET is not set
264# CONFIG_LLC2 is not set
265# CONFIG_IPX is not set
266# CONFIG_ATALK is not set
267# CONFIG_X25 is not set
268# CONFIG_LAPB is not set
269# CONFIG_NET_DIVERT is not set
270# CONFIG_ECONET is not set
271# CONFIG_WAN_ROUTER is not set
272# CONFIG_NET_SCHED is not set
273# CONFIG_NET_CLS_ROUTE is not set
274
275#
276# Network testing
277#
278# CONFIG_NET_PKTGEN is not set
279# CONFIG_HAMRADIO is not set
280# CONFIG_IRDA is not set
281# CONFIG_BT is not set
282CONFIG_IEEE80211=m
283# CONFIG_IEEE80211_DEBUG is not set
284CONFIG_IEEE80211_CRYPT_WEP=m
285CONFIG_IEEE80211_CRYPT_CCMP=m
286CONFIG_IEEE80211_CRYPT_TKIP=m
287
288#
161# Device Drivers 289# Device Drivers
162# 290#
163 291
@@ -169,6 +297,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
169# CONFIG_FW_LOADER is not set 297# CONFIG_FW_LOADER is not set
170 298
171# 299#
300# Connector - unified userspace <-> kernelspace linker
301#
302CONFIG_CONNECTOR=m
303
304#
172# Memory Technology Devices (MTD) 305# Memory Technology Devices (MTD)
173# 306#
174# CONFIG_MTD is not set 307# CONFIG_MTD is not set
@@ -185,13 +318,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
185# 318#
186# Block devices 319# Block devices
187# 320#
188# CONFIG_BLK_DEV_FD is not set
189# CONFIG_BLK_DEV_COW_COMMON is not set 321# CONFIG_BLK_DEV_COW_COMMON is not set
190# CONFIG_BLK_DEV_LOOP is not set 322# CONFIG_BLK_DEV_LOOP is not set
191# CONFIG_BLK_DEV_NBD is not set 323# CONFIG_BLK_DEV_NBD is not set
192# CONFIG_BLK_DEV_RAM is not set 324# CONFIG_BLK_DEV_RAM is not set
193CONFIG_BLK_DEV_RAM_COUNT=16 325CONFIG_BLK_DEV_RAM_COUNT=16
194CONFIG_INITRAMFS_SOURCE=""
195# CONFIG_LBD is not set 326# CONFIG_LBD is not set
196CONFIG_CDROM_PKTCDVD=m 327CONFIG_CDROM_PKTCDVD=m
197CONFIG_CDROM_PKTCDVD_BUFFERS=8 328CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -214,6 +345,7 @@ CONFIG_ATA_OVER_ETH=m
214# 345#
215# SCSI device support 346# SCSI device support
216# 347#
348CONFIG_RAID_ATTRS=m
217# CONFIG_SCSI is not set 349# CONFIG_SCSI is not set
218 350
219# 351#
@@ -224,6 +356,7 @@ CONFIG_ATA_OVER_ETH=m
224# 356#
225# Fusion MPT device support 357# Fusion MPT device support
226# 358#
359# CONFIG_FUSION is not set
227 360
228# 361#
229# IEEE 1394 (FireWire) support 362# IEEE 1394 (FireWire) support
@@ -234,77 +367,28 @@ CONFIG_ATA_OVER_ETH=m
234# 367#
235 368
236# 369#
237# Networking support 370# Network device support
238#
239CONFIG_NET=y
240
241#
242# Networking options
243# 371#
244# CONFIG_PACKET is not set 372CONFIG_NETDEVICES=y
245CONFIG_NETLINK_DEV=y 373# CONFIG_DUMMY is not set
246CONFIG_UNIX=y 374# CONFIG_BONDING is not set
247CONFIG_NET_KEY=y 375# CONFIG_EQUALIZER is not set
248CONFIG_INET=y 376# CONFIG_TUN is not set
249# CONFIG_IP_MULTICAST is not set
250# CONFIG_IP_ADVANCED_ROUTER is not set
251CONFIG_IP_PNP=y
252# CONFIG_IP_PNP_DHCP is not set
253CONFIG_IP_PNP_BOOTP=y
254# CONFIG_IP_PNP_RARP is not set
255# CONFIG_NET_IPIP is not set
256# CONFIG_NET_IPGRE is not set
257# CONFIG_ARPD is not set
258# CONFIG_SYN_COOKIES is not set
259# CONFIG_INET_AH is not set
260# CONFIG_INET_ESP is not set
261# CONFIG_INET_IPCOMP is not set
262CONFIG_INET_TUNNEL=m
263CONFIG_IP_TCPDIAG=m
264# CONFIG_IP_TCPDIAG_IPV6 is not set
265# CONFIG_IPV6 is not set
266# CONFIG_NETFILTER is not set
267CONFIG_XFRM=y
268CONFIG_XFRM_USER=m
269
270#
271# SCTP Configuration (EXPERIMENTAL)
272#
273# CONFIG_IP_SCTP is not set
274# CONFIG_ATM is not set
275# CONFIG_BRIDGE is not set
276# CONFIG_VLAN_8021Q is not set
277# CONFIG_DECNET is not set
278# CONFIG_LLC2 is not set
279# CONFIG_IPX is not set
280# CONFIG_ATALK is not set
281# CONFIG_X25 is not set
282# CONFIG_LAPB is not set
283# CONFIG_NET_DIVERT is not set
284# CONFIG_ECONET is not set
285# CONFIG_WAN_ROUTER is not set
286 377
287# 378#
288# QoS and/or fair queueing 379# PHY device support
289# 380#
290# CONFIG_NET_SCHED is not set 381CONFIG_PHYLIB=m
291# CONFIG_NET_CLS_ROUTE is not set 382CONFIG_PHYCONTROL=y
292 383
293# 384#
294# Network testing 385# MII PHY device drivers
295# 386#
296# CONFIG_NET_PKTGEN is not set 387CONFIG_MARVELL_PHY=m
297# CONFIG_NETPOLL is not set 388CONFIG_DAVICOM_PHY=m
298# CONFIG_NET_POLL_CONTROLLER is not set 389CONFIG_QSEMI_PHY=m
299# CONFIG_HAMRADIO is not set 390CONFIG_LXT_PHY=m
300# CONFIG_IRDA is not set 391CONFIG_CICADA_PHY=m
301# CONFIG_BT is not set
302CONFIG_NETDEVICES=y
303# CONFIG_DUMMY is not set
304# CONFIG_BONDING is not set
305# CONFIG_EQUALIZER is not set
306# CONFIG_TUN is not set
307# CONFIG_ETHERTAP is not set
308 392
309# 393#
310# Ethernet (10 or 100Mbit) 394# Ethernet (10 or 100Mbit)
@@ -338,6 +422,8 @@ CONFIG_MIPS_GT96100ETH=y
338# CONFIG_SLIP is not set 422# CONFIG_SLIP is not set
339# CONFIG_SHAPER is not set 423# CONFIG_SHAPER is not set
340# CONFIG_NETCONSOLE is not set 424# CONFIG_NETCONSOLE is not set
425# CONFIG_NETPOLL is not set
426# CONFIG_NET_POLL_CONTROLLER is not set
341 427
342# 428#
343# ISDN subsystem 429# ISDN subsystem
@@ -367,18 +453,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
367# CONFIG_INPUT_EVBUG is not set 453# CONFIG_INPUT_EVBUG is not set
368 454
369# 455#
370# Input I/O drivers
371#
372# CONFIG_GAMEPORT is not set
373CONFIG_SOUND_GAMEPORT=y
374CONFIG_SERIO=y
375# CONFIG_SERIO_I8042 is not set
376CONFIG_SERIO_SERPORT=y
377# CONFIG_SERIO_CT82C710 is not set
378# CONFIG_SERIO_LIBPS2 is not set
379CONFIG_SERIO_RAW=m
380
381#
382# Input Device Drivers 456# Input Device Drivers
383# 457#
384# CONFIG_INPUT_KEYBOARD is not set 458# CONFIG_INPUT_KEYBOARD is not set
@@ -388,6 +462,16 @@ CONFIG_SERIO_RAW=m
388# CONFIG_INPUT_MISC is not set 462# CONFIG_INPUT_MISC is not set
389 463
390# 464#
465# Hardware I/O ports
466#
467CONFIG_SERIO=y
468# CONFIG_SERIO_I8042 is not set
469CONFIG_SERIO_SERPORT=y
470# CONFIG_SERIO_LIBPS2 is not set
471CONFIG_SERIO_RAW=m
472# CONFIG_GAMEPORT is not set
473
474#
391# Character devices 475# Character devices
392# 476#
393CONFIG_VT=y 477CONFIG_VT=y
@@ -429,10 +513,13 @@ CONFIG_LEGACY_PTY_COUNT=256
429# 513#
430# Ftape, the floppy tape device driver 514# Ftape, the floppy tape device driver
431# 515#
432# CONFIG_DRM is not set
433# CONFIG_RAW_DRIVER is not set 516# CONFIG_RAW_DRIVER is not set
434 517
435# 518#
519# TPM devices
520#
521
522#
436# I2C support 523# I2C support
437# 524#
438# CONFIG_I2C is not set 525# CONFIG_I2C is not set
@@ -443,10 +530,20 @@ CONFIG_LEGACY_PTY_COUNT=256
443# CONFIG_W1 is not set 530# CONFIG_W1 is not set
444 531
445# 532#
533# Hardware Monitoring support
534#
535# CONFIG_HWMON is not set
536# CONFIG_HWMON_VID is not set
537
538#
446# Misc devices 539# Misc devices
447# 540#
448 541
449# 542#
543# Multimedia Capabilities Port drivers
544#
545
546#
450# Multimedia devices 547# Multimedia devices
451# 548#
452# CONFIG_VIDEO_DEV is not set 549# CONFIG_VIDEO_DEV is not set
@@ -466,7 +563,6 @@ CONFIG_LEGACY_PTY_COUNT=256
466# 563#
467# CONFIG_VGA_CONSOLE is not set 564# CONFIG_VGA_CONSOLE is not set
468CONFIG_DUMMY_CONSOLE=y 565CONFIG_DUMMY_CONSOLE=y
469# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
470 566
471# 567#
472# Sound 568# Sound
@@ -480,10 +576,6 @@ CONFIG_DUMMY_CONSOLE=y
480# CONFIG_USB_ARCH_HAS_OHCI is not set 576# CONFIG_USB_ARCH_HAS_OHCI is not set
481 577
482# 578#
483# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
484#
485
486#
487# USB Gadget Support 579# USB Gadget Support
488# 580#
489# CONFIG_USB_GADGET is not set 581# CONFIG_USB_GADGET is not set
@@ -496,24 +588,31 @@ CONFIG_DUMMY_CONSOLE=y
496# 588#
497# InfiniBand support 589# InfiniBand support
498# 590#
499# CONFIG_INFINIBAND is not set 591
592#
593# SN Devices
594#
500 595
501# 596#
502# File systems 597# File systems
503# 598#
504CONFIG_EXT2_FS=y 599CONFIG_EXT2_FS=y
505# CONFIG_EXT2_FS_XATTR is not set 600# CONFIG_EXT2_FS_XATTR is not set
601# CONFIG_EXT2_FS_XIP is not set
506# CONFIG_EXT3_FS is not set 602# CONFIG_EXT3_FS is not set
507# CONFIG_JBD is not set 603# CONFIG_JBD is not set
508# CONFIG_REISERFS_FS is not set 604# CONFIG_REISERFS_FS is not set
509# CONFIG_JFS_FS is not set 605# CONFIG_JFS_FS is not set
606# CONFIG_FS_POSIX_ACL is not set
510# CONFIG_XFS_FS is not set 607# CONFIG_XFS_FS is not set
511# CONFIG_MINIX_FS is not set 608# CONFIG_MINIX_FS is not set
512# CONFIG_ROMFS_FS is not set 609# CONFIG_ROMFS_FS is not set
610CONFIG_INOTIFY=y
513# CONFIG_QUOTA is not set 611# CONFIG_QUOTA is not set
514CONFIG_DNOTIFY=y 612CONFIG_DNOTIFY=y
515# CONFIG_AUTOFS_FS is not set 613# CONFIG_AUTOFS_FS is not set
516# CONFIG_AUTOFS4_FS is not set 614# CONFIG_AUTOFS4_FS is not set
615CONFIG_FUSE_FS=m
517 616
518# 617#
519# CD-ROM/DVD Filesystems 618# CD-ROM/DVD Filesystems
@@ -534,12 +633,10 @@ CONFIG_DNOTIFY=y
534CONFIG_PROC_FS=y 633CONFIG_PROC_FS=y
535CONFIG_PROC_KCORE=y 634CONFIG_PROC_KCORE=y
536CONFIG_SYSFS=y 635CONFIG_SYSFS=y
537# CONFIG_DEVFS_FS is not set
538CONFIG_DEVPTS_FS_XATTR=y
539CONFIG_DEVPTS_FS_SECURITY=y
540# CONFIG_TMPFS is not set 636# CONFIG_TMPFS is not set
541# CONFIG_HUGETLB_PAGE is not set 637# CONFIG_HUGETLB_PAGE is not set
542CONFIG_RAMFS=y 638CONFIG_RAMFS=y
639CONFIG_RELAYFS_FS=m
543 640
544# 641#
545# Miscellaneous filesystems 642# Miscellaneous filesystems
@@ -568,7 +665,7 @@ CONFIG_NFS_FS=y
568# CONFIG_NFSD is not set 665# CONFIG_NFSD is not set
569CONFIG_ROOT_NFS=y 666CONFIG_ROOT_NFS=y
570CONFIG_LOCKD=y 667CONFIG_LOCKD=y
571# CONFIG_EXPORTFS is not set 668CONFIG_NFS_COMMON=y
572CONFIG_SUNRPC=y 669CONFIG_SUNRPC=y
573# CONFIG_RPCSEC_GSS_KRB5 is not set 670# CONFIG_RPCSEC_GSS_KRB5 is not set
574# CONFIG_RPCSEC_GSS_SPKM3 is not set 671# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -577,6 +674,7 @@ CONFIG_SUNRPC=y
577# CONFIG_NCP_FS is not set 674# CONFIG_NCP_FS is not set
578# CONFIG_CODA_FS is not set 675# CONFIG_CODA_FS is not set
579# CONFIG_AFS_FS is not set 676# CONFIG_AFS_FS is not set
677# CONFIG_9P_FS is not set
580 678
581# 679#
582# Partition Types 680# Partition Types
@@ -597,7 +695,9 @@ CONFIG_MSDOS_PARTITION=y
597# 695#
598# Kernel hacking 696# Kernel hacking
599# 697#
698# CONFIG_PRINTK_TIME is not set
600# CONFIG_DEBUG_KERNEL is not set 699# CONFIG_DEBUG_KERNEL is not set
700CONFIG_LOG_BUF_SHIFT=14
601CONFIG_CROSSCOMPILE=y 701CONFIG_CROSSCOMPILE=y
602CONFIG_CMDLINE="" 702CONFIG_CMDLINE=""
603 703
@@ -611,7 +711,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
611# 711#
612# Cryptographic options 712# Cryptographic options
613# 713#
614# CONFIG_CRYPTO is not set 714CONFIG_CRYPTO=y
715CONFIG_CRYPTO_HMAC=y
716CONFIG_CRYPTO_NULL=m
717CONFIG_CRYPTO_MD4=m
718CONFIG_CRYPTO_MD5=m
719CONFIG_CRYPTO_SHA1=m
720CONFIG_CRYPTO_SHA256=m
721CONFIG_CRYPTO_SHA512=m
722CONFIG_CRYPTO_WP512=m
723CONFIG_CRYPTO_TGR192=m
724CONFIG_CRYPTO_DES=m
725CONFIG_CRYPTO_BLOWFISH=m
726CONFIG_CRYPTO_TWOFISH=m
727CONFIG_CRYPTO_SERPENT=m
728CONFIG_CRYPTO_AES=m
729CONFIG_CRYPTO_CAST5=m
730CONFIG_CRYPTO_CAST6=m
731CONFIG_CRYPTO_TEA=m
732CONFIG_CRYPTO_ARC4=m
733CONFIG_CRYPTO_KHAZAD=m
734CONFIG_CRYPTO_ANUBIS=m
735CONFIG_CRYPTO_DEFLATE=m
736CONFIG_CRYPTO_MICHAEL_MIC=m
737CONFIG_CRYPTO_CRC32C=m
738# CONFIG_CRYPTO_TEST is not set
615 739
616# 740#
617# Hardware crypto devices 741# Hardware crypto devices
@@ -621,7 +745,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
621# Library routines 745# Library routines
622# 746#
623# CONFIG_CRC_CCITT is not set 747# CONFIG_CRC_CCITT is not set
624# CONFIG_CRC32 is not set 748CONFIG_CRC16=m
749CONFIG_CRC32=m
625CONFIG_LIBCRC32C=m 750CONFIG_LIBCRC32C=m
626CONFIG_GENERIC_HARDIRQS=y 751CONFIG_ZLIB_INFLATE=m
627CONFIG_GENERIC_IRQ_PROBE=y 752CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/mips/configs/ip22_defconfig b/arch/mips/configs/ip22_defconfig
index 17fa5c4e3ad1..3ae3838f283c 100644
--- a/arch/mips/configs/ip22_defconfig
+++ b/arch/mips/configs/ip22_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:04 2005 4# Thu Oct 20 22:26:01 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,25 +11,30 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14
29# CONFIG_HOTPLUG is not set 27# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31CONFIG_IKCONFIG=y 29CONFIG_IKCONFIG=y
32CONFIG_IKCONFIG_PROC=y 30CONFIG_IKCONFIG_PROC=y
31CONFIG_INITRAMFS_SOURCE=""
33CONFIG_EMBEDDED=y 32CONFIG_EMBEDDED=y
34CONFIG_KALLSYMS=y 33CONFIG_KALLSYMS=y
35# CONFIG_KALLSYMS_EXTRA_PASS is not set 34# CONFIG_KALLSYMS_EXTRA_PASS is not set
35CONFIG_PRINTK=y
36CONFIG_BUG=y
37CONFIG_BASE_FULL=y
36CONFIG_FUTEX=y 38CONFIG_FUTEX=y
37CONFIG_EPOLL=y 39CONFIG_EPOLL=y
38# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 40# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -42,6 +44,7 @@ CONFIG_CC_ALIGN_LABELS=0
42CONFIG_CC_ALIGN_LOOPS=0 44CONFIG_CC_ALIGN_LOOPS=0
43CONFIG_CC_ALIGN_JUMPS=0 45CONFIG_CC_ALIGN_JUMPS=0
44# CONFIG_TINY_SHMEM is not set 46# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0
45 48
46# 49#
47# Loadable module support 50# Loadable module support
@@ -57,41 +60,69 @@ CONFIG_KMOD=y
57# 60#
58# Machine selection 61# Machine selection
59# 62#
60# CONFIG_MACH_JAZZ is not set 63# CONFIG_MIPS_MTX1 is not set
61# CONFIG_MACH_VR41XX is not set 64# CONFIG_MIPS_BOSPORUS is not set
62# CONFIG_TOSHIBA_JMR3927 is not set 65# CONFIG_MIPS_PB1000 is not set
66# CONFIG_MIPS_PB1100 is not set
67# CONFIG_MIPS_PB1500 is not set
68# CONFIG_MIPS_PB1550 is not set
69# CONFIG_MIPS_PB1200 is not set
70# CONFIG_MIPS_DB1000 is not set
71# CONFIG_MIPS_DB1100 is not set
72# CONFIG_MIPS_DB1500 is not set
73# CONFIG_MIPS_DB1550 is not set
74# CONFIG_MIPS_DB1200 is not set
75# CONFIG_MIPS_MIRAGE is not set
63# CONFIG_MIPS_COBALT is not set 76# CONFIG_MIPS_COBALT is not set
64# CONFIG_MACH_DECSTATION is not set 77# CONFIG_MACH_DECSTATION is not set
65# CONFIG_MIPS_EV64120 is not set 78# CONFIG_MIPS_EV64120 is not set
66# CONFIG_MIPS_EV96100 is not set 79# CONFIG_MIPS_EV96100 is not set
67# CONFIG_MIPS_IVR is not set 80# CONFIG_MIPS_IVR is not set
68# CONFIG_LASAT is not set
69# CONFIG_MIPS_ITE8172 is not set 81# CONFIG_MIPS_ITE8172 is not set
82# CONFIG_MACH_JAZZ is not set
83# CONFIG_LASAT is not set
70# CONFIG_MIPS_ATLAS is not set 84# CONFIG_MIPS_ATLAS is not set
71# CONFIG_MIPS_MALTA is not set 85# CONFIG_MIPS_MALTA is not set
72# CONFIG_MIPS_SEAD is not set 86# CONFIG_MIPS_SEAD is not set
87# CONFIG_MIPS_SIM is not set
88# CONFIG_MOMENCO_JAGUAR_ATX is not set
73# CONFIG_MOMENCO_OCELOT is not set 89# CONFIG_MOMENCO_OCELOT is not set
74# CONFIG_MOMENCO_OCELOT_G is not set
75# CONFIG_MOMENCO_OCELOT_C is not set
76# CONFIG_MOMENCO_OCELOT_3 is not set 90# CONFIG_MOMENCO_OCELOT_3 is not set
77# CONFIG_MOMENCO_JAGUAR_ATX is not set 91# CONFIG_MOMENCO_OCELOT_C is not set
78# CONFIG_PMC_YOSEMITE is not set 92# CONFIG_MOMENCO_OCELOT_G is not set
93# CONFIG_MIPS_XXS1500 is not set
94# CONFIG_PNX8550_V2PCI is not set
95# CONFIG_PNX8550_JBS is not set
79# CONFIG_DDB5074 is not set 96# CONFIG_DDB5074 is not set
80# CONFIG_DDB5476 is not set 97# CONFIG_DDB5476 is not set
81# CONFIG_DDB5477 is not set 98# CONFIG_DDB5477 is not set
82# CONFIG_NEC_OSPREY is not set 99# CONFIG_MACH_VR41XX is not set
100# CONFIG_PMC_YOSEMITE is not set
101# CONFIG_QEMU is not set
83CONFIG_SGI_IP22=y 102CONFIG_SGI_IP22=y
84# CONFIG_SOC_AU1X00 is not set 103# CONFIG_SGI_IP27 is not set
85# CONFIG_SIBYTE_SB1xxx_SOC is not set 104# CONFIG_SGI_IP32 is not set
105# CONFIG_SIBYTE_BIGSUR is not set
106# CONFIG_SIBYTE_SWARM is not set
107# CONFIG_SIBYTE_SENTOSA is not set
108# CONFIG_SIBYTE_RHONE is not set
109# CONFIG_SIBYTE_CARMEL is not set
110# CONFIG_SIBYTE_PTSWARM is not set
111# CONFIG_SIBYTE_LITTLESUR is not set
112# CONFIG_SIBYTE_CRHINE is not set
113# CONFIG_SIBYTE_CRHONE is not set
86# CONFIG_SNI_RM200_PCI is not set 114# CONFIG_SNI_RM200_PCI is not set
115# CONFIG_TOSHIBA_JMR3927 is not set
87# CONFIG_TOSHIBA_RBTX4927 is not set 116# CONFIG_TOSHIBA_RBTX4927 is not set
117# CONFIG_TOSHIBA_RBTX4938 is not set
88CONFIG_RWSEM_GENERIC_SPINLOCK=y 118CONFIG_RWSEM_GENERIC_SPINLOCK=y
89CONFIG_GENERIC_CALIBRATE_DELAY=y 119CONFIG_GENERIC_CALIBRATE_DELAY=y
90CONFIG_HAVE_DEC_LOCK=y
91CONFIG_ARC=y 120CONFIG_ARC=y
92CONFIG_DMA_NONCOHERENT=y 121CONFIG_DMA_NONCOHERENT=y
93CONFIG_DMA_NEED_PCI_MAP_STATE=y 122CONFIG_DMA_NEED_PCI_MAP_STATE=y
123CONFIG_CPU_BIG_ENDIAN=y
94# CONFIG_CPU_LITTLE_ENDIAN is not set 124# CONFIG_CPU_LITTLE_ENDIAN is not set
125CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
95CONFIG_IRQ_CPU=y 126CONFIG_IRQ_CPU=y
96CONFIG_SWAP_IO_SPACE=y 127CONFIG_SWAP_IO_SPACE=y
97CONFIG_ARC32=y 128CONFIG_ARC32=y
@@ -103,8 +134,10 @@ CONFIG_ARC_PROMLIB=y
103# 134#
104# CPU selection 135# CPU selection
105# 136#
106# CONFIG_CPU_MIPS32 is not set 137# CONFIG_CPU_MIPS32_R1 is not set
107# CONFIG_CPU_MIPS64 is not set 138# CONFIG_CPU_MIPS32_R2 is not set
139# CONFIG_CPU_MIPS64_R1 is not set
140# CONFIG_CPU_MIPS64_R2 is not set
108# CONFIG_CPU_R3000 is not set 141# CONFIG_CPU_R3000 is not set
109# CONFIG_CPU_TX39XX is not set 142# CONFIG_CPU_TX39XX is not set
110# CONFIG_CPU_VR41XX is not set 143# CONFIG_CPU_VR41XX is not set
@@ -120,22 +153,48 @@ CONFIG_CPU_R5000=y
120# CONFIG_CPU_RM7000 is not set 153# CONFIG_CPU_RM7000 is not set
121# CONFIG_CPU_RM9000 is not set 154# CONFIG_CPU_RM9000 is not set
122# CONFIG_CPU_SB1 is not set 155# CONFIG_CPU_SB1 is not set
156CONFIG_SYS_HAS_CPU_R4X00=y
157CONFIG_SYS_HAS_CPU_R5000=y
158CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
159CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
160CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
161CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
162
163#
164# Kernel type
165#
166CONFIG_32BIT=y
167# CONFIG_64BIT is not set
123CONFIG_PAGE_SIZE_4KB=y 168CONFIG_PAGE_SIZE_4KB=y
124# CONFIG_PAGE_SIZE_8KB is not set 169# CONFIG_PAGE_SIZE_8KB is not set
125# CONFIG_PAGE_SIZE_16KB is not set 170# CONFIG_PAGE_SIZE_16KB is not set
126# CONFIG_PAGE_SIZE_64KB is not set 171# CONFIG_PAGE_SIZE_64KB is not set
127CONFIG_BOARD_SCACHE=y 172CONFIG_BOARD_SCACHE=y
128CONFIG_IP22_CPU_SCACHE=y 173CONFIG_IP22_CPU_SCACHE=y
174# CONFIG_MIPS_MT is not set
129# CONFIG_64BIT_PHYS_ADDR is not set 175# CONFIG_64BIT_PHYS_ADDR is not set
130# CONFIG_CPU_ADVANCED is not set 176# CONFIG_CPU_ADVANCED is not set
131CONFIG_CPU_HAS_LLSC=y 177CONFIG_CPU_HAS_LLSC=y
132CONFIG_CPU_HAS_LLDSCD=y 178CONFIG_CPU_HAS_LLDSCD=y
133CONFIG_CPU_HAS_SYNC=y 179CONFIG_CPU_HAS_SYNC=y
180CONFIG_GENERIC_HARDIRQS=y
181CONFIG_GENERIC_IRQ_PROBE=y
182CONFIG_ARCH_FLATMEM_ENABLE=y
183CONFIG_SELECT_MEMORY_MODEL=y
184CONFIG_FLATMEM_MANUAL=y
185# CONFIG_DISCONTIGMEM_MANUAL is not set
186# CONFIG_SPARSEMEM_MANUAL is not set
187CONFIG_FLATMEM=y
188CONFIG_FLAT_NODE_MEM_MAP=y
189# CONFIG_SPARSEMEM_STATIC is not set
190# CONFIG_PREEMPT_NONE is not set
191CONFIG_PREEMPT_VOLUNTARY=y
134# CONFIG_PREEMPT is not set 192# CONFIG_PREEMPT is not set
135 193
136# 194#
137# Bus options (PCI, PCMCIA, EISA, ISA, TC) 195# Bus options (PCI, PCMCIA, EISA, ISA, TC)
138# 196#
197CONFIG_HW_HAS_EISA=y
139# CONFIG_EISA is not set 198# CONFIG_EISA is not set
140CONFIG_MMU=y 199CONFIG_MMU=y
141 200
@@ -145,10 +204,6 @@ CONFIG_MMU=y
145# CONFIG_PCCARD is not set 204# CONFIG_PCCARD is not set
146 205
147# 206#
148# PC-card bridges
149#
150
151#
152# PCI Hotplug Support 207# PCI Hotplug Support
153# 208#
154 209
@@ -160,115 +215,7 @@ CONFIG_BINFMT_MISC=m
160CONFIG_TRAD_SIGNALS=y 215CONFIG_TRAD_SIGNALS=y
161 216
162# 217#
163# Device Drivers 218# Networking
164#
165
166#
167# Generic Driver Options
168#
169CONFIG_STANDALONE=y
170CONFIG_PREVENT_FIRMWARE_BUILD=y
171# CONFIG_FW_LOADER is not set
172
173#
174# Memory Technology Devices (MTD)
175#
176# CONFIG_MTD is not set
177
178#
179# Parallel port support
180#
181# CONFIG_PARPORT is not set
182
183#
184# Plug and Play support
185#
186
187#
188# Block devices
189#
190# CONFIG_BLK_DEV_FD is not set
191# CONFIG_BLK_DEV_COW_COMMON is not set
192# CONFIG_BLK_DEV_LOOP is not set
193# CONFIG_BLK_DEV_NBD is not set
194# CONFIG_BLK_DEV_RAM is not set
195CONFIG_BLK_DEV_RAM_COUNT=16
196CONFIG_INITRAMFS_SOURCE=""
197# CONFIG_LBD is not set
198CONFIG_CDROM_PKTCDVD=m
199CONFIG_CDROM_PKTCDVD_BUFFERS=8
200# CONFIG_CDROM_PKTCDVD_WCACHE is not set
201
202#
203# IO Schedulers
204#
205CONFIG_IOSCHED_NOOP=y
206CONFIG_IOSCHED_AS=y
207CONFIG_IOSCHED_DEADLINE=y
208CONFIG_IOSCHED_CFQ=y
209CONFIG_ATA_OVER_ETH=m
210
211#
212# ATA/ATAPI/MFM/RLL support
213#
214# CONFIG_IDE is not set
215
216#
217# SCSI device support
218#
219CONFIG_SCSI=y
220CONFIG_SCSI_PROC_FS=y
221
222#
223# SCSI support type (disk, tape, CD-ROM)
224#
225CONFIG_BLK_DEV_SD=y
226CONFIG_CHR_DEV_ST=y
227# CONFIG_CHR_DEV_OSST is not set
228CONFIG_BLK_DEV_SR=y
229# CONFIG_BLK_DEV_SR_VENDOR is not set
230# CONFIG_CHR_DEV_SG is not set
231
232#
233# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
234#
235# CONFIG_SCSI_MULTI_LUN is not set
236CONFIG_SCSI_CONSTANTS=y
237# CONFIG_SCSI_LOGGING is not set
238
239#
240# SCSI Transport Attributes
241#
242CONFIG_SCSI_SPI_ATTRS=m
243# CONFIG_SCSI_FC_ATTRS is not set
244# CONFIG_SCSI_ISCSI_ATTRS is not set
245
246#
247# SCSI low-level drivers
248#
249CONFIG_SGIWD93_SCSI=y
250# CONFIG_SCSI_SATA is not set
251# CONFIG_SCSI_DEBUG is not set
252
253#
254# Multi-device support (RAID and LVM)
255#
256# CONFIG_MD is not set
257
258#
259# Fusion MPT device support
260#
261
262#
263# IEEE 1394 (FireWire) support
264#
265
266#
267# I2O device support
268#
269
270#
271# Networking support
272# 219#
273CONFIG_NET=y 220CONFIG_NET=y
274 221
@@ -277,12 +224,14 @@ CONFIG_NET=y
277# 224#
278CONFIG_PACKET=y 225CONFIG_PACKET=y
279CONFIG_PACKET_MMAP=y 226CONFIG_PACKET_MMAP=y
280CONFIG_NETLINK_DEV=y
281CONFIG_UNIX=y 227CONFIG_UNIX=y
228CONFIG_XFRM=y
229CONFIG_XFRM_USER=m
282CONFIG_NET_KEY=y 230CONFIG_NET_KEY=y
283CONFIG_INET=y 231CONFIG_INET=y
284CONFIG_IP_MULTICAST=y 232CONFIG_IP_MULTICAST=y
285# CONFIG_IP_ADVANCED_ROUTER is not set 233# CONFIG_IP_ADVANCED_ROUTER is not set
234CONFIG_IP_FIB_HASH=y
286CONFIG_IP_PNP=y 235CONFIG_IP_PNP=y
287# CONFIG_IP_PNP_DHCP is not set 236# CONFIG_IP_PNP_DHCP is not set
288CONFIG_IP_PNP_BOOTP=y 237CONFIG_IP_PNP_BOOTP=y
@@ -296,8 +245,10 @@ CONFIG_INET_AH=m
296CONFIG_INET_ESP=m 245CONFIG_INET_ESP=m
297CONFIG_INET_IPCOMP=m 246CONFIG_INET_IPCOMP=m
298CONFIG_INET_TUNNEL=m 247CONFIG_INET_TUNNEL=m
299CONFIG_IP_TCPDIAG=m 248CONFIG_INET_DIAG=y
300CONFIG_IP_TCPDIAG_IPV6=y 249CONFIG_INET_TCP_DIAG=y
250# CONFIG_TCP_CONG_ADVANCED is not set
251CONFIG_TCP_CONG_BIC=y
301 252
302# 253#
303# IP: Virtual Server Configuration 254# IP: Virtual Server Configuration
@@ -341,6 +292,9 @@ CONFIG_INET6_TUNNEL=m
341CONFIG_IPV6_TUNNEL=m 292CONFIG_IPV6_TUNNEL=m
342CONFIG_NETFILTER=y 293CONFIG_NETFILTER=y
343# CONFIG_NETFILTER_DEBUG is not set 294# CONFIG_NETFILTER_DEBUG is not set
295CONFIG_NETFILTER_NETLINK=m
296CONFIG_NETFILTER_NETLINK_QUEUE=m
297CONFIG_NETFILTER_NETLINK_LOG=m
344 298
345# 299#
346# IP: Netfilter Configuration 300# IP: Netfilter Configuration
@@ -348,11 +302,15 @@ CONFIG_NETFILTER=y
348CONFIG_IP_NF_CONNTRACK=m 302CONFIG_IP_NF_CONNTRACK=m
349CONFIG_IP_NF_CT_ACCT=y 303CONFIG_IP_NF_CT_ACCT=y
350CONFIG_IP_NF_CONNTRACK_MARK=y 304CONFIG_IP_NF_CONNTRACK_MARK=y
305CONFIG_IP_NF_CONNTRACK_EVENTS=y
306CONFIG_IP_NF_CONNTRACK_NETLINK=m
351# CONFIG_IP_NF_CT_PROTO_SCTP is not set 307# CONFIG_IP_NF_CT_PROTO_SCTP is not set
352CONFIG_IP_NF_FTP=m 308CONFIG_IP_NF_FTP=m
353CONFIG_IP_NF_IRC=m 309CONFIG_IP_NF_IRC=m
310# CONFIG_IP_NF_NETBIOS_NS is not set
354CONFIG_IP_NF_TFTP=m 311CONFIG_IP_NF_TFTP=m
355CONFIG_IP_NF_AMANDA=m 312CONFIG_IP_NF_AMANDA=m
313CONFIG_IP_NF_PPTP=m
356CONFIG_IP_NF_QUEUE=m 314CONFIG_IP_NF_QUEUE=m
357CONFIG_IP_NF_IPTABLES=m 315CONFIG_IP_NF_IPTABLES=m
358CONFIG_IP_NF_MATCH_LIMIT=m 316CONFIG_IP_NF_MATCH_LIMIT=m
@@ -376,9 +334,12 @@ CONFIG_IP_NF_MATCH_OWNER=m
376CONFIG_IP_NF_MATCH_ADDRTYPE=m 334CONFIG_IP_NF_MATCH_ADDRTYPE=m
377CONFIG_IP_NF_MATCH_REALM=m 335CONFIG_IP_NF_MATCH_REALM=m
378CONFIG_IP_NF_MATCH_SCTP=m 336CONFIG_IP_NF_MATCH_SCTP=m
337CONFIG_IP_NF_MATCH_DCCP=m
379CONFIG_IP_NF_MATCH_COMMENT=m 338CONFIG_IP_NF_MATCH_COMMENT=m
380CONFIG_IP_NF_MATCH_CONNMARK=m 339CONFIG_IP_NF_MATCH_CONNMARK=m
340CONFIG_IP_NF_MATCH_CONNBYTES=m
381CONFIG_IP_NF_MATCH_HASHLIMIT=m 341CONFIG_IP_NF_MATCH_HASHLIMIT=m
342CONFIG_IP_NF_MATCH_STRING=m
382CONFIG_IP_NF_FILTER=m 343CONFIG_IP_NF_FILTER=m
383CONFIG_IP_NF_TARGET_REJECT=m 344CONFIG_IP_NF_TARGET_REJECT=m
384CONFIG_IP_NF_TARGET_LOG=m 345CONFIG_IP_NF_TARGET_LOG=m
@@ -395,12 +356,14 @@ CONFIG_IP_NF_NAT_IRC=m
395CONFIG_IP_NF_NAT_FTP=m 356CONFIG_IP_NF_NAT_FTP=m
396CONFIG_IP_NF_NAT_TFTP=m 357CONFIG_IP_NF_NAT_TFTP=m
397CONFIG_IP_NF_NAT_AMANDA=m 358CONFIG_IP_NF_NAT_AMANDA=m
359CONFIG_IP_NF_NAT_PPTP=m
398CONFIG_IP_NF_MANGLE=m 360CONFIG_IP_NF_MANGLE=m
399CONFIG_IP_NF_TARGET_TOS=m 361CONFIG_IP_NF_TARGET_TOS=m
400CONFIG_IP_NF_TARGET_ECN=m 362CONFIG_IP_NF_TARGET_ECN=m
401CONFIG_IP_NF_TARGET_DSCP=m 363CONFIG_IP_NF_TARGET_DSCP=m
402CONFIG_IP_NF_TARGET_MARK=m 364CONFIG_IP_NF_TARGET_MARK=m
403CONFIG_IP_NF_TARGET_CLASSIFY=m 365CONFIG_IP_NF_TARGET_CLASSIFY=m
366CONFIG_IP_NF_TARGET_TTL=m
404CONFIG_IP_NF_TARGET_CONNMARK=m 367CONFIG_IP_NF_TARGET_CONNMARK=m
405CONFIG_IP_NF_TARGET_CLUSTERIP=m 368CONFIG_IP_NF_TARGET_CLUSTERIP=m
406CONFIG_IP_NF_RAW=m 369CONFIG_IP_NF_RAW=m
@@ -410,7 +373,7 @@ CONFIG_IP_NF_ARPFILTER=m
410CONFIG_IP_NF_ARP_MANGLE=m 373CONFIG_IP_NF_ARP_MANGLE=m
411 374
412# 375#
413# IPv6: Netfilter Configuration 376# IPv6: Netfilter Configuration (EXPERIMENTAL)
414# 377#
415CONFIG_IP6_NF_QUEUE=m 378CONFIG_IP6_NF_QUEUE=m
416CONFIG_IP6_NF_IPTABLES=m 379CONFIG_IP6_NF_IPTABLES=m
@@ -429,11 +392,16 @@ CONFIG_IP6_NF_MATCH_LENGTH=m
429CONFIG_IP6_NF_MATCH_EUI64=m 392CONFIG_IP6_NF_MATCH_EUI64=m
430CONFIG_IP6_NF_FILTER=m 393CONFIG_IP6_NF_FILTER=m
431CONFIG_IP6_NF_TARGET_LOG=m 394CONFIG_IP6_NF_TARGET_LOG=m
395CONFIG_IP6_NF_TARGET_REJECT=m
432CONFIG_IP6_NF_MANGLE=m 396CONFIG_IP6_NF_MANGLE=m
433CONFIG_IP6_NF_TARGET_MARK=m 397CONFIG_IP6_NF_TARGET_MARK=m
398CONFIG_IP6_NF_TARGET_HL=m
434CONFIG_IP6_NF_RAW=m 399CONFIG_IP6_NF_RAW=m
435CONFIG_XFRM=y 400
436CONFIG_XFRM_USER=m 401#
402# DCCP Configuration (EXPERIMENTAL)
403#
404# CONFIG_IP_DCCP is not set
437 405
438# 406#
439# SCTP Configuration (EXPERIMENTAL) 407# SCTP Configuration (EXPERIMENTAL)
@@ -456,10 +424,6 @@ CONFIG_SCTP_HMAC_MD5=y
456CONFIG_NET_DIVERT=y 424CONFIG_NET_DIVERT=y
457# CONFIG_ECONET is not set 425# CONFIG_ECONET is not set
458# CONFIG_WAN_ROUTER is not set 426# CONFIG_WAN_ROUTER is not set
459
460#
461# QoS and/or fair queueing
462#
463CONFIG_NET_SCHED=y 427CONFIG_NET_SCHED=y
464# CONFIG_NET_SCH_CLK_JIFFIES is not set 428# CONFIG_NET_SCH_CLK_JIFFIES is not set
465CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y 429CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
@@ -479,6 +443,7 @@ CONFIG_NET_SCH_INGRESS=m
479CONFIG_NET_QOS=y 443CONFIG_NET_QOS=y
480CONFIG_NET_ESTIMATOR=y 444CONFIG_NET_ESTIMATOR=y
481CONFIG_NET_CLS=y 445CONFIG_NET_CLS=y
446CONFIG_NET_CLS_BASIC=m
482CONFIG_NET_CLS_TCINDEX=m 447CONFIG_NET_CLS_TCINDEX=m
483CONFIG_NET_CLS_ROUTE4=m 448CONFIG_NET_CLS_ROUTE4=m
484CONFIG_NET_CLS_ROUTE=y 449CONFIG_NET_CLS_ROUTE=y
@@ -489,6 +454,7 @@ CONFIG_NET_CLS_U32=m
489# CONFIG_CLS_U32_MARK is not set 454# CONFIG_CLS_U32_MARK is not set
490CONFIG_NET_CLS_RSVP=m 455CONFIG_NET_CLS_RSVP=m
491CONFIG_NET_CLS_RSVP6=m 456CONFIG_NET_CLS_RSVP6=m
457# CONFIG_NET_EMATCH is not set
492# CONFIG_NET_CLS_ACT is not set 458# CONFIG_NET_CLS_ACT is not set
493CONFIG_NET_CLS_POLICE=y 459CONFIG_NET_CLS_POLICE=y
494 460
@@ -496,17 +462,153 @@ CONFIG_NET_CLS_POLICE=y
496# Network testing 462# Network testing
497# 463#
498# CONFIG_NET_PKTGEN is not set 464# CONFIG_NET_PKTGEN is not set
499# CONFIG_NETPOLL is not set
500# CONFIG_NET_POLL_CONTROLLER is not set
501# CONFIG_HAMRADIO is not set 465# CONFIG_HAMRADIO is not set
502# CONFIG_IRDA is not set 466# CONFIG_IRDA is not set
503# CONFIG_BT is not set 467# CONFIG_BT is not set
468CONFIG_IEEE80211=m
469# CONFIG_IEEE80211_DEBUG is not set
470CONFIG_IEEE80211_CRYPT_WEP=m
471CONFIG_IEEE80211_CRYPT_CCMP=m
472CONFIG_IEEE80211_CRYPT_TKIP=m
473
474#
475# Device Drivers
476#
477
478#
479# Generic Driver Options
480#
481CONFIG_STANDALONE=y
482CONFIG_PREVENT_FIRMWARE_BUILD=y
483# CONFIG_FW_LOADER is not set
484
485#
486# Connector - unified userspace <-> kernelspace linker
487#
488CONFIG_CONNECTOR=m
489
490#
491# Memory Technology Devices (MTD)
492#
493# CONFIG_MTD is not set
494
495#
496# Parallel port support
497#
498# CONFIG_PARPORT is not set
499
500#
501# Plug and Play support
502#
503
504#
505# Block devices
506#
507# CONFIG_BLK_DEV_COW_COMMON is not set
508# CONFIG_BLK_DEV_LOOP is not set
509# CONFIG_BLK_DEV_NBD is not set
510# CONFIG_BLK_DEV_RAM is not set
511CONFIG_BLK_DEV_RAM_COUNT=16
512# CONFIG_LBD is not set
513CONFIG_CDROM_PKTCDVD=m
514CONFIG_CDROM_PKTCDVD_BUFFERS=8
515# CONFIG_CDROM_PKTCDVD_WCACHE is not set
516
517#
518# IO Schedulers
519#
520CONFIG_IOSCHED_NOOP=y
521CONFIG_IOSCHED_AS=y
522CONFIG_IOSCHED_DEADLINE=y
523CONFIG_IOSCHED_CFQ=y
524CONFIG_ATA_OVER_ETH=m
525
526#
527# ATA/ATAPI/MFM/RLL support
528#
529# CONFIG_IDE is not set
530
531#
532# SCSI device support
533#
534CONFIG_RAID_ATTRS=m
535CONFIG_SCSI=y
536CONFIG_SCSI_PROC_FS=y
537
538#
539# SCSI support type (disk, tape, CD-ROM)
540#
541CONFIG_BLK_DEV_SD=y
542CONFIG_CHR_DEV_ST=y
543# CONFIG_CHR_DEV_OSST is not set
544CONFIG_BLK_DEV_SR=y
545# CONFIG_BLK_DEV_SR_VENDOR is not set
546# CONFIG_CHR_DEV_SG is not set
547CONFIG_CHR_DEV_SCH=m
548
549#
550# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
551#
552# CONFIG_SCSI_MULTI_LUN is not set
553CONFIG_SCSI_CONSTANTS=y
554# CONFIG_SCSI_LOGGING is not set
555
556#
557# SCSI Transport Attributes
558#
559CONFIG_SCSI_SPI_ATTRS=m
560# CONFIG_SCSI_FC_ATTRS is not set
561CONFIG_SCSI_ISCSI_ATTRS=m
562CONFIG_SCSI_SAS_ATTRS=m
563
564#
565# SCSI low-level drivers
566#
567CONFIG_SGIWD93_SCSI=y
568# CONFIG_SCSI_SATA is not set
569# CONFIG_SCSI_DEBUG is not set
570
571#
572# Multi-device support (RAID and LVM)
573#
574# CONFIG_MD is not set
575
576#
577# Fusion MPT device support
578#
579# CONFIG_FUSION is not set
580
581#
582# IEEE 1394 (FireWire) support
583#
584
585#
586# I2O device support
587#
588
589#
590# Network device support
591#
504CONFIG_NETDEVICES=y 592CONFIG_NETDEVICES=y
505CONFIG_DUMMY=m 593CONFIG_DUMMY=m
506CONFIG_BONDING=m 594CONFIG_BONDING=m
507CONFIG_EQUALIZER=m 595CONFIG_EQUALIZER=m
508CONFIG_TUN=m 596CONFIG_TUN=m
509CONFIG_ETHERTAP=m 597
598#
599# PHY device support
600#
601CONFIG_PHYLIB=m
602CONFIG_PHYCONTROL=y
603
604#
605# MII PHY device drivers
606#
607CONFIG_MARVELL_PHY=m
608CONFIG_DAVICOM_PHY=m
609CONFIG_QSEMI_PHY=m
610CONFIG_LXT_PHY=m
611CONFIG_CICADA_PHY=m
510 612
511# 613#
512# Ethernet (10 or 100Mbit) 614# Ethernet (10 or 100Mbit)
@@ -540,6 +642,8 @@ CONFIG_SGISEEQ=y
540# CONFIG_SLIP is not set 642# CONFIG_SLIP is not set
541# CONFIG_SHAPER is not set 643# CONFIG_SHAPER is not set
542# CONFIG_NETCONSOLE is not set 644# CONFIG_NETCONSOLE is not set
645# CONFIG_NETPOLL is not set
646# CONFIG_NET_POLL_CONTROLLER is not set
543 647
544# 648#
545# ISDN subsystem 649# ISDN subsystem
@@ -569,18 +673,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
569# CONFIG_INPUT_EVBUG is not set 673# CONFIG_INPUT_EVBUG is not set
570 674
571# 675#
572# Input I/O drivers
573#
574# CONFIG_GAMEPORT is not set
575CONFIG_SOUND_GAMEPORT=y
576CONFIG_SERIO=y
577CONFIG_SERIO_I8042=y
578CONFIG_SERIO_SERPORT=y
579# CONFIG_SERIO_CT82C710 is not set
580CONFIG_SERIO_LIBPS2=y
581CONFIG_SERIO_RAW=m
582
583#
584# Input Device Drivers 676# Input Device Drivers
585# 677#
586CONFIG_INPUT_KEYBOARD=y 678CONFIG_INPUT_KEYBOARD=y
@@ -598,6 +690,16 @@ CONFIG_MOUSE_SERIAL=m
598# CONFIG_INPUT_MISC is not set 690# CONFIG_INPUT_MISC is not set
599 691
600# 692#
693# Hardware I/O ports
694#
695CONFIG_SERIO=y
696CONFIG_SERIO_I8042=y
697CONFIG_SERIO_SERPORT=y
698CONFIG_SERIO_LIBPS2=y
699CONFIG_SERIO_RAW=m
700# CONFIG_GAMEPORT is not set
701
702#
601# Character devices 703# Character devices
602# 704#
603CONFIG_VT=y 705CONFIG_VT=y
@@ -644,11 +746,14 @@ CONFIG_SGI_DS1286=m
644# 746#
645# Ftape, the floppy tape device driver 747# Ftape, the floppy tape device driver
646# 748#
647# CONFIG_DRM is not set
648CONFIG_RAW_DRIVER=m 749CONFIG_RAW_DRIVER=m
649CONFIG_MAX_RAW_DEVS=256 750CONFIG_MAX_RAW_DEVS=256
650 751
651# 752#
753# TPM devices
754#
755
756#
652# I2C support 757# I2C support
653# 758#
654# CONFIG_I2C is not set 759# CONFIG_I2C is not set
@@ -659,10 +764,20 @@ CONFIG_MAX_RAW_DEVS=256
659# CONFIG_W1 is not set 764# CONFIG_W1 is not set
660 765
661# 766#
767# Hardware Monitoring support
768#
769# CONFIG_HWMON is not set
770# CONFIG_HWMON_VID is not set
771
772#
662# Misc devices 773# Misc devices
663# 774#
664 775
665# 776#
777# Multimedia Capabilities Port drivers
778#
779
780#
666# Multimedia devices 781# Multimedia devices
667# 782#
668# CONFIG_VIDEO_DEV is not set 783# CONFIG_VIDEO_DEV is not set
@@ -693,7 +808,6 @@ CONFIG_LOGO=y
693# CONFIG_LOGO_LINUX_VGA16 is not set 808# CONFIG_LOGO_LINUX_VGA16 is not set
694# CONFIG_LOGO_LINUX_CLUT224 is not set 809# CONFIG_LOGO_LINUX_CLUT224 is not set
695CONFIG_LOGO_SGI_CLUT224=y 810CONFIG_LOGO_SGI_CLUT224=y
696# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
697 811
698# 812#
699# Sound 813# Sound
@@ -707,10 +821,6 @@ CONFIG_LOGO_SGI_CLUT224=y
707# CONFIG_USB_ARCH_HAS_OHCI is not set 821# CONFIG_USB_ARCH_HAS_OHCI is not set
708 822
709# 823#
710# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
711#
712
713#
714# USB Gadget Support 824# USB Gadget Support
715# 825#
716# CONFIG_USB_GADGET is not set 826# CONFIG_USB_GADGET is not set
@@ -723,13 +833,17 @@ CONFIG_LOGO_SGI_CLUT224=y
723# 833#
724# InfiniBand support 834# InfiniBand support
725# 835#
726# CONFIG_INFINIBAND is not set 836
837#
838# SN Devices
839#
727 840
728# 841#
729# File systems 842# File systems
730# 843#
731CONFIG_EXT2_FS=m 844CONFIG_EXT2_FS=m
732# CONFIG_EXT2_FS_XATTR is not set 845# CONFIG_EXT2_FS_XATTR is not set
846# CONFIG_EXT2_FS_XIP is not set
733CONFIG_EXT3_FS=y 847CONFIG_EXT3_FS=y
734CONFIG_EXT3_FS_XATTR=y 848CONFIG_EXT3_FS_XATTR=y
735CONFIG_EXT3_FS_POSIX_ACL=y 849CONFIG_EXT3_FS_POSIX_ACL=y
@@ -741,12 +855,14 @@ CONFIG_FS_MBCACHE=y
741# CONFIG_JFS_FS is not set 855# CONFIG_JFS_FS is not set
742CONFIG_FS_POSIX_ACL=y 856CONFIG_FS_POSIX_ACL=y
743CONFIG_XFS_FS=m 857CONFIG_XFS_FS=m
744# CONFIG_XFS_RT is not set 858CONFIG_XFS_EXPORT=y
745CONFIG_XFS_QUOTA=y 859CONFIG_XFS_QUOTA=m
746CONFIG_XFS_SECURITY=y 860CONFIG_XFS_SECURITY=y
747# CONFIG_XFS_POSIX_ACL is not set 861# CONFIG_XFS_POSIX_ACL is not set
862# CONFIG_XFS_RT is not set
748CONFIG_MINIX_FS=m 863CONFIG_MINIX_FS=m
749# CONFIG_ROMFS_FS is not set 864# CONFIG_ROMFS_FS is not set
865CONFIG_INOTIFY=y
750CONFIG_QUOTA=y 866CONFIG_QUOTA=y
751# CONFIG_QFMT_V1 is not set 867# CONFIG_QFMT_V1 is not set
752CONFIG_QFMT_V2=m 868CONFIG_QFMT_V2=m
@@ -754,6 +870,7 @@ CONFIG_QUOTACTL=y
754CONFIG_DNOTIFY=y 870CONFIG_DNOTIFY=y
755CONFIG_AUTOFS_FS=m 871CONFIG_AUTOFS_FS=m
756CONFIG_AUTOFS4_FS=m 872CONFIG_AUTOFS4_FS=m
873CONFIG_FUSE_FS=m
757 874
758# 875#
759# CD-ROM/DVD Filesystems 876# CD-ROM/DVD Filesystems
@@ -781,12 +898,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
781CONFIG_PROC_FS=y 898CONFIG_PROC_FS=y
782CONFIG_PROC_KCORE=y 899CONFIG_PROC_KCORE=y
783CONFIG_SYSFS=y 900CONFIG_SYSFS=y
784# CONFIG_DEVFS_FS is not set
785CONFIG_DEVPTS_FS_XATTR=y
786CONFIG_DEVPTS_FS_SECURITY=y
787# CONFIG_TMPFS is not set 901# CONFIG_TMPFS is not set
788# CONFIG_HUGETLB_PAGE is not set 902# CONFIG_HUGETLB_PAGE is not set
789CONFIG_RAMFS=y 903CONFIG_RAMFS=y
904CONFIG_RELAYFS_FS=m
790 905
791# 906#
792# Miscellaneous filesystems 907# Miscellaneous filesystems
@@ -811,15 +926,20 @@ CONFIG_UFS_FS=m
811# 926#
812CONFIG_NFS_FS=m 927CONFIG_NFS_FS=m
813CONFIG_NFS_V3=y 928CONFIG_NFS_V3=y
929CONFIG_NFS_V3_ACL=y
814# CONFIG_NFS_V4 is not set 930# CONFIG_NFS_V4 is not set
815# CONFIG_NFS_DIRECTIO is not set 931# CONFIG_NFS_DIRECTIO is not set
816CONFIG_NFSD=m 932CONFIG_NFSD=m
933CONFIG_NFSD_V2_ACL=y
817CONFIG_NFSD_V3=y 934CONFIG_NFSD_V3=y
935CONFIG_NFSD_V3_ACL=y
818# CONFIG_NFSD_V4 is not set 936# CONFIG_NFSD_V4 is not set
819CONFIG_NFSD_TCP=y 937CONFIG_NFSD_TCP=y
820CONFIG_LOCKD=m 938CONFIG_LOCKD=m
821CONFIG_LOCKD_V4=y 939CONFIG_LOCKD_V4=y
822CONFIG_EXPORTFS=m 940CONFIG_EXPORTFS=m
941CONFIG_NFS_ACL_SUPPORT=m
942CONFIG_NFS_COMMON=y
823CONFIG_SUNRPC=m 943CONFIG_SUNRPC=m
824CONFIG_SUNRPC_GSS=m 944CONFIG_SUNRPC_GSS=m
825CONFIG_RPCSEC_GSS_KRB5=m 945CONFIG_RPCSEC_GSS_KRB5=m
@@ -835,6 +955,7 @@ CONFIG_CIFS=m
835CONFIG_CODA_FS=m 955CONFIG_CODA_FS=m
836# CONFIG_CODA_FS_OLD_API is not set 956# CONFIG_CODA_FS_OLD_API is not set
837# CONFIG_AFS_FS is not set 957# CONFIG_AFS_FS is not set
958# CONFIG_9P_FS is not set
838 959
839# 960#
840# Partition Types 961# Partition Types
@@ -908,7 +1029,9 @@ CONFIG_NLS_UTF8=m
908# 1029#
909# Kernel hacking 1030# Kernel hacking
910# 1031#
1032# CONFIG_PRINTK_TIME is not set
911# CONFIG_DEBUG_KERNEL is not set 1033# CONFIG_DEBUG_KERNEL is not set
1034CONFIG_LOG_BUF_SHIFT=14
912CONFIG_CROSSCOMPILE=y 1035CONFIG_CROSSCOMPILE=y
913CONFIG_CMDLINE="" 1036CONFIG_CMDLINE=""
914 1037
@@ -931,6 +1054,7 @@ CONFIG_CRYPTO_SHA1=m
931CONFIG_CRYPTO_SHA256=m 1054CONFIG_CRYPTO_SHA256=m
932CONFIG_CRYPTO_SHA512=m 1055CONFIG_CRYPTO_SHA512=m
933CONFIG_CRYPTO_WP512=m 1056CONFIG_CRYPTO_WP512=m
1057CONFIG_CRYPTO_TGR192=m
934CONFIG_CRYPTO_DES=m 1058CONFIG_CRYPTO_DES=m
935CONFIG_CRYPTO_BLOWFISH=m 1059CONFIG_CRYPTO_BLOWFISH=m
936CONFIG_CRYPTO_TWOFISH=m 1060CONFIG_CRYPTO_TWOFISH=m
@@ -942,10 +1066,10 @@ CONFIG_CRYPTO_TEA=m
942CONFIG_CRYPTO_ARC4=m 1066CONFIG_CRYPTO_ARC4=m
943CONFIG_CRYPTO_KHAZAD=m 1067CONFIG_CRYPTO_KHAZAD=m
944CONFIG_CRYPTO_ANUBIS=m 1068CONFIG_CRYPTO_ANUBIS=m
945CONFIG_CRYPTO_DEFLATE=y 1069CONFIG_CRYPTO_DEFLATE=m
946CONFIG_CRYPTO_MICHAEL_MIC=m 1070CONFIG_CRYPTO_MICHAEL_MIC=m
947CONFIG_CRYPTO_CRC32C=m 1071CONFIG_CRYPTO_CRC32C=m
948CONFIG_CRYPTO_TEST=m 1072# CONFIG_CRYPTO_TEST is not set
949 1073
950# 1074#
951# Hardware crypto devices 1075# Hardware crypto devices
@@ -955,9 +1079,12 @@ CONFIG_CRYPTO_TEST=m
955# Library routines 1079# Library routines
956# 1080#
957# CONFIG_CRC_CCITT is not set 1081# CONFIG_CRC_CCITT is not set
1082CONFIG_CRC16=m
958CONFIG_CRC32=m 1083CONFIG_CRC32=m
959CONFIG_LIBCRC32C=m 1084CONFIG_LIBCRC32C=m
960CONFIG_ZLIB_INFLATE=y 1085CONFIG_ZLIB_INFLATE=m
961CONFIG_ZLIB_DEFLATE=y 1086CONFIG_ZLIB_DEFLATE=m
962CONFIG_GENERIC_HARDIRQS=y 1087CONFIG_TEXTSEARCH=y
963CONFIG_GENERIC_IRQ_PROBE=y 1088CONFIG_TEXTSEARCH_KMP=m
1089CONFIG_TEXTSEARCH_BM=m
1090CONFIG_TEXTSEARCH_FSM=m
diff --git a/arch/mips/configs/ip27_defconfig b/arch/mips/configs/ip27_defconfig
index b2a67da1e031..d962f61d5b98 100644
--- a/arch/mips/configs/ip27_defconfig
+++ b/arch/mips/configs/ip27_defconfig
@@ -1,11 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:04 2005 4# Thu Oct 20 22:26:04 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7CONFIG_64BIT=y
8CONFIG_64BIT=y
9 7
10# 8#
11# Code maturity level options 9# Code maturity level options
@@ -13,25 +11,31 @@ CONFIG_64BIT=y
13CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
14CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
15CONFIG_LOCK_KERNEL=y 13CONFIG_LOCK_KERNEL=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
16 15
17# 16#
18# General setup 17# General setup
19# 18#
20CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
21CONFIG_SWAP=y 21CONFIG_SWAP=y
22CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
23CONFIG_POSIX_MQUEUE=y 23CONFIG_POSIX_MQUEUE=y
24# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
25CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
26# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
27CONFIG_LOG_BUF_SHIFT=15 27CONFIG_HOTPLUG=y
28# CONFIG_HOTPLUG is not set
29CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
30CONFIG_IKCONFIG=y 29CONFIG_IKCONFIG=y
31CONFIG_IKCONFIG_PROC=y 30CONFIG_IKCONFIG_PROC=y
31CONFIG_CPUSETS=y
32CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 33CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 34CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 35# CONFIG_KALLSYMS_EXTRA_PASS is not set
36CONFIG_PRINTK=y
37CONFIG_BUG=y
38CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 39CONFIG_FUTEX=y
36CONFIG_EPOLL=y 40CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 41# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +45,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 45CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 46CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 47# CONFIG_TINY_SHMEM is not set
48CONFIG_BASE_SMALL=0
44 49
45# 50#
46# Loadable module support 51# Loadable module support
@@ -57,55 +62,85 @@ CONFIG_STOP_MACHINE=y
57# 62#
58# Machine selection 63# Machine selection
59# 64#
60# CONFIG_MACH_JAZZ is not set 65# CONFIG_MIPS_MTX1 is not set
61# CONFIG_MACH_VR41XX is not set 66# CONFIG_MIPS_BOSPORUS is not set
67# CONFIG_MIPS_PB1000 is not set
68# CONFIG_MIPS_PB1100 is not set
69# CONFIG_MIPS_PB1500 is not set
70# CONFIG_MIPS_PB1550 is not set
71# CONFIG_MIPS_PB1200 is not set
72# CONFIG_MIPS_DB1000 is not set
73# CONFIG_MIPS_DB1100 is not set
74# CONFIG_MIPS_DB1500 is not set
75# CONFIG_MIPS_DB1550 is not set
76# CONFIG_MIPS_DB1200 is not set
77# CONFIG_MIPS_MIRAGE is not set
62# CONFIG_MIPS_COBALT is not set 78# CONFIG_MIPS_COBALT is not set
63# CONFIG_MACH_DECSTATION is not set 79# CONFIG_MACH_DECSTATION is not set
64# CONFIG_MIPS_EV64120 is not set 80# CONFIG_MIPS_EV64120 is not set
65# CONFIG_MIPS_EV96100 is not set 81# CONFIG_MIPS_EV96100 is not set
66# CONFIG_MIPS_IVR is not set 82# CONFIG_MIPS_IVR is not set
67# CONFIG_LASAT is not set
68# CONFIG_MIPS_ITE8172 is not set 83# CONFIG_MIPS_ITE8172 is not set
84# CONFIG_MACH_JAZZ is not set
85# CONFIG_LASAT is not set
69# CONFIG_MIPS_ATLAS is not set 86# CONFIG_MIPS_ATLAS is not set
70# CONFIG_MIPS_MALTA is not set 87# CONFIG_MIPS_MALTA is not set
71# CONFIG_MIPS_SEAD is not set 88# CONFIG_MIPS_SEAD is not set
89# CONFIG_MIPS_SIM is not set
90# CONFIG_MOMENCO_JAGUAR_ATX is not set
72# CONFIG_MOMENCO_OCELOT is not set 91# CONFIG_MOMENCO_OCELOT is not set
73# CONFIG_MOMENCO_OCELOT_G is not set
74# CONFIG_MOMENCO_OCELOT_C is not set
75# CONFIG_MOMENCO_OCELOT_3 is not set 92# CONFIG_MOMENCO_OCELOT_3 is not set
76# CONFIG_MOMENCO_JAGUAR_ATX is not set 93# CONFIG_MOMENCO_OCELOT_C is not set
77# CONFIG_PMC_YOSEMITE is not set 94# CONFIG_MOMENCO_OCELOT_G is not set
95# CONFIG_MIPS_XXS1500 is not set
96# CONFIG_PNX8550_V2PCI is not set
97# CONFIG_PNX8550_JBS is not set
78# CONFIG_DDB5074 is not set 98# CONFIG_DDB5074 is not set
79# CONFIG_DDB5476 is not set 99# CONFIG_DDB5476 is not set
80# CONFIG_DDB5477 is not set 100# CONFIG_DDB5477 is not set
81# CONFIG_NEC_OSPREY is not set 101# CONFIG_MACH_VR41XX is not set
102# CONFIG_PMC_YOSEMITE is not set
103# CONFIG_QEMU is not set
82# CONFIG_SGI_IP22 is not set 104# CONFIG_SGI_IP22 is not set
83CONFIG_SGI_IP27=y 105CONFIG_SGI_IP27=y
106# CONFIG_SGI_IP32 is not set
107# CONFIG_SIBYTE_BIGSUR is not set
108# CONFIG_SIBYTE_SWARM is not set
109# CONFIG_SIBYTE_SENTOSA is not set
110# CONFIG_SIBYTE_RHONE is not set
111# CONFIG_SIBYTE_CARMEL is not set
112# CONFIG_SIBYTE_PTSWARM is not set
113# CONFIG_SIBYTE_LITTLESUR is not set
114# CONFIG_SIBYTE_CRHINE is not set
115# CONFIG_SIBYTE_CRHONE is not set
116# CONFIG_SNI_RM200_PCI is not set
117# CONFIG_TOSHIBA_JMR3927 is not set
118# CONFIG_TOSHIBA_RBTX4927 is not set
119# CONFIG_TOSHIBA_RBTX4938 is not set
84# CONFIG_SGI_SN0_N_MODE is not set 120# CONFIG_SGI_SN0_N_MODE is not set
85CONFIG_ARCH_DISCONTIGMEM_ENABLE=y 121CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
86CONFIG_NUMA=y 122CONFIG_NUMA=y
87# CONFIG_MAPPED_KERNEL is not set 123# CONFIG_MAPPED_KERNEL is not set
88# CONFIG_REPLICATE_KTEXT is not set 124# CONFIG_REPLICATE_KTEXT is not set
89# CONFIG_REPLICATE_EXHANDLERS is not set 125# CONFIG_REPLICATE_EXHANDLERS is not set
90# CONFIG_SGI_IP32 is not set
91# CONFIG_SIBYTE_SB1xxx_SOC is not set
92# CONFIG_SNI_RM200_PCI is not set
93CONFIG_RWSEM_GENERIC_SPINLOCK=y 126CONFIG_RWSEM_GENERIC_SPINLOCK=y
94CONFIG_GENERIC_CALIBRATE_DELAY=y 127CONFIG_GENERIC_CALIBRATE_DELAY=y
95CONFIG_HAVE_DEC_LOCK=y
96CONFIG_ARC=y 128CONFIG_ARC=y
97CONFIG_DMA_IP27=y 129CONFIG_DMA_IP27=y
130CONFIG_CPU_BIG_ENDIAN=y
98# CONFIG_CPU_LITTLE_ENDIAN is not set 131# CONFIG_CPU_LITTLE_ENDIAN is not set
132CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
99CONFIG_MIPS_L1_CACHE_SHIFT=7 133CONFIG_MIPS_L1_CACHE_SHIFT=7
100CONFIG_ARC64=y 134CONFIG_ARC64=y
101CONFIG_BOOT_ELF64=y 135CONFIG_BOOT_ELF64=y
102CONFIG_QL_ISP_A64=y
103 136
104# 137#
105# CPU selection 138# CPU selection
106# 139#
107# CONFIG_CPU_MIPS32 is not set 140# CONFIG_CPU_MIPS32_R1 is not set
108# CONFIG_CPU_MIPS64 is not set 141# CONFIG_CPU_MIPS32_R2 is not set
142# CONFIG_CPU_MIPS64_R1 is not set
143# CONFIG_CPU_MIPS64_R2 is not set
109# CONFIG_CPU_R3000 is not set 144# CONFIG_CPU_R3000 is not set
110# CONFIG_CPU_TX39XX is not set 145# CONFIG_CPU_TX39XX is not set
111# CONFIG_CPU_VR41XX is not set 146# CONFIG_CPU_VR41XX is not set
@@ -121,17 +156,42 @@ CONFIG_CPU_R10000=y
121# CONFIG_CPU_RM7000 is not set 156# CONFIG_CPU_RM7000 is not set
122# CONFIG_CPU_RM9000 is not set 157# CONFIG_CPU_RM9000 is not set
123# CONFIG_CPU_SB1 is not set 158# CONFIG_CPU_SB1 is not set
159CONFIG_SYS_HAS_CPU_R10000=y
160CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
161CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
162CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
163
164#
165# Kernel type
166#
167# CONFIG_32BIT is not set
168CONFIG_64BIT=y
124CONFIG_PAGE_SIZE_4KB=y 169CONFIG_PAGE_SIZE_4KB=y
125# CONFIG_PAGE_SIZE_8KB is not set 170# CONFIG_PAGE_SIZE_8KB is not set
126# CONFIG_PAGE_SIZE_16KB is not set 171# CONFIG_PAGE_SIZE_16KB is not set
127# CONFIG_PAGE_SIZE_64KB is not set 172# CONFIG_PAGE_SIZE_64KB is not set
128CONFIG_CPU_HAS_PREFETCH=y 173CONFIG_CPU_HAS_PREFETCH=y
174# CONFIG_MIPS_MT is not set
129CONFIG_CPU_HAS_LLSC=y 175CONFIG_CPU_HAS_LLSC=y
130CONFIG_CPU_HAS_LLDSCD=y 176CONFIG_CPU_HAS_LLDSCD=y
131CONFIG_CPU_HAS_SYNC=y 177CONFIG_CPU_HAS_SYNC=y
178CONFIG_GENERIC_HARDIRQS=y
179CONFIG_GENERIC_IRQ_PROBE=y
180CONFIG_CPU_SUPPORTS_HIGHMEM=y
181CONFIG_SELECT_MEMORY_MODEL=y
182# CONFIG_FLATMEM_MANUAL is not set
183CONFIG_DISCONTIGMEM_MANUAL=y
184# CONFIG_SPARSEMEM_MANUAL is not set
185CONFIG_DISCONTIGMEM=y
186CONFIG_FLAT_NODE_MEM_MAP=y
187CONFIG_NEED_MULTIPLE_NODES=y
188# CONFIG_SPARSEMEM_STATIC is not set
132CONFIG_SMP=y 189CONFIG_SMP=y
133CONFIG_NR_CPUS=64 190CONFIG_NR_CPUS=64
191CONFIG_PREEMPT_NONE=y
192# CONFIG_PREEMPT_VOLUNTARY is not set
134# CONFIG_PREEMPT is not set 193# CONFIG_PREEMPT is not set
194CONFIG_PREEMPT_BKL=y
135# CONFIG_MIPS_INSANE_LARGE is not set 195# CONFIG_MIPS_INSANE_LARGE is not set
136 196
137# 197#
@@ -141,7 +201,6 @@ CONFIG_HW_HAS_PCI=y
141CONFIG_PCI=y 201CONFIG_PCI=y
142CONFIG_PCI_DOMAINS=y 202CONFIG_PCI_DOMAINS=y
143CONFIG_PCI_LEGACY_PROC=y 203CONFIG_PCI_LEGACY_PROC=y
144CONFIG_PCI_NAMES=y
145CONFIG_MMU=y 204CONFIG_MMU=y
146 205
147# 206#
@@ -150,10 +209,6 @@ CONFIG_MMU=y
150# CONFIG_PCCARD is not set 209# CONFIG_PCCARD is not set
151 210
152# 211#
153# PC-card bridges
154#
155
156#
157# PCI Hotplug Support 212# PCI Hotplug Support
158# 213#
159# CONFIG_HOTPLUG_PCI is not set 214# CONFIG_HOTPLUG_PCI is not set
@@ -163,7 +218,7 @@ CONFIG_MMU=y
163# 218#
164CONFIG_BINFMT_ELF=y 219CONFIG_BINFMT_ELF=y
165# CONFIG_BINFMT_MISC is not set 220# CONFIG_BINFMT_MISC is not set
166# CONFIG_BUILD_ELF64 is not set 221CONFIG_BUILD_ELF64=y
167CONFIG_MIPS32_COMPAT=y 222CONFIG_MIPS32_COMPAT=y
168CONFIG_COMPAT=y 223CONFIG_COMPAT=y
169CONFIG_MIPS32_O32=y 224CONFIG_MIPS32_O32=y
@@ -171,6 +226,111 @@ CONFIG_MIPS32_O32=y
171CONFIG_BINFMT_ELF32=y 226CONFIG_BINFMT_ELF32=y
172 227
173# 228#
229# Networking
230#
231CONFIG_NET=y
232
233#
234# Networking options
235#
236CONFIG_PACKET=y
237CONFIG_PACKET_MMAP=y
238CONFIG_UNIX=y
239CONFIG_XFRM=y
240CONFIG_XFRM_USER=m
241CONFIG_NET_KEY=y
242CONFIG_INET=y
243CONFIG_IP_MULTICAST=y
244# CONFIG_IP_ADVANCED_ROUTER is not set
245CONFIG_IP_FIB_HASH=y
246CONFIG_IP_PNP=y
247# CONFIG_IP_PNP_DHCP is not set
248# CONFIG_IP_PNP_BOOTP is not set
249# CONFIG_IP_PNP_RARP is not set
250# CONFIG_NET_IPIP is not set
251# CONFIG_NET_IPGRE is not set
252# CONFIG_IP_MROUTE is not set
253# CONFIG_ARPD is not set
254# CONFIG_SYN_COOKIES is not set
255# CONFIG_INET_AH is not set
256# CONFIG_INET_ESP is not set
257# CONFIG_INET_IPCOMP is not set
258CONFIG_INET_TUNNEL=m
259CONFIG_INET_DIAG=y
260CONFIG_INET_TCP_DIAG=y
261# CONFIG_TCP_CONG_ADVANCED is not set
262CONFIG_TCP_CONG_BIC=y
263# CONFIG_IPV6 is not set
264# CONFIG_NETFILTER is not set
265
266#
267# DCCP Configuration (EXPERIMENTAL)
268#
269# CONFIG_IP_DCCP is not set
270
271#
272# SCTP Configuration (EXPERIMENTAL)
273#
274# CONFIG_IP_SCTP is not set
275# CONFIG_ATM is not set
276# CONFIG_BRIDGE is not set
277# CONFIG_VLAN_8021Q is not set
278# CONFIG_DECNET is not set
279# CONFIG_LLC2 is not set
280# CONFIG_IPX is not set
281# CONFIG_ATALK is not set
282# CONFIG_X25 is not set
283# CONFIG_LAPB is not set
284# CONFIG_NET_DIVERT is not set
285# CONFIG_ECONET is not set
286# CONFIG_WAN_ROUTER is not set
287CONFIG_NET_SCHED=y
288# CONFIG_NET_SCH_CLK_JIFFIES is not set
289CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
290# CONFIG_NET_SCH_CLK_CPU is not set
291CONFIG_NET_SCH_CBQ=m
292CONFIG_NET_SCH_HTB=m
293CONFIG_NET_SCH_HFSC=m
294CONFIG_NET_SCH_PRIO=m
295CONFIG_NET_SCH_RED=m
296CONFIG_NET_SCH_SFQ=m
297CONFIG_NET_SCH_TEQL=m
298CONFIG_NET_SCH_TBF=m
299CONFIG_NET_SCH_GRED=m
300CONFIG_NET_SCH_DSMARK=m
301CONFIG_NET_SCH_NETEM=m
302CONFIG_NET_SCH_INGRESS=m
303CONFIG_NET_QOS=y
304CONFIG_NET_ESTIMATOR=y
305CONFIG_NET_CLS=y
306CONFIG_NET_CLS_BASIC=m
307CONFIG_NET_CLS_TCINDEX=m
308CONFIG_NET_CLS_ROUTE4=m
309CONFIG_NET_CLS_ROUTE=y
310CONFIG_NET_CLS_FW=m
311CONFIG_NET_CLS_U32=m
312# CONFIG_CLS_U32_PERF is not set
313# CONFIG_NET_CLS_IND is not set
314CONFIG_NET_CLS_RSVP=m
315CONFIG_NET_CLS_RSVP6=m
316# CONFIG_NET_EMATCH is not set
317# CONFIG_NET_CLS_ACT is not set
318CONFIG_NET_CLS_POLICE=y
319
320#
321# Network testing
322#
323# CONFIG_NET_PKTGEN is not set
324# CONFIG_HAMRADIO is not set
325# CONFIG_IRDA is not set
326# CONFIG_BT is not set
327CONFIG_IEEE80211=m
328# CONFIG_IEEE80211_DEBUG is not set
329CONFIG_IEEE80211_CRYPT_WEP=m
330CONFIG_IEEE80211_CRYPT_CCMP=m
331CONFIG_IEEE80211_CRYPT_TKIP=m
332
333#
174# Device Drivers 334# Device Drivers
175# 335#
176 336
@@ -179,7 +339,12 @@ CONFIG_BINFMT_ELF32=y
179# 339#
180CONFIG_STANDALONE=y 340CONFIG_STANDALONE=y
181CONFIG_PREVENT_FIRMWARE_BUILD=y 341CONFIG_PREVENT_FIRMWARE_BUILD=y
182# CONFIG_FW_LOADER is not set 342CONFIG_FW_LOADER=m
343
344#
345# Connector - unified userspace <-> kernelspace linker
346#
347CONFIG_CONNECTOR=m
183 348
184# 349#
185# Memory Technology Devices (MTD) 350# Memory Technology Devices (MTD)
@@ -198,7 +363,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
198# 363#
199# Block devices 364# Block devices
200# 365#
201# CONFIG_BLK_DEV_FD is not set
202# CONFIG_BLK_CPQ_DA is not set 366# CONFIG_BLK_CPQ_DA is not set
203# CONFIG_BLK_CPQ_CISS_DA is not set 367# CONFIG_BLK_CPQ_CISS_DA is not set
204# CONFIG_BLK_DEV_DAC960 is not set 368# CONFIG_BLK_DEV_DAC960 is not set
@@ -210,7 +374,6 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m
210# CONFIG_BLK_DEV_SX8 is not set 374# CONFIG_BLK_DEV_SX8 is not set
211# CONFIG_BLK_DEV_RAM is not set 375# CONFIG_BLK_DEV_RAM is not set
212CONFIG_BLK_DEV_RAM_COUNT=16 376CONFIG_BLK_DEV_RAM_COUNT=16
213CONFIG_INITRAMFS_SOURCE=""
214CONFIG_CDROM_PKTCDVD=m 377CONFIG_CDROM_PKTCDVD=m
215CONFIG_CDROM_PKTCDVD_BUFFERS=8 378CONFIG_CDROM_PKTCDVD_BUFFERS=8
216# CONFIG_CDROM_PKTCDVD_WCACHE is not set 379# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -232,6 +395,7 @@ CONFIG_ATA_OVER_ETH=m
232# 395#
233# SCSI device support 396# SCSI device support
234# 397#
398CONFIG_RAID_ATTRS=m
235CONFIG_SCSI=y 399CONFIG_SCSI=y
236CONFIG_SCSI_PROC_FS=y 400CONFIG_SCSI_PROC_FS=y
237 401
@@ -241,8 +405,10 @@ CONFIG_SCSI_PROC_FS=y
241CONFIG_BLK_DEV_SD=y 405CONFIG_BLK_DEV_SD=y
242CONFIG_CHR_DEV_ST=y 406CONFIG_CHR_DEV_ST=y
243# CONFIG_CHR_DEV_OSST is not set 407# CONFIG_CHR_DEV_OSST is not set
244# CONFIG_BLK_DEV_SR is not set 408CONFIG_BLK_DEV_SR=m
245# CONFIG_CHR_DEV_SG is not set 409CONFIG_BLK_DEV_SR_VENDOR=y
410CONFIG_CHR_DEV_SG=m
411CONFIG_CHR_DEV_SCH=m
246 412
247# 413#
248# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 414# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
@@ -256,7 +422,8 @@ CONFIG_SCSI_LOGGING=y
256# 422#
257CONFIG_SCSI_SPI_ATTRS=y 423CONFIG_SCSI_SPI_ATTRS=y
258# CONFIG_SCSI_FC_ATTRS is not set 424# CONFIG_SCSI_FC_ATTRS is not set
259# CONFIG_SCSI_ISCSI_ATTRS is not set 425CONFIG_SCSI_ISCSI_ATTRS=m
426CONFIG_SCSI_SAS_ATTRS=m
260 427
261# 428#
262# SCSI low-level drivers 429# SCSI low-level drivers
@@ -271,26 +438,24 @@ CONFIG_SCSI_SPI_ATTRS=y
271# CONFIG_MEGARAID_NEWGEN is not set 438# CONFIG_MEGARAID_NEWGEN is not set
272# CONFIG_MEGARAID_LEGACY is not set 439# CONFIG_MEGARAID_LEGACY is not set
273# CONFIG_SCSI_SATA is not set 440# CONFIG_SCSI_SATA is not set
274# CONFIG_SCSI_BUSLOGIC is not set
275# CONFIG_SCSI_DMX3191D is not set 441# CONFIG_SCSI_DMX3191D is not set
276# CONFIG_SCSI_EATA is not set
277# CONFIG_SCSI_EATA_PIO is not set
278# CONFIG_SCSI_FUTURE_DOMAIN is not set 442# CONFIG_SCSI_FUTURE_DOMAIN is not set
279# CONFIG_SCSI_GDTH is not set
280# CONFIG_SCSI_IPS is not set 443# CONFIG_SCSI_IPS is not set
281# CONFIG_SCSI_INITIO is not set 444# CONFIG_SCSI_INITIO is not set
282# CONFIG_SCSI_INIA100 is not set 445# CONFIG_SCSI_INIA100 is not set
283# CONFIG_SCSI_SYM53C8XX_2 is not set 446# CONFIG_SCSI_SYM53C8XX_2 is not set
284# CONFIG_SCSI_IPR is not set 447# CONFIG_SCSI_IPR is not set
285CONFIG_SCSI_QLOGIC_ISP=y
286# CONFIG_SCSI_QLOGIC_FC is not set 448# CONFIG_SCSI_QLOGIC_FC is not set
287# CONFIG_SCSI_QLOGIC_1280 is not set 449CONFIG_SCSI_QLOGIC_1280=y
450CONFIG_SCSI_QLOGIC_1280_1040=y
288CONFIG_SCSI_QLA2XXX=y 451CONFIG_SCSI_QLA2XXX=y
289# CONFIG_SCSI_QLA21XX is not set 452# CONFIG_SCSI_QLA21XX is not set
290# CONFIG_SCSI_QLA22XX is not set 453# CONFIG_SCSI_QLA22XX is not set
291# CONFIG_SCSI_QLA2300 is not set 454# CONFIG_SCSI_QLA2300 is not set
292# CONFIG_SCSI_QLA2322 is not set 455# CONFIG_SCSI_QLA2322 is not set
293# CONFIG_SCSI_QLA6312 is not set 456# CONFIG_SCSI_QLA6312 is not set
457# CONFIG_SCSI_QLA24XX is not set
458# CONFIG_SCSI_LPFC is not set
294# CONFIG_SCSI_DC395x is not set 459# CONFIG_SCSI_DC395x is not set
295# CONFIG_SCSI_DC390T is not set 460# CONFIG_SCSI_DC390T is not set
296# CONFIG_SCSI_DEBUG is not set 461# CONFIG_SCSI_DEBUG is not set
@@ -313,11 +478,15 @@ CONFIG_DM_CRYPT=m
313CONFIG_DM_SNAPSHOT=m 478CONFIG_DM_SNAPSHOT=m
314CONFIG_DM_MIRROR=m 479CONFIG_DM_MIRROR=m
315CONFIG_DM_ZERO=m 480CONFIG_DM_ZERO=m
481CONFIG_DM_MULTIPATH=m
482CONFIG_DM_MULTIPATH_EMC=m
316 483
317# 484#
318# Fusion MPT device support 485# Fusion MPT device support
319# 486#
320# CONFIG_FUSION is not set 487# CONFIG_FUSION is not set
488# CONFIG_FUSION_SPI is not set
489# CONFIG_FUSION_FC is not set
321 490
322# 491#
323# IEEE 1394 (FireWire) support 492# IEEE 1394 (FireWire) support
@@ -330,107 +499,13 @@ CONFIG_DM_ZERO=m
330# CONFIG_I2O is not set 499# CONFIG_I2O is not set
331 500
332# 501#
333# Networking support 502# Network device support
334#
335CONFIG_NET=y
336
337#
338# Networking options
339#
340CONFIG_PACKET=y
341CONFIG_PACKET_MMAP=y
342CONFIG_NETLINK_DEV=y
343CONFIG_UNIX=y
344CONFIG_NET_KEY=y
345CONFIG_INET=y
346CONFIG_IP_MULTICAST=y
347# CONFIG_IP_ADVANCED_ROUTER is not set
348CONFIG_IP_PNP=y
349# CONFIG_IP_PNP_DHCP is not set
350# CONFIG_IP_PNP_BOOTP is not set
351# CONFIG_IP_PNP_RARP is not set
352# CONFIG_NET_IPIP is not set
353# CONFIG_NET_IPGRE is not set
354# CONFIG_IP_MROUTE is not set
355# CONFIG_ARPD is not set
356# CONFIG_SYN_COOKIES is not set
357# CONFIG_INET_AH is not set
358# CONFIG_INET_ESP is not set
359# CONFIG_INET_IPCOMP is not set
360CONFIG_INET_TUNNEL=m
361CONFIG_IP_TCPDIAG=m
362# CONFIG_IP_TCPDIAG_IPV6 is not set
363# CONFIG_IPV6 is not set
364# CONFIG_NETFILTER is not set
365CONFIG_XFRM=y
366CONFIG_XFRM_USER=m
367
368#
369# SCTP Configuration (EXPERIMENTAL)
370#
371# CONFIG_IP_SCTP is not set
372# CONFIG_ATM is not set
373# CONFIG_BRIDGE is not set
374# CONFIG_VLAN_8021Q is not set
375# CONFIG_DECNET is not set
376# CONFIG_LLC2 is not set
377# CONFIG_IPX is not set
378# CONFIG_ATALK is not set
379# CONFIG_X25 is not set
380# CONFIG_LAPB is not set
381# CONFIG_NET_DIVERT is not set
382# CONFIG_ECONET is not set
383# CONFIG_WAN_ROUTER is not set
384
385#
386# QoS and/or fair queueing
387#
388CONFIG_NET_SCHED=y
389# CONFIG_NET_SCH_CLK_JIFFIES is not set
390CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
391# CONFIG_NET_SCH_CLK_CPU is not set
392CONFIG_NET_SCH_CBQ=m
393CONFIG_NET_SCH_HTB=m
394CONFIG_NET_SCH_HFSC=m
395CONFIG_NET_SCH_PRIO=m
396CONFIG_NET_SCH_RED=m
397CONFIG_NET_SCH_SFQ=m
398CONFIG_NET_SCH_TEQL=m
399CONFIG_NET_SCH_TBF=m
400CONFIG_NET_SCH_GRED=m
401CONFIG_NET_SCH_DSMARK=m
402CONFIG_NET_SCH_NETEM=m
403CONFIG_NET_SCH_INGRESS=m
404CONFIG_NET_QOS=y
405CONFIG_NET_ESTIMATOR=y
406CONFIG_NET_CLS=y
407CONFIG_NET_CLS_TCINDEX=m
408CONFIG_NET_CLS_ROUTE4=m
409CONFIG_NET_CLS_ROUTE=y
410CONFIG_NET_CLS_FW=m
411CONFIG_NET_CLS_U32=m
412# CONFIG_CLS_U32_PERF is not set
413# CONFIG_NET_CLS_IND is not set
414CONFIG_NET_CLS_RSVP=m
415CONFIG_NET_CLS_RSVP6=m
416# CONFIG_NET_CLS_ACT is not set
417CONFIG_NET_CLS_POLICE=y
418
419#
420# Network testing
421# 503#
422# CONFIG_NET_PKTGEN is not set
423# CONFIG_NETPOLL is not set
424# CONFIG_NET_POLL_CONTROLLER is not set
425# CONFIG_HAMRADIO is not set
426# CONFIG_IRDA is not set
427# CONFIG_BT is not set
428CONFIG_NETDEVICES=y 504CONFIG_NETDEVICES=y
429# CONFIG_DUMMY is not set 505# CONFIG_DUMMY is not set
430# CONFIG_BONDING is not set 506# CONFIG_BONDING is not set
431# CONFIG_EQUALIZER is not set 507# CONFIG_EQUALIZER is not set
432# CONFIG_TUN is not set 508# CONFIG_TUN is not set
433# CONFIG_ETHERTAP is not set
434 509
435# 510#
436# ARCnet devices 511# ARCnet devices
@@ -438,13 +513,25 @@ CONFIG_NETDEVICES=y
438# CONFIG_ARCNET is not set 513# CONFIG_ARCNET is not set
439 514
440# 515#
516# PHY device support
517#
518CONFIG_PHYLIB=m
519CONFIG_PHYCONTROL=y
520
521#
522# MII PHY device drivers
523#
524CONFIG_MARVELL_PHY=m
525CONFIG_DAVICOM_PHY=m
526CONFIG_QSEMI_PHY=m
527CONFIG_LXT_PHY=m
528CONFIG_CICADA_PHY=m
529
530#
441# Ethernet (10 or 100Mbit) 531# Ethernet (10 or 100Mbit)
442# 532#
443CONFIG_NET_ETHERNET=y 533CONFIG_NET_ETHERNET=y
444CONFIG_MII=y 534CONFIG_MII=y
445CONFIG_SGI_IOC3_ETH=y
446CONFIG_SGI_IOC3_ETH_HW_RX_CSUM=y
447CONFIG_SGI_IOC3_ETH_HW_TX_CSUM=y
448# CONFIG_HAPPYMEAL is not set 535# CONFIG_HAPPYMEAL is not set
449# CONFIG_SUNGEM is not set 536# CONFIG_SUNGEM is not set
450# CONFIG_NET_VENDOR_3COM is not set 537# CONFIG_NET_VENDOR_3COM is not set
@@ -466,12 +553,16 @@ CONFIG_SGI_IOC3_ETH_HW_TX_CSUM=y
466# CONFIG_HAMACHI is not set 553# CONFIG_HAMACHI is not set
467# CONFIG_YELLOWFIN is not set 554# CONFIG_YELLOWFIN is not set
468# CONFIG_R8169 is not set 555# CONFIG_R8169 is not set
556# CONFIG_SIS190 is not set
557# CONFIG_SKGE is not set
469# CONFIG_SK98LIN is not set 558# CONFIG_SK98LIN is not set
470# CONFIG_TIGON3 is not set 559# CONFIG_TIGON3 is not set
560# CONFIG_BNX2 is not set
471 561
472# 562#
473# Ethernet (10000 Mbit) 563# Ethernet (10000 Mbit)
474# 564#
565# CONFIG_CHELSIO_T1 is not set
475# CONFIG_IXGB is not set 566# CONFIG_IXGB is not set
476# CONFIG_S2IO is not set 567# CONFIG_S2IO is not set
477 568
@@ -484,6 +575,8 @@ CONFIG_SGI_IOC3_ETH_HW_TX_CSUM=y
484# Wireless LAN (non-hamradio) 575# Wireless LAN (non-hamradio)
485# 576#
486# CONFIG_NET_RADIO is not set 577# CONFIG_NET_RADIO is not set
578# CONFIG_IPW_DEBUG is not set
579CONFIG_IPW2200=m
487 580
488# 581#
489# Wan interfaces 582# Wan interfaces
@@ -496,6 +589,8 @@ CONFIG_SGI_IOC3_ETH_HW_TX_CSUM=y
496# CONFIG_NET_FC is not set 589# CONFIG_NET_FC is not set
497# CONFIG_SHAPER is not set 590# CONFIG_SHAPER is not set
498# CONFIG_NETCONSOLE is not set 591# CONFIG_NETCONSOLE is not set
592# CONFIG_NETPOLL is not set
593# CONFIG_NET_POLL_CONTROLLER is not set
499 594
500# 595#
501# ISDN subsystem 596# ISDN subsystem
@@ -513,25 +608,15 @@ CONFIG_SGI_IOC3_ETH_HW_TX_CSUM=y
513# CONFIG_INPUT is not set 608# CONFIG_INPUT is not set
514 609
515# 610#
516# Userland interfaces 611# Hardware I/O ports
517#
518
519#
520# Input I/O drivers
521# 612#
522# CONFIG_GAMEPORT is not set
523CONFIG_SOUND_GAMEPORT=y
524CONFIG_SERIO=y 613CONFIG_SERIO=y
525# CONFIG_SERIO_I8042 is not set 614# CONFIG_SERIO_I8042 is not set
526CONFIG_SERIO_SERPORT=y 615CONFIG_SERIO_SERPORT=y
527# CONFIG_SERIO_CT82C710 is not set
528# CONFIG_SERIO_PCIPS2 is not set 616# CONFIG_SERIO_PCIPS2 is not set
529# CONFIG_SERIO_LIBPS2 is not set 617CONFIG_SERIO_LIBPS2=m
530CONFIG_SERIO_RAW=m 618CONFIG_SERIO_RAW=m
531 619# CONFIG_GAMEPORT is not set
532#
533# Input Device Drivers
534#
535 620
536# 621#
537# Character devices 622# Character devices
@@ -549,7 +634,6 @@ CONFIG_SERIAL_8250_EXTENDED=y
549CONFIG_SERIAL_8250_MANY_PORTS=y 634CONFIG_SERIAL_8250_MANY_PORTS=y
550CONFIG_SERIAL_8250_SHARE_IRQ=y 635CONFIG_SERIAL_8250_SHARE_IRQ=y
551# CONFIG_SERIAL_8250_DETECT_IRQ is not set 636# CONFIG_SERIAL_8250_DETECT_IRQ is not set
552# CONFIG_SERIAL_8250_MULTIPORT is not set
553# CONFIG_SERIAL_8250_RSA is not set 637# CONFIG_SERIAL_8250_RSA is not set
554 638
555# 639#
@@ -557,6 +641,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
557# 641#
558CONFIG_SERIAL_CORE=y 642CONFIG_SERIAL_CORE=y
559CONFIG_SERIAL_CORE_CONSOLE=y 643CONFIG_SERIAL_CORE_CONSOLE=y
644# CONFIG_SERIAL_JSM is not set
560CONFIG_UNIX98_PTYS=y 645CONFIG_UNIX98_PTYS=y
561CONFIG_LEGACY_PTYS=y 646CONFIG_LEGACY_PTYS=y
562CONFIG_LEGACY_PTY_COUNT=256 647CONFIG_LEGACY_PTY_COUNT=256
@@ -584,6 +669,11 @@ CONFIG_SGI_IP27_RTC=y
584# CONFIG_RAW_DRIVER is not set 669# CONFIG_RAW_DRIVER is not set
585 670
586# 671#
672# TPM devices
673#
674# CONFIG_TCG_TPM is not set
675
676#
587# I2C support 677# I2C support
588# 678#
589# CONFIG_I2C is not set 679# CONFIG_I2C is not set
@@ -594,10 +684,20 @@ CONFIG_SGI_IP27_RTC=y
594# CONFIG_W1 is not set 684# CONFIG_W1 is not set
595 685
596# 686#
687# Hardware Monitoring support
688#
689# CONFIG_HWMON is not set
690# CONFIG_HWMON_VID is not set
691
692#
597# Misc devices 693# Misc devices
598# 694#
599 695
600# 696#
697# Multimedia Capabilities Port drivers
698#
699
700#
601# Multimedia devices 701# Multimedia devices
602# 702#
603# CONFIG_VIDEO_DEV is not set 703# CONFIG_VIDEO_DEV is not set
@@ -611,7 +711,6 @@ CONFIG_SGI_IP27_RTC=y
611# Graphics support 711# Graphics support
612# 712#
613# CONFIG_FB is not set 713# CONFIG_FB is not set
614# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
615 714
616# 715#
617# Sound 716# Sound
@@ -621,13 +720,9 @@ CONFIG_SGI_IP27_RTC=y
621# 720#
622# USB support 721# USB support
623# 722#
624# CONFIG_USB is not set
625CONFIG_USB_ARCH_HAS_HCD=y 723CONFIG_USB_ARCH_HAS_HCD=y
626CONFIG_USB_ARCH_HAS_OHCI=y 724CONFIG_USB_ARCH_HAS_OHCI=y
627 725# CONFIG_USB is not set
628#
629# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
630#
631 726
632# 727#
633# USB Gadget Support 728# USB Gadget Support
@@ -645,12 +740,17 @@ CONFIG_USB_ARCH_HAS_OHCI=y
645# CONFIG_INFINIBAND is not set 740# CONFIG_INFINIBAND is not set
646 741
647# 742#
743# SN Devices
744#
745
746#
648# File systems 747# File systems
649# 748#
650CONFIG_EXT2_FS=y 749CONFIG_EXT2_FS=y
651CONFIG_EXT2_FS_XATTR=y 750CONFIG_EXT2_FS_XATTR=y
652CONFIG_EXT2_FS_POSIX_ACL=y 751CONFIG_EXT2_FS_POSIX_ACL=y
653CONFIG_EXT2_FS_SECURITY=y 752CONFIG_EXT2_FS_SECURITY=y
753# CONFIG_EXT2_FS_XIP is not set
654CONFIG_EXT3_FS=y 754CONFIG_EXT3_FS=y
655CONFIG_EXT3_FS_XATTR=y 755CONFIG_EXT3_FS_XATTR=y
656CONFIG_EXT3_FS_POSIX_ACL=y 756CONFIG_EXT3_FS_POSIX_ACL=y
@@ -662,17 +762,19 @@ CONFIG_FS_MBCACHE=y
662# CONFIG_JFS_FS is not set 762# CONFIG_JFS_FS is not set
663CONFIG_FS_POSIX_ACL=y 763CONFIG_FS_POSIX_ACL=y
664CONFIG_XFS_FS=m 764CONFIG_XFS_FS=m
665# CONFIG_XFS_RT is not set 765CONFIG_XFS_QUOTA=m
666CONFIG_XFS_QUOTA=y
667CONFIG_XFS_SECURITY=y 766CONFIG_XFS_SECURITY=y
668CONFIG_XFS_POSIX_ACL=y 767CONFIG_XFS_POSIX_ACL=y
768# CONFIG_XFS_RT is not set
669# CONFIG_MINIX_FS is not set 769# CONFIG_MINIX_FS is not set
670# CONFIG_ROMFS_FS is not set 770# CONFIG_ROMFS_FS is not set
771CONFIG_INOTIFY=y
671# CONFIG_QUOTA is not set 772# CONFIG_QUOTA is not set
672CONFIG_QUOTACTL=y 773CONFIG_QUOTACTL=y
673CONFIG_DNOTIFY=y 774CONFIG_DNOTIFY=y
674CONFIG_AUTOFS_FS=m 775CONFIG_AUTOFS_FS=m
675# CONFIG_AUTOFS4_FS is not set 776# CONFIG_AUTOFS4_FS is not set
777CONFIG_FUSE_FS=m
676 778
677# 779#
678# CD-ROM/DVD Filesystems 780# CD-ROM/DVD Filesystems
@@ -693,12 +795,10 @@ CONFIG_AUTOFS_FS=m
693CONFIG_PROC_FS=y 795CONFIG_PROC_FS=y
694CONFIG_PROC_KCORE=y 796CONFIG_PROC_KCORE=y
695CONFIG_SYSFS=y 797CONFIG_SYSFS=y
696# CONFIG_DEVFS_FS is not set
697CONFIG_DEVPTS_FS_XATTR=y
698CONFIG_DEVPTS_FS_SECURITY=y
699# CONFIG_TMPFS is not set 798# CONFIG_TMPFS is not set
700# CONFIG_HUGETLB_PAGE is not set 799# CONFIG_HUGETLB_PAGE is not set
701CONFIG_RAMFS=y 800CONFIG_RAMFS=y
801CONFIG_RELAYFS_FS=m
702 802
703# 803#
704# Miscellaneous filesystems 804# Miscellaneous filesystems
@@ -722,13 +822,14 @@ CONFIG_RAMFS=y
722# 822#
723CONFIG_NFS_FS=y 823CONFIG_NFS_FS=y
724CONFIG_NFS_V3=y 824CONFIG_NFS_V3=y
825# CONFIG_NFS_V3_ACL is not set
725# CONFIG_NFS_V4 is not set 826# CONFIG_NFS_V4 is not set
726# CONFIG_NFS_DIRECTIO is not set 827# CONFIG_NFS_DIRECTIO is not set
727# CONFIG_NFSD is not set 828# CONFIG_NFSD is not set
728# CONFIG_ROOT_NFS is not set 829# CONFIG_ROOT_NFS is not set
729CONFIG_LOCKD=y 830CONFIG_LOCKD=y
730CONFIG_LOCKD_V4=y 831CONFIG_LOCKD_V4=y
731# CONFIG_EXPORTFS is not set 832CONFIG_NFS_COMMON=y
732CONFIG_SUNRPC=y 833CONFIG_SUNRPC=y
733CONFIG_SUNRPC_GSS=y 834CONFIG_SUNRPC_GSS=y
734CONFIG_RPCSEC_GSS_KRB5=y 835CONFIG_RPCSEC_GSS_KRB5=y
@@ -738,6 +839,7 @@ CONFIG_RPCSEC_GSS_KRB5=y
738# CONFIG_NCP_FS is not set 839# CONFIG_NCP_FS is not set
739# CONFIG_CODA_FS is not set 840# CONFIG_CODA_FS is not set
740# CONFIG_AFS_FS is not set 841# CONFIG_AFS_FS is not set
842# CONFIG_9P_FS is not set
741 843
742# 844#
743# Partition Types 845# Partition Types
@@ -772,7 +874,9 @@ CONFIG_SGI_PARTITION=y
772# 874#
773# Kernel hacking 875# Kernel hacking
774# 876#
877# CONFIG_PRINTK_TIME is not set
775# CONFIG_DEBUG_KERNEL is not set 878# CONFIG_DEBUG_KERNEL is not set
879CONFIG_LOG_BUF_SHIFT=15
776CONFIG_CROSSCOMPILE=y 880CONFIG_CROSSCOMPILE=y
777CONFIG_CMDLINE="" 881CONFIG_CMDLINE=""
778 882
@@ -788,28 +892,29 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
788# 892#
789CONFIG_CRYPTO=y 893CONFIG_CRYPTO=y
790CONFIG_CRYPTO_HMAC=y 894CONFIG_CRYPTO_HMAC=y
791CONFIG_CRYPTO_NULL=y 895CONFIG_CRYPTO_NULL=m
792CONFIG_CRYPTO_MD4=y 896CONFIG_CRYPTO_MD4=m
793CONFIG_CRYPTO_MD5=y 897CONFIG_CRYPTO_MD5=y
794CONFIG_CRYPTO_SHA1=y 898CONFIG_CRYPTO_SHA1=m
795CONFIG_CRYPTO_SHA256=y 899CONFIG_CRYPTO_SHA256=m
796CONFIG_CRYPTO_SHA512=y 900CONFIG_CRYPTO_SHA512=m
797CONFIG_CRYPTO_WP512=m 901CONFIG_CRYPTO_WP512=m
902CONFIG_CRYPTO_TGR192=m
798CONFIG_CRYPTO_DES=y 903CONFIG_CRYPTO_DES=y
799CONFIG_CRYPTO_BLOWFISH=y 904CONFIG_CRYPTO_BLOWFISH=m
800CONFIG_CRYPTO_TWOFISH=y 905CONFIG_CRYPTO_TWOFISH=m
801CONFIG_CRYPTO_SERPENT=y 906CONFIG_CRYPTO_SERPENT=m
802CONFIG_CRYPTO_AES=m 907CONFIG_CRYPTO_AES=m
803CONFIG_CRYPTO_CAST5=y 908CONFIG_CRYPTO_CAST5=m
804CONFIG_CRYPTO_CAST6=y 909CONFIG_CRYPTO_CAST6=m
805CONFIG_CRYPTO_TEA=m 910CONFIG_CRYPTO_TEA=m
806CONFIG_CRYPTO_ARC4=y 911CONFIG_CRYPTO_ARC4=m
807CONFIG_CRYPTO_KHAZAD=m 912CONFIG_CRYPTO_KHAZAD=m
808CONFIG_CRYPTO_ANUBIS=m 913CONFIG_CRYPTO_ANUBIS=m
809CONFIG_CRYPTO_DEFLATE=y 914CONFIG_CRYPTO_DEFLATE=m
810CONFIG_CRYPTO_MICHAEL_MIC=y 915CONFIG_CRYPTO_MICHAEL_MIC=m
811CONFIG_CRYPTO_CRC32C=m 916CONFIG_CRYPTO_CRC32C=m
812CONFIG_CRYPTO_TEST=m 917# CONFIG_CRYPTO_TEST is not set
813 918
814# 919#
815# Hardware crypto devices 920# Hardware crypto devices
@@ -819,9 +924,8 @@ CONFIG_CRYPTO_TEST=m
819# Library routines 924# Library routines
820# 925#
821# CONFIG_CRC_CCITT is not set 926# CONFIG_CRC_CCITT is not set
927CONFIG_CRC16=m
822CONFIG_CRC32=y 928CONFIG_CRC32=y
823CONFIG_LIBCRC32C=m 929CONFIG_LIBCRC32C=m
824CONFIG_ZLIB_INFLATE=y 930CONFIG_ZLIB_INFLATE=m
825CONFIG_ZLIB_DEFLATE=y 931CONFIG_ZLIB_DEFLATE=m
826CONFIG_GENERIC_HARDIRQS=y
827CONFIG_GENERIC_IRQ_PROBE=y
diff --git a/arch/mips/configs/ip32_defconfig b/arch/mips/configs/ip32_defconfig
index b26e1173365d..bf8fb95b21dc 100644
--- a/arch/mips/configs/ip32_defconfig
+++ b/arch/mips/configs/ip32_defconfig
@@ -1,11 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:04 2005 4# Thu Oct 20 22:26:07 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7CONFIG_64BIT=y
8CONFIG_64BIT=y
9 7
10# 8#
11# Code maturity level options 9# Code maturity level options
@@ -13,11 +11,13 @@ CONFIG_64BIT=y
13CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
14CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
15CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
16 15
17# 16#
18# General setup 17# General setup
19# 18#
20CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
21CONFIG_SWAP=y 21CONFIG_SWAP=y
22CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
23# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
@@ -25,13 +25,16 @@ CONFIG_BSD_PROCESS_ACCT=y
25# CONFIG_BSD_PROCESS_ACCT_V3 is not set 25# CONFIG_BSD_PROCESS_ACCT_V3 is not set
26CONFIG_SYSCTL=y 26CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 27# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14 28CONFIG_HOTPLUG=y
29# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 29CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 30# CONFIG_IKCONFIG is not set
31CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 32CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 33CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 34# CONFIG_KALLSYMS_EXTRA_PASS is not set
35CONFIG_PRINTK=y
36CONFIG_BUG=y
37CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 38CONFIG_FUTEX=y
36CONFIG_EPOLL=y 39CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 40# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +44,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 44CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 45CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 46# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0
44 48
45# 49#
46# Loadable module support 50# Loadable module support
@@ -50,42 +54,71 @@ CONFIG_CC_ALIGN_JUMPS=0
50# 54#
51# Machine selection 55# Machine selection
52# 56#
53# CONFIG_MACH_JAZZ is not set 57# CONFIG_MIPS_MTX1 is not set
54# CONFIG_MACH_VR41XX is not set 58# CONFIG_MIPS_BOSPORUS is not set
59# CONFIG_MIPS_PB1000 is not set
60# CONFIG_MIPS_PB1100 is not set
61# CONFIG_MIPS_PB1500 is not set
62# CONFIG_MIPS_PB1550 is not set
63# CONFIG_MIPS_PB1200 is not set
64# CONFIG_MIPS_DB1000 is not set
65# CONFIG_MIPS_DB1100 is not set
66# CONFIG_MIPS_DB1500 is not set
67# CONFIG_MIPS_DB1550 is not set
68# CONFIG_MIPS_DB1200 is not set
69# CONFIG_MIPS_MIRAGE is not set
55# CONFIG_MIPS_COBALT is not set 70# CONFIG_MIPS_COBALT is not set
56# CONFIG_MACH_DECSTATION is not set 71# CONFIG_MACH_DECSTATION is not set
57# CONFIG_MIPS_EV64120 is not set 72# CONFIG_MIPS_EV64120 is not set
58# CONFIG_MIPS_EV96100 is not set 73# CONFIG_MIPS_EV96100 is not set
59# CONFIG_MIPS_IVR is not set 74# CONFIG_MIPS_IVR is not set
60# CONFIG_LASAT is not set
61# CONFIG_MIPS_ITE8172 is not set 75# CONFIG_MIPS_ITE8172 is not set
76# CONFIG_MACH_JAZZ is not set
77# CONFIG_LASAT is not set
62# CONFIG_MIPS_ATLAS is not set 78# CONFIG_MIPS_ATLAS is not set
63# CONFIG_MIPS_MALTA is not set 79# CONFIG_MIPS_MALTA is not set
64# CONFIG_MIPS_SEAD is not set 80# CONFIG_MIPS_SEAD is not set
81# CONFIG_MIPS_SIM is not set
82# CONFIG_MOMENCO_JAGUAR_ATX is not set
65# CONFIG_MOMENCO_OCELOT is not set 83# CONFIG_MOMENCO_OCELOT is not set
66# CONFIG_MOMENCO_OCELOT_G is not set
67# CONFIG_MOMENCO_OCELOT_C is not set
68# CONFIG_MOMENCO_OCELOT_3 is not set 84# CONFIG_MOMENCO_OCELOT_3 is not set
69# CONFIG_MOMENCO_JAGUAR_ATX is not set 85# CONFIG_MOMENCO_OCELOT_C is not set
70# CONFIG_PMC_YOSEMITE is not set 86# CONFIG_MOMENCO_OCELOT_G is not set
87# CONFIG_MIPS_XXS1500 is not set
88# CONFIG_PNX8550_V2PCI is not set
89# CONFIG_PNX8550_JBS is not set
71# CONFIG_DDB5074 is not set 90# CONFIG_DDB5074 is not set
72# CONFIG_DDB5476 is not set 91# CONFIG_DDB5476 is not set
73# CONFIG_DDB5477 is not set 92# CONFIG_DDB5477 is not set
74# CONFIG_NEC_OSPREY is not set 93# CONFIG_MACH_VR41XX is not set
94# CONFIG_PMC_YOSEMITE is not set
95# CONFIG_QEMU is not set
75# CONFIG_SGI_IP22 is not set 96# CONFIG_SGI_IP22 is not set
76# CONFIG_SGI_IP27 is not set 97# CONFIG_SGI_IP27 is not set
77CONFIG_SGI_IP32=y 98CONFIG_SGI_IP32=y
78# CONFIG_SIBYTE_SB1xxx_SOC is not set 99# CONFIG_SIBYTE_BIGSUR is not set
100# CONFIG_SIBYTE_SWARM is not set
101# CONFIG_SIBYTE_SENTOSA is not set
102# CONFIG_SIBYTE_RHONE is not set
103# CONFIG_SIBYTE_CARMEL is not set
104# CONFIG_SIBYTE_PTSWARM is not set
105# CONFIG_SIBYTE_LITTLESUR is not set
106# CONFIG_SIBYTE_CRHINE is not set
107# CONFIG_SIBYTE_CRHONE is not set
79# CONFIG_SNI_RM200_PCI is not set 108# CONFIG_SNI_RM200_PCI is not set
109# CONFIG_TOSHIBA_JMR3927 is not set
110# CONFIG_TOSHIBA_RBTX4927 is not set
111# CONFIG_TOSHIBA_RBTX4938 is not set
80CONFIG_RWSEM_GENERIC_SPINLOCK=y 112CONFIG_RWSEM_GENERIC_SPINLOCK=y
81CONFIG_GENERIC_CALIBRATE_DELAY=y 113CONFIG_GENERIC_CALIBRATE_DELAY=y
82CONFIG_HAVE_DEC_LOCK=y
83CONFIG_ARC=y 114CONFIG_ARC=y
84CONFIG_DMA_IP32=y 115CONFIG_DMA_IP32=y
85CONFIG_OWN_DMA=y
86CONFIG_DMA_NONCOHERENT=y 116CONFIG_DMA_NONCOHERENT=y
87CONFIG_DMA_NEED_PCI_MAP_STATE=y 117CONFIG_DMA_NEED_PCI_MAP_STATE=y
118CONFIG_OWN_DMA=y
119CONFIG_CPU_BIG_ENDIAN=y
88# CONFIG_CPU_LITTLE_ENDIAN is not set 120# CONFIG_CPU_LITTLE_ENDIAN is not set
121CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
89CONFIG_ARC32=y 122CONFIG_ARC32=y
90CONFIG_BOOT_ELF32=y 123CONFIG_BOOT_ELF32=y
91CONFIG_MIPS_L1_CACHE_SHIFT=5 124CONFIG_MIPS_L1_CACHE_SHIFT=5
@@ -95,8 +128,10 @@ CONFIG_ARC_PROMLIB=y
95# 128#
96# CPU selection 129# CPU selection
97# 130#
98# CONFIG_CPU_MIPS32 is not set 131# CONFIG_CPU_MIPS32_R1 is not set
99# CONFIG_CPU_MIPS64 is not set 132# CONFIG_CPU_MIPS32_R2 is not set
133# CONFIG_CPU_MIPS64_R1 is not set
134# CONFIG_CPU_MIPS64_R2 is not set
100# CONFIG_CPU_R3000 is not set 135# CONFIG_CPU_R3000 is not set
101# CONFIG_CPU_TX39XX is not set 136# CONFIG_CPU_TX39XX is not set
102# CONFIG_CPU_VR41XX is not set 137# CONFIG_CPU_VR41XX is not set
@@ -112,6 +147,17 @@ CONFIG_CPU_R5000=y
112# CONFIG_CPU_RM7000 is not set 147# CONFIG_CPU_RM7000 is not set
113# CONFIG_CPU_RM9000 is not set 148# CONFIG_CPU_RM9000 is not set
114# CONFIG_CPU_SB1 is not set 149# CONFIG_CPU_SB1 is not set
150CONFIG_SYS_HAS_CPU_R5000=y
151CONFIG_SYS_HAS_CPU_RM7000=y
152CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
153CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
154CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
155
156#
157# Kernel type
158#
159# CONFIG_32BIT is not set
160CONFIG_64BIT=y
115CONFIG_PAGE_SIZE_4KB=y 161CONFIG_PAGE_SIZE_4KB=y
116# CONFIG_PAGE_SIZE_8KB is not set 162# CONFIG_PAGE_SIZE_8KB is not set
117# CONFIG_PAGE_SIZE_16KB is not set 163# CONFIG_PAGE_SIZE_16KB is not set
@@ -119,9 +165,22 @@ CONFIG_PAGE_SIZE_4KB=y
119CONFIG_BOARD_SCACHE=y 165CONFIG_BOARD_SCACHE=y
120CONFIG_R5000_CPU_SCACHE=y 166CONFIG_R5000_CPU_SCACHE=y
121CONFIG_RM7000_CPU_SCACHE=y 167CONFIG_RM7000_CPU_SCACHE=y
168# CONFIG_MIPS_MT is not set
122CONFIG_CPU_HAS_LLSC=y 169CONFIG_CPU_HAS_LLSC=y
123CONFIG_CPU_HAS_LLDSCD=y 170CONFIG_CPU_HAS_LLDSCD=y
124CONFIG_CPU_HAS_SYNC=y 171CONFIG_CPU_HAS_SYNC=y
172CONFIG_GENERIC_HARDIRQS=y
173CONFIG_GENERIC_IRQ_PROBE=y
174CONFIG_ARCH_FLATMEM_ENABLE=y
175CONFIG_SELECT_MEMORY_MODEL=y
176CONFIG_FLATMEM_MANUAL=y
177# CONFIG_DISCONTIGMEM_MANUAL is not set
178# CONFIG_SPARSEMEM_MANUAL is not set
179CONFIG_FLATMEM=y
180CONFIG_FLAT_NODE_MEM_MAP=y
181# CONFIG_SPARSEMEM_STATIC is not set
182# CONFIG_PREEMPT_NONE is not set
183CONFIG_PREEMPT_VOLUNTARY=y
125# CONFIG_PREEMPT is not set 184# CONFIG_PREEMPT is not set
126 185
127# 186#
@@ -130,7 +189,6 @@ CONFIG_CPU_HAS_SYNC=y
130CONFIG_HW_HAS_PCI=y 189CONFIG_HW_HAS_PCI=y
131CONFIG_PCI=y 190CONFIG_PCI=y
132CONFIG_PCI_LEGACY_PROC=y 191CONFIG_PCI_LEGACY_PROC=y
133CONFIG_PCI_NAMES=y
134CONFIG_MMU=y 192CONFIG_MMU=y
135 193
136# 194#
@@ -139,10 +197,6 @@ CONFIG_MMU=y
139# CONFIG_PCCARD is not set 197# CONFIG_PCCARD is not set
140 198
141# 199#
142# PC-card bridges
143#
144
145#
146# PCI Hotplug Support 200# PCI Hotplug Support
147# 201#
148# CONFIG_HOTPLUG_PCI is not set 202# CONFIG_HOTPLUG_PCI is not set
@@ -160,6 +214,80 @@ CONFIG_MIPS32_O32=y
160CONFIG_BINFMT_ELF32=y 214CONFIG_BINFMT_ELF32=y
161 215
162# 216#
217# Networking
218#
219CONFIG_NET=y
220
221#
222# Networking options
223#
224CONFIG_PACKET=y
225CONFIG_PACKET_MMAP=y
226CONFIG_UNIX=y
227CONFIG_XFRM=y
228CONFIG_XFRM_USER=y
229CONFIG_NET_KEY=y
230CONFIG_INET=y
231# CONFIG_IP_MULTICAST is not set
232# CONFIG_IP_ADVANCED_ROUTER is not set
233CONFIG_IP_FIB_HASH=y
234CONFIG_IP_PNP=y
235# CONFIG_IP_PNP_DHCP is not set
236CONFIG_IP_PNP_BOOTP=y
237# CONFIG_IP_PNP_RARP is not set
238# CONFIG_NET_IPIP is not set
239# CONFIG_NET_IPGRE is not set
240# CONFIG_ARPD is not set
241# CONFIG_SYN_COOKIES is not set
242# CONFIG_INET_AH is not set
243# CONFIG_INET_ESP is not set
244# CONFIG_INET_IPCOMP is not set
245CONFIG_INET_TUNNEL=y
246CONFIG_INET_DIAG=y
247CONFIG_INET_TCP_DIAG=y
248# CONFIG_TCP_CONG_ADVANCED is not set
249CONFIG_TCP_CONG_BIC=y
250# CONFIG_IPV6 is not set
251# CONFIG_NETFILTER is not set
252
253#
254# DCCP Configuration (EXPERIMENTAL)
255#
256# CONFIG_IP_DCCP is not set
257
258#
259# SCTP Configuration (EXPERIMENTAL)
260#
261# CONFIG_IP_SCTP is not set
262# CONFIG_ATM is not set
263# CONFIG_BRIDGE is not set
264# CONFIG_VLAN_8021Q is not set
265# CONFIG_DECNET is not set
266# CONFIG_LLC2 is not set
267# CONFIG_IPX is not set
268# CONFIG_ATALK is not set
269# CONFIG_X25 is not set
270# CONFIG_LAPB is not set
271# CONFIG_NET_DIVERT is not set
272# CONFIG_ECONET is not set
273# CONFIG_WAN_ROUTER is not set
274# CONFIG_NET_SCHED is not set
275# CONFIG_NET_CLS_ROUTE is not set
276
277#
278# Network testing
279#
280# CONFIG_NET_PKTGEN is not set
281# CONFIG_HAMRADIO is not set
282# CONFIG_IRDA is not set
283# CONFIG_BT is not set
284CONFIG_IEEE80211=y
285# CONFIG_IEEE80211_DEBUG is not set
286CONFIG_IEEE80211_CRYPT_WEP=y
287CONFIG_IEEE80211_CRYPT_CCMP=y
288CONFIG_IEEE80211_CRYPT_TKIP=y
289
290#
163# Device Drivers 291# Device Drivers
164# 292#
165 293
@@ -168,7 +296,12 @@ CONFIG_BINFMT_ELF32=y
168# 296#
169CONFIG_STANDALONE=y 297CONFIG_STANDALONE=y
170CONFIG_PREVENT_FIRMWARE_BUILD=y 298CONFIG_PREVENT_FIRMWARE_BUILD=y
171# CONFIG_FW_LOADER is not set 299CONFIG_FW_LOADER=y
300
301#
302# Connector - unified userspace <-> kernelspace linker
303#
304CONFIG_CONNECTOR=y
172 305
173# 306#
174# Memory Technology Devices (MTD) 307# Memory Technology Devices (MTD)
@@ -187,7 +320,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
187# 320#
188# Block devices 321# Block devices
189# 322#
190# CONFIG_BLK_DEV_FD is not set
191# CONFIG_BLK_CPQ_DA is not set 323# CONFIG_BLK_CPQ_DA is not set
192# CONFIG_BLK_CPQ_CISS_DA is not set 324# CONFIG_BLK_CPQ_CISS_DA is not set
193# CONFIG_BLK_DEV_DAC960 is not set 325# CONFIG_BLK_DEV_DAC960 is not set
@@ -199,7 +331,6 @@ CONFIG_BLK_DEV_LOOP=y
199# CONFIG_BLK_DEV_SX8 is not set 331# CONFIG_BLK_DEV_SX8 is not set
200# CONFIG_BLK_DEV_RAM is not set 332# CONFIG_BLK_DEV_RAM is not set
201CONFIG_BLK_DEV_RAM_COUNT=16 333CONFIG_BLK_DEV_RAM_COUNT=16
202CONFIG_INITRAMFS_SOURCE=""
203CONFIG_CDROM_PKTCDVD=y 334CONFIG_CDROM_PKTCDVD=y
204CONFIG_CDROM_PKTCDVD_BUFFERS=8 335CONFIG_CDROM_PKTCDVD_BUFFERS=8
205# CONFIG_CDROM_PKTCDVD_WCACHE is not set 336# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -221,6 +352,7 @@ CONFIG_ATA_OVER_ETH=y
221# 352#
222# SCSI device support 353# SCSI device support
223# 354#
355CONFIG_RAID_ATTRS=y
224CONFIG_SCSI=y 356CONFIG_SCSI=y
225CONFIG_SCSI_PROC_FS=y 357CONFIG_SCSI_PROC_FS=y
226 358
@@ -233,6 +365,7 @@ CONFIG_CHR_DEV_OSST=y
233CONFIG_BLK_DEV_SR=y 365CONFIG_BLK_DEV_SR=y
234CONFIG_BLK_DEV_SR_VENDOR=y 366CONFIG_BLK_DEV_SR_VENDOR=y
235CONFIG_CHR_DEV_SG=y 367CONFIG_CHR_DEV_SG=y
368# CONFIG_CHR_DEV_SCH is not set
236 369
237# 370#
238# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 371# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
@@ -244,9 +377,10 @@ CONFIG_SCSI_LOGGING=y
244# 377#
245# SCSI Transport Attributes 378# SCSI Transport Attributes
246# 379#
247# CONFIG_SCSI_SPI_ATTRS is not set 380CONFIG_SCSI_SPI_ATTRS=y
248# CONFIG_SCSI_FC_ATTRS is not set 381# CONFIG_SCSI_FC_ATTRS is not set
249# CONFIG_SCSI_ISCSI_ATTRS is not set 382# CONFIG_SCSI_ISCSI_ATTRS is not set
383CONFIG_SCSI_SAS_ATTRS=y
250 384
251# 385#
252# SCSI low-level drivers 386# SCSI low-level drivers
@@ -266,18 +400,13 @@ CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
266# CONFIG_MEGARAID_NEWGEN is not set 400# CONFIG_MEGARAID_NEWGEN is not set
267# CONFIG_MEGARAID_LEGACY is not set 401# CONFIG_MEGARAID_LEGACY is not set
268# CONFIG_SCSI_SATA is not set 402# CONFIG_SCSI_SATA is not set
269# CONFIG_SCSI_BUSLOGIC is not set
270# CONFIG_SCSI_DMX3191D is not set 403# CONFIG_SCSI_DMX3191D is not set
271# CONFIG_SCSI_EATA is not set
272# CONFIG_SCSI_EATA_PIO is not set
273# CONFIG_SCSI_FUTURE_DOMAIN is not set 404# CONFIG_SCSI_FUTURE_DOMAIN is not set
274# CONFIG_SCSI_GDTH is not set
275# CONFIG_SCSI_IPS is not set 405# CONFIG_SCSI_IPS is not set
276# CONFIG_SCSI_INITIO is not set 406# CONFIG_SCSI_INITIO is not set
277# CONFIG_SCSI_INIA100 is not set 407# CONFIG_SCSI_INIA100 is not set
278# CONFIG_SCSI_SYM53C8XX_2 is not set 408# CONFIG_SCSI_SYM53C8XX_2 is not set
279# CONFIG_SCSI_IPR is not set 409# CONFIG_SCSI_IPR is not set
280# CONFIG_SCSI_QLOGIC_ISP is not set
281# CONFIG_SCSI_QLOGIC_FC is not set 410# CONFIG_SCSI_QLOGIC_FC is not set
282# CONFIG_SCSI_QLOGIC_1280 is not set 411# CONFIG_SCSI_QLOGIC_1280 is not set
283CONFIG_SCSI_QLA2XXX=y 412CONFIG_SCSI_QLA2XXX=y
@@ -286,6 +415,8 @@ CONFIG_SCSI_QLA2XXX=y
286# CONFIG_SCSI_QLA2300 is not set 415# CONFIG_SCSI_QLA2300 is not set
287# CONFIG_SCSI_QLA2322 is not set 416# CONFIG_SCSI_QLA2322 is not set
288# CONFIG_SCSI_QLA6312 is not set 417# CONFIG_SCSI_QLA6312 is not set
418# CONFIG_SCSI_QLA24XX is not set
419# CONFIG_SCSI_LPFC is not set
289# CONFIG_SCSI_DC395x is not set 420# CONFIG_SCSI_DC395x is not set
290# CONFIG_SCSI_DC390T is not set 421# CONFIG_SCSI_DC390T is not set
291# CONFIG_SCSI_DEBUG is not set 422# CONFIG_SCSI_DEBUG is not set
@@ -299,6 +430,8 @@ CONFIG_SCSI_QLA2XXX=y
299# Fusion MPT device support 430# Fusion MPT device support
300# 431#
301# CONFIG_FUSION is not set 432# CONFIG_FUSION is not set
433# CONFIG_FUSION_SPI is not set
434# CONFIG_FUSION_FC is not set
302 435
303# 436#
304# IEEE 1394 (FireWire) support 437# IEEE 1394 (FireWire) support
@@ -311,78 +444,13 @@ CONFIG_SCSI_QLA2XXX=y
311# CONFIG_I2O is not set 444# CONFIG_I2O is not set
312 445
313# 446#
314# Networking support 447# Network device support
315#
316CONFIG_NET=y
317
318#
319# Networking options
320#
321CONFIG_PACKET=y
322CONFIG_PACKET_MMAP=y
323CONFIG_NETLINK_DEV=y
324CONFIG_UNIX=y
325CONFIG_NET_KEY=y
326CONFIG_INET=y
327# CONFIG_IP_MULTICAST is not set
328# CONFIG_IP_ADVANCED_ROUTER is not set
329CONFIG_IP_PNP=y
330# CONFIG_IP_PNP_DHCP is not set
331CONFIG_IP_PNP_BOOTP=y
332# CONFIG_IP_PNP_RARP is not set
333# CONFIG_NET_IPIP is not set
334# CONFIG_NET_IPGRE is not set
335# CONFIG_ARPD is not set
336# CONFIG_SYN_COOKIES is not set
337# CONFIG_INET_AH is not set
338# CONFIG_INET_ESP is not set
339# CONFIG_INET_IPCOMP is not set
340CONFIG_INET_TUNNEL=y
341CONFIG_IP_TCPDIAG=y
342# CONFIG_IP_TCPDIAG_IPV6 is not set
343# CONFIG_IPV6 is not set
344# CONFIG_NETFILTER is not set
345CONFIG_XFRM=y
346CONFIG_XFRM_USER=y
347
348#
349# SCTP Configuration (EXPERIMENTAL)
350# 448#
351# CONFIG_IP_SCTP is not set
352# CONFIG_ATM is not set
353# CONFIG_BRIDGE is not set
354# CONFIG_VLAN_8021Q is not set
355# CONFIG_DECNET is not set
356# CONFIG_LLC2 is not set
357# CONFIG_IPX is not set
358# CONFIG_ATALK is not set
359# CONFIG_X25 is not set
360# CONFIG_LAPB is not set
361# CONFIG_NET_DIVERT is not set
362# CONFIG_ECONET is not set
363# CONFIG_WAN_ROUTER is not set
364
365#
366# QoS and/or fair queueing
367#
368# CONFIG_NET_SCHED is not set
369# CONFIG_NET_CLS_ROUTE is not set
370
371#
372# Network testing
373#
374# CONFIG_NET_PKTGEN is not set
375# CONFIG_NETPOLL is not set
376# CONFIG_NET_POLL_CONTROLLER is not set
377# CONFIG_HAMRADIO is not set
378# CONFIG_IRDA is not set
379# CONFIG_BT is not set
380CONFIG_NETDEVICES=y 449CONFIG_NETDEVICES=y
381# CONFIG_DUMMY is not set 450# CONFIG_DUMMY is not set
382# CONFIG_BONDING is not set 451# CONFIG_BONDING is not set
383# CONFIG_EQUALIZER is not set 452# CONFIG_EQUALIZER is not set
384# CONFIG_TUN is not set 453# CONFIG_TUN is not set
385# CONFIG_ETHERTAP is not set
386 454
387# 455#
388# ARCnet devices 456# ARCnet devices
@@ -390,6 +458,21 @@ CONFIG_NETDEVICES=y
390# CONFIG_ARCNET is not set 458# CONFIG_ARCNET is not set
391 459
392# 460#
461# PHY device support
462#
463CONFIG_PHYLIB=y
464CONFIG_PHYCONTROL=y
465
466#
467# MII PHY device drivers
468#
469CONFIG_MARVELL_PHY=y
470CONFIG_DAVICOM_PHY=y
471CONFIG_QSEMI_PHY=y
472CONFIG_LXT_PHY=y
473CONFIG_CICADA_PHY=y
474
475#
393# Ethernet (10 or 100Mbit) 476# Ethernet (10 or 100Mbit)
394# 477#
395CONFIG_NET_ETHERNET=y 478CONFIG_NET_ETHERNET=y
@@ -416,12 +499,16 @@ CONFIG_SGI_O2MACE_ETH=y
416# CONFIG_HAMACHI is not set 499# CONFIG_HAMACHI is not set
417# CONFIG_YELLOWFIN is not set 500# CONFIG_YELLOWFIN is not set
418# CONFIG_R8169 is not set 501# CONFIG_R8169 is not set
502# CONFIG_SIS190 is not set
503# CONFIG_SKGE is not set
419# CONFIG_SK98LIN is not set 504# CONFIG_SK98LIN is not set
420# CONFIG_TIGON3 is not set 505# CONFIG_TIGON3 is not set
506# CONFIG_BNX2 is not set
421 507
422# 508#
423# Ethernet (10000 Mbit) 509# Ethernet (10000 Mbit)
424# 510#
511# CONFIG_CHELSIO_T1 is not set
425# CONFIG_IXGB is not set 512# CONFIG_IXGB is not set
426# CONFIG_S2IO is not set 513# CONFIG_S2IO is not set
427 514
@@ -434,6 +521,8 @@ CONFIG_SGI_O2MACE_ETH=y
434# Wireless LAN (non-hamradio) 521# Wireless LAN (non-hamradio)
435# 522#
436# CONFIG_NET_RADIO is not set 523# CONFIG_NET_RADIO is not set
524# CONFIG_IPW_DEBUG is not set
525CONFIG_IPW2200=y
437 526
438# 527#
439# Wan interfaces 528# Wan interfaces
@@ -446,6 +535,8 @@ CONFIG_SGI_O2MACE_ETH=y
446# CONFIG_NET_FC is not set 535# CONFIG_NET_FC is not set
447# CONFIG_SHAPER is not set 536# CONFIG_SHAPER is not set
448# CONFIG_NETCONSOLE is not set 537# CONFIG_NETCONSOLE is not set
538# CONFIG_NETPOLL is not set
539# CONFIG_NET_POLL_CONTROLLER is not set
449 540
450# 541#
451# ISDN subsystem 542# ISDN subsystem
@@ -475,27 +566,25 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
475# CONFIG_INPUT_EVBUG is not set 566# CONFIG_INPUT_EVBUG is not set
476 567
477# 568#
478# Input I/O drivers 569# Input Device Drivers
570#
571# CONFIG_INPUT_KEYBOARD is not set
572# CONFIG_INPUT_MOUSE is not set
573# CONFIG_INPUT_JOYSTICK is not set
574# CONFIG_INPUT_TOUCHSCREEN is not set
575# CONFIG_INPUT_MISC is not set
576
577#
578# Hardware I/O ports
479# 579#
480# CONFIG_GAMEPORT is not set
481CONFIG_SOUND_GAMEPORT=y
482CONFIG_SERIO=y 580CONFIG_SERIO=y
483# CONFIG_SERIO_I8042 is not set 581# CONFIG_SERIO_I8042 is not set
484CONFIG_SERIO_SERPORT=y 582CONFIG_SERIO_SERPORT=y
485# CONFIG_SERIO_CT82C710 is not set
486# CONFIG_SERIO_PCIPS2 is not set 583# CONFIG_SERIO_PCIPS2 is not set
487# CONFIG_SERIO_MACEPS2 is not set 584# CONFIG_SERIO_MACEPS2 is not set
488# CONFIG_SERIO_LIBPS2 is not set 585# CONFIG_SERIO_LIBPS2 is not set
489CONFIG_SERIO_RAW=y 586CONFIG_SERIO_RAW=y
490 587# CONFIG_GAMEPORT is not set
491#
492# Input Device Drivers
493#
494# CONFIG_INPUT_KEYBOARD is not set
495# CONFIG_INPUT_MOUSE is not set
496# CONFIG_INPUT_JOYSTICK is not set
497# CONFIG_INPUT_TOUCHSCREEN is not set
498# CONFIG_INPUT_MISC is not set
499 588
500# 589#
501# Character devices 590# Character devices
@@ -518,6 +607,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4
518# 607#
519CONFIG_SERIAL_CORE=y 608CONFIG_SERIAL_CORE=y
520CONFIG_SERIAL_CORE_CONSOLE=y 609CONFIG_SERIAL_CORE_CONSOLE=y
610# CONFIG_SERIAL_JSM is not set
521CONFIG_UNIX98_PTYS=y 611CONFIG_UNIX98_PTYS=y
522CONFIG_LEGACY_PTYS=y 612CONFIG_LEGACY_PTYS=y
523CONFIG_LEGACY_PTY_COUNT=256 613CONFIG_LEGACY_PTY_COUNT=256
@@ -544,6 +634,11 @@ CONFIG_LEGACY_PTY_COUNT=256
544# CONFIG_RAW_DRIVER is not set 634# CONFIG_RAW_DRIVER is not set
545 635
546# 636#
637# TPM devices
638#
639# CONFIG_TCG_TPM is not set
640
641#
547# I2C support 642# I2C support
548# 643#
549# CONFIG_I2C is not set 644# CONFIG_I2C is not set
@@ -554,10 +649,20 @@ CONFIG_LEGACY_PTY_COUNT=256
554# CONFIG_W1 is not set 649# CONFIG_W1 is not set
555 650
556# 651#
652# Hardware Monitoring support
653#
654# CONFIG_HWMON is not set
655# CONFIG_HWMON_VID is not set
656
657#
557# Misc devices 658# Misc devices
558# 659#
559 660
560# 661#
662# Multimedia Capabilities Port drivers
663#
664
665#
561# Multimedia devices 666# Multimedia devices
562# 667#
563# CONFIG_VIDEO_DEV is not set 668# CONFIG_VIDEO_DEV is not set
@@ -577,7 +682,6 @@ CONFIG_LEGACY_PTY_COUNT=256
577# 682#
578# CONFIG_VGA_CONSOLE is not set 683# CONFIG_VGA_CONSOLE is not set
579CONFIG_DUMMY_CONSOLE=y 684CONFIG_DUMMY_CONSOLE=y
580# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
581 685
582# 686#
583# Sound 687# Sound
@@ -587,13 +691,9 @@ CONFIG_DUMMY_CONSOLE=y
587# 691#
588# USB support 692# USB support
589# 693#
590# CONFIG_USB is not set
591CONFIG_USB_ARCH_HAS_HCD=y 694CONFIG_USB_ARCH_HAS_HCD=y
592CONFIG_USB_ARCH_HAS_OHCI=y 695CONFIG_USB_ARCH_HAS_OHCI=y
593 696# CONFIG_USB is not set
594#
595# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
596#
597 697
598# 698#
599# USB Gadget Support 699# USB Gadget Support
@@ -611,21 +711,29 @@ CONFIG_USB_ARCH_HAS_OHCI=y
611# CONFIG_INFINIBAND is not set 711# CONFIG_INFINIBAND is not set
612 712
613# 713#
714# SN Devices
715#
716
717#
614# File systems 718# File systems
615# 719#
616CONFIG_EXT2_FS=y 720CONFIG_EXT2_FS=y
617# CONFIG_EXT2_FS_XATTR is not set 721# CONFIG_EXT2_FS_XATTR is not set
722# CONFIG_EXT2_FS_XIP is not set
618# CONFIG_EXT3_FS is not set 723# CONFIG_EXT3_FS is not set
619# CONFIG_JBD is not set 724# CONFIG_JBD is not set
620# CONFIG_REISERFS_FS is not set 725# CONFIG_REISERFS_FS is not set
621# CONFIG_JFS_FS is not set 726# CONFIG_JFS_FS is not set
727# CONFIG_FS_POSIX_ACL is not set
622# CONFIG_XFS_FS is not set 728# CONFIG_XFS_FS is not set
623# CONFIG_MINIX_FS is not set 729# CONFIG_MINIX_FS is not set
624# CONFIG_ROMFS_FS is not set 730# CONFIG_ROMFS_FS is not set
731CONFIG_INOTIFY=y
625# CONFIG_QUOTA is not set 732# CONFIG_QUOTA is not set
626CONFIG_DNOTIFY=y 733CONFIG_DNOTIFY=y
627# CONFIG_AUTOFS_FS is not set 734# CONFIG_AUTOFS_FS is not set
628# CONFIG_AUTOFS4_FS is not set 735# CONFIG_AUTOFS4_FS is not set
736CONFIG_FUSE_FS=y
629 737
630# 738#
631# CD-ROM/DVD Filesystems 739# CD-ROM/DVD Filesystems
@@ -646,13 +754,10 @@ CONFIG_DNOTIFY=y
646CONFIG_PROC_FS=y 754CONFIG_PROC_FS=y
647CONFIG_PROC_KCORE=y 755CONFIG_PROC_KCORE=y
648CONFIG_SYSFS=y 756CONFIG_SYSFS=y
649# CONFIG_DEVFS_FS is not set
650CONFIG_DEVPTS_FS_XATTR=y
651CONFIG_DEVPTS_FS_SECURITY=y
652CONFIG_TMPFS=y 757CONFIG_TMPFS=y
653# CONFIG_TMPFS_XATTR is not set
654# CONFIG_HUGETLB_PAGE is not set 758# CONFIG_HUGETLB_PAGE is not set
655CONFIG_RAMFS=y 759CONFIG_RAMFS=y
760CONFIG_RELAYFS_FS=y
656 761
657# 762#
658# Miscellaneous filesystems 763# Miscellaneous filesystems
@@ -676,13 +781,14 @@ CONFIG_RAMFS=y
676# 781#
677CONFIG_NFS_FS=y 782CONFIG_NFS_FS=y
678CONFIG_NFS_V3=y 783CONFIG_NFS_V3=y
784# CONFIG_NFS_V3_ACL is not set
679# CONFIG_NFS_V4 is not set 785# CONFIG_NFS_V4 is not set
680# CONFIG_NFS_DIRECTIO is not set 786# CONFIG_NFS_DIRECTIO is not set
681# CONFIG_NFSD is not set 787# CONFIG_NFSD is not set
682CONFIG_ROOT_NFS=y 788CONFIG_ROOT_NFS=y
683CONFIG_LOCKD=y 789CONFIG_LOCKD=y
684CONFIG_LOCKD_V4=y 790CONFIG_LOCKD_V4=y
685# CONFIG_EXPORTFS is not set 791CONFIG_NFS_COMMON=y
686CONFIG_SUNRPC=y 792CONFIG_SUNRPC=y
687# CONFIG_RPCSEC_GSS_KRB5 is not set 793# CONFIG_RPCSEC_GSS_KRB5 is not set
688# CONFIG_RPCSEC_GSS_SPKM3 is not set 794# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -691,6 +797,7 @@ CONFIG_SUNRPC=y
691# CONFIG_NCP_FS is not set 797# CONFIG_NCP_FS is not set
692# CONFIG_CODA_FS is not set 798# CONFIG_CODA_FS is not set
693# CONFIG_AFS_FS is not set 799# CONFIG_AFS_FS is not set
800# CONFIG_9P_FS is not set
694 801
695# 802#
696# Partition Types 803# Partition Types
@@ -721,7 +828,9 @@ CONFIG_SGI_PARTITION=y
721# 828#
722# Kernel hacking 829# Kernel hacking
723# 830#
831# CONFIG_PRINTK_TIME is not set
724# CONFIG_DEBUG_KERNEL is not set 832# CONFIG_DEBUG_KERNEL is not set
833CONFIG_LOG_BUF_SHIFT=14
725CONFIG_CROSSCOMPILE=y 834CONFIG_CROSSCOMPILE=y
726CONFIG_CMDLINE="" 835CONFIG_CMDLINE=""
727 836
@@ -735,7 +844,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
735# 844#
736# Cryptographic options 845# Cryptographic options
737# 846#
738# CONFIG_CRYPTO is not set 847CONFIG_CRYPTO=y
848CONFIG_CRYPTO_HMAC=y
849CONFIG_CRYPTO_NULL=y
850CONFIG_CRYPTO_MD4=y
851CONFIG_CRYPTO_MD5=y
852CONFIG_CRYPTO_SHA1=y
853CONFIG_CRYPTO_SHA256=y
854CONFIG_CRYPTO_SHA512=y
855CONFIG_CRYPTO_WP512=y
856CONFIG_CRYPTO_TGR192=y
857CONFIG_CRYPTO_DES=y
858CONFIG_CRYPTO_BLOWFISH=y
859CONFIG_CRYPTO_TWOFISH=y
860CONFIG_CRYPTO_SERPENT=y
861CONFIG_CRYPTO_AES=y
862CONFIG_CRYPTO_CAST5=y
863CONFIG_CRYPTO_CAST6=y
864CONFIG_CRYPTO_TEA=y
865CONFIG_CRYPTO_ARC4=y
866CONFIG_CRYPTO_KHAZAD=y
867CONFIG_CRYPTO_ANUBIS=y
868CONFIG_CRYPTO_DEFLATE=y
869CONFIG_CRYPTO_MICHAEL_MIC=y
870CONFIG_CRYPTO_CRC32C=y
871# CONFIG_CRYPTO_TEST is not set
739 872
740# 873#
741# Hardware crypto devices 874# Hardware crypto devices
@@ -745,7 +878,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
745# Library routines 878# Library routines
746# 879#
747# CONFIG_CRC_CCITT is not set 880# CONFIG_CRC_CCITT is not set
748# CONFIG_CRC32 is not set 881CONFIG_CRC16=y
749# CONFIG_LIBCRC32C is not set 882CONFIG_CRC32=y
750CONFIG_GENERIC_HARDIRQS=y 883CONFIG_LIBCRC32C=y
751CONFIG_GENERIC_IRQ_PROBE=y 884CONFIG_ZLIB_INFLATE=y
885CONFIG_ZLIB_DEFLATE=y
diff --git a/arch/mips/configs/it8172_defconfig b/arch/mips/configs/it8172_defconfig
index 08bd3ad64761..0940771bafb1 100644
--- a/arch/mips/configs/it8172_defconfig
+++ b/arch/mips/configs/it8172_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:05 2005 4# Thu Oct 20 22:26:09 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,11 +11,13 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
@@ -26,13 +25,16 @@ CONFIG_BSD_PROCESS_ACCT=y
26# CONFIG_BSD_PROCESS_ACCT_V3 is not set 25# CONFIG_BSD_PROCESS_ACCT_V3 is not set
27CONFIG_SYSCTL=y 26CONFIG_SYSCTL=y
28# CONFIG_AUDIT is not set 27# CONFIG_AUDIT is not set
29CONFIG_LOG_BUF_SHIFT=14
30# CONFIG_HOTPLUG is not set 28# CONFIG_HOTPLUG is not set
31CONFIG_KOBJECT_UEVENT=y 29CONFIG_KOBJECT_UEVENT=y
32# CONFIG_IKCONFIG is not set 30# CONFIG_IKCONFIG is not set
31CONFIG_INITRAMFS_SOURCE=""
33CONFIG_EMBEDDED=y 32CONFIG_EMBEDDED=y
34CONFIG_KALLSYMS=y 33CONFIG_KALLSYMS=y
35# CONFIG_KALLSYMS_EXTRA_PASS is not set 34# CONFIG_KALLSYMS_EXTRA_PASS is not set
35CONFIG_PRINTK=y
36CONFIG_BUG=y
37CONFIG_BASE_FULL=y
36CONFIG_FUTEX=y 38CONFIG_FUTEX=y
37CONFIG_EPOLL=y 39CONFIG_EPOLL=y
38# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 40# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -42,6 +44,7 @@ CONFIG_CC_ALIGN_LABELS=0
42CONFIG_CC_ALIGN_LOOPS=0 44CONFIG_CC_ALIGN_LOOPS=0
43CONFIG_CC_ALIGN_JUMPS=0 45CONFIG_CC_ALIGN_JUMPS=0
44# CONFIG_TINY_SHMEM is not set 46# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0
45 48
46# 49#
47# Loadable module support 50# Loadable module support
@@ -57,41 +60,69 @@ CONFIG_KMOD=y
57# 60#
58# Machine selection 61# Machine selection
59# 62#
60# CONFIG_MACH_JAZZ is not set 63# CONFIG_MIPS_MTX1 is not set
61# CONFIG_MACH_VR41XX is not set 64# CONFIG_MIPS_BOSPORUS is not set
62# CONFIG_TOSHIBA_JMR3927 is not set 65# CONFIG_MIPS_PB1000 is not set
66# CONFIG_MIPS_PB1100 is not set
67# CONFIG_MIPS_PB1500 is not set
68# CONFIG_MIPS_PB1550 is not set
69# CONFIG_MIPS_PB1200 is not set
70# CONFIG_MIPS_DB1000 is not set
71# CONFIG_MIPS_DB1100 is not set
72# CONFIG_MIPS_DB1500 is not set
73# CONFIG_MIPS_DB1550 is not set
74# CONFIG_MIPS_DB1200 is not set
75# CONFIG_MIPS_MIRAGE is not set
63# CONFIG_MIPS_COBALT is not set 76# CONFIG_MIPS_COBALT is not set
64# CONFIG_MACH_DECSTATION is not set 77# CONFIG_MACH_DECSTATION is not set
65# CONFIG_MIPS_EV64120 is not set 78# CONFIG_MIPS_EV64120 is not set
66# CONFIG_MIPS_EV96100 is not set 79# CONFIG_MIPS_EV96100 is not set
67# CONFIG_MIPS_IVR is not set 80# CONFIG_MIPS_IVR is not set
68# CONFIG_LASAT is not set
69CONFIG_MIPS_ITE8172=y 81CONFIG_MIPS_ITE8172=y
70# CONFIG_IT8172_REVC is not set 82# CONFIG_MACH_JAZZ is not set
83# CONFIG_LASAT is not set
71# CONFIG_MIPS_ATLAS is not set 84# CONFIG_MIPS_ATLAS is not set
72# CONFIG_MIPS_MALTA is not set 85# CONFIG_MIPS_MALTA is not set
73# CONFIG_MIPS_SEAD is not set 86# CONFIG_MIPS_SEAD is not set
87# CONFIG_MIPS_SIM is not set
88# CONFIG_MOMENCO_JAGUAR_ATX is not set
74# CONFIG_MOMENCO_OCELOT is not set 89# CONFIG_MOMENCO_OCELOT is not set
75# CONFIG_MOMENCO_OCELOT_G is not set
76# CONFIG_MOMENCO_OCELOT_C is not set
77# CONFIG_MOMENCO_OCELOT_3 is not set 90# CONFIG_MOMENCO_OCELOT_3 is not set
78# CONFIG_MOMENCO_JAGUAR_ATX is not set 91# CONFIG_MOMENCO_OCELOT_C is not set
79# CONFIG_PMC_YOSEMITE is not set 92# CONFIG_MOMENCO_OCELOT_G is not set
93# CONFIG_MIPS_XXS1500 is not set
94# CONFIG_PNX8550_V2PCI is not set
95# CONFIG_PNX8550_JBS is not set
80# CONFIG_DDB5074 is not set 96# CONFIG_DDB5074 is not set
81# CONFIG_DDB5476 is not set 97# CONFIG_DDB5476 is not set
82# CONFIG_DDB5477 is not set 98# CONFIG_DDB5477 is not set
83# CONFIG_NEC_OSPREY is not set 99# CONFIG_MACH_VR41XX is not set
100# CONFIG_PMC_YOSEMITE is not set
101# CONFIG_QEMU is not set
84# CONFIG_SGI_IP22 is not set 102# CONFIG_SGI_IP22 is not set
85# CONFIG_SOC_AU1X00 is not set 103# CONFIG_SGI_IP27 is not set
86# CONFIG_SIBYTE_SB1xxx_SOC is not set 104# CONFIG_SGI_IP32 is not set
105# CONFIG_SIBYTE_BIGSUR is not set
106# CONFIG_SIBYTE_SWARM is not set
107# CONFIG_SIBYTE_SENTOSA is not set
108# CONFIG_SIBYTE_RHONE is not set
109# CONFIG_SIBYTE_CARMEL is not set
110# CONFIG_SIBYTE_PTSWARM is not set
111# CONFIG_SIBYTE_LITTLESUR is not set
112# CONFIG_SIBYTE_CRHINE is not set
113# CONFIG_SIBYTE_CRHONE is not set
87# CONFIG_SNI_RM200_PCI is not set 114# CONFIG_SNI_RM200_PCI is not set
115# CONFIG_TOSHIBA_JMR3927 is not set
88# CONFIG_TOSHIBA_RBTX4927 is not set 116# CONFIG_TOSHIBA_RBTX4927 is not set
117# CONFIG_TOSHIBA_RBTX4938 is not set
118# CONFIG_IT8172_REVC is not set
89CONFIG_RWSEM_GENERIC_SPINLOCK=y 119CONFIG_RWSEM_GENERIC_SPINLOCK=y
90CONFIG_GENERIC_CALIBRATE_DELAY=y 120CONFIG_GENERIC_CALIBRATE_DELAY=y
91CONFIG_HAVE_DEC_LOCK=y
92CONFIG_DMA_NONCOHERENT=y 121CONFIG_DMA_NONCOHERENT=y
93CONFIG_DMA_NEED_PCI_MAP_STATE=y 122CONFIG_DMA_NEED_PCI_MAP_STATE=y
123# CONFIG_CPU_BIG_ENDIAN is not set
94CONFIG_CPU_LITTLE_ENDIAN=y 124CONFIG_CPU_LITTLE_ENDIAN=y
125CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
95CONFIG_ITE_BOARD_GEN=y 126CONFIG_ITE_BOARD_GEN=y
96CONFIG_IT8172_CIR=y 127CONFIG_IT8172_CIR=y
97CONFIG_IT8712=y 128CONFIG_IT8712=y
@@ -100,8 +131,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
100# 131#
101# CPU selection 132# CPU selection
102# 133#
103# CONFIG_CPU_MIPS32 is not set 134# CONFIG_CPU_MIPS32_R1 is not set
104# CONFIG_CPU_MIPS64 is not set 135# CONFIG_CPU_MIPS32_R2 is not set
136# CONFIG_CPU_MIPS64_R1 is not set
137# CONFIG_CPU_MIPS64_R2 is not set
105# CONFIG_CPU_R3000 is not set 138# CONFIG_CPU_R3000 is not set
106# CONFIG_CPU_TX39XX is not set 139# CONFIG_CPU_TX39XX is not set
107# CONFIG_CPU_VR41XX is not set 140# CONFIG_CPU_VR41XX is not set
@@ -117,14 +150,39 @@ CONFIG_CPU_NEVADA=y
117# CONFIG_CPU_RM7000 is not set 150# CONFIG_CPU_RM7000 is not set
118# CONFIG_CPU_RM9000 is not set 151# CONFIG_CPU_RM9000 is not set
119# CONFIG_CPU_SB1 is not set 152# CONFIG_CPU_SB1 is not set
153CONFIG_SYS_HAS_CPU_R5432=y
154CONFIG_SYS_HAS_CPU_NEVADA=y
155CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
156CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
157CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
158CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
159
160#
161# Kernel type
162#
163CONFIG_32BIT=y
164# CONFIG_64BIT is not set
120CONFIG_PAGE_SIZE_4KB=y 165CONFIG_PAGE_SIZE_4KB=y
121# CONFIG_PAGE_SIZE_8KB is not set 166# CONFIG_PAGE_SIZE_8KB is not set
122# CONFIG_PAGE_SIZE_16KB is not set 167# CONFIG_PAGE_SIZE_16KB is not set
123# CONFIG_PAGE_SIZE_64KB is not set 168# CONFIG_PAGE_SIZE_64KB is not set
169# CONFIG_MIPS_MT is not set
124# CONFIG_CPU_ADVANCED is not set 170# CONFIG_CPU_ADVANCED is not set
125CONFIG_CPU_HAS_LLSC=y 171CONFIG_CPU_HAS_LLSC=y
126CONFIG_CPU_HAS_LLDSCD=y 172CONFIG_CPU_HAS_LLDSCD=y
127CONFIG_CPU_HAS_SYNC=y 173CONFIG_CPU_HAS_SYNC=y
174CONFIG_GENERIC_HARDIRQS=y
175CONFIG_GENERIC_IRQ_PROBE=y
176CONFIG_ARCH_FLATMEM_ENABLE=y
177CONFIG_SELECT_MEMORY_MODEL=y
178CONFIG_FLATMEM_MANUAL=y
179# CONFIG_DISCONTIGMEM_MANUAL is not set
180# CONFIG_SPARSEMEM_MANUAL is not set
181CONFIG_FLATMEM=y
182CONFIG_FLAT_NODE_MEM_MAP=y
183# CONFIG_SPARSEMEM_STATIC is not set
184CONFIG_PREEMPT_NONE=y
185# CONFIG_PREEMPT_VOLUNTARY is not set
128# CONFIG_PREEMPT is not set 186# CONFIG_PREEMPT is not set
129 187
130# 188#
@@ -140,10 +198,6 @@ CONFIG_MMU=y
140# CONFIG_PCCARD is not set 198# CONFIG_PCCARD is not set
141 199
142# 200#
143# PC-card bridges
144#
145
146#
147# PCI Hotplug Support 201# PCI Hotplug Support
148# 202#
149 203
@@ -155,6 +209,80 @@ CONFIG_BINFMT_ELF=y
155CONFIG_TRAD_SIGNALS=y 209CONFIG_TRAD_SIGNALS=y
156 210
157# 211#
212# Networking
213#
214CONFIG_NET=y
215
216#
217# Networking options
218#
219CONFIG_PACKET=y
220CONFIG_PACKET_MMAP=y
221CONFIG_UNIX=y
222CONFIG_XFRM=y
223CONFIG_XFRM_USER=m
224CONFIG_NET_KEY=y
225CONFIG_INET=y
226# CONFIG_IP_MULTICAST is not set
227# CONFIG_IP_ADVANCED_ROUTER is not set
228CONFIG_IP_FIB_HASH=y
229CONFIG_IP_PNP=y
230# CONFIG_IP_PNP_DHCP is not set
231CONFIG_IP_PNP_BOOTP=y
232# CONFIG_IP_PNP_RARP is not set
233# CONFIG_NET_IPIP is not set
234# CONFIG_NET_IPGRE is not set
235# CONFIG_ARPD is not set
236# CONFIG_SYN_COOKIES is not set
237# CONFIG_INET_AH is not set
238# CONFIG_INET_ESP is not set
239# CONFIG_INET_IPCOMP is not set
240CONFIG_INET_TUNNEL=m
241CONFIG_INET_DIAG=y
242CONFIG_INET_TCP_DIAG=y
243# CONFIG_TCP_CONG_ADVANCED is not set
244CONFIG_TCP_CONG_BIC=y
245# CONFIG_IPV6 is not set
246# CONFIG_NETFILTER is not set
247
248#
249# DCCP Configuration (EXPERIMENTAL)
250#
251# CONFIG_IP_DCCP is not set
252
253#
254# SCTP Configuration (EXPERIMENTAL)
255#
256# CONFIG_IP_SCTP is not set
257# CONFIG_ATM is not set
258# CONFIG_BRIDGE is not set
259# CONFIG_VLAN_8021Q is not set
260# CONFIG_DECNET is not set
261# CONFIG_LLC2 is not set
262# CONFIG_IPX is not set
263# CONFIG_ATALK is not set
264# CONFIG_X25 is not set
265# CONFIG_LAPB is not set
266# CONFIG_NET_DIVERT is not set
267# CONFIG_ECONET is not set
268# CONFIG_WAN_ROUTER is not set
269# CONFIG_NET_SCHED is not set
270# CONFIG_NET_CLS_ROUTE is not set
271
272#
273# Network testing
274#
275# CONFIG_NET_PKTGEN is not set
276# CONFIG_HAMRADIO is not set
277# CONFIG_IRDA is not set
278# CONFIG_BT is not set
279CONFIG_IEEE80211=m
280# CONFIG_IEEE80211_DEBUG is not set
281CONFIG_IEEE80211_CRYPT_WEP=m
282CONFIG_IEEE80211_CRYPT_CCMP=m
283CONFIG_IEEE80211_CRYPT_TKIP=m
284
285#
158# Device Drivers 286# Device Drivers
159# 287#
160 288
@@ -166,12 +294,17 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
166# CONFIG_FW_LOADER is not set 294# CONFIG_FW_LOADER is not set
167 295
168# 296#
297# Connector - unified userspace <-> kernelspace linker
298#
299CONFIG_CONNECTOR=m
300
301#
169# Memory Technology Devices (MTD) 302# Memory Technology Devices (MTD)
170# 303#
171CONFIG_MTD=y 304CONFIG_MTD=y
172# CONFIG_MTD_DEBUG is not set 305# CONFIG_MTD_DEBUG is not set
173# CONFIG_MTD_PARTITIONS is not set
174# CONFIG_MTD_CONCAT is not set 306# CONFIG_MTD_CONCAT is not set
307# CONFIG_MTD_PARTITIONS is not set
175 308
176# 309#
177# User Modules And Translation Layers 310# User Modules And Translation Layers
@@ -207,7 +340,6 @@ CONFIG_MTD_CFI_UTIL=y
207# CONFIG_MTD_RAM is not set 340# CONFIG_MTD_RAM is not set
208# CONFIG_MTD_ROM is not set 341# CONFIG_MTD_ROM is not set
209# CONFIG_MTD_ABSENT is not set 342# CONFIG_MTD_ABSENT is not set
210# CONFIG_MTD_XIP is not set
211 343
212# 344#
213# Mapping drivers for chip access 345# Mapping drivers for chip access
@@ -217,6 +349,7 @@ CONFIG_MTD_PHYSMAP=y
217CONFIG_MTD_PHYSMAP_START=0x8000000 349CONFIG_MTD_PHYSMAP_START=0x8000000
218CONFIG_MTD_PHYSMAP_LEN=0x2000000 350CONFIG_MTD_PHYSMAP_LEN=0x2000000
219CONFIG_MTD_PHYSMAP_BANKWIDTH=2 351CONFIG_MTD_PHYSMAP_BANKWIDTH=2
352# CONFIG_MTD_PLATRAM is not set
220 353
221# 354#
222# Self-contained MTD device drivers 355# Self-contained MTD device drivers
@@ -251,14 +384,12 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
251# 384#
252# Block devices 385# Block devices
253# 386#
254# CONFIG_BLK_DEV_FD is not set
255# CONFIG_BLK_DEV_COW_COMMON is not set 387# CONFIG_BLK_DEV_COW_COMMON is not set
256CONFIG_BLK_DEV_LOOP=y 388CONFIG_BLK_DEV_LOOP=y
257# CONFIG_BLK_DEV_CRYPTOLOOP is not set 389# CONFIG_BLK_DEV_CRYPTOLOOP is not set
258# CONFIG_BLK_DEV_NBD is not set 390# CONFIG_BLK_DEV_NBD is not set
259# CONFIG_BLK_DEV_RAM is not set 391# CONFIG_BLK_DEV_RAM is not set
260CONFIG_BLK_DEV_RAM_COUNT=16 392CONFIG_BLK_DEV_RAM_COUNT=16
261CONFIG_INITRAMFS_SOURCE=""
262# CONFIG_LBD is not set 393# CONFIG_LBD is not set
263CONFIG_CDROM_PKTCDVD=m 394CONFIG_CDROM_PKTCDVD=m
264CONFIG_CDROM_PKTCDVD_BUFFERS=8 395CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -302,6 +433,7 @@ CONFIG_IDE_GENERIC=y
302# 433#
303# SCSI device support 434# SCSI device support
304# 435#
436CONFIG_RAID_ATTRS=m
305# CONFIG_SCSI is not set 437# CONFIG_SCSI is not set
306 438
307# 439#
@@ -312,6 +444,7 @@ CONFIG_IDE_GENERIC=y
312# 444#
313# Fusion MPT device support 445# Fusion MPT device support
314# 446#
447# CONFIG_FUSION is not set
315 448
316# 449#
317# IEEE 1394 (FireWire) support 450# IEEE 1394 (FireWire) support
@@ -322,78 +455,28 @@ CONFIG_IDE_GENERIC=y
322# 455#
323 456
324# 457#
325# Networking support 458# Network device support
326#
327CONFIG_NET=y
328
329#
330# Networking options
331# 459#
332CONFIG_PACKET=y 460CONFIG_NETDEVICES=y
333CONFIG_PACKET_MMAP=y 461# CONFIG_DUMMY is not set
334CONFIG_NETLINK_DEV=y 462# CONFIG_BONDING is not set
335CONFIG_UNIX=y 463# CONFIG_EQUALIZER is not set
336CONFIG_NET_KEY=y 464# CONFIG_TUN is not set
337CONFIG_INET=y
338# CONFIG_IP_MULTICAST is not set
339# CONFIG_IP_ADVANCED_ROUTER is not set
340CONFIG_IP_PNP=y
341# CONFIG_IP_PNP_DHCP is not set
342CONFIG_IP_PNP_BOOTP=y
343# CONFIG_IP_PNP_RARP is not set
344# CONFIG_NET_IPIP is not set
345# CONFIG_NET_IPGRE is not set
346# CONFIG_ARPD is not set
347# CONFIG_SYN_COOKIES is not set
348# CONFIG_INET_AH is not set
349# CONFIG_INET_ESP is not set
350# CONFIG_INET_IPCOMP is not set
351CONFIG_INET_TUNNEL=m
352CONFIG_IP_TCPDIAG=m
353# CONFIG_IP_TCPDIAG_IPV6 is not set
354# CONFIG_IPV6 is not set
355# CONFIG_NETFILTER is not set
356CONFIG_XFRM=y
357CONFIG_XFRM_USER=m
358 465
359# 466#
360# SCTP Configuration (EXPERIMENTAL) 467# PHY device support
361# 468#
362# CONFIG_IP_SCTP is not set 469CONFIG_PHYLIB=m
363# CONFIG_ATM is not set 470CONFIG_PHYCONTROL=y
364# CONFIG_BRIDGE is not set
365# CONFIG_VLAN_8021Q is not set
366# CONFIG_DECNET is not set
367# CONFIG_LLC2 is not set
368# CONFIG_IPX is not set
369# CONFIG_ATALK is not set
370# CONFIG_X25 is not set
371# CONFIG_LAPB is not set
372# CONFIG_NET_DIVERT is not set
373# CONFIG_ECONET is not set
374# CONFIG_WAN_ROUTER is not set
375 471
376# 472#
377# QoS and/or fair queueing 473# MII PHY device drivers
378# 474#
379# CONFIG_NET_SCHED is not set 475CONFIG_MARVELL_PHY=m
380# CONFIG_NET_CLS_ROUTE is not set 476CONFIG_DAVICOM_PHY=m
381 477CONFIG_QSEMI_PHY=m
382# 478CONFIG_LXT_PHY=m
383# Network testing 479CONFIG_CICADA_PHY=m
384#
385# CONFIG_NET_PKTGEN is not set
386# CONFIG_NETPOLL is not set
387# CONFIG_NET_POLL_CONTROLLER is not set
388# CONFIG_HAMRADIO is not set
389# CONFIG_IRDA is not set
390# CONFIG_BT is not set
391CONFIG_NETDEVICES=y
392# CONFIG_DUMMY is not set
393# CONFIG_BONDING is not set
394# CONFIG_EQUALIZER is not set
395# CONFIG_TUN is not set
396# CONFIG_ETHERTAP is not set
397 480
398# 481#
399# Ethernet (10 or 100Mbit) 482# Ethernet (10 or 100Mbit)
@@ -426,6 +509,8 @@ CONFIG_NET_ETHERNET=y
426# CONFIG_SLIP is not set 509# CONFIG_SLIP is not set
427# CONFIG_SHAPER is not set 510# CONFIG_SHAPER is not set
428# CONFIG_NETCONSOLE is not set 511# CONFIG_NETCONSOLE is not set
512# CONFIG_NETPOLL is not set
513# CONFIG_NET_POLL_CONTROLLER is not set
429 514
430# 515#
431# ISDN subsystem 516# ISDN subsystem
@@ -455,18 +540,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
455# CONFIG_INPUT_EVBUG is not set 540# CONFIG_INPUT_EVBUG is not set
456 541
457# 542#
458# Input I/O drivers
459#
460# CONFIG_GAMEPORT is not set
461CONFIG_SOUND_GAMEPORT=y
462CONFIG_SERIO=y
463# CONFIG_SERIO_I8042 is not set
464CONFIG_SERIO_SERPORT=y
465# CONFIG_SERIO_CT82C710 is not set
466# CONFIG_SERIO_LIBPS2 is not set
467CONFIG_SERIO_RAW=m
468
469#
470# Input Device Drivers 543# Input Device Drivers
471# 544#
472# CONFIG_INPUT_KEYBOARD is not set 545# CONFIG_INPUT_KEYBOARD is not set
@@ -476,6 +549,16 @@ CONFIG_SERIO_RAW=m
476# CONFIG_INPUT_MISC is not set 549# CONFIG_INPUT_MISC is not set
477 550
478# 551#
552# Hardware I/O ports
553#
554CONFIG_SERIO=y
555# CONFIG_SERIO_I8042 is not set
556CONFIG_SERIO_SERPORT=y
557# CONFIG_SERIO_LIBPS2 is not set
558CONFIG_SERIO_RAW=m
559# CONFIG_GAMEPORT is not set
560
561#
479# Character devices 562# Character devices
480# 563#
481CONFIG_VT=y 564CONFIG_VT=y
@@ -521,10 +604,13 @@ CONFIG_LEGACY_PTY_COUNT=256
521# 604#
522# Ftape, the floppy tape device driver 605# Ftape, the floppy tape device driver
523# 606#
524# CONFIG_DRM is not set
525# CONFIG_RAW_DRIVER is not set 607# CONFIG_RAW_DRIVER is not set
526 608
527# 609#
610# TPM devices
611#
612
613#
528# I2C support 614# I2C support
529# 615#
530# CONFIG_I2C is not set 616# CONFIG_I2C is not set
@@ -535,10 +621,20 @@ CONFIG_LEGACY_PTY_COUNT=256
535# CONFIG_W1 is not set 621# CONFIG_W1 is not set
536 622
537# 623#
624# Hardware Monitoring support
625#
626# CONFIG_HWMON is not set
627# CONFIG_HWMON_VID is not set
628
629#
538# Misc devices 630# Misc devices
539# 631#
540 632
541# 633#
634# Multimedia Capabilities Port drivers
635#
636
637#
542# Multimedia devices 638# Multimedia devices
543# 639#
544# CONFIG_VIDEO_DEV is not set 640# CONFIG_VIDEO_DEV is not set
@@ -558,7 +654,6 @@ CONFIG_LEGACY_PTY_COUNT=256
558# 654#
559# CONFIG_VGA_CONSOLE is not set 655# CONFIG_VGA_CONSOLE is not set
560CONFIG_DUMMY_CONSOLE=y 656CONFIG_DUMMY_CONSOLE=y
561# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
562 657
563# 658#
564# Sound 659# Sound
@@ -574,15 +669,9 @@ CONFIG_SOUND=y
574# Open Sound System 669# Open Sound System
575# 670#
576CONFIG_SOUND_PRIME=y 671CONFIG_SOUND_PRIME=y
577# CONFIG_SOUND_BT878 is not set
578# CONFIG_SOUND_FUSION is not set
579# CONFIG_SOUND_CS4281 is not set
580# CONFIG_SOUND_SONICVIBES is not set
581CONFIG_SOUND_IT8172=y 672CONFIG_SOUND_IT8172=y
582# CONFIG_SOUND_TRIDENT is not set
583# CONFIG_SOUND_MSNDCLAS is not set 673# CONFIG_SOUND_MSNDCLAS is not set
584# CONFIG_SOUND_MSNDPIN is not set 674# CONFIG_SOUND_MSNDPIN is not set
585# CONFIG_SOUND_OSS is not set
586# CONFIG_SOUND_AD1980 is not set 675# CONFIG_SOUND_AD1980 is not set
587 676
588# 677#
@@ -592,10 +681,6 @@ CONFIG_SOUND_IT8172=y
592# CONFIG_USB_ARCH_HAS_OHCI is not set 681# CONFIG_USB_ARCH_HAS_OHCI is not set
593 682
594# 683#
595# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
596#
597
598#
599# USB Gadget Support 684# USB Gadget Support
600# 685#
601# CONFIG_USB_GADGET is not set 686# CONFIG_USB_GADGET is not set
@@ -608,24 +693,31 @@ CONFIG_SOUND_IT8172=y
608# 693#
609# InfiniBand support 694# InfiniBand support
610# 695#
611# CONFIG_INFINIBAND is not set 696
697#
698# SN Devices
699#
612 700
613# 701#
614# File systems 702# File systems
615# 703#
616CONFIG_EXT2_FS=y 704CONFIG_EXT2_FS=y
617# CONFIG_EXT2_FS_XATTR is not set 705# CONFIG_EXT2_FS_XATTR is not set
706# CONFIG_EXT2_FS_XIP is not set
618# CONFIG_EXT3_FS is not set 707# CONFIG_EXT3_FS is not set
619# CONFIG_JBD is not set 708# CONFIG_JBD is not set
620# CONFIG_REISERFS_FS is not set 709# CONFIG_REISERFS_FS is not set
621# CONFIG_JFS_FS is not set 710# CONFIG_JFS_FS is not set
711# CONFIG_FS_POSIX_ACL is not set
622# CONFIG_XFS_FS is not set 712# CONFIG_XFS_FS is not set
623# CONFIG_MINIX_FS is not set 713# CONFIG_MINIX_FS is not set
624# CONFIG_ROMFS_FS is not set 714# CONFIG_ROMFS_FS is not set
715CONFIG_INOTIFY=y
625# CONFIG_QUOTA is not set 716# CONFIG_QUOTA is not set
626CONFIG_DNOTIFY=y 717CONFIG_DNOTIFY=y
627# CONFIG_AUTOFS_FS is not set 718# CONFIG_AUTOFS_FS is not set
628# CONFIG_AUTOFS4_FS is not set 719# CONFIG_AUTOFS4_FS is not set
720CONFIG_FUSE_FS=m
629 721
630# 722#
631# CD-ROM/DVD Filesystems 723# CD-ROM/DVD Filesystems
@@ -646,12 +738,10 @@ CONFIG_DNOTIFY=y
646CONFIG_PROC_FS=y 738CONFIG_PROC_FS=y
647CONFIG_PROC_KCORE=y 739CONFIG_PROC_KCORE=y
648CONFIG_SYSFS=y 740CONFIG_SYSFS=y
649# CONFIG_DEVFS_FS is not set
650CONFIG_DEVPTS_FS_XATTR=y
651CONFIG_DEVPTS_FS_SECURITY=y
652# CONFIG_TMPFS is not set 741# CONFIG_TMPFS is not set
653# CONFIG_HUGETLB_PAGE is not set 742# CONFIG_HUGETLB_PAGE is not set
654CONFIG_RAMFS=y 743CONFIG_RAMFS=y
744CONFIG_RELAYFS_FS=m
655 745
656# 746#
657# Miscellaneous filesystems 747# Miscellaneous filesystems
@@ -682,7 +772,7 @@ CONFIG_NFS_FS=y
682# CONFIG_NFSD is not set 772# CONFIG_NFSD is not set
683CONFIG_ROOT_NFS=y 773CONFIG_ROOT_NFS=y
684CONFIG_LOCKD=y 774CONFIG_LOCKD=y
685# CONFIG_EXPORTFS is not set 775CONFIG_NFS_COMMON=y
686CONFIG_SUNRPC=y 776CONFIG_SUNRPC=y
687# CONFIG_RPCSEC_GSS_KRB5 is not set 777# CONFIG_RPCSEC_GSS_KRB5 is not set
688# CONFIG_RPCSEC_GSS_SPKM3 is not set 778# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -691,6 +781,7 @@ CONFIG_SUNRPC=y
691# CONFIG_NCP_FS is not set 781# CONFIG_NCP_FS is not set
692# CONFIG_CODA_FS is not set 782# CONFIG_CODA_FS is not set
693# CONFIG_AFS_FS is not set 783# CONFIG_AFS_FS is not set
784# CONFIG_9P_FS is not set
694 785
695# 786#
696# Partition Types 787# Partition Types
@@ -711,7 +802,9 @@ CONFIG_MSDOS_PARTITION=y
711# 802#
712# Kernel hacking 803# Kernel hacking
713# 804#
805# CONFIG_PRINTK_TIME is not set
714# CONFIG_DEBUG_KERNEL is not set 806# CONFIG_DEBUG_KERNEL is not set
807CONFIG_LOG_BUF_SHIFT=14
715CONFIG_CROSSCOMPILE=y 808CONFIG_CROSSCOMPILE=y
716CONFIG_CMDLINE="" 809CONFIG_CMDLINE=""
717 810
@@ -725,7 +818,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
725# 818#
726# Cryptographic options 819# Cryptographic options
727# 820#
728# CONFIG_CRYPTO is not set 821CONFIG_CRYPTO=y
822CONFIG_CRYPTO_HMAC=y
823CONFIG_CRYPTO_NULL=m
824CONFIG_CRYPTO_MD4=m
825CONFIG_CRYPTO_MD5=m
826CONFIG_CRYPTO_SHA1=m
827CONFIG_CRYPTO_SHA256=m
828CONFIG_CRYPTO_SHA512=m
829CONFIG_CRYPTO_WP512=m
830CONFIG_CRYPTO_TGR192=m
831CONFIG_CRYPTO_DES=m
832CONFIG_CRYPTO_BLOWFISH=m
833CONFIG_CRYPTO_TWOFISH=m
834CONFIG_CRYPTO_SERPENT=m
835CONFIG_CRYPTO_AES=m
836CONFIG_CRYPTO_CAST5=m
837CONFIG_CRYPTO_CAST6=m
838CONFIG_CRYPTO_TEA=m
839CONFIG_CRYPTO_ARC4=m
840CONFIG_CRYPTO_KHAZAD=m
841CONFIG_CRYPTO_ANUBIS=m
842CONFIG_CRYPTO_DEFLATE=m
843CONFIG_CRYPTO_MICHAEL_MIC=m
844CONFIG_CRYPTO_CRC32C=m
845# CONFIG_CRYPTO_TEST is not set
729 846
730# 847#
731# Hardware crypto devices 848# Hardware crypto devices
@@ -735,7 +852,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
735# Library routines 852# Library routines
736# 853#
737# CONFIG_CRC_CCITT is not set 854# CONFIG_CRC_CCITT is not set
738# CONFIG_CRC32 is not set 855CONFIG_CRC16=m
856CONFIG_CRC32=m
739CONFIG_LIBCRC32C=m 857CONFIG_LIBCRC32C=m
740CONFIG_GENERIC_HARDIRQS=y 858CONFIG_ZLIB_INFLATE=m
741CONFIG_GENERIC_IRQ_PROBE=y 859CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/mips/configs/ivr_defconfig b/arch/mips/configs/ivr_defconfig
index 583ef5c5b1cd..9ba61dfc490d 100644
--- a/arch/mips/configs/ivr_defconfig
+++ b/arch/mips/configs/ivr_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:05 2005 4# Thu Oct 20 22:26:12 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,11 +11,13 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
@@ -26,13 +25,16 @@ CONFIG_BSD_PROCESS_ACCT=y
26# CONFIG_BSD_PROCESS_ACCT_V3 is not set 25# CONFIG_BSD_PROCESS_ACCT_V3 is not set
27CONFIG_SYSCTL=y 26CONFIG_SYSCTL=y
28# CONFIG_AUDIT is not set 27# CONFIG_AUDIT is not set
29CONFIG_LOG_BUF_SHIFT=14 28CONFIG_HOTPLUG=y
30# CONFIG_HOTPLUG is not set
31CONFIG_KOBJECT_UEVENT=y 29CONFIG_KOBJECT_UEVENT=y
32# CONFIG_IKCONFIG is not set 30# CONFIG_IKCONFIG is not set
31CONFIG_INITRAMFS_SOURCE=""
33CONFIG_EMBEDDED=y 32CONFIG_EMBEDDED=y
34CONFIG_KALLSYMS=y 33CONFIG_KALLSYMS=y
35# CONFIG_KALLSYMS_EXTRA_PASS is not set 34# CONFIG_KALLSYMS_EXTRA_PASS is not set
35CONFIG_PRINTK=y
36CONFIG_BUG=y
37CONFIG_BASE_FULL=y
36CONFIG_FUTEX=y 38CONFIG_FUTEX=y
37CONFIG_EPOLL=y 39CONFIG_EPOLL=y
38# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 40# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -42,6 +44,7 @@ CONFIG_CC_ALIGN_LABELS=0
42CONFIG_CC_ALIGN_LOOPS=0 44CONFIG_CC_ALIGN_LOOPS=0
43CONFIG_CC_ALIGN_JUMPS=0 45CONFIG_CC_ALIGN_JUMPS=0
44# CONFIG_TINY_SHMEM is not set 46# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0
45 48
46# 49#
47# Loadable module support 50# Loadable module support
@@ -57,40 +60,68 @@ CONFIG_KMOD=y
57# 60#
58# Machine selection 61# Machine selection
59# 62#
60# CONFIG_MACH_JAZZ is not set 63# CONFIG_MIPS_MTX1 is not set
61# CONFIG_MACH_VR41XX is not set 64# CONFIG_MIPS_BOSPORUS is not set
62# CONFIG_TOSHIBA_JMR3927 is not set 65# CONFIG_MIPS_PB1000 is not set
66# CONFIG_MIPS_PB1100 is not set
67# CONFIG_MIPS_PB1500 is not set
68# CONFIG_MIPS_PB1550 is not set
69# CONFIG_MIPS_PB1200 is not set
70# CONFIG_MIPS_DB1000 is not set
71# CONFIG_MIPS_DB1100 is not set
72# CONFIG_MIPS_DB1500 is not set
73# CONFIG_MIPS_DB1550 is not set
74# CONFIG_MIPS_DB1200 is not set
75# CONFIG_MIPS_MIRAGE is not set
63# CONFIG_MIPS_COBALT is not set 76# CONFIG_MIPS_COBALT is not set
64# CONFIG_MACH_DECSTATION is not set 77# CONFIG_MACH_DECSTATION is not set
65# CONFIG_MIPS_EV64120 is not set 78# CONFIG_MIPS_EV64120 is not set
66# CONFIG_MIPS_EV96100 is not set 79# CONFIG_MIPS_EV96100 is not set
67CONFIG_MIPS_IVR=y 80CONFIG_MIPS_IVR=y
68# CONFIG_LASAT is not set
69# CONFIG_MIPS_ITE8172 is not set 81# CONFIG_MIPS_ITE8172 is not set
82# CONFIG_MACH_JAZZ is not set
83# CONFIG_LASAT is not set
70# CONFIG_MIPS_ATLAS is not set 84# CONFIG_MIPS_ATLAS is not set
71# CONFIG_MIPS_MALTA is not set 85# CONFIG_MIPS_MALTA is not set
72# CONFIG_MIPS_SEAD is not set 86# CONFIG_MIPS_SEAD is not set
87# CONFIG_MIPS_SIM is not set
88# CONFIG_MOMENCO_JAGUAR_ATX is not set
73# CONFIG_MOMENCO_OCELOT is not set 89# CONFIG_MOMENCO_OCELOT is not set
74# CONFIG_MOMENCO_OCELOT_G is not set
75# CONFIG_MOMENCO_OCELOT_C is not set
76# CONFIG_MOMENCO_OCELOT_3 is not set 90# CONFIG_MOMENCO_OCELOT_3 is not set
77# CONFIG_MOMENCO_JAGUAR_ATX is not set 91# CONFIG_MOMENCO_OCELOT_C is not set
78# CONFIG_PMC_YOSEMITE is not set 92# CONFIG_MOMENCO_OCELOT_G is not set
93# CONFIG_MIPS_XXS1500 is not set
94# CONFIG_PNX8550_V2PCI is not set
95# CONFIG_PNX8550_JBS is not set
79# CONFIG_DDB5074 is not set 96# CONFIG_DDB5074 is not set
80# CONFIG_DDB5476 is not set 97# CONFIG_DDB5476 is not set
81# CONFIG_DDB5477 is not set 98# CONFIG_DDB5477 is not set
82# CONFIG_NEC_OSPREY is not set 99# CONFIG_MACH_VR41XX is not set
100# CONFIG_PMC_YOSEMITE is not set
101# CONFIG_QEMU is not set
83# CONFIG_SGI_IP22 is not set 102# CONFIG_SGI_IP22 is not set
84# CONFIG_SOC_AU1X00 is not set 103# CONFIG_SGI_IP27 is not set
85# CONFIG_SIBYTE_SB1xxx_SOC is not set 104# CONFIG_SGI_IP32 is not set
105# CONFIG_SIBYTE_BIGSUR is not set
106# CONFIG_SIBYTE_SWARM is not set
107# CONFIG_SIBYTE_SENTOSA is not set
108# CONFIG_SIBYTE_RHONE is not set
109# CONFIG_SIBYTE_CARMEL is not set
110# CONFIG_SIBYTE_PTSWARM is not set
111# CONFIG_SIBYTE_LITTLESUR is not set
112# CONFIG_SIBYTE_CRHINE is not set
113# CONFIG_SIBYTE_CRHONE is not set
86# CONFIG_SNI_RM200_PCI is not set 114# CONFIG_SNI_RM200_PCI is not set
115# CONFIG_TOSHIBA_JMR3927 is not set
87# CONFIG_TOSHIBA_RBTX4927 is not set 116# CONFIG_TOSHIBA_RBTX4927 is not set
117# CONFIG_TOSHIBA_RBTX4938 is not set
88CONFIG_RWSEM_GENERIC_SPINLOCK=y 118CONFIG_RWSEM_GENERIC_SPINLOCK=y
89CONFIG_GENERIC_CALIBRATE_DELAY=y 119CONFIG_GENERIC_CALIBRATE_DELAY=y
90CONFIG_HAVE_DEC_LOCK=y
91CONFIG_DMA_NONCOHERENT=y 120CONFIG_DMA_NONCOHERENT=y
92CONFIG_DMA_NEED_PCI_MAP_STATE=y 121CONFIG_DMA_NEED_PCI_MAP_STATE=y
122# CONFIG_CPU_BIG_ENDIAN is not set
93CONFIG_CPU_LITTLE_ENDIAN=y 123CONFIG_CPU_LITTLE_ENDIAN=y
124CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
94CONFIG_ITE_BOARD_GEN=y 125CONFIG_ITE_BOARD_GEN=y
95CONFIG_IT8172_CIR=y 126CONFIG_IT8172_CIR=y
96CONFIG_MIPS_L1_CACHE_SHIFT=5 127CONFIG_MIPS_L1_CACHE_SHIFT=5
@@ -98,8 +129,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
98# 129#
99# CPU selection 130# CPU selection
100# 131#
101# CONFIG_CPU_MIPS32 is not set 132# CONFIG_CPU_MIPS32_R1 is not set
102# CONFIG_CPU_MIPS64 is not set 133# CONFIG_CPU_MIPS32_R2 is not set
134# CONFIG_CPU_MIPS64_R1 is not set
135# CONFIG_CPU_MIPS64_R2 is not set
103# CONFIG_CPU_R3000 is not set 136# CONFIG_CPU_R3000 is not set
104# CONFIG_CPU_TX39XX is not set 137# CONFIG_CPU_TX39XX is not set
105# CONFIG_CPU_VR41XX is not set 138# CONFIG_CPU_VR41XX is not set
@@ -115,14 +148,38 @@ CONFIG_CPU_NEVADA=y
115# CONFIG_CPU_RM7000 is not set 148# CONFIG_CPU_RM7000 is not set
116# CONFIG_CPU_RM9000 is not set 149# CONFIG_CPU_RM9000 is not set
117# CONFIG_CPU_SB1 is not set 150# CONFIG_CPU_SB1 is not set
151CONFIG_SYS_HAS_CPU_NEVADA=y
152CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
153CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
154CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
155CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
156
157#
158# Kernel type
159#
160CONFIG_32BIT=y
161# CONFIG_64BIT is not set
118CONFIG_PAGE_SIZE_4KB=y 162CONFIG_PAGE_SIZE_4KB=y
119# CONFIG_PAGE_SIZE_8KB is not set 163# CONFIG_PAGE_SIZE_8KB is not set
120# CONFIG_PAGE_SIZE_16KB is not set 164# CONFIG_PAGE_SIZE_16KB is not set
121# CONFIG_PAGE_SIZE_64KB is not set 165# CONFIG_PAGE_SIZE_64KB is not set
166# CONFIG_MIPS_MT is not set
122# CONFIG_CPU_ADVANCED is not set 167# CONFIG_CPU_ADVANCED is not set
123CONFIG_CPU_HAS_LLSC=y 168CONFIG_CPU_HAS_LLSC=y
124CONFIG_CPU_HAS_LLDSCD=y 169CONFIG_CPU_HAS_LLDSCD=y
125CONFIG_CPU_HAS_SYNC=y 170CONFIG_CPU_HAS_SYNC=y
171CONFIG_GENERIC_HARDIRQS=y
172CONFIG_GENERIC_IRQ_PROBE=y
173CONFIG_ARCH_FLATMEM_ENABLE=y
174CONFIG_SELECT_MEMORY_MODEL=y
175CONFIG_FLATMEM_MANUAL=y
176# CONFIG_DISCONTIGMEM_MANUAL is not set
177# CONFIG_SPARSEMEM_MANUAL is not set
178CONFIG_FLATMEM=y
179CONFIG_FLAT_NODE_MEM_MAP=y
180# CONFIG_SPARSEMEM_STATIC is not set
181CONFIG_PREEMPT_NONE=y
182# CONFIG_PREEMPT_VOLUNTARY is not set
126# CONFIG_PREEMPT is not set 183# CONFIG_PREEMPT is not set
127 184
128# 185#
@@ -131,7 +188,6 @@ CONFIG_CPU_HAS_SYNC=y
131CONFIG_HW_HAS_PCI=y 188CONFIG_HW_HAS_PCI=y
132CONFIG_PCI=y 189CONFIG_PCI=y
133CONFIG_PCI_LEGACY_PROC=y 190CONFIG_PCI_LEGACY_PROC=y
134CONFIG_PCI_NAMES=y
135CONFIG_MMU=y 191CONFIG_MMU=y
136 192
137# 193#
@@ -140,10 +196,6 @@ CONFIG_MMU=y
140# CONFIG_PCCARD is not set 196# CONFIG_PCCARD is not set
141 197
142# 198#
143# PC-card bridges
144#
145
146#
147# PCI Hotplug Support 199# PCI Hotplug Support
148# 200#
149# CONFIG_HOTPLUG_PCI is not set 201# CONFIG_HOTPLUG_PCI is not set
@@ -156,6 +208,80 @@ CONFIG_BINFMT_ELF=y
156CONFIG_TRAD_SIGNALS=y 208CONFIG_TRAD_SIGNALS=y
157 209
158# 210#
211# Networking
212#
213CONFIG_NET=y
214
215#
216# Networking options
217#
218CONFIG_PACKET=y
219CONFIG_PACKET_MMAP=y
220CONFIG_UNIX=y
221CONFIG_XFRM=y
222CONFIG_XFRM_USER=m
223CONFIG_NET_KEY=y
224CONFIG_INET=y
225# CONFIG_IP_MULTICAST is not set
226# CONFIG_IP_ADVANCED_ROUTER is not set
227CONFIG_IP_FIB_HASH=y
228CONFIG_IP_PNP=y
229# CONFIG_IP_PNP_DHCP is not set
230CONFIG_IP_PNP_BOOTP=y
231# CONFIG_IP_PNP_RARP is not set
232# CONFIG_NET_IPIP is not set
233# CONFIG_NET_IPGRE is not set
234# CONFIG_ARPD is not set
235# CONFIG_SYN_COOKIES is not set
236# CONFIG_INET_AH is not set
237# CONFIG_INET_ESP is not set
238# CONFIG_INET_IPCOMP is not set
239CONFIG_INET_TUNNEL=m
240CONFIG_INET_DIAG=y
241CONFIG_INET_TCP_DIAG=y
242# CONFIG_TCP_CONG_ADVANCED is not set
243CONFIG_TCP_CONG_BIC=y
244# CONFIG_IPV6 is not set
245# CONFIG_NETFILTER is not set
246
247#
248# DCCP Configuration (EXPERIMENTAL)
249#
250# CONFIG_IP_DCCP is not set
251
252#
253# SCTP Configuration (EXPERIMENTAL)
254#
255# CONFIG_IP_SCTP is not set
256# CONFIG_ATM is not set
257# CONFIG_BRIDGE is not set
258# CONFIG_VLAN_8021Q is not set
259# CONFIG_DECNET is not set
260# CONFIG_LLC2 is not set
261# CONFIG_IPX is not set
262# CONFIG_ATALK is not set
263# CONFIG_X25 is not set
264# CONFIG_LAPB is not set
265# CONFIG_NET_DIVERT is not set
266# CONFIG_ECONET is not set
267# CONFIG_WAN_ROUTER is not set
268# CONFIG_NET_SCHED is not set
269# CONFIG_NET_CLS_ROUTE is not set
270
271#
272# Network testing
273#
274# CONFIG_NET_PKTGEN is not set
275# CONFIG_HAMRADIO is not set
276# CONFIG_IRDA is not set
277# CONFIG_BT is not set
278CONFIG_IEEE80211=m
279# CONFIG_IEEE80211_DEBUG is not set
280CONFIG_IEEE80211_CRYPT_WEP=m
281CONFIG_IEEE80211_CRYPT_CCMP=m
282CONFIG_IEEE80211_CRYPT_TKIP=m
283
284#
159# Device Drivers 285# Device Drivers
160# 286#
161 287
@@ -164,7 +290,12 @@ CONFIG_TRAD_SIGNALS=y
164# 290#
165CONFIG_STANDALONE=y 291CONFIG_STANDALONE=y
166CONFIG_PREVENT_FIRMWARE_BUILD=y 292CONFIG_PREVENT_FIRMWARE_BUILD=y
167# CONFIG_FW_LOADER is not set 293CONFIG_FW_LOADER=m
294
295#
296# Connector - unified userspace <-> kernelspace linker
297#
298CONFIG_CONNECTOR=m
168 299
169# 300#
170# Memory Technology Devices (MTD) 301# Memory Technology Devices (MTD)
@@ -183,7 +314,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
183# 314#
184# Block devices 315# Block devices
185# 316#
186# CONFIG_BLK_DEV_FD is not set
187# CONFIG_BLK_CPQ_DA is not set 317# CONFIG_BLK_CPQ_DA is not set
188# CONFIG_BLK_CPQ_CISS_DA is not set 318# CONFIG_BLK_CPQ_CISS_DA is not set
189# CONFIG_BLK_DEV_DAC960 is not set 319# CONFIG_BLK_DEV_DAC960 is not set
@@ -194,7 +324,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
194# CONFIG_BLK_DEV_SX8 is not set 324# CONFIG_BLK_DEV_SX8 is not set
195# CONFIG_BLK_DEV_RAM is not set 325# CONFIG_BLK_DEV_RAM is not set
196CONFIG_BLK_DEV_RAM_COUNT=16 326CONFIG_BLK_DEV_RAM_COUNT=16
197CONFIG_INITRAMFS_SOURCE=""
198# CONFIG_LBD is not set 327# CONFIG_LBD is not set
199CONFIG_CDROM_PKTCDVD=m 328CONFIG_CDROM_PKTCDVD=m
200CONFIG_CDROM_PKTCDVD_BUFFERS=8 329CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -239,6 +368,7 @@ CONFIG_IDE_GENERIC=y
239# 368#
240# SCSI device support 369# SCSI device support
241# 370#
371CONFIG_RAID_ATTRS=m
242# CONFIG_SCSI is not set 372# CONFIG_SCSI is not set
243 373
244# 374#
@@ -249,6 +379,7 @@ CONFIG_IDE_GENERIC=y
249# 379#
250# Fusion MPT device support 380# Fusion MPT device support
251# 381#
382# CONFIG_FUSION is not set
252 383
253# 384#
254# IEEE 1394 (FireWire) support 385# IEEE 1394 (FireWire) support
@@ -261,78 +392,13 @@ CONFIG_IDE_GENERIC=y
261# CONFIG_I2O is not set 392# CONFIG_I2O is not set
262 393
263# 394#
264# Networking support 395# Network device support
265#
266CONFIG_NET=y
267
268#
269# Networking options
270#
271CONFIG_PACKET=y
272CONFIG_PACKET_MMAP=y
273CONFIG_NETLINK_DEV=y
274CONFIG_UNIX=y
275CONFIG_NET_KEY=y
276CONFIG_INET=y
277# CONFIG_IP_MULTICAST is not set
278# CONFIG_IP_ADVANCED_ROUTER is not set
279CONFIG_IP_PNP=y
280# CONFIG_IP_PNP_DHCP is not set
281CONFIG_IP_PNP_BOOTP=y
282# CONFIG_IP_PNP_RARP is not set
283# CONFIG_NET_IPIP is not set
284# CONFIG_NET_IPGRE is not set
285# CONFIG_ARPD is not set
286# CONFIG_SYN_COOKIES is not set
287# CONFIG_INET_AH is not set
288# CONFIG_INET_ESP is not set
289# CONFIG_INET_IPCOMP is not set
290CONFIG_INET_TUNNEL=m
291CONFIG_IP_TCPDIAG=m
292# CONFIG_IP_TCPDIAG_IPV6 is not set
293# CONFIG_IPV6 is not set
294# CONFIG_NETFILTER is not set
295CONFIG_XFRM=y
296CONFIG_XFRM_USER=m
297
298#
299# SCTP Configuration (EXPERIMENTAL)
300# 396#
301# CONFIG_IP_SCTP is not set
302# CONFIG_ATM is not set
303# CONFIG_BRIDGE is not set
304# CONFIG_VLAN_8021Q is not set
305# CONFIG_DECNET is not set
306# CONFIG_LLC2 is not set
307# CONFIG_IPX is not set
308# CONFIG_ATALK is not set
309# CONFIG_X25 is not set
310# CONFIG_LAPB is not set
311# CONFIG_NET_DIVERT is not set
312# CONFIG_ECONET is not set
313# CONFIG_WAN_ROUTER is not set
314
315#
316# QoS and/or fair queueing
317#
318# CONFIG_NET_SCHED is not set
319# CONFIG_NET_CLS_ROUTE is not set
320
321#
322# Network testing
323#
324# CONFIG_NET_PKTGEN is not set
325# CONFIG_NETPOLL is not set
326# CONFIG_NET_POLL_CONTROLLER is not set
327# CONFIG_HAMRADIO is not set
328# CONFIG_IRDA is not set
329# CONFIG_BT is not set
330CONFIG_NETDEVICES=y 397CONFIG_NETDEVICES=y
331# CONFIG_DUMMY is not set 398# CONFIG_DUMMY is not set
332# CONFIG_BONDING is not set 399# CONFIG_BONDING is not set
333# CONFIG_EQUALIZER is not set 400# CONFIG_EQUALIZER is not set
334# CONFIG_TUN is not set 401# CONFIG_TUN is not set
335# CONFIG_ETHERTAP is not set
336 402
337# 403#
338# ARCnet devices 404# ARCnet devices
@@ -340,6 +406,21 @@ CONFIG_NETDEVICES=y
340# CONFIG_ARCNET is not set 406# CONFIG_ARCNET is not set
341 407
342# 408#
409# PHY device support
410#
411CONFIG_PHYLIB=m
412CONFIG_PHYCONTROL=y
413
414#
415# MII PHY device drivers
416#
417CONFIG_MARVELL_PHY=m
418CONFIG_DAVICOM_PHY=m
419CONFIG_QSEMI_PHY=m
420CONFIG_LXT_PHY=m
421CONFIG_CICADA_PHY=m
422
423#
343# Ethernet (10 or 100Mbit) 424# Ethernet (10 or 100Mbit)
344# 425#
345CONFIG_NET_ETHERNET=y 426CONFIG_NET_ETHERNET=y
@@ -365,12 +446,16 @@ CONFIG_NET_ETHERNET=y
365# CONFIG_HAMACHI is not set 446# CONFIG_HAMACHI is not set
366# CONFIG_YELLOWFIN is not set 447# CONFIG_YELLOWFIN is not set
367# CONFIG_R8169 is not set 448# CONFIG_R8169 is not set
449# CONFIG_SIS190 is not set
450# CONFIG_SKGE is not set
368# CONFIG_SK98LIN is not set 451# CONFIG_SK98LIN is not set
369# CONFIG_TIGON3 is not set 452# CONFIG_TIGON3 is not set
453# CONFIG_BNX2 is not set
370 454
371# 455#
372# Ethernet (10000 Mbit) 456# Ethernet (10000 Mbit)
373# 457#
458# CONFIG_CHELSIO_T1 is not set
374# CONFIG_IXGB is not set 459# CONFIG_IXGB is not set
375# CONFIG_S2IO is not set 460# CONFIG_S2IO is not set
376 461
@@ -383,6 +468,8 @@ CONFIG_NET_ETHERNET=y
383# Wireless LAN (non-hamradio) 468# Wireless LAN (non-hamradio)
384# 469#
385# CONFIG_NET_RADIO is not set 470# CONFIG_NET_RADIO is not set
471# CONFIG_IPW_DEBUG is not set
472CONFIG_IPW2200=m
386 473
387# 474#
388# Wan interfaces 475# Wan interfaces
@@ -394,6 +481,8 @@ CONFIG_NET_ETHERNET=y
394# CONFIG_SLIP is not set 481# CONFIG_SLIP is not set
395# CONFIG_SHAPER is not set 482# CONFIG_SHAPER is not set
396# CONFIG_NETCONSOLE is not set 483# CONFIG_NETCONSOLE is not set
484# CONFIG_NETPOLL is not set
485# CONFIG_NET_POLL_CONTROLLER is not set
397 486
398# 487#
399# ISDN subsystem 488# ISDN subsystem
@@ -423,19 +512,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
423# CONFIG_INPUT_EVBUG is not set 512# CONFIG_INPUT_EVBUG is not set
424 513
425# 514#
426# Input I/O drivers
427#
428# CONFIG_GAMEPORT is not set
429CONFIG_SOUND_GAMEPORT=y
430CONFIG_SERIO=y
431# CONFIG_SERIO_I8042 is not set
432CONFIG_SERIO_SERPORT=y
433# CONFIG_SERIO_CT82C710 is not set
434# CONFIG_SERIO_PCIPS2 is not set
435# CONFIG_SERIO_LIBPS2 is not set
436CONFIG_SERIO_RAW=m
437
438#
439# Input Device Drivers 515# Input Device Drivers
440# 516#
441# CONFIG_INPUT_KEYBOARD is not set 517# CONFIG_INPUT_KEYBOARD is not set
@@ -445,6 +521,17 @@ CONFIG_SERIO_RAW=m
445# CONFIG_INPUT_MISC is not set 521# CONFIG_INPUT_MISC is not set
446 522
447# 523#
524# Hardware I/O ports
525#
526CONFIG_SERIO=y
527# CONFIG_SERIO_I8042 is not set
528CONFIG_SERIO_SERPORT=y
529# CONFIG_SERIO_PCIPS2 is not set
530# CONFIG_SERIO_LIBPS2 is not set
531CONFIG_SERIO_RAW=m
532# CONFIG_GAMEPORT is not set
533
534#
448# Character devices 535# Character devices
449# 536#
450CONFIG_VT=y 537CONFIG_VT=y
@@ -467,6 +554,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4
467# 554#
468CONFIG_SERIAL_CORE=y 555CONFIG_SERIAL_CORE=y
469CONFIG_SERIAL_CORE_CONSOLE=y 556CONFIG_SERIAL_CORE_CONSOLE=y
557# CONFIG_SERIAL_JSM is not set
470CONFIG_UNIX98_PTYS=y 558CONFIG_UNIX98_PTYS=y
471CONFIG_LEGACY_PTYS=y 559CONFIG_LEGACY_PTYS=y
472CONFIG_LEGACY_PTY_COUNT=256 560CONFIG_LEGACY_PTY_COUNT=256
@@ -492,6 +580,11 @@ CONFIG_RTC=y
492# CONFIG_RAW_DRIVER is not set 580# CONFIG_RAW_DRIVER is not set
493 581
494# 582#
583# TPM devices
584#
585# CONFIG_TCG_TPM is not set
586
587#
495# I2C support 588# I2C support
496# 589#
497# CONFIG_I2C is not set 590# CONFIG_I2C is not set
@@ -502,10 +595,20 @@ CONFIG_RTC=y
502# CONFIG_W1 is not set 595# CONFIG_W1 is not set
503 596
504# 597#
598# Hardware Monitoring support
599#
600# CONFIG_HWMON is not set
601# CONFIG_HWMON_VID is not set
602
603#
505# Misc devices 604# Misc devices
506# 605#
507 606
508# 607#
608# Multimedia Capabilities Port drivers
609#
610
611#
509# Multimedia devices 612# Multimedia devices
510# 613#
511# CONFIG_VIDEO_DEV is not set 614# CONFIG_VIDEO_DEV is not set
@@ -525,7 +628,6 @@ CONFIG_RTC=y
525# 628#
526# CONFIG_VGA_CONSOLE is not set 629# CONFIG_VGA_CONSOLE is not set
527CONFIG_DUMMY_CONSOLE=y 630CONFIG_DUMMY_CONSOLE=y
528# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
529 631
530# 632#
531# Sound 633# Sound
@@ -535,13 +637,9 @@ CONFIG_DUMMY_CONSOLE=y
535# 637#
536# USB support 638# USB support
537# 639#
538# CONFIG_USB is not set
539CONFIG_USB_ARCH_HAS_HCD=y 640CONFIG_USB_ARCH_HAS_HCD=y
540CONFIG_USB_ARCH_HAS_OHCI=y 641CONFIG_USB_ARCH_HAS_OHCI=y
541 642# CONFIG_USB is not set
542#
543# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
544#
545 643
546# 644#
547# USB Gadget Support 645# USB Gadget Support
@@ -559,21 +657,29 @@ CONFIG_USB_ARCH_HAS_OHCI=y
559# CONFIG_INFINIBAND is not set 657# CONFIG_INFINIBAND is not set
560 658
561# 659#
660# SN Devices
661#
662
663#
562# File systems 664# File systems
563# 665#
564CONFIG_EXT2_FS=y 666CONFIG_EXT2_FS=y
565# CONFIG_EXT2_FS_XATTR is not set 667# CONFIG_EXT2_FS_XATTR is not set
668# CONFIG_EXT2_FS_XIP is not set
566# CONFIG_EXT3_FS is not set 669# CONFIG_EXT3_FS is not set
567# CONFIG_JBD is not set 670# CONFIG_JBD is not set
568# CONFIG_REISERFS_FS is not set 671# CONFIG_REISERFS_FS is not set
569# CONFIG_JFS_FS is not set 672# CONFIG_JFS_FS is not set
673# CONFIG_FS_POSIX_ACL is not set
570# CONFIG_XFS_FS is not set 674# CONFIG_XFS_FS is not set
571# CONFIG_MINIX_FS is not set 675# CONFIG_MINIX_FS is not set
572# CONFIG_ROMFS_FS is not set 676# CONFIG_ROMFS_FS is not set
677CONFIG_INOTIFY=y
573# CONFIG_QUOTA is not set 678# CONFIG_QUOTA is not set
574CONFIG_DNOTIFY=y 679CONFIG_DNOTIFY=y
575# CONFIG_AUTOFS_FS is not set 680# CONFIG_AUTOFS_FS is not set
576# CONFIG_AUTOFS4_FS is not set 681# CONFIG_AUTOFS4_FS is not set
682CONFIG_FUSE_FS=m
577 683
578# 684#
579# CD-ROM/DVD Filesystems 685# CD-ROM/DVD Filesystems
@@ -594,12 +700,10 @@ CONFIG_DNOTIFY=y
594CONFIG_PROC_FS=y 700CONFIG_PROC_FS=y
595CONFIG_PROC_KCORE=y 701CONFIG_PROC_KCORE=y
596CONFIG_SYSFS=y 702CONFIG_SYSFS=y
597# CONFIG_DEVFS_FS is not set
598CONFIG_DEVPTS_FS_XATTR=y
599CONFIG_DEVPTS_FS_SECURITY=y
600# CONFIG_TMPFS is not set 703# CONFIG_TMPFS is not set
601# CONFIG_HUGETLB_PAGE is not set 704# CONFIG_HUGETLB_PAGE is not set
602CONFIG_RAMFS=y 705CONFIG_RAMFS=y
706CONFIG_RELAYFS_FS=m
603 707
604# 708#
605# Miscellaneous filesystems 709# Miscellaneous filesystems
@@ -628,7 +732,7 @@ CONFIG_NFS_FS=y
628# CONFIG_NFSD is not set 732# CONFIG_NFSD is not set
629CONFIG_ROOT_NFS=y 733CONFIG_ROOT_NFS=y
630CONFIG_LOCKD=y 734CONFIG_LOCKD=y
631# CONFIG_EXPORTFS is not set 735CONFIG_NFS_COMMON=y
632CONFIG_SUNRPC=y 736CONFIG_SUNRPC=y
633# CONFIG_RPCSEC_GSS_KRB5 is not set 737# CONFIG_RPCSEC_GSS_KRB5 is not set
634# CONFIG_RPCSEC_GSS_SPKM3 is not set 738# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -637,6 +741,7 @@ CONFIG_SUNRPC=y
637# CONFIG_NCP_FS is not set 741# CONFIG_NCP_FS is not set
638# CONFIG_CODA_FS is not set 742# CONFIG_CODA_FS is not set
639# CONFIG_AFS_FS is not set 743# CONFIG_AFS_FS is not set
744# CONFIG_9P_FS is not set
640 745
641# 746#
642# Partition Types 747# Partition Types
@@ -657,7 +762,9 @@ CONFIG_MSDOS_PARTITION=y
657# 762#
658# Kernel hacking 763# Kernel hacking
659# 764#
765# CONFIG_PRINTK_TIME is not set
660# CONFIG_DEBUG_KERNEL is not set 766# CONFIG_DEBUG_KERNEL is not set
767CONFIG_LOG_BUF_SHIFT=14
661CONFIG_CROSSCOMPILE=y 768CONFIG_CROSSCOMPILE=y
662CONFIG_CMDLINE="" 769CONFIG_CMDLINE=""
663 770
@@ -671,7 +778,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
671# 778#
672# Cryptographic options 779# Cryptographic options
673# 780#
674# CONFIG_CRYPTO is not set 781CONFIG_CRYPTO=y
782CONFIG_CRYPTO_HMAC=y
783CONFIG_CRYPTO_NULL=m
784CONFIG_CRYPTO_MD4=m
785CONFIG_CRYPTO_MD5=m
786CONFIG_CRYPTO_SHA1=m
787CONFIG_CRYPTO_SHA256=m
788CONFIG_CRYPTO_SHA512=m
789CONFIG_CRYPTO_WP512=m
790CONFIG_CRYPTO_TGR192=m
791CONFIG_CRYPTO_DES=m
792CONFIG_CRYPTO_BLOWFISH=m
793CONFIG_CRYPTO_TWOFISH=m
794CONFIG_CRYPTO_SERPENT=m
795CONFIG_CRYPTO_AES=m
796CONFIG_CRYPTO_CAST5=m
797CONFIG_CRYPTO_CAST6=m
798CONFIG_CRYPTO_TEA=m
799CONFIG_CRYPTO_ARC4=m
800CONFIG_CRYPTO_KHAZAD=m
801CONFIG_CRYPTO_ANUBIS=m
802CONFIG_CRYPTO_DEFLATE=m
803CONFIG_CRYPTO_MICHAEL_MIC=m
804CONFIG_CRYPTO_CRC32C=m
805# CONFIG_CRYPTO_TEST is not set
675 806
676# 807#
677# Hardware crypto devices 808# Hardware crypto devices
@@ -681,7 +812,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
681# Library routines 812# Library routines
682# 813#
683# CONFIG_CRC_CCITT is not set 814# CONFIG_CRC_CCITT is not set
684# CONFIG_CRC32 is not set 815CONFIG_CRC16=m
816CONFIG_CRC32=m
685CONFIG_LIBCRC32C=m 817CONFIG_LIBCRC32C=m
686CONFIG_GENERIC_HARDIRQS=y 818CONFIG_ZLIB_INFLATE=m
687CONFIG_GENERIC_IRQ_PROBE=y 819CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/mips/configs/jaguar-atx_defconfig b/arch/mips/configs/jaguar-atx_defconfig
index 8abb5a0c6c12..21b2b8042f91 100644
--- a/arch/mips/configs/jaguar-atx_defconfig
+++ b/arch/mips/configs/jaguar-atx_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:05 2005 4# Thu Oct 20 22:26:14 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14# CONFIG_EXPERIMENTAL is not set 11# CONFIG_EXPERIMENTAL is not set
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_BSD_PROCESS_ACCT is not set 23# CONFIG_BSD_PROCESS_ACCT is not set
25CONFIG_SYSCTL=y 24CONFIG_SYSCTL=y
26# CONFIG_AUDIT is not set 25# CONFIG_AUDIT is not set
27CONFIG_LOG_BUF_SHIFT=14 26CONFIG_HOTPLUG=y
28# CONFIG_HOTPLUG is not set
29CONFIG_KOBJECT_UEVENT=y 27CONFIG_KOBJECT_UEVENT=y
30CONFIG_IKCONFIG=y 28CONFIG_IKCONFIG=y
31CONFIG_IKCONFIG_PROC=y 29CONFIG_IKCONFIG_PROC=y
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -54,36 +57,70 @@ CONFIG_KMOD=y
54# 57#
55# Machine selection 58# Machine selection
56# 59#
57# CONFIG_MACH_JAZZ is not set 60# CONFIG_MIPS_MTX1 is not set
58# CONFIG_MACH_VR41XX is not set 61# CONFIG_MIPS_BOSPORUS is not set
59# CONFIG_TOSHIBA_JMR3927 is not set 62# CONFIG_MIPS_PB1000 is not set
63# CONFIG_MIPS_PB1100 is not set
64# CONFIG_MIPS_PB1500 is not set
65# CONFIG_MIPS_PB1550 is not set
66# CONFIG_MIPS_PB1200 is not set
67# CONFIG_MIPS_DB1000 is not set
68# CONFIG_MIPS_DB1100 is not set
69# CONFIG_MIPS_DB1500 is not set
70# CONFIG_MIPS_DB1550 is not set
71# CONFIG_MIPS_DB1200 is not set
72# CONFIG_MIPS_MIRAGE is not set
73# CONFIG_MIPS_COBALT is not set
60# CONFIG_MACH_DECSTATION is not set 74# CONFIG_MACH_DECSTATION is not set
75# CONFIG_MIPS_EV64120 is not set
76# CONFIG_MIPS_EV96100 is not set
61# CONFIG_MIPS_IVR is not set 77# CONFIG_MIPS_IVR is not set
62# CONFIG_LASAT is not set
63# CONFIG_MIPS_ITE8172 is not set 78# CONFIG_MIPS_ITE8172 is not set
79# CONFIG_MACH_JAZZ is not set
80# CONFIG_LASAT is not set
64# CONFIG_MIPS_ATLAS is not set 81# CONFIG_MIPS_ATLAS is not set
65# CONFIG_MIPS_MALTA is not set 82# CONFIG_MIPS_MALTA is not set
83# CONFIG_MIPS_SEAD is not set
84# CONFIG_MIPS_SIM is not set
85CONFIG_MOMENCO_JAGUAR_ATX=y
66# CONFIG_MOMENCO_OCELOT is not set 86# CONFIG_MOMENCO_OCELOT is not set
67# CONFIG_MOMENCO_OCELOT_G is not set
68# CONFIG_MOMENCO_OCELOT_C is not set
69# CONFIG_MOMENCO_OCELOT_3 is not set 87# CONFIG_MOMENCO_OCELOT_3 is not set
70CONFIG_MOMENCO_JAGUAR_ATX=y 88# CONFIG_MOMENCO_OCELOT_C is not set
71CONFIG_JAGUAR_DMALOW=y 89# CONFIG_MOMENCO_OCELOT_G is not set
72# CONFIG_PMC_YOSEMITE is not set 90# CONFIG_MIPS_XXS1500 is not set
91# CONFIG_PNX8550_V2PCI is not set
92# CONFIG_PNX8550_JBS is not set
93# CONFIG_DDB5074 is not set
73# CONFIG_DDB5476 is not set 94# CONFIG_DDB5476 is not set
74# CONFIG_DDB5477 is not set 95# CONFIG_DDB5477 is not set
75# CONFIG_NEC_OSPREY is not set 96# CONFIG_MACH_VR41XX is not set
97# CONFIG_PMC_YOSEMITE is not set
98# CONFIG_QEMU is not set
76# CONFIG_SGI_IP22 is not set 99# CONFIG_SGI_IP22 is not set
77# CONFIG_SOC_AU1X00 is not set 100# CONFIG_SGI_IP27 is not set
101# CONFIG_SGI_IP32 is not set
102# CONFIG_SIBYTE_BIGSUR is not set
103# CONFIG_SIBYTE_SWARM is not set
104# CONFIG_SIBYTE_SENTOSA is not set
105# CONFIG_SIBYTE_RHONE is not set
106# CONFIG_SIBYTE_CARMEL is not set
107# CONFIG_SIBYTE_PTSWARM is not set
108# CONFIG_SIBYTE_LITTLESUR is not set
109# CONFIG_SIBYTE_CRHINE is not set
110# CONFIG_SIBYTE_CRHONE is not set
78# CONFIG_SNI_RM200_PCI is not set 111# CONFIG_SNI_RM200_PCI is not set
112# CONFIG_TOSHIBA_JMR3927 is not set
79# CONFIG_TOSHIBA_RBTX4927 is not set 113# CONFIG_TOSHIBA_RBTX4927 is not set
114# CONFIG_TOSHIBA_RBTX4938 is not set
115CONFIG_JAGUAR_DMALOW=y
80CONFIG_RWSEM_GENERIC_SPINLOCK=y 116CONFIG_RWSEM_GENERIC_SPINLOCK=y
81CONFIG_GENERIC_CALIBRATE_DELAY=y 117CONFIG_GENERIC_CALIBRATE_DELAY=y
82CONFIG_HAVE_DEC_LOCK=y
83CONFIG_DMA_NONCOHERENT=y 118CONFIG_DMA_NONCOHERENT=y
84CONFIG_DMA_NEED_PCI_MAP_STATE=y 119CONFIG_DMA_NEED_PCI_MAP_STATE=y
85CONFIG_LIMITED_DMA=y 120CONFIG_LIMITED_DMA=y
121CONFIG_CPU_BIG_ENDIAN=y
86# CONFIG_CPU_LITTLE_ENDIAN is not set 122# CONFIG_CPU_LITTLE_ENDIAN is not set
123CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
87CONFIG_IRQ_CPU=y 124CONFIG_IRQ_CPU=y
88CONFIG_IRQ_CPU_RM7K=y 125CONFIG_IRQ_CPU_RM7K=y
89CONFIG_IRQ_MV64340=y 126CONFIG_IRQ_MV64340=y
@@ -95,8 +132,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
95# 132#
96# CPU selection 133# CPU selection
97# 134#
98# CONFIG_CPU_MIPS32 is not set 135# CONFIG_CPU_MIPS32_R1 is not set
99# CONFIG_CPU_MIPS64 is not set 136# CONFIG_CPU_MIPS32_R2 is not set
137# CONFIG_CPU_MIPS64_R1 is not set
138# CONFIG_CPU_MIPS64_R2 is not set
100# CONFIG_CPU_R3000 is not set 139# CONFIG_CPU_R3000 is not set
101# CONFIG_CPU_TX39XX is not set 140# CONFIG_CPU_TX39XX is not set
102# CONFIG_CPU_VR41XX is not set 141# CONFIG_CPU_VR41XX is not set
@@ -112,6 +151,17 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
112# CONFIG_CPU_RM7000 is not set 151# CONFIG_CPU_RM7000 is not set
113CONFIG_CPU_RM9000=y 152CONFIG_CPU_RM9000=y
114# CONFIG_CPU_SB1 is not set 153# CONFIG_CPU_SB1 is not set
154CONFIG_SYS_HAS_CPU_RM9000=y
155CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
156CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
157CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
158CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
159
160#
161# Kernel type
162#
163CONFIG_32BIT=y
164# CONFIG_64BIT is not set
115CONFIG_PAGE_SIZE_4KB=y 165CONFIG_PAGE_SIZE_4KB=y
116# CONFIG_PAGE_SIZE_8KB is not set 166# CONFIG_PAGE_SIZE_8KB is not set
117# CONFIG_PAGE_SIZE_16KB is not set 167# CONFIG_PAGE_SIZE_16KB is not set
@@ -119,13 +169,24 @@ CONFIG_PAGE_SIZE_4KB=y
119CONFIG_BOARD_SCACHE=y 169CONFIG_BOARD_SCACHE=y
120CONFIG_RM7000_CPU_SCACHE=y 170CONFIG_RM7000_CPU_SCACHE=y
121CONFIG_CPU_HAS_PREFETCH=y 171CONFIG_CPU_HAS_PREFETCH=y
172# CONFIG_MIPS_MT is not set
122# CONFIG_64BIT_PHYS_ADDR is not set 173# CONFIG_64BIT_PHYS_ADDR is not set
123# CONFIG_CPU_ADVANCED is not set 174# CONFIG_CPU_ADVANCED is not set
124CONFIG_CPU_HAS_LLSC=y 175CONFIG_CPU_HAS_LLSC=y
125CONFIG_CPU_HAS_LLDSCD=y 176CONFIG_CPU_HAS_LLDSCD=y
126CONFIG_CPU_HAS_SYNC=y 177CONFIG_CPU_HAS_SYNC=y
178CONFIG_GENERIC_HARDIRQS=y
179CONFIG_GENERIC_IRQ_PROBE=y
127CONFIG_HIGHMEM=y 180CONFIG_HIGHMEM=y
181CONFIG_CPU_SUPPORTS_HIGHMEM=y
182CONFIG_SYS_SUPPORTS_HIGHMEM=y
183CONFIG_ARCH_FLATMEM_ENABLE=y
184CONFIG_FLATMEM=y
185CONFIG_FLAT_NODE_MEM_MAP=y
186# CONFIG_SPARSEMEM_STATIC is not set
128# CONFIG_SMP is not set 187# CONFIG_SMP is not set
188CONFIG_PREEMPT_NONE=y
189# CONFIG_PREEMPT_VOLUNTARY is not set
129# CONFIG_PREEMPT is not set 190# CONFIG_PREEMPT is not set
130 191
131# 192#
@@ -134,7 +195,6 @@ CONFIG_HIGHMEM=y
134CONFIG_HW_HAS_PCI=y 195CONFIG_HW_HAS_PCI=y
135CONFIG_PCI=y 196CONFIG_PCI=y
136CONFIG_PCI_LEGACY_PROC=y 197CONFIG_PCI_LEGACY_PROC=y
137CONFIG_PCI_NAMES=y
138CONFIG_MMU=y 198CONFIG_MMU=y
139 199
140# 200#
@@ -143,10 +203,6 @@ CONFIG_MMU=y
143# CONFIG_PCCARD is not set 203# CONFIG_PCCARD is not set
144 204
145# 205#
146# PC-card bridges
147#
148
149#
150# PCI Hotplug Support 206# PCI Hotplug Support
151# 207#
152 208
@@ -158,6 +214,68 @@ CONFIG_BINFMT_ELF=y
158CONFIG_TRAD_SIGNALS=y 214CONFIG_TRAD_SIGNALS=y
159 215
160# 216#
217# Networking
218#
219CONFIG_NET=y
220
221#
222# Networking options
223#
224# CONFIG_PACKET is not set
225CONFIG_UNIX=y
226CONFIG_XFRM=y
227CONFIG_XFRM_USER=m
228# CONFIG_NET_KEY is not set
229CONFIG_INET=y
230# CONFIG_IP_MULTICAST is not set
231# CONFIG_IP_ADVANCED_ROUTER is not set
232CONFIG_IP_FIB_HASH=y
233CONFIG_IP_PNP=y
234# CONFIG_IP_PNP_DHCP is not set
235CONFIG_IP_PNP_BOOTP=y
236# CONFIG_IP_PNP_RARP is not set
237# CONFIG_NET_IPIP is not set
238# CONFIG_NET_IPGRE is not set
239# CONFIG_SYN_COOKIES is not set
240# CONFIG_INET_AH is not set
241# CONFIG_INET_ESP is not set
242# CONFIG_INET_IPCOMP is not set
243CONFIG_INET_TUNNEL=m
244CONFIG_INET_DIAG=y
245CONFIG_INET_TCP_DIAG=y
246# CONFIG_TCP_CONG_ADVANCED is not set
247CONFIG_TCP_CONG_BIC=y
248CONFIG_IPV6=m
249CONFIG_IPV6_PRIVACY=y
250CONFIG_INET6_AH=m
251CONFIG_INET6_ESP=m
252CONFIG_INET6_IPCOMP=m
253CONFIG_INET6_TUNNEL=m
254CONFIG_IPV6_TUNNEL=m
255# CONFIG_NETFILTER is not set
256# CONFIG_BRIDGE is not set
257# CONFIG_VLAN_8021Q is not set
258# CONFIG_DECNET is not set
259# CONFIG_LLC2 is not set
260# CONFIG_IPX is not set
261# CONFIG_ATALK is not set
262# CONFIG_NET_SCHED is not set
263# CONFIG_NET_CLS_ROUTE is not set
264
265#
266# Network testing
267#
268# CONFIG_NET_PKTGEN is not set
269# CONFIG_HAMRADIO is not set
270# CONFIG_IRDA is not set
271# CONFIG_BT is not set
272CONFIG_IEEE80211=m
273# CONFIG_IEEE80211_DEBUG is not set
274CONFIG_IEEE80211_CRYPT_WEP=m
275CONFIG_IEEE80211_CRYPT_CCMP=m
276CONFIG_IEEE80211_CRYPT_TKIP=m
277
278#
161# Device Drivers 279# Device Drivers
162# 280#
163 281
@@ -166,7 +284,12 @@ CONFIG_TRAD_SIGNALS=y
166# 284#
167CONFIG_STANDALONE=y 285CONFIG_STANDALONE=y
168CONFIG_PREVENT_FIRMWARE_BUILD=y 286CONFIG_PREVENT_FIRMWARE_BUILD=y
169# CONFIG_FW_LOADER is not set 287CONFIG_FW_LOADER=m
288
289#
290# Connector - unified userspace <-> kernelspace linker
291#
292CONFIG_CONNECTOR=m
170 293
171# 294#
172# Memory Technology Devices (MTD) 295# Memory Technology Devices (MTD)
@@ -185,7 +308,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
185# 308#
186# Block devices 309# Block devices
187# 310#
188# CONFIG_BLK_DEV_FD is not set
189# CONFIG_BLK_CPQ_DA is not set 311# CONFIG_BLK_CPQ_DA is not set
190# CONFIG_BLK_CPQ_CISS_DA is not set 312# CONFIG_BLK_CPQ_CISS_DA is not set
191# CONFIG_BLK_DEV_DAC960 is not set 313# CONFIG_BLK_DEV_DAC960 is not set
@@ -195,7 +317,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
195# CONFIG_BLK_DEV_SX8 is not set 317# CONFIG_BLK_DEV_SX8 is not set
196# CONFIG_BLK_DEV_RAM is not set 318# CONFIG_BLK_DEV_RAM is not set
197CONFIG_BLK_DEV_RAM_COUNT=16 319CONFIG_BLK_DEV_RAM_COUNT=16
198CONFIG_INITRAMFS_SOURCE=""
199# CONFIG_LBD is not set 320# CONFIG_LBD is not set
200CONFIG_CDROM_PKTCDVD=m 321CONFIG_CDROM_PKTCDVD=m
201CONFIG_CDROM_PKTCDVD_BUFFERS=8 322CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -218,6 +339,7 @@ CONFIG_ATA_OVER_ETH=m
218# 339#
219# SCSI device support 340# SCSI device support
220# 341#
342CONFIG_RAID_ATTRS=m
221# CONFIG_SCSI is not set 343# CONFIG_SCSI is not set
222 344
223# 345#
@@ -228,6 +350,7 @@ CONFIG_ATA_OVER_ETH=m
228# 350#
229# Fusion MPT device support 351# Fusion MPT device support
230# 352#
353# CONFIG_FUSION is not set
231 354
232# 355#
233# IEEE 1394 (FireWire) support 356# IEEE 1394 (FireWire) support
@@ -240,58 +363,8 @@ CONFIG_ATA_OVER_ETH=m
240# CONFIG_I2O is not set 363# CONFIG_I2O is not set
241 364
242# 365#
243# Networking support 366# Network device support
244# 367#
245CONFIG_NET=y
246
247#
248# Networking options
249#
250# CONFIG_PACKET is not set
251# CONFIG_NETLINK_DEV is not set
252CONFIG_UNIX=y
253# CONFIG_NET_KEY is not set
254CONFIG_INET=y
255# CONFIG_IP_MULTICAST is not set
256# CONFIG_IP_ADVANCED_ROUTER is not set
257CONFIG_IP_PNP=y
258# CONFIG_IP_PNP_DHCP is not set
259CONFIG_IP_PNP_BOOTP=y
260# CONFIG_IP_PNP_RARP is not set
261# CONFIG_NET_IPIP is not set
262# CONFIG_NET_IPGRE is not set
263# CONFIG_SYN_COOKIES is not set
264# CONFIG_INET_AH is not set
265# CONFIG_INET_ESP is not set
266# CONFIG_INET_IPCOMP is not set
267CONFIG_INET_TUNNEL=m
268CONFIG_IP_TCPDIAG=m
269# CONFIG_IP_TCPDIAG_IPV6 is not set
270# CONFIG_NETFILTER is not set
271CONFIG_XFRM=y
272CONFIG_XFRM_USER=m
273# CONFIG_BRIDGE is not set
274# CONFIG_VLAN_8021Q is not set
275# CONFIG_DECNET is not set
276# CONFIG_LLC2 is not set
277# CONFIG_IPX is not set
278# CONFIG_ATALK is not set
279
280#
281# QoS and/or fair queueing
282#
283# CONFIG_NET_SCHED is not set
284# CONFIG_NET_CLS_ROUTE is not set
285
286#
287# Network testing
288#
289# CONFIG_NET_PKTGEN is not set
290# CONFIG_NETPOLL is not set
291# CONFIG_NET_POLL_CONTROLLER is not set
292# CONFIG_HAMRADIO is not set
293# CONFIG_IRDA is not set
294# CONFIG_BT is not set
295CONFIG_NETDEVICES=y 368CONFIG_NETDEVICES=y
296# CONFIG_DUMMY is not set 369# CONFIG_DUMMY is not set
297# CONFIG_BONDING is not set 370# CONFIG_BONDING is not set
@@ -304,6 +377,21 @@ CONFIG_NETDEVICES=y
304# CONFIG_ARCNET is not set 377# CONFIG_ARCNET is not set
305 378
306# 379#
380# PHY device support
381#
382CONFIG_PHYLIB=m
383CONFIG_PHYCONTROL=y
384
385#
386# MII PHY device drivers
387#
388CONFIG_MARVELL_PHY=m
389CONFIG_DAVICOM_PHY=m
390CONFIG_QSEMI_PHY=m
391CONFIG_LXT_PHY=m
392CONFIG_CICADA_PHY=m
393
394#
307# Ethernet (10 or 100Mbit) 395# Ethernet (10 or 100Mbit)
308# 396#
309CONFIG_NET_ETHERNET=y 397CONFIG_NET_ETHERNET=y
@@ -343,9 +431,11 @@ CONFIG_EEPRO100=y
343# CONFIG_NS83820 is not set 431# CONFIG_NS83820 is not set
344# CONFIG_HAMACHI is not set 432# CONFIG_HAMACHI is not set
345# CONFIG_R8169 is not set 433# CONFIG_R8169 is not set
434# CONFIG_SIS190 is not set
346# CONFIG_SK98LIN is not set 435# CONFIG_SK98LIN is not set
347# CONFIG_VIA_VELOCITY is not set 436# CONFIG_VIA_VELOCITY is not set
348# CONFIG_TIGON3 is not set 437# CONFIG_TIGON3 is not set
438# CONFIG_BNX2 is not set
349CONFIG_MV643XX_ETH=y 439CONFIG_MV643XX_ETH=y
350CONFIG_MV643XX_ETH_0=y 440CONFIG_MV643XX_ETH_0=y
351CONFIG_MV643XX_ETH_1=y 441CONFIG_MV643XX_ETH_1=y
@@ -354,6 +444,7 @@ CONFIG_MV643XX_ETH_2=y
354# 444#
355# Ethernet (10000 Mbit) 445# Ethernet (10000 Mbit)
356# 446#
447# CONFIG_CHELSIO_T1 is not set
357# CONFIG_IXGB is not set 448# CONFIG_IXGB is not set
358# CONFIG_S2IO is not set 449# CONFIG_S2IO is not set
359 450
@@ -366,6 +457,8 @@ CONFIG_MV643XX_ETH_2=y
366# Wireless LAN (non-hamradio) 457# Wireless LAN (non-hamradio)
367# 458#
368# CONFIG_NET_RADIO is not set 459# CONFIG_NET_RADIO is not set
460# CONFIG_IPW_DEBUG is not set
461CONFIG_IPW2200=m
369 462
370# 463#
371# Wan interfaces 464# Wan interfaces
@@ -374,6 +467,8 @@ CONFIG_MV643XX_ETH_2=y
374# CONFIG_FDDI is not set 467# CONFIG_FDDI is not set
375# CONFIG_PPP is not set 468# CONFIG_PPP is not set
376# CONFIG_SLIP is not set 469# CONFIG_SLIP is not set
470# CONFIG_NETPOLL is not set
471# CONFIG_NET_POLL_CONTROLLER is not set
377 472
378# 473#
379# ISDN subsystem 474# ISDN subsystem
@@ -391,20 +486,10 @@ CONFIG_MV643XX_ETH_2=y
391# CONFIG_INPUT is not set 486# CONFIG_INPUT is not set
392 487
393# 488#
394# Userland interfaces 489# Hardware I/O ports
395#
396
397#
398# Input I/O drivers
399# 490#
400# CONFIG_GAMEPORT is not set
401CONFIG_SOUND_GAMEPORT=y
402# CONFIG_SERIO is not set 491# CONFIG_SERIO is not set
403# CONFIG_SERIO_I8042 is not set 492# CONFIG_GAMEPORT is not set
404
405#
406# Input Device Drivers
407#
408 493
409# 494#
410# Character devices 495# Character devices
@@ -425,6 +510,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4
425# 510#
426CONFIG_SERIAL_CORE=y 511CONFIG_SERIAL_CORE=y
427CONFIG_SERIAL_CORE_CONSOLE=y 512CONFIG_SERIAL_CORE_CONSOLE=y
513# CONFIG_SERIAL_JSM is not set
428CONFIG_UNIX98_PTYS=y 514CONFIG_UNIX98_PTYS=y
429CONFIG_LEGACY_PTYS=y 515CONFIG_LEGACY_PTYS=y
430CONFIG_LEGACY_PTY_COUNT=256 516CONFIG_LEGACY_PTY_COUNT=256
@@ -451,6 +537,10 @@ CONFIG_LEGACY_PTY_COUNT=256
451# CONFIG_RAW_DRIVER is not set 537# CONFIG_RAW_DRIVER is not set
452 538
453# 539#
540# TPM devices
541#
542
543#
454# I2C support 544# I2C support
455# 545#
456# CONFIG_I2C is not set 546# CONFIG_I2C is not set
@@ -461,10 +551,20 @@ CONFIG_LEGACY_PTY_COUNT=256
461# CONFIG_W1 is not set 551# CONFIG_W1 is not set
462 552
463# 553#
554# Hardware Monitoring support
555#
556# CONFIG_HWMON is not set
557# CONFIG_HWMON_VID is not set
558
559#
464# Misc devices 560# Misc devices
465# 561#
466 562
467# 563#
564# Multimedia Capabilities Port drivers
565#
566
567#
468# Multimedia devices 568# Multimedia devices
469# 569#
470# CONFIG_VIDEO_DEV is not set 570# CONFIG_VIDEO_DEV is not set
@@ -478,7 +578,6 @@ CONFIG_LEGACY_PTY_COUNT=256
478# Graphics support 578# Graphics support
479# 579#
480# CONFIG_FB is not set 580# CONFIG_FB is not set
481# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
482 581
483# 582#
484# Sound 583# Sound
@@ -488,13 +587,9 @@ CONFIG_LEGACY_PTY_COUNT=256
488# 587#
489# USB support 588# USB support
490# 589#
491# CONFIG_USB is not set
492CONFIG_USB_ARCH_HAS_HCD=y 590CONFIG_USB_ARCH_HAS_HCD=y
493CONFIG_USB_ARCH_HAS_OHCI=y 591CONFIG_USB_ARCH_HAS_OHCI=y
494 592# CONFIG_USB is not set
495#
496# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
497#
498 593
499# 594#
500# USB Gadget Support 595# USB Gadget Support
@@ -512,6 +607,10 @@ CONFIG_USB_ARCH_HAS_OHCI=y
512# CONFIG_INFINIBAND is not set 607# CONFIG_INFINIBAND is not set
513 608
514# 609#
610# SN Devices
611#
612
613#
515# File systems 614# File systems
516# 615#
517# CONFIG_EXT2_FS is not set 616# CONFIG_EXT2_FS is not set
@@ -519,13 +618,16 @@ CONFIG_USB_ARCH_HAS_OHCI=y
519# CONFIG_JBD is not set 618# CONFIG_JBD is not set
520# CONFIG_REISERFS_FS is not set 619# CONFIG_REISERFS_FS is not set
521# CONFIG_JFS_FS is not set 620# CONFIG_JFS_FS is not set
621# CONFIG_FS_POSIX_ACL is not set
522# CONFIG_XFS_FS is not set 622# CONFIG_XFS_FS is not set
523# CONFIG_MINIX_FS is not set 623# CONFIG_MINIX_FS is not set
524# CONFIG_ROMFS_FS is not set 624# CONFIG_ROMFS_FS is not set
625CONFIG_INOTIFY=y
525# CONFIG_QUOTA is not set 626# CONFIG_QUOTA is not set
526CONFIG_DNOTIFY=y 627CONFIG_DNOTIFY=y
527# CONFIG_AUTOFS_FS is not set 628# CONFIG_AUTOFS_FS is not set
528# CONFIG_AUTOFS4_FS is not set 629# CONFIG_AUTOFS4_FS is not set
630CONFIG_FUSE_FS=m
529 631
530# 632#
531# CD-ROM/DVD Filesystems 633# CD-ROM/DVD Filesystems
@@ -546,10 +648,10 @@ CONFIG_DNOTIFY=y
546CONFIG_PROC_FS=y 648CONFIG_PROC_FS=y
547CONFIG_PROC_KCORE=y 649CONFIG_PROC_KCORE=y
548CONFIG_SYSFS=y 650CONFIG_SYSFS=y
549# CONFIG_DEVPTS_FS_XATTR is not set
550# CONFIG_TMPFS is not set 651# CONFIG_TMPFS is not set
551# CONFIG_HUGETLB_PAGE is not set 652# CONFIG_HUGETLB_PAGE is not set
552CONFIG_RAMFS=y 653CONFIG_RAMFS=y
654CONFIG_RELAYFS_FS=m
553 655
554# 656#
555# Miscellaneous filesystems 657# Miscellaneous filesystems
@@ -570,7 +672,7 @@ CONFIG_NFS_FS=y
570# CONFIG_NFSD is not set 672# CONFIG_NFSD is not set
571CONFIG_ROOT_NFS=y 673CONFIG_ROOT_NFS=y
572CONFIG_LOCKD=y 674CONFIG_LOCKD=y
573# CONFIG_EXPORTFS is not set 675CONFIG_NFS_COMMON=y
574CONFIG_SUNRPC=y 676CONFIG_SUNRPC=y
575# CONFIG_SMB_FS is not set 677# CONFIG_SMB_FS is not set
576# CONFIG_CIFS is not set 678# CONFIG_CIFS is not set
@@ -591,7 +693,9 @@ CONFIG_MSDOS_PARTITION=y
591# 693#
592# Kernel hacking 694# Kernel hacking
593# 695#
696# CONFIG_PRINTK_TIME is not set
594# CONFIG_DEBUG_KERNEL is not set 697# CONFIG_DEBUG_KERNEL is not set
698CONFIG_LOG_BUF_SHIFT=14
595CONFIG_CROSSCOMPILE=y 699CONFIG_CROSSCOMPILE=y
596CONFIG_CMDLINE="" 700CONFIG_CMDLINE=""
597 701
@@ -605,7 +709,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
605# 709#
606# Cryptographic options 710# Cryptographic options
607# 711#
608# CONFIG_CRYPTO is not set 712CONFIG_CRYPTO=y
713CONFIG_CRYPTO_HMAC=y
714CONFIG_CRYPTO_NULL=m
715CONFIG_CRYPTO_MD4=m
716CONFIG_CRYPTO_MD5=m
717CONFIG_CRYPTO_SHA1=m
718CONFIG_CRYPTO_SHA256=m
719CONFIG_CRYPTO_SHA512=m
720CONFIG_CRYPTO_WP512=m
721CONFIG_CRYPTO_TGR192=m
722CONFIG_CRYPTO_DES=m
723CONFIG_CRYPTO_BLOWFISH=m
724CONFIG_CRYPTO_TWOFISH=m
725CONFIG_CRYPTO_SERPENT=m
726CONFIG_CRYPTO_AES=m
727CONFIG_CRYPTO_CAST5=m
728CONFIG_CRYPTO_CAST6=m
729CONFIG_CRYPTO_TEA=m
730CONFIG_CRYPTO_ARC4=m
731CONFIG_CRYPTO_KHAZAD=m
732CONFIG_CRYPTO_ANUBIS=m
733CONFIG_CRYPTO_DEFLATE=m
734CONFIG_CRYPTO_MICHAEL_MIC=m
735CONFIG_CRYPTO_CRC32C=m
736# CONFIG_CRYPTO_TEST is not set
609 737
610# 738#
611# Hardware crypto devices 739# Hardware crypto devices
@@ -615,7 +743,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
615# Library routines 743# Library routines
616# 744#
617# CONFIG_CRC_CCITT is not set 745# CONFIG_CRC_CCITT is not set
618# CONFIG_CRC32 is not set 746CONFIG_CRC16=m
619# CONFIG_LIBCRC32C is not set 747CONFIG_CRC32=m
620CONFIG_GENERIC_HARDIRQS=y 748CONFIG_LIBCRC32C=m
621CONFIG_GENERIC_IRQ_PROBE=y 749CONFIG_ZLIB_INFLATE=m
750CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/mips/configs/jmr3927_defconfig b/arch/mips/configs/jmr3927_defconfig
index da5d9ee2ecce..9a728c2d8fd5 100644
--- a/arch/mips/configs/jmr3927_defconfig
+++ b/arch/mips/configs/jmr3927_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:06 2005 4# Thu Oct 20 22:26:17 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14 27CONFIG_HOTPLUG=y
29# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -50,40 +53,68 @@ CONFIG_CC_ALIGN_JUMPS=0
50# 53#
51# Machine selection 54# Machine selection
52# 55#
53# CONFIG_MACH_JAZZ is not set 56# CONFIG_MIPS_MTX1 is not set
54# CONFIG_MACH_VR41XX is not set 57# CONFIG_MIPS_BOSPORUS is not set
55CONFIG_TOSHIBA_JMR3927=y 58# CONFIG_MIPS_PB1000 is not set
59# CONFIG_MIPS_PB1100 is not set
60# CONFIG_MIPS_PB1500 is not set
61# CONFIG_MIPS_PB1550 is not set
62# CONFIG_MIPS_PB1200 is not set
63# CONFIG_MIPS_DB1000 is not set
64# CONFIG_MIPS_DB1100 is not set
65# CONFIG_MIPS_DB1500 is not set
66# CONFIG_MIPS_DB1550 is not set
67# CONFIG_MIPS_DB1200 is not set
68# CONFIG_MIPS_MIRAGE is not set
56# CONFIG_MIPS_COBALT is not set 69# CONFIG_MIPS_COBALT is not set
57# CONFIG_MACH_DECSTATION is not set 70# CONFIG_MACH_DECSTATION is not set
58# CONFIG_MIPS_EV64120 is not set 71# CONFIG_MIPS_EV64120 is not set
59# CONFIG_MIPS_EV96100 is not set 72# CONFIG_MIPS_EV96100 is not set
60# CONFIG_MIPS_IVR is not set 73# CONFIG_MIPS_IVR is not set
61# CONFIG_LASAT is not set
62# CONFIG_MIPS_ITE8172 is not set 74# CONFIG_MIPS_ITE8172 is not set
75# CONFIG_MACH_JAZZ is not set
76# CONFIG_LASAT is not set
63# CONFIG_MIPS_ATLAS is not set 77# CONFIG_MIPS_ATLAS is not set
64# CONFIG_MIPS_MALTA is not set 78# CONFIG_MIPS_MALTA is not set
65# CONFIG_MIPS_SEAD is not set 79# CONFIG_MIPS_SEAD is not set
80# CONFIG_MIPS_SIM is not set
81# CONFIG_MOMENCO_JAGUAR_ATX is not set
66# CONFIG_MOMENCO_OCELOT is not set 82# CONFIG_MOMENCO_OCELOT is not set
67# CONFIG_MOMENCO_OCELOT_G is not set
68# CONFIG_MOMENCO_OCELOT_C is not set
69# CONFIG_MOMENCO_OCELOT_3 is not set 83# CONFIG_MOMENCO_OCELOT_3 is not set
70# CONFIG_MOMENCO_JAGUAR_ATX is not set 84# CONFIG_MOMENCO_OCELOT_C is not set
71# CONFIG_PMC_YOSEMITE is not set 85# CONFIG_MOMENCO_OCELOT_G is not set
86# CONFIG_MIPS_XXS1500 is not set
87# CONFIG_PNX8550_V2PCI is not set
88# CONFIG_PNX8550_JBS is not set
72# CONFIG_DDB5074 is not set 89# CONFIG_DDB5074 is not set
73# CONFIG_DDB5476 is not set 90# CONFIG_DDB5476 is not set
74# CONFIG_DDB5477 is not set 91# CONFIG_DDB5477 is not set
75# CONFIG_NEC_OSPREY is not set 92# CONFIG_MACH_VR41XX is not set
93# CONFIG_PMC_YOSEMITE is not set
94# CONFIG_QEMU is not set
76# CONFIG_SGI_IP22 is not set 95# CONFIG_SGI_IP22 is not set
77# CONFIG_SOC_AU1X00 is not set 96# CONFIG_SGI_IP27 is not set
78# CONFIG_SIBYTE_SB1xxx_SOC is not set 97# CONFIG_SGI_IP32 is not set
98# CONFIG_SIBYTE_BIGSUR is not set
99# CONFIG_SIBYTE_SWARM is not set
100# CONFIG_SIBYTE_SENTOSA is not set
101# CONFIG_SIBYTE_RHONE is not set
102# CONFIG_SIBYTE_CARMEL is not set
103# CONFIG_SIBYTE_PTSWARM is not set
104# CONFIG_SIBYTE_LITTLESUR is not set
105# CONFIG_SIBYTE_CRHINE is not set
106# CONFIG_SIBYTE_CRHONE is not set
79# CONFIG_SNI_RM200_PCI is not set 107# CONFIG_SNI_RM200_PCI is not set
108CONFIG_TOSHIBA_JMR3927=y
80# CONFIG_TOSHIBA_RBTX4927 is not set 109# CONFIG_TOSHIBA_RBTX4927 is not set
110# CONFIG_TOSHIBA_RBTX4938 is not set
81CONFIG_RWSEM_GENERIC_SPINLOCK=y 111CONFIG_RWSEM_GENERIC_SPINLOCK=y
82CONFIG_GENERIC_CALIBRATE_DELAY=y 112CONFIG_GENERIC_CALIBRATE_DELAY=y
83CONFIG_HAVE_DEC_LOCK=y
84CONFIG_DMA_NONCOHERENT=y 113CONFIG_DMA_NONCOHERENT=y
85CONFIG_DMA_NEED_PCI_MAP_STATE=y 114CONFIG_DMA_NEED_PCI_MAP_STATE=y
115CONFIG_CPU_BIG_ENDIAN=y
86# CONFIG_CPU_LITTLE_ENDIAN is not set 116# CONFIG_CPU_LITTLE_ENDIAN is not set
117CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
87CONFIG_MIPS_TX3927=y 118CONFIG_MIPS_TX3927=y
88CONFIG_SWAP_IO_SPACE=y 119CONFIG_SWAP_IO_SPACE=y
89CONFIG_MIPS_L1_CACHE_SHIFT=5 120CONFIG_MIPS_L1_CACHE_SHIFT=5
@@ -92,8 +123,10 @@ CONFIG_TOSHIBA_BOARDS=y
92# 123#
93# CPU selection 124# CPU selection
94# 125#
95# CONFIG_CPU_MIPS32 is not set 126# CONFIG_CPU_MIPS32_R1 is not set
96# CONFIG_CPU_MIPS64 is not set 127# CONFIG_CPU_MIPS32_R2 is not set
128# CONFIG_CPU_MIPS64_R1 is not set
129# CONFIG_CPU_MIPS64_R2 is not set
97# CONFIG_CPU_R3000 is not set 130# CONFIG_CPU_R3000 is not set
98CONFIG_CPU_TX39XX=y 131CONFIG_CPU_TX39XX=y
99# CONFIG_CPU_VR41XX is not set 132# CONFIG_CPU_VR41XX is not set
@@ -109,12 +142,34 @@ CONFIG_CPU_TX39XX=y
109# CONFIG_CPU_RM7000 is not set 142# CONFIG_CPU_RM7000 is not set
110# CONFIG_CPU_RM9000 is not set 143# CONFIG_CPU_RM9000 is not set
111# CONFIG_CPU_SB1 is not set 144# CONFIG_CPU_SB1 is not set
145CONFIG_SYS_HAS_CPU_TX39XX=y
146CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
147CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
148
149#
150# Kernel type
151#
152CONFIG_32BIT=y
153# CONFIG_64BIT is not set
112CONFIG_PAGE_SIZE_4KB=y 154CONFIG_PAGE_SIZE_4KB=y
113# CONFIG_PAGE_SIZE_8KB is not set 155# CONFIG_PAGE_SIZE_8KB is not set
114# CONFIG_PAGE_SIZE_16KB is not set 156# CONFIG_PAGE_SIZE_16KB is not set
115# CONFIG_PAGE_SIZE_64KB is not set 157# CONFIG_PAGE_SIZE_64KB is not set
158# CONFIG_MIPS_MT is not set
116# CONFIG_CPU_ADVANCED is not set 159# CONFIG_CPU_ADVANCED is not set
117CONFIG_CPU_HAS_SYNC=y 160CONFIG_CPU_HAS_SYNC=y
161CONFIG_GENERIC_HARDIRQS=y
162CONFIG_GENERIC_IRQ_PROBE=y
163CONFIG_ARCH_FLATMEM_ENABLE=y
164CONFIG_SELECT_MEMORY_MODEL=y
165CONFIG_FLATMEM_MANUAL=y
166# CONFIG_DISCONTIGMEM_MANUAL is not set
167# CONFIG_SPARSEMEM_MANUAL is not set
168CONFIG_FLATMEM=y
169CONFIG_FLAT_NODE_MEM_MAP=y
170# CONFIG_SPARSEMEM_STATIC is not set
171CONFIG_PREEMPT_NONE=y
172# CONFIG_PREEMPT_VOLUNTARY is not set
118# CONFIG_PREEMPT is not set 173# CONFIG_PREEMPT is not set
119CONFIG_RTC_DS1742=y 174CONFIG_RTC_DS1742=y
120 175
@@ -124,7 +179,6 @@ CONFIG_RTC_DS1742=y
124CONFIG_HW_HAS_PCI=y 179CONFIG_HW_HAS_PCI=y
125CONFIG_PCI=y 180CONFIG_PCI=y
126CONFIG_PCI_LEGACY_PROC=y 181CONFIG_PCI_LEGACY_PROC=y
127CONFIG_PCI_NAMES=y
128CONFIG_MMU=y 182CONFIG_MMU=y
129 183
130# 184#
@@ -133,10 +187,6 @@ CONFIG_MMU=y
133# CONFIG_PCCARD is not set 187# CONFIG_PCCARD is not set
134 188
135# 189#
136# PC-card bridges
137#
138
139#
140# PCI Hotplug Support 190# PCI Hotplug Support
141# 191#
142# CONFIG_HOTPLUG_PCI is not set 192# CONFIG_HOTPLUG_PCI is not set
@@ -149,6 +199,80 @@ CONFIG_BINFMT_ELF=y
149CONFIG_TRAD_SIGNALS=y 199CONFIG_TRAD_SIGNALS=y
150 200
151# 201#
202# Networking
203#
204CONFIG_NET=y
205
206#
207# Networking options
208#
209CONFIG_PACKET=y
210# CONFIG_PACKET_MMAP is not set
211CONFIG_UNIX=y
212CONFIG_XFRM=y
213CONFIG_XFRM_USER=y
214CONFIG_NET_KEY=y
215CONFIG_INET=y
216# CONFIG_IP_MULTICAST is not set
217# CONFIG_IP_ADVANCED_ROUTER is not set
218CONFIG_IP_FIB_HASH=y
219CONFIG_IP_PNP=y
220# CONFIG_IP_PNP_DHCP is not set
221CONFIG_IP_PNP_BOOTP=y
222# CONFIG_IP_PNP_RARP is not set
223# CONFIG_NET_IPIP is not set
224# CONFIG_NET_IPGRE is not set
225# CONFIG_ARPD is not set
226# CONFIG_SYN_COOKIES is not set
227# CONFIG_INET_AH is not set
228# CONFIG_INET_ESP is not set
229# CONFIG_INET_IPCOMP is not set
230CONFIG_INET_TUNNEL=y
231CONFIG_INET_DIAG=y
232CONFIG_INET_TCP_DIAG=y
233# CONFIG_TCP_CONG_ADVANCED is not set
234CONFIG_TCP_CONG_BIC=y
235# CONFIG_IPV6 is not set
236# CONFIG_NETFILTER is not set
237
238#
239# DCCP Configuration (EXPERIMENTAL)
240#
241# CONFIG_IP_DCCP is not set
242
243#
244# SCTP Configuration (EXPERIMENTAL)
245#
246# CONFIG_IP_SCTP is not set
247# CONFIG_ATM is not set
248# CONFIG_BRIDGE is not set
249# CONFIG_VLAN_8021Q is not set
250# CONFIG_DECNET is not set
251# CONFIG_LLC2 is not set
252# CONFIG_IPX is not set
253# CONFIG_ATALK is not set
254# CONFIG_X25 is not set
255# CONFIG_LAPB is not set
256# CONFIG_NET_DIVERT is not set
257# CONFIG_ECONET is not set
258# CONFIG_WAN_ROUTER is not set
259# CONFIG_NET_SCHED is not set
260# CONFIG_NET_CLS_ROUTE is not set
261
262#
263# Network testing
264#
265# CONFIG_NET_PKTGEN is not set
266# CONFIG_HAMRADIO is not set
267# CONFIG_IRDA is not set
268# CONFIG_BT is not set
269CONFIG_IEEE80211=y
270# CONFIG_IEEE80211_DEBUG is not set
271CONFIG_IEEE80211_CRYPT_WEP=y
272CONFIG_IEEE80211_CRYPT_CCMP=y
273CONFIG_IEEE80211_CRYPT_TKIP=y
274
275#
152# Device Drivers 276# Device Drivers
153# 277#
154 278
@@ -157,7 +281,12 @@ CONFIG_TRAD_SIGNALS=y
157# 281#
158CONFIG_STANDALONE=y 282CONFIG_STANDALONE=y
159CONFIG_PREVENT_FIRMWARE_BUILD=y 283CONFIG_PREVENT_FIRMWARE_BUILD=y
160# CONFIG_FW_LOADER is not set 284CONFIG_FW_LOADER=y
285
286#
287# Connector - unified userspace <-> kernelspace linker
288#
289CONFIG_CONNECTOR=y
161 290
162# 291#
163# Memory Technology Devices (MTD) 292# Memory Technology Devices (MTD)
@@ -176,7 +305,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
176# 305#
177# Block devices 306# Block devices
178# 307#
179# CONFIG_BLK_DEV_FD is not set
180# CONFIG_BLK_CPQ_DA is not set 308# CONFIG_BLK_CPQ_DA is not set
181# CONFIG_BLK_CPQ_CISS_DA is not set 309# CONFIG_BLK_CPQ_CISS_DA is not set
182# CONFIG_BLK_DEV_DAC960 is not set 310# CONFIG_BLK_DEV_DAC960 is not set
@@ -187,7 +315,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
187# CONFIG_BLK_DEV_SX8 is not set 315# CONFIG_BLK_DEV_SX8 is not set
188# CONFIG_BLK_DEV_RAM is not set 316# CONFIG_BLK_DEV_RAM is not set
189CONFIG_BLK_DEV_RAM_COUNT=16 317CONFIG_BLK_DEV_RAM_COUNT=16
190CONFIG_INITRAMFS_SOURCE=""
191# CONFIG_LBD is not set 318# CONFIG_LBD is not set
192CONFIG_CDROM_PKTCDVD=y 319CONFIG_CDROM_PKTCDVD=y
193CONFIG_CDROM_PKTCDVD_BUFFERS=8 320CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -210,6 +337,7 @@ CONFIG_ATA_OVER_ETH=y
210# 337#
211# SCSI device support 338# SCSI device support
212# 339#
340CONFIG_RAID_ATTRS=y
213# CONFIG_SCSI is not set 341# CONFIG_SCSI is not set
214 342
215# 343#
@@ -220,6 +348,7 @@ CONFIG_ATA_OVER_ETH=y
220# 348#
221# Fusion MPT device support 349# Fusion MPT device support
222# 350#
351# CONFIG_FUSION is not set
223 352
224# 353#
225# IEEE 1394 (FireWire) support 354# IEEE 1394 (FireWire) support
@@ -232,78 +361,13 @@ CONFIG_ATA_OVER_ETH=y
232# CONFIG_I2O is not set 361# CONFIG_I2O is not set
233 362
234# 363#
235# Networking support 364# Network device support
236#
237CONFIG_NET=y
238
239#
240# Networking options
241#
242CONFIG_PACKET=y
243# CONFIG_PACKET_MMAP is not set
244CONFIG_NETLINK_DEV=y
245CONFIG_UNIX=y
246CONFIG_NET_KEY=y
247CONFIG_INET=y
248# CONFIG_IP_MULTICAST is not set
249# CONFIG_IP_ADVANCED_ROUTER is not set
250CONFIG_IP_PNP=y
251# CONFIG_IP_PNP_DHCP is not set
252CONFIG_IP_PNP_BOOTP=y
253# CONFIG_IP_PNP_RARP is not set
254# CONFIG_NET_IPIP is not set
255# CONFIG_NET_IPGRE is not set
256# CONFIG_ARPD is not set
257# CONFIG_SYN_COOKIES is not set
258# CONFIG_INET_AH is not set
259# CONFIG_INET_ESP is not set
260# CONFIG_INET_IPCOMP is not set
261CONFIG_INET_TUNNEL=y
262CONFIG_IP_TCPDIAG=y
263# CONFIG_IP_TCPDIAG_IPV6 is not set
264# CONFIG_IPV6 is not set
265# CONFIG_NETFILTER is not set
266CONFIG_XFRM=y
267CONFIG_XFRM_USER=y
268
269#
270# SCTP Configuration (EXPERIMENTAL)
271# 365#
272# CONFIG_IP_SCTP is not set
273# CONFIG_ATM is not set
274# CONFIG_BRIDGE is not set
275# CONFIG_VLAN_8021Q is not set
276# CONFIG_DECNET is not set
277# CONFIG_LLC2 is not set
278# CONFIG_IPX is not set
279# CONFIG_ATALK is not set
280# CONFIG_X25 is not set
281# CONFIG_LAPB is not set
282# CONFIG_NET_DIVERT is not set
283# CONFIG_ECONET is not set
284# CONFIG_WAN_ROUTER is not set
285
286#
287# QoS and/or fair queueing
288#
289# CONFIG_NET_SCHED is not set
290# CONFIG_NET_CLS_ROUTE is not set
291
292#
293# Network testing
294#
295# CONFIG_NET_PKTGEN is not set
296# CONFIG_NETPOLL is not set
297# CONFIG_NET_POLL_CONTROLLER is not set
298# CONFIG_HAMRADIO is not set
299# CONFIG_IRDA is not set
300# CONFIG_BT is not set
301CONFIG_NETDEVICES=y 366CONFIG_NETDEVICES=y
302# CONFIG_DUMMY is not set 367# CONFIG_DUMMY is not set
303# CONFIG_BONDING is not set 368# CONFIG_BONDING is not set
304# CONFIG_EQUALIZER is not set 369# CONFIG_EQUALIZER is not set
305# CONFIG_TUN is not set 370# CONFIG_TUN is not set
306# CONFIG_ETHERTAP is not set
307 371
308# 372#
309# ARCnet devices 373# ARCnet devices
@@ -311,6 +375,21 @@ CONFIG_NETDEVICES=y
311# CONFIG_ARCNET is not set 375# CONFIG_ARCNET is not set
312 376
313# 377#
378# PHY device support
379#
380CONFIG_PHYLIB=y
381CONFIG_PHYCONTROL=y
382
383#
384# MII PHY device drivers
385#
386CONFIG_MARVELL_PHY=y
387CONFIG_DAVICOM_PHY=y
388CONFIG_QSEMI_PHY=y
389CONFIG_LXT_PHY=y
390CONFIG_CICADA_PHY=y
391
392#
314# Ethernet (10 or 100Mbit) 393# Ethernet (10 or 100Mbit)
315# 394#
316CONFIG_NET_ETHERNET=y 395CONFIG_NET_ETHERNET=y
@@ -336,12 +415,16 @@ CONFIG_NET_ETHERNET=y
336# CONFIG_HAMACHI is not set 415# CONFIG_HAMACHI is not set
337# CONFIG_YELLOWFIN is not set 416# CONFIG_YELLOWFIN is not set
338# CONFIG_R8169 is not set 417# CONFIG_R8169 is not set
418# CONFIG_SIS190 is not set
419# CONFIG_SKGE is not set
339# CONFIG_SK98LIN is not set 420# CONFIG_SK98LIN is not set
340# CONFIG_TIGON3 is not set 421# CONFIG_TIGON3 is not set
422# CONFIG_BNX2 is not set
341 423
342# 424#
343# Ethernet (10000 Mbit) 425# Ethernet (10000 Mbit)
344# 426#
427# CONFIG_CHELSIO_T1 is not set
345# CONFIG_IXGB is not set 428# CONFIG_IXGB is not set
346# CONFIG_S2IO is not set 429# CONFIG_S2IO is not set
347 430
@@ -354,6 +437,8 @@ CONFIG_NET_ETHERNET=y
354# Wireless LAN (non-hamradio) 437# Wireless LAN (non-hamradio)
355# 438#
356# CONFIG_NET_RADIO is not set 439# CONFIG_NET_RADIO is not set
440# CONFIG_IPW_DEBUG is not set
441CONFIG_IPW2200=y
357 442
358# 443#
359# Wan interfaces 444# Wan interfaces
@@ -365,6 +450,8 @@ CONFIG_NET_ETHERNET=y
365# CONFIG_SLIP is not set 450# CONFIG_SLIP is not set
366# CONFIG_SHAPER is not set 451# CONFIG_SHAPER is not set
367# CONFIG_NETCONSOLE is not set 452# CONFIG_NETCONSOLE is not set
453# CONFIG_NETPOLL is not set
454# CONFIG_NET_POLL_CONTROLLER is not set
368 455
369# 456#
370# ISDN subsystem 457# ISDN subsystem
@@ -394,19 +481,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
394# CONFIG_INPUT_EVBUG is not set 481# CONFIG_INPUT_EVBUG is not set
395 482
396# 483#
397# Input I/O drivers
398#
399# CONFIG_GAMEPORT is not set
400CONFIG_SOUND_GAMEPORT=y
401CONFIG_SERIO=y
402# CONFIG_SERIO_I8042 is not set
403CONFIG_SERIO_SERPORT=y
404# CONFIG_SERIO_CT82C710 is not set
405# CONFIG_SERIO_PCIPS2 is not set
406# CONFIG_SERIO_LIBPS2 is not set
407CONFIG_SERIO_RAW=y
408
409#
410# Input Device Drivers 484# Input Device Drivers
411# 485#
412# CONFIG_INPUT_KEYBOARD is not set 486# CONFIG_INPUT_KEYBOARD is not set
@@ -416,6 +490,17 @@ CONFIG_SERIO_RAW=y
416# CONFIG_INPUT_MISC is not set 490# CONFIG_INPUT_MISC is not set
417 491
418# 492#
493# Hardware I/O ports
494#
495CONFIG_SERIO=y
496# CONFIG_SERIO_I8042 is not set
497CONFIG_SERIO_SERPORT=y
498# CONFIG_SERIO_PCIPS2 is not set
499# CONFIG_SERIO_LIBPS2 is not set
500CONFIG_SERIO_RAW=y
501# CONFIG_GAMEPORT is not set
502
503#
419# Character devices 504# Character devices
420# 505#
421CONFIG_VT=y 506CONFIG_VT=y
@@ -426,11 +511,9 @@ CONFIG_SERIAL_NONSTANDARD=y
426# CONFIG_ROCKETPORT is not set 511# CONFIG_ROCKETPORT is not set
427# CONFIG_CYCLADES is not set 512# CONFIG_CYCLADES is not set
428# CONFIG_DIGIEPCA is not set 513# CONFIG_DIGIEPCA is not set
429# CONFIG_DIGI is not set
430# CONFIG_MOXA_INTELLIO is not set 514# CONFIG_MOXA_INTELLIO is not set
431# CONFIG_MOXA_SMARTIO is not set 515# CONFIG_MOXA_SMARTIO is not set
432# CONFIG_ISI is not set 516# CONFIG_ISI is not set
433# CONFIG_SYNCLINK is not set
434# CONFIG_SYNCLINKMP is not set 517# CONFIG_SYNCLINKMP is not set
435# CONFIG_N_HDLC is not set 518# CONFIG_N_HDLC is not set
436# CONFIG_RISCOM8 is not set 519# CONFIG_RISCOM8 is not set
@@ -438,10 +521,6 @@ CONFIG_SERIAL_NONSTANDARD=y
438# CONFIG_SX is not set 521# CONFIG_SX is not set
439# CONFIG_RIO is not set 522# CONFIG_RIO is not set
440# CONFIG_STALDRV is not set 523# CONFIG_STALDRV is not set
441# CONFIG_SERIAL_TX3912 is not set
442CONFIG_TXX927_SERIAL=y
443CONFIG_TXX927_SERIAL_CONSOLE=y
444# CONFIG_SERIAL_TXX9 is not set
445 524
446# 525#
447# Serial drivers 526# Serial drivers
@@ -451,6 +530,8 @@ CONFIG_TXX927_SERIAL_CONSOLE=y
451# 530#
452# Non-8250 serial port support 531# Non-8250 serial port support
453# 532#
533CONFIG_HAS_TXX9_SERIAL=y
534# CONFIG_SERIAL_JSM is not set
454# CONFIG_UNIX98_PTYS is not set 535# CONFIG_UNIX98_PTYS is not set
455CONFIG_LEGACY_PTYS=y 536CONFIG_LEGACY_PTYS=y
456CONFIG_LEGACY_PTY_COUNT=256 537CONFIG_LEGACY_PTY_COUNT=256
@@ -477,6 +558,11 @@ CONFIG_LEGACY_PTY_COUNT=256
477# CONFIG_RAW_DRIVER is not set 558# CONFIG_RAW_DRIVER is not set
478 559
479# 560#
561# TPM devices
562#
563# CONFIG_TCG_TPM is not set
564
565#
480# I2C support 566# I2C support
481# 567#
482# CONFIG_I2C is not set 568# CONFIG_I2C is not set
@@ -487,10 +573,20 @@ CONFIG_LEGACY_PTY_COUNT=256
487# CONFIG_W1 is not set 573# CONFIG_W1 is not set
488 574
489# 575#
576# Hardware Monitoring support
577#
578# CONFIG_HWMON is not set
579# CONFIG_HWMON_VID is not set
580
581#
490# Misc devices 582# Misc devices
491# 583#
492 584
493# 585#
586# Multimedia Capabilities Port drivers
587#
588
589#
494# Multimedia devices 590# Multimedia devices
495# 591#
496# CONFIG_VIDEO_DEV is not set 592# CONFIG_VIDEO_DEV is not set
@@ -504,6 +600,11 @@ CONFIG_LEGACY_PTY_COUNT=256
504# Graphics support 600# Graphics support
505# 601#
506CONFIG_FB=y 602CONFIG_FB=y
603# CONFIG_FB_CFB_FILLRECT is not set
604# CONFIG_FB_CFB_COPYAREA is not set
605# CONFIG_FB_CFB_IMAGEBLIT is not set
606# CONFIG_FB_SOFT_CURSOR is not set
607# CONFIG_FB_MACMODES is not set
507# CONFIG_FB_MODE_HELPERS is not set 608# CONFIG_FB_MODE_HELPERS is not set
508# CONFIG_FB_TILEBLITTING is not set 609# CONFIG_FB_TILEBLITTING is not set
509# CONFIG_FB_CIRRUS is not set 610# CONFIG_FB_CIRRUS is not set
@@ -511,6 +612,7 @@ CONFIG_FB=y
511# CONFIG_FB_CYBER2000 is not set 612# CONFIG_FB_CYBER2000 is not set
512# CONFIG_FB_ASILIANT is not set 613# CONFIG_FB_ASILIANT is not set
513# CONFIG_FB_IMSTT is not set 614# CONFIG_FB_IMSTT is not set
615# CONFIG_FB_NVIDIA is not set
514# CONFIG_FB_RIVA is not set 616# CONFIG_FB_RIVA is not set
515# CONFIG_FB_MATROX is not set 617# CONFIG_FB_MATROX is not set
516# CONFIG_FB_RADEON_OLD is not set 618# CONFIG_FB_RADEON_OLD is not set
@@ -523,8 +625,11 @@ CONFIG_FB=y
523# CONFIG_FB_KYRO is not set 625# CONFIG_FB_KYRO is not set
524# CONFIG_FB_3DFX is not set 626# CONFIG_FB_3DFX is not set
525# CONFIG_FB_VOODOO1 is not set 627# CONFIG_FB_VOODOO1 is not set
628# CONFIG_FB_SMIVGX is not set
629# CONFIG_FB_CYBLA is not set
526# CONFIG_FB_TRIDENT is not set 630# CONFIG_FB_TRIDENT is not set
527# CONFIG_FB_E1356 is not set 631# CONFIG_FB_E1356 is not set
632# CONFIG_FB_S1D13XXX is not set
528# CONFIG_FB_VIRTUAL is not set 633# CONFIG_FB_VIRTUAL is not set
529 634
530# 635#
@@ -548,13 +653,9 @@ CONFIG_DUMMY_CONSOLE=y
548# 653#
549# USB support 654# USB support
550# 655#
551# CONFIG_USB is not set
552CONFIG_USB_ARCH_HAS_HCD=y 656CONFIG_USB_ARCH_HAS_HCD=y
553CONFIG_USB_ARCH_HAS_OHCI=y 657CONFIG_USB_ARCH_HAS_OHCI=y
554 658# CONFIG_USB is not set
555#
556# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
557#
558 659
559# 660#
560# USB Gadget Support 661# USB Gadget Support
@@ -572,6 +673,10 @@ CONFIG_USB_ARCH_HAS_OHCI=y
572# CONFIG_INFINIBAND is not set 673# CONFIG_INFINIBAND is not set
573 674
574# 675#
676# SN Devices
677#
678
679#
575# File systems 680# File systems
576# 681#
577# CONFIG_EXT2_FS is not set 682# CONFIG_EXT2_FS is not set
@@ -579,13 +684,16 @@ CONFIG_USB_ARCH_HAS_OHCI=y
579# CONFIG_JBD is not set 684# CONFIG_JBD is not set
580# CONFIG_REISERFS_FS is not set 685# CONFIG_REISERFS_FS is not set
581# CONFIG_JFS_FS is not set 686# CONFIG_JFS_FS is not set
687# CONFIG_FS_POSIX_ACL is not set
582# CONFIG_XFS_FS is not set 688# CONFIG_XFS_FS is not set
583# CONFIG_MINIX_FS is not set 689# CONFIG_MINIX_FS is not set
584# CONFIG_ROMFS_FS is not set 690# CONFIG_ROMFS_FS is not set
691CONFIG_INOTIFY=y
585# CONFIG_QUOTA is not set 692# CONFIG_QUOTA is not set
586CONFIG_DNOTIFY=y 693CONFIG_DNOTIFY=y
587# CONFIG_AUTOFS_FS is not set 694# CONFIG_AUTOFS_FS is not set
588# CONFIG_AUTOFS4_FS is not set 695# CONFIG_AUTOFS4_FS is not set
696CONFIG_FUSE_FS=y
589 697
590# 698#
591# CD-ROM/DVD Filesystems 699# CD-ROM/DVD Filesystems
@@ -606,10 +714,10 @@ CONFIG_DNOTIFY=y
606CONFIG_PROC_FS=y 714CONFIG_PROC_FS=y
607CONFIG_PROC_KCORE=y 715CONFIG_PROC_KCORE=y
608CONFIG_SYSFS=y 716CONFIG_SYSFS=y
609# CONFIG_DEVFS_FS is not set
610# CONFIG_TMPFS is not set 717# CONFIG_TMPFS is not set
611# CONFIG_HUGETLB_PAGE is not set 718# CONFIG_HUGETLB_PAGE is not set
612CONFIG_RAMFS=y 719CONFIG_RAMFS=y
720CONFIG_RELAYFS_FS=y
613 721
614# 722#
615# Miscellaneous filesystems 723# Miscellaneous filesystems
@@ -638,7 +746,7 @@ CONFIG_NFS_FS=y
638# CONFIG_NFSD is not set 746# CONFIG_NFSD is not set
639CONFIG_ROOT_NFS=y 747CONFIG_ROOT_NFS=y
640CONFIG_LOCKD=y 748CONFIG_LOCKD=y
641# CONFIG_EXPORTFS is not set 749CONFIG_NFS_COMMON=y
642CONFIG_SUNRPC=y 750CONFIG_SUNRPC=y
643# CONFIG_RPCSEC_GSS_KRB5 is not set 751# CONFIG_RPCSEC_GSS_KRB5 is not set
644# CONFIG_RPCSEC_GSS_SPKM3 is not set 752# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -647,6 +755,7 @@ CONFIG_SUNRPC=y
647# CONFIG_NCP_FS is not set 755# CONFIG_NCP_FS is not set
648# CONFIG_CODA_FS is not set 756# CONFIG_CODA_FS is not set
649# CONFIG_AFS_FS is not set 757# CONFIG_AFS_FS is not set
758# CONFIG_9P_FS is not set
650 759
651# 760#
652# Partition Types 761# Partition Types
@@ -667,7 +776,9 @@ CONFIG_MSDOS_PARTITION=y
667# 776#
668# Kernel hacking 777# Kernel hacking
669# 778#
779# CONFIG_PRINTK_TIME is not set
670# CONFIG_DEBUG_KERNEL is not set 780# CONFIG_DEBUG_KERNEL is not set
781CONFIG_LOG_BUF_SHIFT=14
671CONFIG_CROSSCOMPILE=y 782CONFIG_CROSSCOMPILE=y
672CONFIG_CMDLINE="" 783CONFIG_CMDLINE=""
673 784
@@ -681,7 +792,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
681# 792#
682# Cryptographic options 793# Cryptographic options
683# 794#
684# CONFIG_CRYPTO is not set 795CONFIG_CRYPTO=y
796CONFIG_CRYPTO_HMAC=y
797CONFIG_CRYPTO_NULL=y
798CONFIG_CRYPTO_MD4=y
799CONFIG_CRYPTO_MD5=y
800CONFIG_CRYPTO_SHA1=y
801CONFIG_CRYPTO_SHA256=y
802CONFIG_CRYPTO_SHA512=y
803CONFIG_CRYPTO_WP512=y
804CONFIG_CRYPTO_TGR192=y
805CONFIG_CRYPTO_DES=y
806CONFIG_CRYPTO_BLOWFISH=y
807CONFIG_CRYPTO_TWOFISH=y
808CONFIG_CRYPTO_SERPENT=y
809CONFIG_CRYPTO_AES=y
810CONFIG_CRYPTO_CAST5=y
811CONFIG_CRYPTO_CAST6=y
812CONFIG_CRYPTO_TEA=y
813CONFIG_CRYPTO_ARC4=y
814CONFIG_CRYPTO_KHAZAD=y
815CONFIG_CRYPTO_ANUBIS=y
816CONFIG_CRYPTO_DEFLATE=y
817CONFIG_CRYPTO_MICHAEL_MIC=y
818CONFIG_CRYPTO_CRC32C=y
819# CONFIG_CRYPTO_TEST is not set
685 820
686# 821#
687# Hardware crypto devices 822# Hardware crypto devices
@@ -691,7 +826,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
691# Library routines 826# Library routines
692# 827#
693# CONFIG_CRC_CCITT is not set 828# CONFIG_CRC_CCITT is not set
694# CONFIG_CRC32 is not set 829CONFIG_CRC16=y
695# CONFIG_LIBCRC32C is not set 830CONFIG_CRC32=y
696CONFIG_GENERIC_HARDIRQS=y 831CONFIG_LIBCRC32C=y
697CONFIG_GENERIC_IRQ_PROBE=y 832CONFIG_ZLIB_INFLATE=y
833CONFIG_ZLIB_DEFLATE=y
diff --git a/arch/mips/configs/lasat200_defconfig b/arch/mips/configs/lasat200_defconfig
index 8d600ae890f4..03cd0ca6e639 100644
--- a/arch/mips/configs/lasat200_defconfig
+++ b/arch/mips/configs/lasat200_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:06 2005 4# Thu Oct 20 22:26:19 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14 27CONFIG_HOTPLUG=y
29# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,53 +59,83 @@ CONFIG_KMOD=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60# CONFIG_MACH_VR41XX is not set 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_TOSHIBA_JMR3927 is not set 64# CONFIG_MIPS_PB1000 is not set
65# CONFIG_MIPS_PB1100 is not set
66# CONFIG_MIPS_PB1500 is not set
67# CONFIG_MIPS_PB1550 is not set
68# CONFIG_MIPS_PB1200 is not set
69# CONFIG_MIPS_DB1000 is not set
70# CONFIG_MIPS_DB1100 is not set
71# CONFIG_MIPS_DB1500 is not set
72# CONFIG_MIPS_DB1550 is not set
73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
62# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
63# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
64# CONFIG_MIPS_EV64120 is not set 77# CONFIG_MIPS_EV64120 is not set
65# CONFIG_MIPS_EV96100 is not set 78# CONFIG_MIPS_EV96100 is not set
66# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
67CONFIG_LASAT=y
68CONFIG_PICVUE=y
69CONFIG_PICVUE_PROC=y
70CONFIG_DS1603=y
71CONFIG_LASAT_SYSCTL=y
72# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82CONFIG_LASAT=y
73# CONFIG_MIPS_ATLAS is not set 83# CONFIG_MIPS_ATLAS is not set
74# CONFIG_MIPS_MALTA is not set 84# CONFIG_MIPS_MALTA is not set
75# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
76# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
77# CONFIG_MOMENCO_OCELOT_G is not set
78# CONFIG_MOMENCO_OCELOT_C is not set
79# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
80# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
81# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
82# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
83# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
84# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
85# CONFIG_NEC_OSPREY is not set 98# CONFIG_MACH_VR41XX is not set
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
86# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
87# CONFIG_SOC_AU1X00 is not set 102# CONFIG_SGI_IP27 is not set
88# CONFIG_SIBYTE_SB1xxx_SOC is not set 103# CONFIG_SGI_IP32 is not set
104# CONFIG_SIBYTE_BIGSUR is not set
105# CONFIG_SIBYTE_SWARM is not set
106# CONFIG_SIBYTE_SENTOSA is not set
107# CONFIG_SIBYTE_RHONE is not set
108# CONFIG_SIBYTE_CARMEL is not set
109# CONFIG_SIBYTE_PTSWARM is not set
110# CONFIG_SIBYTE_LITTLESUR is not set
111# CONFIG_SIBYTE_CRHINE is not set
112# CONFIG_SIBYTE_CRHONE is not set
89# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
90# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
117CONFIG_PICVUE=y
118CONFIG_PICVUE_PROC=y
119CONFIG_DS1603=y
120CONFIG_LASAT_SYSCTL=y
91CONFIG_RWSEM_GENERIC_SPINLOCK=y 121CONFIG_RWSEM_GENERIC_SPINLOCK=y
92CONFIG_GENERIC_CALIBRATE_DELAY=y 122CONFIG_GENERIC_CALIBRATE_DELAY=y
93CONFIG_HAVE_DEC_LOCK=y
94CONFIG_DMA_NONCOHERENT=y 123CONFIG_DMA_NONCOHERENT=y
95CONFIG_DMA_NEED_PCI_MAP_STATE=y 124CONFIG_DMA_NEED_PCI_MAP_STATE=y
96CONFIG_MIPS_NILE4=y 125CONFIG_MIPS_NILE4=y
126# CONFIG_CPU_BIG_ENDIAN is not set
97CONFIG_CPU_LITTLE_ENDIAN=y 127CONFIG_CPU_LITTLE_ENDIAN=y
128CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
98CONFIG_MIPS_GT64120=y 129CONFIG_MIPS_GT64120=y
99CONFIG_MIPS_L1_CACHE_SHIFT=5 130CONFIG_MIPS_L1_CACHE_SHIFT=5
100 131
101# 132#
102# CPU selection 133# CPU selection
103# 134#
104# CONFIG_CPU_MIPS32 is not set 135# CONFIG_CPU_MIPS32_R1 is not set
105# CONFIG_CPU_MIPS64 is not set 136# CONFIG_CPU_MIPS32_R2 is not set
137# CONFIG_CPU_MIPS64_R1 is not set
138# CONFIG_CPU_MIPS64_R2 is not set
106# CONFIG_CPU_R3000 is not set 139# CONFIG_CPU_R3000 is not set
107# CONFIG_CPU_TX39XX is not set 140# CONFIG_CPU_TX39XX is not set
108# CONFIG_CPU_VR41XX is not set 141# CONFIG_CPU_VR41XX is not set
@@ -118,17 +151,41 @@ CONFIG_CPU_R5000=y
118# CONFIG_CPU_RM7000 is not set 151# CONFIG_CPU_RM7000 is not set
119# CONFIG_CPU_RM9000 is not set 152# CONFIG_CPU_RM9000 is not set
120# CONFIG_CPU_SB1 is not set 153# CONFIG_CPU_SB1 is not set
154CONFIG_SYS_HAS_CPU_R5000=y
155CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
156CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
157CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
158CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
159
160#
161# Kernel type
162#
163CONFIG_32BIT=y
164# CONFIG_64BIT is not set
121CONFIG_PAGE_SIZE_4KB=y 165CONFIG_PAGE_SIZE_4KB=y
122# CONFIG_PAGE_SIZE_8KB is not set 166# CONFIG_PAGE_SIZE_8KB is not set
123# CONFIG_PAGE_SIZE_16KB is not set 167# CONFIG_PAGE_SIZE_16KB is not set
124# CONFIG_PAGE_SIZE_64KB is not set 168# CONFIG_PAGE_SIZE_64KB is not set
125CONFIG_BOARD_SCACHE=y 169CONFIG_BOARD_SCACHE=y
126CONFIG_R5000_CPU_SCACHE=y 170CONFIG_R5000_CPU_SCACHE=y
171# CONFIG_MIPS_MT is not set
127# CONFIG_64BIT_PHYS_ADDR is not set 172# CONFIG_64BIT_PHYS_ADDR is not set
128# CONFIG_CPU_ADVANCED is not set 173# CONFIG_CPU_ADVANCED is not set
129CONFIG_CPU_HAS_LLSC=y 174CONFIG_CPU_HAS_LLSC=y
130CONFIG_CPU_HAS_LLDSCD=y 175CONFIG_CPU_HAS_LLDSCD=y
131CONFIG_CPU_HAS_SYNC=y 176CONFIG_CPU_HAS_SYNC=y
177CONFIG_GENERIC_HARDIRQS=y
178CONFIG_GENERIC_IRQ_PROBE=y
179CONFIG_ARCH_FLATMEM_ENABLE=y
180CONFIG_SELECT_MEMORY_MODEL=y
181CONFIG_FLATMEM_MANUAL=y
182# CONFIG_DISCONTIGMEM_MANUAL is not set
183# CONFIG_SPARSEMEM_MANUAL is not set
184CONFIG_FLATMEM=y
185CONFIG_FLAT_NODE_MEM_MAP=y
186# CONFIG_SPARSEMEM_STATIC is not set
187CONFIG_PREEMPT_NONE=y
188# CONFIG_PREEMPT_VOLUNTARY is not set
132# CONFIG_PREEMPT is not set 189# CONFIG_PREEMPT is not set
133 190
134# 191#
@@ -137,7 +194,6 @@ CONFIG_CPU_HAS_SYNC=y
137CONFIG_HW_HAS_PCI=y 194CONFIG_HW_HAS_PCI=y
138CONFIG_PCI=y 195CONFIG_PCI=y
139CONFIG_PCI_LEGACY_PROC=y 196CONFIG_PCI_LEGACY_PROC=y
140# CONFIG_PCI_NAMES is not set
141CONFIG_MMU=y 197CONFIG_MMU=y
142 198
143# 199#
@@ -146,10 +202,6 @@ CONFIG_MMU=y
146# CONFIG_PCCARD is not set 202# CONFIG_PCCARD is not set
147 203
148# 204#
149# PC-card bridges
150#
151
152#
153# PCI Hotplug Support 205# PCI Hotplug Support
154# 206#
155# CONFIG_HOTPLUG_PCI is not set 207# CONFIG_HOTPLUG_PCI is not set
@@ -162,6 +214,76 @@ CONFIG_BINFMT_ELF=y
162CONFIG_TRAD_SIGNALS=y 214CONFIG_TRAD_SIGNALS=y
163 215
164# 216#
217# Networking
218#
219CONFIG_NET=y
220
221#
222# Networking options
223#
224# CONFIG_PACKET is not set
225CONFIG_UNIX=y
226CONFIG_XFRM=y
227CONFIG_XFRM_USER=m
228CONFIG_NET_KEY=y
229CONFIG_INET=y
230# CONFIG_IP_MULTICAST is not set
231# CONFIG_IP_ADVANCED_ROUTER is not set
232CONFIG_IP_FIB_HASH=y
233# CONFIG_IP_PNP is not set
234# CONFIG_NET_IPIP is not set
235# CONFIG_NET_IPGRE is not set
236# CONFIG_ARPD is not set
237# CONFIG_SYN_COOKIES is not set
238# CONFIG_INET_AH is not set
239# CONFIG_INET_ESP is not set
240# CONFIG_INET_IPCOMP is not set
241CONFIG_INET_TUNNEL=m
242CONFIG_INET_DIAG=y
243CONFIG_INET_TCP_DIAG=y
244# CONFIG_TCP_CONG_ADVANCED is not set
245CONFIG_TCP_CONG_BIC=y
246# CONFIG_IPV6 is not set
247# CONFIG_NETFILTER is not set
248
249#
250# DCCP Configuration (EXPERIMENTAL)
251#
252# CONFIG_IP_DCCP is not set
253
254#
255# SCTP Configuration (EXPERIMENTAL)
256#
257# CONFIG_IP_SCTP is not set
258# CONFIG_ATM is not set
259# CONFIG_BRIDGE is not set
260# CONFIG_VLAN_8021Q is not set
261# CONFIG_DECNET is not set
262# CONFIG_LLC2 is not set
263# CONFIG_IPX is not set
264# CONFIG_ATALK is not set
265# CONFIG_X25 is not set
266# CONFIG_LAPB is not set
267# CONFIG_NET_DIVERT is not set
268# CONFIG_ECONET is not set
269# CONFIG_WAN_ROUTER is not set
270# CONFIG_NET_SCHED is not set
271# CONFIG_NET_CLS_ROUTE is not set
272
273#
274# Network testing
275#
276# CONFIG_NET_PKTGEN is not set
277# CONFIG_HAMRADIO is not set
278# CONFIG_IRDA is not set
279# CONFIG_BT is not set
280CONFIG_IEEE80211=m
281# CONFIG_IEEE80211_DEBUG is not set
282CONFIG_IEEE80211_CRYPT_WEP=m
283CONFIG_IEEE80211_CRYPT_CCMP=m
284CONFIG_IEEE80211_CRYPT_TKIP=m
285
286#
165# Device Drivers 287# Device Drivers
166# 288#
167 289
@@ -170,15 +292,20 @@ CONFIG_TRAD_SIGNALS=y
170# 292#
171CONFIG_STANDALONE=y 293CONFIG_STANDALONE=y
172CONFIG_PREVENT_FIRMWARE_BUILD=y 294CONFIG_PREVENT_FIRMWARE_BUILD=y
173# CONFIG_FW_LOADER is not set 295CONFIG_FW_LOADER=m
296
297#
298# Connector - unified userspace <-> kernelspace linker
299#
300CONFIG_CONNECTOR=m
174 301
175# 302#
176# Memory Technology Devices (MTD) 303# Memory Technology Devices (MTD)
177# 304#
178CONFIG_MTD=y 305CONFIG_MTD=y
179# CONFIG_MTD_DEBUG is not set 306# CONFIG_MTD_DEBUG is not set
180CONFIG_MTD_PARTITIONS=y
181# CONFIG_MTD_CONCAT is not set 307# CONFIG_MTD_CONCAT is not set
308CONFIG_MTD_PARTITIONS=y
182# CONFIG_MTD_REDBOOT_PARTS is not set 309# CONFIG_MTD_REDBOOT_PARTS is not set
183# CONFIG_MTD_CMDLINE_PARTS is not set 310# CONFIG_MTD_CMDLINE_PARTS is not set
184 311
@@ -223,6 +350,7 @@ CONFIG_MTD_CFI_UTIL=y
223# CONFIG_MTD_COMPLEX_MAPPINGS is not set 350# CONFIG_MTD_COMPLEX_MAPPINGS is not set
224# CONFIG_MTD_PHYSMAP is not set 351# CONFIG_MTD_PHYSMAP is not set
225CONFIG_MTD_LASAT=y 352CONFIG_MTD_LASAT=y
353# CONFIG_MTD_PLATRAM is not set
226 354
227# 355#
228# Self-contained MTD device drivers 356# Self-contained MTD device drivers
@@ -258,7 +386,6 @@ CONFIG_MTD_LASAT=y
258# 386#
259# Block devices 387# Block devices
260# 388#
261# CONFIG_BLK_DEV_FD is not set
262# CONFIG_BLK_CPQ_DA is not set 389# CONFIG_BLK_CPQ_DA is not set
263# CONFIG_BLK_CPQ_CISS_DA is not set 390# CONFIG_BLK_CPQ_CISS_DA is not set
264# CONFIG_BLK_DEV_DAC960 is not set 391# CONFIG_BLK_DEV_DAC960 is not set
@@ -269,7 +396,6 @@ CONFIG_MTD_LASAT=y
269# CONFIG_BLK_DEV_SX8 is not set 396# CONFIG_BLK_DEV_SX8 is not set
270# CONFIG_BLK_DEV_RAM is not set 397# CONFIG_BLK_DEV_RAM is not set
271CONFIG_BLK_DEV_RAM_COUNT=16 398CONFIG_BLK_DEV_RAM_COUNT=16
272CONFIG_INITRAMFS_SOURCE=""
273# CONFIG_LBD is not set 399# CONFIG_LBD is not set
274CONFIG_CDROM_PKTCDVD=m 400CONFIG_CDROM_PKTCDVD=m
275CONFIG_CDROM_PKTCDVD_BUFFERS=8 401CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -326,6 +452,7 @@ CONFIG_BLK_DEV_CMD64X=y
326# CONFIG_BLK_DEV_HPT366 is not set 452# CONFIG_BLK_DEV_HPT366 is not set
327# CONFIG_BLK_DEV_SC1200 is not set 453# CONFIG_BLK_DEV_SC1200 is not set
328# CONFIG_BLK_DEV_PIIX is not set 454# CONFIG_BLK_DEV_PIIX is not set
455# CONFIG_BLK_DEV_IT821X is not set
329# CONFIG_BLK_DEV_NS87415 is not set 456# CONFIG_BLK_DEV_NS87415 is not set
330# CONFIG_BLK_DEV_PDC202XX_OLD is not set 457# CONFIG_BLK_DEV_PDC202XX_OLD is not set
331# CONFIG_BLK_DEV_PDC202XX_NEW is not set 458# CONFIG_BLK_DEV_PDC202XX_NEW is not set
@@ -343,6 +470,7 @@ CONFIG_IDEDMA_AUTO=y
343# 470#
344# SCSI device support 471# SCSI device support
345# 472#
473CONFIG_RAID_ATTRS=m
346# CONFIG_SCSI is not set 474# CONFIG_SCSI is not set
347 475
348# 476#
@@ -353,6 +481,7 @@ CONFIG_IDEDMA_AUTO=y
353# 481#
354# Fusion MPT device support 482# Fusion MPT device support
355# 483#
484# CONFIG_FUSION is not set
356 485
357# 486#
358# IEEE 1394 (FireWire) support 487# IEEE 1394 (FireWire) support
@@ -365,68 +494,8 @@ CONFIG_IDEDMA_AUTO=y
365# CONFIG_I2O is not set 494# CONFIG_I2O is not set
366 495
367# 496#
368# Networking support 497# Network device support
369#
370CONFIG_NET=y
371
372#
373# Networking options
374#
375# CONFIG_PACKET is not set
376# CONFIG_NETLINK_DEV is not set
377CONFIG_UNIX=y
378CONFIG_NET_KEY=y
379CONFIG_INET=y
380# CONFIG_IP_MULTICAST is not set
381# CONFIG_IP_ADVANCED_ROUTER is not set
382# CONFIG_IP_PNP is not set
383# CONFIG_NET_IPIP is not set
384# CONFIG_NET_IPGRE is not set
385# CONFIG_ARPD is not set
386# CONFIG_SYN_COOKIES is not set
387# CONFIG_INET_AH is not set
388# CONFIG_INET_ESP is not set
389# CONFIG_INET_IPCOMP is not set
390CONFIG_INET_TUNNEL=m
391CONFIG_IP_TCPDIAG=m
392# CONFIG_IP_TCPDIAG_IPV6 is not set
393# CONFIG_IPV6 is not set
394# CONFIG_NETFILTER is not set
395CONFIG_XFRM=y
396CONFIG_XFRM_USER=m
397
398#
399# SCTP Configuration (EXPERIMENTAL)
400#
401# CONFIG_IP_SCTP is not set
402# CONFIG_ATM is not set
403# CONFIG_BRIDGE is not set
404# CONFIG_VLAN_8021Q is not set
405# CONFIG_DECNET is not set
406# CONFIG_LLC2 is not set
407# CONFIG_IPX is not set
408# CONFIG_ATALK is not set
409# CONFIG_X25 is not set
410# CONFIG_LAPB is not set
411# CONFIG_NET_DIVERT is not set
412# CONFIG_ECONET is not set
413# CONFIG_WAN_ROUTER is not set
414
415#
416# QoS and/or fair queueing
417# 498#
418# CONFIG_NET_SCHED is not set
419# CONFIG_NET_CLS_ROUTE is not set
420
421#
422# Network testing
423#
424# CONFIG_NET_PKTGEN is not set
425# CONFIG_NETPOLL is not set
426# CONFIG_NET_POLL_CONTROLLER is not set
427# CONFIG_HAMRADIO is not set
428# CONFIG_IRDA is not set
429# CONFIG_BT is not set
430CONFIG_NETDEVICES=y 499CONFIG_NETDEVICES=y
431# CONFIG_DUMMY is not set 500# CONFIG_DUMMY is not set
432# CONFIG_BONDING is not set 501# CONFIG_BONDING is not set
@@ -439,6 +508,21 @@ CONFIG_NETDEVICES=y
439# CONFIG_ARCNET is not set 508# CONFIG_ARCNET is not set
440 509
441# 510#
511# PHY device support
512#
513CONFIG_PHYLIB=m
514CONFIG_PHYCONTROL=y
515
516#
517# MII PHY device drivers
518#
519CONFIG_MARVELL_PHY=m
520CONFIG_DAVICOM_PHY=m
521CONFIG_QSEMI_PHY=m
522CONFIG_LXT_PHY=m
523CONFIG_CICADA_PHY=m
524
525#
442# Ethernet (10 or 100Mbit) 526# Ethernet (10 or 100Mbit)
443# 527#
444CONFIG_NET_ETHERNET=y 528CONFIG_NET_ETHERNET=y
@@ -464,12 +548,16 @@ CONFIG_NET_ETHERNET=y
464# CONFIG_HAMACHI is not set 548# CONFIG_HAMACHI is not set
465# CONFIG_YELLOWFIN is not set 549# CONFIG_YELLOWFIN is not set
466# CONFIG_R8169 is not set 550# CONFIG_R8169 is not set
551# CONFIG_SIS190 is not set
552# CONFIG_SKGE is not set
467# CONFIG_SK98LIN is not set 553# CONFIG_SK98LIN is not set
468# CONFIG_TIGON3 is not set 554# CONFIG_TIGON3 is not set
555# CONFIG_BNX2 is not set
469 556
470# 557#
471# Ethernet (10000 Mbit) 558# Ethernet (10000 Mbit)
472# 559#
560# CONFIG_CHELSIO_T1 is not set
473# CONFIG_IXGB is not set 561# CONFIG_IXGB is not set
474# CONFIG_S2IO is not set 562# CONFIG_S2IO is not set
475 563
@@ -482,6 +570,8 @@ CONFIG_NET_ETHERNET=y
482# Wireless LAN (non-hamradio) 570# Wireless LAN (non-hamradio)
483# 571#
484# CONFIG_NET_RADIO is not set 572# CONFIG_NET_RADIO is not set
573# CONFIG_IPW_DEBUG is not set
574CONFIG_IPW2200=m
485 575
486# 576#
487# Wan interfaces 577# Wan interfaces
@@ -493,6 +583,8 @@ CONFIG_NET_ETHERNET=y
493# CONFIG_SLIP is not set 583# CONFIG_SLIP is not set
494# CONFIG_SHAPER is not set 584# CONFIG_SHAPER is not set
495# CONFIG_NETCONSOLE is not set 585# CONFIG_NETCONSOLE is not set
586# CONFIG_NETPOLL is not set
587# CONFIG_NET_POLL_CONTROLLER is not set
496 588
497# 589#
498# ISDN subsystem 590# ISDN subsystem
@@ -522,19 +614,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
522# CONFIG_INPUT_EVBUG is not set 614# CONFIG_INPUT_EVBUG is not set
523 615
524# 616#
525# Input I/O drivers
526#
527# CONFIG_GAMEPORT is not set
528CONFIG_SOUND_GAMEPORT=y
529CONFIG_SERIO=y
530CONFIG_SERIO_I8042=y
531CONFIG_SERIO_SERPORT=y
532# CONFIG_SERIO_CT82C710 is not set
533# CONFIG_SERIO_PCIPS2 is not set
534# CONFIG_SERIO_LIBPS2 is not set
535CONFIG_SERIO_RAW=m
536
537#
538# Input Device Drivers 617# Input Device Drivers
539# 618#
540# CONFIG_INPUT_KEYBOARD is not set 619# CONFIG_INPUT_KEYBOARD is not set
@@ -544,6 +623,17 @@ CONFIG_SERIO_RAW=m
544# CONFIG_INPUT_MISC is not set 623# CONFIG_INPUT_MISC is not set
545 624
546# 625#
626# Hardware I/O ports
627#
628CONFIG_SERIO=y
629CONFIG_SERIO_I8042=y
630CONFIG_SERIO_SERPORT=y
631# CONFIG_SERIO_PCIPS2 is not set
632# CONFIG_SERIO_LIBPS2 is not set
633CONFIG_SERIO_RAW=m
634# CONFIG_GAMEPORT is not set
635
636#
547# Character devices 637# Character devices
548# 638#
549CONFIG_VT=y 639CONFIG_VT=y
@@ -564,6 +654,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4
564# 654#
565CONFIG_SERIAL_CORE=y 655CONFIG_SERIAL_CORE=y
566CONFIG_SERIAL_CORE_CONSOLE=y 656CONFIG_SERIAL_CORE_CONSOLE=y
657# CONFIG_SERIAL_JSM is not set
567CONFIG_UNIX98_PTYS=y 658CONFIG_UNIX98_PTYS=y
568CONFIG_LEGACY_PTYS=y 659CONFIG_LEGACY_PTYS=y
569CONFIG_LEGACY_PTY_COUNT=256 660CONFIG_LEGACY_PTY_COUNT=256
@@ -590,6 +681,11 @@ CONFIG_LEGACY_PTY_COUNT=256
590# CONFIG_RAW_DRIVER is not set 681# CONFIG_RAW_DRIVER is not set
591 682
592# 683#
684# TPM devices
685#
686# CONFIG_TCG_TPM is not set
687
688#
593# I2C support 689# I2C support
594# 690#
595# CONFIG_I2C is not set 691# CONFIG_I2C is not set
@@ -600,10 +696,20 @@ CONFIG_LEGACY_PTY_COUNT=256
600# CONFIG_W1 is not set 696# CONFIG_W1 is not set
601 697
602# 698#
699# Hardware Monitoring support
700#
701# CONFIG_HWMON is not set
702# CONFIG_HWMON_VID is not set
703
704#
603# Misc devices 705# Misc devices
604# 706#
605 707
606# 708#
709# Multimedia Capabilities Port drivers
710#
711
712#
607# Multimedia devices 713# Multimedia devices
608# 714#
609# CONFIG_VIDEO_DEV is not set 715# CONFIG_VIDEO_DEV is not set
@@ -623,7 +729,6 @@ CONFIG_LEGACY_PTY_COUNT=256
623# 729#
624# CONFIG_VGA_CONSOLE is not set 730# CONFIG_VGA_CONSOLE is not set
625CONFIG_DUMMY_CONSOLE=y 731CONFIG_DUMMY_CONSOLE=y
626# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
627 732
628# 733#
629# Sound 734# Sound
@@ -633,13 +738,9 @@ CONFIG_DUMMY_CONSOLE=y
633# 738#
634# USB support 739# USB support
635# 740#
636# CONFIG_USB is not set
637CONFIG_USB_ARCH_HAS_HCD=y 741CONFIG_USB_ARCH_HAS_HCD=y
638CONFIG_USB_ARCH_HAS_OHCI=y 742CONFIG_USB_ARCH_HAS_OHCI=y
639 743# CONFIG_USB is not set
640#
641# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
642#
643 744
644# 745#
645# USB Gadget Support 746# USB Gadget Support
@@ -657,10 +758,15 @@ CONFIG_USB_ARCH_HAS_OHCI=y
657# CONFIG_INFINIBAND is not set 758# CONFIG_INFINIBAND is not set
658 759
659# 760#
761# SN Devices
762#
763
764#
660# File systems 765# File systems
661# 766#
662CONFIG_EXT2_FS=y 767CONFIG_EXT2_FS=y
663# CONFIG_EXT2_FS_XATTR is not set 768# CONFIG_EXT2_FS_XATTR is not set
769# CONFIG_EXT2_FS_XIP is not set
664CONFIG_EXT3_FS=y 770CONFIG_EXT3_FS=y
665CONFIG_EXT3_FS_XATTR=y 771CONFIG_EXT3_FS_XATTR=y
666# CONFIG_EXT3_FS_POSIX_ACL is not set 772# CONFIG_EXT3_FS_POSIX_ACL is not set
@@ -670,13 +776,16 @@ CONFIG_JBD=y
670CONFIG_FS_MBCACHE=y 776CONFIG_FS_MBCACHE=y
671# CONFIG_REISERFS_FS is not set 777# CONFIG_REISERFS_FS is not set
672# CONFIG_JFS_FS is not set 778# CONFIG_JFS_FS is not set
779# CONFIG_FS_POSIX_ACL is not set
673# CONFIG_XFS_FS is not set 780# CONFIG_XFS_FS is not set
674# CONFIG_MINIX_FS is not set 781# CONFIG_MINIX_FS is not set
675# CONFIG_ROMFS_FS is not set 782# CONFIG_ROMFS_FS is not set
783CONFIG_INOTIFY=y
676# CONFIG_QUOTA is not set 784# CONFIG_QUOTA is not set
677CONFIG_DNOTIFY=y 785CONFIG_DNOTIFY=y
678# CONFIG_AUTOFS_FS is not set 786# CONFIG_AUTOFS_FS is not set
679# CONFIG_AUTOFS4_FS is not set 787# CONFIG_AUTOFS4_FS is not set
788CONFIG_FUSE_FS=m
680 789
681# 790#
682# CD-ROM/DVD Filesystems 791# CD-ROM/DVD Filesystems
@@ -697,12 +806,10 @@ CONFIG_DNOTIFY=y
697CONFIG_PROC_FS=y 806CONFIG_PROC_FS=y
698CONFIG_PROC_KCORE=y 807CONFIG_PROC_KCORE=y
699CONFIG_SYSFS=y 808CONFIG_SYSFS=y
700# CONFIG_DEVFS_FS is not set
701CONFIG_DEVPTS_FS_XATTR=y
702CONFIG_DEVPTS_FS_SECURITY=y
703# CONFIG_TMPFS is not set 809# CONFIG_TMPFS is not set
704# CONFIG_HUGETLB_PAGE is not set 810# CONFIG_HUGETLB_PAGE is not set
705CONFIG_RAMFS=y 811CONFIG_RAMFS=y
812CONFIG_RELAYFS_FS=m
706 813
707# 814#
708# Miscellaneous filesystems 815# Miscellaneous filesystems
@@ -728,12 +835,13 @@ CONFIG_RAMFS=y
728# 835#
729CONFIG_NFS_FS=y 836CONFIG_NFS_FS=y
730CONFIG_NFS_V3=y 837CONFIG_NFS_V3=y
838# CONFIG_NFS_V3_ACL is not set
731# CONFIG_NFS_V4 is not set 839# CONFIG_NFS_V4 is not set
732# CONFIG_NFS_DIRECTIO is not set 840# CONFIG_NFS_DIRECTIO is not set
733# CONFIG_NFSD is not set 841# CONFIG_NFSD is not set
734CONFIG_LOCKD=y 842CONFIG_LOCKD=y
735CONFIG_LOCKD_V4=y 843CONFIG_LOCKD_V4=y
736# CONFIG_EXPORTFS is not set 844CONFIG_NFS_COMMON=y
737CONFIG_SUNRPC=y 845CONFIG_SUNRPC=y
738# CONFIG_RPCSEC_GSS_KRB5 is not set 846# CONFIG_RPCSEC_GSS_KRB5 is not set
739# CONFIG_RPCSEC_GSS_SPKM3 is not set 847# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -742,6 +850,7 @@ CONFIG_SUNRPC=y
742# CONFIG_NCP_FS is not set 850# CONFIG_NCP_FS is not set
743# CONFIG_CODA_FS is not set 851# CONFIG_CODA_FS is not set
744# CONFIG_AFS_FS is not set 852# CONFIG_AFS_FS is not set
853# CONFIG_9P_FS is not set
745 854
746# 855#
747# Partition Types 856# Partition Types
@@ -762,7 +871,9 @@ CONFIG_MSDOS_PARTITION=y
762# 871#
763# Kernel hacking 872# Kernel hacking
764# 873#
874# CONFIG_PRINTK_TIME is not set
765# CONFIG_DEBUG_KERNEL is not set 875# CONFIG_DEBUG_KERNEL is not set
876CONFIG_LOG_BUF_SHIFT=14
766CONFIG_CROSSCOMPILE=y 877CONFIG_CROSSCOMPILE=y
767CONFIG_CMDLINE="" 878CONFIG_CMDLINE=""
768 879
@@ -776,7 +887,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
776# 887#
777# Cryptographic options 888# Cryptographic options
778# 889#
779# CONFIG_CRYPTO is not set 890CONFIG_CRYPTO=y
891CONFIG_CRYPTO_HMAC=y
892CONFIG_CRYPTO_NULL=m
893CONFIG_CRYPTO_MD4=m
894CONFIG_CRYPTO_MD5=m
895CONFIG_CRYPTO_SHA1=m
896CONFIG_CRYPTO_SHA256=m
897CONFIG_CRYPTO_SHA512=m
898CONFIG_CRYPTO_WP512=m
899CONFIG_CRYPTO_TGR192=m
900CONFIG_CRYPTO_DES=m
901CONFIG_CRYPTO_BLOWFISH=m
902CONFIG_CRYPTO_TWOFISH=m
903CONFIG_CRYPTO_SERPENT=m
904CONFIG_CRYPTO_AES=m
905CONFIG_CRYPTO_CAST5=m
906CONFIG_CRYPTO_CAST6=m
907CONFIG_CRYPTO_TEA=m
908CONFIG_CRYPTO_ARC4=m
909CONFIG_CRYPTO_KHAZAD=m
910CONFIG_CRYPTO_ANUBIS=m
911CONFIG_CRYPTO_DEFLATE=m
912CONFIG_CRYPTO_MICHAEL_MIC=m
913CONFIG_CRYPTO_CRC32C=m
914# CONFIG_CRYPTO_TEST is not set
780 915
781# 916#
782# Hardware crypto devices 917# Hardware crypto devices
@@ -786,7 +921,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
786# Library routines 921# Library routines
787# 922#
788# CONFIG_CRC_CCITT is not set 923# CONFIG_CRC_CCITT is not set
924CONFIG_CRC16=m
789CONFIG_CRC32=y 925CONFIG_CRC32=y
790CONFIG_LIBCRC32C=m 926CONFIG_LIBCRC32C=m
791CONFIG_GENERIC_HARDIRQS=y 927CONFIG_ZLIB_INFLATE=m
792CONFIG_GENERIC_IRQ_PROBE=y 928CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/mips/configs/malta_defconfig b/arch/mips/configs/malta_defconfig
index 79519ac5af4a..2acdec959dd0 100644
--- a/arch/mips/configs/malta_defconfig
+++ b/arch/mips/configs/malta_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:53:14 2005 4# Thu Oct 20 22:26:22 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14
29CONFIG_HOTPLUG=y 27CONFIG_HOTPLUG=y
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,44 +59,75 @@ CONFIG_KMOD=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60# CONFIG_MACH_VR41XX is not set 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_TOSHIBA_JMR3927 is not set 64# CONFIG_MIPS_PB1000 is not set
65# CONFIG_MIPS_PB1100 is not set
66# CONFIG_MIPS_PB1500 is not set
67# CONFIG_MIPS_PB1550 is not set
68# CONFIG_MIPS_PB1200 is not set
69# CONFIG_MIPS_DB1000 is not set
70# CONFIG_MIPS_DB1100 is not set
71# CONFIG_MIPS_DB1500 is not set
72# CONFIG_MIPS_DB1550 is not set
73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
62# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
63# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
64# CONFIG_MIPS_EV64120 is not set 77# CONFIG_MIPS_EV64120 is not set
65# CONFIG_MIPS_EV96100 is not set 78# CONFIG_MIPS_EV96100 is not set
66# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
67# CONFIG_LASAT is not set
68# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
69# CONFIG_MIPS_ATLAS is not set 83# CONFIG_MIPS_ATLAS is not set
70CONFIG_MIPS_MALTA=y 84CONFIG_MIPS_MALTA=y
71# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
72# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
73# CONFIG_MOMENCO_OCELOT_G is not set
74# CONFIG_MOMENCO_OCELOT_C is not set
75# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
76# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
77# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
78# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
79# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
80# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
81# CONFIG_NEC_OSPREY is not set 98# CONFIG_MACH_VR41XX is not set
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
82# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
83# CONFIG_SOC_AU1X00 is not set 102# CONFIG_SGI_IP27 is not set
84# CONFIG_SIBYTE_SB1xxx_SOC is not set 103# CONFIG_SGI_IP32 is not set
104# CONFIG_SIBYTE_BIGSUR is not set
105# CONFIG_SIBYTE_SWARM is not set
106# CONFIG_SIBYTE_SENTOSA is not set
107# CONFIG_SIBYTE_RHONE is not set
108# CONFIG_SIBYTE_CARMEL is not set
109# CONFIG_SIBYTE_PTSWARM is not set
110# CONFIG_SIBYTE_LITTLESUR is not set
111# CONFIG_SIBYTE_CRHINE is not set
112# CONFIG_SIBYTE_CRHONE is not set
85# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
86# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
87CONFIG_RWSEM_GENERIC_SPINLOCK=y 117CONFIG_RWSEM_GENERIC_SPINLOCK=y
88CONFIG_GENERIC_CALIBRATE_DELAY=y 118CONFIG_GENERIC_CALIBRATE_DELAY=y
89CONFIG_HAVE_DEC_LOCK=y 119CONFIG_ARCH_MAY_HAVE_PC_FDC=y
90CONFIG_DMA_NONCOHERENT=y 120CONFIG_DMA_NONCOHERENT=y
91CONFIG_DMA_NEED_PCI_MAP_STATE=y 121CONFIG_DMA_NEED_PCI_MAP_STATE=y
92CONFIG_GENERIC_ISA_DMA=y 122CONFIG_GENERIC_ISA_DMA=y
93CONFIG_I8259=y 123CONFIG_I8259=y
94CONFIG_MIPS_BONITO64=y 124CONFIG_MIPS_BONITO64=y
95CONFIG_MIPS_MSC=y 125CONFIG_MIPS_MSC=y
126# CONFIG_CPU_BIG_ENDIAN is not set
96CONFIG_CPU_LITTLE_ENDIAN=y 127CONFIG_CPU_LITTLE_ENDIAN=y
128CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
129CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
130CONFIG_IRQ_CPU=y
97CONFIG_MIPS_BOARDS_GEN=y 131CONFIG_MIPS_BOARDS_GEN=y
98CONFIG_MIPS_GT64120=y 132CONFIG_MIPS_GT64120=y
99CONFIG_SWAP_IO_SPACE=y 133CONFIG_SWAP_IO_SPACE=y
@@ -104,8 +138,10 @@ CONFIG_HAVE_STD_PC_SERIAL_PORT=y
104# 138#
105# CPU selection 139# CPU selection
106# 140#
107CONFIG_CPU_MIPS32=y 141CONFIG_CPU_MIPS32_R1=y
108# CONFIG_CPU_MIPS64 is not set 142# CONFIG_CPU_MIPS32_R2 is not set
143# CONFIG_CPU_MIPS64_R1 is not set
144# CONFIG_CPU_MIPS64_R2 is not set
109# CONFIG_CPU_R3000 is not set 145# CONFIG_CPU_R3000 is not set
110# CONFIG_CPU_TX39XX is not set 146# CONFIG_CPU_TX39XX is not set
111# CONFIG_CPU_VR41XX is not set 147# CONFIG_CPU_VR41XX is not set
@@ -121,14 +157,48 @@ CONFIG_CPU_MIPS32=y
121# CONFIG_CPU_RM7000 is not set 157# CONFIG_CPU_RM7000 is not set
122# CONFIG_CPU_RM9000 is not set 158# CONFIG_CPU_RM9000 is not set
123# CONFIG_CPU_SB1 is not set 159# CONFIG_CPU_SB1 is not set
160CONFIG_SYS_HAS_CPU_MIPS32_R1=y
161CONFIG_SYS_HAS_CPU_MIPS32_R2=y
162CONFIG_SYS_HAS_CPU_MIPS64_R1=y
163CONFIG_SYS_HAS_CPU_NEVADA=y
164CONFIG_SYS_HAS_CPU_RM7000=y
165CONFIG_CPU_MIPS32=y
166CONFIG_CPU_MIPSR1=y
167CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
168CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
169CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
170
171#
172# Kernel type
173#
174CONFIG_32BIT=y
175# CONFIG_64BIT is not set
124CONFIG_PAGE_SIZE_4KB=y 176CONFIG_PAGE_SIZE_4KB=y
125# CONFIG_PAGE_SIZE_8KB is not set 177# CONFIG_PAGE_SIZE_8KB is not set
126# CONFIG_PAGE_SIZE_16KB is not set 178# CONFIG_PAGE_SIZE_16KB is not set
127# CONFIG_PAGE_SIZE_64KB is not set 179# CONFIG_PAGE_SIZE_64KB is not set
180CONFIG_CPU_HAS_PREFETCH=y
181CONFIG_MIPS_MT=y
182# CONFIG_MIPS_MT_SMP is not set
183CONFIG_MIPS_VPE_LOADER=y
184CONFIG_MIPS_VPE_LOADER_TOM=y
185CONFIG_MIPS_VPE_APSP_API=y
128# CONFIG_64BIT_PHYS_ADDR is not set 186# CONFIG_64BIT_PHYS_ADDR is not set
129# CONFIG_CPU_ADVANCED is not set 187# CONFIG_CPU_ADVANCED is not set
130CONFIG_CPU_HAS_LLSC=y 188CONFIG_CPU_HAS_LLSC=y
131CONFIG_CPU_HAS_SYNC=y 189CONFIG_CPU_HAS_SYNC=y
190CONFIG_GENERIC_HARDIRQS=y
191CONFIG_GENERIC_IRQ_PROBE=y
192CONFIG_ARCH_FLATMEM_ENABLE=y
193CONFIG_SELECT_MEMORY_MODEL=y
194CONFIG_FLATMEM_MANUAL=y
195# CONFIG_DISCONTIGMEM_MANUAL is not set
196# CONFIG_SPARSEMEM_MANUAL is not set
197CONFIG_FLATMEM=y
198CONFIG_FLAT_NODE_MEM_MAP=y
199# CONFIG_SPARSEMEM_STATIC is not set
200CONFIG_PREEMPT_NONE=y
201# CONFIG_PREEMPT_VOLUNTARY is not set
132# CONFIG_PREEMPT is not set 202# CONFIG_PREEMPT is not set
133 203
134# 204#
@@ -137,7 +207,6 @@ CONFIG_CPU_HAS_SYNC=y
137CONFIG_HW_HAS_PCI=y 207CONFIG_HW_HAS_PCI=y
138CONFIG_PCI=y 208CONFIG_PCI=y
139CONFIG_PCI_LEGACY_PROC=y 209CONFIG_PCI_LEGACY_PROC=y
140CONFIG_PCI_NAMES=y
141CONFIG_MMU=y 210CONFIG_MMU=y
142 211
143# 212#
@@ -146,10 +215,6 @@ CONFIG_MMU=y
146# CONFIG_PCCARD is not set 215# CONFIG_PCCARD is not set
147 216
148# 217#
149# PC-card bridges
150#
151
152#
153# PCI Hotplug Support 218# PCI Hotplug Support
154# 219#
155# CONFIG_HOTPLUG_PCI is not set 220# CONFIG_HOTPLUG_PCI is not set
@@ -162,229 +227,7 @@ CONFIG_BINFMT_ELF=y
162CONFIG_TRAD_SIGNALS=y 227CONFIG_TRAD_SIGNALS=y
163 228
164# 229#
165# Device Drivers 230# Networking
166#
167
168#
169# Generic Driver Options
170#
171CONFIG_STANDALONE=y
172CONFIG_PREVENT_FIRMWARE_BUILD=y
173CONFIG_FW_LOADER=y
174
175#
176# Memory Technology Devices (MTD)
177#
178# CONFIG_MTD is not set
179
180#
181# Parallel port support
182#
183# CONFIG_PARPORT is not set
184
185#
186# Plug and Play support
187#
188
189#
190# Block devices
191#
192CONFIG_BLK_DEV_FD=m
193# CONFIG_BLK_CPQ_DA is not set
194# CONFIG_BLK_CPQ_CISS_DA is not set
195# CONFIG_BLK_DEV_DAC960 is not set
196CONFIG_BLK_DEV_UMEM=m
197# CONFIG_BLK_DEV_COW_COMMON is not set
198CONFIG_BLK_DEV_LOOP=m
199CONFIG_BLK_DEV_CRYPTOLOOP=m
200CONFIG_BLK_DEV_NBD=m
201# CONFIG_BLK_DEV_SX8 is not set
202CONFIG_BLK_DEV_RAM=y
203CONFIG_BLK_DEV_RAM_COUNT=16
204CONFIG_BLK_DEV_RAM_SIZE=4096
205# CONFIG_BLK_DEV_INITRD is not set
206CONFIG_INITRAMFS_SOURCE=""
207# CONFIG_LBD is not set
208CONFIG_CDROM_PKTCDVD=m
209CONFIG_CDROM_PKTCDVD_BUFFERS=8
210# CONFIG_CDROM_PKTCDVD_WCACHE is not set
211
212#
213# IO Schedulers
214#
215CONFIG_IOSCHED_NOOP=y
216CONFIG_IOSCHED_AS=y
217CONFIG_IOSCHED_DEADLINE=y
218CONFIG_IOSCHED_CFQ=y
219CONFIG_ATA_OVER_ETH=m
220
221#
222# ATA/ATAPI/MFM/RLL support
223#
224CONFIG_IDE=y
225CONFIG_BLK_DEV_IDE=y
226
227#
228# Please see Documentation/ide.txt for help/info on IDE drives
229#
230# CONFIG_BLK_DEV_IDE_SATA is not set
231CONFIG_BLK_DEV_IDEDISK=y
232# CONFIG_IDEDISK_MULTI_MODE is not set
233CONFIG_BLK_DEV_IDECD=y
234# CONFIG_BLK_DEV_IDETAPE is not set
235# CONFIG_BLK_DEV_IDEFLOPPY is not set
236# CONFIG_BLK_DEV_IDESCSI is not set
237# CONFIG_IDE_TASK_IOCTL is not set
238
239#
240# IDE chipset support/bugfixes
241#
242CONFIG_IDE_GENERIC=y
243CONFIG_BLK_DEV_IDEPCI=y
244# CONFIG_IDEPCI_SHARE_IRQ is not set
245# CONFIG_BLK_DEV_OFFBOARD is not set
246CONFIG_BLK_DEV_GENERIC=y
247# CONFIG_BLK_DEV_OPTI621 is not set
248CONFIG_BLK_DEV_IDEDMA_PCI=y
249# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
250CONFIG_IDEDMA_PCI_AUTO=y
251# CONFIG_IDEDMA_ONLYDISK is not set
252# CONFIG_BLK_DEV_AEC62XX is not set
253# CONFIG_BLK_DEV_ALI15X3 is not set
254# CONFIG_BLK_DEV_AMD74XX is not set
255# CONFIG_BLK_DEV_CMD64X is not set
256# CONFIG_BLK_DEV_TRIFLEX is not set
257# CONFIG_BLK_DEV_CY82C693 is not set
258# CONFIG_BLK_DEV_CS5520 is not set
259# CONFIG_BLK_DEV_CS5530 is not set
260# CONFIG_BLK_DEV_HPT34X is not set
261# CONFIG_BLK_DEV_HPT366 is not set
262# CONFIG_BLK_DEV_SC1200 is not set
263CONFIG_BLK_DEV_PIIX=y
264# CONFIG_BLK_DEV_NS87415 is not set
265# CONFIG_BLK_DEV_PDC202XX_OLD is not set
266# CONFIG_BLK_DEV_PDC202XX_NEW is not set
267# CONFIG_BLK_DEV_SVWKS is not set
268# CONFIG_BLK_DEV_SIIMAGE is not set
269# CONFIG_BLK_DEV_SLC90E66 is not set
270# CONFIG_BLK_DEV_TRM290 is not set
271# CONFIG_BLK_DEV_VIA82CXXX is not set
272# CONFIG_IDE_ARM is not set
273CONFIG_BLK_DEV_IDEDMA=y
274# CONFIG_IDEDMA_IVB is not set
275CONFIG_IDEDMA_AUTO=y
276# CONFIG_BLK_DEV_HD is not set
277
278#
279# SCSI device support
280#
281CONFIG_SCSI=m
282CONFIG_SCSI_PROC_FS=y
283
284#
285# SCSI support type (disk, tape, CD-ROM)
286#
287CONFIG_BLK_DEV_SD=m
288CONFIG_CHR_DEV_ST=m
289CONFIG_CHR_DEV_OSST=m
290CONFIG_BLK_DEV_SR=m
291CONFIG_BLK_DEV_SR_VENDOR=y
292CONFIG_CHR_DEV_SG=m
293
294#
295# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
296#
297CONFIG_SCSI_MULTI_LUN=y
298CONFIG_SCSI_CONSTANTS=y
299CONFIG_SCSI_LOGGING=y
300
301#
302# SCSI Transport Attributes
303#
304CONFIG_SCSI_SPI_ATTRS=m
305CONFIG_SCSI_FC_ATTRS=m
306CONFIG_SCSI_ISCSI_ATTRS=m
307
308#
309# SCSI low-level drivers
310#
311CONFIG_BLK_DEV_3W_XXXX_RAID=m
312CONFIG_SCSI_3W_9XXX=m
313CONFIG_SCSI_ACARD=m
314CONFIG_SCSI_AACRAID=m
315CONFIG_SCSI_AIC7XXX=m
316CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
317CONFIG_AIC7XXX_RESET_DELAY_MS=15000
318# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
319CONFIG_AIC7XXX_DEBUG_MASK=0
320CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
321# CONFIG_SCSI_AIC7XXX_OLD is not set
322# CONFIG_SCSI_AIC79XX is not set
323# CONFIG_SCSI_DPT_I2O is not set
324# CONFIG_MEGARAID_NEWGEN is not set
325# CONFIG_MEGARAID_LEGACY is not set
326# CONFIG_SCSI_SATA is not set
327# CONFIG_SCSI_BUSLOGIC is not set
328# CONFIG_SCSI_DMX3191D is not set
329# CONFIG_SCSI_EATA is not set
330# CONFIG_SCSI_EATA_PIO is not set
331# CONFIG_SCSI_FUTURE_DOMAIN is not set
332# CONFIG_SCSI_GDTH is not set
333# CONFIG_SCSI_IPS is not set
334# CONFIG_SCSI_INITIO is not set
335# CONFIG_SCSI_INIA100 is not set
336# CONFIG_SCSI_SYM53C8XX_2 is not set
337# CONFIG_SCSI_IPR is not set
338# CONFIG_SCSI_QLOGIC_ISP is not set
339# CONFIG_SCSI_QLOGIC_FC is not set
340# CONFIG_SCSI_QLOGIC_1280 is not set
341CONFIG_SCSI_QLA2XXX=m
342# CONFIG_SCSI_QLA21XX is not set
343# CONFIG_SCSI_QLA22XX is not set
344# CONFIG_SCSI_QLA2300 is not set
345# CONFIG_SCSI_QLA2322 is not set
346# CONFIG_SCSI_QLA6312 is not set
347# CONFIG_SCSI_DC395x is not set
348# CONFIG_SCSI_DC390T is not set
349# CONFIG_SCSI_NSP32 is not set
350# CONFIG_SCSI_DEBUG is not set
351
352#
353# Multi-device support (RAID and LVM)
354#
355CONFIG_MD=y
356CONFIG_BLK_DEV_MD=m
357CONFIG_MD_LINEAR=m
358CONFIG_MD_RAID0=m
359CONFIG_MD_RAID1=m
360CONFIG_MD_RAID10=m
361CONFIG_MD_RAID5=m
362CONFIG_MD_RAID6=m
363CONFIG_MD_MULTIPATH=m
364CONFIG_MD_FAULTY=m
365CONFIG_BLK_DEV_DM=m
366CONFIG_DM_CRYPT=m
367CONFIG_DM_SNAPSHOT=m
368CONFIG_DM_MIRROR=m
369CONFIG_DM_ZERO=m
370
371#
372# Fusion MPT device support
373#
374# CONFIG_FUSION is not set
375
376#
377# IEEE 1394 (FireWire) support
378#
379# CONFIG_IEEE1394 is not set
380
381#
382# I2O device support
383#
384# CONFIG_I2O is not set
385
386#
387# Networking support
388# 231#
389CONFIG_NET=y 232CONFIG_NET=y
390 233
@@ -393,15 +236,20 @@ CONFIG_NET=y
393# 236#
394CONFIG_PACKET=y 237CONFIG_PACKET=y
395CONFIG_PACKET_MMAP=y 238CONFIG_PACKET_MMAP=y
396CONFIG_NETLINK_DEV=y
397CONFIG_UNIX=y 239CONFIG_UNIX=y
240CONFIG_XFRM=y
241CONFIG_XFRM_USER=m
398CONFIG_NET_KEY=y 242CONFIG_NET_KEY=y
399CONFIG_INET=y 243CONFIG_INET=y
400CONFIG_IP_MULTICAST=y 244CONFIG_IP_MULTICAST=y
401CONFIG_IP_ADVANCED_ROUTER=y 245CONFIG_IP_ADVANCED_ROUTER=y
246CONFIG_ASK_IP_FIB_HASH=y
247# CONFIG_IP_FIB_TRIE is not set
248CONFIG_IP_FIB_HASH=y
402CONFIG_IP_MULTIPLE_TABLES=y 249CONFIG_IP_MULTIPLE_TABLES=y
403CONFIG_IP_ROUTE_FWMARK=y 250CONFIG_IP_ROUTE_FWMARK=y
404CONFIG_IP_ROUTE_MULTIPATH=y 251CONFIG_IP_ROUTE_MULTIPATH=y
252# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
405CONFIG_IP_ROUTE_VERBOSE=y 253CONFIG_IP_ROUTE_VERBOSE=y
406CONFIG_IP_PNP=y 254CONFIG_IP_PNP=y
407CONFIG_IP_PNP_DHCP=y 255CONFIG_IP_PNP_DHCP=y
@@ -419,8 +267,10 @@ CONFIG_INET_AH=m
419CONFIG_INET_ESP=m 267CONFIG_INET_ESP=m
420CONFIG_INET_IPCOMP=m 268CONFIG_INET_IPCOMP=m
421CONFIG_INET_TUNNEL=m 269CONFIG_INET_TUNNEL=m
422CONFIG_IP_TCPDIAG=m 270CONFIG_INET_DIAG=y
423CONFIG_IP_TCPDIAG_IPV6=y 271CONFIG_INET_TCP_DIAG=y
272# CONFIG_TCP_CONG_ADVANCED is not set
273CONFIG_TCP_CONG_BIC=y
424 274
425# 275#
426# IP: Virtual Server Configuration 276# IP: Virtual Server Configuration
@@ -465,6 +315,9 @@ CONFIG_IPV6_TUNNEL=m
465CONFIG_NETFILTER=y 315CONFIG_NETFILTER=y
466# CONFIG_NETFILTER_DEBUG is not set 316# CONFIG_NETFILTER_DEBUG is not set
467CONFIG_BRIDGE_NETFILTER=y 317CONFIG_BRIDGE_NETFILTER=y
318CONFIG_NETFILTER_NETLINK=m
319CONFIG_NETFILTER_NETLINK_QUEUE=m
320CONFIG_NETFILTER_NETLINK_LOG=m
468 321
469# 322#
470# IP: Netfilter Configuration 323# IP: Netfilter Configuration
@@ -472,11 +325,15 @@ CONFIG_BRIDGE_NETFILTER=y
472CONFIG_IP_NF_CONNTRACK=m 325CONFIG_IP_NF_CONNTRACK=m
473CONFIG_IP_NF_CT_ACCT=y 326CONFIG_IP_NF_CT_ACCT=y
474CONFIG_IP_NF_CONNTRACK_MARK=y 327CONFIG_IP_NF_CONNTRACK_MARK=y
328CONFIG_IP_NF_CONNTRACK_EVENTS=y
329CONFIG_IP_NF_CONNTRACK_NETLINK=m
475CONFIG_IP_NF_CT_PROTO_SCTP=m 330CONFIG_IP_NF_CT_PROTO_SCTP=m
476CONFIG_IP_NF_FTP=m 331CONFIG_IP_NF_FTP=m
477CONFIG_IP_NF_IRC=m 332CONFIG_IP_NF_IRC=m
333# CONFIG_IP_NF_NETBIOS_NS is not set
478CONFIG_IP_NF_TFTP=m 334CONFIG_IP_NF_TFTP=m
479CONFIG_IP_NF_AMANDA=m 335CONFIG_IP_NF_AMANDA=m
336CONFIG_IP_NF_PPTP=m
480CONFIG_IP_NF_QUEUE=m 337CONFIG_IP_NF_QUEUE=m
481CONFIG_IP_NF_IPTABLES=m 338CONFIG_IP_NF_IPTABLES=m
482CONFIG_IP_NF_MATCH_LIMIT=m 339CONFIG_IP_NF_MATCH_LIMIT=m
@@ -501,9 +358,12 @@ CONFIG_IP_NF_MATCH_PHYSDEV=m
501CONFIG_IP_NF_MATCH_ADDRTYPE=m 358CONFIG_IP_NF_MATCH_ADDRTYPE=m
502CONFIG_IP_NF_MATCH_REALM=m 359CONFIG_IP_NF_MATCH_REALM=m
503CONFIG_IP_NF_MATCH_SCTP=m 360CONFIG_IP_NF_MATCH_SCTP=m
361CONFIG_IP_NF_MATCH_DCCP=m
504CONFIG_IP_NF_MATCH_COMMENT=m 362CONFIG_IP_NF_MATCH_COMMENT=m
505CONFIG_IP_NF_MATCH_CONNMARK=m 363CONFIG_IP_NF_MATCH_CONNMARK=m
364CONFIG_IP_NF_MATCH_CONNBYTES=m
506CONFIG_IP_NF_MATCH_HASHLIMIT=m 365CONFIG_IP_NF_MATCH_HASHLIMIT=m
366CONFIG_IP_NF_MATCH_STRING=m
507CONFIG_IP_NF_FILTER=m 367CONFIG_IP_NF_FILTER=m
508CONFIG_IP_NF_TARGET_REJECT=m 368CONFIG_IP_NF_TARGET_REJECT=m
509CONFIG_IP_NF_TARGET_LOG=m 369CONFIG_IP_NF_TARGET_LOG=m
@@ -520,12 +380,14 @@ CONFIG_IP_NF_NAT_IRC=m
520CONFIG_IP_NF_NAT_FTP=m 380CONFIG_IP_NF_NAT_FTP=m
521CONFIG_IP_NF_NAT_TFTP=m 381CONFIG_IP_NF_NAT_TFTP=m
522CONFIG_IP_NF_NAT_AMANDA=m 382CONFIG_IP_NF_NAT_AMANDA=m
383CONFIG_IP_NF_NAT_PPTP=m
523CONFIG_IP_NF_MANGLE=m 384CONFIG_IP_NF_MANGLE=m
524CONFIG_IP_NF_TARGET_TOS=m 385CONFIG_IP_NF_TARGET_TOS=m
525CONFIG_IP_NF_TARGET_ECN=m 386CONFIG_IP_NF_TARGET_ECN=m
526CONFIG_IP_NF_TARGET_DSCP=m 387CONFIG_IP_NF_TARGET_DSCP=m
527CONFIG_IP_NF_TARGET_MARK=m 388CONFIG_IP_NF_TARGET_MARK=m
528CONFIG_IP_NF_TARGET_CLASSIFY=m 389CONFIG_IP_NF_TARGET_CLASSIFY=m
390CONFIG_IP_NF_TARGET_TTL=m
529CONFIG_IP_NF_TARGET_CONNMARK=m 391CONFIG_IP_NF_TARGET_CONNMARK=m
530CONFIG_IP_NF_TARGET_CLUSTERIP=m 392CONFIG_IP_NF_TARGET_CLUSTERIP=m
531CONFIG_IP_NF_RAW=m 393CONFIG_IP_NF_RAW=m
@@ -535,7 +397,7 @@ CONFIG_IP_NF_ARPFILTER=m
535CONFIG_IP_NF_ARP_MANGLE=m 397CONFIG_IP_NF_ARP_MANGLE=m
536 398
537# 399#
538# IPv6: Netfilter Configuration 400# IPv6: Netfilter Configuration (EXPERIMENTAL)
539# 401#
540CONFIG_IP6_NF_QUEUE=m 402CONFIG_IP6_NF_QUEUE=m
541CONFIG_IP6_NF_IPTABLES=m 403CONFIG_IP6_NF_IPTABLES=m
@@ -555,8 +417,10 @@ CONFIG_IP6_NF_MATCH_EUI64=m
555CONFIG_IP6_NF_MATCH_PHYSDEV=m 417CONFIG_IP6_NF_MATCH_PHYSDEV=m
556CONFIG_IP6_NF_FILTER=m 418CONFIG_IP6_NF_FILTER=m
557CONFIG_IP6_NF_TARGET_LOG=m 419CONFIG_IP6_NF_TARGET_LOG=m
420CONFIG_IP6_NF_TARGET_REJECT=m
558CONFIG_IP6_NF_MANGLE=m 421CONFIG_IP6_NF_MANGLE=m
559CONFIG_IP6_NF_TARGET_MARK=m 422CONFIG_IP6_NF_TARGET_MARK=m
423CONFIG_IP6_NF_TARGET_HL=m
560CONFIG_IP6_NF_RAW=m 424CONFIG_IP6_NF_RAW=m
561 425
562# 426#
@@ -582,8 +446,11 @@ CONFIG_BRIDGE_EBT_REDIRECT=m
582CONFIG_BRIDGE_EBT_SNAT=m 446CONFIG_BRIDGE_EBT_SNAT=m
583CONFIG_BRIDGE_EBT_LOG=m 447CONFIG_BRIDGE_EBT_LOG=m
584CONFIG_BRIDGE_EBT_ULOG=m 448CONFIG_BRIDGE_EBT_ULOG=m
585CONFIG_XFRM=y 449
586CONFIG_XFRM_USER=m 450#
451# DCCP Configuration (EXPERIMENTAL)
452#
453# CONFIG_IP_DCCP is not set
587 454
588# 455#
589# SCTP Configuration (EXPERIMENTAL) 456# SCTP Configuration (EXPERIMENTAL)
@@ -611,10 +478,6 @@ CONFIG_IPDDP_DECAP=y
611CONFIG_NET_DIVERT=y 478CONFIG_NET_DIVERT=y
612# CONFIG_ECONET is not set 479# CONFIG_ECONET is not set
613# CONFIG_WAN_ROUTER is not set 480# CONFIG_WAN_ROUTER is not set
614
615#
616# QoS and/or fair queueing
617#
618CONFIG_NET_SCHED=y 481CONFIG_NET_SCHED=y
619CONFIG_NET_SCH_CLK_JIFFIES=y 482CONFIG_NET_SCH_CLK_JIFFIES=y
620# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set 483# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
@@ -634,6 +497,7 @@ CONFIG_NET_SCH_INGRESS=m
634CONFIG_NET_QOS=y 497CONFIG_NET_QOS=y
635CONFIG_NET_ESTIMATOR=y 498CONFIG_NET_ESTIMATOR=y
636CONFIG_NET_CLS=y 499CONFIG_NET_CLS=y
500CONFIG_NET_CLS_BASIC=m
637CONFIG_NET_CLS_TCINDEX=m 501CONFIG_NET_CLS_TCINDEX=m
638CONFIG_NET_CLS_ROUTE4=m 502CONFIG_NET_CLS_ROUTE4=m
639CONFIG_NET_CLS_ROUTE=y 503CONFIG_NET_CLS_ROUTE=y
@@ -644,6 +508,7 @@ CONFIG_NET_CLS_IND=y
644# CONFIG_CLS_U32_MARK is not set 508# CONFIG_CLS_U32_MARK is not set
645CONFIG_NET_CLS_RSVP=m 509CONFIG_NET_CLS_RSVP=m
646CONFIG_NET_CLS_RSVP6=m 510CONFIG_NET_CLS_RSVP6=m
511# CONFIG_NET_EMATCH is not set
647# CONFIG_NET_CLS_ACT is not set 512# CONFIG_NET_CLS_ACT is not set
648CONFIG_NET_CLS_POLICE=y 513CONFIG_NET_CLS_POLICE=y
649 514
@@ -651,17 +516,254 @@ CONFIG_NET_CLS_POLICE=y
651# Network testing 516# Network testing
652# 517#
653# CONFIG_NET_PKTGEN is not set 518# CONFIG_NET_PKTGEN is not set
654# CONFIG_NETPOLL is not set
655# CONFIG_NET_POLL_CONTROLLER is not set
656# CONFIG_HAMRADIO is not set 519# CONFIG_HAMRADIO is not set
657# CONFIG_IRDA is not set 520# CONFIG_IRDA is not set
658# CONFIG_BT is not set 521# CONFIG_BT is not set
522CONFIG_IEEE80211=m
523# CONFIG_IEEE80211_DEBUG is not set
524CONFIG_IEEE80211_CRYPT_WEP=m
525CONFIG_IEEE80211_CRYPT_CCMP=m
526CONFIG_IEEE80211_CRYPT_TKIP=m
527
528#
529# Device Drivers
530#
531
532#
533# Generic Driver Options
534#
535CONFIG_STANDALONE=y
536CONFIG_PREVENT_FIRMWARE_BUILD=y
537CONFIG_FW_LOADER=y
538
539#
540# Connector - unified userspace <-> kernelspace linker
541#
542CONFIG_CONNECTOR=m
543
544#
545# Memory Technology Devices (MTD)
546#
547# CONFIG_MTD is not set
548
549#
550# Parallel port support
551#
552# CONFIG_PARPORT is not set
553
554#
555# Plug and Play support
556#
557
558#
559# Block devices
560#
561CONFIG_BLK_DEV_FD=m
562# CONFIG_BLK_CPQ_DA is not set
563# CONFIG_BLK_CPQ_CISS_DA is not set
564# CONFIG_BLK_DEV_DAC960 is not set
565CONFIG_BLK_DEV_UMEM=m
566# CONFIG_BLK_DEV_COW_COMMON is not set
567CONFIG_BLK_DEV_LOOP=m
568CONFIG_BLK_DEV_CRYPTOLOOP=m
569CONFIG_BLK_DEV_NBD=m
570# CONFIG_BLK_DEV_SX8 is not set
571CONFIG_BLK_DEV_RAM=y
572CONFIG_BLK_DEV_RAM_COUNT=16
573CONFIG_BLK_DEV_RAM_SIZE=4096
574# CONFIG_BLK_DEV_INITRD is not set
575# CONFIG_LBD is not set
576CONFIG_CDROM_PKTCDVD=m
577CONFIG_CDROM_PKTCDVD_BUFFERS=8
578# CONFIG_CDROM_PKTCDVD_WCACHE is not set
579
580#
581# IO Schedulers
582#
583CONFIG_IOSCHED_NOOP=y
584CONFIG_IOSCHED_AS=y
585CONFIG_IOSCHED_DEADLINE=y
586CONFIG_IOSCHED_CFQ=y
587CONFIG_ATA_OVER_ETH=m
588
589#
590# ATA/ATAPI/MFM/RLL support
591#
592CONFIG_IDE=y
593CONFIG_BLK_DEV_IDE=y
594
595#
596# Please see Documentation/ide.txt for help/info on IDE drives
597#
598# CONFIG_BLK_DEV_IDE_SATA is not set
599CONFIG_BLK_DEV_IDEDISK=y
600# CONFIG_IDEDISK_MULTI_MODE is not set
601CONFIG_BLK_DEV_IDECD=y
602# CONFIG_BLK_DEV_IDETAPE is not set
603# CONFIG_BLK_DEV_IDEFLOPPY is not set
604# CONFIG_BLK_DEV_IDESCSI is not set
605# CONFIG_IDE_TASK_IOCTL is not set
606
607#
608# IDE chipset support/bugfixes
609#
610CONFIG_IDE_GENERIC=y
611CONFIG_BLK_DEV_IDEPCI=y
612# CONFIG_IDEPCI_SHARE_IRQ is not set
613# CONFIG_BLK_DEV_OFFBOARD is not set
614CONFIG_BLK_DEV_GENERIC=y
615# CONFIG_BLK_DEV_OPTI621 is not set
616CONFIG_BLK_DEV_IDEDMA_PCI=y
617# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
618CONFIG_IDEDMA_PCI_AUTO=y
619# CONFIG_IDEDMA_ONLYDISK is not set
620# CONFIG_BLK_DEV_AEC62XX is not set
621# CONFIG_BLK_DEV_ALI15X3 is not set
622# CONFIG_BLK_DEV_AMD74XX is not set
623# CONFIG_BLK_DEV_CMD64X is not set
624# CONFIG_BLK_DEV_TRIFLEX is not set
625# CONFIG_BLK_DEV_CY82C693 is not set
626# CONFIG_BLK_DEV_CS5520 is not set
627# CONFIG_BLK_DEV_CS5530 is not set
628# CONFIG_BLK_DEV_HPT34X is not set
629# CONFIG_BLK_DEV_HPT366 is not set
630# CONFIG_BLK_DEV_SC1200 is not set
631CONFIG_BLK_DEV_PIIX=y
632# CONFIG_BLK_DEV_IT821X is not set
633# CONFIG_BLK_DEV_NS87415 is not set
634# CONFIG_BLK_DEV_PDC202XX_OLD is not set
635# CONFIG_BLK_DEV_PDC202XX_NEW is not set
636# CONFIG_BLK_DEV_SVWKS is not set
637# CONFIG_BLK_DEV_SIIMAGE is not set
638# CONFIG_BLK_DEV_SLC90E66 is not set
639# CONFIG_BLK_DEV_TRM290 is not set
640# CONFIG_BLK_DEV_VIA82CXXX is not set
641# CONFIG_IDE_ARM is not set
642CONFIG_BLK_DEV_IDEDMA=y
643# CONFIG_IDEDMA_IVB is not set
644CONFIG_IDEDMA_AUTO=y
645# CONFIG_BLK_DEV_HD is not set
646
647#
648# SCSI device support
649#
650CONFIG_RAID_ATTRS=m
651CONFIG_SCSI=m
652CONFIG_SCSI_PROC_FS=y
653
654#
655# SCSI support type (disk, tape, CD-ROM)
656#
657CONFIG_BLK_DEV_SD=m
658CONFIG_CHR_DEV_ST=m
659CONFIG_CHR_DEV_OSST=m
660CONFIG_BLK_DEV_SR=m
661CONFIG_BLK_DEV_SR_VENDOR=y
662CONFIG_CHR_DEV_SG=m
663# CONFIG_CHR_DEV_SCH is not set
664
665#
666# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
667#
668CONFIG_SCSI_MULTI_LUN=y
669CONFIG_SCSI_CONSTANTS=y
670CONFIG_SCSI_LOGGING=y
671
672#
673# SCSI Transport Attributes
674#
675CONFIG_SCSI_SPI_ATTRS=m
676CONFIG_SCSI_FC_ATTRS=m
677CONFIG_SCSI_ISCSI_ATTRS=m
678CONFIG_SCSI_SAS_ATTRS=m
679
680#
681# SCSI low-level drivers
682#
683CONFIG_BLK_DEV_3W_XXXX_RAID=m
684CONFIG_SCSI_3W_9XXX=m
685CONFIG_SCSI_ACARD=m
686CONFIG_SCSI_AACRAID=m
687CONFIG_SCSI_AIC7XXX=m
688CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
689CONFIG_AIC7XXX_RESET_DELAY_MS=15000
690# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
691CONFIG_AIC7XXX_DEBUG_MASK=0
692CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
693# CONFIG_SCSI_AIC7XXX_OLD is not set
694# CONFIG_SCSI_AIC79XX is not set
695# CONFIG_SCSI_DPT_I2O is not set
696# CONFIG_MEGARAID_NEWGEN is not set
697# CONFIG_MEGARAID_LEGACY is not set
698# CONFIG_SCSI_SATA is not set
699# CONFIG_SCSI_DMX3191D is not set
700# CONFIG_SCSI_FUTURE_DOMAIN is not set
701# CONFIG_SCSI_IPS is not set
702# CONFIG_SCSI_INITIO is not set
703# CONFIG_SCSI_INIA100 is not set
704# CONFIG_SCSI_SYM53C8XX_2 is not set
705# CONFIG_SCSI_IPR is not set
706# CONFIG_SCSI_QLOGIC_FC is not set
707# CONFIG_SCSI_QLOGIC_1280 is not set
708CONFIG_SCSI_QLA2XXX=m
709# CONFIG_SCSI_QLA21XX is not set
710# CONFIG_SCSI_QLA22XX is not set
711# CONFIG_SCSI_QLA2300 is not set
712# CONFIG_SCSI_QLA2322 is not set
713# CONFIG_SCSI_QLA6312 is not set
714# CONFIG_SCSI_QLA24XX is not set
715# CONFIG_SCSI_LPFC is not set
716# CONFIG_SCSI_DC395x is not set
717# CONFIG_SCSI_DC390T is not set
718# CONFIG_SCSI_NSP32 is not set
719# CONFIG_SCSI_DEBUG is not set
720
721#
722# Multi-device support (RAID and LVM)
723#
724CONFIG_MD=y
725CONFIG_BLK_DEV_MD=m
726CONFIG_MD_LINEAR=m
727CONFIG_MD_RAID0=m
728CONFIG_MD_RAID1=m
729CONFIG_MD_RAID10=m
730CONFIG_MD_RAID5=m
731CONFIG_MD_RAID6=m
732CONFIG_MD_MULTIPATH=m
733CONFIG_MD_FAULTY=m
734CONFIG_BLK_DEV_DM=m
735CONFIG_DM_CRYPT=m
736CONFIG_DM_SNAPSHOT=m
737CONFIG_DM_MIRROR=m
738CONFIG_DM_ZERO=m
739CONFIG_DM_MULTIPATH=m
740CONFIG_DM_MULTIPATH_EMC=m
741
742#
743# Fusion MPT device support
744#
745# CONFIG_FUSION is not set
746# CONFIG_FUSION_SPI is not set
747# CONFIG_FUSION_FC is not set
748
749#
750# IEEE 1394 (FireWire) support
751#
752# CONFIG_IEEE1394 is not set
753
754#
755# I2O device support
756#
757# CONFIG_I2O is not set
758
759#
760# Network device support
761#
659CONFIG_NETDEVICES=y 762CONFIG_NETDEVICES=y
660CONFIG_DUMMY=m 763CONFIG_DUMMY=m
661CONFIG_BONDING=m 764CONFIG_BONDING=m
662CONFIG_EQUALIZER=m 765CONFIG_EQUALIZER=m
663CONFIG_TUN=m 766CONFIG_TUN=m
664# CONFIG_ETHERTAP is not set
665 767
666# 768#
667# ARCnet devices 769# ARCnet devices
@@ -669,6 +771,21 @@ CONFIG_TUN=m
669# CONFIG_ARCNET is not set 771# CONFIG_ARCNET is not set
670 772
671# 773#
774# PHY device support
775#
776CONFIG_PHYLIB=m
777CONFIG_PHYCONTROL=y
778
779#
780# MII PHY device drivers
781#
782CONFIG_MARVELL_PHY=m
783CONFIG_DAVICOM_PHY=m
784CONFIG_QSEMI_PHY=m
785CONFIG_LXT_PHY=m
786CONFIG_CICADA_PHY=m
787
788#
672# Ethernet (10 or 100Mbit) 789# Ethernet (10 or 100Mbit)
673# 790#
674CONFIG_NET_ETHERNET=y 791CONFIG_NET_ETHERNET=y
@@ -713,13 +830,17 @@ CONFIG_PCNET32=y
713# CONFIG_HAMACHI is not set 830# CONFIG_HAMACHI is not set
714# CONFIG_YELLOWFIN is not set 831# CONFIG_YELLOWFIN is not set
715# CONFIG_R8169 is not set 832# CONFIG_R8169 is not set
833# CONFIG_SIS190 is not set
834# CONFIG_SKGE is not set
716# CONFIG_SK98LIN is not set 835# CONFIG_SK98LIN is not set
717# CONFIG_VIA_VELOCITY is not set 836# CONFIG_VIA_VELOCITY is not set
718# CONFIG_TIGON3 is not set 837# CONFIG_TIGON3 is not set
838# CONFIG_BNX2 is not set
719 839
720# 840#
721# Ethernet (10000 Mbit) 841# Ethernet (10000 Mbit)
722# 842#
843# CONFIG_CHELSIO_T1 is not set
723# CONFIG_IXGB is not set 844# CONFIG_IXGB is not set
724# CONFIG_S2IO is not set 845# CONFIG_S2IO is not set
725 846
@@ -732,6 +853,8 @@ CONFIG_PCNET32=y
732# Wireless LAN (non-hamradio) 853# Wireless LAN (non-hamradio)
733# 854#
734# CONFIG_NET_RADIO is not set 855# CONFIG_NET_RADIO is not set
856# CONFIG_IPW_DEBUG is not set
857CONFIG_IPW2200=m
735 858
736# 859#
737# Wan interfaces 860# Wan interfaces
@@ -744,6 +867,8 @@ CONFIG_PCNET32=y
744# CONFIG_NET_FC is not set 867# CONFIG_NET_FC is not set
745# CONFIG_SHAPER is not set 868# CONFIG_SHAPER is not set
746# CONFIG_NETCONSOLE is not set 869# CONFIG_NETCONSOLE is not set
870# CONFIG_NETPOLL is not set
871# CONFIG_NET_POLL_CONTROLLER is not set
747 872
748# 873#
749# ISDN subsystem 874# ISDN subsystem
@@ -773,19 +898,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
773# CONFIG_INPUT_EVBUG is not set 898# CONFIG_INPUT_EVBUG is not set
774 899
775# 900#
776# Input I/O drivers
777#
778# CONFIG_GAMEPORT is not set
779CONFIG_SOUND_GAMEPORT=y
780CONFIG_SERIO=y
781# CONFIG_SERIO_I8042 is not set
782CONFIG_SERIO_SERPORT=y
783# CONFIG_SERIO_CT82C710 is not set
784# CONFIG_SERIO_PCIPS2 is not set
785# CONFIG_SERIO_LIBPS2 is not set
786# CONFIG_SERIO_RAW is not set
787
788#
789# Input Device Drivers 901# Input Device Drivers
790# 902#
791# CONFIG_INPUT_KEYBOARD is not set 903# CONFIG_INPUT_KEYBOARD is not set
@@ -795,6 +907,17 @@ CONFIG_SERIO_SERPORT=y
795# CONFIG_INPUT_MISC is not set 907# CONFIG_INPUT_MISC is not set
796 908
797# 909#
910# Hardware I/O ports
911#
912CONFIG_SERIO=y
913# CONFIG_SERIO_I8042 is not set
914CONFIG_SERIO_SERPORT=y
915# CONFIG_SERIO_PCIPS2 is not set
916# CONFIG_SERIO_LIBPS2 is not set
917# CONFIG_SERIO_RAW is not set
918# CONFIG_GAMEPORT is not set
919
920#
798# Character devices 921# Character devices
799# 922#
800CONFIG_VT=y 923CONFIG_VT=y
@@ -815,6 +938,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4
815# 938#
816CONFIG_SERIAL_CORE=y 939CONFIG_SERIAL_CORE=y
817CONFIG_SERIAL_CORE_CONSOLE=y 940CONFIG_SERIAL_CORE_CONSOLE=y
941# CONFIG_SERIAL_JSM is not set
818CONFIG_UNIX98_PTYS=y 942CONFIG_UNIX98_PTYS=y
819CONFIG_LEGACY_PTYS=y 943CONFIG_LEGACY_PTYS=y
820CONFIG_LEGACY_PTY_COUNT=256 944CONFIG_LEGACY_PTY_COUNT=256
@@ -840,6 +964,11 @@ CONFIG_RTC=y
840# CONFIG_RAW_DRIVER is not set 964# CONFIG_RAW_DRIVER is not set
841 965
842# 966#
967# TPM devices
968#
969# CONFIG_TCG_TPM is not set
970
971#
843# I2C support 972# I2C support
844# 973#
845# CONFIG_I2C is not set 974# CONFIG_I2C is not set
@@ -850,10 +979,20 @@ CONFIG_RTC=y
850# CONFIG_W1 is not set 979# CONFIG_W1 is not set
851 980
852# 981#
982# Hardware Monitoring support
983#
984# CONFIG_HWMON is not set
985# CONFIG_HWMON_VID is not set
986
987#
853# Misc devices 988# Misc devices
854# 989#
855 990
856# 991#
992# Multimedia Capabilities Port drivers
993#
994
995#
857# Multimedia devices 996# Multimedia devices
858# 997#
859# CONFIG_VIDEO_DEV is not set 998# CONFIG_VIDEO_DEV is not set
@@ -873,7 +1012,6 @@ CONFIG_RTC=y
873# 1012#
874# CONFIG_VGA_CONSOLE is not set 1013# CONFIG_VGA_CONSOLE is not set
875CONFIG_DUMMY_CONSOLE=y 1014CONFIG_DUMMY_CONSOLE=y
876# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
877 1015
878# 1016#
879# Sound 1017# Sound
@@ -883,13 +1021,9 @@ CONFIG_DUMMY_CONSOLE=y
883# 1021#
884# USB support 1022# USB support
885# 1023#
886# CONFIG_USB is not set
887CONFIG_USB_ARCH_HAS_HCD=y 1024CONFIG_USB_ARCH_HAS_HCD=y
888CONFIG_USB_ARCH_HAS_OHCI=y 1025CONFIG_USB_ARCH_HAS_OHCI=y
889 1026# CONFIG_USB is not set
890#
891# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
892#
893 1027
894# 1028#
895# USB Gadget Support 1029# USB Gadget Support
@@ -907,10 +1041,15 @@ CONFIG_USB_ARCH_HAS_OHCI=y
907# CONFIG_INFINIBAND is not set 1041# CONFIG_INFINIBAND is not set
908 1042
909# 1043#
1044# SN Devices
1045#
1046
1047#
910# File systems 1048# File systems
911# 1049#
912CONFIG_EXT2_FS=y 1050CONFIG_EXT2_FS=y
913# CONFIG_EXT2_FS_XATTR is not set 1051# CONFIG_EXT2_FS_XATTR is not set
1052# CONFIG_EXT2_FS_XIP is not set
914CONFIG_EXT3_FS=y 1053CONFIG_EXT3_FS=y
915CONFIG_EXT3_FS_XATTR=y 1054CONFIG_EXT3_FS_XATTR=y
916# CONFIG_EXT3_FS_POSIX_ACL is not set 1055# CONFIG_EXT3_FS_POSIX_ACL is not set
@@ -931,12 +1070,14 @@ CONFIG_JFS_SECURITY=y
931# CONFIG_JFS_STATISTICS is not set 1070# CONFIG_JFS_STATISTICS is not set
932CONFIG_FS_POSIX_ACL=y 1071CONFIG_FS_POSIX_ACL=y
933CONFIG_XFS_FS=m 1072CONFIG_XFS_FS=m
934# CONFIG_XFS_RT is not set 1073CONFIG_XFS_EXPORT=y
935CONFIG_XFS_QUOTA=y 1074CONFIG_XFS_QUOTA=m
936CONFIG_XFS_SECURITY=y 1075CONFIG_XFS_SECURITY=y
937CONFIG_XFS_POSIX_ACL=y 1076CONFIG_XFS_POSIX_ACL=y
1077# CONFIG_XFS_RT is not set
938CONFIG_MINIX_FS=m 1078CONFIG_MINIX_FS=m
939CONFIG_ROMFS_FS=m 1079CONFIG_ROMFS_FS=m
1080CONFIG_INOTIFY=y
940CONFIG_QUOTA=y 1081CONFIG_QUOTA=y
941# CONFIG_QFMT_V1 is not set 1082# CONFIG_QFMT_V1 is not set
942CONFIG_QFMT_V2=y 1083CONFIG_QFMT_V2=y
@@ -944,6 +1085,7 @@ CONFIG_QUOTACTL=y
944CONFIG_DNOTIFY=y 1085CONFIG_DNOTIFY=y
945CONFIG_AUTOFS_FS=y 1086CONFIG_AUTOFS_FS=y
946# CONFIG_AUTOFS4_FS is not set 1087# CONFIG_AUTOFS4_FS is not set
1088CONFIG_FUSE_FS=m
947 1089
948# 1090#
949# CD-ROM/DVD Filesystems 1091# CD-ROM/DVD Filesystems
@@ -971,12 +1113,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
971CONFIG_PROC_FS=y 1113CONFIG_PROC_FS=y
972CONFIG_PROC_KCORE=y 1114CONFIG_PROC_KCORE=y
973CONFIG_SYSFS=y 1115CONFIG_SYSFS=y
974# CONFIG_DEVFS_FS is not set
975CONFIG_DEVPTS_FS_XATTR=y
976CONFIG_DEVPTS_FS_SECURITY=y
977# CONFIG_TMPFS is not set 1116# CONFIG_TMPFS is not set
978# CONFIG_HUGETLB_PAGE is not set 1117# CONFIG_HUGETLB_PAGE is not set
979CONFIG_RAMFS=y 1118CONFIG_RAMFS=y
1119CONFIG_RELAYFS_FS=m
980 1120
981# 1121#
982# Miscellaneous filesystems 1122# Miscellaneous filesystems
@@ -1002,16 +1142,19 @@ CONFIG_UFS_FS=m
1002# 1142#
1003CONFIG_NFS_FS=y 1143CONFIG_NFS_FS=y
1004CONFIG_NFS_V3=y 1144CONFIG_NFS_V3=y
1145# CONFIG_NFS_V3_ACL is not set
1005# CONFIG_NFS_V4 is not set 1146# CONFIG_NFS_V4 is not set
1006# CONFIG_NFS_DIRECTIO is not set 1147# CONFIG_NFS_DIRECTIO is not set
1007CONFIG_NFSD=y 1148CONFIG_NFSD=y
1008CONFIG_NFSD_V3=y 1149CONFIG_NFSD_V3=y
1150# CONFIG_NFSD_V3_ACL is not set
1009# CONFIG_NFSD_V4 is not set 1151# CONFIG_NFSD_V4 is not set
1010# CONFIG_NFSD_TCP is not set 1152# CONFIG_NFSD_TCP is not set
1011CONFIG_ROOT_NFS=y 1153CONFIG_ROOT_NFS=y
1012CONFIG_LOCKD=y 1154CONFIG_LOCKD=y
1013CONFIG_LOCKD_V4=y 1155CONFIG_LOCKD_V4=y
1014CONFIG_EXPORTFS=y 1156CONFIG_EXPORTFS=y
1157CONFIG_NFS_COMMON=y
1015CONFIG_SUNRPC=y 1158CONFIG_SUNRPC=y
1016# CONFIG_RPCSEC_GSS_KRB5 is not set 1159# CONFIG_RPCSEC_GSS_KRB5 is not set
1017# CONFIG_RPCSEC_GSS_SPKM3 is not set 1160# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -1020,6 +1163,7 @@ CONFIG_SUNRPC=y
1020# CONFIG_NCP_FS is not set 1163# CONFIG_NCP_FS is not set
1021# CONFIG_CODA_FS is not set 1164# CONFIG_CODA_FS is not set
1022# CONFIG_AFS_FS is not set 1165# CONFIG_AFS_FS is not set
1166# CONFIG_9P_FS is not set
1023 1167
1024# 1168#
1025# Partition Types 1169# Partition Types
@@ -1079,7 +1223,9 @@ CONFIG_NLS_UTF8=m
1079# 1223#
1080# Kernel hacking 1224# Kernel hacking
1081# 1225#
1226# CONFIG_PRINTK_TIME is not set
1082# CONFIG_DEBUG_KERNEL is not set 1227# CONFIG_DEBUG_KERNEL is not set
1228CONFIG_LOG_BUF_SHIFT=14
1083CONFIG_CROSSCOMPILE=y 1229CONFIG_CROSSCOMPILE=y
1084CONFIG_CMDLINE="" 1230CONFIG_CMDLINE=""
1085 1231
@@ -1101,6 +1247,7 @@ CONFIG_CRYPTO_SHA1=m
1101CONFIG_CRYPTO_SHA256=m 1247CONFIG_CRYPTO_SHA256=m
1102CONFIG_CRYPTO_SHA512=m 1248CONFIG_CRYPTO_SHA512=m
1103CONFIG_CRYPTO_WP512=m 1249CONFIG_CRYPTO_WP512=m
1250CONFIG_CRYPTO_TGR192=m
1104CONFIG_CRYPTO_DES=m 1251CONFIG_CRYPTO_DES=m
1105CONFIG_CRYPTO_BLOWFISH=m 1252CONFIG_CRYPTO_BLOWFISH=m
1106CONFIG_CRYPTO_TWOFISH=m 1253CONFIG_CRYPTO_TWOFISH=m
@@ -1125,9 +1272,12 @@ CONFIG_CRYPTO_CRC32C=m
1125# Library routines 1272# Library routines
1126# 1273#
1127# CONFIG_CRC_CCITT is not set 1274# CONFIG_CRC_CCITT is not set
1275CONFIG_CRC16=m
1128CONFIG_CRC32=y 1276CONFIG_CRC32=y
1129CONFIG_LIBCRC32C=m 1277CONFIG_LIBCRC32C=m
1130CONFIG_ZLIB_INFLATE=m 1278CONFIG_ZLIB_INFLATE=m
1131CONFIG_ZLIB_DEFLATE=m 1279CONFIG_ZLIB_DEFLATE=m
1132CONFIG_GENERIC_HARDIRQS=y 1280CONFIG_TEXTSEARCH=y
1133CONFIG_GENERIC_IRQ_PROBE=y 1281CONFIG_TEXTSEARCH_KMP=m
1282CONFIG_TEXTSEARCH_BM=m
1283CONFIG_TEXTSEARCH_FSM=m
diff --git a/arch/mips/configs/mipssim_defconfig b/arch/mips/configs/mipssim_defconfig
new file mode 100644
index 000000000000..fb9bdd9e3151
--- /dev/null
+++ b/arch/mips/configs/mipssim_defconfig
@@ -0,0 +1,775 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.14-rc2
4# Thu Oct 20 22:26:25 2005
5#
6CONFIG_MIPS=y
7
8#
9# Code maturity level options
10#
11CONFIG_EXPERIMENTAL=y
12CONFIG_CLEAN_COMPILE=y
13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
15
16#
17# General setup
18#
19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
21CONFIG_SWAP=y
22CONFIG_SYSVIPC=y
23# CONFIG_POSIX_MQUEUE is not set
24# CONFIG_BSD_PROCESS_ACCT is not set
25CONFIG_SYSCTL=y
26# CONFIG_AUDIT is not set
27CONFIG_HOTPLUG=y
28CONFIG_KOBJECT_UEVENT=y
29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
31CONFIG_EMBEDDED=y
32CONFIG_KALLSYMS=y
33# CONFIG_KALLSYMS_ALL is not set
34# CONFIG_KALLSYMS_EXTRA_PASS is not set
35CONFIG_PRINTK=y
36CONFIG_BUG=y
37CONFIG_BASE_FULL=y
38CONFIG_FUTEX=y
39CONFIG_EPOLL=y
40# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
41CONFIG_SHMEM=y
42CONFIG_CC_ALIGN_FUNCTIONS=0
43CONFIG_CC_ALIGN_LABELS=0
44CONFIG_CC_ALIGN_LOOPS=0
45CONFIG_CC_ALIGN_JUMPS=0
46# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0
48
49#
50# Loadable module support
51#
52CONFIG_MODULES=y
53CONFIG_MODULE_UNLOAD=y
54# CONFIG_MODULE_FORCE_UNLOAD is not set
55CONFIG_OBSOLETE_MODPARM=y
56CONFIG_MODVERSIONS=y
57CONFIG_MODULE_SRCVERSION_ALL=y
58CONFIG_KMOD=y
59
60#
61# Machine selection
62#
63# CONFIG_MIPS_MTX1 is not set
64# CONFIG_MIPS_BOSPORUS is not set
65# CONFIG_MIPS_PB1000 is not set
66# CONFIG_MIPS_PB1100 is not set
67# CONFIG_MIPS_PB1500 is not set
68# CONFIG_MIPS_PB1550 is not set
69# CONFIG_MIPS_PB1200 is not set
70# CONFIG_MIPS_DB1000 is not set
71# CONFIG_MIPS_DB1100 is not set
72# CONFIG_MIPS_DB1500 is not set
73# CONFIG_MIPS_DB1550 is not set
74# CONFIG_MIPS_DB1200 is not set
75# CONFIG_MIPS_MIRAGE is not set
76# CONFIG_MIPS_COBALT is not set
77# CONFIG_MACH_DECSTATION is not set
78# CONFIG_MIPS_EV64120 is not set
79# CONFIG_MIPS_EV96100 is not set
80# CONFIG_MIPS_IVR is not set
81# CONFIG_MIPS_ITE8172 is not set
82# CONFIG_MACH_JAZZ is not set
83# CONFIG_LASAT is not set
84# CONFIG_MIPS_ATLAS is not set
85# CONFIG_MIPS_MALTA is not set
86# CONFIG_MIPS_SEAD is not set
87CONFIG_MIPS_SIM=y
88# CONFIG_MOMENCO_JAGUAR_ATX is not set
89# CONFIG_MOMENCO_OCELOT is not set
90# CONFIG_MOMENCO_OCELOT_3 is not set
91# CONFIG_MOMENCO_OCELOT_C is not set
92# CONFIG_MOMENCO_OCELOT_G is not set
93# CONFIG_MIPS_XXS1500 is not set
94# CONFIG_PNX8550_V2PCI is not set
95# CONFIG_PNX8550_JBS is not set
96# CONFIG_DDB5074 is not set
97# CONFIG_DDB5476 is not set
98# CONFIG_DDB5477 is not set
99# CONFIG_MACH_VR41XX is not set
100# CONFIG_PMC_YOSEMITE is not set
101# CONFIG_QEMU is not set
102# CONFIG_SGI_IP22 is not set
103# CONFIG_SGI_IP27 is not set
104# CONFIG_SGI_IP32 is not set
105# CONFIG_SIBYTE_BIGSUR is not set
106# CONFIG_SIBYTE_SWARM is not set
107# CONFIG_SIBYTE_SENTOSA is not set
108# CONFIG_SIBYTE_RHONE is not set
109# CONFIG_SIBYTE_CARMEL is not set
110# CONFIG_SIBYTE_PTSWARM is not set
111# CONFIG_SIBYTE_LITTLESUR is not set
112# CONFIG_SIBYTE_CRHINE is not set
113# CONFIG_SIBYTE_CRHONE is not set
114# CONFIG_SNI_RM200_PCI is not set
115# CONFIG_TOSHIBA_JMR3927 is not set
116# CONFIG_TOSHIBA_RBTX4927 is not set
117# CONFIG_TOSHIBA_RBTX4938 is not set
118CONFIG_RWSEM_GENERIC_SPINLOCK=y
119CONFIG_GENERIC_CALIBRATE_DELAY=y
120CONFIG_DMA_NONCOHERENT=y
121CONFIG_DMA_NEED_PCI_MAP_STATE=y
122# CONFIG_CPU_BIG_ENDIAN is not set
123CONFIG_CPU_LITTLE_ENDIAN=y
124CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
125CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
126CONFIG_IRQ_CPU=y
127CONFIG_MIPS_L1_CACHE_SHIFT=5
128
129#
130# CPU selection
131#
132CONFIG_CPU_MIPS32_R1=y
133# CONFIG_CPU_MIPS32_R2 is not set
134# CONFIG_CPU_MIPS64_R1 is not set
135# CONFIG_CPU_MIPS64_R2 is not set
136# CONFIG_CPU_R3000 is not set
137# CONFIG_CPU_TX39XX is not set
138# CONFIG_CPU_VR41XX is not set
139# CONFIG_CPU_R4300 is not set
140# CONFIG_CPU_R4X00 is not set
141# CONFIG_CPU_TX49XX is not set
142# CONFIG_CPU_R5000 is not set
143# CONFIG_CPU_R5432 is not set
144# CONFIG_CPU_R6000 is not set
145# CONFIG_CPU_NEVADA is not set
146# CONFIG_CPU_R8000 is not set
147# CONFIG_CPU_R10000 is not set
148# CONFIG_CPU_RM7000 is not set
149# CONFIG_CPU_RM9000 is not set
150# CONFIG_CPU_SB1 is not set
151CONFIG_SYS_HAS_CPU_MIPS32_R1=y
152CONFIG_SYS_HAS_CPU_MIPS32_R2=y
153CONFIG_CPU_MIPS32=y
154CONFIG_CPU_MIPSR1=y
155CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
156CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
157
158#
159# Kernel type
160#
161CONFIG_32BIT=y
162# CONFIG_64BIT is not set
163CONFIG_PAGE_SIZE_4KB=y
164# CONFIG_PAGE_SIZE_8KB is not set
165# CONFIG_PAGE_SIZE_16KB is not set
166# CONFIG_PAGE_SIZE_64KB is not set
167CONFIG_CPU_HAS_PREFETCH=y
168CONFIG_MIPS_MT=y
169# CONFIG_MIPS_MT_SMP is not set
170CONFIG_MIPS_VPE_LOADER=y
171CONFIG_MIPS_VPE_LOADER_TOM=y
172CONFIG_MIPS_VPE_APSP_API=y
173# CONFIG_64BIT_PHYS_ADDR is not set
174# CONFIG_CPU_ADVANCED is not set
175CONFIG_CPU_HAS_LLSC=y
176CONFIG_CPU_HAS_SYNC=y
177CONFIG_GENERIC_HARDIRQS=y
178CONFIG_GENERIC_IRQ_PROBE=y
179CONFIG_ARCH_FLATMEM_ENABLE=y
180CONFIG_SELECT_MEMORY_MODEL=y
181CONFIG_FLATMEM_MANUAL=y
182# CONFIG_DISCONTIGMEM_MANUAL is not set
183# CONFIG_SPARSEMEM_MANUAL is not set
184CONFIG_FLATMEM=y
185CONFIG_FLAT_NODE_MEM_MAP=y
186# CONFIG_SPARSEMEM_STATIC is not set
187CONFIG_PREEMPT_NONE=y
188# CONFIG_PREEMPT_VOLUNTARY is not set
189# CONFIG_PREEMPT is not set
190
191#
192# Bus options (PCI, PCMCIA, EISA, ISA, TC)
193#
194CONFIG_MMU=y
195
196#
197# PCCARD (PCMCIA/CardBus) support
198#
199# CONFIG_PCCARD is not set
200
201#
202# PCI Hotplug Support
203#
204
205#
206# Executable file formats
207#
208CONFIG_BINFMT_ELF=y
209# CONFIG_BINFMT_MISC is not set
210CONFIG_TRAD_SIGNALS=y
211
212#
213# Networking
214#
215CONFIG_NET=y
216
217#
218# Networking options
219#
220CONFIG_PACKET=y
221CONFIG_PACKET_MMAP=y
222CONFIG_UNIX=y
223CONFIG_XFRM=y
224# CONFIG_XFRM_USER is not set
225CONFIG_NET_KEY=y
226CONFIG_INET=y
227CONFIG_IP_MULTICAST=y
228CONFIG_IP_ADVANCED_ROUTER=y
229CONFIG_ASK_IP_FIB_HASH=y
230# CONFIG_IP_FIB_TRIE is not set
231CONFIG_IP_FIB_HASH=y
232CONFIG_IP_MULTIPLE_TABLES=y
233CONFIG_IP_ROUTE_MULTIPATH=y
234# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
235CONFIG_IP_ROUTE_VERBOSE=y
236CONFIG_IP_PNP=y
237CONFIG_IP_PNP_DHCP=y
238CONFIG_IP_PNP_BOOTP=y
239# CONFIG_IP_PNP_RARP is not set
240# CONFIG_NET_IPIP is not set
241# CONFIG_NET_IPGRE is not set
242CONFIG_IP_MROUTE=y
243CONFIG_IP_PIMSM_V1=y
244CONFIG_IP_PIMSM_V2=y
245# CONFIG_ARPD is not set
246CONFIG_SYN_COOKIES=y
247# CONFIG_INET_AH is not set
248# CONFIG_INET_ESP is not set
249# CONFIG_INET_IPCOMP is not set
250# CONFIG_INET_TUNNEL is not set
251CONFIG_INET_DIAG=y
252CONFIG_INET_TCP_DIAG=y
253# CONFIG_TCP_CONG_ADVANCED is not set
254CONFIG_TCP_CONG_BIC=y
255# CONFIG_IPV6 is not set
256# CONFIG_NETFILTER is not set
257
258#
259# DCCP Configuration (EXPERIMENTAL)
260#
261# CONFIG_IP_DCCP is not set
262
263#
264# SCTP Configuration (EXPERIMENTAL)
265#
266CONFIG_IP_SCTP=m
267# CONFIG_SCTP_DBG_MSG is not set
268# CONFIG_SCTP_DBG_OBJCNT is not set
269# CONFIG_SCTP_HMAC_NONE is not set
270# CONFIG_SCTP_HMAC_SHA1 is not set
271CONFIG_SCTP_HMAC_MD5=y
272# CONFIG_ATM is not set
273# CONFIG_BRIDGE is not set
274# CONFIG_VLAN_8021Q is not set
275# CONFIG_DECNET is not set
276# CONFIG_LLC2 is not set
277# CONFIG_IPX is not set
278# CONFIG_ATALK is not set
279# CONFIG_X25 is not set
280# CONFIG_LAPB is not set
281CONFIG_NET_DIVERT=y
282# CONFIG_ECONET is not set
283# CONFIG_WAN_ROUTER is not set
284CONFIG_NET_SCHED=y
285CONFIG_NET_SCH_CLK_JIFFIES=y
286# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
287# CONFIG_NET_SCH_CLK_CPU is not set
288CONFIG_NET_SCH_CBQ=m
289CONFIG_NET_SCH_HTB=m
290CONFIG_NET_SCH_HFSC=m
291CONFIG_NET_SCH_PRIO=m
292CONFIG_NET_SCH_RED=m
293CONFIG_NET_SCH_SFQ=m
294CONFIG_NET_SCH_TEQL=m
295CONFIG_NET_SCH_TBF=m
296CONFIG_NET_SCH_GRED=m
297CONFIG_NET_SCH_DSMARK=m
298CONFIG_NET_SCH_NETEM=m
299CONFIG_NET_SCH_INGRESS=m
300CONFIG_NET_QOS=y
301CONFIG_NET_ESTIMATOR=y
302CONFIG_NET_CLS=y
303CONFIG_NET_CLS_BASIC=m
304CONFIG_NET_CLS_TCINDEX=m
305CONFIG_NET_CLS_ROUTE4=m
306CONFIG_NET_CLS_ROUTE=y
307# CONFIG_NET_CLS_FW is not set
308# CONFIG_NET_CLS_U32 is not set
309# CONFIG_NET_CLS_RSVP is not set
310# CONFIG_NET_CLS_RSVP6 is not set
311# CONFIG_NET_EMATCH is not set
312# CONFIG_NET_CLS_ACT is not set
313# CONFIG_NET_CLS_POLICE is not set
314
315#
316# Network testing
317#
318# CONFIG_NET_PKTGEN is not set
319# CONFIG_HAMRADIO is not set
320# CONFIG_IRDA is not set
321# CONFIG_BT is not set
322# CONFIG_IEEE80211 is not set
323
324#
325# Device Drivers
326#
327
328#
329# Generic Driver Options
330#
331# CONFIG_STANDALONE is not set
332# CONFIG_PREVENT_FIRMWARE_BUILD is not set
333# CONFIG_FW_LOADER is not set
334# CONFIG_DEBUG_DRIVER is not set
335
336#
337# Connector - unified userspace <-> kernelspace linker
338#
339# CONFIG_CONNECTOR is not set
340
341#
342# Memory Technology Devices (MTD)
343#
344# CONFIG_MTD is not set
345
346#
347# Parallel port support
348#
349# CONFIG_PARPORT is not set
350
351#
352# Plug and Play support
353#
354
355#
356# Block devices
357#
358# CONFIG_BLK_DEV_COW_COMMON is not set
359CONFIG_BLK_DEV_LOOP=y
360# CONFIG_BLK_DEV_CRYPTOLOOP is not set
361CONFIG_BLK_DEV_NBD=y
362# CONFIG_BLK_DEV_RAM is not set
363CONFIG_BLK_DEV_RAM_COUNT=16
364# CONFIG_LBD is not set
365# CONFIG_CDROM_PKTCDVD is not set
366
367#
368# IO Schedulers
369#
370CONFIG_IOSCHED_NOOP=y
371CONFIG_IOSCHED_AS=y
372CONFIG_IOSCHED_DEADLINE=y
373CONFIG_IOSCHED_CFQ=y
374# CONFIG_ATA_OVER_ETH is not set
375
376#
377# ATA/ATAPI/MFM/RLL support
378#
379# CONFIG_IDE is not set
380
381#
382# SCSI device support
383#
384# CONFIG_RAID_ATTRS is not set
385# CONFIG_SCSI is not set
386
387#
388# Multi-device support (RAID and LVM)
389#
390# CONFIG_MD is not set
391
392#
393# Fusion MPT device support
394#
395# CONFIG_FUSION is not set
396
397#
398# IEEE 1394 (FireWire) support
399#
400
401#
402# I2O device support
403#
404
405#
406# Network device support
407#
408CONFIG_NETDEVICES=y
409# CONFIG_DUMMY is not set
410# CONFIG_BONDING is not set
411# CONFIG_EQUALIZER is not set
412# CONFIG_TUN is not set
413
414#
415# PHY device support
416#
417
418#
419# Ethernet (10 or 100Mbit)
420#
421# CONFIG_NET_ETHERNET is not set
422# CONFIG_MIPS_SIM_NET is not set
423
424#
425# Ethernet (1000 Mbit)
426#
427
428#
429# Ethernet (10000 Mbit)
430#
431
432#
433# Token Ring devices
434#
435
436#
437# Wireless LAN (non-hamradio)
438#
439# CONFIG_NET_RADIO is not set
440
441#
442# Wan interfaces
443#
444# CONFIG_WAN is not set
445# CONFIG_PPP is not set
446# CONFIG_SLIP is not set
447# CONFIG_SHAPER is not set
448# CONFIG_NETCONSOLE is not set
449# CONFIG_NETPOLL is not set
450# CONFIG_NET_POLL_CONTROLLER is not set
451
452#
453# ISDN subsystem
454#
455# CONFIG_ISDN is not set
456
457#
458# Telephony Support
459#
460# CONFIG_PHONE is not set
461
462#
463# Input device support
464#
465CONFIG_INPUT=y
466
467#
468# Userland interfaces
469#
470# CONFIG_INPUT_MOUSEDEV is not set
471# CONFIG_INPUT_JOYDEV is not set
472# CONFIG_INPUT_TSDEV is not set
473# CONFIG_INPUT_EVDEV is not set
474# CONFIG_INPUT_EVBUG is not set
475
476#
477# Input Device Drivers
478#
479# CONFIG_INPUT_KEYBOARD is not set
480# CONFIG_INPUT_MOUSE is not set
481# CONFIG_INPUT_JOYSTICK is not set
482# CONFIG_INPUT_TOUCHSCREEN is not set
483# CONFIG_INPUT_MISC is not set
484
485#
486# Hardware I/O ports
487#
488CONFIG_SERIO=y
489# CONFIG_SERIO_I8042 is not set
490CONFIG_SERIO_SERPORT=y
491# CONFIG_SERIO_LIBPS2 is not set
492# CONFIG_SERIO_RAW is not set
493# CONFIG_GAMEPORT is not set
494
495#
496# Character devices
497#
498# CONFIG_VT is not set
499# CONFIG_SERIAL_NONSTANDARD is not set
500
501#
502# Serial drivers
503#
504CONFIG_SERIAL_8250=y
505CONFIG_SERIAL_8250_CONSOLE=y
506CONFIG_SERIAL_8250_NR_UARTS=1
507# CONFIG_SERIAL_8250_EXTENDED is not set
508
509#
510# Non-8250 serial port support
511#
512CONFIG_SERIAL_CORE=y
513CONFIG_SERIAL_CORE_CONSOLE=y
514CONFIG_UNIX98_PTYS=y
515CONFIG_LEGACY_PTYS=y
516CONFIG_LEGACY_PTY_COUNT=256
517
518#
519# IPMI
520#
521# CONFIG_IPMI_HANDLER is not set
522
523#
524# Watchdog Cards
525#
526# CONFIG_WATCHDOG is not set
527# CONFIG_RTC is not set
528# CONFIG_GEN_RTC is not set
529# CONFIG_DTLK is not set
530# CONFIG_R3964 is not set
531
532#
533# Ftape, the floppy tape device driver
534#
535# CONFIG_RAW_DRIVER is not set
536
537#
538# TPM devices
539#
540
541#
542# I2C support
543#
544# CONFIG_I2C is not set
545
546#
547# Dallas's 1-wire bus
548#
549# CONFIG_W1 is not set
550
551#
552# Hardware Monitoring support
553#
554# CONFIG_HWMON is not set
555# CONFIG_HWMON_VID is not set
556
557#
558# Misc devices
559#
560
561#
562# Multimedia Capabilities Port drivers
563#
564
565#
566# Multimedia devices
567#
568# CONFIG_VIDEO_DEV is not set
569
570#
571# Digital Video Broadcasting Devices
572#
573# CONFIG_DVB is not set
574
575#
576# Graphics support
577#
578# CONFIG_FB is not set
579
580#
581# Sound
582#
583# CONFIG_SOUND is not set
584
585#
586# USB support
587#
588# CONFIG_USB_ARCH_HAS_HCD is not set
589# CONFIG_USB_ARCH_HAS_OHCI is not set
590
591#
592# USB Gadget Support
593#
594# CONFIG_USB_GADGET is not set
595
596#
597# MMC/SD Card support
598#
599# CONFIG_MMC is not set
600
601#
602# InfiniBand support
603#
604
605#
606# SN Devices
607#
608
609#
610# File systems
611#
612CONFIG_EXT2_FS=y
613# CONFIG_EXT2_FS_XATTR is not set
614# CONFIG_EXT2_FS_XIP is not set
615# CONFIG_EXT3_FS is not set
616# CONFIG_JBD is not set
617# CONFIG_REISERFS_FS is not set
618# CONFIG_JFS_FS is not set
619# CONFIG_FS_POSIX_ACL is not set
620# CONFIG_XFS_FS is not set
621# CONFIG_MINIX_FS is not set
622CONFIG_ROMFS_FS=y
623# CONFIG_INOTIFY is not set
624# CONFIG_QUOTA is not set
625# CONFIG_DNOTIFY is not set
626# CONFIG_AUTOFS_FS is not set
627# CONFIG_AUTOFS4_FS is not set
628# CONFIG_FUSE_FS is not set
629
630#
631# CD-ROM/DVD Filesystems
632#
633# CONFIG_ISO9660_FS is not set
634# CONFIG_UDF_FS is not set
635
636#
637# DOS/FAT/NT Filesystems
638#
639# CONFIG_MSDOS_FS is not set
640# CONFIG_VFAT_FS is not set
641# CONFIG_NTFS_FS is not set
642
643#
644# Pseudo filesystems
645#
646CONFIG_PROC_FS=y
647# CONFIG_PROC_KCORE is not set
648# CONFIG_SYSFS is not set
649# CONFIG_TMPFS is not set
650# CONFIG_HUGETLB_PAGE is not set
651CONFIG_RAMFS=y
652# CONFIG_RELAYFS_FS is not set
653
654#
655# Miscellaneous filesystems
656#
657# CONFIG_ADFS_FS is not set
658# CONFIG_AFFS_FS is not set
659# CONFIG_HFS_FS is not set
660# CONFIG_HFSPLUS_FS is not set
661# CONFIG_BEFS_FS is not set
662# CONFIG_BFS_FS is not set
663# CONFIG_EFS_FS is not set
664# CONFIG_CRAMFS is not set
665# CONFIG_VXFS_FS is not set
666# CONFIG_HPFS_FS is not set
667# CONFIG_QNX4FS_FS is not set
668# CONFIG_SYSV_FS is not set
669# CONFIG_UFS_FS is not set
670
671#
672# Network File Systems
673#
674CONFIG_NFS_FS=y
675CONFIG_NFS_V3=y
676# CONFIG_NFS_V3_ACL is not set
677# CONFIG_NFS_V4 is not set
678# CONFIG_NFS_DIRECTIO is not set
679# CONFIG_NFSD is not set
680CONFIG_ROOT_NFS=y
681CONFIG_LOCKD=y
682CONFIG_LOCKD_V4=y
683CONFIG_NFS_COMMON=y
684CONFIG_SUNRPC=y
685# CONFIG_RPCSEC_GSS_KRB5 is not set
686# CONFIG_RPCSEC_GSS_SPKM3 is not set
687# CONFIG_SMB_FS is not set
688# CONFIG_CIFS is not set
689# CONFIG_NCP_FS is not set
690# CONFIG_CODA_FS is not set
691# CONFIG_AFS_FS is not set
692# CONFIG_9P_FS is not set
693
694#
695# Partition Types
696#
697# CONFIG_PARTITION_ADVANCED is not set
698CONFIG_MSDOS_PARTITION=y
699
700#
701# Native Language Support
702#
703# CONFIG_NLS is not set
704
705#
706# Profiling support
707#
708# CONFIG_PROFILING is not set
709
710#
711# Kernel hacking
712#
713# CONFIG_PRINTK_TIME is not set
714CONFIG_DEBUG_KERNEL=y
715# CONFIG_MAGIC_SYSRQ is not set
716CONFIG_LOG_BUF_SHIFT=14
717# CONFIG_DETECT_SOFTLOCKUP is not set
718# CONFIG_SCHEDSTATS is not set
719# CONFIG_DEBUG_SLAB is not set
720# CONFIG_DEBUG_SPINLOCK is not set
721# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
722# CONFIG_DEBUG_KOBJECT is not set
723CONFIG_DEBUG_INFO=y
724CONFIG_CROSSCOMPILE=y
725CONFIG_CMDLINE="nfsroot=192.168.192.169:/u1/mipsel,timeo=20 ip=dhcp"
726# CONFIG_DEBUG_STACK_USAGE is not set
727# CONFIG_KGDB is not set
728# CONFIG_RUNTIME_DEBUG is not set
729# CONFIG_MIPS_UNCACHED is not set
730
731#
732# Security options
733#
734# CONFIG_KEYS is not set
735
736#
737# Cryptographic options
738#
739CONFIG_CRYPTO=y
740CONFIG_CRYPTO_HMAC=y
741# CONFIG_CRYPTO_NULL is not set
742# CONFIG_CRYPTO_MD4 is not set
743CONFIG_CRYPTO_MD5=y
744# CONFIG_CRYPTO_SHA1 is not set
745# CONFIG_CRYPTO_SHA256 is not set
746# CONFIG_CRYPTO_SHA512 is not set
747# CONFIG_CRYPTO_WP512 is not set
748# CONFIG_CRYPTO_TGR192 is not set
749# CONFIG_CRYPTO_DES is not set
750# CONFIG_CRYPTO_BLOWFISH is not set
751# CONFIG_CRYPTO_TWOFISH is not set
752# CONFIG_CRYPTO_SERPENT is not set
753# CONFIG_CRYPTO_AES is not set
754# CONFIG_CRYPTO_CAST5 is not set
755# CONFIG_CRYPTO_CAST6 is not set
756# CONFIG_CRYPTO_TEA is not set
757# CONFIG_CRYPTO_ARC4 is not set
758# CONFIG_CRYPTO_KHAZAD is not set
759# CONFIG_CRYPTO_ANUBIS is not set
760# CONFIG_CRYPTO_DEFLATE is not set
761# CONFIG_CRYPTO_MICHAEL_MIC is not set
762# CONFIG_CRYPTO_CRC32C is not set
763# CONFIG_CRYPTO_TEST is not set
764
765#
766# Hardware crypto devices
767#
768
769#
770# Library routines
771#
772# CONFIG_CRC_CCITT is not set
773CONFIG_CRC16=y
774CONFIG_CRC32=y
775# CONFIG_LIBCRC32C is not set
diff --git a/arch/mips/configs/mpc30x_defconfig b/arch/mips/configs/mpc30x_defconfig
index 0fea57ef18f2..e2c082128532 100644
--- a/arch/mips/configs/mpc30x_defconfig
+++ b/arch/mips/configs/mpc30x_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:07 2005 4# Thu Oct 20 22:26:28 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14 27CONFIG_HOTPLUG=y
29# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,57 +59,86 @@ CONFIG_KMOD=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60CONFIG_MACH_VR41XX=y 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_NEC_CMBVR4133 is not set 64# CONFIG_MIPS_PB1000 is not set
62# CONFIG_CASIO_E55 is not set 65# CONFIG_MIPS_PB1100 is not set
63# CONFIG_IBM_WORKPAD is not set 66# CONFIG_MIPS_PB1500 is not set
64# CONFIG_TANBAC_TB0226 is not set 67# CONFIG_MIPS_PB1550 is not set
65# CONFIG_TANBAC_TB0229 is not set 68# CONFIG_MIPS_PB1200 is not set
66CONFIG_VICTOR_MPC30X=y 69# CONFIG_MIPS_DB1000 is not set
67# CONFIG_ZAO_CAPCELLA is not set 70# CONFIG_MIPS_DB1100 is not set
68CONFIG_PCI_VR41XX=y 71# CONFIG_MIPS_DB1500 is not set
69CONFIG_VRC4173=y 72# CONFIG_MIPS_DB1550 is not set
70# CONFIG_TOSHIBA_JMR3927 is not set 73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
71# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
72# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
73# CONFIG_MIPS_EV64120 is not set 77# CONFIG_MIPS_EV64120 is not set
74# CONFIG_MIPS_EV96100 is not set 78# CONFIG_MIPS_EV96100 is not set
75# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
76# CONFIG_LASAT is not set
77# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
78# CONFIG_MIPS_ATLAS is not set 83# CONFIG_MIPS_ATLAS is not set
79# CONFIG_MIPS_MALTA is not set 84# CONFIG_MIPS_MALTA is not set
80# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
81# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
82# CONFIG_MOMENCO_OCELOT_G is not set
83# CONFIG_MOMENCO_OCELOT_C is not set
84# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
85# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
86# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
87# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
88# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
89# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
90# CONFIG_NEC_OSPREY is not set 98CONFIG_MACH_VR41XX=y
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
91# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
92# CONFIG_SOC_AU1X00 is not set 102# CONFIG_SGI_IP27 is not set
93# CONFIG_SIBYTE_SB1xxx_SOC is not set 103# CONFIG_SGI_IP32 is not set
104# CONFIG_SIBYTE_BIGSUR is not set
105# CONFIG_SIBYTE_SWARM is not set
106# CONFIG_SIBYTE_SENTOSA is not set
107# CONFIG_SIBYTE_RHONE is not set
108# CONFIG_SIBYTE_CARMEL is not set
109# CONFIG_SIBYTE_PTSWARM is not set
110# CONFIG_SIBYTE_LITTLESUR is not set
111# CONFIG_SIBYTE_CRHINE is not set
112# CONFIG_SIBYTE_CRHONE is not set
94# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
95# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
117# CONFIG_NEC_CMBVR4133 is not set
118# CONFIG_CASIO_E55 is not set
119# CONFIG_IBM_WORKPAD is not set
120# CONFIG_TANBAC_TB022X is not set
121CONFIG_VICTOR_MPC30X=y
122# CONFIG_ZAO_CAPCELLA is not set
123CONFIG_PCI_VR41XX=y
124CONFIG_VRC4173=y
96CONFIG_RWSEM_GENERIC_SPINLOCK=y 125CONFIG_RWSEM_GENERIC_SPINLOCK=y
97CONFIG_GENERIC_CALIBRATE_DELAY=y 126CONFIG_GENERIC_CALIBRATE_DELAY=y
98CONFIG_HAVE_DEC_LOCK=y
99CONFIG_DMA_NONCOHERENT=y 127CONFIG_DMA_NONCOHERENT=y
100CONFIG_DMA_NEED_PCI_MAP_STATE=y 128CONFIG_DMA_NEED_PCI_MAP_STATE=y
129# CONFIG_CPU_BIG_ENDIAN is not set
101CONFIG_CPU_LITTLE_ENDIAN=y 130CONFIG_CPU_LITTLE_ENDIAN=y
131CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
102CONFIG_IRQ_CPU=y 132CONFIG_IRQ_CPU=y
103CONFIG_MIPS_L1_CACHE_SHIFT=5 133CONFIG_MIPS_L1_CACHE_SHIFT=5
104 134
105# 135#
106# CPU selection 136# CPU selection
107# 137#
108# CONFIG_CPU_MIPS32 is not set 138# CONFIG_CPU_MIPS32_R1 is not set
109# CONFIG_CPU_MIPS64 is not set 139# CONFIG_CPU_MIPS32_R2 is not set
140# CONFIG_CPU_MIPS64_R1 is not set
141# CONFIG_CPU_MIPS64_R2 is not set
110# CONFIG_CPU_R3000 is not set 142# CONFIG_CPU_R3000 is not set
111# CONFIG_CPU_TX39XX is not set 143# CONFIG_CPU_TX39XX is not set
112CONFIG_CPU_VR41XX=y 144CONFIG_CPU_VR41XX=y
@@ -122,12 +154,36 @@ CONFIG_CPU_VR41XX=y
122# CONFIG_CPU_RM7000 is not set 154# CONFIG_CPU_RM7000 is not set
123# CONFIG_CPU_RM9000 is not set 155# CONFIG_CPU_RM9000 is not set
124# CONFIG_CPU_SB1 is not set 156# CONFIG_CPU_SB1 is not set
157CONFIG_SYS_HAS_CPU_VR41XX=y
158CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
159CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
160CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
161CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
162
163#
164# Kernel type
165#
166CONFIG_32BIT=y
167# CONFIG_64BIT is not set
125CONFIG_PAGE_SIZE_4KB=y 168CONFIG_PAGE_SIZE_4KB=y
126# CONFIG_PAGE_SIZE_8KB is not set 169# CONFIG_PAGE_SIZE_8KB is not set
127# CONFIG_PAGE_SIZE_16KB is not set 170# CONFIG_PAGE_SIZE_16KB is not set
128# CONFIG_PAGE_SIZE_64KB is not set 171# CONFIG_PAGE_SIZE_64KB is not set
172# CONFIG_MIPS_MT is not set
129# CONFIG_CPU_ADVANCED is not set 173# CONFIG_CPU_ADVANCED is not set
130CONFIG_CPU_HAS_SYNC=y 174CONFIG_CPU_HAS_SYNC=y
175CONFIG_GENERIC_HARDIRQS=y
176CONFIG_GENERIC_IRQ_PROBE=y
177CONFIG_ARCH_FLATMEM_ENABLE=y
178CONFIG_SELECT_MEMORY_MODEL=y
179CONFIG_FLATMEM_MANUAL=y
180# CONFIG_DISCONTIGMEM_MANUAL is not set
181# CONFIG_SPARSEMEM_MANUAL is not set
182CONFIG_FLATMEM=y
183CONFIG_FLAT_NODE_MEM_MAP=y
184# CONFIG_SPARSEMEM_STATIC is not set
185CONFIG_PREEMPT_NONE=y
186# CONFIG_PREEMPT_VOLUNTARY is not set
131# CONFIG_PREEMPT is not set 187# CONFIG_PREEMPT is not set
132 188
133# 189#
@@ -136,17 +192,26 @@ CONFIG_CPU_HAS_SYNC=y
136CONFIG_HW_HAS_PCI=y 192CONFIG_HW_HAS_PCI=y
137CONFIG_PCI=y 193CONFIG_PCI=y
138CONFIG_PCI_LEGACY_PROC=y 194CONFIG_PCI_LEGACY_PROC=y
139CONFIG_PCI_NAMES=y
140CONFIG_MMU=y 195CONFIG_MMU=y
141 196
142# 197#
143# PCCARD (PCMCIA/CardBus) support 198# PCCARD (PCMCIA/CardBus) support
144# 199#
145# CONFIG_PCCARD is not set 200CONFIG_PCCARD=y
201# CONFIG_PCMCIA_DEBUG is not set
202CONFIG_PCMCIA=y
203CONFIG_PCMCIA_LOAD_CIS=y
204CONFIG_PCMCIA_IOCTL=y
205# CONFIG_CARDBUS is not set
146 206
147# 207#
148# PC-card bridges 208# PC-card bridges
149# 209#
210# CONFIG_YENTA is not set
211# CONFIG_PD6729 is not set
212# CONFIG_I82092 is not set
213# CONFIG_TCIC is not set
214CONFIG_PCMCIA_VRC4173=y
150 215
151# 216#
152# PCI Hotplug Support 217# PCI Hotplug Support
@@ -161,6 +226,78 @@ CONFIG_BINFMT_ELF=y
161CONFIG_TRAD_SIGNALS=y 226CONFIG_TRAD_SIGNALS=y
162 227
163# 228#
229# Networking
230#
231CONFIG_NET=y
232
233#
234# Networking options
235#
236CONFIG_PACKET=y
237CONFIG_PACKET_MMAP=y
238CONFIG_UNIX=y
239CONFIG_XFRM=y
240CONFIG_XFRM_USER=m
241CONFIG_NET_KEY=y
242CONFIG_INET=y
243CONFIG_IP_MULTICAST=y
244# CONFIG_IP_ADVANCED_ROUTER is not set
245CONFIG_IP_FIB_HASH=y
246# CONFIG_IP_PNP is not set
247# CONFIG_NET_IPIP is not set
248# CONFIG_NET_IPGRE is not set
249# CONFIG_IP_MROUTE is not set
250# CONFIG_ARPD is not set
251# CONFIG_SYN_COOKIES is not set
252# CONFIG_INET_AH is not set
253# CONFIG_INET_ESP is not set
254# CONFIG_INET_IPCOMP is not set
255CONFIG_INET_TUNNEL=m
256CONFIG_INET_DIAG=y
257CONFIG_INET_TCP_DIAG=y
258# CONFIG_TCP_CONG_ADVANCED is not set
259CONFIG_TCP_CONG_BIC=y
260# CONFIG_IPV6 is not set
261# CONFIG_NETFILTER is not set
262
263#
264# DCCP Configuration (EXPERIMENTAL)
265#
266# CONFIG_IP_DCCP is not set
267
268#
269# SCTP Configuration (EXPERIMENTAL)
270#
271# CONFIG_IP_SCTP is not set
272# CONFIG_ATM is not set
273# CONFIG_BRIDGE is not set
274# CONFIG_VLAN_8021Q is not set
275# CONFIG_DECNET is not set
276# CONFIG_LLC2 is not set
277# CONFIG_IPX is not set
278# CONFIG_ATALK is not set
279# CONFIG_X25 is not set
280# CONFIG_LAPB is not set
281# CONFIG_NET_DIVERT is not set
282# CONFIG_ECONET is not set
283# CONFIG_WAN_ROUTER is not set
284# CONFIG_NET_SCHED is not set
285# CONFIG_NET_CLS_ROUTE is not set
286
287#
288# Network testing
289#
290# CONFIG_NET_PKTGEN is not set
291# CONFIG_HAMRADIO is not set
292# CONFIG_IRDA is not set
293# CONFIG_BT is not set
294CONFIG_IEEE80211=m
295# CONFIG_IEEE80211_DEBUG is not set
296CONFIG_IEEE80211_CRYPT_WEP=m
297CONFIG_IEEE80211_CRYPT_CCMP=m
298CONFIG_IEEE80211_CRYPT_TKIP=m
299
300#
164# Device Drivers 301# Device Drivers
165# 302#
166 303
@@ -169,7 +306,12 @@ CONFIG_TRAD_SIGNALS=y
169# 306#
170CONFIG_STANDALONE=y 307CONFIG_STANDALONE=y
171CONFIG_PREVENT_FIRMWARE_BUILD=y 308CONFIG_PREVENT_FIRMWARE_BUILD=y
172# CONFIG_FW_LOADER is not set 309CONFIG_FW_LOADER=y
310
311#
312# Connector - unified userspace <-> kernelspace linker
313#
314CONFIG_CONNECTOR=m
173 315
174# 316#
175# Memory Technology Devices (MTD) 317# Memory Technology Devices (MTD)
@@ -188,7 +330,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
188# 330#
189# Block devices 331# Block devices
190# 332#
191# CONFIG_BLK_DEV_FD is not set
192# CONFIG_BLK_CPQ_DA is not set 333# CONFIG_BLK_CPQ_DA is not set
193# CONFIG_BLK_CPQ_CISS_DA is not set 334# CONFIG_BLK_CPQ_CISS_DA is not set
194# CONFIG_BLK_DEV_DAC960 is not set 335# CONFIG_BLK_DEV_DAC960 is not set
@@ -197,13 +338,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
197# CONFIG_BLK_DEV_LOOP is not set 338# CONFIG_BLK_DEV_LOOP is not set
198# CONFIG_BLK_DEV_NBD is not set 339# CONFIG_BLK_DEV_NBD is not set
199# CONFIG_BLK_DEV_SX8 is not set 340# CONFIG_BLK_DEV_SX8 is not set
341# CONFIG_BLK_DEV_UB is not set
200# CONFIG_BLK_DEV_RAM is not set 342# CONFIG_BLK_DEV_RAM is not set
201CONFIG_BLK_DEV_RAM_COUNT=16 343CONFIG_BLK_DEV_RAM_COUNT=16
202CONFIG_INITRAMFS_SOURCE=""
203# CONFIG_LBD is not set 344# CONFIG_LBD is not set
204CONFIG_CDROM_PKTCDVD=m 345# CONFIG_CDROM_PKTCDVD is not set
205CONFIG_CDROM_PKTCDVD_BUFFERS=8
206# CONFIG_CDROM_PKTCDVD_WCACHE is not set
207 346
208# 347#
209# IO Schedulers 348# IO Schedulers
@@ -217,11 +356,35 @@ CONFIG_ATA_OVER_ETH=m
217# 356#
218# ATA/ATAPI/MFM/RLL support 357# ATA/ATAPI/MFM/RLL support
219# 358#
220# CONFIG_IDE is not set 359CONFIG_IDE=y
360CONFIG_BLK_DEV_IDE=y
361
362#
363# Please see Documentation/ide.txt for help/info on IDE drives
364#
365# CONFIG_BLK_DEV_IDE_SATA is not set
366CONFIG_BLK_DEV_IDEDISK=y
367# CONFIG_IDEDISK_MULTI_MODE is not set
368CONFIG_BLK_DEV_IDECS=m
369# CONFIG_BLK_DEV_IDECD is not set
370# CONFIG_BLK_DEV_IDETAPE is not set
371# CONFIG_BLK_DEV_IDEFLOPPY is not set
372# CONFIG_IDE_TASK_IOCTL is not set
373
374#
375# IDE chipset support/bugfixes
376#
377CONFIG_IDE_GENERIC=y
378# CONFIG_BLK_DEV_IDEPCI is not set
379# CONFIG_IDE_ARM is not set
380# CONFIG_BLK_DEV_IDEDMA is not set
381# CONFIG_IDEDMA_AUTO is not set
382# CONFIG_BLK_DEV_HD is not set
221 383
222# 384#
223# SCSI device support 385# SCSI device support
224# 386#
387# CONFIG_RAID_ATTRS is not set
225# CONFIG_SCSI is not set 388# CONFIG_SCSI is not set
226 389
227# 390#
@@ -232,6 +395,7 @@ CONFIG_ATA_OVER_ETH=m
232# 395#
233# Fusion MPT device support 396# Fusion MPT device support
234# 397#
398# CONFIG_FUSION is not set
235 399
236# 400#
237# IEEE 1394 (FireWire) support 401# IEEE 1394 (FireWire) support
@@ -244,79 +408,13 @@ CONFIG_ATA_OVER_ETH=m
244# CONFIG_I2O is not set 408# CONFIG_I2O is not set
245 409
246# 410#
247# Networking support 411# Network device support
248#
249CONFIG_NET=y
250
251#
252# Networking options
253#
254CONFIG_PACKET=y
255CONFIG_PACKET_MMAP=y
256CONFIG_NETLINK_DEV=y
257CONFIG_UNIX=y
258CONFIG_NET_KEY=y
259CONFIG_INET=y
260CONFIG_IP_MULTICAST=y
261# CONFIG_IP_ADVANCED_ROUTER is not set
262CONFIG_IP_PNP=y
263# CONFIG_IP_PNP_DHCP is not set
264CONFIG_IP_PNP_BOOTP=y
265# CONFIG_IP_PNP_RARP is not set
266# CONFIG_NET_IPIP is not set
267# CONFIG_NET_IPGRE is not set
268# CONFIG_IP_MROUTE is not set
269# CONFIG_ARPD is not set
270# CONFIG_SYN_COOKIES is not set
271# CONFIG_INET_AH is not set
272# CONFIG_INET_ESP is not set
273# CONFIG_INET_IPCOMP is not set
274CONFIG_INET_TUNNEL=m
275CONFIG_IP_TCPDIAG=m
276# CONFIG_IP_TCPDIAG_IPV6 is not set
277# CONFIG_IPV6 is not set
278# CONFIG_NETFILTER is not set
279CONFIG_XFRM=y
280CONFIG_XFRM_USER=m
281
282#
283# SCTP Configuration (EXPERIMENTAL)
284# 412#
285# CONFIG_IP_SCTP is not set
286# CONFIG_ATM is not set
287# CONFIG_BRIDGE is not set
288# CONFIG_VLAN_8021Q is not set
289# CONFIG_DECNET is not set
290# CONFIG_LLC2 is not set
291# CONFIG_IPX is not set
292# CONFIG_ATALK is not set
293# CONFIG_X25 is not set
294# CONFIG_LAPB is not set
295# CONFIG_NET_DIVERT is not set
296# CONFIG_ECONET is not set
297# CONFIG_WAN_ROUTER is not set
298
299#
300# QoS and/or fair queueing
301#
302# CONFIG_NET_SCHED is not set
303# CONFIG_NET_CLS_ROUTE is not set
304
305#
306# Network testing
307#
308# CONFIG_NET_PKTGEN is not set
309# CONFIG_NETPOLL is not set
310# CONFIG_NET_POLL_CONTROLLER is not set
311# CONFIG_HAMRADIO is not set
312# CONFIG_IRDA is not set
313# CONFIG_BT is not set
314CONFIG_NETDEVICES=y 413CONFIG_NETDEVICES=y
315# CONFIG_DUMMY is not set 414# CONFIG_DUMMY is not set
316# CONFIG_BONDING is not set 415# CONFIG_BONDING is not set
317# CONFIG_EQUALIZER is not set 416# CONFIG_EQUALIZER is not set
318# CONFIG_TUN is not set 417# CONFIG_TUN is not set
319# CONFIG_ETHERTAP is not set
320 418
321# 419#
322# ARCnet devices 420# ARCnet devices
@@ -324,20 +422,14 @@ CONFIG_NETDEVICES=y
324# CONFIG_ARCNET is not set 422# CONFIG_ARCNET is not set
325 423
326# 424#
327# Ethernet (10 or 100Mbit) 425# PHY device support
328# 426#
329CONFIG_NET_ETHERNET=y
330# CONFIG_MII is not set
331# CONFIG_HAPPYMEAL is not set
332# CONFIG_SUNGEM is not set
333# CONFIG_NET_VENDOR_3COM is not set
334 427
335# 428#
336# Tulip family network device support 429# Ethernet (10 or 100Mbit)
337# 430#
338# CONFIG_NET_TULIP is not set 431# CONFIG_NET_ETHERNET is not set
339# CONFIG_HP100 is not set 432CONFIG_MII=m
340# CONFIG_NET_PCI is not set
341 433
342# 434#
343# Ethernet (1000 Mbit) 435# Ethernet (1000 Mbit)
@@ -349,12 +441,16 @@ CONFIG_NET_ETHERNET=y
349# CONFIG_HAMACHI is not set 441# CONFIG_HAMACHI is not set
350# CONFIG_YELLOWFIN is not set 442# CONFIG_YELLOWFIN is not set
351# CONFIG_R8169 is not set 443# CONFIG_R8169 is not set
444# CONFIG_SIS190 is not set
445# CONFIG_SKGE is not set
352# CONFIG_SK98LIN is not set 446# CONFIG_SK98LIN is not set
353# CONFIG_TIGON3 is not set 447# CONFIG_TIGON3 is not set
448# CONFIG_BNX2 is not set
354 449
355# 450#
356# Ethernet (10000 Mbit) 451# Ethernet (10000 Mbit)
357# 452#
453# CONFIG_CHELSIO_T1 is not set
358# CONFIG_IXGB is not set 454# CONFIG_IXGB is not set
359# CONFIG_S2IO is not set 455# CONFIG_S2IO is not set
360 456
@@ -366,7 +462,59 @@ CONFIG_NET_ETHERNET=y
366# 462#
367# Wireless LAN (non-hamradio) 463# Wireless LAN (non-hamradio)
368# 464#
369# CONFIG_NET_RADIO is not set 465CONFIG_NET_RADIO=y
466
467#
468# Obsolete Wireless cards support (pre-802.11)
469#
470# CONFIG_STRIP is not set
471# CONFIG_PCMCIA_WAVELAN is not set
472# CONFIG_PCMCIA_NETWAVE is not set
473
474#
475# Wireless 802.11 Frequency Hopping cards support
476#
477# CONFIG_PCMCIA_RAYCS is not set
478
479#
480# Wireless 802.11b ISA/PCI cards support
481#
482# CONFIG_IPW2100 is not set
483# CONFIG_IPW2200 is not set
484CONFIG_HERMES=m
485# CONFIG_PLX_HERMES is not set
486# CONFIG_TMD_HERMES is not set
487# CONFIG_NORTEL_HERMES is not set
488# CONFIG_PCI_HERMES is not set
489# CONFIG_ATMEL is not set
490
491#
492# Wireless 802.11b Pcmcia/Cardbus cards support
493#
494CONFIG_PCMCIA_HERMES=m
495# CONFIG_PCMCIA_SPECTRUM is not set
496# CONFIG_AIRO_CS is not set
497# CONFIG_PCMCIA_WL3501 is not set
498
499#
500# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
501#
502# CONFIG_PRISM54 is not set
503# CONFIG_HOSTAP is not set
504CONFIG_NET_WIRELESS=y
505
506#
507# PCMCIA network device support
508#
509CONFIG_NET_PCMCIA=y
510CONFIG_PCMCIA_3C589=m
511CONFIG_PCMCIA_3C574=m
512CONFIG_PCMCIA_FMVJ18X=m
513CONFIG_PCMCIA_PCNET=m
514CONFIG_PCMCIA_NMCLAN=m
515CONFIG_PCMCIA_SMC91C92=m
516CONFIG_PCMCIA_XIRC2PS=m
517CONFIG_PCMCIA_AXNET=m
370 518
371# 519#
372# Wan interfaces 520# Wan interfaces
@@ -378,6 +526,8 @@ CONFIG_NET_ETHERNET=y
378# CONFIG_SLIP is not set 526# CONFIG_SLIP is not set
379# CONFIG_SHAPER is not set 527# CONFIG_SHAPER is not set
380# CONFIG_NETCONSOLE is not set 528# CONFIG_NETCONSOLE is not set
529# CONFIG_NETPOLL is not set
530# CONFIG_NET_POLL_CONTROLLER is not set
381 531
382# 532#
383# ISDN subsystem 533# ISDN subsystem
@@ -407,19 +557,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
407# CONFIG_INPUT_EVBUG is not set 557# CONFIG_INPUT_EVBUG is not set
408 558
409# 559#
410# Input I/O drivers
411#
412# CONFIG_GAMEPORT is not set
413CONFIG_SOUND_GAMEPORT=y
414CONFIG_SERIO=y
415CONFIG_SERIO_I8042=y
416CONFIG_SERIO_SERPORT=y
417# CONFIG_SERIO_CT82C710 is not set
418# CONFIG_SERIO_PCIPS2 is not set
419# CONFIG_SERIO_LIBPS2 is not set
420CONFIG_SERIO_RAW=m
421
422#
423# Input Device Drivers 560# Input Device Drivers
424# 561#
425# CONFIG_INPUT_KEYBOARD is not set 562# CONFIG_INPUT_KEYBOARD is not set
@@ -429,6 +566,17 @@ CONFIG_SERIO_RAW=m
429# CONFIG_INPUT_MISC is not set 566# CONFIG_INPUT_MISC is not set
430 567
431# 568#
569# Hardware I/O ports
570#
571CONFIG_SERIO=y
572# CONFIG_SERIO_I8042 is not set
573CONFIG_SERIO_SERPORT=y
574# CONFIG_SERIO_PCIPS2 is not set
575# CONFIG_SERIO_LIBPS2 is not set
576CONFIG_SERIO_RAW=m
577# CONFIG_GAMEPORT is not set
578
579#
432# Character devices 580# Character devices
433# 581#
434CONFIG_VT=y 582CONFIG_VT=y
@@ -439,16 +587,16 @@ CONFIG_HW_CONSOLE=y
439# 587#
440# Serial drivers 588# Serial drivers
441# 589#
442CONFIG_SERIAL_8250=y 590# CONFIG_SERIAL_8250 is not set
443CONFIG_SERIAL_8250_CONSOLE=y
444CONFIG_SERIAL_8250_NR_UARTS=4
445# CONFIG_SERIAL_8250_EXTENDED is not set
446 591
447# 592#
448# Non-8250 serial port support 593# Non-8250 serial port support
449# 594#
450CONFIG_SERIAL_CORE=y 595CONFIG_SERIAL_CORE=y
451CONFIG_SERIAL_CORE_CONSOLE=y 596CONFIG_SERIAL_CORE_CONSOLE=y
597CONFIG_SERIAL_VR41XX=y
598CONFIG_SERIAL_VR41XX_CONSOLE=y
599# CONFIG_SERIAL_JSM is not set
452CONFIG_UNIX98_PTYS=y 600CONFIG_UNIX98_PTYS=y
453CONFIG_LEGACY_PTYS=y 601CONFIG_LEGACY_PTYS=y
454CONFIG_LEGACY_PTY_COUNT=256 602CONFIG_LEGACY_PTY_COUNT=256
@@ -472,9 +620,20 @@ CONFIG_LEGACY_PTY_COUNT=256
472# Ftape, the floppy tape device driver 620# Ftape, the floppy tape device driver
473# 621#
474# CONFIG_DRM is not set 622# CONFIG_DRM is not set
623
624#
625# PCMCIA character devices
626#
627# CONFIG_SYNCLINK_CS is not set
628CONFIG_GPIO_VR41XX=y
475# CONFIG_RAW_DRIVER is not set 629# CONFIG_RAW_DRIVER is not set
476 630
477# 631#
632# TPM devices
633#
634# CONFIG_TCG_TPM is not set
635
636#
478# I2C support 637# I2C support
479# 638#
480# CONFIG_I2C is not set 639# CONFIG_I2C is not set
@@ -485,10 +644,20 @@ CONFIG_LEGACY_PTY_COUNT=256
485# CONFIG_W1 is not set 644# CONFIG_W1 is not set
486 645
487# 646#
647# Hardware Monitoring support
648#
649# CONFIG_HWMON is not set
650# CONFIG_HWMON_VID is not set
651
652#
488# Misc devices 653# Misc devices
489# 654#
490 655
491# 656#
657# Multimedia Capabilities Port drivers
658#
659
660#
492# Multimedia devices 661# Multimedia devices
493# 662#
494# CONFIG_VIDEO_DEV is not set 663# CONFIG_VIDEO_DEV is not set
@@ -508,7 +677,6 @@ CONFIG_LEGACY_PTY_COUNT=256
508# 677#
509# CONFIG_VGA_CONSOLE is not set 678# CONFIG_VGA_CONSOLE is not set
510CONFIG_DUMMY_CONSOLE=y 679CONFIG_DUMMY_CONSOLE=y
511# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
512 680
513# 681#
514# Sound 682# Sound
@@ -518,13 +686,120 @@ CONFIG_DUMMY_CONSOLE=y
518# 686#
519# USB support 687# USB support
520# 688#
521# CONFIG_USB is not set
522CONFIG_USB_ARCH_HAS_HCD=y 689CONFIG_USB_ARCH_HAS_HCD=y
523CONFIG_USB_ARCH_HAS_OHCI=y 690CONFIG_USB_ARCH_HAS_OHCI=y
691CONFIG_USB=m
692# CONFIG_USB_DEBUG is not set
693
694#
695# Miscellaneous USB options
696#
697CONFIG_USB_DEVICEFS=y
698# CONFIG_USB_BANDWIDTH is not set
699# CONFIG_USB_DYNAMIC_MINORS is not set
700# CONFIG_USB_OTG is not set
701
702#
703# USB Host Controller Drivers
704#
705# CONFIG_USB_EHCI_HCD is not set
706# CONFIG_USB_ISP116X_HCD is not set
707CONFIG_USB_OHCI_HCD=m
708# CONFIG_USB_OHCI_BIG_ENDIAN is not set
709CONFIG_USB_OHCI_LITTLE_ENDIAN=y
710# CONFIG_USB_UHCI_HCD is not set
711# CONFIG_USB_SL811_HCD is not set
712
713#
714# USB Device Class drivers
715#
716# CONFIG_USB_BLUETOOTH_TTY is not set
717# CONFIG_USB_ACM is not set
718# CONFIG_USB_PRINTER is not set
524 719
525# 720#
526# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information 721# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
527# 722#
723# CONFIG_USB_STORAGE is not set
724
725#
726# USB Input Devices
727#
728# CONFIG_USB_HID is not set
729
730#
731# USB HID Boot Protocol drivers
732#
733# CONFIG_USB_KBD is not set
734# CONFIG_USB_MOUSE is not set
735# CONFIG_USB_AIPTEK is not set
736# CONFIG_USB_WACOM is not set
737# CONFIG_USB_ACECAD is not set
738# CONFIG_USB_KBTAB is not set
739# CONFIG_USB_POWERMATE is not set
740# CONFIG_USB_MTOUCH is not set
741# CONFIG_USB_ITMTOUCH is not set
742# CONFIG_USB_EGALAX is not set
743# CONFIG_USB_YEALINK is not set
744# CONFIG_USB_XPAD is not set
745# CONFIG_USB_ATI_REMOTE is not set
746# CONFIG_USB_KEYSPAN_REMOTE is not set
747# CONFIG_USB_APPLETOUCH is not set
748
749#
750# USB Imaging devices
751#
752# CONFIG_USB_MDC800 is not set
753
754#
755# USB Multimedia devices
756#
757# CONFIG_USB_DABUSB is not set
758
759#
760# Video4Linux support is needed for USB Multimedia device support
761#
762
763#
764# USB Network Adapters
765#
766# CONFIG_USB_CATC is not set
767# CONFIG_USB_KAWETH is not set
768CONFIG_USB_PEGASUS=m
769# CONFIG_USB_RTL8150 is not set
770# CONFIG_USB_USBNET is not set
771# CONFIG_USB_ZD1201 is not set
772# CONFIG_USB_MON is not set
773
774#
775# USB port drivers
776#
777
778#
779# USB Serial Converter support
780#
781# CONFIG_USB_SERIAL is not set
782
783#
784# USB Miscellaneous drivers
785#
786# CONFIG_USB_EMI62 is not set
787# CONFIG_USB_EMI26 is not set
788# CONFIG_USB_AUERSWALD is not set
789# CONFIG_USB_RIO500 is not set
790# CONFIG_USB_LEGOTOWER is not set
791# CONFIG_USB_LCD is not set
792# CONFIG_USB_LED is not set
793# CONFIG_USB_CYTHERM is not set
794# CONFIG_USB_PHIDGETKIT is not set
795# CONFIG_USB_PHIDGETSERVO is not set
796# CONFIG_USB_IDMOUSE is not set
797# CONFIG_USB_LD is not set
798# CONFIG_USB_TEST is not set
799
800#
801# USB DSL modem support
802#
528 803
529# 804#
530# USB Gadget Support 805# USB Gadget Support
@@ -542,21 +817,29 @@ CONFIG_USB_ARCH_HAS_OHCI=y
542# CONFIG_INFINIBAND is not set 817# CONFIG_INFINIBAND is not set
543 818
544# 819#
820# SN Devices
821#
822
823#
545# File systems 824# File systems
546# 825#
547CONFIG_EXT2_FS=y 826CONFIG_EXT2_FS=y
548# CONFIG_EXT2_FS_XATTR is not set 827# CONFIG_EXT2_FS_XATTR is not set
828# CONFIG_EXT2_FS_XIP is not set
549# CONFIG_EXT3_FS is not set 829# CONFIG_EXT3_FS is not set
550# CONFIG_JBD is not set 830# CONFIG_JBD is not set
551# CONFIG_REISERFS_FS is not set 831# CONFIG_REISERFS_FS is not set
552# CONFIG_JFS_FS is not set 832# CONFIG_JFS_FS is not set
833# CONFIG_FS_POSIX_ACL is not set
553# CONFIG_XFS_FS is not set 834# CONFIG_XFS_FS is not set
554# CONFIG_MINIX_FS is not set 835# CONFIG_MINIX_FS is not set
555# CONFIG_ROMFS_FS is not set 836# CONFIG_ROMFS_FS is not set
837CONFIG_INOTIFY=y
556# CONFIG_QUOTA is not set 838# CONFIG_QUOTA is not set
557CONFIG_DNOTIFY=y 839CONFIG_DNOTIFY=y
558CONFIG_AUTOFS_FS=y 840CONFIG_AUTOFS_FS=y
559CONFIG_AUTOFS4_FS=y 841CONFIG_AUTOFS4_FS=y
842CONFIG_FUSE_FS=m
560 843
561# 844#
562# CD-ROM/DVD Filesystems 845# CD-ROM/DVD Filesystems
@@ -577,12 +860,10 @@ CONFIG_AUTOFS4_FS=y
577CONFIG_PROC_FS=y 860CONFIG_PROC_FS=y
578CONFIG_PROC_KCORE=y 861CONFIG_PROC_KCORE=y
579CONFIG_SYSFS=y 862CONFIG_SYSFS=y
580# CONFIG_DEVFS_FS is not set
581CONFIG_DEVPTS_FS_XATTR=y
582CONFIG_DEVPTS_FS_SECURITY=y
583# CONFIG_TMPFS is not set 863# CONFIG_TMPFS is not set
584# CONFIG_HUGETLB_PAGE is not set 864# CONFIG_HUGETLB_PAGE is not set
585CONFIG_RAMFS=y 865CONFIG_RAMFS=y
866CONFIG_RELAYFS_FS=m
586 867
587# 868#
588# Miscellaneous filesystems 869# Miscellaneous filesystems
@@ -609,9 +890,8 @@ CONFIG_NFS_FS=y
609# CONFIG_NFS_V4 is not set 890# CONFIG_NFS_V4 is not set
610# CONFIG_NFS_DIRECTIO is not set 891# CONFIG_NFS_DIRECTIO is not set
611# CONFIG_NFSD is not set 892# CONFIG_NFSD is not set
612CONFIG_ROOT_NFS=y
613CONFIG_LOCKD=y 893CONFIG_LOCKD=y
614# CONFIG_EXPORTFS is not set 894CONFIG_NFS_COMMON=y
615CONFIG_SUNRPC=y 895CONFIG_SUNRPC=y
616# CONFIG_RPCSEC_GSS_KRB5 is not set 896# CONFIG_RPCSEC_GSS_KRB5 is not set
617# CONFIG_RPCSEC_GSS_SPKM3 is not set 897# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -620,6 +900,7 @@ CONFIG_SUNRPC=y
620# CONFIG_NCP_FS is not set 900# CONFIG_NCP_FS is not set
621# CONFIG_CODA_FS is not set 901# CONFIG_CODA_FS is not set
622# CONFIG_AFS_FS is not set 902# CONFIG_AFS_FS is not set
903# CONFIG_9P_FS is not set
623 904
624# 905#
625# Partition Types 906# Partition Types
@@ -640,9 +921,11 @@ CONFIG_MSDOS_PARTITION=y
640# 921#
641# Kernel hacking 922# Kernel hacking
642# 923#
924# CONFIG_PRINTK_TIME is not set
643# CONFIG_DEBUG_KERNEL is not set 925# CONFIG_DEBUG_KERNEL is not set
926CONFIG_LOG_BUF_SHIFT=14
644CONFIG_CROSSCOMPILE=y 927CONFIG_CROSSCOMPILE=y
645CONFIG_CMDLINE="" 928CONFIG_CMDLINE="mem=32M console=ttyVR0,19200"
646 929
647# 930#
648# Security options 931# Security options
@@ -656,26 +939,27 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
656# 939#
657CONFIG_CRYPTO=y 940CONFIG_CRYPTO=y
658CONFIG_CRYPTO_HMAC=y 941CONFIG_CRYPTO_HMAC=y
659CONFIG_CRYPTO_NULL=y 942CONFIG_CRYPTO_NULL=m
660# CONFIG_CRYPTO_MD4 is not set 943CONFIG_CRYPTO_MD4=m
661# CONFIG_CRYPTO_MD5 is not set 944CONFIG_CRYPTO_MD5=m
662# CONFIG_CRYPTO_SHA1 is not set 945CONFIG_CRYPTO_SHA1=m
663# CONFIG_CRYPTO_SHA256 is not set 946CONFIG_CRYPTO_SHA256=m
664CONFIG_CRYPTO_SHA512=y 947CONFIG_CRYPTO_SHA512=m
665CONFIG_CRYPTO_WP512=m 948CONFIG_CRYPTO_WP512=m
666# CONFIG_CRYPTO_DES is not set 949CONFIG_CRYPTO_TGR192=m
667# CONFIG_CRYPTO_BLOWFISH is not set 950CONFIG_CRYPTO_DES=m
668CONFIG_CRYPTO_TWOFISH=y 951CONFIG_CRYPTO_BLOWFISH=m
669# CONFIG_CRYPTO_SERPENT is not set 952CONFIG_CRYPTO_TWOFISH=m
953CONFIG_CRYPTO_SERPENT=m
670CONFIG_CRYPTO_AES=m 954CONFIG_CRYPTO_AES=m
671# CONFIG_CRYPTO_CAST5 is not set 955CONFIG_CRYPTO_CAST5=m
672# CONFIG_CRYPTO_CAST6 is not set 956CONFIG_CRYPTO_CAST6=m
673CONFIG_CRYPTO_TEA=m 957CONFIG_CRYPTO_TEA=m
674# CONFIG_CRYPTO_ARC4 is not set 958CONFIG_CRYPTO_ARC4=m
675CONFIG_CRYPTO_KHAZAD=m 959CONFIG_CRYPTO_KHAZAD=m
676CONFIG_CRYPTO_ANUBIS=m 960CONFIG_CRYPTO_ANUBIS=m
677CONFIG_CRYPTO_DEFLATE=y 961CONFIG_CRYPTO_DEFLATE=m
678CONFIG_CRYPTO_MICHAEL_MIC=y 962CONFIG_CRYPTO_MICHAEL_MIC=m
679CONFIG_CRYPTO_CRC32C=m 963CONFIG_CRYPTO_CRC32C=m
680# CONFIG_CRYPTO_TEST is not set 964# CONFIG_CRYPTO_TEST is not set
681 965
@@ -687,9 +971,8 @@ CONFIG_CRYPTO_CRC32C=m
687# Library routines 971# Library routines
688# 972#
689# CONFIG_CRC_CCITT is not set 973# CONFIG_CRC_CCITT is not set
690# CONFIG_CRC32 is not set 974CONFIG_CRC16=m
975CONFIG_CRC32=y
691CONFIG_LIBCRC32C=m 976CONFIG_LIBCRC32C=m
692CONFIG_ZLIB_INFLATE=y 977CONFIG_ZLIB_INFLATE=m
693CONFIG_ZLIB_DEFLATE=y 978CONFIG_ZLIB_DEFLATE=m
694CONFIG_GENERIC_HARDIRQS=y
695CONFIG_GENERIC_IRQ_PROBE=y
diff --git a/arch/mips/configs/ocelot_3_defconfig b/arch/mips/configs/ocelot_3_defconfig
index b4cf97a732bc..ffb23fcab862 100644
--- a/arch/mips/configs/ocelot_3_defconfig
+++ b/arch/mips/configs/ocelot_3_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:07 2005 4# Thu Oct 20 22:26:30 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,25 +11,30 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14 27CONFIG_HOTPLUG=y
29# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31CONFIG_IKCONFIG=y 29CONFIG_IKCONFIG=y
32CONFIG_IKCONFIG_PROC=y 30CONFIG_IKCONFIG_PROC=y
31CONFIG_INITRAMFS_SOURCE=""
33CONFIG_EMBEDDED=y 32CONFIG_EMBEDDED=y
34CONFIG_KALLSYMS=y 33CONFIG_KALLSYMS=y
35# CONFIG_KALLSYMS_EXTRA_PASS is not set 34# CONFIG_KALLSYMS_EXTRA_PASS is not set
35CONFIG_PRINTK=y
36CONFIG_BUG=y
37CONFIG_BASE_FULL=y
36CONFIG_FUTEX=y 38CONFIG_FUTEX=y
37CONFIG_EPOLL=y 39CONFIG_EPOLL=y
38# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 40# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -42,6 +44,7 @@ CONFIG_CC_ALIGN_LABELS=0
42CONFIG_CC_ALIGN_LOOPS=0 44CONFIG_CC_ALIGN_LOOPS=0
43CONFIG_CC_ALIGN_JUMPS=0 45CONFIG_CC_ALIGN_JUMPS=0
44# CONFIG_TINY_SHMEM is not set 46# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0
45 48
46# 49#
47# Loadable module support 50# Loadable module support
@@ -57,40 +60,68 @@ CONFIG_KMOD=y
57# 60#
58# Machine selection 61# Machine selection
59# 62#
60# CONFIG_MACH_JAZZ is not set 63# CONFIG_MIPS_MTX1 is not set
61# CONFIG_MACH_VR41XX is not set 64# CONFIG_MIPS_BOSPORUS is not set
62# CONFIG_TOSHIBA_JMR3927 is not set 65# CONFIG_MIPS_PB1000 is not set
66# CONFIG_MIPS_PB1100 is not set
67# CONFIG_MIPS_PB1500 is not set
68# CONFIG_MIPS_PB1550 is not set
69# CONFIG_MIPS_PB1200 is not set
70# CONFIG_MIPS_DB1000 is not set
71# CONFIG_MIPS_DB1100 is not set
72# CONFIG_MIPS_DB1500 is not set
73# CONFIG_MIPS_DB1550 is not set
74# CONFIG_MIPS_DB1200 is not set
75# CONFIG_MIPS_MIRAGE is not set
63# CONFIG_MIPS_COBALT is not set 76# CONFIG_MIPS_COBALT is not set
64# CONFIG_MACH_DECSTATION is not set 77# CONFIG_MACH_DECSTATION is not set
65# CONFIG_MIPS_EV64120 is not set 78# CONFIG_MIPS_EV64120 is not set
66# CONFIG_MIPS_EV96100 is not set 79# CONFIG_MIPS_EV96100 is not set
67# CONFIG_MIPS_IVR is not set 80# CONFIG_MIPS_IVR is not set
68# CONFIG_LASAT is not set
69# CONFIG_MIPS_ITE8172 is not set 81# CONFIG_MIPS_ITE8172 is not set
82# CONFIG_MACH_JAZZ is not set
83# CONFIG_LASAT is not set
70# CONFIG_MIPS_ATLAS is not set 84# CONFIG_MIPS_ATLAS is not set
71# CONFIG_MIPS_MALTA is not set 85# CONFIG_MIPS_MALTA is not set
72# CONFIG_MIPS_SEAD is not set 86# CONFIG_MIPS_SEAD is not set
87# CONFIG_MIPS_SIM is not set
88# CONFIG_MOMENCO_JAGUAR_ATX is not set
73# CONFIG_MOMENCO_OCELOT is not set 89# CONFIG_MOMENCO_OCELOT is not set
74# CONFIG_MOMENCO_OCELOT_G is not set
75# CONFIG_MOMENCO_OCELOT_C is not set
76CONFIG_MOMENCO_OCELOT_3=y 90CONFIG_MOMENCO_OCELOT_3=y
77# CONFIG_MOMENCO_JAGUAR_ATX is not set 91# CONFIG_MOMENCO_OCELOT_C is not set
78# CONFIG_PMC_YOSEMITE is not set 92# CONFIG_MOMENCO_OCELOT_G is not set
93# CONFIG_MIPS_XXS1500 is not set
94# CONFIG_PNX8550_V2PCI is not set
95# CONFIG_PNX8550_JBS is not set
79# CONFIG_DDB5074 is not set 96# CONFIG_DDB5074 is not set
80# CONFIG_DDB5476 is not set 97# CONFIG_DDB5476 is not set
81# CONFIG_DDB5477 is not set 98# CONFIG_DDB5477 is not set
82# CONFIG_NEC_OSPREY is not set 99# CONFIG_MACH_VR41XX is not set
100# CONFIG_PMC_YOSEMITE is not set
101# CONFIG_QEMU is not set
83# CONFIG_SGI_IP22 is not set 102# CONFIG_SGI_IP22 is not set
84# CONFIG_SOC_AU1X00 is not set 103# CONFIG_SGI_IP27 is not set
85# CONFIG_SIBYTE_SB1xxx_SOC is not set 104# CONFIG_SGI_IP32 is not set
105# CONFIG_SIBYTE_BIGSUR is not set
106# CONFIG_SIBYTE_SWARM is not set
107# CONFIG_SIBYTE_SENTOSA is not set
108# CONFIG_SIBYTE_RHONE is not set
109# CONFIG_SIBYTE_CARMEL is not set
110# CONFIG_SIBYTE_PTSWARM is not set
111# CONFIG_SIBYTE_LITTLESUR is not set
112# CONFIG_SIBYTE_CRHINE is not set
113# CONFIG_SIBYTE_CRHONE is not set
86# CONFIG_SNI_RM200_PCI is not set 114# CONFIG_SNI_RM200_PCI is not set
115# CONFIG_TOSHIBA_JMR3927 is not set
87# CONFIG_TOSHIBA_RBTX4927 is not set 116# CONFIG_TOSHIBA_RBTX4927 is not set
117# CONFIG_TOSHIBA_RBTX4938 is not set
88CONFIG_RWSEM_GENERIC_SPINLOCK=y 118CONFIG_RWSEM_GENERIC_SPINLOCK=y
89CONFIG_GENERIC_CALIBRATE_DELAY=y 119CONFIG_GENERIC_CALIBRATE_DELAY=y
90CONFIG_HAVE_DEC_LOCK=y
91CONFIG_DMA_NONCOHERENT=y 120CONFIG_DMA_NONCOHERENT=y
92CONFIG_DMA_NEED_PCI_MAP_STATE=y 121CONFIG_DMA_NEED_PCI_MAP_STATE=y
122CONFIG_CPU_BIG_ENDIAN=y
93# CONFIG_CPU_LITTLE_ENDIAN is not set 123# CONFIG_CPU_LITTLE_ENDIAN is not set
124CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
94CONFIG_IRQ_CPU=y 125CONFIG_IRQ_CPU=y
95CONFIG_IRQ_CPU_RM7K=y 126CONFIG_IRQ_CPU_RM7K=y
96CONFIG_IRQ_MV64340=y 127CONFIG_IRQ_MV64340=y
@@ -102,8 +133,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
102# 133#
103# CPU selection 134# CPU selection
104# 135#
105# CONFIG_CPU_MIPS32 is not set 136# CONFIG_CPU_MIPS32_R1 is not set
106# CONFIG_CPU_MIPS64 is not set 137# CONFIG_CPU_MIPS32_R2 is not set
138# CONFIG_CPU_MIPS64_R1 is not set
139# CONFIG_CPU_MIPS64_R2 is not set
107# CONFIG_CPU_R3000 is not set 140# CONFIG_CPU_R3000 is not set
108# CONFIG_CPU_TX39XX is not set 141# CONFIG_CPU_TX39XX is not set
109# CONFIG_CPU_VR41XX is not set 142# CONFIG_CPU_VR41XX is not set
@@ -119,6 +152,17 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
119# CONFIG_CPU_RM7000 is not set 152# CONFIG_CPU_RM7000 is not set
120CONFIG_CPU_RM9000=y 153CONFIG_CPU_RM9000=y
121# CONFIG_CPU_SB1 is not set 154# CONFIG_CPU_SB1 is not set
155CONFIG_SYS_HAS_CPU_RM9000=y
156CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
157CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
158CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
159CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
160
161#
162# Kernel type
163#
164CONFIG_32BIT=y
165# CONFIG_64BIT is not set
122CONFIG_PAGE_SIZE_4KB=y 166CONFIG_PAGE_SIZE_4KB=y
123# CONFIG_PAGE_SIZE_8KB is not set 167# CONFIG_PAGE_SIZE_8KB is not set
124# CONFIG_PAGE_SIZE_16KB is not set 168# CONFIG_PAGE_SIZE_16KB is not set
@@ -126,13 +170,26 @@ CONFIG_PAGE_SIZE_4KB=y
126CONFIG_BOARD_SCACHE=y 170CONFIG_BOARD_SCACHE=y
127CONFIG_RM7000_CPU_SCACHE=y 171CONFIG_RM7000_CPU_SCACHE=y
128CONFIG_CPU_HAS_PREFETCH=y 172CONFIG_CPU_HAS_PREFETCH=y
173# CONFIG_MIPS_MT is not set
129# CONFIG_64BIT_PHYS_ADDR is not set 174# CONFIG_64BIT_PHYS_ADDR is not set
130# CONFIG_CPU_ADVANCED is not set 175# CONFIG_CPU_ADVANCED is not set
131CONFIG_CPU_HAS_LLSC=y 176CONFIG_CPU_HAS_LLSC=y
132CONFIG_CPU_HAS_LLDSCD=y 177CONFIG_CPU_HAS_LLDSCD=y
133CONFIG_CPU_HAS_SYNC=y 178CONFIG_CPU_HAS_SYNC=y
134# CONFIG_HIGHMEM is not set 179CONFIG_GENERIC_HARDIRQS=y
180CONFIG_GENERIC_IRQ_PROBE=y
181CONFIG_CPU_SUPPORTS_HIGHMEM=y
182CONFIG_ARCH_FLATMEM_ENABLE=y
183CONFIG_SELECT_MEMORY_MODEL=y
184CONFIG_FLATMEM_MANUAL=y
185# CONFIG_DISCONTIGMEM_MANUAL is not set
186# CONFIG_SPARSEMEM_MANUAL is not set
187CONFIG_FLATMEM=y
188CONFIG_FLAT_NODE_MEM_MAP=y
189# CONFIG_SPARSEMEM_STATIC is not set
135# CONFIG_SMP is not set 190# CONFIG_SMP is not set
191CONFIG_PREEMPT_NONE=y
192# CONFIG_PREEMPT_VOLUNTARY is not set
136# CONFIG_PREEMPT is not set 193# CONFIG_PREEMPT is not set
137 194
138# 195#
@@ -141,7 +198,6 @@ CONFIG_CPU_HAS_SYNC=y
141CONFIG_HW_HAS_PCI=y 198CONFIG_HW_HAS_PCI=y
142CONFIG_PCI=y 199CONFIG_PCI=y
143CONFIG_PCI_LEGACY_PROC=y 200CONFIG_PCI_LEGACY_PROC=y
144CONFIG_PCI_NAMES=y
145CONFIG_MMU=y 201CONFIG_MMU=y
146 202
147# 203#
@@ -150,10 +206,6 @@ CONFIG_MMU=y
150# CONFIG_PCCARD is not set 206# CONFIG_PCCARD is not set
151 207
152# 208#
153# PC-card bridges
154#
155
156#
157# PCI Hotplug Support 209# PCI Hotplug Support
158# 210#
159# CONFIG_HOTPLUG_PCI is not set 211# CONFIG_HOTPLUG_PCI is not set
@@ -166,6 +218,110 @@ CONFIG_BINFMT_ELF=y
166CONFIG_TRAD_SIGNALS=y 218CONFIG_TRAD_SIGNALS=y
167 219
168# 220#
221# Networking
222#
223CONFIG_NET=y
224
225#
226# Networking options
227#
228CONFIG_PACKET=y
229# CONFIG_PACKET_MMAP is not set
230CONFIG_UNIX=y
231CONFIG_XFRM=y
232# CONFIG_XFRM_USER is not set
233CONFIG_NET_KEY=y
234CONFIG_INET=y
235# CONFIG_IP_MULTICAST is not set
236# CONFIG_IP_ADVANCED_ROUTER is not set
237CONFIG_IP_FIB_HASH=y
238CONFIG_IP_PNP=y
239CONFIG_IP_PNP_DHCP=y
240CONFIG_IP_PNP_BOOTP=y
241# CONFIG_IP_PNP_RARP is not set
242# CONFIG_NET_IPIP is not set
243# CONFIG_NET_IPGRE is not set
244# CONFIG_ARPD is not set
245# CONFIG_SYN_COOKIES is not set
246# CONFIG_INET_AH is not set
247# CONFIG_INET_ESP is not set
248# CONFIG_INET_IPCOMP is not set
249# CONFIG_INET_TUNNEL is not set
250CONFIG_INET_DIAG=y
251CONFIG_INET_TCP_DIAG=y
252# CONFIG_TCP_CONG_ADVANCED is not set
253CONFIG_TCP_CONG_BIC=y
254
255#
256# IP: Virtual Server Configuration
257#
258# CONFIG_IP_VS is not set
259CONFIG_IPV6=m
260# CONFIG_IPV6_PRIVACY is not set
261# CONFIG_INET6_AH is not set
262# CONFIG_INET6_ESP is not set
263# CONFIG_INET6_IPCOMP is not set
264# CONFIG_INET6_TUNNEL is not set
265# CONFIG_IPV6_TUNNEL is not set
266CONFIG_NETFILTER=y
267# CONFIG_NETFILTER_DEBUG is not set
268CONFIG_NETFILTER_NETLINK=m
269CONFIG_NETFILTER_NETLINK_QUEUE=m
270CONFIG_NETFILTER_NETLINK_LOG=m
271
272#
273# IP: Netfilter Configuration
274#
275# CONFIG_IP_NF_CONNTRACK is not set
276CONFIG_IP_NF_PPTP=m
277# CONFIG_IP_NF_QUEUE is not set
278# CONFIG_IP_NF_IPTABLES is not set
279# CONFIG_IP_NF_ARPTABLES is not set
280
281#
282# IPv6: Netfilter Configuration (EXPERIMENTAL)
283#
284# CONFIG_IP6_NF_QUEUE is not set
285# CONFIG_IP6_NF_IPTABLES is not set
286
287#
288# DCCP Configuration (EXPERIMENTAL)
289#
290# CONFIG_IP_DCCP is not set
291
292#
293# SCTP Configuration (EXPERIMENTAL)
294#
295# CONFIG_IP_SCTP is not set
296# CONFIG_ATM is not set
297# CONFIG_BRIDGE is not set
298# CONFIG_VLAN_8021Q is not set
299# CONFIG_DECNET is not set
300# CONFIG_LLC2 is not set
301# CONFIG_IPX is not set
302# CONFIG_ATALK is not set
303# CONFIG_X25 is not set
304# CONFIG_LAPB is not set
305# CONFIG_NET_DIVERT is not set
306# CONFIG_ECONET is not set
307# CONFIG_WAN_ROUTER is not set
308# CONFIG_NET_SCHED is not set
309# CONFIG_NET_CLS_ROUTE is not set
310
311#
312# Network testing
313#
314# CONFIG_NET_PKTGEN is not set
315# CONFIG_HAMRADIO is not set
316# CONFIG_IRDA is not set
317# CONFIG_BT is not set
318CONFIG_IEEE80211=m
319# CONFIG_IEEE80211_DEBUG is not set
320CONFIG_IEEE80211_CRYPT_WEP=m
321CONFIG_IEEE80211_CRYPT_CCMP=m
322CONFIG_IEEE80211_CRYPT_TKIP=m
323
324#
169# Device Drivers 325# Device Drivers
170# 326#
171 327
@@ -174,7 +330,12 @@ CONFIG_TRAD_SIGNALS=y
174# 330#
175CONFIG_STANDALONE=y 331CONFIG_STANDALONE=y
176CONFIG_PREVENT_FIRMWARE_BUILD=y 332CONFIG_PREVENT_FIRMWARE_BUILD=y
177# CONFIG_FW_LOADER is not set 333CONFIG_FW_LOADER=m
334
335#
336# Connector - unified userspace <-> kernelspace linker
337#
338CONFIG_CONNECTOR=m
178 339
179# 340#
180# Memory Technology Devices (MTD) 341# Memory Technology Devices (MTD)
@@ -193,7 +354,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
193# 354#
194# Block devices 355# Block devices
195# 356#
196# CONFIG_BLK_DEV_FD is not set
197# CONFIG_BLK_CPQ_DA is not set 357# CONFIG_BLK_CPQ_DA is not set
198# CONFIG_BLK_CPQ_CISS_DA is not set 358# CONFIG_BLK_CPQ_CISS_DA is not set
199# CONFIG_BLK_DEV_DAC960 is not set 359# CONFIG_BLK_DEV_DAC960 is not set
@@ -205,7 +365,6 @@ CONFIG_BLK_DEV_LOOP=y
205# CONFIG_BLK_DEV_SX8 is not set 365# CONFIG_BLK_DEV_SX8 is not set
206# CONFIG_BLK_DEV_RAM is not set 366# CONFIG_BLK_DEV_RAM is not set
207CONFIG_BLK_DEV_RAM_COUNT=16 367CONFIG_BLK_DEV_RAM_COUNT=16
208CONFIG_INITRAMFS_SOURCE=""
209# CONFIG_LBD is not set 368# CONFIG_LBD is not set
210# CONFIG_CDROM_PKTCDVD is not set 369# CONFIG_CDROM_PKTCDVD is not set
211 370
@@ -226,6 +385,7 @@ CONFIG_ATA_OVER_ETH=m
226# 385#
227# SCSI device support 386# SCSI device support
228# 387#
388CONFIG_RAID_ATTRS=m
229CONFIG_SCSI=m 389CONFIG_SCSI=m
230CONFIG_SCSI_PROC_FS=y 390CONFIG_SCSI_PROC_FS=y
231 391
@@ -237,6 +397,7 @@ CONFIG_SCSI_PROC_FS=y
237# CONFIG_CHR_DEV_OSST is not set 397# CONFIG_CHR_DEV_OSST is not set
238# CONFIG_BLK_DEV_SR is not set 398# CONFIG_BLK_DEV_SR is not set
239# CONFIG_CHR_DEV_SG is not set 399# CONFIG_CHR_DEV_SG is not set
400# CONFIG_CHR_DEV_SCH is not set
240 401
241# 402#
242# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 403# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
@@ -251,6 +412,7 @@ CONFIG_SCSI_PROC_FS=y
251# CONFIG_SCSI_SPI_ATTRS is not set 412# CONFIG_SCSI_SPI_ATTRS is not set
252# CONFIG_SCSI_FC_ATTRS is not set 413# CONFIG_SCSI_FC_ATTRS is not set
253# CONFIG_SCSI_ISCSI_ATTRS is not set 414# CONFIG_SCSI_ISCSI_ATTRS is not set
415CONFIG_SCSI_SAS_ATTRS=m
254 416
255# 417#
256# SCSI low-level drivers 418# SCSI low-level drivers
@@ -266,18 +428,13 @@ CONFIG_SCSI_PROC_FS=y
266# CONFIG_MEGARAID_NEWGEN is not set 428# CONFIG_MEGARAID_NEWGEN is not set
267# CONFIG_MEGARAID_LEGACY is not set 429# CONFIG_MEGARAID_LEGACY is not set
268# CONFIG_SCSI_SATA is not set 430# CONFIG_SCSI_SATA is not set
269# CONFIG_SCSI_BUSLOGIC is not set
270# CONFIG_SCSI_DMX3191D is not set 431# CONFIG_SCSI_DMX3191D is not set
271# CONFIG_SCSI_EATA is not set
272# CONFIG_SCSI_EATA_PIO is not set
273# CONFIG_SCSI_FUTURE_DOMAIN is not set 432# CONFIG_SCSI_FUTURE_DOMAIN is not set
274# CONFIG_SCSI_GDTH is not set
275# CONFIG_SCSI_IPS is not set 433# CONFIG_SCSI_IPS is not set
276# CONFIG_SCSI_INITIO is not set 434# CONFIG_SCSI_INITIO is not set
277# CONFIG_SCSI_INIA100 is not set 435# CONFIG_SCSI_INIA100 is not set
278# CONFIG_SCSI_SYM53C8XX_2 is not set 436# CONFIG_SCSI_SYM53C8XX_2 is not set
279# CONFIG_SCSI_IPR is not set 437# CONFIG_SCSI_IPR is not set
280# CONFIG_SCSI_QLOGIC_ISP is not set
281# CONFIG_SCSI_QLOGIC_FC is not set 438# CONFIG_SCSI_QLOGIC_FC is not set
282# CONFIG_SCSI_QLOGIC_1280 is not set 439# CONFIG_SCSI_QLOGIC_1280 is not set
283CONFIG_SCSI_QLA2XXX=m 440CONFIG_SCSI_QLA2XXX=m
@@ -286,6 +443,8 @@ CONFIG_SCSI_QLA2XXX=m
286# CONFIG_SCSI_QLA2300 is not set 443# CONFIG_SCSI_QLA2300 is not set
287# CONFIG_SCSI_QLA2322 is not set 444# CONFIG_SCSI_QLA2322 is not set
288# CONFIG_SCSI_QLA6312 is not set 445# CONFIG_SCSI_QLA6312 is not set
446# CONFIG_SCSI_QLA24XX is not set
447# CONFIG_SCSI_LPFC is not set
289# CONFIG_SCSI_DC395x is not set 448# CONFIG_SCSI_DC395x is not set
290# CONFIG_SCSI_DC390T is not set 449# CONFIG_SCSI_DC390T is not set
291# CONFIG_SCSI_NSP32 is not set 450# CONFIG_SCSI_NSP32 is not set
@@ -300,6 +459,8 @@ CONFIG_SCSI_QLA2XXX=m
300# Fusion MPT device support 459# Fusion MPT device support
301# 460#
302# CONFIG_FUSION is not set 461# CONFIG_FUSION is not set
462# CONFIG_FUSION_SPI is not set
463# CONFIG_FUSION_FC is not set
303 464
304# 465#
305# IEEE 1394 (FireWire) support 466# IEEE 1394 (FireWire) support
@@ -312,105 +473,13 @@ CONFIG_SCSI_QLA2XXX=m
312# CONFIG_I2O is not set 473# CONFIG_I2O is not set
313 474
314# 475#
315# Networking support 476# Network device support
316#
317CONFIG_NET=y
318
319#
320# Networking options
321#
322CONFIG_PACKET=y
323# CONFIG_PACKET_MMAP is not set
324CONFIG_NETLINK_DEV=y
325CONFIG_UNIX=y
326CONFIG_NET_KEY=y
327CONFIG_INET=y
328# CONFIG_IP_MULTICAST is not set
329# CONFIG_IP_ADVANCED_ROUTER is not set
330CONFIG_IP_PNP=y
331CONFIG_IP_PNP_DHCP=y
332CONFIG_IP_PNP_BOOTP=y
333# CONFIG_IP_PNP_RARP is not set
334# CONFIG_NET_IPIP is not set
335# CONFIG_NET_IPGRE is not set
336# CONFIG_ARPD is not set
337# CONFIG_SYN_COOKIES is not set
338# CONFIG_INET_AH is not set
339# CONFIG_INET_ESP is not set
340# CONFIG_INET_IPCOMP is not set
341# CONFIG_INET_TUNNEL is not set
342CONFIG_IP_TCPDIAG=m
343CONFIG_IP_TCPDIAG_IPV6=y
344
345#
346# IP: Virtual Server Configuration
347#
348# CONFIG_IP_VS is not set
349CONFIG_IPV6=m
350# CONFIG_IPV6_PRIVACY is not set
351# CONFIG_INET6_AH is not set
352# CONFIG_INET6_ESP is not set
353# CONFIG_INET6_IPCOMP is not set
354# CONFIG_INET6_TUNNEL is not set
355# CONFIG_IPV6_TUNNEL is not set
356CONFIG_NETFILTER=y
357# CONFIG_NETFILTER_DEBUG is not set
358
359#
360# IP: Netfilter Configuration
361#
362# CONFIG_IP_NF_CONNTRACK is not set
363# CONFIG_IP_NF_CONNTRACK_MARK is not set
364# CONFIG_IP_NF_QUEUE is not set
365# CONFIG_IP_NF_IPTABLES is not set
366# CONFIG_IP_NF_ARPTABLES is not set
367
368#
369# IPv6: Netfilter Configuration
370#
371# CONFIG_IP6_NF_QUEUE is not set
372# CONFIG_IP6_NF_IPTABLES is not set
373CONFIG_XFRM=y
374# CONFIG_XFRM_USER is not set
375
376#
377# SCTP Configuration (EXPERIMENTAL)
378#
379# CONFIG_IP_SCTP is not set
380# CONFIG_ATM is not set
381# CONFIG_BRIDGE is not set
382# CONFIG_VLAN_8021Q is not set
383# CONFIG_DECNET is not set
384# CONFIG_LLC2 is not set
385# CONFIG_IPX is not set
386# CONFIG_ATALK is not set
387# CONFIG_X25 is not set
388# CONFIG_LAPB is not set
389# CONFIG_NET_DIVERT is not set
390# CONFIG_ECONET is not set
391# CONFIG_WAN_ROUTER is not set
392
393#
394# QoS and/or fair queueing
395#
396# CONFIG_NET_SCHED is not set
397# CONFIG_NET_CLS_ROUTE is not set
398
399#
400# Network testing
401# 477#
402# CONFIG_NET_PKTGEN is not set
403# CONFIG_NETPOLL is not set
404# CONFIG_NET_POLL_CONTROLLER is not set
405# CONFIG_HAMRADIO is not set
406# CONFIG_IRDA is not set
407# CONFIG_BT is not set
408CONFIG_NETDEVICES=y 478CONFIG_NETDEVICES=y
409# CONFIG_DUMMY is not set 479# CONFIG_DUMMY is not set
410# CONFIG_BONDING is not set 480# CONFIG_BONDING is not set
411# CONFIG_EQUALIZER is not set 481# CONFIG_EQUALIZER is not set
412CONFIG_TUN=m 482CONFIG_TUN=m
413# CONFIG_ETHERTAP is not set
414 483
415# 484#
416# ARCnet devices 485# ARCnet devices
@@ -418,6 +487,21 @@ CONFIG_TUN=m
418# CONFIG_ARCNET is not set 487# CONFIG_ARCNET is not set
419 488
420# 489#
490# PHY device support
491#
492CONFIG_PHYLIB=m
493CONFIG_PHYCONTROL=y
494
495#
496# MII PHY device drivers
497#
498CONFIG_MARVELL_PHY=m
499CONFIG_DAVICOM_PHY=m
500CONFIG_QSEMI_PHY=m
501CONFIG_LXT_PHY=m
502CONFIG_CICADA_PHY=m
503
504#
421# Ethernet (10 or 100Mbit) 505# Ethernet (10 or 100Mbit)
422# 506#
423CONFIG_NET_ETHERNET=y 507CONFIG_NET_ETHERNET=y
@@ -440,7 +524,6 @@ CONFIG_NET_PCI=y
440# CONFIG_DGRS is not set 524# CONFIG_DGRS is not set
441# CONFIG_EEPRO100 is not set 525# CONFIG_EEPRO100 is not set
442CONFIG_E100=y 526CONFIG_E100=y
443# CONFIG_E100_NAPI is not set
444# CONFIG_FEALNX is not set 527# CONFIG_FEALNX is not set
445# CONFIG_NATSEMI is not set 528# CONFIG_NATSEMI is not set
446# CONFIG_NE2K_PCI is not set 529# CONFIG_NE2K_PCI is not set
@@ -463,9 +546,12 @@ CONFIG_E100=y
463# CONFIG_HAMACHI is not set 546# CONFIG_HAMACHI is not set
464# CONFIG_YELLOWFIN is not set 547# CONFIG_YELLOWFIN is not set
465# CONFIG_R8169 is not set 548# CONFIG_R8169 is not set
549# CONFIG_SIS190 is not set
550# CONFIG_SKGE is not set
466# CONFIG_SK98LIN is not set 551# CONFIG_SK98LIN is not set
467# CONFIG_VIA_VELOCITY is not set 552# CONFIG_VIA_VELOCITY is not set
468# CONFIG_TIGON3 is not set 553# CONFIG_TIGON3 is not set
554# CONFIG_BNX2 is not set
469CONFIG_MV643XX_ETH=y 555CONFIG_MV643XX_ETH=y
470CONFIG_MV643XX_ETH_0=y 556CONFIG_MV643XX_ETH_0=y
471CONFIG_MV643XX_ETH_1=y 557CONFIG_MV643XX_ETH_1=y
@@ -474,6 +560,7 @@ CONFIG_MV643XX_ETH_2=y
474# 560#
475# Ethernet (10000 Mbit) 561# Ethernet (10000 Mbit)
476# 562#
563# CONFIG_CHELSIO_T1 is not set
477# CONFIG_IXGB is not set 564# CONFIG_IXGB is not set
478# CONFIG_S2IO is not set 565# CONFIG_S2IO is not set
479 566
@@ -486,6 +573,8 @@ CONFIG_MV643XX_ETH_2=y
486# Wireless LAN (non-hamradio) 573# Wireless LAN (non-hamradio)
487# 574#
488# CONFIG_NET_RADIO is not set 575# CONFIG_NET_RADIO is not set
576# CONFIG_IPW_DEBUG is not set
577CONFIG_IPW2200=m
489 578
490# 579#
491# Wan interfaces 580# Wan interfaces
@@ -505,6 +594,8 @@ CONFIG_PPPOE=m
505# CONFIG_NET_FC is not set 594# CONFIG_NET_FC is not set
506# CONFIG_SHAPER is not set 595# CONFIG_SHAPER is not set
507# CONFIG_NETCONSOLE is not set 596# CONFIG_NETCONSOLE is not set
597# CONFIG_NETPOLL is not set
598# CONFIG_NET_POLL_CONTROLLER is not set
508 599
509# 600#
510# ISDN subsystem 601# ISDN subsystem
@@ -531,19 +622,6 @@ CONFIG_INPUT=y
531# CONFIG_INPUT_EVBUG is not set 622# CONFIG_INPUT_EVBUG is not set
532 623
533# 624#
534# Input I/O drivers
535#
536# CONFIG_GAMEPORT is not set
537CONFIG_SOUND_GAMEPORT=y
538CONFIG_SERIO=y
539# CONFIG_SERIO_I8042 is not set
540# CONFIG_SERIO_SERPORT is not set
541# CONFIG_SERIO_CT82C710 is not set
542# CONFIG_SERIO_PCIPS2 is not set
543# CONFIG_SERIO_LIBPS2 is not set
544# CONFIG_SERIO_RAW is not set
545
546#
547# Input Device Drivers 625# Input Device Drivers
548# 626#
549# CONFIG_INPUT_KEYBOARD is not set 627# CONFIG_INPUT_KEYBOARD is not set
@@ -553,6 +631,17 @@ CONFIG_SERIO=y
553# CONFIG_INPUT_MISC is not set 631# CONFIG_INPUT_MISC is not set
554 632
555# 633#
634# Hardware I/O ports
635#
636CONFIG_SERIO=y
637# CONFIG_SERIO_I8042 is not set
638# CONFIG_SERIO_SERPORT is not set
639# CONFIG_SERIO_PCIPS2 is not set
640# CONFIG_SERIO_LIBPS2 is not set
641# CONFIG_SERIO_RAW is not set
642# CONFIG_GAMEPORT is not set
643
644#
556# Character devices 645# Character devices
557# 646#
558CONFIG_VT=y 647CONFIG_VT=y
@@ -573,6 +662,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4
573# 662#
574CONFIG_SERIAL_CORE=y 663CONFIG_SERIAL_CORE=y
575CONFIG_SERIAL_CORE_CONSOLE=y 664CONFIG_SERIAL_CORE_CONSOLE=y
665# CONFIG_SERIAL_JSM is not set
576CONFIG_UNIX98_PTYS=y 666CONFIG_UNIX98_PTYS=y
577CONFIG_LEGACY_PTYS=y 667CONFIG_LEGACY_PTYS=y
578CONFIG_LEGACY_PTY_COUNT=256 668CONFIG_LEGACY_PTY_COUNT=256
@@ -598,6 +688,11 @@ CONFIG_RTC=y
598# CONFIG_RAW_DRIVER is not set 688# CONFIG_RAW_DRIVER is not set
599 689
600# 690#
691# TPM devices
692#
693# CONFIG_TCG_TPM is not set
694
695#
601# I2C support 696# I2C support
602# 697#
603# CONFIG_I2C is not set 698# CONFIG_I2C is not set
@@ -608,10 +703,20 @@ CONFIG_RTC=y
608# CONFIG_W1 is not set 703# CONFIG_W1 is not set
609 704
610# 705#
706# Hardware Monitoring support
707#
708# CONFIG_HWMON is not set
709# CONFIG_HWMON_VID is not set
710
711#
611# Misc devices 712# Misc devices
612# 713#
613 714
614# 715#
716# Multimedia Capabilities Port drivers
717#
718
719#
615# Multimedia devices 720# Multimedia devices
616# 721#
617# CONFIG_VIDEO_DEV is not set 722# CONFIG_VIDEO_DEV is not set
@@ -625,6 +730,11 @@ CONFIG_RTC=y
625# Graphics support 730# Graphics support
626# 731#
627CONFIG_FB=y 732CONFIG_FB=y
733# CONFIG_FB_CFB_FILLRECT is not set
734# CONFIG_FB_CFB_COPYAREA is not set
735# CONFIG_FB_CFB_IMAGEBLIT is not set
736# CONFIG_FB_SOFT_CURSOR is not set
737# CONFIG_FB_MACMODES is not set
628CONFIG_FB_MODE_HELPERS=y 738CONFIG_FB_MODE_HELPERS=y
629# CONFIG_FB_TILEBLITTING is not set 739# CONFIG_FB_TILEBLITTING is not set
630# CONFIG_FB_CIRRUS is not set 740# CONFIG_FB_CIRRUS is not set
@@ -632,6 +742,7 @@ CONFIG_FB_MODE_HELPERS=y
632# CONFIG_FB_CYBER2000 is not set 742# CONFIG_FB_CYBER2000 is not set
633# CONFIG_FB_ASILIANT is not set 743# CONFIG_FB_ASILIANT is not set
634# CONFIG_FB_IMSTT is not set 744# CONFIG_FB_IMSTT is not set
745# CONFIG_FB_NVIDIA is not set
635# CONFIG_FB_RIVA is not set 746# CONFIG_FB_RIVA is not set
636# CONFIG_FB_MATROX is not set 747# CONFIG_FB_MATROX is not set
637# CONFIG_FB_RADEON_OLD is not set 748# CONFIG_FB_RADEON_OLD is not set
@@ -644,8 +755,11 @@ CONFIG_FB_MODE_HELPERS=y
644# CONFIG_FB_KYRO is not set 755# CONFIG_FB_KYRO is not set
645# CONFIG_FB_3DFX is not set 756# CONFIG_FB_3DFX is not set
646# CONFIG_FB_VOODOO1 is not set 757# CONFIG_FB_VOODOO1 is not set
758# CONFIG_FB_SMIVGX is not set
759# CONFIG_FB_CYBLA is not set
647# CONFIG_FB_TRIDENT is not set 760# CONFIG_FB_TRIDENT is not set
648# CONFIG_FB_E1356 is not set 761# CONFIG_FB_E1356 is not set
762# CONFIG_FB_S1D13XXX is not set
649# CONFIG_FB_VIRTUAL is not set 763# CONFIG_FB_VIRTUAL is not set
650 764
651# 765#
@@ -675,13 +789,9 @@ CONFIG_LOGO_LINUX_CLUT224=y
675# 789#
676# USB support 790# USB support
677# 791#
678# CONFIG_USB is not set
679CONFIG_USB_ARCH_HAS_HCD=y 792CONFIG_USB_ARCH_HAS_HCD=y
680CONFIG_USB_ARCH_HAS_OHCI=y 793CONFIG_USB_ARCH_HAS_OHCI=y
681 794# CONFIG_USB is not set
682#
683# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
684#
685 795
686# 796#
687# USB Gadget Support 797# USB Gadget Support
@@ -699,10 +809,15 @@ CONFIG_USB_ARCH_HAS_OHCI=y
699# CONFIG_INFINIBAND is not set 809# CONFIG_INFINIBAND is not set
700 810
701# 811#
812# SN Devices
813#
814
815#
702# File systems 816# File systems
703# 817#
704CONFIG_EXT2_FS=y 818CONFIG_EXT2_FS=y
705# CONFIG_EXT2_FS_XATTR is not set 819# CONFIG_EXT2_FS_XATTR is not set
820# CONFIG_EXT2_FS_XIP is not set
706CONFIG_EXT3_FS=m 821CONFIG_EXT3_FS=m
707CONFIG_EXT3_FS_XATTR=y 822CONFIG_EXT3_FS_XATTR=y
708# CONFIG_EXT3_FS_POSIX_ACL is not set 823# CONFIG_EXT3_FS_POSIX_ACL is not set
@@ -715,17 +830,21 @@ CONFIG_REISERFS_FS=m
715# CONFIG_REISERFS_PROC_INFO is not set 830# CONFIG_REISERFS_PROC_INFO is not set
716# CONFIG_REISERFS_FS_XATTR is not set 831# CONFIG_REISERFS_FS_XATTR is not set
717# CONFIG_JFS_FS is not set 832# CONFIG_JFS_FS is not set
833# CONFIG_FS_POSIX_ACL is not set
718CONFIG_XFS_FS=m 834CONFIG_XFS_FS=m
719# CONFIG_XFS_RT is not set 835CONFIG_XFS_EXPORT=y
720# CONFIG_XFS_QUOTA is not set 836# CONFIG_XFS_QUOTA is not set
721# CONFIG_XFS_SECURITY is not set 837# CONFIG_XFS_SECURITY is not set
722# CONFIG_XFS_POSIX_ACL is not set 838# CONFIG_XFS_POSIX_ACL is not set
839# CONFIG_XFS_RT is not set
723# CONFIG_MINIX_FS is not set 840# CONFIG_MINIX_FS is not set
724# CONFIG_ROMFS_FS is not set 841# CONFIG_ROMFS_FS is not set
842CONFIG_INOTIFY=y
725# CONFIG_QUOTA is not set 843# CONFIG_QUOTA is not set
726CONFIG_DNOTIFY=y 844CONFIG_DNOTIFY=y
727CONFIG_AUTOFS_FS=y 845CONFIG_AUTOFS_FS=y
728CONFIG_AUTOFS4_FS=m 846CONFIG_AUTOFS4_FS=m
847CONFIG_FUSE_FS=m
729 848
730# 849#
731# CD-ROM/DVD Filesystems 850# CD-ROM/DVD Filesystems
@@ -746,15 +865,10 @@ CONFIG_AUTOFS4_FS=m
746CONFIG_PROC_FS=y 865CONFIG_PROC_FS=y
747CONFIG_PROC_KCORE=y 866CONFIG_PROC_KCORE=y
748CONFIG_SYSFS=y 867CONFIG_SYSFS=y
749CONFIG_DEVFS_FS=y
750CONFIG_DEVFS_MOUNT=y
751# CONFIG_DEVFS_DEBUG is not set
752CONFIG_DEVPTS_FS_XATTR=y
753CONFIG_DEVPTS_FS_SECURITY=y
754CONFIG_TMPFS=y 868CONFIG_TMPFS=y
755# CONFIG_TMPFS_XATTR is not set
756# CONFIG_HUGETLB_PAGE is not set 869# CONFIG_HUGETLB_PAGE is not set
757CONFIG_RAMFS=y 870CONFIG_RAMFS=y
871CONFIG_RELAYFS_FS=m
758 872
759# 873#
760# Miscellaneous filesystems 874# Miscellaneous filesystems
@@ -778,16 +892,19 @@ CONFIG_CRAMFS=y
778# 892#
779CONFIG_NFS_FS=y 893CONFIG_NFS_FS=y
780CONFIG_NFS_V3=y 894CONFIG_NFS_V3=y
895# CONFIG_NFS_V3_ACL is not set
781# CONFIG_NFS_V4 is not set 896# CONFIG_NFS_V4 is not set
782# CONFIG_NFS_DIRECTIO is not set 897# CONFIG_NFS_DIRECTIO is not set
783CONFIG_NFSD=y 898CONFIG_NFSD=y
784CONFIG_NFSD_V3=y 899CONFIG_NFSD_V3=y
900# CONFIG_NFSD_V3_ACL is not set
785# CONFIG_NFSD_V4 is not set 901# CONFIG_NFSD_V4 is not set
786# CONFIG_NFSD_TCP is not set 902# CONFIG_NFSD_TCP is not set
787CONFIG_ROOT_NFS=y 903CONFIG_ROOT_NFS=y
788CONFIG_LOCKD=y 904CONFIG_LOCKD=y
789CONFIG_LOCKD_V4=y 905CONFIG_LOCKD_V4=y
790CONFIG_EXPORTFS=y 906CONFIG_EXPORTFS=y
907CONFIG_NFS_COMMON=y
791CONFIG_SUNRPC=y 908CONFIG_SUNRPC=y
792# CONFIG_RPCSEC_GSS_KRB5 is not set 909# CONFIG_RPCSEC_GSS_KRB5 is not set
793# CONFIG_RPCSEC_GSS_SPKM3 is not set 910# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -797,6 +914,7 @@ CONFIG_SMB_FS=m
797# CONFIG_NCP_FS is not set 914# CONFIG_NCP_FS is not set
798# CONFIG_CODA_FS is not set 915# CONFIG_CODA_FS is not set
799# CONFIG_AFS_FS is not set 916# CONFIG_AFS_FS is not set
917# CONFIG_9P_FS is not set
800 918
801# 919#
802# Partition Types 920# Partition Types
@@ -856,7 +974,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
856# 974#
857# Kernel hacking 975# Kernel hacking
858# 976#
977# CONFIG_PRINTK_TIME is not set
859# CONFIG_DEBUG_KERNEL is not set 978# CONFIG_DEBUG_KERNEL is not set
979CONFIG_LOG_BUF_SHIFT=14
860CONFIG_CROSSCOMPILE=y 980CONFIG_CROSSCOMPILE=y
861CONFIG_CMDLINE="ip=any root=nfs" 981CONFIG_CMDLINE="ip=any root=nfs"
862 982
@@ -869,7 +989,31 @@ CONFIG_CMDLINE="ip=any root=nfs"
869# 989#
870# Cryptographic options 990# Cryptographic options
871# 991#
872# CONFIG_CRYPTO is not set 992CONFIG_CRYPTO=y
993CONFIG_CRYPTO_HMAC=y
994CONFIG_CRYPTO_NULL=m
995CONFIG_CRYPTO_MD4=m
996CONFIG_CRYPTO_MD5=m
997CONFIG_CRYPTO_SHA1=m
998CONFIG_CRYPTO_SHA256=m
999CONFIG_CRYPTO_SHA512=m
1000CONFIG_CRYPTO_WP512=m
1001CONFIG_CRYPTO_TGR192=m
1002CONFIG_CRYPTO_DES=m
1003CONFIG_CRYPTO_BLOWFISH=m
1004CONFIG_CRYPTO_TWOFISH=m
1005CONFIG_CRYPTO_SERPENT=m
1006CONFIG_CRYPTO_AES=m
1007CONFIG_CRYPTO_CAST5=m
1008CONFIG_CRYPTO_CAST6=m
1009CONFIG_CRYPTO_TEA=m
1010CONFIG_CRYPTO_ARC4=m
1011CONFIG_CRYPTO_KHAZAD=m
1012CONFIG_CRYPTO_ANUBIS=m
1013CONFIG_CRYPTO_DEFLATE=m
1014CONFIG_CRYPTO_MICHAEL_MIC=m
1015CONFIG_CRYPTO_CRC32C=m
1016# CONFIG_CRYPTO_TEST is not set
873 1017
874# 1018#
875# Hardware crypto devices 1019# Hardware crypto devices
@@ -879,9 +1023,8 @@ CONFIG_CMDLINE="ip=any root=nfs"
879# Library routines 1023# Library routines
880# 1024#
881CONFIG_CRC_CCITT=m 1025CONFIG_CRC_CCITT=m
1026CONFIG_CRC16=m
882CONFIG_CRC32=y 1027CONFIG_CRC32=y
883CONFIG_LIBCRC32C=m 1028CONFIG_LIBCRC32C=m
884CONFIG_ZLIB_INFLATE=y 1029CONFIG_ZLIB_INFLATE=y
885CONFIG_ZLIB_DEFLATE=m 1030CONFIG_ZLIB_DEFLATE=m
886CONFIG_GENERIC_HARDIRQS=y
887CONFIG_GENERIC_IRQ_PROBE=y
diff --git a/arch/mips/configs/ocelot_c_defconfig b/arch/mips/configs/ocelot_c_defconfig
index a38903db85a0..d3a5fee02b79 100644
--- a/arch/mips/configs/ocelot_c_defconfig
+++ b/arch/mips/configs/ocelot_c_defconfig
@@ -1,11 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:07 2005 4# Thu Oct 20 22:26:33 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7CONFIG_64BIT=y
8CONFIG_64BIT=y
9 7
10# 8#
11# Code maturity level options 9# Code maturity level options
@@ -13,24 +11,29 @@ CONFIG_64BIT=y
13CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
14CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
15CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
16 15
17# 16#
18# General setup 17# General setup
19# 18#
20CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
21CONFIG_SWAP=y 21CONFIG_SWAP=y
22CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
23# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
24# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
25CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
26# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
27CONFIG_LOG_BUF_SHIFT=14 27CONFIG_HOTPLUG=y
28# CONFIG_HOTPLUG is not set
29CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
30# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
31CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
32CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
33# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
34CONFIG_FUTEX=y 37CONFIG_FUTEX=y
35CONFIG_EPOLL=y 38CONFIG_EPOLL=y
36# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -40,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
40CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
41CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
42# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
43 47
44# 48#
45# Loadable module support 49# Loadable module support
@@ -49,39 +53,68 @@ CONFIG_CC_ALIGN_JUMPS=0
49# 53#
50# Machine selection 54# Machine selection
51# 55#
52# CONFIG_MACH_JAZZ is not set 56# CONFIG_MIPS_MTX1 is not set
53# CONFIG_MACH_VR41XX is not set 57# CONFIG_MIPS_BOSPORUS is not set
58# CONFIG_MIPS_PB1000 is not set
59# CONFIG_MIPS_PB1100 is not set
60# CONFIG_MIPS_PB1500 is not set
61# CONFIG_MIPS_PB1550 is not set
62# CONFIG_MIPS_PB1200 is not set
63# CONFIG_MIPS_DB1000 is not set
64# CONFIG_MIPS_DB1100 is not set
65# CONFIG_MIPS_DB1500 is not set
66# CONFIG_MIPS_DB1550 is not set
67# CONFIG_MIPS_DB1200 is not set
68# CONFIG_MIPS_MIRAGE is not set
54# CONFIG_MIPS_COBALT is not set 69# CONFIG_MIPS_COBALT is not set
55# CONFIG_MACH_DECSTATION is not set 70# CONFIG_MACH_DECSTATION is not set
56# CONFIG_MIPS_EV64120 is not set 71# CONFIG_MIPS_EV64120 is not set
57# CONFIG_MIPS_EV96100 is not set 72# CONFIG_MIPS_EV96100 is not set
58# CONFIG_MIPS_IVR is not set 73# CONFIG_MIPS_IVR is not set
59# CONFIG_LASAT is not set
60# CONFIG_MIPS_ITE8172 is not set 74# CONFIG_MIPS_ITE8172 is not set
75# CONFIG_MACH_JAZZ is not set
76# CONFIG_LASAT is not set
61# CONFIG_MIPS_ATLAS is not set 77# CONFIG_MIPS_ATLAS is not set
62# CONFIG_MIPS_MALTA is not set 78# CONFIG_MIPS_MALTA is not set
63# CONFIG_MIPS_SEAD is not set 79# CONFIG_MIPS_SEAD is not set
80# CONFIG_MIPS_SIM is not set
81# CONFIG_MOMENCO_JAGUAR_ATX is not set
64# CONFIG_MOMENCO_OCELOT is not set 82# CONFIG_MOMENCO_OCELOT is not set
65# CONFIG_MOMENCO_OCELOT_G is not set
66CONFIG_MOMENCO_OCELOT_C=y
67# CONFIG_MOMENCO_OCELOT_3 is not set 83# CONFIG_MOMENCO_OCELOT_3 is not set
68# CONFIG_MOMENCO_JAGUAR_ATX is not set 84CONFIG_MOMENCO_OCELOT_C=y
69# CONFIG_PMC_YOSEMITE is not set 85# CONFIG_MOMENCO_OCELOT_G is not set
86# CONFIG_MIPS_XXS1500 is not set
87# CONFIG_PNX8550_V2PCI is not set
88# CONFIG_PNX8550_JBS is not set
70# CONFIG_DDB5074 is not set 89# CONFIG_DDB5074 is not set
71# CONFIG_DDB5476 is not set 90# CONFIG_DDB5476 is not set
72# CONFIG_DDB5477 is not set 91# CONFIG_DDB5477 is not set
73# CONFIG_NEC_OSPREY is not set 92# CONFIG_MACH_VR41XX is not set
93# CONFIG_PMC_YOSEMITE is not set
94# CONFIG_QEMU is not set
74# CONFIG_SGI_IP22 is not set 95# CONFIG_SGI_IP22 is not set
75# CONFIG_SGI_IP27 is not set 96# CONFIG_SGI_IP27 is not set
76# CONFIG_SGI_IP32 is not set 97# CONFIG_SGI_IP32 is not set
77# CONFIG_SIBYTE_SB1xxx_SOC is not set 98# CONFIG_SIBYTE_BIGSUR is not set
99# CONFIG_SIBYTE_SWARM is not set
100# CONFIG_SIBYTE_SENTOSA is not set
101# CONFIG_SIBYTE_RHONE is not set
102# CONFIG_SIBYTE_CARMEL is not set
103# CONFIG_SIBYTE_PTSWARM is not set
104# CONFIG_SIBYTE_LITTLESUR is not set
105# CONFIG_SIBYTE_CRHINE is not set
106# CONFIG_SIBYTE_CRHONE is not set
78# CONFIG_SNI_RM200_PCI is not set 107# CONFIG_SNI_RM200_PCI is not set
108# CONFIG_TOSHIBA_JMR3927 is not set
109# CONFIG_TOSHIBA_RBTX4927 is not set
110# CONFIG_TOSHIBA_RBTX4938 is not set
79CONFIG_RWSEM_GENERIC_SPINLOCK=y 111CONFIG_RWSEM_GENERIC_SPINLOCK=y
80CONFIG_GENERIC_CALIBRATE_DELAY=y 112CONFIG_GENERIC_CALIBRATE_DELAY=y
81CONFIG_HAVE_DEC_LOCK=y
82CONFIG_DMA_NONCOHERENT=y 113CONFIG_DMA_NONCOHERENT=y
83CONFIG_DMA_NEED_PCI_MAP_STATE=y 114CONFIG_DMA_NEED_PCI_MAP_STATE=y
115CONFIG_CPU_BIG_ENDIAN=y
84# CONFIG_CPU_LITTLE_ENDIAN is not set 116# CONFIG_CPU_LITTLE_ENDIAN is not set
117CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
85CONFIG_IRQ_CPU=y 118CONFIG_IRQ_CPU=y
86CONFIG_IRQ_MV64340=y 119CONFIG_IRQ_MV64340=y
87CONFIG_PCI_MARVELL=y 120CONFIG_PCI_MARVELL=y
@@ -91,8 +124,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
91# 124#
92# CPU selection 125# CPU selection
93# 126#
94# CONFIG_CPU_MIPS32 is not set 127# CONFIG_CPU_MIPS32_R1 is not set
95# CONFIG_CPU_MIPS64 is not set 128# CONFIG_CPU_MIPS32_R2 is not set
129# CONFIG_CPU_MIPS64_R1 is not set
130# CONFIG_CPU_MIPS64_R2 is not set
96# CONFIG_CPU_R3000 is not set 131# CONFIG_CPU_R3000 is not set
97# CONFIG_CPU_TX39XX is not set 132# CONFIG_CPU_TX39XX is not set
98# CONFIG_CPU_VR41XX is not set 133# CONFIG_CPU_VR41XX is not set
@@ -108,6 +143,17 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
108CONFIG_CPU_RM7000=y 143CONFIG_CPU_RM7000=y
109# CONFIG_CPU_RM9000 is not set 144# CONFIG_CPU_RM9000 is not set
110# CONFIG_CPU_SB1 is not set 145# CONFIG_CPU_SB1 is not set
146CONFIG_SYS_HAS_CPU_RM7000=y
147CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
148CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
149CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
150CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
151
152#
153# Kernel type
154#
155# CONFIG_32BIT is not set
156CONFIG_64BIT=y
111CONFIG_PAGE_SIZE_4KB=y 157CONFIG_PAGE_SIZE_4KB=y
112# CONFIG_PAGE_SIZE_8KB is not set 158# CONFIG_PAGE_SIZE_8KB is not set
113# CONFIG_PAGE_SIZE_16KB is not set 159# CONFIG_PAGE_SIZE_16KB is not set
@@ -115,9 +161,23 @@ CONFIG_PAGE_SIZE_4KB=y
115CONFIG_BOARD_SCACHE=y 161CONFIG_BOARD_SCACHE=y
116CONFIG_RM7000_CPU_SCACHE=y 162CONFIG_RM7000_CPU_SCACHE=y
117CONFIG_CPU_HAS_PREFETCH=y 163CONFIG_CPU_HAS_PREFETCH=y
164# CONFIG_MIPS_MT is not set
118CONFIG_CPU_HAS_LLSC=y 165CONFIG_CPU_HAS_LLSC=y
119CONFIG_CPU_HAS_LLDSCD=y 166CONFIG_CPU_HAS_LLDSCD=y
120CONFIG_CPU_HAS_SYNC=y 167CONFIG_CPU_HAS_SYNC=y
168CONFIG_GENERIC_HARDIRQS=y
169CONFIG_GENERIC_IRQ_PROBE=y
170CONFIG_CPU_SUPPORTS_HIGHMEM=y
171CONFIG_ARCH_FLATMEM_ENABLE=y
172CONFIG_SELECT_MEMORY_MODEL=y
173CONFIG_FLATMEM_MANUAL=y
174# CONFIG_DISCONTIGMEM_MANUAL is not set
175# CONFIG_SPARSEMEM_MANUAL is not set
176CONFIG_FLATMEM=y
177CONFIG_FLAT_NODE_MEM_MAP=y
178# CONFIG_SPARSEMEM_STATIC is not set
179CONFIG_PREEMPT_NONE=y
180# CONFIG_PREEMPT_VOLUNTARY is not set
121# CONFIG_PREEMPT is not set 181# CONFIG_PREEMPT is not set
122 182
123# 183#
@@ -126,7 +186,6 @@ CONFIG_CPU_HAS_SYNC=y
126CONFIG_HW_HAS_PCI=y 186CONFIG_HW_HAS_PCI=y
127CONFIG_PCI=y 187CONFIG_PCI=y
128CONFIG_PCI_LEGACY_PROC=y 188CONFIG_PCI_LEGACY_PROC=y
129CONFIG_PCI_NAMES=y
130CONFIG_MMU=y 189CONFIG_MMU=y
131 190
132# 191#
@@ -135,10 +194,6 @@ CONFIG_MMU=y
135# CONFIG_PCCARD is not set 194# CONFIG_PCCARD is not set
136 195
137# 196#
138# PC-card bridges
139#
140
141#
142# PCI Hotplug Support 197# PCI Hotplug Support
143# 198#
144# CONFIG_HOTPLUG_PCI is not set 199# CONFIG_HOTPLUG_PCI is not set
@@ -156,6 +211,79 @@ CONFIG_MIPS32_N32=y
156CONFIG_BINFMT_ELF32=y 211CONFIG_BINFMT_ELF32=y
157 212
158# 213#
214# Networking
215#
216CONFIG_NET=y
217
218#
219# Networking options
220#
221# CONFIG_PACKET is not set
222CONFIG_UNIX=y
223CONFIG_XFRM=y
224CONFIG_XFRM_USER=y
225CONFIG_NET_KEY=y
226CONFIG_INET=y
227# CONFIG_IP_MULTICAST is not set
228# CONFIG_IP_ADVANCED_ROUTER is not set
229CONFIG_IP_FIB_HASH=y
230CONFIG_IP_PNP=y
231CONFIG_IP_PNP_DHCP=y
232# CONFIG_IP_PNP_BOOTP is not set
233# CONFIG_IP_PNP_RARP is not set
234# CONFIG_NET_IPIP is not set
235# CONFIG_NET_IPGRE is not set
236# CONFIG_ARPD is not set
237# CONFIG_SYN_COOKIES is not set
238# CONFIG_INET_AH is not set
239# CONFIG_INET_ESP is not set
240# CONFIG_INET_IPCOMP is not set
241CONFIG_INET_TUNNEL=y
242CONFIG_INET_DIAG=y
243CONFIG_INET_TCP_DIAG=y
244# CONFIG_TCP_CONG_ADVANCED is not set
245CONFIG_TCP_CONG_BIC=y
246# CONFIG_IPV6 is not set
247# CONFIG_NETFILTER is not set
248
249#
250# DCCP Configuration (EXPERIMENTAL)
251#
252# CONFIG_IP_DCCP is not set
253
254#
255# SCTP Configuration (EXPERIMENTAL)
256#
257# CONFIG_IP_SCTP is not set
258# CONFIG_ATM is not set
259# CONFIG_BRIDGE is not set
260# CONFIG_VLAN_8021Q is not set
261# CONFIG_DECNET is not set
262# CONFIG_LLC2 is not set
263# CONFIG_IPX is not set
264# CONFIG_ATALK is not set
265# CONFIG_X25 is not set
266# CONFIG_LAPB is not set
267# CONFIG_NET_DIVERT is not set
268# CONFIG_ECONET is not set
269# CONFIG_WAN_ROUTER is not set
270# CONFIG_NET_SCHED is not set
271# CONFIG_NET_CLS_ROUTE is not set
272
273#
274# Network testing
275#
276# CONFIG_NET_PKTGEN is not set
277# CONFIG_HAMRADIO is not set
278# CONFIG_IRDA is not set
279# CONFIG_BT is not set
280CONFIG_IEEE80211=y
281# CONFIG_IEEE80211_DEBUG is not set
282CONFIG_IEEE80211_CRYPT_WEP=y
283CONFIG_IEEE80211_CRYPT_CCMP=y
284CONFIG_IEEE80211_CRYPT_TKIP=y
285
286#
159# Device Drivers 287# Device Drivers
160# 288#
161 289
@@ -164,7 +292,12 @@ CONFIG_BINFMT_ELF32=y
164# 292#
165CONFIG_STANDALONE=y 293CONFIG_STANDALONE=y
166CONFIG_PREVENT_FIRMWARE_BUILD=y 294CONFIG_PREVENT_FIRMWARE_BUILD=y
167# CONFIG_FW_LOADER is not set 295CONFIG_FW_LOADER=y
296
297#
298# Connector - unified userspace <-> kernelspace linker
299#
300CONFIG_CONNECTOR=y
168 301
169# 302#
170# Memory Technology Devices (MTD) 303# Memory Technology Devices (MTD)
@@ -183,7 +316,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
183# 316#
184# Block devices 317# Block devices
185# 318#
186# CONFIG_BLK_DEV_FD is not set
187# CONFIG_BLK_CPQ_DA is not set 319# CONFIG_BLK_CPQ_DA is not set
188# CONFIG_BLK_CPQ_CISS_DA is not set 320# CONFIG_BLK_CPQ_CISS_DA is not set
189# CONFIG_BLK_DEV_DAC960 is not set 321# CONFIG_BLK_DEV_DAC960 is not set
@@ -194,7 +326,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
194# CONFIG_BLK_DEV_SX8 is not set 326# CONFIG_BLK_DEV_SX8 is not set
195# CONFIG_BLK_DEV_RAM is not set 327# CONFIG_BLK_DEV_RAM is not set
196CONFIG_BLK_DEV_RAM_COUNT=16 328CONFIG_BLK_DEV_RAM_COUNT=16
197CONFIG_INITRAMFS_SOURCE=""
198CONFIG_CDROM_PKTCDVD=y 329CONFIG_CDROM_PKTCDVD=y
199CONFIG_CDROM_PKTCDVD_BUFFERS=8 330CONFIG_CDROM_PKTCDVD_BUFFERS=8
200# CONFIG_CDROM_PKTCDVD_WCACHE is not set 331# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -216,6 +347,7 @@ CONFIG_ATA_OVER_ETH=y
216# 347#
217# SCSI device support 348# SCSI device support
218# 349#
350CONFIG_RAID_ATTRS=y
219# CONFIG_SCSI is not set 351# CONFIG_SCSI is not set
220 352
221# 353#
@@ -226,6 +358,7 @@ CONFIG_ATA_OVER_ETH=y
226# 358#
227# Fusion MPT device support 359# Fusion MPT device support
228# 360#
361# CONFIG_FUSION is not set
229 362
230# 363#
231# IEEE 1394 (FireWire) support 364# IEEE 1394 (FireWire) support
@@ -238,77 +371,13 @@ CONFIG_ATA_OVER_ETH=y
238# CONFIG_I2O is not set 371# CONFIG_I2O is not set
239 372
240# 373#
241# Networking support 374# Network device support
242#
243CONFIG_NET=y
244
245#
246# Networking options
247#
248# CONFIG_PACKET is not set
249CONFIG_NETLINK_DEV=y
250CONFIG_UNIX=y
251CONFIG_NET_KEY=y
252CONFIG_INET=y
253# CONFIG_IP_MULTICAST is not set
254# CONFIG_IP_ADVANCED_ROUTER is not set
255CONFIG_IP_PNP=y
256CONFIG_IP_PNP_DHCP=y
257# CONFIG_IP_PNP_BOOTP is not set
258# CONFIG_IP_PNP_RARP is not set
259# CONFIG_NET_IPIP is not set
260# CONFIG_NET_IPGRE is not set
261# CONFIG_ARPD is not set
262# CONFIG_SYN_COOKIES is not set
263# CONFIG_INET_AH is not set
264# CONFIG_INET_ESP is not set
265# CONFIG_INET_IPCOMP is not set
266CONFIG_INET_TUNNEL=y
267CONFIG_IP_TCPDIAG=y
268# CONFIG_IP_TCPDIAG_IPV6 is not set
269# CONFIG_IPV6 is not set
270# CONFIG_NETFILTER is not set
271CONFIG_XFRM=y
272CONFIG_XFRM_USER=y
273
274#
275# SCTP Configuration (EXPERIMENTAL)
276#
277# CONFIG_IP_SCTP is not set
278# CONFIG_ATM is not set
279# CONFIG_BRIDGE is not set
280# CONFIG_VLAN_8021Q is not set
281# CONFIG_DECNET is not set
282# CONFIG_LLC2 is not set
283# CONFIG_IPX is not set
284# CONFIG_ATALK is not set
285# CONFIG_X25 is not set
286# CONFIG_LAPB is not set
287# CONFIG_NET_DIVERT is not set
288# CONFIG_ECONET is not set
289# CONFIG_WAN_ROUTER is not set
290
291#
292# QoS and/or fair queueing
293#
294# CONFIG_NET_SCHED is not set
295# CONFIG_NET_CLS_ROUTE is not set
296
297#
298# Network testing
299# 375#
300# CONFIG_NET_PKTGEN is not set
301# CONFIG_NETPOLL is not set
302# CONFIG_NET_POLL_CONTROLLER is not set
303# CONFIG_HAMRADIO is not set
304# CONFIG_IRDA is not set
305# CONFIG_BT is not set
306CONFIG_NETDEVICES=y 376CONFIG_NETDEVICES=y
307# CONFIG_DUMMY is not set 377# CONFIG_DUMMY is not set
308# CONFIG_BONDING is not set 378# CONFIG_BONDING is not set
309# CONFIG_EQUALIZER is not set 379# CONFIG_EQUALIZER is not set
310# CONFIG_TUN is not set 380# CONFIG_TUN is not set
311# CONFIG_ETHERTAP is not set
312 381
313# 382#
314# ARCnet devices 383# ARCnet devices
@@ -316,6 +385,21 @@ CONFIG_NETDEVICES=y
316# CONFIG_ARCNET is not set 385# CONFIG_ARCNET is not set
317 386
318# 387#
388# PHY device support
389#
390CONFIG_PHYLIB=y
391CONFIG_PHYCONTROL=y
392
393#
394# MII PHY device drivers
395#
396CONFIG_MARVELL_PHY=y
397CONFIG_DAVICOM_PHY=y
398CONFIG_QSEMI_PHY=y
399CONFIG_LXT_PHY=y
400CONFIG_CICADA_PHY=y
401
402#
319# Ethernet (10 or 100Mbit) 403# Ethernet (10 or 100Mbit)
320# 404#
321CONFIG_NET_ETHERNET=y 405CONFIG_NET_ETHERNET=y
@@ -341,13 +425,17 @@ CONFIG_NET_ETHERNET=y
341# CONFIG_HAMACHI is not set 425# CONFIG_HAMACHI is not set
342# CONFIG_YELLOWFIN is not set 426# CONFIG_YELLOWFIN is not set
343# CONFIG_R8169 is not set 427# CONFIG_R8169 is not set
428# CONFIG_SIS190 is not set
429# CONFIG_SKGE is not set
344# CONFIG_SK98LIN is not set 430# CONFIG_SK98LIN is not set
345# CONFIG_TIGON3 is not set 431# CONFIG_TIGON3 is not set
432# CONFIG_BNX2 is not set
346# CONFIG_MV643XX_ETH is not set 433# CONFIG_MV643XX_ETH is not set
347 434
348# 435#
349# Ethernet (10000 Mbit) 436# Ethernet (10000 Mbit)
350# 437#
438# CONFIG_CHELSIO_T1 is not set
351# CONFIG_IXGB is not set 439# CONFIG_IXGB is not set
352# CONFIG_S2IO is not set 440# CONFIG_S2IO is not set
353 441
@@ -360,6 +448,8 @@ CONFIG_NET_ETHERNET=y
360# Wireless LAN (non-hamradio) 448# Wireless LAN (non-hamradio)
361# 449#
362# CONFIG_NET_RADIO is not set 450# CONFIG_NET_RADIO is not set
451# CONFIG_IPW_DEBUG is not set
452CONFIG_IPW2200=y
363 453
364# 454#
365# Wan interfaces 455# Wan interfaces
@@ -371,6 +461,8 @@ CONFIG_NET_ETHERNET=y
371# CONFIG_SLIP is not set 461# CONFIG_SLIP is not set
372# CONFIG_SHAPER is not set 462# CONFIG_SHAPER is not set
373# CONFIG_NETCONSOLE is not set 463# CONFIG_NETCONSOLE is not set
464# CONFIG_NETPOLL is not set
465# CONFIG_NET_POLL_CONTROLLER is not set
374 466
375# 467#
376# ISDN subsystem 468# ISDN subsystem
@@ -400,19 +492,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
400# CONFIG_INPUT_EVBUG is not set 492# CONFIG_INPUT_EVBUG is not set
401 493
402# 494#
403# Input I/O drivers
404#
405# CONFIG_GAMEPORT is not set
406CONFIG_SOUND_GAMEPORT=y
407CONFIG_SERIO=y
408# CONFIG_SERIO_I8042 is not set
409CONFIG_SERIO_SERPORT=y
410# CONFIG_SERIO_CT82C710 is not set
411# CONFIG_SERIO_PCIPS2 is not set
412# CONFIG_SERIO_LIBPS2 is not set
413CONFIG_SERIO_RAW=y
414
415#
416# Input Device Drivers 495# Input Device Drivers
417# 496#
418# CONFIG_INPUT_KEYBOARD is not set 497# CONFIG_INPUT_KEYBOARD is not set
@@ -422,6 +501,17 @@ CONFIG_SERIO_RAW=y
422# CONFIG_INPUT_MISC is not set 501# CONFIG_INPUT_MISC is not set
423 502
424# 503#
504# Hardware I/O ports
505#
506CONFIG_SERIO=y
507# CONFIG_SERIO_I8042 is not set
508CONFIG_SERIO_SERPORT=y
509# CONFIG_SERIO_PCIPS2 is not set
510# CONFIG_SERIO_LIBPS2 is not set
511CONFIG_SERIO_RAW=y
512# CONFIG_GAMEPORT is not set
513
514#
425# Character devices 515# Character devices
426# 516#
427CONFIG_VT=y 517CONFIG_VT=y
@@ -442,6 +532,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4
442# 532#
443CONFIG_SERIAL_CORE=y 533CONFIG_SERIAL_CORE=y
444CONFIG_SERIAL_CORE_CONSOLE=y 534CONFIG_SERIAL_CORE_CONSOLE=y
535# CONFIG_SERIAL_JSM is not set
445CONFIG_UNIX98_PTYS=y 536CONFIG_UNIX98_PTYS=y
446CONFIG_LEGACY_PTYS=y 537CONFIG_LEGACY_PTYS=y
447CONFIG_LEGACY_PTY_COUNT=256 538CONFIG_LEGACY_PTY_COUNT=256
@@ -468,6 +559,11 @@ CONFIG_LEGACY_PTY_COUNT=256
468# CONFIG_RAW_DRIVER is not set 559# CONFIG_RAW_DRIVER is not set
469 560
470# 561#
562# TPM devices
563#
564# CONFIG_TCG_TPM is not set
565
566#
471# I2C support 567# I2C support
472# 568#
473# CONFIG_I2C is not set 569# CONFIG_I2C is not set
@@ -478,10 +574,20 @@ CONFIG_LEGACY_PTY_COUNT=256
478# CONFIG_W1 is not set 574# CONFIG_W1 is not set
479 575
480# 576#
577# Hardware Monitoring support
578#
579# CONFIG_HWMON is not set
580# CONFIG_HWMON_VID is not set
581
582#
481# Misc devices 583# Misc devices
482# 584#
483 585
484# 586#
587# Multimedia Capabilities Port drivers
588#
589
590#
485# Multimedia devices 591# Multimedia devices
486# 592#
487# CONFIG_VIDEO_DEV is not set 593# CONFIG_VIDEO_DEV is not set
@@ -501,7 +607,6 @@ CONFIG_LEGACY_PTY_COUNT=256
501# 607#
502# CONFIG_VGA_CONSOLE is not set 608# CONFIG_VGA_CONSOLE is not set
503CONFIG_DUMMY_CONSOLE=y 609CONFIG_DUMMY_CONSOLE=y
504# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
505 610
506# 611#
507# Sound 612# Sound
@@ -511,13 +616,9 @@ CONFIG_DUMMY_CONSOLE=y
511# 616#
512# USB support 617# USB support
513# 618#
514# CONFIG_USB is not set
515CONFIG_USB_ARCH_HAS_HCD=y 619CONFIG_USB_ARCH_HAS_HCD=y
516CONFIG_USB_ARCH_HAS_OHCI=y 620CONFIG_USB_ARCH_HAS_OHCI=y
517 621# CONFIG_USB is not set
518#
519# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
520#
521 622
522# 623#
523# USB Gadget Support 624# USB Gadget Support
@@ -535,21 +636,29 @@ CONFIG_USB_ARCH_HAS_OHCI=y
535# CONFIG_INFINIBAND is not set 636# CONFIG_INFINIBAND is not set
536 637
537# 638#
639# SN Devices
640#
641
642#
538# File systems 643# File systems
539# 644#
540CONFIG_EXT2_FS=y 645CONFIG_EXT2_FS=y
541# CONFIG_EXT2_FS_XATTR is not set 646# CONFIG_EXT2_FS_XATTR is not set
647# CONFIG_EXT2_FS_XIP is not set
542# CONFIG_EXT3_FS is not set 648# CONFIG_EXT3_FS is not set
543# CONFIG_JBD is not set 649# CONFIG_JBD is not set
544# CONFIG_REISERFS_FS is not set 650# CONFIG_REISERFS_FS is not set
545# CONFIG_JFS_FS is not set 651# CONFIG_JFS_FS is not set
652# CONFIG_FS_POSIX_ACL is not set
546# CONFIG_XFS_FS is not set 653# CONFIG_XFS_FS is not set
547# CONFIG_MINIX_FS is not set 654# CONFIG_MINIX_FS is not set
548# CONFIG_ROMFS_FS is not set 655# CONFIG_ROMFS_FS is not set
656CONFIG_INOTIFY=y
549# CONFIG_QUOTA is not set 657# CONFIG_QUOTA is not set
550CONFIG_DNOTIFY=y 658CONFIG_DNOTIFY=y
551# CONFIG_AUTOFS_FS is not set 659# CONFIG_AUTOFS_FS is not set
552# CONFIG_AUTOFS4_FS is not set 660# CONFIG_AUTOFS4_FS is not set
661CONFIG_FUSE_FS=y
553 662
554# 663#
555# CD-ROM/DVD Filesystems 664# CD-ROM/DVD Filesystems
@@ -570,12 +679,10 @@ CONFIG_DNOTIFY=y
570CONFIG_PROC_FS=y 679CONFIG_PROC_FS=y
571CONFIG_PROC_KCORE=y 680CONFIG_PROC_KCORE=y
572CONFIG_SYSFS=y 681CONFIG_SYSFS=y
573# CONFIG_DEVFS_FS is not set
574CONFIG_DEVPTS_FS_XATTR=y
575CONFIG_DEVPTS_FS_SECURITY=y
576# CONFIG_TMPFS is not set 682# CONFIG_TMPFS is not set
577# CONFIG_HUGETLB_PAGE is not set 683# CONFIG_HUGETLB_PAGE is not set
578CONFIG_RAMFS=y 684CONFIG_RAMFS=y
685CONFIG_RELAYFS_FS=y
579 686
580# 687#
581# Miscellaneous filesystems 688# Miscellaneous filesystems
@@ -607,6 +714,7 @@ CONFIG_NFSD=y
607CONFIG_ROOT_NFS=y 714CONFIG_ROOT_NFS=y
608CONFIG_LOCKD=y 715CONFIG_LOCKD=y
609CONFIG_EXPORTFS=y 716CONFIG_EXPORTFS=y
717CONFIG_NFS_COMMON=y
610CONFIG_SUNRPC=y 718CONFIG_SUNRPC=y
611# CONFIG_RPCSEC_GSS_KRB5 is not set 719# CONFIG_RPCSEC_GSS_KRB5 is not set
612# CONFIG_RPCSEC_GSS_SPKM3 is not set 720# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -615,6 +723,7 @@ CONFIG_SUNRPC=y
615# CONFIG_NCP_FS is not set 723# CONFIG_NCP_FS is not set
616# CONFIG_CODA_FS is not set 724# CONFIG_CODA_FS is not set
617# CONFIG_AFS_FS is not set 725# CONFIG_AFS_FS is not set
726# CONFIG_9P_FS is not set
618 727
619# 728#
620# Partition Types 729# Partition Types
@@ -635,7 +744,9 @@ CONFIG_MSDOS_PARTITION=y
635# 744#
636# Kernel hacking 745# Kernel hacking
637# 746#
747# CONFIG_PRINTK_TIME is not set
638# CONFIG_DEBUG_KERNEL is not set 748# CONFIG_DEBUG_KERNEL is not set
749CONFIG_LOG_BUF_SHIFT=14
639CONFIG_CROSSCOMPILE=y 750CONFIG_CROSSCOMPILE=y
640CONFIG_CMDLINE="" 751CONFIG_CMDLINE=""
641 752
@@ -649,7 +760,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
649# 760#
650# Cryptographic options 761# Cryptographic options
651# 762#
652# CONFIG_CRYPTO is not set 763CONFIG_CRYPTO=y
764CONFIG_CRYPTO_HMAC=y
765CONFIG_CRYPTO_NULL=y
766CONFIG_CRYPTO_MD4=y
767CONFIG_CRYPTO_MD5=y
768CONFIG_CRYPTO_SHA1=y
769CONFIG_CRYPTO_SHA256=y
770CONFIG_CRYPTO_SHA512=y
771CONFIG_CRYPTO_WP512=y
772CONFIG_CRYPTO_TGR192=y
773CONFIG_CRYPTO_DES=y
774CONFIG_CRYPTO_BLOWFISH=y
775CONFIG_CRYPTO_TWOFISH=y
776CONFIG_CRYPTO_SERPENT=y
777CONFIG_CRYPTO_AES=y
778CONFIG_CRYPTO_CAST5=y
779CONFIG_CRYPTO_CAST6=y
780CONFIG_CRYPTO_TEA=y
781CONFIG_CRYPTO_ARC4=y
782CONFIG_CRYPTO_KHAZAD=y
783CONFIG_CRYPTO_ANUBIS=y
784CONFIG_CRYPTO_DEFLATE=y
785CONFIG_CRYPTO_MICHAEL_MIC=y
786CONFIG_CRYPTO_CRC32C=y
787# CONFIG_CRYPTO_TEST is not set
653 788
654# 789#
655# Hardware crypto devices 790# Hardware crypto devices
@@ -659,7 +794,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
659# Library routines 794# Library routines
660# 795#
661# CONFIG_CRC_CCITT is not set 796# CONFIG_CRC_CCITT is not set
662# CONFIG_CRC32 is not set 797CONFIG_CRC16=y
663# CONFIG_LIBCRC32C is not set 798CONFIG_CRC32=y
664CONFIG_GENERIC_HARDIRQS=y 799CONFIG_LIBCRC32C=y
665CONFIG_GENERIC_IRQ_PROBE=y 800CONFIG_ZLIB_INFLATE=y
801CONFIG_ZLIB_DEFLATE=y
diff --git a/arch/mips/configs/ocelot_defconfig b/arch/mips/configs/ocelot_defconfig
index 920d59b56a4e..1edde12ebff9 100644
--- a/arch/mips/configs/ocelot_defconfig
+++ b/arch/mips/configs/ocelot_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:08 2005 4# Thu Oct 20 22:26:35 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14
29# CONFIG_HOTPLUG is not set 27# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -50,40 +53,68 @@ CONFIG_CC_ALIGN_JUMPS=0
50# 53#
51# Machine selection 54# Machine selection
52# 55#
53# CONFIG_MACH_JAZZ is not set 56# CONFIG_MIPS_MTX1 is not set
54# CONFIG_MACH_VR41XX is not set 57# CONFIG_MIPS_BOSPORUS is not set
55# CONFIG_TOSHIBA_JMR3927 is not set 58# CONFIG_MIPS_PB1000 is not set
59# CONFIG_MIPS_PB1100 is not set
60# CONFIG_MIPS_PB1500 is not set
61# CONFIG_MIPS_PB1550 is not set
62# CONFIG_MIPS_PB1200 is not set
63# CONFIG_MIPS_DB1000 is not set
64# CONFIG_MIPS_DB1100 is not set
65# CONFIG_MIPS_DB1500 is not set
66# CONFIG_MIPS_DB1550 is not set
67# CONFIG_MIPS_DB1200 is not set
68# CONFIG_MIPS_MIRAGE is not set
56# CONFIG_MIPS_COBALT is not set 69# CONFIG_MIPS_COBALT is not set
57# CONFIG_MACH_DECSTATION is not set 70# CONFIG_MACH_DECSTATION is not set
58# CONFIG_MIPS_EV64120 is not set 71# CONFIG_MIPS_EV64120 is not set
59# CONFIG_MIPS_EV96100 is not set 72# CONFIG_MIPS_EV96100 is not set
60# CONFIG_MIPS_IVR is not set 73# CONFIG_MIPS_IVR is not set
61# CONFIG_LASAT is not set
62# CONFIG_MIPS_ITE8172 is not set 74# CONFIG_MIPS_ITE8172 is not set
75# CONFIG_MACH_JAZZ is not set
76# CONFIG_LASAT is not set
63# CONFIG_MIPS_ATLAS is not set 77# CONFIG_MIPS_ATLAS is not set
64# CONFIG_MIPS_MALTA is not set 78# CONFIG_MIPS_MALTA is not set
65# CONFIG_MIPS_SEAD is not set 79# CONFIG_MIPS_SEAD is not set
80# CONFIG_MIPS_SIM is not set
81# CONFIG_MOMENCO_JAGUAR_ATX is not set
66CONFIG_MOMENCO_OCELOT=y 82CONFIG_MOMENCO_OCELOT=y
67# CONFIG_MOMENCO_OCELOT_G is not set
68# CONFIG_MOMENCO_OCELOT_C is not set
69# CONFIG_MOMENCO_OCELOT_3 is not set 83# CONFIG_MOMENCO_OCELOT_3 is not set
70# CONFIG_MOMENCO_JAGUAR_ATX is not set 84# CONFIG_MOMENCO_OCELOT_C is not set
71# CONFIG_PMC_YOSEMITE is not set 85# CONFIG_MOMENCO_OCELOT_G is not set
86# CONFIG_MIPS_XXS1500 is not set
87# CONFIG_PNX8550_V2PCI is not set
88# CONFIG_PNX8550_JBS is not set
72# CONFIG_DDB5074 is not set 89# CONFIG_DDB5074 is not set
73# CONFIG_DDB5476 is not set 90# CONFIG_DDB5476 is not set
74# CONFIG_DDB5477 is not set 91# CONFIG_DDB5477 is not set
75# CONFIG_NEC_OSPREY is not set 92# CONFIG_MACH_VR41XX is not set
93# CONFIG_PMC_YOSEMITE is not set
94# CONFIG_QEMU is not set
76# CONFIG_SGI_IP22 is not set 95# CONFIG_SGI_IP22 is not set
77# CONFIG_SOC_AU1X00 is not set 96# CONFIG_SGI_IP27 is not set
78# CONFIG_SIBYTE_SB1xxx_SOC is not set 97# CONFIG_SGI_IP32 is not set
98# CONFIG_SIBYTE_BIGSUR is not set
99# CONFIG_SIBYTE_SWARM is not set
100# CONFIG_SIBYTE_SENTOSA is not set
101# CONFIG_SIBYTE_RHONE is not set
102# CONFIG_SIBYTE_CARMEL is not set
103# CONFIG_SIBYTE_PTSWARM is not set
104# CONFIG_SIBYTE_LITTLESUR is not set
105# CONFIG_SIBYTE_CRHINE is not set
106# CONFIG_SIBYTE_CRHONE is not set
79# CONFIG_SNI_RM200_PCI is not set 107# CONFIG_SNI_RM200_PCI is not set
108# CONFIG_TOSHIBA_JMR3927 is not set
80# CONFIG_TOSHIBA_RBTX4927 is not set 109# CONFIG_TOSHIBA_RBTX4927 is not set
110# CONFIG_TOSHIBA_RBTX4938 is not set
81CONFIG_RWSEM_GENERIC_SPINLOCK=y 111CONFIG_RWSEM_GENERIC_SPINLOCK=y
82CONFIG_GENERIC_CALIBRATE_DELAY=y 112CONFIG_GENERIC_CALIBRATE_DELAY=y
83CONFIG_HAVE_DEC_LOCK=y
84CONFIG_DMA_NONCOHERENT=y 113CONFIG_DMA_NONCOHERENT=y
85CONFIG_DMA_NEED_PCI_MAP_STATE=y 114CONFIG_DMA_NEED_PCI_MAP_STATE=y
115CONFIG_CPU_BIG_ENDIAN=y
86# CONFIG_CPU_LITTLE_ENDIAN is not set 116# CONFIG_CPU_LITTLE_ENDIAN is not set
117CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
87CONFIG_IRQ_CPU=y 118CONFIG_IRQ_CPU=y
88CONFIG_IRQ_CPU_RM7K=y 119CONFIG_IRQ_CPU_RM7K=y
89CONFIG_MIPS_GT64120=y 120CONFIG_MIPS_GT64120=y
@@ -96,8 +127,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
96# 127#
97# CPU selection 128# CPU selection
98# 129#
99# CONFIG_CPU_MIPS32 is not set 130# CONFIG_CPU_MIPS32_R1 is not set
100# CONFIG_CPU_MIPS64 is not set 131# CONFIG_CPU_MIPS32_R2 is not set
132# CONFIG_CPU_MIPS64_R1 is not set
133# CONFIG_CPU_MIPS64_R2 is not set
101# CONFIG_CPU_R3000 is not set 134# CONFIG_CPU_R3000 is not set
102# CONFIG_CPU_TX39XX is not set 135# CONFIG_CPU_TX39XX is not set
103# CONFIG_CPU_VR41XX is not set 136# CONFIG_CPU_VR41XX is not set
@@ -113,6 +146,17 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
113CONFIG_CPU_RM7000=y 146CONFIG_CPU_RM7000=y
114# CONFIG_CPU_RM9000 is not set 147# CONFIG_CPU_RM9000 is not set
115# CONFIG_CPU_SB1 is not set 148# CONFIG_CPU_SB1 is not set
149CONFIG_SYS_HAS_CPU_RM7000=y
150CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
151CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
152CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
153CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
154
155#
156# Kernel type
157#
158CONFIG_32BIT=y
159# CONFIG_64BIT is not set
116CONFIG_PAGE_SIZE_4KB=y 160CONFIG_PAGE_SIZE_4KB=y
117# CONFIG_PAGE_SIZE_8KB is not set 161# CONFIG_PAGE_SIZE_8KB is not set
118# CONFIG_PAGE_SIZE_16KB is not set 162# CONFIG_PAGE_SIZE_16KB is not set
@@ -120,11 +164,25 @@ CONFIG_PAGE_SIZE_4KB=y
120CONFIG_BOARD_SCACHE=y 164CONFIG_BOARD_SCACHE=y
121CONFIG_RM7000_CPU_SCACHE=y 165CONFIG_RM7000_CPU_SCACHE=y
122CONFIG_CPU_HAS_PREFETCH=y 166CONFIG_CPU_HAS_PREFETCH=y
167# CONFIG_MIPS_MT is not set
123# CONFIG_64BIT_PHYS_ADDR is not set 168# CONFIG_64BIT_PHYS_ADDR is not set
124# CONFIG_CPU_ADVANCED is not set 169# CONFIG_CPU_ADVANCED is not set
125CONFIG_CPU_HAS_LLSC=y 170CONFIG_CPU_HAS_LLSC=y
126CONFIG_CPU_HAS_LLDSCD=y 171CONFIG_CPU_HAS_LLDSCD=y
127CONFIG_CPU_HAS_SYNC=y 172CONFIG_CPU_HAS_SYNC=y
173CONFIG_GENERIC_HARDIRQS=y
174CONFIG_GENERIC_IRQ_PROBE=y
175CONFIG_CPU_SUPPORTS_HIGHMEM=y
176CONFIG_ARCH_FLATMEM_ENABLE=y
177CONFIG_SELECT_MEMORY_MODEL=y
178CONFIG_FLATMEM_MANUAL=y
179# CONFIG_DISCONTIGMEM_MANUAL is not set
180# CONFIG_SPARSEMEM_MANUAL is not set
181CONFIG_FLATMEM=y
182CONFIG_FLAT_NODE_MEM_MAP=y
183# CONFIG_SPARSEMEM_STATIC is not set
184CONFIG_PREEMPT_NONE=y
185# CONFIG_PREEMPT_VOLUNTARY is not set
128# CONFIG_PREEMPT is not set 186# CONFIG_PREEMPT is not set
129 187
130# 188#
@@ -140,10 +198,6 @@ CONFIG_MMU=y
140# CONFIG_PCCARD is not set 198# CONFIG_PCCARD is not set
141 199
142# 200#
143# PC-card bridges
144#
145
146#
147# PCI Hotplug Support 201# PCI Hotplug Support
148# 202#
149 203
@@ -155,6 +209,79 @@ CONFIG_BINFMT_ELF=y
155CONFIG_TRAD_SIGNALS=y 209CONFIG_TRAD_SIGNALS=y
156 210
157# 211#
212# Networking
213#
214CONFIG_NET=y
215
216#
217# Networking options
218#
219# CONFIG_PACKET is not set
220CONFIG_UNIX=y
221CONFIG_XFRM=y
222CONFIG_XFRM_USER=y
223CONFIG_NET_KEY=y
224CONFIG_INET=y
225# CONFIG_IP_MULTICAST is not set
226# CONFIG_IP_ADVANCED_ROUTER is not set
227CONFIG_IP_FIB_HASH=y
228CONFIG_IP_PNP=y
229# CONFIG_IP_PNP_DHCP is not set
230CONFIG_IP_PNP_BOOTP=y
231# CONFIG_IP_PNP_RARP is not set
232# CONFIG_NET_IPIP is not set
233# CONFIG_NET_IPGRE is not set
234# CONFIG_ARPD is not set
235# CONFIG_SYN_COOKIES is not set
236# CONFIG_INET_AH is not set
237# CONFIG_INET_ESP is not set
238# CONFIG_INET_IPCOMP is not set
239CONFIG_INET_TUNNEL=y
240CONFIG_INET_DIAG=y
241CONFIG_INET_TCP_DIAG=y
242# CONFIG_TCP_CONG_ADVANCED is not set
243CONFIG_TCP_CONG_BIC=y
244# CONFIG_IPV6 is not set
245# CONFIG_NETFILTER is not set
246
247#
248# DCCP Configuration (EXPERIMENTAL)
249#
250# CONFIG_IP_DCCP is not set
251
252#
253# SCTP Configuration (EXPERIMENTAL)
254#
255# CONFIG_IP_SCTP is not set
256# CONFIG_ATM is not set
257# CONFIG_BRIDGE is not set
258# CONFIG_VLAN_8021Q is not set
259# CONFIG_DECNET is not set
260# CONFIG_LLC2 is not set
261# CONFIG_IPX is not set
262# CONFIG_ATALK is not set
263# CONFIG_X25 is not set
264# CONFIG_LAPB is not set
265# CONFIG_NET_DIVERT is not set
266# CONFIG_ECONET is not set
267# CONFIG_WAN_ROUTER is not set
268# CONFIG_NET_SCHED is not set
269# CONFIG_NET_CLS_ROUTE is not set
270
271#
272# Network testing
273#
274# CONFIG_NET_PKTGEN is not set
275# CONFIG_HAMRADIO is not set
276# CONFIG_IRDA is not set
277# CONFIG_BT is not set
278CONFIG_IEEE80211=y
279# CONFIG_IEEE80211_DEBUG is not set
280CONFIG_IEEE80211_CRYPT_WEP=y
281CONFIG_IEEE80211_CRYPT_CCMP=y
282CONFIG_IEEE80211_CRYPT_TKIP=y
283
284#
158# Device Drivers 285# Device Drivers
159# 286#
160 287
@@ -166,6 +293,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
166# CONFIG_FW_LOADER is not set 293# CONFIG_FW_LOADER is not set
167 294
168# 295#
296# Connector - unified userspace <-> kernelspace linker
297#
298CONFIG_CONNECTOR=y
299
300#
169# Memory Technology Devices (MTD) 301# Memory Technology Devices (MTD)
170# 302#
171# CONFIG_MTD is not set 303# CONFIG_MTD is not set
@@ -182,13 +314,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
182# 314#
183# Block devices 315# Block devices
184# 316#
185# CONFIG_BLK_DEV_FD is not set
186# CONFIG_BLK_DEV_COW_COMMON is not set 317# CONFIG_BLK_DEV_COW_COMMON is not set
187# CONFIG_BLK_DEV_LOOP is not set 318# CONFIG_BLK_DEV_LOOP is not set
188# CONFIG_BLK_DEV_NBD is not set 319# CONFIG_BLK_DEV_NBD is not set
189# CONFIG_BLK_DEV_RAM is not set 320# CONFIG_BLK_DEV_RAM is not set
190CONFIG_BLK_DEV_RAM_COUNT=16 321CONFIG_BLK_DEV_RAM_COUNT=16
191CONFIG_INITRAMFS_SOURCE=""
192# CONFIG_LBD is not set 322# CONFIG_LBD is not set
193CONFIG_CDROM_PKTCDVD=y 323CONFIG_CDROM_PKTCDVD=y
194CONFIG_CDROM_PKTCDVD_BUFFERS=8 324CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -211,6 +341,7 @@ CONFIG_ATA_OVER_ETH=y
211# 341#
212# SCSI device support 342# SCSI device support
213# 343#
344CONFIG_RAID_ATTRS=y
214# CONFIG_SCSI is not set 345# CONFIG_SCSI is not set
215 346
216# 347#
@@ -221,6 +352,7 @@ CONFIG_ATA_OVER_ETH=y
221# 352#
222# Fusion MPT device support 353# Fusion MPT device support
223# 354#
355# CONFIG_FUSION is not set
224 356
225# 357#
226# IEEE 1394 (FireWire) support 358# IEEE 1394 (FireWire) support
@@ -231,77 +363,28 @@ CONFIG_ATA_OVER_ETH=y
231# 363#
232 364
233# 365#
234# Networking support 366# Network device support
235#
236CONFIG_NET=y
237
238#
239# Networking options
240# 367#
241# CONFIG_PACKET is not set 368CONFIG_NETDEVICES=y
242CONFIG_NETLINK_DEV=y 369# CONFIG_DUMMY is not set
243CONFIG_UNIX=y 370# CONFIG_BONDING is not set
244CONFIG_NET_KEY=y 371# CONFIG_EQUALIZER is not set
245CONFIG_INET=y 372# CONFIG_TUN is not set
246# CONFIG_IP_MULTICAST is not set
247# CONFIG_IP_ADVANCED_ROUTER is not set
248CONFIG_IP_PNP=y
249# CONFIG_IP_PNP_DHCP is not set
250CONFIG_IP_PNP_BOOTP=y
251# CONFIG_IP_PNP_RARP is not set
252# CONFIG_NET_IPIP is not set
253# CONFIG_NET_IPGRE is not set
254# CONFIG_ARPD is not set
255# CONFIG_SYN_COOKIES is not set
256# CONFIG_INET_AH is not set
257# CONFIG_INET_ESP is not set
258# CONFIG_INET_IPCOMP is not set
259CONFIG_INET_TUNNEL=y
260CONFIG_IP_TCPDIAG=y
261# CONFIG_IP_TCPDIAG_IPV6 is not set
262# CONFIG_IPV6 is not set
263# CONFIG_NETFILTER is not set
264CONFIG_XFRM=y
265CONFIG_XFRM_USER=y
266
267#
268# SCTP Configuration (EXPERIMENTAL)
269#
270# CONFIG_IP_SCTP is not set
271# CONFIG_ATM is not set
272# CONFIG_BRIDGE is not set
273# CONFIG_VLAN_8021Q is not set
274# CONFIG_DECNET is not set
275# CONFIG_LLC2 is not set
276# CONFIG_IPX is not set
277# CONFIG_ATALK is not set
278# CONFIG_X25 is not set
279# CONFIG_LAPB is not set
280# CONFIG_NET_DIVERT is not set
281# CONFIG_ECONET is not set
282# CONFIG_WAN_ROUTER is not set
283 373
284# 374#
285# QoS and/or fair queueing 375# PHY device support
286# 376#
287# CONFIG_NET_SCHED is not set 377CONFIG_PHYLIB=y
288# CONFIG_NET_CLS_ROUTE is not set 378CONFIG_PHYCONTROL=y
289 379
290# 380#
291# Network testing 381# MII PHY device drivers
292# 382#
293# CONFIG_NET_PKTGEN is not set 383CONFIG_MARVELL_PHY=y
294# CONFIG_NETPOLL is not set 384CONFIG_DAVICOM_PHY=y
295# CONFIG_NET_POLL_CONTROLLER is not set 385CONFIG_QSEMI_PHY=y
296# CONFIG_HAMRADIO is not set 386CONFIG_LXT_PHY=y
297# CONFIG_IRDA is not set 387CONFIG_CICADA_PHY=y
298# CONFIG_BT is not set
299CONFIG_NETDEVICES=y
300# CONFIG_DUMMY is not set
301# CONFIG_BONDING is not set
302# CONFIG_EQUALIZER is not set
303# CONFIG_TUN is not set
304# CONFIG_ETHERTAP is not set
305 388
306# 389#
307# Ethernet (10 or 100Mbit) 390# Ethernet (10 or 100Mbit)
@@ -334,6 +417,8 @@ CONFIG_NET_ETHERNET=y
334# CONFIG_SLIP is not set 417# CONFIG_SLIP is not set
335# CONFIG_SHAPER is not set 418# CONFIG_SHAPER is not set
336# CONFIG_NETCONSOLE is not set 419# CONFIG_NETCONSOLE is not set
420# CONFIG_NETPOLL is not set
421# CONFIG_NET_POLL_CONTROLLER is not set
337 422
338# 423#
339# ISDN subsystem 424# ISDN subsystem
@@ -363,18 +448,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
363# CONFIG_INPUT_EVBUG is not set 448# CONFIG_INPUT_EVBUG is not set
364 449
365# 450#
366# Input I/O drivers
367#
368# CONFIG_GAMEPORT is not set
369CONFIG_SOUND_GAMEPORT=y
370CONFIG_SERIO=y
371# CONFIG_SERIO_I8042 is not set
372CONFIG_SERIO_SERPORT=y
373# CONFIG_SERIO_CT82C710 is not set
374# CONFIG_SERIO_LIBPS2 is not set
375CONFIG_SERIO_RAW=y
376
377#
378# Input Device Drivers 451# Input Device Drivers
379# 452#
380# CONFIG_INPUT_KEYBOARD is not set 453# CONFIG_INPUT_KEYBOARD is not set
@@ -384,6 +457,16 @@ CONFIG_SERIO_RAW=y
384# CONFIG_INPUT_MISC is not set 457# CONFIG_INPUT_MISC is not set
385 458
386# 459#
460# Hardware I/O ports
461#
462CONFIG_SERIO=y
463# CONFIG_SERIO_I8042 is not set
464CONFIG_SERIO_SERPORT=y
465# CONFIG_SERIO_LIBPS2 is not set
466CONFIG_SERIO_RAW=y
467# CONFIG_GAMEPORT is not set
468
469#
387# Character devices 470# Character devices
388# 471#
389CONFIG_VT=y 472CONFIG_VT=y
@@ -425,10 +508,13 @@ CONFIG_LEGACY_PTY_COUNT=256
425# 508#
426# Ftape, the floppy tape device driver 509# Ftape, the floppy tape device driver
427# 510#
428# CONFIG_DRM is not set
429# CONFIG_RAW_DRIVER is not set 511# CONFIG_RAW_DRIVER is not set
430 512
431# 513#
514# TPM devices
515#
516
517#
432# I2C support 518# I2C support
433# 519#
434# CONFIG_I2C is not set 520# CONFIG_I2C is not set
@@ -439,10 +525,20 @@ CONFIG_LEGACY_PTY_COUNT=256
439# CONFIG_W1 is not set 525# CONFIG_W1 is not set
440 526
441# 527#
528# Hardware Monitoring support
529#
530# CONFIG_HWMON is not set
531# CONFIG_HWMON_VID is not set
532
533#
442# Misc devices 534# Misc devices
443# 535#
444 536
445# 537#
538# Multimedia Capabilities Port drivers
539#
540
541#
446# Multimedia devices 542# Multimedia devices
447# 543#
448# CONFIG_VIDEO_DEV is not set 544# CONFIG_VIDEO_DEV is not set
@@ -462,7 +558,6 @@ CONFIG_LEGACY_PTY_COUNT=256
462# 558#
463# CONFIG_VGA_CONSOLE is not set 559# CONFIG_VGA_CONSOLE is not set
464CONFIG_DUMMY_CONSOLE=y 560CONFIG_DUMMY_CONSOLE=y
465# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
466 561
467# 562#
468# Sound 563# Sound
@@ -476,10 +571,6 @@ CONFIG_DUMMY_CONSOLE=y
476# CONFIG_USB_ARCH_HAS_OHCI is not set 571# CONFIG_USB_ARCH_HAS_OHCI is not set
477 572
478# 573#
479# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
480#
481
482#
483# USB Gadget Support 574# USB Gadget Support
484# 575#
485# CONFIG_USB_GADGET is not set 576# CONFIG_USB_GADGET is not set
@@ -492,24 +583,31 @@ CONFIG_DUMMY_CONSOLE=y
492# 583#
493# InfiniBand support 584# InfiniBand support
494# 585#
495# CONFIG_INFINIBAND is not set 586
587#
588# SN Devices
589#
496 590
497# 591#
498# File systems 592# File systems
499# 593#
500CONFIG_EXT2_FS=y 594CONFIG_EXT2_FS=y
501# CONFIG_EXT2_FS_XATTR is not set 595# CONFIG_EXT2_FS_XATTR is not set
596# CONFIG_EXT2_FS_XIP is not set
502# CONFIG_EXT3_FS is not set 597# CONFIG_EXT3_FS is not set
503# CONFIG_JBD is not set 598# CONFIG_JBD is not set
504# CONFIG_REISERFS_FS is not set 599# CONFIG_REISERFS_FS is not set
505# CONFIG_JFS_FS is not set 600# CONFIG_JFS_FS is not set
601# CONFIG_FS_POSIX_ACL is not set
506# CONFIG_XFS_FS is not set 602# CONFIG_XFS_FS is not set
507# CONFIG_MINIX_FS is not set 603# CONFIG_MINIX_FS is not set
508# CONFIG_ROMFS_FS is not set 604# CONFIG_ROMFS_FS is not set
605CONFIG_INOTIFY=y
509# CONFIG_QUOTA is not set 606# CONFIG_QUOTA is not set
510CONFIG_DNOTIFY=y 607CONFIG_DNOTIFY=y
511# CONFIG_AUTOFS_FS is not set 608# CONFIG_AUTOFS_FS is not set
512# CONFIG_AUTOFS4_FS is not set 609# CONFIG_AUTOFS4_FS is not set
610CONFIG_FUSE_FS=y
513 611
514# 612#
515# CD-ROM/DVD Filesystems 613# CD-ROM/DVD Filesystems
@@ -530,12 +628,10 @@ CONFIG_DNOTIFY=y
530CONFIG_PROC_FS=y 628CONFIG_PROC_FS=y
531CONFIG_PROC_KCORE=y 629CONFIG_PROC_KCORE=y
532CONFIG_SYSFS=y 630CONFIG_SYSFS=y
533# CONFIG_DEVFS_FS is not set
534CONFIG_DEVPTS_FS_XATTR=y
535CONFIG_DEVPTS_FS_SECURITY=y
536# CONFIG_TMPFS is not set 631# CONFIG_TMPFS is not set
537# CONFIG_HUGETLB_PAGE is not set 632# CONFIG_HUGETLB_PAGE is not set
538CONFIG_RAMFS=y 633CONFIG_RAMFS=y
634CONFIG_RELAYFS_FS=y
539 635
540# 636#
541# Miscellaneous filesystems 637# Miscellaneous filesystems
@@ -567,6 +663,7 @@ CONFIG_NFSD=y
567CONFIG_ROOT_NFS=y 663CONFIG_ROOT_NFS=y
568CONFIG_LOCKD=y 664CONFIG_LOCKD=y
569CONFIG_EXPORTFS=y 665CONFIG_EXPORTFS=y
666CONFIG_NFS_COMMON=y
570CONFIG_SUNRPC=y 667CONFIG_SUNRPC=y
571# CONFIG_RPCSEC_GSS_KRB5 is not set 668# CONFIG_RPCSEC_GSS_KRB5 is not set
572# CONFIG_RPCSEC_GSS_SPKM3 is not set 669# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -575,6 +672,7 @@ CONFIG_SUNRPC=y
575# CONFIG_NCP_FS is not set 672# CONFIG_NCP_FS is not set
576# CONFIG_CODA_FS is not set 673# CONFIG_CODA_FS is not set
577# CONFIG_AFS_FS is not set 674# CONFIG_AFS_FS is not set
675# CONFIG_9P_FS is not set
578 676
579# 677#
580# Partition Types 678# Partition Types
@@ -595,7 +693,9 @@ CONFIG_MSDOS_PARTITION=y
595# 693#
596# Kernel hacking 694# Kernel hacking
597# 695#
696# CONFIG_PRINTK_TIME is not set
598# CONFIG_DEBUG_KERNEL is not set 697# CONFIG_DEBUG_KERNEL is not set
698CONFIG_LOG_BUF_SHIFT=14
599CONFIG_CROSSCOMPILE=y 699CONFIG_CROSSCOMPILE=y
600CONFIG_CMDLINE="" 700CONFIG_CMDLINE=""
601 701
@@ -609,7 +709,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
609# 709#
610# Cryptographic options 710# Cryptographic options
611# 711#
612# CONFIG_CRYPTO is not set 712CONFIG_CRYPTO=y
713CONFIG_CRYPTO_HMAC=y
714CONFIG_CRYPTO_NULL=y
715CONFIG_CRYPTO_MD4=y
716CONFIG_CRYPTO_MD5=y
717CONFIG_CRYPTO_SHA1=y
718CONFIG_CRYPTO_SHA256=y
719CONFIG_CRYPTO_SHA512=y
720CONFIG_CRYPTO_WP512=y
721CONFIG_CRYPTO_TGR192=y
722CONFIG_CRYPTO_DES=y
723CONFIG_CRYPTO_BLOWFISH=y
724CONFIG_CRYPTO_TWOFISH=y
725CONFIG_CRYPTO_SERPENT=y
726CONFIG_CRYPTO_AES=y
727CONFIG_CRYPTO_CAST5=y
728CONFIG_CRYPTO_CAST6=y
729CONFIG_CRYPTO_TEA=y
730CONFIG_CRYPTO_ARC4=y
731CONFIG_CRYPTO_KHAZAD=y
732CONFIG_CRYPTO_ANUBIS=y
733CONFIG_CRYPTO_DEFLATE=y
734CONFIG_CRYPTO_MICHAEL_MIC=y
735CONFIG_CRYPTO_CRC32C=y
736# CONFIG_CRYPTO_TEST is not set
613 737
614# 738#
615# Hardware crypto devices 739# Hardware crypto devices
@@ -619,7 +743,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
619# Library routines 743# Library routines
620# 744#
621# CONFIG_CRC_CCITT is not set 745# CONFIG_CRC_CCITT is not set
622# CONFIG_CRC32 is not set 746CONFIG_CRC16=y
623# CONFIG_LIBCRC32C is not set 747CONFIG_CRC32=y
624CONFIG_GENERIC_HARDIRQS=y 748CONFIG_LIBCRC32C=y
625CONFIG_GENERIC_IRQ_PROBE=y 749CONFIG_ZLIB_INFLATE=y
750CONFIG_ZLIB_DEFLATE=y
diff --git a/arch/mips/configs/ocelot_g_defconfig b/arch/mips/configs/ocelot_g_defconfig
index ef5ea50893d1..e2d5188cdc15 100644
--- a/arch/mips/configs/ocelot_g_defconfig
+++ b/arch/mips/configs/ocelot_g_defconfig
@@ -1,11 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:08 2005 4# Thu Oct 20 22:26:38 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7CONFIG_64BIT=y
8CONFIG_64BIT=y
9 7
10# 8#
11# Code maturity level options 9# Code maturity level options
@@ -13,24 +11,29 @@ CONFIG_64BIT=y
13CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
14CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
15CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
16 15
17# 16#
18# General setup 17# General setup
19# 18#
20CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
21CONFIG_SWAP=y 21CONFIG_SWAP=y
22CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
23# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
24# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
25CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
26# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
27CONFIG_LOG_BUF_SHIFT=14 27CONFIG_HOTPLUG=y
28# CONFIG_HOTPLUG is not set
29CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
30# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
31CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
32CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
33# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
34CONFIG_FUTEX=y 37CONFIG_FUTEX=y
35CONFIG_EPOLL=y 38CONFIG_EPOLL=y
36# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -40,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
40CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
41CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
42# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
43 47
44# 48#
45# Loadable module support 49# Loadable module support
@@ -49,39 +53,68 @@ CONFIG_CC_ALIGN_JUMPS=0
49# 53#
50# Machine selection 54# Machine selection
51# 55#
52# CONFIG_MACH_JAZZ is not set 56# CONFIG_MIPS_MTX1 is not set
53# CONFIG_MACH_VR41XX is not set 57# CONFIG_MIPS_BOSPORUS is not set
58# CONFIG_MIPS_PB1000 is not set
59# CONFIG_MIPS_PB1100 is not set
60# CONFIG_MIPS_PB1500 is not set
61# CONFIG_MIPS_PB1550 is not set
62# CONFIG_MIPS_PB1200 is not set
63# CONFIG_MIPS_DB1000 is not set
64# CONFIG_MIPS_DB1100 is not set
65# CONFIG_MIPS_DB1500 is not set
66# CONFIG_MIPS_DB1550 is not set
67# CONFIG_MIPS_DB1200 is not set
68# CONFIG_MIPS_MIRAGE is not set
54# CONFIG_MIPS_COBALT is not set 69# CONFIG_MIPS_COBALT is not set
55# CONFIG_MACH_DECSTATION is not set 70# CONFIG_MACH_DECSTATION is not set
56# CONFIG_MIPS_EV64120 is not set 71# CONFIG_MIPS_EV64120 is not set
57# CONFIG_MIPS_EV96100 is not set 72# CONFIG_MIPS_EV96100 is not set
58# CONFIG_MIPS_IVR is not set 73# CONFIG_MIPS_IVR is not set
59# CONFIG_LASAT is not set
60# CONFIG_MIPS_ITE8172 is not set 74# CONFIG_MIPS_ITE8172 is not set
75# CONFIG_MACH_JAZZ is not set
76# CONFIG_LASAT is not set
61# CONFIG_MIPS_ATLAS is not set 77# CONFIG_MIPS_ATLAS is not set
62# CONFIG_MIPS_MALTA is not set 78# CONFIG_MIPS_MALTA is not set
63# CONFIG_MIPS_SEAD is not set 79# CONFIG_MIPS_SEAD is not set
80# CONFIG_MIPS_SIM is not set
81# CONFIG_MOMENCO_JAGUAR_ATX is not set
64# CONFIG_MOMENCO_OCELOT is not set 82# CONFIG_MOMENCO_OCELOT is not set
65CONFIG_MOMENCO_OCELOT_G=y
66# CONFIG_MOMENCO_OCELOT_C is not set
67# CONFIG_MOMENCO_OCELOT_3 is not set 83# CONFIG_MOMENCO_OCELOT_3 is not set
68# CONFIG_MOMENCO_JAGUAR_ATX is not set 84# CONFIG_MOMENCO_OCELOT_C is not set
69# CONFIG_PMC_YOSEMITE is not set 85CONFIG_MOMENCO_OCELOT_G=y
86# CONFIG_MIPS_XXS1500 is not set
87# CONFIG_PNX8550_V2PCI is not set
88# CONFIG_PNX8550_JBS is not set
70# CONFIG_DDB5074 is not set 89# CONFIG_DDB5074 is not set
71# CONFIG_DDB5476 is not set 90# CONFIG_DDB5476 is not set
72# CONFIG_DDB5477 is not set 91# CONFIG_DDB5477 is not set
73# CONFIG_NEC_OSPREY is not set 92# CONFIG_MACH_VR41XX is not set
93# CONFIG_PMC_YOSEMITE is not set
94# CONFIG_QEMU is not set
74# CONFIG_SGI_IP22 is not set 95# CONFIG_SGI_IP22 is not set
75# CONFIG_SGI_IP27 is not set 96# CONFIG_SGI_IP27 is not set
76# CONFIG_SGI_IP32 is not set 97# CONFIG_SGI_IP32 is not set
77# CONFIG_SIBYTE_SB1xxx_SOC is not set 98# CONFIG_SIBYTE_BIGSUR is not set
99# CONFIG_SIBYTE_SWARM is not set
100# CONFIG_SIBYTE_SENTOSA is not set
101# CONFIG_SIBYTE_RHONE is not set
102# CONFIG_SIBYTE_CARMEL is not set
103# CONFIG_SIBYTE_PTSWARM is not set
104# CONFIG_SIBYTE_LITTLESUR is not set
105# CONFIG_SIBYTE_CRHINE is not set
106# CONFIG_SIBYTE_CRHONE is not set
78# CONFIG_SNI_RM200_PCI is not set 107# CONFIG_SNI_RM200_PCI is not set
108# CONFIG_TOSHIBA_JMR3927 is not set
109# CONFIG_TOSHIBA_RBTX4927 is not set
110# CONFIG_TOSHIBA_RBTX4938 is not set
79CONFIG_RWSEM_GENERIC_SPINLOCK=y 111CONFIG_RWSEM_GENERIC_SPINLOCK=y
80CONFIG_GENERIC_CALIBRATE_DELAY=y 112CONFIG_GENERIC_CALIBRATE_DELAY=y
81CONFIG_HAVE_DEC_LOCK=y
82CONFIG_DMA_NONCOHERENT=y 113CONFIG_DMA_NONCOHERENT=y
83CONFIG_DMA_NEED_PCI_MAP_STATE=y 114CONFIG_DMA_NEED_PCI_MAP_STATE=y
115CONFIG_CPU_BIG_ENDIAN=y
84# CONFIG_CPU_LITTLE_ENDIAN is not set 116# CONFIG_CPU_LITTLE_ENDIAN is not set
117CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
85CONFIG_IRQ_CPU=y 118CONFIG_IRQ_CPU=y
86CONFIG_IRQ_CPU_RM7K=y 119CONFIG_IRQ_CPU_RM7K=y
87CONFIG_PCI_MARVELL=y 120CONFIG_PCI_MARVELL=y
@@ -94,8 +127,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
94# 127#
95# CPU selection 128# CPU selection
96# 129#
97# CONFIG_CPU_MIPS32 is not set 130# CONFIG_CPU_MIPS32_R1 is not set
98# CONFIG_CPU_MIPS64 is not set 131# CONFIG_CPU_MIPS32_R2 is not set
132# CONFIG_CPU_MIPS64_R1 is not set
133# CONFIG_CPU_MIPS64_R2 is not set
99# CONFIG_CPU_R3000 is not set 134# CONFIG_CPU_R3000 is not set
100# CONFIG_CPU_TX39XX is not set 135# CONFIG_CPU_TX39XX is not set
101# CONFIG_CPU_VR41XX is not set 136# CONFIG_CPU_VR41XX is not set
@@ -111,6 +146,17 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
111CONFIG_CPU_RM7000=y 146CONFIG_CPU_RM7000=y
112# CONFIG_CPU_RM9000 is not set 147# CONFIG_CPU_RM9000 is not set
113# CONFIG_CPU_SB1 is not set 148# CONFIG_CPU_SB1 is not set
149CONFIG_SYS_HAS_CPU_RM7000=y
150CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
151CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
152CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
153CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
154
155#
156# Kernel type
157#
158# CONFIG_32BIT is not set
159CONFIG_64BIT=y
114CONFIG_PAGE_SIZE_4KB=y 160CONFIG_PAGE_SIZE_4KB=y
115# CONFIG_PAGE_SIZE_8KB is not set 161# CONFIG_PAGE_SIZE_8KB is not set
116# CONFIG_PAGE_SIZE_16KB is not set 162# CONFIG_PAGE_SIZE_16KB is not set
@@ -118,9 +164,23 @@ CONFIG_PAGE_SIZE_4KB=y
118CONFIG_BOARD_SCACHE=y 164CONFIG_BOARD_SCACHE=y
119CONFIG_RM7000_CPU_SCACHE=y 165CONFIG_RM7000_CPU_SCACHE=y
120CONFIG_CPU_HAS_PREFETCH=y 166CONFIG_CPU_HAS_PREFETCH=y
167# CONFIG_MIPS_MT is not set
121CONFIG_CPU_HAS_LLSC=y 168CONFIG_CPU_HAS_LLSC=y
122CONFIG_CPU_HAS_LLDSCD=y 169CONFIG_CPU_HAS_LLDSCD=y
123CONFIG_CPU_HAS_SYNC=y 170CONFIG_CPU_HAS_SYNC=y
171CONFIG_GENERIC_HARDIRQS=y
172CONFIG_GENERIC_IRQ_PROBE=y
173CONFIG_CPU_SUPPORTS_HIGHMEM=y
174CONFIG_ARCH_FLATMEM_ENABLE=y
175CONFIG_SELECT_MEMORY_MODEL=y
176CONFIG_FLATMEM_MANUAL=y
177# CONFIG_DISCONTIGMEM_MANUAL is not set
178# CONFIG_SPARSEMEM_MANUAL is not set
179CONFIG_FLATMEM=y
180CONFIG_FLAT_NODE_MEM_MAP=y
181# CONFIG_SPARSEMEM_STATIC is not set
182CONFIG_PREEMPT_NONE=y
183# CONFIG_PREEMPT_VOLUNTARY is not set
124# CONFIG_PREEMPT is not set 184# CONFIG_PREEMPT is not set
125 185
126# 186#
@@ -129,7 +189,6 @@ CONFIG_CPU_HAS_SYNC=y
129CONFIG_HW_HAS_PCI=y 189CONFIG_HW_HAS_PCI=y
130CONFIG_PCI=y 190CONFIG_PCI=y
131CONFIG_PCI_LEGACY_PROC=y 191CONFIG_PCI_LEGACY_PROC=y
132CONFIG_PCI_NAMES=y
133CONFIG_MMU=y 192CONFIG_MMU=y
134 193
135# 194#
@@ -138,10 +197,6 @@ CONFIG_MMU=y
138# CONFIG_PCCARD is not set 197# CONFIG_PCCARD is not set
139 198
140# 199#
141# PC-card bridges
142#
143
144#
145# PCI Hotplug Support 200# PCI Hotplug Support
146# 201#
147# CONFIG_HOTPLUG_PCI is not set 202# CONFIG_HOTPLUG_PCI is not set
@@ -159,6 +214,79 @@ CONFIG_MIPS32_N32=y
159CONFIG_BINFMT_ELF32=y 214CONFIG_BINFMT_ELF32=y
160 215
161# 216#
217# Networking
218#
219CONFIG_NET=y
220
221#
222# Networking options
223#
224# CONFIG_PACKET is not set
225CONFIG_UNIX=y
226CONFIG_XFRM=y
227CONFIG_XFRM_USER=y
228CONFIG_NET_KEY=y
229CONFIG_INET=y
230# CONFIG_IP_MULTICAST is not set
231# CONFIG_IP_ADVANCED_ROUTER is not set
232CONFIG_IP_FIB_HASH=y
233CONFIG_IP_PNP=y
234CONFIG_IP_PNP_DHCP=y
235# CONFIG_IP_PNP_BOOTP is not set
236# CONFIG_IP_PNP_RARP is not set
237# CONFIG_NET_IPIP is not set
238# CONFIG_NET_IPGRE is not set
239# CONFIG_ARPD is not set
240# CONFIG_SYN_COOKIES is not set
241# CONFIG_INET_AH is not set
242# CONFIG_INET_ESP is not set
243# CONFIG_INET_IPCOMP is not set
244CONFIG_INET_TUNNEL=y
245CONFIG_INET_DIAG=y
246CONFIG_INET_TCP_DIAG=y
247# CONFIG_TCP_CONG_ADVANCED is not set
248CONFIG_TCP_CONG_BIC=y
249# CONFIG_IPV6 is not set
250# CONFIG_NETFILTER is not set
251
252#
253# DCCP Configuration (EXPERIMENTAL)
254#
255# CONFIG_IP_DCCP is not set
256
257#
258# SCTP Configuration (EXPERIMENTAL)
259#
260# CONFIG_IP_SCTP is not set
261# CONFIG_ATM is not set
262# CONFIG_BRIDGE is not set
263# CONFIG_VLAN_8021Q is not set
264# CONFIG_DECNET is not set
265# CONFIG_LLC2 is not set
266# CONFIG_IPX is not set
267# CONFIG_ATALK is not set
268# CONFIG_X25 is not set
269# CONFIG_LAPB is not set
270# CONFIG_NET_DIVERT is not set
271# CONFIG_ECONET is not set
272# CONFIG_WAN_ROUTER is not set
273# CONFIG_NET_SCHED is not set
274# CONFIG_NET_CLS_ROUTE is not set
275
276#
277# Network testing
278#
279# CONFIG_NET_PKTGEN is not set
280# CONFIG_HAMRADIO is not set
281# CONFIG_IRDA is not set
282# CONFIG_BT is not set
283CONFIG_IEEE80211=y
284# CONFIG_IEEE80211_DEBUG is not set
285CONFIG_IEEE80211_CRYPT_WEP=y
286CONFIG_IEEE80211_CRYPT_CCMP=y
287CONFIG_IEEE80211_CRYPT_TKIP=y
288
289#
162# Device Drivers 290# Device Drivers
163# 291#
164 292
@@ -167,7 +295,12 @@ CONFIG_BINFMT_ELF32=y
167# 295#
168CONFIG_STANDALONE=y 296CONFIG_STANDALONE=y
169CONFIG_PREVENT_FIRMWARE_BUILD=y 297CONFIG_PREVENT_FIRMWARE_BUILD=y
170# CONFIG_FW_LOADER is not set 298CONFIG_FW_LOADER=y
299
300#
301# Connector - unified userspace <-> kernelspace linker
302#
303CONFIG_CONNECTOR=y
171 304
172# 305#
173# Memory Technology Devices (MTD) 306# Memory Technology Devices (MTD)
@@ -186,7 +319,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
186# 319#
187# Block devices 320# Block devices
188# 321#
189# CONFIG_BLK_DEV_FD is not set
190# CONFIG_BLK_CPQ_DA is not set 322# CONFIG_BLK_CPQ_DA is not set
191# CONFIG_BLK_CPQ_CISS_DA is not set 323# CONFIG_BLK_CPQ_CISS_DA is not set
192# CONFIG_BLK_DEV_DAC960 is not set 324# CONFIG_BLK_DEV_DAC960 is not set
@@ -197,7 +329,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
197# CONFIG_BLK_DEV_SX8 is not set 329# CONFIG_BLK_DEV_SX8 is not set
198# CONFIG_BLK_DEV_RAM is not set 330# CONFIG_BLK_DEV_RAM is not set
199CONFIG_BLK_DEV_RAM_COUNT=16 331CONFIG_BLK_DEV_RAM_COUNT=16
200CONFIG_INITRAMFS_SOURCE=""
201CONFIG_CDROM_PKTCDVD=y 332CONFIG_CDROM_PKTCDVD=y
202CONFIG_CDROM_PKTCDVD_BUFFERS=8 333CONFIG_CDROM_PKTCDVD_BUFFERS=8
203# CONFIG_CDROM_PKTCDVD_WCACHE is not set 334# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -219,6 +350,7 @@ CONFIG_ATA_OVER_ETH=y
219# 350#
220# SCSI device support 351# SCSI device support
221# 352#
353CONFIG_RAID_ATTRS=y
222# CONFIG_SCSI is not set 354# CONFIG_SCSI is not set
223 355
224# 356#
@@ -229,6 +361,7 @@ CONFIG_ATA_OVER_ETH=y
229# 361#
230# Fusion MPT device support 362# Fusion MPT device support
231# 363#
364# CONFIG_FUSION is not set
232 365
233# 366#
234# IEEE 1394 (FireWire) support 367# IEEE 1394 (FireWire) support
@@ -241,77 +374,13 @@ CONFIG_ATA_OVER_ETH=y
241# CONFIG_I2O is not set 374# CONFIG_I2O is not set
242 375
243# 376#
244# Networking support 377# Network device support
245#
246CONFIG_NET=y
247
248#
249# Networking options
250#
251# CONFIG_PACKET is not set
252CONFIG_NETLINK_DEV=y
253CONFIG_UNIX=y
254CONFIG_NET_KEY=y
255CONFIG_INET=y
256# CONFIG_IP_MULTICAST is not set
257# CONFIG_IP_ADVANCED_ROUTER is not set
258CONFIG_IP_PNP=y
259CONFIG_IP_PNP_DHCP=y
260# CONFIG_IP_PNP_BOOTP is not set
261# CONFIG_IP_PNP_RARP is not set
262# CONFIG_NET_IPIP is not set
263# CONFIG_NET_IPGRE is not set
264# CONFIG_ARPD is not set
265# CONFIG_SYN_COOKIES is not set
266# CONFIG_INET_AH is not set
267# CONFIG_INET_ESP is not set
268# CONFIG_INET_IPCOMP is not set
269CONFIG_INET_TUNNEL=y
270CONFIG_IP_TCPDIAG=y
271# CONFIG_IP_TCPDIAG_IPV6 is not set
272# CONFIG_IPV6 is not set
273# CONFIG_NETFILTER is not set
274CONFIG_XFRM=y
275CONFIG_XFRM_USER=y
276
277#
278# SCTP Configuration (EXPERIMENTAL)
279#
280# CONFIG_IP_SCTP is not set
281# CONFIG_ATM is not set
282# CONFIG_BRIDGE is not set
283# CONFIG_VLAN_8021Q is not set
284# CONFIG_DECNET is not set
285# CONFIG_LLC2 is not set
286# CONFIG_IPX is not set
287# CONFIG_ATALK is not set
288# CONFIG_X25 is not set
289# CONFIG_LAPB is not set
290# CONFIG_NET_DIVERT is not set
291# CONFIG_ECONET is not set
292# CONFIG_WAN_ROUTER is not set
293
294#
295# QoS and/or fair queueing
296#
297# CONFIG_NET_SCHED is not set
298# CONFIG_NET_CLS_ROUTE is not set
299
300#
301# Network testing
302# 378#
303# CONFIG_NET_PKTGEN is not set
304# CONFIG_NETPOLL is not set
305# CONFIG_NET_POLL_CONTROLLER is not set
306# CONFIG_HAMRADIO is not set
307# CONFIG_IRDA is not set
308# CONFIG_BT is not set
309CONFIG_NETDEVICES=y 379CONFIG_NETDEVICES=y
310# CONFIG_DUMMY is not set 380# CONFIG_DUMMY is not set
311# CONFIG_BONDING is not set 381# CONFIG_BONDING is not set
312# CONFIG_EQUALIZER is not set 382# CONFIG_EQUALIZER is not set
313# CONFIG_TUN is not set 383# CONFIG_TUN is not set
314# CONFIG_ETHERTAP is not set
315 384
316# 385#
317# ARCnet devices 386# ARCnet devices
@@ -319,6 +388,21 @@ CONFIG_NETDEVICES=y
319# CONFIG_ARCNET is not set 388# CONFIG_ARCNET is not set
320 389
321# 390#
391# PHY device support
392#
393CONFIG_PHYLIB=y
394CONFIG_PHYCONTROL=y
395
396#
397# MII PHY device drivers
398#
399CONFIG_MARVELL_PHY=y
400CONFIG_DAVICOM_PHY=y
401CONFIG_QSEMI_PHY=y
402CONFIG_LXT_PHY=y
403CONFIG_CICADA_PHY=y
404
405#
322# Ethernet (10 or 100Mbit) 406# Ethernet (10 or 100Mbit)
323# 407#
324CONFIG_NET_ETHERNET=y 408CONFIG_NET_ETHERNET=y
@@ -345,12 +429,16 @@ CONFIG_GALILEO_64240_ETH=y
345# CONFIG_HAMACHI is not set 429# CONFIG_HAMACHI is not set
346# CONFIG_YELLOWFIN is not set 430# CONFIG_YELLOWFIN is not set
347# CONFIG_R8169 is not set 431# CONFIG_R8169 is not set
432# CONFIG_SIS190 is not set
433# CONFIG_SKGE is not set
348# CONFIG_SK98LIN is not set 434# CONFIG_SK98LIN is not set
349# CONFIG_TIGON3 is not set 435# CONFIG_TIGON3 is not set
436# CONFIG_BNX2 is not set
350 437
351# 438#
352# Ethernet (10000 Mbit) 439# Ethernet (10000 Mbit)
353# 440#
441# CONFIG_CHELSIO_T1 is not set
354# CONFIG_IXGB is not set 442# CONFIG_IXGB is not set
355# CONFIG_S2IO is not set 443# CONFIG_S2IO is not set
356 444
@@ -363,6 +451,8 @@ CONFIG_GALILEO_64240_ETH=y
363# Wireless LAN (non-hamradio) 451# Wireless LAN (non-hamradio)
364# 452#
365# CONFIG_NET_RADIO is not set 453# CONFIG_NET_RADIO is not set
454# CONFIG_IPW_DEBUG is not set
455CONFIG_IPW2200=y
366 456
367# 457#
368# Wan interfaces 458# Wan interfaces
@@ -374,6 +464,8 @@ CONFIG_GALILEO_64240_ETH=y
374# CONFIG_SLIP is not set 464# CONFIG_SLIP is not set
375# CONFIG_SHAPER is not set 465# CONFIG_SHAPER is not set
376# CONFIG_NETCONSOLE is not set 466# CONFIG_NETCONSOLE is not set
467# CONFIG_NETPOLL is not set
468# CONFIG_NET_POLL_CONTROLLER is not set
377 469
378# 470#
379# ISDN subsystem 471# ISDN subsystem
@@ -403,19 +495,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
403# CONFIG_INPUT_EVBUG is not set 495# CONFIG_INPUT_EVBUG is not set
404 496
405# 497#
406# Input I/O drivers
407#
408# CONFIG_GAMEPORT is not set
409CONFIG_SOUND_GAMEPORT=y
410CONFIG_SERIO=y
411# CONFIG_SERIO_I8042 is not set
412CONFIG_SERIO_SERPORT=y
413# CONFIG_SERIO_CT82C710 is not set
414# CONFIG_SERIO_PCIPS2 is not set
415# CONFIG_SERIO_LIBPS2 is not set
416CONFIG_SERIO_RAW=y
417
418#
419# Input Device Drivers 498# Input Device Drivers
420# 499#
421# CONFIG_INPUT_KEYBOARD is not set 500# CONFIG_INPUT_KEYBOARD is not set
@@ -425,6 +504,17 @@ CONFIG_SERIO_RAW=y
425# CONFIG_INPUT_MISC is not set 504# CONFIG_INPUT_MISC is not set
426 505
427# 506#
507# Hardware I/O ports
508#
509CONFIG_SERIO=y
510# CONFIG_SERIO_I8042 is not set
511CONFIG_SERIO_SERPORT=y
512# CONFIG_SERIO_PCIPS2 is not set
513# CONFIG_SERIO_LIBPS2 is not set
514CONFIG_SERIO_RAW=y
515# CONFIG_GAMEPORT is not set
516
517#
428# Character devices 518# Character devices
429# 519#
430CONFIG_VT=y 520CONFIG_VT=y
@@ -445,6 +535,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4
445# 535#
446CONFIG_SERIAL_CORE=y 536CONFIG_SERIAL_CORE=y
447CONFIG_SERIAL_CORE_CONSOLE=y 537CONFIG_SERIAL_CORE_CONSOLE=y
538# CONFIG_SERIAL_JSM is not set
448CONFIG_UNIX98_PTYS=y 539CONFIG_UNIX98_PTYS=y
449CONFIG_LEGACY_PTYS=y 540CONFIG_LEGACY_PTYS=y
450CONFIG_LEGACY_PTY_COUNT=256 541CONFIG_LEGACY_PTY_COUNT=256
@@ -471,6 +562,11 @@ CONFIG_LEGACY_PTY_COUNT=256
471# CONFIG_RAW_DRIVER is not set 562# CONFIG_RAW_DRIVER is not set
472 563
473# 564#
565# TPM devices
566#
567# CONFIG_TCG_TPM is not set
568
569#
474# I2C support 570# I2C support
475# 571#
476# CONFIG_I2C is not set 572# CONFIG_I2C is not set
@@ -481,10 +577,20 @@ CONFIG_LEGACY_PTY_COUNT=256
481# CONFIG_W1 is not set 577# CONFIG_W1 is not set
482 578
483# 579#
580# Hardware Monitoring support
581#
582# CONFIG_HWMON is not set
583# CONFIG_HWMON_VID is not set
584
585#
484# Misc devices 586# Misc devices
485# 587#
486 588
487# 589#
590# Multimedia Capabilities Port drivers
591#
592
593#
488# Multimedia devices 594# Multimedia devices
489# 595#
490# CONFIG_VIDEO_DEV is not set 596# CONFIG_VIDEO_DEV is not set
@@ -504,7 +610,6 @@ CONFIG_LEGACY_PTY_COUNT=256
504# 610#
505# CONFIG_VGA_CONSOLE is not set 611# CONFIG_VGA_CONSOLE is not set
506CONFIG_DUMMY_CONSOLE=y 612CONFIG_DUMMY_CONSOLE=y
507# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
508 613
509# 614#
510# Sound 615# Sound
@@ -514,13 +619,9 @@ CONFIG_DUMMY_CONSOLE=y
514# 619#
515# USB support 620# USB support
516# 621#
517# CONFIG_USB is not set
518CONFIG_USB_ARCH_HAS_HCD=y 622CONFIG_USB_ARCH_HAS_HCD=y
519CONFIG_USB_ARCH_HAS_OHCI=y 623CONFIG_USB_ARCH_HAS_OHCI=y
520 624# CONFIG_USB is not set
521#
522# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
523#
524 625
525# 626#
526# USB Gadget Support 627# USB Gadget Support
@@ -538,21 +639,29 @@ CONFIG_USB_ARCH_HAS_OHCI=y
538# CONFIG_INFINIBAND is not set 639# CONFIG_INFINIBAND is not set
539 640
540# 641#
642# SN Devices
643#
644
645#
541# File systems 646# File systems
542# 647#
543CONFIG_EXT2_FS=y 648CONFIG_EXT2_FS=y
544# CONFIG_EXT2_FS_XATTR is not set 649# CONFIG_EXT2_FS_XATTR is not set
650# CONFIG_EXT2_FS_XIP is not set
545# CONFIG_EXT3_FS is not set 651# CONFIG_EXT3_FS is not set
546# CONFIG_JBD is not set 652# CONFIG_JBD is not set
547# CONFIG_REISERFS_FS is not set 653# CONFIG_REISERFS_FS is not set
548# CONFIG_JFS_FS is not set 654# CONFIG_JFS_FS is not set
655# CONFIG_FS_POSIX_ACL is not set
549# CONFIG_XFS_FS is not set 656# CONFIG_XFS_FS is not set
550# CONFIG_MINIX_FS is not set 657# CONFIG_MINIX_FS is not set
551# CONFIG_ROMFS_FS is not set 658# CONFIG_ROMFS_FS is not set
659CONFIG_INOTIFY=y
552# CONFIG_QUOTA is not set 660# CONFIG_QUOTA is not set
553CONFIG_DNOTIFY=y 661CONFIG_DNOTIFY=y
554# CONFIG_AUTOFS_FS is not set 662# CONFIG_AUTOFS_FS is not set
555# CONFIG_AUTOFS4_FS is not set 663# CONFIG_AUTOFS4_FS is not set
664CONFIG_FUSE_FS=y
556 665
557# 666#
558# CD-ROM/DVD Filesystems 667# CD-ROM/DVD Filesystems
@@ -573,12 +682,10 @@ CONFIG_DNOTIFY=y
573CONFIG_PROC_FS=y 682CONFIG_PROC_FS=y
574CONFIG_PROC_KCORE=y 683CONFIG_PROC_KCORE=y
575CONFIG_SYSFS=y 684CONFIG_SYSFS=y
576# CONFIG_DEVFS_FS is not set
577CONFIG_DEVPTS_FS_XATTR=y
578CONFIG_DEVPTS_FS_SECURITY=y
579# CONFIG_TMPFS is not set 685# CONFIG_TMPFS is not set
580# CONFIG_HUGETLB_PAGE is not set 686# CONFIG_HUGETLB_PAGE is not set
581CONFIG_RAMFS=y 687CONFIG_RAMFS=y
688CONFIG_RELAYFS_FS=y
582 689
583# 690#
584# Miscellaneous filesystems 691# Miscellaneous filesystems
@@ -610,6 +717,7 @@ CONFIG_NFSD=y
610CONFIG_ROOT_NFS=y 717CONFIG_ROOT_NFS=y
611CONFIG_LOCKD=y 718CONFIG_LOCKD=y
612CONFIG_EXPORTFS=y 719CONFIG_EXPORTFS=y
720CONFIG_NFS_COMMON=y
613CONFIG_SUNRPC=y 721CONFIG_SUNRPC=y
614# CONFIG_RPCSEC_GSS_KRB5 is not set 722# CONFIG_RPCSEC_GSS_KRB5 is not set
615# CONFIG_RPCSEC_GSS_SPKM3 is not set 723# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -618,6 +726,7 @@ CONFIG_SUNRPC=y
618# CONFIG_NCP_FS is not set 726# CONFIG_NCP_FS is not set
619# CONFIG_CODA_FS is not set 727# CONFIG_CODA_FS is not set
620# CONFIG_AFS_FS is not set 728# CONFIG_AFS_FS is not set
729# CONFIG_9P_FS is not set
621 730
622# 731#
623# Partition Types 732# Partition Types
@@ -638,7 +747,9 @@ CONFIG_MSDOS_PARTITION=y
638# 747#
639# Kernel hacking 748# Kernel hacking
640# 749#
750# CONFIG_PRINTK_TIME is not set
641# CONFIG_DEBUG_KERNEL is not set 751# CONFIG_DEBUG_KERNEL is not set
752CONFIG_LOG_BUF_SHIFT=14
642CONFIG_CROSSCOMPILE=y 753CONFIG_CROSSCOMPILE=y
643CONFIG_CMDLINE="" 754CONFIG_CMDLINE=""
644 755
@@ -652,7 +763,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
652# 763#
653# Cryptographic options 764# Cryptographic options
654# 765#
655# CONFIG_CRYPTO is not set 766CONFIG_CRYPTO=y
767CONFIG_CRYPTO_HMAC=y
768CONFIG_CRYPTO_NULL=y
769CONFIG_CRYPTO_MD4=y
770CONFIG_CRYPTO_MD5=y
771CONFIG_CRYPTO_SHA1=y
772CONFIG_CRYPTO_SHA256=y
773CONFIG_CRYPTO_SHA512=y
774CONFIG_CRYPTO_WP512=y
775CONFIG_CRYPTO_TGR192=y
776CONFIG_CRYPTO_DES=y
777CONFIG_CRYPTO_BLOWFISH=y
778CONFIG_CRYPTO_TWOFISH=y
779CONFIG_CRYPTO_SERPENT=y
780CONFIG_CRYPTO_AES=y
781CONFIG_CRYPTO_CAST5=y
782CONFIG_CRYPTO_CAST6=y
783CONFIG_CRYPTO_TEA=y
784CONFIG_CRYPTO_ARC4=y
785CONFIG_CRYPTO_KHAZAD=y
786CONFIG_CRYPTO_ANUBIS=y
787CONFIG_CRYPTO_DEFLATE=y
788CONFIG_CRYPTO_MICHAEL_MIC=y
789CONFIG_CRYPTO_CRC32C=y
790# CONFIG_CRYPTO_TEST is not set
656 791
657# 792#
658# Hardware crypto devices 793# Hardware crypto devices
@@ -662,7 +797,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
662# Library routines 797# Library routines
663# 798#
664# CONFIG_CRC_CCITT is not set 799# CONFIG_CRC_CCITT is not set
665# CONFIG_CRC32 is not set 800CONFIG_CRC16=y
666# CONFIG_LIBCRC32C is not set 801CONFIG_CRC32=y
667CONFIG_GENERIC_HARDIRQS=y 802CONFIG_LIBCRC32C=y
668CONFIG_GENERIC_IRQ_PROBE=y 803CONFIG_ZLIB_INFLATE=y
804CONFIG_ZLIB_DEFLATE=y
diff --git a/arch/mips/configs/pb1100_defconfig b/arch/mips/configs/pb1100_defconfig
index 813e3a8b480b..47247addee1b 100644
--- a/arch/mips/configs/pb1100_defconfig
+++ b/arch/mips/configs/pb1100_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:08 2005 4# Thu Oct 20 22:26:41 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14
29CONFIG_HOTPLUG=y 27CONFIG_HOTPLUG=y
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,56 +59,70 @@ CONFIG_KMOD=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60# CONFIG_MACH_VR41XX is not set 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_TOSHIBA_JMR3927 is not set 64# CONFIG_MIPS_PB1000 is not set
65CONFIG_MIPS_PB1100=y
66# CONFIG_MIPS_PB1500 is not set
67# CONFIG_MIPS_PB1550 is not set
68# CONFIG_MIPS_PB1200 is not set
69# CONFIG_MIPS_DB1000 is not set
70# CONFIG_MIPS_DB1100 is not set
71# CONFIG_MIPS_DB1500 is not set
72# CONFIG_MIPS_DB1550 is not set
73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
62# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
63# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
64# CONFIG_MIPS_EV64120 is not set 77# CONFIG_MIPS_EV64120 is not set
65# CONFIG_MIPS_EV96100 is not set 78# CONFIG_MIPS_EV96100 is not set
66# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
67# CONFIG_LASAT is not set
68# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
69# CONFIG_MIPS_ATLAS is not set 83# CONFIG_MIPS_ATLAS is not set
70# CONFIG_MIPS_MALTA is not set 84# CONFIG_MIPS_MALTA is not set
71# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
72# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
73# CONFIG_MOMENCO_OCELOT_G is not set
74# CONFIG_MOMENCO_OCELOT_C is not set
75# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
76# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
77# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
78# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
79# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
80# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
81# CONFIG_NEC_OSPREY is not set 98# CONFIG_MACH_VR41XX is not set
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
82# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
83CONFIG_SOC_AU1X00=y 102# CONFIG_SGI_IP27 is not set
84# CONFIG_SOC_AU1000 is not set 103# CONFIG_SGI_IP32 is not set
85CONFIG_SOC_AU1100=y 104# CONFIG_SIBYTE_BIGSUR is not set
86# CONFIG_SOC_AU1500 is not set 105# CONFIG_SIBYTE_SWARM is not set
87# CONFIG_SOC_AU1550 is not set 106# CONFIG_SIBYTE_SENTOSA is not set
88# CONFIG_MIPS_PB1000 is not set 107# CONFIG_SIBYTE_RHONE is not set
89CONFIG_MIPS_PB1100=y 108# CONFIG_SIBYTE_CARMEL is not set
90# CONFIG_MIPS_PB1500 is not set 109# CONFIG_SIBYTE_PTSWARM is not set
91# CONFIG_MIPS_PB1550 is not set 110# CONFIG_SIBYTE_LITTLESUR is not set
92# CONFIG_MIPS_DB1000 is not set 111# CONFIG_SIBYTE_CRHINE is not set
93# CONFIG_MIPS_DB1100 is not set 112# CONFIG_SIBYTE_CRHONE is not set
94# CONFIG_MIPS_DB1500 is not set
95# CONFIG_MIPS_DB1550 is not set
96# CONFIG_MIPS_BOSPORUS is not set
97# CONFIG_MIPS_MIRAGE is not set
98# CONFIG_MIPS_XXS1500 is not set
99# CONFIG_MIPS_MTX1 is not set
100# CONFIG_SIBYTE_SB1xxx_SOC is not set
101# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
102# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
103CONFIG_RWSEM_GENERIC_SPINLOCK=y 117CONFIG_RWSEM_GENERIC_SPINLOCK=y
104CONFIG_GENERIC_CALIBRATE_DELAY=y 118CONFIG_GENERIC_CALIBRATE_DELAY=y
105CONFIG_HAVE_DEC_LOCK=y
106CONFIG_DMA_NONCOHERENT=y 119CONFIG_DMA_NONCOHERENT=y
107CONFIG_DMA_NEED_PCI_MAP_STATE=y 120CONFIG_DMA_NEED_PCI_MAP_STATE=y
121# CONFIG_CPU_BIG_ENDIAN is not set
108CONFIG_CPU_LITTLE_ENDIAN=y 122CONFIG_CPU_LITTLE_ENDIAN=y
123CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
124CONFIG_SOC_AU1100=y
125CONFIG_SOC_AU1X00=y
109CONFIG_SWAP_IO_SPACE=y 126CONFIG_SWAP_IO_SPACE=y
110# CONFIG_AU1X00_USB_DEVICE is not set 127# CONFIG_AU1X00_USB_DEVICE is not set
111CONFIG_MIPS_L1_CACHE_SHIFT=5 128CONFIG_MIPS_L1_CACHE_SHIFT=5
@@ -113,8 +130,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
113# 130#
114# CPU selection 131# CPU selection
115# 132#
116CONFIG_CPU_MIPS32=y 133CONFIG_CPU_MIPS32_R1=y
117# CONFIG_CPU_MIPS64 is not set 134# CONFIG_CPU_MIPS32_R2 is not set
135# CONFIG_CPU_MIPS64_R1 is not set
136# CONFIG_CPU_MIPS64_R2 is not set
118# CONFIG_CPU_R3000 is not set 137# CONFIG_CPU_R3000 is not set
119# CONFIG_CPU_TX39XX is not set 138# CONFIG_CPU_TX39XX is not set
120# CONFIG_CPU_VR41XX is not set 139# CONFIG_CPU_VR41XX is not set
@@ -130,15 +149,39 @@ CONFIG_CPU_MIPS32=y
130# CONFIG_CPU_RM7000 is not set 149# CONFIG_CPU_RM7000 is not set
131# CONFIG_CPU_RM9000 is not set 150# CONFIG_CPU_RM9000 is not set
132# CONFIG_CPU_SB1 is not set 151# CONFIG_CPU_SB1 is not set
152CONFIG_SYS_HAS_CPU_MIPS32_R1=y
153CONFIG_CPU_MIPS32=y
154CONFIG_CPU_MIPSR1=y
155CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
156CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
157
158#
159# Kernel type
160#
161CONFIG_32BIT=y
162# CONFIG_64BIT is not set
133CONFIG_PAGE_SIZE_4KB=y 163CONFIG_PAGE_SIZE_4KB=y
134# CONFIG_PAGE_SIZE_8KB is not set 164# CONFIG_PAGE_SIZE_8KB is not set
135# CONFIG_PAGE_SIZE_16KB is not set 165# CONFIG_PAGE_SIZE_16KB is not set
136# CONFIG_PAGE_SIZE_64KB is not set 166# CONFIG_PAGE_SIZE_64KB is not set
137CONFIG_CPU_HAS_PREFETCH=y 167CONFIG_CPU_HAS_PREFETCH=y
138# CONFIG_64BIT_PHYS_ADDR is not set 168# CONFIG_MIPS_MT is not set
169CONFIG_64BIT_PHYS_ADDR=y
139# CONFIG_CPU_ADVANCED is not set 170# CONFIG_CPU_ADVANCED is not set
140CONFIG_CPU_HAS_LLSC=y 171CONFIG_CPU_HAS_LLSC=y
141CONFIG_CPU_HAS_SYNC=y 172CONFIG_CPU_HAS_SYNC=y
173CONFIG_GENERIC_HARDIRQS=y
174CONFIG_GENERIC_IRQ_PROBE=y
175CONFIG_ARCH_FLATMEM_ENABLE=y
176CONFIG_SELECT_MEMORY_MODEL=y
177CONFIG_FLATMEM_MANUAL=y
178# CONFIG_DISCONTIGMEM_MANUAL is not set
179# CONFIG_SPARSEMEM_MANUAL is not set
180CONFIG_FLATMEM=y
181CONFIG_FLAT_NODE_MEM_MAP=y
182# CONFIG_SPARSEMEM_STATIC is not set
183CONFIG_PREEMPT_NONE=y
184# CONFIG_PREEMPT_VOLUNTARY is not set
142# CONFIG_PREEMPT is not set 185# CONFIG_PREEMPT is not set
143 186
144# 187#
@@ -154,6 +197,8 @@ CONFIG_MMU=y
154CONFIG_PCCARD=m 197CONFIG_PCCARD=m
155# CONFIG_PCMCIA_DEBUG is not set 198# CONFIG_PCMCIA_DEBUG is not set
156CONFIG_PCMCIA=m 199CONFIG_PCMCIA=m
200CONFIG_PCMCIA_LOAD_CIS=y
201CONFIG_PCMCIA_IOCTL=y
157 202
158# 203#
159# PC-card bridges 204# PC-card bridges
@@ -171,6 +216,100 @@ CONFIG_PCMCIA=m
171CONFIG_BINFMT_ELF=y 216CONFIG_BINFMT_ELF=y
172# CONFIG_BINFMT_MISC is not set 217# CONFIG_BINFMT_MISC is not set
173CONFIG_TRAD_SIGNALS=y 218CONFIG_TRAD_SIGNALS=y
219# CONFIG_PM is not set
220
221#
222# Networking
223#
224CONFIG_NET=y
225
226#
227# Networking options
228#
229CONFIG_PACKET=y
230# CONFIG_PACKET_MMAP is not set
231CONFIG_UNIX=y
232CONFIG_XFRM=y
233CONFIG_XFRM_USER=m
234CONFIG_NET_KEY=y
235CONFIG_INET=y
236CONFIG_IP_MULTICAST=y
237# CONFIG_IP_ADVANCED_ROUTER is not set
238CONFIG_IP_FIB_HASH=y
239CONFIG_IP_PNP=y
240# CONFIG_IP_PNP_DHCP is not set
241CONFIG_IP_PNP_BOOTP=y
242# CONFIG_IP_PNP_RARP is not set
243# CONFIG_NET_IPIP is not set
244# CONFIG_NET_IPGRE is not set
245# CONFIG_IP_MROUTE is not set
246# CONFIG_ARPD is not set
247# CONFIG_SYN_COOKIES is not set
248# CONFIG_INET_AH is not set
249# CONFIG_INET_ESP is not set
250# CONFIG_INET_IPCOMP is not set
251CONFIG_INET_TUNNEL=m
252CONFIG_INET_DIAG=y
253CONFIG_INET_TCP_DIAG=y
254# CONFIG_TCP_CONG_ADVANCED is not set
255CONFIG_TCP_CONG_BIC=y
256
257#
258# IP: Virtual Server Configuration
259#
260# CONFIG_IP_VS is not set
261# CONFIG_IPV6 is not set
262CONFIG_NETFILTER=y
263# CONFIG_NETFILTER_DEBUG is not set
264CONFIG_NETFILTER_NETLINK=m
265CONFIG_NETFILTER_NETLINK_QUEUE=m
266CONFIG_NETFILTER_NETLINK_LOG=m
267
268#
269# IP: Netfilter Configuration
270#
271# CONFIG_IP_NF_CONNTRACK is not set
272CONFIG_IP_NF_PPTP=m
273# CONFIG_IP_NF_QUEUE is not set
274# CONFIG_IP_NF_IPTABLES is not set
275# CONFIG_IP_NF_ARPTABLES is not set
276
277#
278# DCCP Configuration (EXPERIMENTAL)
279#
280# CONFIG_IP_DCCP is not set
281
282#
283# SCTP Configuration (EXPERIMENTAL)
284#
285# CONFIG_IP_SCTP is not set
286# CONFIG_ATM is not set
287# CONFIG_BRIDGE is not set
288# CONFIG_VLAN_8021Q is not set
289# CONFIG_DECNET is not set
290# CONFIG_LLC2 is not set
291# CONFIG_IPX is not set
292# CONFIG_ATALK is not set
293# CONFIG_X25 is not set
294# CONFIG_LAPB is not set
295# CONFIG_NET_DIVERT is not set
296# CONFIG_ECONET is not set
297# CONFIG_WAN_ROUTER is not set
298# CONFIG_NET_SCHED is not set
299# CONFIG_NET_CLS_ROUTE is not set
300
301#
302# Network testing
303#
304# CONFIG_NET_PKTGEN is not set
305# CONFIG_HAMRADIO is not set
306# CONFIG_IRDA is not set
307# CONFIG_BT is not set
308CONFIG_IEEE80211=m
309# CONFIG_IEEE80211_DEBUG is not set
310CONFIG_IEEE80211_CRYPT_WEP=m
311CONFIG_IEEE80211_CRYPT_CCMP=m
312CONFIG_IEEE80211_CRYPT_TKIP=m
174 313
175# 314#
176# Device Drivers 315# Device Drivers
@@ -181,15 +320,20 @@ CONFIG_TRAD_SIGNALS=y
181# 320#
182CONFIG_STANDALONE=y 321CONFIG_STANDALONE=y
183CONFIG_PREVENT_FIRMWARE_BUILD=y 322CONFIG_PREVENT_FIRMWARE_BUILD=y
184# CONFIG_FW_LOADER is not set 323CONFIG_FW_LOADER=m
324
325#
326# Connector - unified userspace <-> kernelspace linker
327#
328CONFIG_CONNECTOR=m
185 329
186# 330#
187# Memory Technology Devices (MTD) 331# Memory Technology Devices (MTD)
188# 332#
189CONFIG_MTD=y 333CONFIG_MTD=y
190# CONFIG_MTD_DEBUG is not set 334# CONFIG_MTD_DEBUG is not set
191CONFIG_MTD_PARTITIONS=y
192# CONFIG_MTD_CONCAT is not set 335# CONFIG_MTD_CONCAT is not set
336CONFIG_MTD_PARTITIONS=y
193# CONFIG_MTD_REDBOOT_PARTS is not set 337# CONFIG_MTD_REDBOOT_PARTS is not set
194# CONFIG_MTD_CMDLINE_PARTS is not set 338# CONFIG_MTD_CMDLINE_PARTS is not set
195 339
@@ -233,9 +377,8 @@ CONFIG_MTD_CFI_UTIL=y
233# 377#
234# CONFIG_MTD_COMPLEX_MAPPINGS is not set 378# CONFIG_MTD_COMPLEX_MAPPINGS is not set
235# CONFIG_MTD_PHYSMAP is not set 379# CONFIG_MTD_PHYSMAP is not set
236CONFIG_MTD_PB1100=y 380CONFIG_MTD_ALCHEMY=y
237CONFIG_MTD_PB1500_BOOT=y 381# CONFIG_MTD_PLATRAM is not set
238CONFIG_MTD_PB1500_USER=y
239 382
240# 383#
241# Self-contained MTD device drivers 384# Self-contained MTD device drivers
@@ -270,14 +413,12 @@ CONFIG_MTD_PB1500_USER=y
270# 413#
271# Block devices 414# Block devices
272# 415#
273# CONFIG_BLK_DEV_FD is not set
274# CONFIG_BLK_DEV_COW_COMMON is not set 416# CONFIG_BLK_DEV_COW_COMMON is not set
275CONFIG_BLK_DEV_LOOP=y 417CONFIG_BLK_DEV_LOOP=y
276# CONFIG_BLK_DEV_CRYPTOLOOP is not set 418# CONFIG_BLK_DEV_CRYPTOLOOP is not set
277# CONFIG_BLK_DEV_NBD is not set 419# CONFIG_BLK_DEV_NBD is not set
278# CONFIG_BLK_DEV_RAM is not set 420# CONFIG_BLK_DEV_RAM is not set
279CONFIG_BLK_DEV_RAM_COUNT=16 421CONFIG_BLK_DEV_RAM_COUNT=16
280CONFIG_INITRAMFS_SOURCE=""
281# CONFIG_LBD is not set 422# CONFIG_LBD is not set
282CONFIG_CDROM_PKTCDVD=m 423CONFIG_CDROM_PKTCDVD=m
283CONFIG_CDROM_PKTCDVD_BUFFERS=8 424CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -300,6 +441,7 @@ CONFIG_ATA_OVER_ETH=m
300# 441#
301# SCSI device support 442# SCSI device support
302# 443#
444CONFIG_RAID_ATTRS=m
303# CONFIG_SCSI is not set 445# CONFIG_SCSI is not set
304 446
305# 447#
@@ -310,6 +452,7 @@ CONFIG_ATA_OVER_ETH=m
310# 452#
311# Fusion MPT device support 453# Fusion MPT device support
312# 454#
455# CONFIG_FUSION is not set
313 456
314# 457#
315# IEEE 1394 (FireWire) support 458# IEEE 1394 (FireWire) support
@@ -320,94 +463,28 @@ CONFIG_ATA_OVER_ETH=m
320# 463#
321 464
322# 465#
323# Networking support 466# Network device support
324#
325CONFIG_NET=y
326
327#
328# Networking options
329#
330CONFIG_PACKET=y
331# CONFIG_PACKET_MMAP is not set
332CONFIG_NETLINK_DEV=y
333CONFIG_UNIX=y
334CONFIG_NET_KEY=y
335CONFIG_INET=y
336CONFIG_IP_MULTICAST=y
337# CONFIG_IP_ADVANCED_ROUTER is not set
338CONFIG_IP_PNP=y
339# CONFIG_IP_PNP_DHCP is not set
340CONFIG_IP_PNP_BOOTP=y
341# CONFIG_IP_PNP_RARP is not set
342# CONFIG_NET_IPIP is not set
343# CONFIG_NET_IPGRE is not set
344# CONFIG_IP_MROUTE is not set
345# CONFIG_ARPD is not set
346# CONFIG_SYN_COOKIES is not set
347# CONFIG_INET_AH is not set
348# CONFIG_INET_ESP is not set
349# CONFIG_INET_IPCOMP is not set
350CONFIG_INET_TUNNEL=m
351CONFIG_IP_TCPDIAG=m
352# CONFIG_IP_TCPDIAG_IPV6 is not set
353
354#
355# IP: Virtual Server Configuration
356#
357# CONFIG_IP_VS is not set
358# CONFIG_IPV6 is not set
359CONFIG_NETFILTER=y
360# CONFIG_NETFILTER_DEBUG is not set
361
362#
363# IP: Netfilter Configuration
364#
365# CONFIG_IP_NF_CONNTRACK is not set
366CONFIG_IP_NF_CONNTRACK_MARK=y
367# CONFIG_IP_NF_QUEUE is not set
368# CONFIG_IP_NF_IPTABLES is not set
369# CONFIG_IP_NF_ARPTABLES is not set
370CONFIG_XFRM=y
371CONFIG_XFRM_USER=m
372
373#
374# SCTP Configuration (EXPERIMENTAL)
375# 467#
376# CONFIG_IP_SCTP is not set 468CONFIG_NETDEVICES=y
377# CONFIG_ATM is not set 469# CONFIG_DUMMY is not set
378# CONFIG_BRIDGE is not set 470# CONFIG_BONDING is not set
379# CONFIG_VLAN_8021Q is not set 471# CONFIG_EQUALIZER is not set
380# CONFIG_DECNET is not set 472# CONFIG_TUN is not set
381# CONFIG_LLC2 is not set
382# CONFIG_IPX is not set
383# CONFIG_ATALK is not set
384# CONFIG_X25 is not set
385# CONFIG_LAPB is not set
386# CONFIG_NET_DIVERT is not set
387# CONFIG_ECONET is not set
388# CONFIG_WAN_ROUTER is not set
389 473
390# 474#
391# QoS and/or fair queueing 475# PHY device support
392# 476#
393# CONFIG_NET_SCHED is not set 477CONFIG_PHYLIB=m
394# CONFIG_NET_CLS_ROUTE is not set 478CONFIG_PHYCONTROL=y
395 479
396# 480#
397# Network testing 481# MII PHY device drivers
398# 482#
399# CONFIG_NET_PKTGEN is not set 483CONFIG_MARVELL_PHY=m
400# CONFIG_NETPOLL is not set 484CONFIG_DAVICOM_PHY=m
401# CONFIG_NET_POLL_CONTROLLER is not set 485CONFIG_QSEMI_PHY=m
402# CONFIG_HAMRADIO is not set 486CONFIG_LXT_PHY=m
403# CONFIG_IRDA is not set 487CONFIG_CICADA_PHY=m
404# CONFIG_BT is not set
405CONFIG_NETDEVICES=y
406# CONFIG_DUMMY is not set
407# CONFIG_BONDING is not set
408# CONFIG_EQUALIZER is not set
409# CONFIG_TUN is not set
410# CONFIG_ETHERTAP is not set
411 488
412# 489#
413# Ethernet (10 or 100Mbit) 490# Ethernet (10 or 100Mbit)
@@ -453,6 +530,8 @@ CONFIG_PPPOE=m
453# CONFIG_SLIP is not set 530# CONFIG_SLIP is not set
454# CONFIG_SHAPER is not set 531# CONFIG_SHAPER is not set
455# CONFIG_NETCONSOLE is not set 532# CONFIG_NETCONSOLE is not set
533# CONFIG_NETPOLL is not set
534# CONFIG_NET_POLL_CONTROLLER is not set
456 535
457# 536#
458# ISDN subsystem 537# ISDN subsystem
@@ -482,18 +561,6 @@ CONFIG_INPUT_EVDEV=y
482# CONFIG_INPUT_EVBUG is not set 561# CONFIG_INPUT_EVBUG is not set
483 562
484# 563#
485# Input I/O drivers
486#
487# CONFIG_GAMEPORT is not set
488CONFIG_SOUND_GAMEPORT=y
489CONFIG_SERIO=y
490# CONFIG_SERIO_I8042 is not set
491CONFIG_SERIO_SERPORT=y
492# CONFIG_SERIO_CT82C710 is not set
493# CONFIG_SERIO_LIBPS2 is not set
494CONFIG_SERIO_RAW=m
495
496#
497# Input Device Drivers 564# Input Device Drivers
498# 565#
499# CONFIG_INPUT_KEYBOARD is not set 566# CONFIG_INPUT_KEYBOARD is not set
@@ -503,6 +570,16 @@ CONFIG_SERIO_RAW=m
503# CONFIG_INPUT_MISC is not set 570# CONFIG_INPUT_MISC is not set
504 571
505# 572#
573# Hardware I/O ports
574#
575CONFIG_SERIO=y
576# CONFIG_SERIO_I8042 is not set
577CONFIG_SERIO_SERPORT=y
578# CONFIG_SERIO_LIBPS2 is not set
579CONFIG_SERIO_RAW=m
580# CONFIG_GAMEPORT is not set
581
582#
506# Character devices 583# Character devices
507# 584#
508CONFIG_VT=y 585CONFIG_VT=y
@@ -534,14 +611,14 @@ CONFIG_LEGACY_PTY_COUNT=256
534# Watchdog Cards 611# Watchdog Cards
535# 612#
536# CONFIG_WATCHDOG is not set 613# CONFIG_WATCHDOG is not set
537CONFIG_RTC=y 614# CONFIG_RTC is not set
615# CONFIG_GEN_RTC is not set
538# CONFIG_DTLK is not set 616# CONFIG_DTLK is not set
539# CONFIG_R3964 is not set 617# CONFIG_R3964 is not set
540 618
541# 619#
542# Ftape, the floppy tape device driver 620# Ftape, the floppy tape device driver
543# 621#
544# CONFIG_DRM is not set
545 622
546# 623#
547# PCMCIA character devices 624# PCMCIA character devices
@@ -550,6 +627,10 @@ CONFIG_SYNCLINK_CS=m
550# CONFIG_RAW_DRIVER is not set 627# CONFIG_RAW_DRIVER is not set
551 628
552# 629#
630# TPM devices
631#
632
633#
553# I2C support 634# I2C support
554# 635#
555# CONFIG_I2C is not set 636# CONFIG_I2C is not set
@@ -560,10 +641,20 @@ CONFIG_SYNCLINK_CS=m
560# CONFIG_W1 is not set 641# CONFIG_W1 is not set
561 642
562# 643#
644# Hardware Monitoring support
645#
646# CONFIG_HWMON is not set
647# CONFIG_HWMON_VID is not set
648
649#
563# Misc devices 650# Misc devices
564# 651#
565 652
566# 653#
654# Multimedia Capabilities Port drivers
655#
656
657#
567# Multimedia devices 658# Multimedia devices
568# 659#
569# CONFIG_VIDEO_DEV is not set 660# CONFIG_VIDEO_DEV is not set
@@ -583,7 +674,6 @@ CONFIG_SYNCLINK_CS=m
583# 674#
584# CONFIG_VGA_CONSOLE is not set 675# CONFIG_VGA_CONSOLE is not set
585CONFIG_DUMMY_CONSOLE=y 676CONFIG_DUMMY_CONSOLE=y
586# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
587 677
588# 678#
589# Sound 679# Sound
@@ -593,12 +683,9 @@ CONFIG_DUMMY_CONSOLE=y
593# 683#
594# USB support 684# USB support
595# 685#
596# CONFIG_USB_ARCH_HAS_HCD is not set 686CONFIG_USB_ARCH_HAS_HCD=y
597# CONFIG_USB_ARCH_HAS_OHCI is not set 687CONFIG_USB_ARCH_HAS_OHCI=y
598 688# CONFIG_USB is not set
599#
600# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
601#
602 689
603# 690#
604# USB Gadget Support 691# USB Gadget Support
@@ -613,7 +700,10 @@ CONFIG_DUMMY_CONSOLE=y
613# 700#
614# InfiniBand support 701# InfiniBand support
615# 702#
616# CONFIG_INFINIBAND is not set 703
704#
705# SN Devices
706#
617 707
618# 708#
619# File systems 709# File systems
@@ -622,6 +712,7 @@ CONFIG_EXT2_FS=y
622CONFIG_EXT2_FS_XATTR=y 712CONFIG_EXT2_FS_XATTR=y
623CONFIG_EXT2_FS_POSIX_ACL=y 713CONFIG_EXT2_FS_POSIX_ACL=y
624# CONFIG_EXT2_FS_SECURITY is not set 714# CONFIG_EXT2_FS_SECURITY is not set
715# CONFIG_EXT2_FS_XIP is not set
625CONFIG_EXT3_FS=y 716CONFIG_EXT3_FS=y
626CONFIG_EXT3_FS_XATTR=y 717CONFIG_EXT3_FS_XATTR=y
627CONFIG_EXT3_FS_POSIX_ACL=y 718CONFIG_EXT3_FS_POSIX_ACL=y
@@ -640,10 +731,12 @@ CONFIG_FS_POSIX_ACL=y
640# CONFIG_XFS_FS is not set 731# CONFIG_XFS_FS is not set
641# CONFIG_MINIX_FS is not set 732# CONFIG_MINIX_FS is not set
642# CONFIG_ROMFS_FS is not set 733# CONFIG_ROMFS_FS is not set
734CONFIG_INOTIFY=y
643# CONFIG_QUOTA is not set 735# CONFIG_QUOTA is not set
644CONFIG_DNOTIFY=y 736CONFIG_DNOTIFY=y
645CONFIG_AUTOFS_FS=m 737CONFIG_AUTOFS_FS=m
646CONFIG_AUTOFS4_FS=m 738CONFIG_AUTOFS4_FS=m
739CONFIG_FUSE_FS=m
647 740
648# 741#
649# CD-ROM/DVD Filesystems 742# CD-ROM/DVD Filesystems
@@ -664,13 +757,10 @@ CONFIG_AUTOFS4_FS=m
664CONFIG_PROC_FS=y 757CONFIG_PROC_FS=y
665CONFIG_PROC_KCORE=y 758CONFIG_PROC_KCORE=y
666CONFIG_SYSFS=y 759CONFIG_SYSFS=y
667# CONFIG_DEVFS_FS is not set
668CONFIG_DEVPTS_FS_XATTR=y
669CONFIG_DEVPTS_FS_SECURITY=y
670CONFIG_TMPFS=y 760CONFIG_TMPFS=y
671# CONFIG_TMPFS_XATTR is not set
672# CONFIG_HUGETLB_PAGE is not set 761# CONFIG_HUGETLB_PAGE is not set
673CONFIG_RAMFS=y 762CONFIG_RAMFS=y
763CONFIG_RELAYFS_FS=m
674 764
675# 765#
676# Miscellaneous filesystems 766# Miscellaneous filesystems
@@ -704,6 +794,7 @@ CONFIG_NFSD=m
704CONFIG_ROOT_NFS=y 794CONFIG_ROOT_NFS=y
705CONFIG_LOCKD=y 795CONFIG_LOCKD=y
706CONFIG_EXPORTFS=m 796CONFIG_EXPORTFS=m
797CONFIG_NFS_COMMON=y
707CONFIG_SUNRPC=y 798CONFIG_SUNRPC=y
708# CONFIG_RPCSEC_GSS_KRB5 is not set 799# CONFIG_RPCSEC_GSS_KRB5 is not set
709# CONFIG_RPCSEC_GSS_SPKM3 is not set 800# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -713,6 +804,7 @@ CONFIG_SMB_FS=m
713# CONFIG_NCP_FS is not set 804# CONFIG_NCP_FS is not set
714# CONFIG_CODA_FS is not set 805# CONFIG_CODA_FS is not set
715# CONFIG_AFS_FS is not set 806# CONFIG_AFS_FS is not set
807# CONFIG_9P_FS is not set
716 808
717# 809#
718# Partition Types 810# Partition Types
@@ -772,7 +864,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
772# 864#
773# Kernel hacking 865# Kernel hacking
774# 866#
867# CONFIG_PRINTK_TIME is not set
775# CONFIG_DEBUG_KERNEL is not set 868# CONFIG_DEBUG_KERNEL is not set
869CONFIG_LOG_BUF_SHIFT=14
776CONFIG_CROSSCOMPILE=y 870CONFIG_CROSSCOMPILE=y
777CONFIG_CMDLINE="" 871CONFIG_CMDLINE=""
778 872
@@ -788,26 +882,27 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
788# 882#
789CONFIG_CRYPTO=y 883CONFIG_CRYPTO=y
790CONFIG_CRYPTO_HMAC=y 884CONFIG_CRYPTO_HMAC=y
791CONFIG_CRYPTO_NULL=y 885CONFIG_CRYPTO_NULL=m
792# CONFIG_CRYPTO_MD4 is not set 886CONFIG_CRYPTO_MD4=m
793# CONFIG_CRYPTO_MD5 is not set 887CONFIG_CRYPTO_MD5=m
794# CONFIG_CRYPTO_SHA1 is not set 888CONFIG_CRYPTO_SHA1=m
795# CONFIG_CRYPTO_SHA256 is not set 889CONFIG_CRYPTO_SHA256=m
796CONFIG_CRYPTO_SHA512=y 890CONFIG_CRYPTO_SHA512=m
797CONFIG_CRYPTO_WP512=m 891CONFIG_CRYPTO_WP512=m
798# CONFIG_CRYPTO_DES is not set 892CONFIG_CRYPTO_TGR192=m
799# CONFIG_CRYPTO_BLOWFISH is not set 893CONFIG_CRYPTO_DES=m
800CONFIG_CRYPTO_TWOFISH=y 894CONFIG_CRYPTO_BLOWFISH=m
801# CONFIG_CRYPTO_SERPENT is not set 895CONFIG_CRYPTO_TWOFISH=m
896CONFIG_CRYPTO_SERPENT=m
802CONFIG_CRYPTO_AES=m 897CONFIG_CRYPTO_AES=m
803# CONFIG_CRYPTO_CAST5 is not set 898CONFIG_CRYPTO_CAST5=m
804# CONFIG_CRYPTO_CAST6 is not set 899CONFIG_CRYPTO_CAST6=m
805CONFIG_CRYPTO_TEA=m 900CONFIG_CRYPTO_TEA=m
806# CONFIG_CRYPTO_ARC4 is not set 901CONFIG_CRYPTO_ARC4=m
807CONFIG_CRYPTO_KHAZAD=m 902CONFIG_CRYPTO_KHAZAD=m
808CONFIG_CRYPTO_ANUBIS=m 903CONFIG_CRYPTO_ANUBIS=m
809CONFIG_CRYPTO_DEFLATE=y 904CONFIG_CRYPTO_DEFLATE=m
810CONFIG_CRYPTO_MICHAEL_MIC=y 905CONFIG_CRYPTO_MICHAEL_MIC=m
811CONFIG_CRYPTO_CRC32C=m 906CONFIG_CRYPTO_CRC32C=m
812# CONFIG_CRYPTO_TEST is not set 907# CONFIG_CRYPTO_TEST is not set
813 908
@@ -819,9 +914,8 @@ CONFIG_CRYPTO_CRC32C=m
819# Library routines 914# Library routines
820# 915#
821CONFIG_CRC_CCITT=m 916CONFIG_CRC_CCITT=m
917CONFIG_CRC16=m
822CONFIG_CRC32=y 918CONFIG_CRC32=y
823CONFIG_LIBCRC32C=m 919CONFIG_LIBCRC32C=m
824CONFIG_ZLIB_INFLATE=y 920CONFIG_ZLIB_INFLATE=m
825CONFIG_ZLIB_DEFLATE=y 921CONFIG_ZLIB_DEFLATE=m
826CONFIG_GENERIC_HARDIRQS=y
827CONFIG_GENERIC_IRQ_PROBE=y
diff --git a/arch/mips/configs/pb1500_defconfig b/arch/mips/configs/pb1500_defconfig
index 49e528340a39..f91a4eaae51a 100644
--- a/arch/mips/configs/pb1500_defconfig
+++ b/arch/mips/configs/pb1500_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:09 2005 4# Thu Oct 20 22:26:44 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14
29CONFIG_HOTPLUG=y 27CONFIG_HOTPLUG=y
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,63 +59,80 @@ CONFIG_KMOD=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60# CONFIG_MACH_VR41XX is not set 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_TOSHIBA_JMR3927 is not set 64# CONFIG_MIPS_PB1000 is not set
65# CONFIG_MIPS_PB1100 is not set
66CONFIG_MIPS_PB1500=y
67# CONFIG_MIPS_PB1550 is not set
68# CONFIG_MIPS_PB1200 is not set
69# CONFIG_MIPS_DB1000 is not set
70# CONFIG_MIPS_DB1100 is not set
71# CONFIG_MIPS_DB1500 is not set
72# CONFIG_MIPS_DB1550 is not set
73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
62# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
63# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
64# CONFIG_MIPS_EV64120 is not set 77# CONFIG_MIPS_EV64120 is not set
65# CONFIG_MIPS_EV96100 is not set 78# CONFIG_MIPS_EV96100 is not set
66# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
67# CONFIG_LASAT is not set
68# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
69# CONFIG_MIPS_ATLAS is not set 83# CONFIG_MIPS_ATLAS is not set
70# CONFIG_MIPS_MALTA is not set 84# CONFIG_MIPS_MALTA is not set
71# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
72# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
73# CONFIG_MOMENCO_OCELOT_G is not set
74# CONFIG_MOMENCO_OCELOT_C is not set
75# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
76# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
77# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
78# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
79# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
80# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
81# CONFIG_NEC_OSPREY is not set 98# CONFIG_MACH_VR41XX is not set
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
82# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
83CONFIG_SOC_AU1X00=y 102# CONFIG_SGI_IP27 is not set
84# CONFIG_SOC_AU1000 is not set 103# CONFIG_SGI_IP32 is not set
85# CONFIG_SOC_AU1100 is not set 104# CONFIG_SIBYTE_BIGSUR is not set
86CONFIG_SOC_AU1500=y 105# CONFIG_SIBYTE_SWARM is not set
87# CONFIG_SOC_AU1550 is not set 106# CONFIG_SIBYTE_SENTOSA is not set
88# CONFIG_MIPS_PB1000 is not set 107# CONFIG_SIBYTE_RHONE is not set
89# CONFIG_MIPS_PB1100 is not set 108# CONFIG_SIBYTE_CARMEL is not set
90CONFIG_MIPS_PB1500=y 109# CONFIG_SIBYTE_PTSWARM is not set
91# CONFIG_MIPS_PB1550 is not set 110# CONFIG_SIBYTE_LITTLESUR is not set
92# CONFIG_MIPS_DB1000 is not set 111# CONFIG_SIBYTE_CRHINE is not set
93# CONFIG_MIPS_DB1100 is not set 112# CONFIG_SIBYTE_CRHONE is not set
94# CONFIG_MIPS_DB1500 is not set
95# CONFIG_MIPS_DB1550 is not set
96# CONFIG_MIPS_BOSPORUS is not set
97# CONFIG_MIPS_MIRAGE is not set
98# CONFIG_MIPS_XXS1500 is not set
99# CONFIG_MIPS_MTX1 is not set
100# CONFIG_SIBYTE_SB1xxx_SOC is not set
101# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
102# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
103CONFIG_RWSEM_GENERIC_SPINLOCK=y 117CONFIG_RWSEM_GENERIC_SPINLOCK=y
104CONFIG_GENERIC_CALIBRATE_DELAY=y 118CONFIG_GENERIC_CALIBRATE_DELAY=y
105CONFIG_HAVE_DEC_LOCK=y 119CONFIG_DMA_NONCOHERENT=y
106CONFIG_DMA_COHERENT=y 120CONFIG_DMA_NEED_PCI_MAP_STATE=y
121# CONFIG_CPU_BIG_ENDIAN is not set
107CONFIG_CPU_LITTLE_ENDIAN=y 122CONFIG_CPU_LITTLE_ENDIAN=y
123CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
124CONFIG_SOC_AU1500=y
125CONFIG_SOC_AU1X00=y
108# CONFIG_AU1X00_USB_DEVICE is not set 126# CONFIG_AU1X00_USB_DEVICE is not set
109CONFIG_MIPS_L1_CACHE_SHIFT=5 127CONFIG_MIPS_L1_CACHE_SHIFT=5
110 128
111# 129#
112# CPU selection 130# CPU selection
113# 131#
114CONFIG_CPU_MIPS32=y 132CONFIG_CPU_MIPS32_R1=y
115# CONFIG_CPU_MIPS64 is not set 133# CONFIG_CPU_MIPS32_R2 is not set
134# CONFIG_CPU_MIPS64_R1 is not set
135# CONFIG_CPU_MIPS64_R2 is not set
116# CONFIG_CPU_R3000 is not set 136# CONFIG_CPU_R3000 is not set
117# CONFIG_CPU_TX39XX is not set 137# CONFIG_CPU_TX39XX is not set
118# CONFIG_CPU_VR41XX is not set 138# CONFIG_CPU_VR41XX is not set
@@ -128,15 +148,39 @@ CONFIG_CPU_MIPS32=y
128# CONFIG_CPU_RM7000 is not set 148# CONFIG_CPU_RM7000 is not set
129# CONFIG_CPU_RM9000 is not set 149# CONFIG_CPU_RM9000 is not set
130# CONFIG_CPU_SB1 is not set 150# CONFIG_CPU_SB1 is not set
151CONFIG_SYS_HAS_CPU_MIPS32_R1=y
152CONFIG_CPU_MIPS32=y
153CONFIG_CPU_MIPSR1=y
154CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
155CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
156
157#
158# Kernel type
159#
160CONFIG_32BIT=y
161# CONFIG_64BIT is not set
131CONFIG_PAGE_SIZE_4KB=y 162CONFIG_PAGE_SIZE_4KB=y
132# CONFIG_PAGE_SIZE_8KB is not set 163# CONFIG_PAGE_SIZE_8KB is not set
133# CONFIG_PAGE_SIZE_16KB is not set 164# CONFIG_PAGE_SIZE_16KB is not set
134# CONFIG_PAGE_SIZE_64KB is not set 165# CONFIG_PAGE_SIZE_64KB is not set
135CONFIG_CPU_HAS_PREFETCH=y 166CONFIG_CPU_HAS_PREFETCH=y
167# CONFIG_MIPS_MT is not set
136CONFIG_64BIT_PHYS_ADDR=y 168CONFIG_64BIT_PHYS_ADDR=y
137# CONFIG_CPU_ADVANCED is not set 169# CONFIG_CPU_ADVANCED is not set
138CONFIG_CPU_HAS_LLSC=y 170CONFIG_CPU_HAS_LLSC=y
139CONFIG_CPU_HAS_SYNC=y 171CONFIG_CPU_HAS_SYNC=y
172CONFIG_GENERIC_HARDIRQS=y
173CONFIG_GENERIC_IRQ_PROBE=y
174CONFIG_ARCH_FLATMEM_ENABLE=y
175CONFIG_SELECT_MEMORY_MODEL=y
176CONFIG_FLATMEM_MANUAL=y
177# CONFIG_DISCONTIGMEM_MANUAL is not set
178# CONFIG_SPARSEMEM_MANUAL is not set
179CONFIG_FLATMEM=y
180CONFIG_FLAT_NODE_MEM_MAP=y
181# CONFIG_SPARSEMEM_STATIC is not set
182CONFIG_PREEMPT_NONE=y
183# CONFIG_PREEMPT_VOLUNTARY is not set
140# CONFIG_PREEMPT is not set 184# CONFIG_PREEMPT is not set
141 185
142# 186#
@@ -145,7 +189,6 @@ CONFIG_CPU_HAS_SYNC=y
145CONFIG_HW_HAS_PCI=y 189CONFIG_HW_HAS_PCI=y
146CONFIG_PCI=y 190CONFIG_PCI=y
147CONFIG_PCI_LEGACY_PROC=y 191CONFIG_PCI_LEGACY_PROC=y
148CONFIG_PCI_NAMES=y
149CONFIG_MMU=y 192CONFIG_MMU=y
150 193
151# 194#
@@ -154,6 +197,8 @@ CONFIG_MMU=y
154CONFIG_PCCARD=m 197CONFIG_PCCARD=m
155# CONFIG_PCMCIA_DEBUG is not set 198# CONFIG_PCMCIA_DEBUG is not set
156CONFIG_PCMCIA=m 199CONFIG_PCMCIA=m
200CONFIG_PCMCIA_LOAD_CIS=y
201CONFIG_PCMCIA_IOCTL=y
157CONFIG_CARDBUS=y 202CONFIG_CARDBUS=y
158 203
159# 204#
@@ -177,6 +222,100 @@ CONFIG_PCCARD_NONSTATIC=m
177CONFIG_BINFMT_ELF=y 222CONFIG_BINFMT_ELF=y
178# CONFIG_BINFMT_MISC is not set 223# CONFIG_BINFMT_MISC is not set
179CONFIG_TRAD_SIGNALS=y 224CONFIG_TRAD_SIGNALS=y
225# CONFIG_PM is not set
226
227#
228# Networking
229#
230CONFIG_NET=y
231
232#
233# Networking options
234#
235CONFIG_PACKET=y
236# CONFIG_PACKET_MMAP is not set
237CONFIG_UNIX=y
238CONFIG_XFRM=y
239CONFIG_XFRM_USER=m
240CONFIG_NET_KEY=y
241CONFIG_INET=y
242CONFIG_IP_MULTICAST=y
243# CONFIG_IP_ADVANCED_ROUTER is not set
244CONFIG_IP_FIB_HASH=y
245CONFIG_IP_PNP=y
246# CONFIG_IP_PNP_DHCP is not set
247CONFIG_IP_PNP_BOOTP=y
248# CONFIG_IP_PNP_RARP is not set
249# CONFIG_NET_IPIP is not set
250# CONFIG_NET_IPGRE is not set
251# CONFIG_IP_MROUTE is not set
252# CONFIG_ARPD is not set
253# CONFIG_SYN_COOKIES is not set
254# CONFIG_INET_AH is not set
255# CONFIG_INET_ESP is not set
256# CONFIG_INET_IPCOMP is not set
257CONFIG_INET_TUNNEL=m
258CONFIG_INET_DIAG=y
259CONFIG_INET_TCP_DIAG=y
260# CONFIG_TCP_CONG_ADVANCED is not set
261CONFIG_TCP_CONG_BIC=y
262
263#
264# IP: Virtual Server Configuration
265#
266# CONFIG_IP_VS is not set
267# CONFIG_IPV6 is not set
268CONFIG_NETFILTER=y
269# CONFIG_NETFILTER_DEBUG is not set
270CONFIG_NETFILTER_NETLINK=m
271CONFIG_NETFILTER_NETLINK_QUEUE=m
272CONFIG_NETFILTER_NETLINK_LOG=m
273
274#
275# IP: Netfilter Configuration
276#
277# CONFIG_IP_NF_CONNTRACK is not set
278CONFIG_IP_NF_PPTP=m
279# CONFIG_IP_NF_QUEUE is not set
280# CONFIG_IP_NF_IPTABLES is not set
281# CONFIG_IP_NF_ARPTABLES is not set
282
283#
284# DCCP Configuration (EXPERIMENTAL)
285#
286# CONFIG_IP_DCCP is not set
287
288#
289# SCTP Configuration (EXPERIMENTAL)
290#
291# CONFIG_IP_SCTP is not set
292# CONFIG_ATM is not set
293# CONFIG_BRIDGE is not set
294# CONFIG_VLAN_8021Q is not set
295# CONFIG_DECNET is not set
296# CONFIG_LLC2 is not set
297# CONFIG_IPX is not set
298# CONFIG_ATALK is not set
299# CONFIG_X25 is not set
300# CONFIG_LAPB is not set
301# CONFIG_NET_DIVERT is not set
302# CONFIG_ECONET is not set
303# CONFIG_WAN_ROUTER is not set
304# CONFIG_NET_SCHED is not set
305# CONFIG_NET_CLS_ROUTE is not set
306
307#
308# Network testing
309#
310# CONFIG_NET_PKTGEN is not set
311# CONFIG_HAMRADIO is not set
312# CONFIG_IRDA is not set
313# CONFIG_BT is not set
314CONFIG_IEEE80211=m
315# CONFIG_IEEE80211_DEBUG is not set
316CONFIG_IEEE80211_CRYPT_WEP=m
317CONFIG_IEEE80211_CRYPT_CCMP=m
318CONFIG_IEEE80211_CRYPT_TKIP=m
180 319
181# 320#
182# Device Drivers 321# Device Drivers
@@ -187,12 +326,87 @@ CONFIG_TRAD_SIGNALS=y
187# 326#
188CONFIG_STANDALONE=y 327CONFIG_STANDALONE=y
189CONFIG_PREVENT_FIRMWARE_BUILD=y 328CONFIG_PREVENT_FIRMWARE_BUILD=y
190# CONFIG_FW_LOADER is not set 329CONFIG_FW_LOADER=m
330
331#
332# Connector - unified userspace <-> kernelspace linker
333#
334CONFIG_CONNECTOR=m
191 335
192# 336#
193# Memory Technology Devices (MTD) 337# Memory Technology Devices (MTD)
194# 338#
195# CONFIG_MTD is not set 339CONFIG_MTD=y
340# CONFIG_MTD_DEBUG is not set
341# CONFIG_MTD_CONCAT is not set
342CONFIG_MTD_PARTITIONS=y
343# CONFIG_MTD_REDBOOT_PARTS is not set
344# CONFIG_MTD_CMDLINE_PARTS is not set
345
346#
347# User Modules And Translation Layers
348#
349CONFIG_MTD_CHAR=y
350CONFIG_MTD_BLOCK=y
351# CONFIG_FTL is not set
352# CONFIG_NFTL is not set
353# CONFIG_INFTL is not set
354
355#
356# RAM/ROM/Flash chip drivers
357#
358CONFIG_MTD_CFI=y
359# CONFIG_MTD_JEDECPROBE is not set
360CONFIG_MTD_GEN_PROBE=y
361# CONFIG_MTD_CFI_ADV_OPTIONS is not set
362CONFIG_MTD_MAP_BANK_WIDTH_1=y
363CONFIG_MTD_MAP_BANK_WIDTH_2=y
364CONFIG_MTD_MAP_BANK_WIDTH_4=y
365# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
366# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
367# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
368CONFIG_MTD_CFI_I1=y
369CONFIG_MTD_CFI_I2=y
370# CONFIG_MTD_CFI_I4 is not set
371# CONFIG_MTD_CFI_I8 is not set
372# CONFIG_MTD_CFI_INTELEXT is not set
373CONFIG_MTD_CFI_AMDSTD=y
374CONFIG_MTD_CFI_AMDSTD_RETRY=0
375# CONFIG_MTD_CFI_STAA is not set
376CONFIG_MTD_CFI_UTIL=y
377# CONFIG_MTD_RAM is not set
378# CONFIG_MTD_ROM is not set
379# CONFIG_MTD_ABSENT is not set
380
381#
382# Mapping drivers for chip access
383#
384# CONFIG_MTD_COMPLEX_MAPPINGS is not set
385# CONFIG_MTD_PHYSMAP is not set
386CONFIG_MTD_ALCHEMY=y
387# CONFIG_MTD_PLATRAM is not set
388
389#
390# Self-contained MTD device drivers
391#
392# CONFIG_MTD_PMC551 is not set
393# CONFIG_MTD_SLRAM is not set
394# CONFIG_MTD_PHRAM is not set
395# CONFIG_MTD_MTDRAM is not set
396# CONFIG_MTD_BLKMTD is not set
397# CONFIG_MTD_BLOCK2MTD is not set
398
399#
400# Disk-On-Chip Device Drivers
401#
402# CONFIG_MTD_DOC2000 is not set
403# CONFIG_MTD_DOC2001 is not set
404# CONFIG_MTD_DOC2001PLUS is not set
405
406#
407# NAND Flash Device Drivers
408#
409# CONFIG_MTD_NAND is not set
196 410
197# 411#
198# Parallel port support 412# Parallel port support
@@ -206,7 +420,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
206# 420#
207# Block devices 421# Block devices
208# 422#
209# CONFIG_BLK_DEV_FD is not set
210# CONFIG_BLK_CPQ_DA is not set 423# CONFIG_BLK_CPQ_DA is not set
211# CONFIG_BLK_CPQ_CISS_DA is not set 424# CONFIG_BLK_CPQ_CISS_DA is not set
212# CONFIG_BLK_DEV_DAC960 is not set 425# CONFIG_BLK_DEV_DAC960 is not set
@@ -218,7 +431,6 @@ CONFIG_BLK_DEV_LOOP=y
218# CONFIG_BLK_DEV_SX8 is not set 431# CONFIG_BLK_DEV_SX8 is not set
219# CONFIG_BLK_DEV_RAM is not set 432# CONFIG_BLK_DEV_RAM is not set
220CONFIG_BLK_DEV_RAM_COUNT=16 433CONFIG_BLK_DEV_RAM_COUNT=16
221CONFIG_INITRAMFS_SOURCE=""
222# CONFIG_LBD is not set 434# CONFIG_LBD is not set
223CONFIG_CDROM_PKTCDVD=m 435CONFIG_CDROM_PKTCDVD=m
224CONFIG_CDROM_PKTCDVD_BUFFERS=8 436CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -275,6 +487,7 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
275CONFIG_BLK_DEV_HPT366=y 487CONFIG_BLK_DEV_HPT366=y
276# CONFIG_BLK_DEV_SC1200 is not set 488# CONFIG_BLK_DEV_SC1200 is not set
277# CONFIG_BLK_DEV_PIIX is not set 489# CONFIG_BLK_DEV_PIIX is not set
490# CONFIG_BLK_DEV_IT821X is not set
278# CONFIG_BLK_DEV_NS87415 is not set 491# CONFIG_BLK_DEV_NS87415 is not set
279# CONFIG_BLK_DEV_PDC202XX_OLD is not set 492# CONFIG_BLK_DEV_PDC202XX_OLD is not set
280# CONFIG_BLK_DEV_PDC202XX_NEW is not set 493# CONFIG_BLK_DEV_PDC202XX_NEW is not set
@@ -292,6 +505,7 @@ CONFIG_BLK_DEV_IDEDMA=y
292# 505#
293# SCSI device support 506# SCSI device support
294# 507#
508CONFIG_RAID_ATTRS=m
295# CONFIG_SCSI is not set 509# CONFIG_SCSI is not set
296 510
297# 511#
@@ -302,6 +516,7 @@ CONFIG_BLK_DEV_IDEDMA=y
302# 516#
303# Fusion MPT device support 517# Fusion MPT device support
304# 518#
519# CONFIG_FUSION is not set
305 520
306# 521#
307# IEEE 1394 (FireWire) support 522# IEEE 1394 (FireWire) support
@@ -314,94 +529,13 @@ CONFIG_BLK_DEV_IDEDMA=y
314# CONFIG_I2O is not set 529# CONFIG_I2O is not set
315 530
316# 531#
317# Networking support 532# Network device support
318#
319CONFIG_NET=y
320
321#
322# Networking options
323#
324CONFIG_PACKET=y
325# CONFIG_PACKET_MMAP is not set
326CONFIG_NETLINK_DEV=y
327CONFIG_UNIX=y
328CONFIG_NET_KEY=y
329CONFIG_INET=y
330CONFIG_IP_MULTICAST=y
331# CONFIG_IP_ADVANCED_ROUTER is not set
332CONFIG_IP_PNP=y
333# CONFIG_IP_PNP_DHCP is not set
334CONFIG_IP_PNP_BOOTP=y
335# CONFIG_IP_PNP_RARP is not set
336# CONFIG_NET_IPIP is not set
337# CONFIG_NET_IPGRE is not set
338# CONFIG_IP_MROUTE is not set
339# CONFIG_ARPD is not set
340# CONFIG_SYN_COOKIES is not set
341# CONFIG_INET_AH is not set
342# CONFIG_INET_ESP is not set
343# CONFIG_INET_IPCOMP is not set
344CONFIG_INET_TUNNEL=m
345CONFIG_IP_TCPDIAG=m
346# CONFIG_IP_TCPDIAG_IPV6 is not set
347
348#
349# IP: Virtual Server Configuration
350#
351# CONFIG_IP_VS is not set
352# CONFIG_IPV6 is not set
353CONFIG_NETFILTER=y
354# CONFIG_NETFILTER_DEBUG is not set
355
356#
357# IP: Netfilter Configuration
358# 533#
359# CONFIG_IP_NF_CONNTRACK is not set
360CONFIG_IP_NF_CONNTRACK_MARK=y
361# CONFIG_IP_NF_QUEUE is not set
362# CONFIG_IP_NF_IPTABLES is not set
363# CONFIG_IP_NF_ARPTABLES is not set
364CONFIG_XFRM=y
365CONFIG_XFRM_USER=m
366
367#
368# SCTP Configuration (EXPERIMENTAL)
369#
370# CONFIG_IP_SCTP is not set
371# CONFIG_ATM is not set
372# CONFIG_BRIDGE is not set
373# CONFIG_VLAN_8021Q is not set
374# CONFIG_DECNET is not set
375# CONFIG_LLC2 is not set
376# CONFIG_IPX is not set
377# CONFIG_ATALK is not set
378# CONFIG_X25 is not set
379# CONFIG_LAPB is not set
380# CONFIG_NET_DIVERT is not set
381# CONFIG_ECONET is not set
382# CONFIG_WAN_ROUTER is not set
383
384#
385# QoS and/or fair queueing
386#
387# CONFIG_NET_SCHED is not set
388# CONFIG_NET_CLS_ROUTE is not set
389
390#
391# Network testing
392#
393# CONFIG_NET_PKTGEN is not set
394# CONFIG_NETPOLL is not set
395# CONFIG_NET_POLL_CONTROLLER is not set
396# CONFIG_HAMRADIO is not set
397# CONFIG_IRDA is not set
398# CONFIG_BT is not set
399CONFIG_NETDEVICES=y 534CONFIG_NETDEVICES=y
400# CONFIG_DUMMY is not set 535# CONFIG_DUMMY is not set
401# CONFIG_BONDING is not set 536# CONFIG_BONDING is not set
402# CONFIG_EQUALIZER is not set 537# CONFIG_EQUALIZER is not set
403# CONFIG_TUN is not set 538# CONFIG_TUN is not set
404# CONFIG_ETHERTAP is not set
405 539
406# 540#
407# ARCnet devices 541# ARCnet devices
@@ -409,6 +543,21 @@ CONFIG_NETDEVICES=y
409# CONFIG_ARCNET is not set 543# CONFIG_ARCNET is not set
410 544
411# 545#
546# PHY device support
547#
548CONFIG_PHYLIB=m
549CONFIG_PHYCONTROL=y
550
551#
552# MII PHY device drivers
553#
554CONFIG_MARVELL_PHY=m
555CONFIG_DAVICOM_PHY=m
556CONFIG_QSEMI_PHY=m
557CONFIG_LXT_PHY=m
558CONFIG_CICADA_PHY=m
559
560#
412# Ethernet (10 or 100Mbit) 561# Ethernet (10 or 100Mbit)
413# 562#
414CONFIG_NET_ETHERNET=y 563CONFIG_NET_ETHERNET=y
@@ -435,12 +584,16 @@ CONFIG_MIPS_AU1X00_ENET=y
435# CONFIG_HAMACHI is not set 584# CONFIG_HAMACHI is not set
436# CONFIG_YELLOWFIN is not set 585# CONFIG_YELLOWFIN is not set
437# CONFIG_R8169 is not set 586# CONFIG_R8169 is not set
587# CONFIG_SIS190 is not set
588# CONFIG_SKGE is not set
438# CONFIG_SK98LIN is not set 589# CONFIG_SK98LIN is not set
439# CONFIG_TIGON3 is not set 590# CONFIG_TIGON3 is not set
591# CONFIG_BNX2 is not set
440 592
441# 593#
442# Ethernet (10000 Mbit) 594# Ethernet (10000 Mbit)
443# 595#
596# CONFIG_CHELSIO_T1 is not set
444# CONFIG_IXGB is not set 597# CONFIG_IXGB is not set
445# CONFIG_S2IO is not set 598# CONFIG_S2IO is not set
446 599
@@ -453,6 +606,8 @@ CONFIG_MIPS_AU1X00_ENET=y
453# Wireless LAN (non-hamradio) 606# Wireless LAN (non-hamradio)
454# 607#
455# CONFIG_NET_RADIO is not set 608# CONFIG_NET_RADIO is not set
609# CONFIG_IPW_DEBUG is not set
610CONFIG_IPW2200=m
456 611
457# 612#
458# PCMCIA network device support 613# PCMCIA network device support
@@ -484,6 +639,8 @@ CONFIG_PPPOE=m
484# CONFIG_SLIP is not set 639# CONFIG_SLIP is not set
485# CONFIG_SHAPER is not set 640# CONFIG_SHAPER is not set
486# CONFIG_NETCONSOLE is not set 641# CONFIG_NETCONSOLE is not set
642# CONFIG_NETPOLL is not set
643# CONFIG_NET_POLL_CONTROLLER is not set
487 644
488# 645#
489# ISDN subsystem 646# ISDN subsystem
@@ -513,19 +670,6 @@ CONFIG_INPUT_EVDEV=y
513# CONFIG_INPUT_EVBUG is not set 670# CONFIG_INPUT_EVBUG is not set
514 671
515# 672#
516# Input I/O drivers
517#
518# CONFIG_GAMEPORT is not set
519CONFIG_SOUND_GAMEPORT=y
520CONFIG_SERIO=y
521# CONFIG_SERIO_I8042 is not set
522CONFIG_SERIO_SERPORT=y
523# CONFIG_SERIO_CT82C710 is not set
524# CONFIG_SERIO_PCIPS2 is not set
525# CONFIG_SERIO_LIBPS2 is not set
526CONFIG_SERIO_RAW=m
527
528#
529# Input Device Drivers 673# Input Device Drivers
530# 674#
531# CONFIG_INPUT_KEYBOARD is not set 675# CONFIG_INPUT_KEYBOARD is not set
@@ -535,6 +679,17 @@ CONFIG_SERIO_RAW=m
535# CONFIG_INPUT_MISC is not set 679# CONFIG_INPUT_MISC is not set
536 680
537# 681#
682# Hardware I/O ports
683#
684CONFIG_SERIO=y
685# CONFIG_SERIO_I8042 is not set
686CONFIG_SERIO_SERPORT=y
687# CONFIG_SERIO_PCIPS2 is not set
688# CONFIG_SERIO_LIBPS2 is not set
689CONFIG_SERIO_RAW=m
690# CONFIG_GAMEPORT is not set
691
692#
538# Character devices 693# Character devices
539# 694#
540# CONFIG_VT is not set 695# CONFIG_VT is not set
@@ -554,6 +709,7 @@ CONFIG_SERIAL_AU1X00=y
554CONFIG_SERIAL_AU1X00_CONSOLE=y 709CONFIG_SERIAL_AU1X00_CONSOLE=y
555CONFIG_SERIAL_CORE=y 710CONFIG_SERIAL_CORE=y
556CONFIG_SERIAL_CORE_CONSOLE=y 711CONFIG_SERIAL_CORE_CONSOLE=y
712# CONFIG_SERIAL_JSM is not set
557CONFIG_UNIX98_PTYS=y 713CONFIG_UNIX98_PTYS=y
558CONFIG_LEGACY_PTYS=y 714CONFIG_LEGACY_PTYS=y
559CONFIG_LEGACY_PTY_COUNT=256 715CONFIG_LEGACY_PTY_COUNT=256
@@ -585,6 +741,11 @@ CONFIG_SYNCLINK_CS=m
585# CONFIG_RAW_DRIVER is not set 741# CONFIG_RAW_DRIVER is not set
586 742
587# 743#
744# TPM devices
745#
746# CONFIG_TCG_TPM is not set
747
748#
588# I2C support 749# I2C support
589# 750#
590# CONFIG_I2C is not set 751# CONFIG_I2C is not set
@@ -595,10 +756,20 @@ CONFIG_SYNCLINK_CS=m
595# CONFIG_W1 is not set 756# CONFIG_W1 is not set
596 757
597# 758#
759# Hardware Monitoring support
760#
761# CONFIG_HWMON is not set
762# CONFIG_HWMON_VID is not set
763
764#
598# Misc devices 765# Misc devices
599# 766#
600 767
601# 768#
769# Multimedia Capabilities Port drivers
770#
771
772#
602# Multimedia devices 773# Multimedia devices
603# 774#
604# CONFIG_VIDEO_DEV is not set 775# CONFIG_VIDEO_DEV is not set
@@ -612,7 +783,6 @@ CONFIG_SYNCLINK_CS=m
612# Graphics support 783# Graphics support
613# 784#
614# CONFIG_FB is not set 785# CONFIG_FB is not set
615# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
616 786
617# 787#
618# Sound 788# Sound
@@ -622,13 +792,9 @@ CONFIG_SYNCLINK_CS=m
622# 792#
623# USB support 793# USB support
624# 794#
625# CONFIG_USB is not set
626CONFIG_USB_ARCH_HAS_HCD=y 795CONFIG_USB_ARCH_HAS_HCD=y
627CONFIG_USB_ARCH_HAS_OHCI=y 796CONFIG_USB_ARCH_HAS_OHCI=y
628 797# CONFIG_USB is not set
629#
630# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
631#
632 798
633# 799#
634# USB Gadget Support 800# USB Gadget Support
@@ -646,12 +812,17 @@ CONFIG_USB_ARCH_HAS_OHCI=y
646# CONFIG_INFINIBAND is not set 812# CONFIG_INFINIBAND is not set
647 813
648# 814#
815# SN Devices
816#
817
818#
649# File systems 819# File systems
650# 820#
651CONFIG_EXT2_FS=y 821CONFIG_EXT2_FS=y
652CONFIG_EXT2_FS_XATTR=y 822CONFIG_EXT2_FS_XATTR=y
653CONFIG_EXT2_FS_POSIX_ACL=y 823CONFIG_EXT2_FS_POSIX_ACL=y
654# CONFIG_EXT2_FS_SECURITY is not set 824# CONFIG_EXT2_FS_SECURITY is not set
825# CONFIG_EXT2_FS_XIP is not set
655CONFIG_EXT3_FS=y 826CONFIG_EXT3_FS=y
656CONFIG_EXT3_FS_XATTR=y 827CONFIG_EXT3_FS_XATTR=y
657CONFIG_EXT3_FS_POSIX_ACL=y 828CONFIG_EXT3_FS_POSIX_ACL=y
@@ -670,10 +841,12 @@ CONFIG_FS_POSIX_ACL=y
670# CONFIG_XFS_FS is not set 841# CONFIG_XFS_FS is not set
671# CONFIG_MINIX_FS is not set 842# CONFIG_MINIX_FS is not set
672# CONFIG_ROMFS_FS is not set 843# CONFIG_ROMFS_FS is not set
844CONFIG_INOTIFY=y
673# CONFIG_QUOTA is not set 845# CONFIG_QUOTA is not set
674CONFIG_DNOTIFY=y 846CONFIG_DNOTIFY=y
675CONFIG_AUTOFS_FS=m 847CONFIG_AUTOFS_FS=m
676CONFIG_AUTOFS4_FS=m 848CONFIG_AUTOFS4_FS=m
849CONFIG_FUSE_FS=m
677 850
678# 851#
679# CD-ROM/DVD Filesystems 852# CD-ROM/DVD Filesystems
@@ -694,13 +867,10 @@ CONFIG_AUTOFS4_FS=m
694CONFIG_PROC_FS=y 867CONFIG_PROC_FS=y
695CONFIG_PROC_KCORE=y 868CONFIG_PROC_KCORE=y
696CONFIG_SYSFS=y 869CONFIG_SYSFS=y
697# CONFIG_DEVFS_FS is not set
698CONFIG_DEVPTS_FS_XATTR=y
699CONFIG_DEVPTS_FS_SECURITY=y
700CONFIG_TMPFS=y 870CONFIG_TMPFS=y
701# CONFIG_TMPFS_XATTR is not set
702# CONFIG_HUGETLB_PAGE is not set 871# CONFIG_HUGETLB_PAGE is not set
703CONFIG_RAMFS=y 872CONFIG_RAMFS=y
873CONFIG_RELAYFS_FS=m
704 874
705# 875#
706# Miscellaneous filesystems 876# Miscellaneous filesystems
@@ -712,6 +882,8 @@ CONFIG_RAMFS=y
712# CONFIG_BEFS_FS is not set 882# CONFIG_BEFS_FS is not set
713# CONFIG_BFS_FS is not set 883# CONFIG_BFS_FS is not set
714# CONFIG_EFS_FS is not set 884# CONFIG_EFS_FS is not set
885# CONFIG_JFFS_FS is not set
886# CONFIG_JFFS2_FS is not set
715CONFIG_CRAMFS=m 887CONFIG_CRAMFS=m
716# CONFIG_VXFS_FS is not set 888# CONFIG_VXFS_FS is not set
717# CONFIG_HPFS_FS is not set 889# CONFIG_HPFS_FS is not set
@@ -732,6 +904,7 @@ CONFIG_NFSD=m
732CONFIG_ROOT_NFS=y 904CONFIG_ROOT_NFS=y
733CONFIG_LOCKD=y 905CONFIG_LOCKD=y
734CONFIG_EXPORTFS=m 906CONFIG_EXPORTFS=m
907CONFIG_NFS_COMMON=y
735CONFIG_SUNRPC=y 908CONFIG_SUNRPC=y
736# CONFIG_RPCSEC_GSS_KRB5 is not set 909# CONFIG_RPCSEC_GSS_KRB5 is not set
737# CONFIG_RPCSEC_GSS_SPKM3 is not set 910# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -741,6 +914,7 @@ CONFIG_SMB_FS=m
741# CONFIG_NCP_FS is not set 914# CONFIG_NCP_FS is not set
742# CONFIG_CODA_FS is not set 915# CONFIG_CODA_FS is not set
743# CONFIG_AFS_FS is not set 916# CONFIG_AFS_FS is not set
917# CONFIG_9P_FS is not set
744 918
745# 919#
746# Partition Types 920# Partition Types
@@ -800,7 +974,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
800# 974#
801# Kernel hacking 975# Kernel hacking
802# 976#
977# CONFIG_PRINTK_TIME is not set
803# CONFIG_DEBUG_KERNEL is not set 978# CONFIG_DEBUG_KERNEL is not set
979CONFIG_LOG_BUF_SHIFT=14
804CONFIG_CROSSCOMPILE=y 980CONFIG_CROSSCOMPILE=y
805CONFIG_CMDLINE="" 981CONFIG_CMDLINE=""
806 982
@@ -816,27 +992,28 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
816# 992#
817CONFIG_CRYPTO=y 993CONFIG_CRYPTO=y
818CONFIG_CRYPTO_HMAC=y 994CONFIG_CRYPTO_HMAC=y
819CONFIG_CRYPTO_NULL=y 995CONFIG_CRYPTO_NULL=m
820# CONFIG_CRYPTO_MD4 is not set 996CONFIG_CRYPTO_MD4=m
821# CONFIG_CRYPTO_MD5 is not set 997CONFIG_CRYPTO_MD5=m
822# CONFIG_CRYPTO_SHA1 is not set 998CONFIG_CRYPTO_SHA1=m
823# CONFIG_CRYPTO_SHA256 is not set 999CONFIG_CRYPTO_SHA256=m
824CONFIG_CRYPTO_SHA512=y 1000CONFIG_CRYPTO_SHA512=m
825CONFIG_CRYPTO_WP512=m 1001CONFIG_CRYPTO_WP512=m
826# CONFIG_CRYPTO_DES is not set 1002CONFIG_CRYPTO_TGR192=m
827# CONFIG_CRYPTO_BLOWFISH is not set 1003CONFIG_CRYPTO_DES=m
828CONFIG_CRYPTO_TWOFISH=y 1004CONFIG_CRYPTO_BLOWFISH=m
829# CONFIG_CRYPTO_SERPENT is not set 1005CONFIG_CRYPTO_TWOFISH=m
1006CONFIG_CRYPTO_SERPENT=m
830CONFIG_CRYPTO_AES=m 1007CONFIG_CRYPTO_AES=m
831# CONFIG_CRYPTO_CAST5 is not set 1008CONFIG_CRYPTO_CAST5=m
832# CONFIG_CRYPTO_CAST6 is not set 1009CONFIG_CRYPTO_CAST6=m
833CONFIG_CRYPTO_TEA=m 1010CONFIG_CRYPTO_TEA=m
834# CONFIG_CRYPTO_ARC4 is not set 1011CONFIG_CRYPTO_ARC4=m
835CONFIG_CRYPTO_KHAZAD=m 1012CONFIG_CRYPTO_KHAZAD=m
836CONFIG_CRYPTO_ANUBIS=m 1013CONFIG_CRYPTO_ANUBIS=m
837CONFIG_CRYPTO_DEFLATE=y 1014CONFIG_CRYPTO_DEFLATE=m
838CONFIG_CRYPTO_MICHAEL_MIC=y 1015CONFIG_CRYPTO_MICHAEL_MIC=m
839# CONFIG_CRYPTO_CRC32C is not set 1016CONFIG_CRYPTO_CRC32C=m
840# CONFIG_CRYPTO_TEST is not set 1017# CONFIG_CRYPTO_TEST is not set
841 1018
842# 1019#
@@ -847,9 +1024,8 @@ CONFIG_CRYPTO_MICHAEL_MIC=y
847# Library routines 1024# Library routines
848# 1025#
849CONFIG_CRC_CCITT=m 1026CONFIG_CRC_CCITT=m
1027CONFIG_CRC16=m
850CONFIG_CRC32=y 1028CONFIG_CRC32=y
851# CONFIG_LIBCRC32C is not set 1029CONFIG_LIBCRC32C=m
852CONFIG_ZLIB_INFLATE=y 1030CONFIG_ZLIB_INFLATE=m
853CONFIG_ZLIB_DEFLATE=y 1031CONFIG_ZLIB_DEFLATE=m
854CONFIG_GENERIC_HARDIRQS=y
855CONFIG_GENERIC_IRQ_PROBE=y
diff --git a/arch/mips/configs/pb1550_defconfig b/arch/mips/configs/pb1550_defconfig
index 8e426776c098..bbad27cb40a2 100644
--- a/arch/mips/configs/pb1550_defconfig
+++ b/arch/mips/configs/pb1550_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:09 2005 4# Thu Oct 20 22:26:47 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14
29CONFIG_HOTPLUG=y 27CONFIG_HOTPLUG=y
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,63 +59,80 @@ CONFIG_KMOD=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60# CONFIG_MACH_VR41XX is not set 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_TOSHIBA_JMR3927 is not set 64# CONFIG_MIPS_PB1000 is not set
65# CONFIG_MIPS_PB1100 is not set
66# CONFIG_MIPS_PB1500 is not set
67CONFIG_MIPS_PB1550=y
68# CONFIG_MIPS_PB1200 is not set
69# CONFIG_MIPS_DB1000 is not set
70# CONFIG_MIPS_DB1100 is not set
71# CONFIG_MIPS_DB1500 is not set
72# CONFIG_MIPS_DB1550 is not set
73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
62# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
63# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
64# CONFIG_MIPS_EV64120 is not set 77# CONFIG_MIPS_EV64120 is not set
65# CONFIG_MIPS_EV96100 is not set 78# CONFIG_MIPS_EV96100 is not set
66# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
67# CONFIG_LASAT is not set
68# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
69# CONFIG_MIPS_ATLAS is not set 83# CONFIG_MIPS_ATLAS is not set
70# CONFIG_MIPS_MALTA is not set 84# CONFIG_MIPS_MALTA is not set
71# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
72# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
73# CONFIG_MOMENCO_OCELOT_G is not set
74# CONFIG_MOMENCO_OCELOT_C is not set
75# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
76# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
77# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
78# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
79# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
80# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
81# CONFIG_NEC_OSPREY is not set 98# CONFIG_MACH_VR41XX is not set
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
82# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
83CONFIG_SOC_AU1X00=y 102# CONFIG_SGI_IP27 is not set
84# CONFIG_SOC_AU1000 is not set 103# CONFIG_SGI_IP32 is not set
85# CONFIG_SOC_AU1100 is not set 104# CONFIG_SIBYTE_BIGSUR is not set
86# CONFIG_SOC_AU1500 is not set 105# CONFIG_SIBYTE_SWARM is not set
87CONFIG_SOC_AU1550=y 106# CONFIG_SIBYTE_SENTOSA is not set
88# CONFIG_MIPS_PB1000 is not set 107# CONFIG_SIBYTE_RHONE is not set
89# CONFIG_MIPS_PB1100 is not set 108# CONFIG_SIBYTE_CARMEL is not set
90# CONFIG_MIPS_PB1500 is not set 109# CONFIG_SIBYTE_PTSWARM is not set
91CONFIG_MIPS_PB1550=y 110# CONFIG_SIBYTE_LITTLESUR is not set
92# CONFIG_MIPS_DB1000 is not set 111# CONFIG_SIBYTE_CRHINE is not set
93# CONFIG_MIPS_DB1100 is not set 112# CONFIG_SIBYTE_CRHONE is not set
94# CONFIG_MIPS_DB1500 is not set
95# CONFIG_MIPS_DB1550 is not set
96# CONFIG_MIPS_BOSPORUS is not set
97# CONFIG_MIPS_MIRAGE is not set
98# CONFIG_MIPS_XXS1500 is not set
99# CONFIG_MIPS_MTX1 is not set
100# CONFIG_SIBYTE_SB1xxx_SOC is not set
101# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
102# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
103CONFIG_RWSEM_GENERIC_SPINLOCK=y 117CONFIG_RWSEM_GENERIC_SPINLOCK=y
104CONFIG_GENERIC_CALIBRATE_DELAY=y 118CONFIG_GENERIC_CALIBRATE_DELAY=y
105CONFIG_HAVE_DEC_LOCK=y 119CONFIG_DMA_NONCOHERENT=y
106CONFIG_DMA_COHERENT=y 120CONFIG_DMA_NEED_PCI_MAP_STATE=y
107CONFIG_MIPS_DISABLE_OBSOLETE_IDE=y 121CONFIG_MIPS_DISABLE_OBSOLETE_IDE=y
122# CONFIG_CPU_BIG_ENDIAN is not set
108CONFIG_CPU_LITTLE_ENDIAN=y 123CONFIG_CPU_LITTLE_ENDIAN=y
124CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
125CONFIG_SOC_AU1550=y
126CONFIG_SOC_AU1X00=y
109CONFIG_MIPS_L1_CACHE_SHIFT=5 127CONFIG_MIPS_L1_CACHE_SHIFT=5
110 128
111# 129#
112# CPU selection 130# CPU selection
113# 131#
114CONFIG_CPU_MIPS32=y 132CONFIG_CPU_MIPS32_R1=y
115# CONFIG_CPU_MIPS64 is not set 133# CONFIG_CPU_MIPS32_R2 is not set
134# CONFIG_CPU_MIPS64_R1 is not set
135# CONFIG_CPU_MIPS64_R2 is not set
116# CONFIG_CPU_R3000 is not set 136# CONFIG_CPU_R3000 is not set
117# CONFIG_CPU_TX39XX is not set 137# CONFIG_CPU_TX39XX is not set
118# CONFIG_CPU_VR41XX is not set 138# CONFIG_CPU_VR41XX is not set
@@ -128,15 +148,39 @@ CONFIG_CPU_MIPS32=y
128# CONFIG_CPU_RM7000 is not set 148# CONFIG_CPU_RM7000 is not set
129# CONFIG_CPU_RM9000 is not set 149# CONFIG_CPU_RM9000 is not set
130# CONFIG_CPU_SB1 is not set 150# CONFIG_CPU_SB1 is not set
151CONFIG_SYS_HAS_CPU_MIPS32_R1=y
152CONFIG_CPU_MIPS32=y
153CONFIG_CPU_MIPSR1=y
154CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
155CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
156
157#
158# Kernel type
159#
160CONFIG_32BIT=y
161# CONFIG_64BIT is not set
131CONFIG_PAGE_SIZE_4KB=y 162CONFIG_PAGE_SIZE_4KB=y
132# CONFIG_PAGE_SIZE_8KB is not set 163# CONFIG_PAGE_SIZE_8KB is not set
133# CONFIG_PAGE_SIZE_16KB is not set 164# CONFIG_PAGE_SIZE_16KB is not set
134# CONFIG_PAGE_SIZE_64KB is not set 165# CONFIG_PAGE_SIZE_64KB is not set
135CONFIG_CPU_HAS_PREFETCH=y 166CONFIG_CPU_HAS_PREFETCH=y
167# CONFIG_MIPS_MT is not set
136CONFIG_64BIT_PHYS_ADDR=y 168CONFIG_64BIT_PHYS_ADDR=y
137# CONFIG_CPU_ADVANCED is not set 169# CONFIG_CPU_ADVANCED is not set
138CONFIG_CPU_HAS_LLSC=y 170CONFIG_CPU_HAS_LLSC=y
139CONFIG_CPU_HAS_SYNC=y 171CONFIG_CPU_HAS_SYNC=y
172CONFIG_GENERIC_HARDIRQS=y
173CONFIG_GENERIC_IRQ_PROBE=y
174CONFIG_ARCH_FLATMEM_ENABLE=y
175CONFIG_SELECT_MEMORY_MODEL=y
176CONFIG_FLATMEM_MANUAL=y
177# CONFIG_DISCONTIGMEM_MANUAL is not set
178# CONFIG_SPARSEMEM_MANUAL is not set
179CONFIG_FLATMEM=y
180CONFIG_FLAT_NODE_MEM_MAP=y
181# CONFIG_SPARSEMEM_STATIC is not set
182CONFIG_PREEMPT_NONE=y
183# CONFIG_PREEMPT_VOLUNTARY is not set
140# CONFIG_PREEMPT is not set 184# CONFIG_PREEMPT is not set
141 185
142# 186#
@@ -145,7 +189,6 @@ CONFIG_CPU_HAS_SYNC=y
145CONFIG_HW_HAS_PCI=y 189CONFIG_HW_HAS_PCI=y
146CONFIG_PCI=y 190CONFIG_PCI=y
147CONFIG_PCI_LEGACY_PROC=y 191CONFIG_PCI_LEGACY_PROC=y
148CONFIG_PCI_NAMES=y
149CONFIG_MMU=y 192CONFIG_MMU=y
150 193
151# 194#
@@ -154,6 +197,8 @@ CONFIG_MMU=y
154CONFIG_PCCARD=m 197CONFIG_PCCARD=m
155# CONFIG_PCMCIA_DEBUG is not set 198# CONFIG_PCMCIA_DEBUG is not set
156CONFIG_PCMCIA=m 199CONFIG_PCMCIA=m
200CONFIG_PCMCIA_LOAD_CIS=y
201CONFIG_PCMCIA_IOCTL=y
157CONFIG_CARDBUS=y 202CONFIG_CARDBUS=y
158 203
159# 204#
@@ -177,6 +222,100 @@ CONFIG_PCCARD_NONSTATIC=m
177CONFIG_BINFMT_ELF=y 222CONFIG_BINFMT_ELF=y
178# CONFIG_BINFMT_MISC is not set 223# CONFIG_BINFMT_MISC is not set
179CONFIG_TRAD_SIGNALS=y 224CONFIG_TRAD_SIGNALS=y
225# CONFIG_PM is not set
226
227#
228# Networking
229#
230CONFIG_NET=y
231
232#
233# Networking options
234#
235CONFIG_PACKET=y
236# CONFIG_PACKET_MMAP is not set
237CONFIG_UNIX=y
238CONFIG_XFRM=y
239CONFIG_XFRM_USER=m
240CONFIG_NET_KEY=y
241CONFIG_INET=y
242CONFIG_IP_MULTICAST=y
243# CONFIG_IP_ADVANCED_ROUTER is not set
244CONFIG_IP_FIB_HASH=y
245CONFIG_IP_PNP=y
246# CONFIG_IP_PNP_DHCP is not set
247CONFIG_IP_PNP_BOOTP=y
248# CONFIG_IP_PNP_RARP is not set
249# CONFIG_NET_IPIP is not set
250# CONFIG_NET_IPGRE is not set
251# CONFIG_IP_MROUTE is not set
252# CONFIG_ARPD is not set
253# CONFIG_SYN_COOKIES is not set
254# CONFIG_INET_AH is not set
255# CONFIG_INET_ESP is not set
256# CONFIG_INET_IPCOMP is not set
257CONFIG_INET_TUNNEL=m
258CONFIG_INET_DIAG=y
259CONFIG_INET_TCP_DIAG=y
260# CONFIG_TCP_CONG_ADVANCED is not set
261CONFIG_TCP_CONG_BIC=y
262
263#
264# IP: Virtual Server Configuration
265#
266# CONFIG_IP_VS is not set
267# CONFIG_IPV6 is not set
268CONFIG_NETFILTER=y
269# CONFIG_NETFILTER_DEBUG is not set
270CONFIG_NETFILTER_NETLINK=m
271CONFIG_NETFILTER_NETLINK_QUEUE=m
272CONFIG_NETFILTER_NETLINK_LOG=m
273
274#
275# IP: Netfilter Configuration
276#
277# CONFIG_IP_NF_CONNTRACK is not set
278CONFIG_IP_NF_PPTP=m
279# CONFIG_IP_NF_QUEUE is not set
280# CONFIG_IP_NF_IPTABLES is not set
281# CONFIG_IP_NF_ARPTABLES is not set
282
283#
284# DCCP Configuration (EXPERIMENTAL)
285#
286# CONFIG_IP_DCCP is not set
287
288#
289# SCTP Configuration (EXPERIMENTAL)
290#
291# CONFIG_IP_SCTP is not set
292# CONFIG_ATM is not set
293# CONFIG_BRIDGE is not set
294# CONFIG_VLAN_8021Q is not set
295# CONFIG_DECNET is not set
296# CONFIG_LLC2 is not set
297# CONFIG_IPX is not set
298# CONFIG_ATALK is not set
299# CONFIG_X25 is not set
300# CONFIG_LAPB is not set
301# CONFIG_NET_DIVERT is not set
302# CONFIG_ECONET is not set
303# CONFIG_WAN_ROUTER is not set
304# CONFIG_NET_SCHED is not set
305# CONFIG_NET_CLS_ROUTE is not set
306
307#
308# Network testing
309#
310# CONFIG_NET_PKTGEN is not set
311# CONFIG_HAMRADIO is not set
312# CONFIG_IRDA is not set
313# CONFIG_BT is not set
314CONFIG_IEEE80211=m
315# CONFIG_IEEE80211_DEBUG is not set
316CONFIG_IEEE80211_CRYPT_WEP=m
317CONFIG_IEEE80211_CRYPT_CCMP=m
318CONFIG_IEEE80211_CRYPT_TKIP=m
180 319
181# 320#
182# Device Drivers 321# Device Drivers
@@ -187,12 +326,87 @@ CONFIG_TRAD_SIGNALS=y
187# 326#
188CONFIG_STANDALONE=y 327CONFIG_STANDALONE=y
189CONFIG_PREVENT_FIRMWARE_BUILD=y 328CONFIG_PREVENT_FIRMWARE_BUILD=y
190# CONFIG_FW_LOADER is not set 329CONFIG_FW_LOADER=m
330
331#
332# Connector - unified userspace <-> kernelspace linker
333#
334CONFIG_CONNECTOR=m
191 335
192# 336#
193# Memory Technology Devices (MTD) 337# Memory Technology Devices (MTD)
194# 338#
195# CONFIG_MTD is not set 339CONFIG_MTD=y
340# CONFIG_MTD_DEBUG is not set
341# CONFIG_MTD_CONCAT is not set
342CONFIG_MTD_PARTITIONS=y
343# CONFIG_MTD_REDBOOT_PARTS is not set
344# CONFIG_MTD_CMDLINE_PARTS is not set
345
346#
347# User Modules And Translation Layers
348#
349CONFIG_MTD_CHAR=y
350CONFIG_MTD_BLOCK=y
351# CONFIG_FTL is not set
352# CONFIG_NFTL is not set
353# CONFIG_INFTL is not set
354
355#
356# RAM/ROM/Flash chip drivers
357#
358CONFIG_MTD_CFI=y
359# CONFIG_MTD_JEDECPROBE is not set
360CONFIG_MTD_GEN_PROBE=y
361# CONFIG_MTD_CFI_ADV_OPTIONS is not set
362CONFIG_MTD_MAP_BANK_WIDTH_1=y
363CONFIG_MTD_MAP_BANK_WIDTH_2=y
364CONFIG_MTD_MAP_BANK_WIDTH_4=y
365# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
366# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
367# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
368CONFIG_MTD_CFI_I1=y
369CONFIG_MTD_CFI_I2=y
370# CONFIG_MTD_CFI_I4 is not set
371# CONFIG_MTD_CFI_I8 is not set
372# CONFIG_MTD_CFI_INTELEXT is not set
373CONFIG_MTD_CFI_AMDSTD=y
374CONFIG_MTD_CFI_AMDSTD_RETRY=0
375# CONFIG_MTD_CFI_STAA is not set
376CONFIG_MTD_CFI_UTIL=y
377# CONFIG_MTD_RAM is not set
378# CONFIG_MTD_ROM is not set
379# CONFIG_MTD_ABSENT is not set
380
381#
382# Mapping drivers for chip access
383#
384# CONFIG_MTD_COMPLEX_MAPPINGS is not set
385# CONFIG_MTD_PHYSMAP is not set
386CONFIG_MTD_ALCHEMY=y
387# CONFIG_MTD_PLATRAM is not set
388
389#
390# Self-contained MTD device drivers
391#
392# CONFIG_MTD_PMC551 is not set
393# CONFIG_MTD_SLRAM is not set
394# CONFIG_MTD_PHRAM is not set
395# CONFIG_MTD_MTDRAM is not set
396# CONFIG_MTD_BLKMTD is not set
397# CONFIG_MTD_BLOCK2MTD is not set
398
399#
400# Disk-On-Chip Device Drivers
401#
402# CONFIG_MTD_DOC2000 is not set
403# CONFIG_MTD_DOC2001 is not set
404# CONFIG_MTD_DOC2001PLUS is not set
405
406#
407# NAND Flash Device Drivers
408#
409# CONFIG_MTD_NAND is not set
196 410
197# 411#
198# Parallel port support 412# Parallel port support
@@ -206,7 +420,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
206# 420#
207# Block devices 421# Block devices
208# 422#
209# CONFIG_BLK_DEV_FD is not set
210# CONFIG_BLK_CPQ_DA is not set 423# CONFIG_BLK_CPQ_DA is not set
211# CONFIG_BLK_CPQ_CISS_DA is not set 424# CONFIG_BLK_CPQ_CISS_DA is not set
212# CONFIG_BLK_DEV_DAC960 is not set 425# CONFIG_BLK_DEV_DAC960 is not set
@@ -218,7 +431,6 @@ CONFIG_BLK_DEV_LOOP=y
218# CONFIG_BLK_DEV_SX8 is not set 431# CONFIG_BLK_DEV_SX8 is not set
219# CONFIG_BLK_DEV_RAM is not set 432# CONFIG_BLK_DEV_RAM is not set
220CONFIG_BLK_DEV_RAM_COUNT=16 433CONFIG_BLK_DEV_RAM_COUNT=16
221CONFIG_INITRAMFS_SOURCE=""
222# CONFIG_LBD is not set 434# CONFIG_LBD is not set
223CONFIG_CDROM_PKTCDVD=m 435CONFIG_CDROM_PKTCDVD=m
224CONFIG_CDROM_PKTCDVD_BUFFERS=8 436CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -275,6 +487,7 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
275CONFIG_BLK_DEV_HPT366=y 487CONFIG_BLK_DEV_HPT366=y
276# CONFIG_BLK_DEV_SC1200 is not set 488# CONFIG_BLK_DEV_SC1200 is not set
277# CONFIG_BLK_DEV_PIIX is not set 489# CONFIG_BLK_DEV_PIIX is not set
490# CONFIG_BLK_DEV_IT821X is not set
278# CONFIG_BLK_DEV_NS87415 is not set 491# CONFIG_BLK_DEV_NS87415 is not set
279# CONFIG_BLK_DEV_PDC202XX_OLD is not set 492# CONFIG_BLK_DEV_PDC202XX_OLD is not set
280# CONFIG_BLK_DEV_PDC202XX_NEW is not set 493# CONFIG_BLK_DEV_PDC202XX_NEW is not set
@@ -292,6 +505,7 @@ CONFIG_BLK_DEV_IDEDMA=y
292# 505#
293# SCSI device support 506# SCSI device support
294# 507#
508CONFIG_RAID_ATTRS=m
295# CONFIG_SCSI is not set 509# CONFIG_SCSI is not set
296 510
297# 511#
@@ -302,6 +516,7 @@ CONFIG_BLK_DEV_IDEDMA=y
302# 516#
303# Fusion MPT device support 517# Fusion MPT device support
304# 518#
519# CONFIG_FUSION is not set
305 520
306# 521#
307# IEEE 1394 (FireWire) support 522# IEEE 1394 (FireWire) support
@@ -314,94 +529,13 @@ CONFIG_BLK_DEV_IDEDMA=y
314# CONFIG_I2O is not set 529# CONFIG_I2O is not set
315 530
316# 531#
317# Networking support 532# Network device support
318#
319CONFIG_NET=y
320
321#
322# Networking options
323#
324CONFIG_PACKET=y
325# CONFIG_PACKET_MMAP is not set
326CONFIG_NETLINK_DEV=y
327CONFIG_UNIX=y
328CONFIG_NET_KEY=y
329CONFIG_INET=y
330CONFIG_IP_MULTICAST=y
331# CONFIG_IP_ADVANCED_ROUTER is not set
332CONFIG_IP_PNP=y
333# CONFIG_IP_PNP_DHCP is not set
334CONFIG_IP_PNP_BOOTP=y
335# CONFIG_IP_PNP_RARP is not set
336# CONFIG_NET_IPIP is not set
337# CONFIG_NET_IPGRE is not set
338# CONFIG_IP_MROUTE is not set
339# CONFIG_ARPD is not set
340# CONFIG_SYN_COOKIES is not set
341# CONFIG_INET_AH is not set
342# CONFIG_INET_ESP is not set
343# CONFIG_INET_IPCOMP is not set
344CONFIG_INET_TUNNEL=m
345CONFIG_IP_TCPDIAG=m
346# CONFIG_IP_TCPDIAG_IPV6 is not set
347
348#
349# IP: Virtual Server Configuration
350#
351# CONFIG_IP_VS is not set
352# CONFIG_IPV6 is not set
353CONFIG_NETFILTER=y
354# CONFIG_NETFILTER_DEBUG is not set
355
356#
357# IP: Netfilter Configuration
358# 533#
359# CONFIG_IP_NF_CONNTRACK is not set
360CONFIG_IP_NF_CONNTRACK_MARK=y
361# CONFIG_IP_NF_QUEUE is not set
362# CONFIG_IP_NF_IPTABLES is not set
363# CONFIG_IP_NF_ARPTABLES is not set
364CONFIG_XFRM=y
365CONFIG_XFRM_USER=m
366
367#
368# SCTP Configuration (EXPERIMENTAL)
369#
370# CONFIG_IP_SCTP is not set
371# CONFIG_ATM is not set
372# CONFIG_BRIDGE is not set
373# CONFIG_VLAN_8021Q is not set
374# CONFIG_DECNET is not set
375# CONFIG_LLC2 is not set
376# CONFIG_IPX is not set
377# CONFIG_ATALK is not set
378# CONFIG_X25 is not set
379# CONFIG_LAPB is not set
380# CONFIG_NET_DIVERT is not set
381# CONFIG_ECONET is not set
382# CONFIG_WAN_ROUTER is not set
383
384#
385# QoS and/or fair queueing
386#
387# CONFIG_NET_SCHED is not set
388# CONFIG_NET_CLS_ROUTE is not set
389
390#
391# Network testing
392#
393# CONFIG_NET_PKTGEN is not set
394# CONFIG_NETPOLL is not set
395# CONFIG_NET_POLL_CONTROLLER is not set
396# CONFIG_HAMRADIO is not set
397# CONFIG_IRDA is not set
398# CONFIG_BT is not set
399CONFIG_NETDEVICES=y 534CONFIG_NETDEVICES=y
400# CONFIG_DUMMY is not set 535# CONFIG_DUMMY is not set
401# CONFIG_BONDING is not set 536# CONFIG_BONDING is not set
402# CONFIG_EQUALIZER is not set 537# CONFIG_EQUALIZER is not set
403# CONFIG_TUN is not set 538# CONFIG_TUN is not set
404# CONFIG_ETHERTAP is not set
405 539
406# 540#
407# ARCnet devices 541# ARCnet devices
@@ -409,6 +543,21 @@ CONFIG_NETDEVICES=y
409# CONFIG_ARCNET is not set 543# CONFIG_ARCNET is not set
410 544
411# 545#
546# PHY device support
547#
548CONFIG_PHYLIB=m
549CONFIG_PHYCONTROL=y
550
551#
552# MII PHY device drivers
553#
554CONFIG_MARVELL_PHY=m
555CONFIG_DAVICOM_PHY=m
556CONFIG_QSEMI_PHY=m
557CONFIG_LXT_PHY=m
558CONFIG_CICADA_PHY=m
559
560#
412# Ethernet (10 or 100Mbit) 561# Ethernet (10 or 100Mbit)
413# 562#
414CONFIG_NET_ETHERNET=y 563CONFIG_NET_ETHERNET=y
@@ -435,12 +584,16 @@ CONFIG_MIPS_AU1X00_ENET=y
435# CONFIG_HAMACHI is not set 584# CONFIG_HAMACHI is not set
436# CONFIG_YELLOWFIN is not set 585# CONFIG_YELLOWFIN is not set
437# CONFIG_R8169 is not set 586# CONFIG_R8169 is not set
587# CONFIG_SIS190 is not set
588# CONFIG_SKGE is not set
438# CONFIG_SK98LIN is not set 589# CONFIG_SK98LIN is not set
439# CONFIG_TIGON3 is not set 590# CONFIG_TIGON3 is not set
591# CONFIG_BNX2 is not set
440 592
441# 593#
442# Ethernet (10000 Mbit) 594# Ethernet (10000 Mbit)
443# 595#
596# CONFIG_CHELSIO_T1 is not set
444# CONFIG_IXGB is not set 597# CONFIG_IXGB is not set
445# CONFIG_S2IO is not set 598# CONFIG_S2IO is not set
446 599
@@ -453,6 +606,8 @@ CONFIG_MIPS_AU1X00_ENET=y
453# Wireless LAN (non-hamradio) 606# Wireless LAN (non-hamradio)
454# 607#
455# CONFIG_NET_RADIO is not set 608# CONFIG_NET_RADIO is not set
609# CONFIG_IPW_DEBUG is not set
610CONFIG_IPW2200=m
456 611
457# 612#
458# PCMCIA network device support 613# PCMCIA network device support
@@ -476,6 +631,8 @@ CONFIG_PPPOE=m
476# CONFIG_SLIP is not set 631# CONFIG_SLIP is not set
477# CONFIG_SHAPER is not set 632# CONFIG_SHAPER is not set
478# CONFIG_NETCONSOLE is not set 633# CONFIG_NETCONSOLE is not set
634# CONFIG_NETPOLL is not set
635# CONFIG_NET_POLL_CONTROLLER is not set
479 636
480# 637#
481# ISDN subsystem 638# ISDN subsystem
@@ -505,19 +662,6 @@ CONFIG_INPUT_EVDEV=y
505# CONFIG_INPUT_EVBUG is not set 662# CONFIG_INPUT_EVBUG is not set
506 663
507# 664#
508# Input I/O drivers
509#
510# CONFIG_GAMEPORT is not set
511CONFIG_SOUND_GAMEPORT=y
512CONFIG_SERIO=y
513# CONFIG_SERIO_I8042 is not set
514CONFIG_SERIO_SERPORT=y
515# CONFIG_SERIO_CT82C710 is not set
516# CONFIG_SERIO_PCIPS2 is not set
517# CONFIG_SERIO_LIBPS2 is not set
518CONFIG_SERIO_RAW=m
519
520#
521# Input Device Drivers 665# Input Device Drivers
522# 666#
523# CONFIG_INPUT_KEYBOARD is not set 667# CONFIG_INPUT_KEYBOARD is not set
@@ -527,6 +671,17 @@ CONFIG_SERIO_RAW=m
527# CONFIG_INPUT_MISC is not set 671# CONFIG_INPUT_MISC is not set
528 672
529# 673#
674# Hardware I/O ports
675#
676CONFIG_SERIO=y
677# CONFIG_SERIO_I8042 is not set
678CONFIG_SERIO_SERPORT=y
679# CONFIG_SERIO_PCIPS2 is not set
680# CONFIG_SERIO_LIBPS2 is not set
681CONFIG_SERIO_RAW=m
682# CONFIG_GAMEPORT is not set
683
684#
530# Character devices 685# Character devices
531# 686#
532# CONFIG_VT is not set 687# CONFIG_VT is not set
@@ -546,6 +701,7 @@ CONFIG_SERIAL_AU1X00=y
546CONFIG_SERIAL_AU1X00_CONSOLE=y 701CONFIG_SERIAL_AU1X00_CONSOLE=y
547CONFIG_SERIAL_CORE=y 702CONFIG_SERIAL_CORE=y
548CONFIG_SERIAL_CORE_CONSOLE=y 703CONFIG_SERIAL_CORE_CONSOLE=y
704# CONFIG_SERIAL_JSM is not set
549CONFIG_UNIX98_PTYS=y 705CONFIG_UNIX98_PTYS=y
550CONFIG_LEGACY_PTYS=y 706CONFIG_LEGACY_PTYS=y
551CONFIG_LEGACY_PTY_COUNT=256 707CONFIG_LEGACY_PTY_COUNT=256
@@ -577,6 +733,11 @@ CONFIG_SYNCLINK_CS=m
577# CONFIG_RAW_DRIVER is not set 733# CONFIG_RAW_DRIVER is not set
578 734
579# 735#
736# TPM devices
737#
738# CONFIG_TCG_TPM is not set
739
740#
580# I2C support 741# I2C support
581# 742#
582# CONFIG_I2C is not set 743# CONFIG_I2C is not set
@@ -587,10 +748,20 @@ CONFIG_SYNCLINK_CS=m
587# CONFIG_W1 is not set 748# CONFIG_W1 is not set
588 749
589# 750#
751# Hardware Monitoring support
752#
753# CONFIG_HWMON is not set
754# CONFIG_HWMON_VID is not set
755
756#
590# Misc devices 757# Misc devices
591# 758#
592 759
593# 760#
761# Multimedia Capabilities Port drivers
762#
763
764#
594# Multimedia devices 765# Multimedia devices
595# 766#
596# CONFIG_VIDEO_DEV is not set 767# CONFIG_VIDEO_DEV is not set
@@ -604,7 +775,6 @@ CONFIG_SYNCLINK_CS=m
604# Graphics support 775# Graphics support
605# 776#
606# CONFIG_FB is not set 777# CONFIG_FB is not set
607# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
608 778
609# 779#
610# Sound 780# Sound
@@ -614,13 +784,9 @@ CONFIG_SYNCLINK_CS=m
614# 784#
615# USB support 785# USB support
616# 786#
617# CONFIG_USB is not set
618CONFIG_USB_ARCH_HAS_HCD=y 787CONFIG_USB_ARCH_HAS_HCD=y
619CONFIG_USB_ARCH_HAS_OHCI=y 788CONFIG_USB_ARCH_HAS_OHCI=y
620 789# CONFIG_USB is not set
621#
622# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
623#
624 790
625# 791#
626# USB Gadget Support 792# USB Gadget Support
@@ -638,12 +804,17 @@ CONFIG_USB_ARCH_HAS_OHCI=y
638# CONFIG_INFINIBAND is not set 804# CONFIG_INFINIBAND is not set
639 805
640# 806#
807# SN Devices
808#
809
810#
641# File systems 811# File systems
642# 812#
643CONFIG_EXT2_FS=y 813CONFIG_EXT2_FS=y
644CONFIG_EXT2_FS_XATTR=y 814CONFIG_EXT2_FS_XATTR=y
645CONFIG_EXT2_FS_POSIX_ACL=y 815CONFIG_EXT2_FS_POSIX_ACL=y
646# CONFIG_EXT2_FS_SECURITY is not set 816# CONFIG_EXT2_FS_SECURITY is not set
817# CONFIG_EXT2_FS_XIP is not set
647CONFIG_EXT3_FS=y 818CONFIG_EXT3_FS=y
648CONFIG_EXT3_FS_XATTR=y 819CONFIG_EXT3_FS_XATTR=y
649CONFIG_EXT3_FS_POSIX_ACL=y 820CONFIG_EXT3_FS_POSIX_ACL=y
@@ -662,10 +833,12 @@ CONFIG_FS_POSIX_ACL=y
662# CONFIG_XFS_FS is not set 833# CONFIG_XFS_FS is not set
663# CONFIG_MINIX_FS is not set 834# CONFIG_MINIX_FS is not set
664# CONFIG_ROMFS_FS is not set 835# CONFIG_ROMFS_FS is not set
836CONFIG_INOTIFY=y
665# CONFIG_QUOTA is not set 837# CONFIG_QUOTA is not set
666CONFIG_DNOTIFY=y 838CONFIG_DNOTIFY=y
667CONFIG_AUTOFS_FS=m 839CONFIG_AUTOFS_FS=m
668CONFIG_AUTOFS4_FS=m 840CONFIG_AUTOFS4_FS=m
841CONFIG_FUSE_FS=m
669 842
670# 843#
671# CD-ROM/DVD Filesystems 844# CD-ROM/DVD Filesystems
@@ -686,13 +859,10 @@ CONFIG_AUTOFS4_FS=m
686CONFIG_PROC_FS=y 859CONFIG_PROC_FS=y
687CONFIG_PROC_KCORE=y 860CONFIG_PROC_KCORE=y
688CONFIG_SYSFS=y 861CONFIG_SYSFS=y
689# CONFIG_DEVFS_FS is not set
690CONFIG_DEVPTS_FS_XATTR=y
691CONFIG_DEVPTS_FS_SECURITY=y
692CONFIG_TMPFS=y 862CONFIG_TMPFS=y
693# CONFIG_TMPFS_XATTR is not set
694# CONFIG_HUGETLB_PAGE is not set 863# CONFIG_HUGETLB_PAGE is not set
695CONFIG_RAMFS=y 864CONFIG_RAMFS=y
865CONFIG_RELAYFS_FS=m
696 866
697# 867#
698# Miscellaneous filesystems 868# Miscellaneous filesystems
@@ -704,6 +874,8 @@ CONFIG_RAMFS=y
704# CONFIG_BEFS_FS is not set 874# CONFIG_BEFS_FS is not set
705# CONFIG_BFS_FS is not set 875# CONFIG_BFS_FS is not set
706# CONFIG_EFS_FS is not set 876# CONFIG_EFS_FS is not set
877# CONFIG_JFFS_FS is not set
878# CONFIG_JFFS2_FS is not set
707CONFIG_CRAMFS=m 879CONFIG_CRAMFS=m
708# CONFIG_VXFS_FS is not set 880# CONFIG_VXFS_FS is not set
709# CONFIG_HPFS_FS is not set 881# CONFIG_HPFS_FS is not set
@@ -724,6 +896,7 @@ CONFIG_NFSD=m
724CONFIG_ROOT_NFS=y 896CONFIG_ROOT_NFS=y
725CONFIG_LOCKD=y 897CONFIG_LOCKD=y
726CONFIG_EXPORTFS=m 898CONFIG_EXPORTFS=m
899CONFIG_NFS_COMMON=y
727CONFIG_SUNRPC=y 900CONFIG_SUNRPC=y
728# CONFIG_RPCSEC_GSS_KRB5 is not set 901# CONFIG_RPCSEC_GSS_KRB5 is not set
729# CONFIG_RPCSEC_GSS_SPKM3 is not set 902# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -733,6 +906,7 @@ CONFIG_SMB_FS=m
733# CONFIG_NCP_FS is not set 906# CONFIG_NCP_FS is not set
734# CONFIG_CODA_FS is not set 907# CONFIG_CODA_FS is not set
735# CONFIG_AFS_FS is not set 908# CONFIG_AFS_FS is not set
909# CONFIG_9P_FS is not set
736 910
737# 911#
738# Partition Types 912# Partition Types
@@ -792,7 +966,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
792# 966#
793# Kernel hacking 967# Kernel hacking
794# 968#
969# CONFIG_PRINTK_TIME is not set
795# CONFIG_DEBUG_KERNEL is not set 970# CONFIG_DEBUG_KERNEL is not set
971CONFIG_LOG_BUF_SHIFT=14
796CONFIG_CROSSCOMPILE=y 972CONFIG_CROSSCOMPILE=y
797CONFIG_CMDLINE="" 973CONFIG_CMDLINE=""
798 974
@@ -808,26 +984,27 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
808# 984#
809CONFIG_CRYPTO=y 985CONFIG_CRYPTO=y
810CONFIG_CRYPTO_HMAC=y 986CONFIG_CRYPTO_HMAC=y
811CONFIG_CRYPTO_NULL=y 987CONFIG_CRYPTO_NULL=m
812# CONFIG_CRYPTO_MD4 is not set 988CONFIG_CRYPTO_MD4=m
813# CONFIG_CRYPTO_MD5 is not set 989CONFIG_CRYPTO_MD5=m
814# CONFIG_CRYPTO_SHA1 is not set 990CONFIG_CRYPTO_SHA1=m
815# CONFIG_CRYPTO_SHA256 is not set 991CONFIG_CRYPTO_SHA256=m
816CONFIG_CRYPTO_SHA512=y 992CONFIG_CRYPTO_SHA512=m
817CONFIG_CRYPTO_WP512=m 993CONFIG_CRYPTO_WP512=m
818# CONFIG_CRYPTO_DES is not set 994CONFIG_CRYPTO_TGR192=m
819# CONFIG_CRYPTO_BLOWFISH is not set 995CONFIG_CRYPTO_DES=m
820CONFIG_CRYPTO_TWOFISH=y 996CONFIG_CRYPTO_BLOWFISH=m
821# CONFIG_CRYPTO_SERPENT is not set 997CONFIG_CRYPTO_TWOFISH=m
998CONFIG_CRYPTO_SERPENT=m
822CONFIG_CRYPTO_AES=m 999CONFIG_CRYPTO_AES=m
823# CONFIG_CRYPTO_CAST5 is not set 1000CONFIG_CRYPTO_CAST5=m
824# CONFIG_CRYPTO_CAST6 is not set 1001CONFIG_CRYPTO_CAST6=m
825CONFIG_CRYPTO_TEA=m 1002CONFIG_CRYPTO_TEA=m
826# CONFIG_CRYPTO_ARC4 is not set 1003CONFIG_CRYPTO_ARC4=m
827CONFIG_CRYPTO_KHAZAD=m 1004CONFIG_CRYPTO_KHAZAD=m
828CONFIG_CRYPTO_ANUBIS=m 1005CONFIG_CRYPTO_ANUBIS=m
829CONFIG_CRYPTO_DEFLATE=y 1006CONFIG_CRYPTO_DEFLATE=m
830CONFIG_CRYPTO_MICHAEL_MIC=y 1007CONFIG_CRYPTO_MICHAEL_MIC=m
831CONFIG_CRYPTO_CRC32C=m 1008CONFIG_CRYPTO_CRC32C=m
832# CONFIG_CRYPTO_TEST is not set 1009# CONFIG_CRYPTO_TEST is not set
833 1010
@@ -839,9 +1016,8 @@ CONFIG_CRYPTO_CRC32C=m
839# Library routines 1016# Library routines
840# 1017#
841CONFIG_CRC_CCITT=m 1018CONFIG_CRC_CCITT=m
1019CONFIG_CRC16=m
842CONFIG_CRC32=y 1020CONFIG_CRC32=y
843CONFIG_LIBCRC32C=m 1021CONFIG_LIBCRC32C=m
844CONFIG_ZLIB_INFLATE=y 1022CONFIG_ZLIB_INFLATE=m
845CONFIG_ZLIB_DEFLATE=y 1023CONFIG_ZLIB_DEFLATE=m
846CONFIG_GENERIC_HARDIRQS=y
847CONFIG_GENERIC_IRQ_PROBE=y
diff --git a/arch/mips/configs/pnx8550-jbs_defconfig b/arch/mips/configs/pnx8550-jbs_defconfig
new file mode 100644
index 000000000000..95f84d711912
--- /dev/null
+++ b/arch/mips/configs/pnx8550-jbs_defconfig
@@ -0,0 +1,1069 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.14-rc2
4# Thu Oct 20 22:26:50 2005
5#
6CONFIG_MIPS=y
7
8#
9# Code maturity level options
10#
11CONFIG_EXPERIMENTAL=y
12CONFIG_CLEAN_COMPILE=y
13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
15
16#
17# General setup
18#
19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
21CONFIG_SWAP=y
22CONFIG_SYSVIPC=y
23# CONFIG_POSIX_MQUEUE is not set
24# CONFIG_BSD_PROCESS_ACCT is not set
25CONFIG_SYSCTL=y
26# CONFIG_AUDIT is not set
27# CONFIG_HOTPLUG is not set
28CONFIG_KOBJECT_UEVENT=y
29CONFIG_IKCONFIG=y
30CONFIG_IKCONFIG_PROC=y
31CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_ALL is not set
35# CONFIG_KALLSYMS_EXTRA_PASS is not set
36CONFIG_PRINTK=y
37CONFIG_BUG=y
38CONFIG_BASE_FULL=y
39CONFIG_FUTEX=y
40CONFIG_EPOLL=y
41# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
42CONFIG_SHMEM=y
43CONFIG_CC_ALIGN_FUNCTIONS=0
44CONFIG_CC_ALIGN_LABELS=0
45CONFIG_CC_ALIGN_LOOPS=0
46CONFIG_CC_ALIGN_JUMPS=0
47# CONFIG_TINY_SHMEM is not set
48CONFIG_BASE_SMALL=0
49
50#
51# Loadable module support
52#
53CONFIG_MODULES=y
54# CONFIG_MODULE_UNLOAD is not set
55CONFIG_OBSOLETE_MODPARM=y
56# CONFIG_MODVERSIONS is not set
57# CONFIG_MODULE_SRCVERSION_ALL is not set
58CONFIG_KMOD=y
59
60#
61# Machine selection
62#
63# CONFIG_MIPS_MTX1 is not set
64# CONFIG_MIPS_BOSPORUS is not set
65# CONFIG_MIPS_PB1000 is not set
66# CONFIG_MIPS_PB1100 is not set
67# CONFIG_MIPS_PB1500 is not set
68# CONFIG_MIPS_PB1550 is not set
69# CONFIG_MIPS_PB1200 is not set
70# CONFIG_MIPS_DB1000 is not set
71# CONFIG_MIPS_DB1100 is not set
72# CONFIG_MIPS_DB1500 is not set
73# CONFIG_MIPS_DB1550 is not set
74# CONFIG_MIPS_DB1200 is not set
75# CONFIG_MIPS_MIRAGE is not set
76# CONFIG_MIPS_COBALT is not set
77# CONFIG_MACH_DECSTATION is not set
78# CONFIG_MIPS_EV64120 is not set
79# CONFIG_MIPS_EV96100 is not set
80# CONFIG_MIPS_IVR is not set
81# CONFIG_MIPS_ITE8172 is not set
82# CONFIG_MACH_JAZZ is not set
83# CONFIG_LASAT is not set
84# CONFIG_MIPS_ATLAS is not set
85# CONFIG_MIPS_MALTA is not set
86# CONFIG_MIPS_SEAD is not set
87# CONFIG_MIPS_SIM is not set
88# CONFIG_MOMENCO_JAGUAR_ATX is not set
89# CONFIG_MOMENCO_OCELOT is not set
90# CONFIG_MOMENCO_OCELOT_3 is not set
91# CONFIG_MOMENCO_OCELOT_C is not set
92# CONFIG_MOMENCO_OCELOT_G is not set
93# CONFIG_MIPS_XXS1500 is not set
94# CONFIG_PNX8550_V2PCI is not set
95CONFIG_PNX8550_JBS=y
96# CONFIG_DDB5074 is not set
97# CONFIG_DDB5476 is not set
98# CONFIG_DDB5477 is not set
99# CONFIG_MACH_VR41XX is not set
100# CONFIG_PMC_YOSEMITE is not set
101# CONFIG_QEMU is not set
102# CONFIG_SGI_IP22 is not set
103# CONFIG_SGI_IP27 is not set
104# CONFIG_SGI_IP32 is not set
105# CONFIG_SIBYTE_BIGSUR is not set
106# CONFIG_SIBYTE_SWARM is not set
107# CONFIG_SIBYTE_SENTOSA is not set
108# CONFIG_SIBYTE_RHONE is not set
109# CONFIG_SIBYTE_CARMEL is not set
110# CONFIG_SIBYTE_PTSWARM is not set
111# CONFIG_SIBYTE_LITTLESUR is not set
112# CONFIG_SIBYTE_CRHINE is not set
113# CONFIG_SIBYTE_CRHONE is not set
114# CONFIG_SNI_RM200_PCI is not set
115# CONFIG_TOSHIBA_JMR3927 is not set
116# CONFIG_TOSHIBA_RBTX4927 is not set
117# CONFIG_TOSHIBA_RBTX4938 is not set
118CONFIG_RWSEM_GENERIC_SPINLOCK=y
119CONFIG_GENERIC_CALIBRATE_DELAY=y
120CONFIG_DMA_NONCOHERENT=y
121CONFIG_DMA_NEED_PCI_MAP_STATE=y
122# CONFIG_CPU_BIG_ENDIAN is not set
123CONFIG_CPU_LITTLE_ENDIAN=y
124CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
125CONFIG_PNX8550=y
126CONFIG_SOC_PNX8550=y
127CONFIG_MIPS_L1_CACHE_SHIFT=5
128
129#
130# CPU selection
131#
132# CONFIG_CPU_MIPS32_R1 is not set
133# CONFIG_CPU_MIPS32_R2 is not set
134# CONFIG_CPU_MIPS64_R1 is not set
135# CONFIG_CPU_MIPS64_R2 is not set
136# CONFIG_CPU_R3000 is not set
137# CONFIG_CPU_TX39XX is not set
138# CONFIG_CPU_VR41XX is not set
139# CONFIG_CPU_R4300 is not set
140CONFIG_CPU_R4X00=y
141# CONFIG_CPU_TX49XX is not set
142# CONFIG_CPU_R5000 is not set
143# CONFIG_CPU_R5432 is not set
144# CONFIG_CPU_R6000 is not set
145# CONFIG_CPU_NEVADA is not set
146# CONFIG_CPU_R8000 is not set
147# CONFIG_CPU_R10000 is not set
148# CONFIG_CPU_RM7000 is not set
149# CONFIG_CPU_RM9000 is not set
150# CONFIG_CPU_SB1 is not set
151CONFIG_SYS_HAS_CPU_R4X00=y
152CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
153CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
154CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
155
156#
157# Kernel type
158#
159CONFIG_32BIT=y
160# CONFIG_64BIT is not set
161CONFIG_PAGE_SIZE_4KB=y
162# CONFIG_PAGE_SIZE_8KB is not set
163# CONFIG_PAGE_SIZE_16KB is not set
164# CONFIG_PAGE_SIZE_64KB is not set
165# CONFIG_MIPS_MT is not set
166# CONFIG_64BIT_PHYS_ADDR is not set
167# CONFIG_CPU_ADVANCED is not set
168CONFIG_CPU_HAS_LLSC=y
169CONFIG_CPU_HAS_LLDSCD=y
170CONFIG_CPU_HAS_SYNC=y
171CONFIG_GENERIC_HARDIRQS=y
172CONFIG_GENERIC_IRQ_PROBE=y
173CONFIG_ARCH_FLATMEM_ENABLE=y
174CONFIG_SELECT_MEMORY_MODEL=y
175CONFIG_FLATMEM_MANUAL=y
176# CONFIG_DISCONTIGMEM_MANUAL is not set
177# CONFIG_SPARSEMEM_MANUAL is not set
178CONFIG_FLATMEM=y
179CONFIG_FLAT_NODE_MEM_MAP=y
180# CONFIG_SPARSEMEM_STATIC is not set
181CONFIG_PREEMPT_NONE=y
182# CONFIG_PREEMPT_VOLUNTARY is not set
183# CONFIG_PREEMPT is not set
184
185#
186# Bus options (PCI, PCMCIA, EISA, ISA, TC)
187#
188CONFIG_HW_HAS_PCI=y
189CONFIG_PCI=y
190# CONFIG_PCI_LEGACY_PROC is not set
191# CONFIG_PCI_DEBUG is not set
192CONFIG_MMU=y
193
194#
195# PCCARD (PCMCIA/CardBus) support
196#
197# CONFIG_PCCARD is not set
198
199#
200# PCI Hotplug Support
201#
202# CONFIG_HOTPLUG_PCI is not set
203
204#
205# Executable file formats
206#
207CONFIG_BINFMT_ELF=y
208# CONFIG_BINFMT_MISC is not set
209CONFIG_TRAD_SIGNALS=y
210
211#
212# Networking
213#
214CONFIG_NET=y
215
216#
217# Networking options
218#
219CONFIG_PACKET=y
220# CONFIG_PACKET_MMAP is not set
221CONFIG_UNIX=y
222# CONFIG_NET_KEY is not set
223CONFIG_INET=y
224# CONFIG_IP_MULTICAST is not set
225# CONFIG_IP_ADVANCED_ROUTER is not set
226CONFIG_IP_FIB_HASH=y
227CONFIG_IP_PNP=y
228CONFIG_IP_PNP_DHCP=y
229CONFIG_IP_PNP_BOOTP=y
230# CONFIG_IP_PNP_RARP is not set
231# CONFIG_NET_IPIP is not set
232# CONFIG_NET_IPGRE is not set
233# CONFIG_ARPD is not set
234# CONFIG_SYN_COOKIES is not set
235# CONFIG_INET_AH is not set
236# CONFIG_INET_ESP is not set
237# CONFIG_INET_IPCOMP is not set
238# CONFIG_INET_TUNNEL is not set
239CONFIG_INET_DIAG=y
240CONFIG_INET_TCP_DIAG=y
241# CONFIG_TCP_CONG_ADVANCED is not set
242CONFIG_TCP_CONG_BIC=y
243# CONFIG_IPV6 is not set
244# CONFIG_NETFILTER is not set
245
246#
247# DCCP Configuration (EXPERIMENTAL)
248#
249# CONFIG_IP_DCCP is not set
250
251#
252# SCTP Configuration (EXPERIMENTAL)
253#
254# CONFIG_IP_SCTP is not set
255# CONFIG_ATM is not set
256# CONFIG_BRIDGE is not set
257# CONFIG_VLAN_8021Q is not set
258# CONFIG_DECNET is not set
259# CONFIG_LLC2 is not set
260# CONFIG_IPX is not set
261# CONFIG_ATALK is not set
262# CONFIG_X25 is not set
263# CONFIG_LAPB is not set
264# CONFIG_NET_DIVERT is not set
265# CONFIG_ECONET is not set
266# CONFIG_WAN_ROUTER is not set
267# CONFIG_NET_SCHED is not set
268# CONFIG_NET_CLS_ROUTE is not set
269
270#
271# Network testing
272#
273# CONFIG_NET_PKTGEN is not set
274# CONFIG_HAMRADIO is not set
275# CONFIG_IRDA is not set
276# CONFIG_BT is not set
277# CONFIG_IEEE80211 is not set
278
279#
280# Device Drivers
281#
282
283#
284# Generic Driver Options
285#
286CONFIG_STANDALONE=y
287CONFIG_PREVENT_FIRMWARE_BUILD=y
288# CONFIG_FW_LOADER is not set
289# CONFIG_DEBUG_DRIVER is not set
290
291#
292# Connector - unified userspace <-> kernelspace linker
293#
294# CONFIG_CONNECTOR is not set
295
296#
297# Memory Technology Devices (MTD)
298#
299# CONFIG_MTD is not set
300
301#
302# Parallel port support
303#
304# CONFIG_PARPORT is not set
305
306#
307# Plug and Play support
308#
309
310#
311# Block devices
312#
313# CONFIG_BLK_CPQ_DA is not set
314# CONFIG_BLK_CPQ_CISS_DA is not set
315# CONFIG_BLK_DEV_DAC960 is not set
316# CONFIG_BLK_DEV_UMEM is not set
317# CONFIG_BLK_DEV_COW_COMMON is not set
318CONFIG_BLK_DEV_LOOP=y
319# CONFIG_BLK_DEV_CRYPTOLOOP is not set
320# CONFIG_BLK_DEV_NBD is not set
321# CONFIG_BLK_DEV_SX8 is not set
322# CONFIG_BLK_DEV_UB is not set
323CONFIG_BLK_DEV_RAM=y
324CONFIG_BLK_DEV_RAM_COUNT=16
325CONFIG_BLK_DEV_RAM_SIZE=8192
326CONFIG_BLK_DEV_INITRD=y
327# CONFIG_LBD is not set
328# CONFIG_CDROM_PKTCDVD is not set
329
330#
331# IO Schedulers
332#
333CONFIG_IOSCHED_NOOP=y
334CONFIG_IOSCHED_AS=y
335CONFIG_IOSCHED_DEADLINE=y
336CONFIG_IOSCHED_CFQ=y
337# CONFIG_ATA_OVER_ETH is not set
338
339#
340# ATA/ATAPI/MFM/RLL support
341#
342CONFIG_IDE=y
343CONFIG_BLK_DEV_IDE=y
344
345#
346# Please see Documentation/ide.txt for help/info on IDE drives
347#
348# CONFIG_BLK_DEV_IDE_SATA is not set
349CONFIG_BLK_DEV_IDEDISK=y
350# CONFIG_IDEDISK_MULTI_MODE is not set
351CONFIG_BLK_DEV_IDECD=m
352# CONFIG_BLK_DEV_IDETAPE is not set
353# CONFIG_BLK_DEV_IDEFLOPPY is not set
354CONFIG_BLK_DEV_IDESCSI=y
355# CONFIG_IDE_TASK_IOCTL is not set
356
357#
358# IDE chipset support/bugfixes
359#
360CONFIG_IDE_GENERIC=y
361CONFIG_BLK_DEV_IDEPCI=y
362CONFIG_IDEPCI_SHARE_IRQ=y
363CONFIG_BLK_DEV_OFFBOARD=y
364CONFIG_BLK_DEV_GENERIC=y
365# CONFIG_BLK_DEV_OPTI621 is not set
366CONFIG_BLK_DEV_IDEDMA_PCI=y
367# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
368# CONFIG_IDEDMA_PCI_AUTO is not set
369# CONFIG_BLK_DEV_AEC62XX is not set
370# CONFIG_BLK_DEV_ALI15X3 is not set
371# CONFIG_BLK_DEV_AMD74XX is not set
372# CONFIG_BLK_DEV_CMD64X is not set
373# CONFIG_BLK_DEV_TRIFLEX is not set
374# CONFIG_BLK_DEV_CY82C693 is not set
375# CONFIG_BLK_DEV_CS5520 is not set
376# CONFIG_BLK_DEV_CS5530 is not set
377# CONFIG_BLK_DEV_HPT34X is not set
378CONFIG_BLK_DEV_HPT366=y
379# CONFIG_BLK_DEV_SC1200 is not set
380# CONFIG_BLK_DEV_PIIX is not set
381# CONFIG_BLK_DEV_IT821X is not set
382# CONFIG_BLK_DEV_NS87415 is not set
383# CONFIG_BLK_DEV_PDC202XX_OLD is not set
384# CONFIG_BLK_DEV_PDC202XX_NEW is not set
385# CONFIG_BLK_DEV_SVWKS is not set
386# CONFIG_BLK_DEV_SIIMAGE is not set
387# CONFIG_BLK_DEV_SLC90E66 is not set
388# CONFIG_BLK_DEV_TRM290 is not set
389# CONFIG_BLK_DEV_VIA82CXXX is not set
390# CONFIG_IDE_ARM is not set
391CONFIG_BLK_DEV_IDEDMA=y
392# CONFIG_IDEDMA_IVB is not set
393# CONFIG_IDEDMA_AUTO is not set
394# CONFIG_BLK_DEV_HD is not set
395
396#
397# SCSI device support
398#
399# CONFIG_RAID_ATTRS is not set
400CONFIG_SCSI=y
401CONFIG_SCSI_PROC_FS=y
402
403#
404# SCSI support type (disk, tape, CD-ROM)
405#
406CONFIG_BLK_DEV_SD=y
407# CONFIG_CHR_DEV_ST is not set
408# CONFIG_CHR_DEV_OSST is not set
409# CONFIG_BLK_DEV_SR is not set
410# CONFIG_CHR_DEV_SG is not set
411# CONFIG_CHR_DEV_SCH is not set
412
413#
414# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
415#
416# CONFIG_SCSI_MULTI_LUN is not set
417CONFIG_SCSI_CONSTANTS=y
418# CONFIG_SCSI_LOGGING is not set
419
420#
421# SCSI Transport Attributes
422#
423# CONFIG_SCSI_SPI_ATTRS is not set
424# CONFIG_SCSI_FC_ATTRS is not set
425# CONFIG_SCSI_ISCSI_ATTRS is not set
426# CONFIG_SCSI_SAS_ATTRS is not set
427
428#
429# SCSI low-level drivers
430#
431# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
432# CONFIG_SCSI_3W_9XXX is not set
433# CONFIG_SCSI_ACARD is not set
434# CONFIG_SCSI_AACRAID is not set
435# CONFIG_SCSI_AIC7XXX is not set
436# CONFIG_SCSI_AIC7XXX_OLD is not set
437# CONFIG_SCSI_AIC79XX is not set
438# CONFIG_SCSI_DPT_I2O is not set
439# CONFIG_MEGARAID_NEWGEN is not set
440# CONFIG_MEGARAID_LEGACY is not set
441# CONFIG_SCSI_SATA is not set
442# CONFIG_SCSI_DMX3191D is not set
443# CONFIG_SCSI_FUTURE_DOMAIN is not set
444# CONFIG_SCSI_IPS is not set
445# CONFIG_SCSI_INITIO is not set
446# CONFIG_SCSI_INIA100 is not set
447# CONFIG_SCSI_SYM53C8XX_2 is not set
448# CONFIG_SCSI_IPR is not set
449# CONFIG_SCSI_QLOGIC_FC is not set
450# CONFIG_SCSI_QLOGIC_1280 is not set
451CONFIG_SCSI_QLA2XXX=y
452# CONFIG_SCSI_QLA21XX is not set
453# CONFIG_SCSI_QLA22XX is not set
454# CONFIG_SCSI_QLA2300 is not set
455# CONFIG_SCSI_QLA2322 is not set
456# CONFIG_SCSI_QLA6312 is not set
457# CONFIG_SCSI_QLA24XX is not set
458# CONFIG_SCSI_LPFC is not set
459# CONFIG_SCSI_DC395x is not set
460# CONFIG_SCSI_DC390T is not set
461# CONFIG_SCSI_NSP32 is not set
462# CONFIG_SCSI_DEBUG is not set
463
464#
465# Multi-device support (RAID and LVM)
466#
467# CONFIG_MD is not set
468
469#
470# Fusion MPT device support
471#
472# CONFIG_FUSION is not set
473# CONFIG_FUSION_SPI is not set
474# CONFIG_FUSION_FC is not set
475
476#
477# IEEE 1394 (FireWire) support
478#
479# CONFIG_IEEE1394 is not set
480
481#
482# I2O device support
483#
484# CONFIG_I2O is not set
485
486#
487# Network device support
488#
489CONFIG_NETDEVICES=y
490# CONFIG_DUMMY is not set
491# CONFIG_BONDING is not set
492# CONFIG_EQUALIZER is not set
493# CONFIG_TUN is not set
494
495#
496# ARCnet devices
497#
498# CONFIG_ARCNET is not set
499
500#
501# PHY device support
502#
503# CONFIG_PHYLIB is not set
504
505#
506# Ethernet (10 or 100Mbit)
507#
508CONFIG_NET_ETHERNET=y
509CONFIG_MII=y
510# CONFIG_HAPPYMEAL is not set
511# CONFIG_SUNGEM is not set
512# CONFIG_NET_VENDOR_3COM is not set
513
514#
515# Tulip family network device support
516#
517# CONFIG_NET_TULIP is not set
518# CONFIG_HP100 is not set
519CONFIG_NET_PCI=y
520# CONFIG_PCNET32 is not set
521# CONFIG_AMD8111_ETH is not set
522# CONFIG_ADAPTEC_STARFIRE is not set
523# CONFIG_B44 is not set
524# CONFIG_FORCEDETH is not set
525# CONFIG_DGRS is not set
526# CONFIG_EEPRO100 is not set
527# CONFIG_E100 is not set
528# CONFIG_FEALNX is not set
529# CONFIG_NATSEMI is not set
530# CONFIG_NE2K_PCI is not set
531# CONFIG_8139CP is not set
532CONFIG_8139TOO=y
533# CONFIG_8139TOO_PIO is not set
534CONFIG_8139TOO_TUNE_TWISTER=y
535CONFIG_8139TOO_8129=y
536# CONFIG_8139_OLD_RX_RESET is not set
537# CONFIG_SIS900 is not set
538# CONFIG_EPIC100 is not set
539# CONFIG_SUNDANCE is not set
540# CONFIG_TLAN is not set
541# CONFIG_VIA_RHINE is not set
542# CONFIG_LAN_SAA9730 is not set
543
544#
545# Ethernet (1000 Mbit)
546#
547# CONFIG_ACENIC is not set
548# CONFIG_DL2K is not set
549# CONFIG_E1000 is not set
550# CONFIG_NS83820 is not set
551# CONFIG_HAMACHI is not set
552# CONFIG_YELLOWFIN is not set
553# CONFIG_R8169 is not set
554# CONFIG_SIS190 is not set
555# CONFIG_SKGE is not set
556# CONFIG_SK98LIN is not set
557# CONFIG_VIA_VELOCITY is not set
558# CONFIG_TIGON3 is not set
559# CONFIG_BNX2 is not set
560
561#
562# Ethernet (10000 Mbit)
563#
564# CONFIG_CHELSIO_T1 is not set
565# CONFIG_IXGB is not set
566# CONFIG_S2IO is not set
567
568#
569# Token Ring devices
570#
571# CONFIG_TR is not set
572
573#
574# Wireless LAN (non-hamradio)
575#
576# CONFIG_NET_RADIO is not set
577
578#
579# Wan interfaces
580#
581# CONFIG_WAN is not set
582# CONFIG_FDDI is not set
583# CONFIG_HIPPI is not set
584# CONFIG_PPP is not set
585# CONFIG_SLIP is not set
586# CONFIG_NET_FC is not set
587# CONFIG_SHAPER is not set
588# CONFIG_NETCONSOLE is not set
589# CONFIG_NETPOLL is not set
590# CONFIG_NET_POLL_CONTROLLER is not set
591
592#
593# ISDN subsystem
594#
595# CONFIG_ISDN is not set
596
597#
598# Telephony Support
599#
600# CONFIG_PHONE is not set
601
602#
603# Input device support
604#
605CONFIG_INPUT=y
606
607#
608# Userland interfaces
609#
610# CONFIG_INPUT_MOUSEDEV is not set
611# CONFIG_INPUT_JOYDEV is not set
612# CONFIG_INPUT_TSDEV is not set
613# CONFIG_INPUT_EVDEV is not set
614# CONFIG_INPUT_EVBUG is not set
615
616#
617# Input Device Drivers
618#
619# CONFIG_INPUT_KEYBOARD is not set
620# CONFIG_INPUT_MOUSE is not set
621# CONFIG_INPUT_JOYSTICK is not set
622# CONFIG_INPUT_TOUCHSCREEN is not set
623# CONFIG_INPUT_MISC is not set
624
625#
626# Hardware I/O ports
627#
628CONFIG_SERIO=y
629# CONFIG_SERIO_I8042 is not set
630# CONFIG_SERIO_SERPORT is not set
631# CONFIG_SERIO_PCIPS2 is not set
632CONFIG_SERIO_LIBPS2=y
633# CONFIG_SERIO_RAW is not set
634# CONFIG_GAMEPORT is not set
635
636#
637# Character devices
638#
639CONFIG_VT=y
640CONFIG_VT_CONSOLE=y
641CONFIG_HW_CONSOLE=y
642# CONFIG_SERIAL_NONSTANDARD is not set
643
644#
645# Serial drivers
646#
647# CONFIG_SERIAL_8250 is not set
648
649#
650# Non-8250 serial port support
651#
652# CONFIG_SERIAL_IP3106 is not set
653# CONFIG_SERIAL_JSM is not set
654CONFIG_UNIX98_PTYS=y
655CONFIG_LEGACY_PTYS=y
656CONFIG_LEGACY_PTY_COUNT=256
657
658#
659# IPMI
660#
661# CONFIG_IPMI_HANDLER is not set
662
663#
664# Watchdog Cards
665#
666# CONFIG_WATCHDOG is not set
667# CONFIG_RTC is not set
668# CONFIG_GEN_RTC is not set
669# CONFIG_DTLK is not set
670# CONFIG_R3964 is not set
671# CONFIG_APPLICOM is not set
672
673#
674# Ftape, the floppy tape device driver
675#
676# CONFIG_DRM is not set
677# CONFIG_RAW_DRIVER is not set
678
679#
680# TPM devices
681#
682# CONFIG_TCG_TPM is not set
683
684#
685# I2C support
686#
687# CONFIG_I2C is not set
688
689#
690# Dallas's 1-wire bus
691#
692# CONFIG_W1 is not set
693
694#
695# Hardware Monitoring support
696#
697CONFIG_HWMON=y
698# CONFIG_HWMON_VID is not set
699# CONFIG_HWMON_DEBUG_CHIP is not set
700
701#
702# Misc devices
703#
704
705#
706# Multimedia Capabilities Port drivers
707#
708
709#
710# Multimedia devices
711#
712# CONFIG_VIDEO_DEV is not set
713
714#
715# Digital Video Broadcasting Devices
716#
717# CONFIG_DVB is not set
718
719#
720# Graphics support
721#
722# CONFIG_FB is not set
723
724#
725# Console display driver support
726#
727# CONFIG_VGA_CONSOLE is not set
728CONFIG_DUMMY_CONSOLE=y
729
730#
731# Sound
732#
733# CONFIG_SOUND is not set
734
735#
736# USB support
737#
738CONFIG_USB_ARCH_HAS_HCD=y
739CONFIG_USB_ARCH_HAS_OHCI=y
740CONFIG_USB=y
741# CONFIG_USB_DEBUG is not set
742
743#
744# Miscellaneous USB options
745#
746# CONFIG_USB_DEVICEFS is not set
747# CONFIG_USB_BANDWIDTH is not set
748# CONFIG_USB_DYNAMIC_MINORS is not set
749# CONFIG_USB_OTG is not set
750
751#
752# USB Host Controller Drivers
753#
754# CONFIG_USB_EHCI_HCD is not set
755# CONFIG_USB_ISP116X_HCD is not set
756CONFIG_USB_OHCI_HCD=y
757# CONFIG_USB_OHCI_BIG_ENDIAN is not set
758CONFIG_USB_OHCI_LITTLE_ENDIAN=y
759# CONFIG_USB_UHCI_HCD is not set
760# CONFIG_USB_SL811_HCD is not set
761
762#
763# USB Device Class drivers
764#
765# CONFIG_USB_BLUETOOTH_TTY is not set
766# CONFIG_USB_ACM is not set
767# CONFIG_USB_PRINTER is not set
768
769#
770# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
771#
772CONFIG_USB_STORAGE=y
773# CONFIG_USB_STORAGE_DEBUG is not set
774CONFIG_USB_STORAGE_DATAFAB=y
775CONFIG_USB_STORAGE_FREECOM=y
776CONFIG_USB_STORAGE_ISD200=y
777CONFIG_USB_STORAGE_DPCM=y
778CONFIG_USB_STORAGE_USBAT=y
779CONFIG_USB_STORAGE_SDDR09=y
780CONFIG_USB_STORAGE_SDDR55=y
781CONFIG_USB_STORAGE_JUMPSHOT=y
782
783#
784# USB Input Devices
785#
786# CONFIG_USB_HID is not set
787
788#
789# USB HID Boot Protocol drivers
790#
791# CONFIG_USB_KBD is not set
792# CONFIG_USB_MOUSE is not set
793# CONFIG_USB_AIPTEK is not set
794# CONFIG_USB_WACOM is not set
795# CONFIG_USB_ACECAD is not set
796# CONFIG_USB_KBTAB is not set
797# CONFIG_USB_POWERMATE is not set
798# CONFIG_USB_MTOUCH is not set
799# CONFIG_USB_ITMTOUCH is not set
800# CONFIG_USB_EGALAX is not set
801# CONFIG_USB_YEALINK is not set
802# CONFIG_USB_XPAD is not set
803# CONFIG_USB_ATI_REMOTE is not set
804# CONFIG_USB_KEYSPAN_REMOTE is not set
805# CONFIG_USB_APPLETOUCH is not set
806
807#
808# USB Imaging devices
809#
810# CONFIG_USB_MDC800 is not set
811# CONFIG_USB_MICROTEK is not set
812
813#
814# USB Multimedia devices
815#
816# CONFIG_USB_DABUSB is not set
817
818#
819# Video4Linux support is needed for USB Multimedia device support
820#
821
822#
823# USB Network Adapters
824#
825# CONFIG_USB_CATC is not set
826# CONFIG_USB_KAWETH is not set
827# CONFIG_USB_PEGASUS is not set
828# CONFIG_USB_RTL8150 is not set
829# CONFIG_USB_USBNET is not set
830CONFIG_USB_MON=y
831
832#
833# USB port drivers
834#
835
836#
837# USB Serial Converter support
838#
839# CONFIG_USB_SERIAL is not set
840
841#
842# USB Miscellaneous drivers
843#
844# CONFIG_USB_EMI62 is not set
845# CONFIG_USB_EMI26 is not set
846# CONFIG_USB_AUERSWALD is not set
847# CONFIG_USB_RIO500 is not set
848# CONFIG_USB_LEGOTOWER is not set
849# CONFIG_USB_LCD is not set
850# CONFIG_USB_LED is not set
851# CONFIG_USB_CYTHERM is not set
852# CONFIG_USB_PHIDGETKIT is not set
853# CONFIG_USB_PHIDGETSERVO is not set
854# CONFIG_USB_IDMOUSE is not set
855# CONFIG_USB_LD is not set
856
857#
858# USB DSL modem support
859#
860
861#
862# USB Gadget Support
863#
864# CONFIG_USB_GADGET is not set
865
866#
867# MMC/SD Card support
868#
869# CONFIG_MMC is not set
870
871#
872# InfiniBand support
873#
874# CONFIG_INFINIBAND is not set
875
876#
877# SN Devices
878#
879
880#
881# File systems
882#
883CONFIG_EXT2_FS=y
884# CONFIG_EXT2_FS_XATTR is not set
885# CONFIG_EXT2_FS_XIP is not set
886# CONFIG_EXT3_FS is not set
887# CONFIG_JBD is not set
888# CONFIG_REISERFS_FS is not set
889# CONFIG_JFS_FS is not set
890# CONFIG_FS_POSIX_ACL is not set
891# CONFIG_XFS_FS is not set
892# CONFIG_MINIX_FS is not set
893# CONFIG_ROMFS_FS is not set
894CONFIG_INOTIFY=y
895# CONFIG_QUOTA is not set
896# CONFIG_DNOTIFY is not set
897# CONFIG_AUTOFS_FS is not set
898# CONFIG_AUTOFS4_FS is not set
899# CONFIG_FUSE_FS is not set
900
901#
902# CD-ROM/DVD Filesystems
903#
904# CONFIG_ISO9660_FS is not set
905# CONFIG_UDF_FS is not set
906
907#
908# DOS/FAT/NT Filesystems
909#
910CONFIG_FAT_FS=y
911CONFIG_MSDOS_FS=y
912CONFIG_VFAT_FS=y
913CONFIG_FAT_DEFAULT_CODEPAGE=437
914CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
915# CONFIG_NTFS_FS is not set
916
917#
918# Pseudo filesystems
919#
920CONFIG_PROC_FS=y
921# CONFIG_PROC_KCORE is not set
922CONFIG_SYSFS=y
923CONFIG_TMPFS=y
924# CONFIG_HUGETLB_PAGE is not set
925CONFIG_RAMFS=y
926# CONFIG_RELAYFS_FS is not set
927
928#
929# Miscellaneous filesystems
930#
931# CONFIG_ADFS_FS is not set
932# CONFIG_AFFS_FS is not set
933# CONFIG_HFS_FS is not set
934# CONFIG_HFSPLUS_FS is not set
935# CONFIG_BEFS_FS is not set
936# CONFIG_BFS_FS is not set
937# CONFIG_EFS_FS is not set
938# CONFIG_CRAMFS is not set
939# CONFIG_VXFS_FS is not set
940# CONFIG_HPFS_FS is not set
941# CONFIG_QNX4FS_FS is not set
942# CONFIG_SYSV_FS is not set
943# CONFIG_UFS_FS is not set
944
945#
946# Network File Systems
947#
948CONFIG_NFS_FS=y
949CONFIG_NFS_V3=y
950# CONFIG_NFS_V3_ACL is not set
951# CONFIG_NFS_V4 is not set
952# CONFIG_NFS_DIRECTIO is not set
953CONFIG_NFSD=m
954# CONFIG_NFSD_V3 is not set
955# CONFIG_NFSD_TCP is not set
956CONFIG_ROOT_NFS=y
957CONFIG_LOCKD=y
958CONFIG_LOCKD_V4=y
959CONFIG_EXPORTFS=m
960CONFIG_NFS_COMMON=y
961CONFIG_SUNRPC=y
962# CONFIG_RPCSEC_GSS_KRB5 is not set
963# CONFIG_RPCSEC_GSS_SPKM3 is not set
964# CONFIG_SMB_FS is not set
965# CONFIG_CIFS is not set
966# CONFIG_NCP_FS is not set
967# CONFIG_CODA_FS is not set
968# CONFIG_AFS_FS is not set
969# CONFIG_9P_FS is not set
970
971#
972# Partition Types
973#
974# CONFIG_PARTITION_ADVANCED is not set
975CONFIG_MSDOS_PARTITION=y
976
977#
978# Native Language Support
979#
980CONFIG_NLS=y
981CONFIG_NLS_DEFAULT="iso8859-1"
982# CONFIG_NLS_CODEPAGE_437 is not set
983# CONFIG_NLS_CODEPAGE_737 is not set
984# CONFIG_NLS_CODEPAGE_775 is not set
985# CONFIG_NLS_CODEPAGE_850 is not set
986# CONFIG_NLS_CODEPAGE_852 is not set
987# CONFIG_NLS_CODEPAGE_855 is not set
988# CONFIG_NLS_CODEPAGE_857 is not set
989# CONFIG_NLS_CODEPAGE_860 is not set
990# CONFIG_NLS_CODEPAGE_861 is not set
991# CONFIG_NLS_CODEPAGE_862 is not set
992# CONFIG_NLS_CODEPAGE_863 is not set
993# CONFIG_NLS_CODEPAGE_864 is not set
994# CONFIG_NLS_CODEPAGE_865 is not set
995# CONFIG_NLS_CODEPAGE_866 is not set
996# CONFIG_NLS_CODEPAGE_869 is not set
997# CONFIG_NLS_CODEPAGE_936 is not set
998# CONFIG_NLS_CODEPAGE_950 is not set
999# CONFIG_NLS_CODEPAGE_932 is not set
1000# CONFIG_NLS_CODEPAGE_949 is not set
1001# CONFIG_NLS_CODEPAGE_874 is not set
1002# CONFIG_NLS_ISO8859_8 is not set
1003# CONFIG_NLS_CODEPAGE_1250 is not set
1004# CONFIG_NLS_CODEPAGE_1251 is not set
1005# CONFIG_NLS_ASCII is not set
1006# CONFIG_NLS_ISO8859_1 is not set
1007# CONFIG_NLS_ISO8859_2 is not set
1008# CONFIG_NLS_ISO8859_3 is not set
1009# CONFIG_NLS_ISO8859_4 is not set
1010# CONFIG_NLS_ISO8859_5 is not set
1011# CONFIG_NLS_ISO8859_6 is not set
1012# CONFIG_NLS_ISO8859_7 is not set
1013# CONFIG_NLS_ISO8859_9 is not set
1014# CONFIG_NLS_ISO8859_13 is not set
1015# CONFIG_NLS_ISO8859_14 is not set
1016# CONFIG_NLS_ISO8859_15 is not set
1017# CONFIG_NLS_KOI8_R is not set
1018# CONFIG_NLS_KOI8_U is not set
1019# CONFIG_NLS_UTF8 is not set
1020
1021#
1022# Profiling support
1023#
1024# CONFIG_PROFILING is not set
1025
1026#
1027# Kernel hacking
1028#
1029# CONFIG_PRINTK_TIME is not set
1030CONFIG_DEBUG_KERNEL=y
1031CONFIG_MAGIC_SYSRQ=y
1032CONFIG_LOG_BUF_SHIFT=14
1033CONFIG_DETECT_SOFTLOCKUP=y
1034# CONFIG_SCHEDSTATS is not set
1035CONFIG_DEBUG_SLAB=y
1036# CONFIG_DEBUG_SPINLOCK is not set
1037# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1038# CONFIG_DEBUG_KOBJECT is not set
1039# CONFIG_DEBUG_INFO is not set
1040# CONFIG_DEBUG_FS is not set
1041CONFIG_CROSSCOMPILE=y
1042CONFIG_CMDLINE="console=ttyS1,38400n8 kgdb=ttyS0 root=/dev/nfs ip=bootp"
1043# CONFIG_DEBUG_STACK_USAGE is not set
1044# CONFIG_KGDB is not set
1045# CONFIG_RUNTIME_DEBUG is not set
1046# CONFIG_MIPS_UNCACHED is not set
1047
1048#
1049# Security options
1050#
1051# CONFIG_KEYS is not set
1052# CONFIG_SECURITY is not set
1053
1054#
1055# Cryptographic options
1056#
1057# CONFIG_CRYPTO is not set
1058
1059#
1060# Hardware crypto devices
1061#
1062
1063#
1064# Library routines
1065#
1066CONFIG_CRC_CCITT=m
1067# CONFIG_CRC16 is not set
1068CONFIG_CRC32=y
1069# CONFIG_LIBCRC32C is not set
diff --git a/arch/mips/configs/pnx8550-v2pci_defconfig b/arch/mips/configs/pnx8550-v2pci_defconfig
new file mode 100644
index 000000000000..deb24c29ac0a
--- /dev/null
+++ b/arch/mips/configs/pnx8550-v2pci_defconfig
@@ -0,0 +1,1251 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.14-rc2
4# Thu Oct 20 22:26:53 2005
5#
6CONFIG_MIPS=y
7
8#
9# Code maturity level options
10#
11CONFIG_EXPERIMENTAL=y
12CONFIG_CLEAN_COMPILE=y
13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
15
16#
17# General setup
18#
19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
21CONFIG_SWAP=y
22CONFIG_SYSVIPC=y
23# CONFIG_POSIX_MQUEUE is not set
24# CONFIG_BSD_PROCESS_ACCT is not set
25CONFIG_SYSCTL=y
26# CONFIG_AUDIT is not set
27# CONFIG_HOTPLUG is not set
28CONFIG_KOBJECT_UEVENT=y
29CONFIG_IKCONFIG=y
30CONFIG_IKCONFIG_PROC=y
31CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set
35CONFIG_PRINTK=y
36CONFIG_BUG=y
37CONFIG_BASE_FULL=y
38CONFIG_FUTEX=y
39CONFIG_EPOLL=y
40# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
41CONFIG_SHMEM=y
42CONFIG_CC_ALIGN_FUNCTIONS=0
43CONFIG_CC_ALIGN_LABELS=0
44CONFIG_CC_ALIGN_LOOPS=0
45CONFIG_CC_ALIGN_JUMPS=0
46# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0
48
49#
50# Loadable module support
51#
52CONFIG_MODULES=y
53# CONFIG_MODULE_UNLOAD is not set
54CONFIG_OBSOLETE_MODPARM=y
55# CONFIG_MODVERSIONS is not set
56# CONFIG_MODULE_SRCVERSION_ALL is not set
57CONFIG_KMOD=y
58
59#
60# Machine selection
61#
62# CONFIG_MIPS_MTX1 is not set
63# CONFIG_MIPS_BOSPORUS is not set
64# CONFIG_MIPS_PB1000 is not set
65# CONFIG_MIPS_PB1100 is not set
66# CONFIG_MIPS_PB1500 is not set
67# CONFIG_MIPS_PB1550 is not set
68# CONFIG_MIPS_PB1200 is not set
69# CONFIG_MIPS_DB1000 is not set
70# CONFIG_MIPS_DB1100 is not set
71# CONFIG_MIPS_DB1500 is not set
72# CONFIG_MIPS_DB1550 is not set
73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
75# CONFIG_MIPS_COBALT is not set
76# CONFIG_MACH_DECSTATION is not set
77# CONFIG_MIPS_EV64120 is not set
78# CONFIG_MIPS_EV96100 is not set
79# CONFIG_MIPS_IVR is not set
80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
83# CONFIG_MIPS_ATLAS is not set
84# CONFIG_MIPS_MALTA is not set
85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
88# CONFIG_MOMENCO_OCELOT is not set
89# CONFIG_MOMENCO_OCELOT_3 is not set
90# CONFIG_MOMENCO_OCELOT_C is not set
91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93CONFIG_PNX8550_V2PCI=y
94# CONFIG_PNX8550_JBS is not set
95# CONFIG_DDB5074 is not set
96# CONFIG_DDB5476 is not set
97# CONFIG_DDB5477 is not set
98# CONFIG_MACH_VR41XX is not set
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
101# CONFIG_SGI_IP22 is not set
102# CONFIG_SGI_IP27 is not set
103# CONFIG_SGI_IP32 is not set
104# CONFIG_SIBYTE_BIGSUR is not set
105# CONFIG_SIBYTE_SWARM is not set
106# CONFIG_SIBYTE_SENTOSA is not set
107# CONFIG_SIBYTE_RHONE is not set
108# CONFIG_SIBYTE_CARMEL is not set
109# CONFIG_SIBYTE_PTSWARM is not set
110# CONFIG_SIBYTE_LITTLESUR is not set
111# CONFIG_SIBYTE_CRHINE is not set
112# CONFIG_SIBYTE_CRHONE is not set
113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
117CONFIG_RWSEM_GENERIC_SPINLOCK=y
118CONFIG_GENERIC_CALIBRATE_DELAY=y
119CONFIG_DMA_NONCOHERENT=y
120CONFIG_DMA_NEED_PCI_MAP_STATE=y
121# CONFIG_CPU_BIG_ENDIAN is not set
122CONFIG_CPU_LITTLE_ENDIAN=y
123CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
124CONFIG_PNX8550=y
125CONFIG_SOC_PNX8550=y
126CONFIG_MIPS_L1_CACHE_SHIFT=5
127
128#
129# CPU selection
130#
131# CONFIG_CPU_MIPS32_R1 is not set
132# CONFIG_CPU_MIPS32_R2 is not set
133# CONFIG_CPU_MIPS64_R1 is not set
134# CONFIG_CPU_MIPS64_R2 is not set
135# CONFIG_CPU_R3000 is not set
136# CONFIG_CPU_TX39XX is not set
137# CONFIG_CPU_VR41XX is not set
138# CONFIG_CPU_R4300 is not set
139CONFIG_CPU_R4X00=y
140# CONFIG_CPU_TX49XX is not set
141# CONFIG_CPU_R5000 is not set
142# CONFIG_CPU_R5432 is not set
143# CONFIG_CPU_R6000 is not set
144# CONFIG_CPU_NEVADA is not set
145# CONFIG_CPU_R8000 is not set
146# CONFIG_CPU_R10000 is not set
147# CONFIG_CPU_RM7000 is not set
148# CONFIG_CPU_RM9000 is not set
149# CONFIG_CPU_SB1 is not set
150CONFIG_SYS_HAS_CPU_R4X00=y
151CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
152CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
153CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
154
155#
156# Kernel type
157#
158CONFIG_32BIT=y
159# CONFIG_64BIT is not set
160CONFIG_PAGE_SIZE_4KB=y
161# CONFIG_PAGE_SIZE_8KB is not set
162# CONFIG_PAGE_SIZE_16KB is not set
163# CONFIG_PAGE_SIZE_64KB is not set
164# CONFIG_MIPS_MT is not set
165# CONFIG_64BIT_PHYS_ADDR is not set
166CONFIG_CPU_ADVANCED=y
167CONFIG_CPU_HAS_LLSC=y
168# CONFIG_CPU_HAS_LLDSCD is not set
169# CONFIG_CPU_HAS_WB is not set
170CONFIG_CPU_HAS_SYNC=y
171CONFIG_GENERIC_HARDIRQS=y
172CONFIG_GENERIC_IRQ_PROBE=y
173CONFIG_ARCH_FLATMEM_ENABLE=y
174CONFIG_SELECT_MEMORY_MODEL=y
175CONFIG_FLATMEM_MANUAL=y
176# CONFIG_DISCONTIGMEM_MANUAL is not set
177# CONFIG_SPARSEMEM_MANUAL is not set
178CONFIG_FLATMEM=y
179CONFIG_FLAT_NODE_MEM_MAP=y
180# CONFIG_SPARSEMEM_STATIC is not set
181CONFIG_PREEMPT_NONE=y
182# CONFIG_PREEMPT_VOLUNTARY is not set
183# CONFIG_PREEMPT is not set
184
185#
186# Bus options (PCI, PCMCIA, EISA, ISA, TC)
187#
188CONFIG_HW_HAS_PCI=y
189CONFIG_PCI=y
190# CONFIG_PCI_LEGACY_PROC is not set
191CONFIG_MMU=y
192
193#
194# PCCARD (PCMCIA/CardBus) support
195#
196# CONFIG_PCCARD is not set
197
198#
199# PCI Hotplug Support
200#
201# CONFIG_HOTPLUG_PCI is not set
202
203#
204# Executable file formats
205#
206CONFIG_BINFMT_ELF=y
207# CONFIG_BINFMT_MISC is not set
208CONFIG_TRAD_SIGNALS=y
209
210#
211# Networking
212#
213CONFIG_NET=y
214
215#
216# Networking options
217#
218CONFIG_PACKET=y
219# CONFIG_PACKET_MMAP is not set
220CONFIG_UNIX=y
221# CONFIG_NET_KEY is not set
222CONFIG_INET=y
223# CONFIG_IP_MULTICAST is not set
224# CONFIG_IP_ADVANCED_ROUTER is not set
225CONFIG_IP_FIB_HASH=y
226CONFIG_IP_PNP=y
227# CONFIG_IP_PNP_DHCP is not set
228# CONFIG_IP_PNP_BOOTP is not set
229# CONFIG_IP_PNP_RARP is not set
230# CONFIG_NET_IPIP is not set
231# CONFIG_NET_IPGRE is not set
232# CONFIG_ARPD is not set
233# CONFIG_SYN_COOKIES is not set
234# CONFIG_INET_AH is not set
235# CONFIG_INET_ESP is not set
236# CONFIG_INET_IPCOMP is not set
237# CONFIG_INET_TUNNEL is not set
238CONFIG_INET_DIAG=y
239CONFIG_INET_TCP_DIAG=y
240# CONFIG_TCP_CONG_ADVANCED is not set
241CONFIG_TCP_CONG_BIC=y
242
243#
244# IP: Virtual Server Configuration
245#
246# CONFIG_IP_VS is not set
247CONFIG_IPV6=m
248# CONFIG_IPV6_PRIVACY is not set
249# CONFIG_INET6_AH is not set
250# CONFIG_INET6_ESP is not set
251# CONFIG_INET6_IPCOMP is not set
252# CONFIG_INET6_TUNNEL is not set
253# CONFIG_IPV6_TUNNEL is not set
254CONFIG_NETFILTER=y
255# CONFIG_NETFILTER_DEBUG is not set
256# CONFIG_NETFILTER_NETLINK is not set
257
258#
259# IP: Netfilter Configuration
260#
261# CONFIG_IP_NF_CONNTRACK is not set
262CONFIG_IP_NF_PPTP=m
263# CONFIG_IP_NF_QUEUE is not set
264# CONFIG_IP_NF_IPTABLES is not set
265# CONFIG_IP_NF_ARPTABLES is not set
266
267#
268# IPv6: Netfilter Configuration (EXPERIMENTAL)
269#
270# CONFIG_IP6_NF_QUEUE is not set
271# CONFIG_IP6_NF_IPTABLES is not set
272
273#
274# DCCP Configuration (EXPERIMENTAL)
275#
276# CONFIG_IP_DCCP is not set
277
278#
279# SCTP Configuration (EXPERIMENTAL)
280#
281# CONFIG_IP_SCTP is not set
282# CONFIG_ATM is not set
283# CONFIG_BRIDGE is not set
284# CONFIG_VLAN_8021Q is not set
285# CONFIG_DECNET is not set
286# CONFIG_LLC2 is not set
287# CONFIG_IPX is not set
288# CONFIG_ATALK is not set
289# CONFIG_X25 is not set
290# CONFIG_LAPB is not set
291# CONFIG_NET_DIVERT is not set
292# CONFIG_ECONET is not set
293# CONFIG_WAN_ROUTER is not set
294# CONFIG_NET_SCHED is not set
295# CONFIG_NET_CLS_ROUTE is not set
296
297#
298# Network testing
299#
300# CONFIG_NET_PKTGEN is not set
301# CONFIG_HAMRADIO is not set
302# CONFIG_IRDA is not set
303# CONFIG_BT is not set
304# CONFIG_IEEE80211 is not set
305
306#
307# Device Drivers
308#
309
310#
311# Generic Driver Options
312#
313CONFIG_STANDALONE=y
314CONFIG_PREVENT_FIRMWARE_BUILD=y
315# CONFIG_FW_LOADER is not set
316
317#
318# Connector - unified userspace <-> kernelspace linker
319#
320# CONFIG_CONNECTOR is not set
321
322#
323# Memory Technology Devices (MTD)
324#
325# CONFIG_MTD is not set
326
327#
328# Parallel port support
329#
330# CONFIG_PARPORT is not set
331
332#
333# Plug and Play support
334#
335
336#
337# Block devices
338#
339# CONFIG_BLK_CPQ_DA is not set
340# CONFIG_BLK_CPQ_CISS_DA is not set
341# CONFIG_BLK_DEV_DAC960 is not set
342# CONFIG_BLK_DEV_UMEM is not set
343# CONFIG_BLK_DEV_COW_COMMON is not set
344CONFIG_BLK_DEV_LOOP=y
345# CONFIG_BLK_DEV_CRYPTOLOOP is not set
346# CONFIG_BLK_DEV_NBD is not set
347# CONFIG_BLK_DEV_SX8 is not set
348# CONFIG_BLK_DEV_UB is not set
349CONFIG_BLK_DEV_RAM=y
350CONFIG_BLK_DEV_RAM_COUNT=16
351CONFIG_BLK_DEV_RAM_SIZE=8192
352CONFIG_BLK_DEV_INITRD=y
353# CONFIG_LBD is not set
354# CONFIG_CDROM_PKTCDVD is not set
355
356#
357# IO Schedulers
358#
359CONFIG_IOSCHED_NOOP=y
360CONFIG_IOSCHED_AS=y
361CONFIG_IOSCHED_DEADLINE=y
362CONFIG_IOSCHED_CFQ=y
363# CONFIG_ATA_OVER_ETH is not set
364
365#
366# ATA/ATAPI/MFM/RLL support
367#
368CONFIG_IDE=y
369CONFIG_BLK_DEV_IDE=y
370
371#
372# Please see Documentation/ide.txt for help/info on IDE drives
373#
374# CONFIG_BLK_DEV_IDE_SATA is not set
375CONFIG_BLK_DEV_IDEDISK=y
376CONFIG_IDEDISK_MULTI_MODE=y
377# CONFIG_BLK_DEV_IDECD is not set
378# CONFIG_BLK_DEV_IDETAPE is not set
379# CONFIG_BLK_DEV_IDEFLOPPY is not set
380# CONFIG_BLK_DEV_IDESCSI is not set
381# CONFIG_IDE_TASK_IOCTL is not set
382
383#
384# IDE chipset support/bugfixes
385#
386CONFIG_IDE_GENERIC=y
387CONFIG_BLK_DEV_IDEPCI=y
388CONFIG_IDEPCI_SHARE_IRQ=y
389# CONFIG_BLK_DEV_OFFBOARD is not set
390# CONFIG_BLK_DEV_GENERIC is not set
391# CONFIG_BLK_DEV_OPTI621 is not set
392CONFIG_BLK_DEV_IDEDMA_PCI=y
393# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
394CONFIG_IDEDMA_PCI_AUTO=y
395# CONFIG_IDEDMA_ONLYDISK is not set
396# CONFIG_BLK_DEV_AEC62XX is not set
397# CONFIG_BLK_DEV_ALI15X3 is not set
398# CONFIG_BLK_DEV_AMD74XX is not set
399CONFIG_BLK_DEV_CMD64X=y
400# CONFIG_BLK_DEV_TRIFLEX is not set
401# CONFIG_BLK_DEV_CY82C693 is not set
402# CONFIG_BLK_DEV_CS5520 is not set
403# CONFIG_BLK_DEV_CS5530 is not set
404# CONFIG_BLK_DEV_HPT34X is not set
405# CONFIG_BLK_DEV_HPT366 is not set
406# CONFIG_BLK_DEV_SC1200 is not set
407# CONFIG_BLK_DEV_PIIX is not set
408# CONFIG_BLK_DEV_IT821X is not set
409# CONFIG_BLK_DEV_NS87415 is not set
410# CONFIG_BLK_DEV_PDC202XX_OLD is not set
411# CONFIG_BLK_DEV_PDC202XX_NEW is not set
412# CONFIG_BLK_DEV_SVWKS is not set
413# CONFIG_BLK_DEV_SIIMAGE is not set
414# CONFIG_BLK_DEV_SLC90E66 is not set
415# CONFIG_BLK_DEV_TRM290 is not set
416# CONFIG_BLK_DEV_VIA82CXXX is not set
417# CONFIG_IDE_ARM is not set
418CONFIG_BLK_DEV_IDEDMA=y
419# CONFIG_IDEDMA_IVB is not set
420CONFIG_IDEDMA_AUTO=y
421# CONFIG_BLK_DEV_HD is not set
422
423#
424# SCSI device support
425#
426# CONFIG_RAID_ATTRS is not set
427CONFIG_SCSI=y
428CONFIG_SCSI_PROC_FS=y
429
430#
431# SCSI support type (disk, tape, CD-ROM)
432#
433CONFIG_BLK_DEV_SD=y
434# CONFIG_CHR_DEV_ST is not set
435# CONFIG_CHR_DEV_OSST is not set
436# CONFIG_BLK_DEV_SR is not set
437# CONFIG_CHR_DEV_SG is not set
438# CONFIG_CHR_DEV_SCH is not set
439
440#
441# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
442#
443# CONFIG_SCSI_MULTI_LUN is not set
444# CONFIG_SCSI_CONSTANTS is not set
445# CONFIG_SCSI_LOGGING is not set
446
447#
448# SCSI Transport Attributes
449#
450CONFIG_SCSI_SPI_ATTRS=m
451# CONFIG_SCSI_FC_ATTRS is not set
452# CONFIG_SCSI_ISCSI_ATTRS is not set
453# CONFIG_SCSI_SAS_ATTRS is not set
454
455#
456# SCSI low-level drivers
457#
458# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
459# CONFIG_SCSI_3W_9XXX is not set
460# CONFIG_SCSI_ACARD is not set
461# CONFIG_SCSI_AACRAID is not set
462CONFIG_SCSI_AIC7XXX=m
463CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
464CONFIG_AIC7XXX_RESET_DELAY_MS=15000
465# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
466CONFIG_AIC7XXX_DEBUG_MASK=0
467# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
468# CONFIG_SCSI_AIC7XXX_OLD is not set
469# CONFIG_SCSI_AIC79XX is not set
470# CONFIG_SCSI_DPT_I2O is not set
471# CONFIG_MEGARAID_NEWGEN is not set
472# CONFIG_MEGARAID_LEGACY is not set
473# CONFIG_SCSI_SATA is not set
474# CONFIG_SCSI_DMX3191D is not set
475# CONFIG_SCSI_FUTURE_DOMAIN is not set
476# CONFIG_SCSI_IPS is not set
477# CONFIG_SCSI_INITIO is not set
478# CONFIG_SCSI_INIA100 is not set
479# CONFIG_SCSI_SYM53C8XX_2 is not set
480# CONFIG_SCSI_IPR is not set
481# CONFIG_SCSI_QLOGIC_FC is not set
482# CONFIG_SCSI_QLOGIC_1280 is not set
483CONFIG_SCSI_QLA2XXX=y
484# CONFIG_SCSI_QLA21XX is not set
485# CONFIG_SCSI_QLA22XX is not set
486# CONFIG_SCSI_QLA2300 is not set
487# CONFIG_SCSI_QLA2322 is not set
488# CONFIG_SCSI_QLA6312 is not set
489# CONFIG_SCSI_QLA24XX is not set
490# CONFIG_SCSI_LPFC is not set
491# CONFIG_SCSI_DC395x is not set
492# CONFIG_SCSI_DC390T is not set
493# CONFIG_SCSI_NSP32 is not set
494# CONFIG_SCSI_DEBUG is not set
495
496#
497# Multi-device support (RAID and LVM)
498#
499# CONFIG_MD is not set
500
501#
502# Fusion MPT device support
503#
504# CONFIG_FUSION is not set
505# CONFIG_FUSION_SPI is not set
506# CONFIG_FUSION_FC is not set
507
508#
509# IEEE 1394 (FireWire) support
510#
511# CONFIG_IEEE1394 is not set
512
513#
514# I2O device support
515#
516# CONFIG_I2O is not set
517
518#
519# Network device support
520#
521CONFIG_NETDEVICES=y
522# CONFIG_DUMMY is not set
523# CONFIG_BONDING is not set
524# CONFIG_EQUALIZER is not set
525CONFIG_TUN=m
526
527#
528# ARCnet devices
529#
530# CONFIG_ARCNET is not set
531
532#
533# PHY device support
534#
535# CONFIG_PHYLIB is not set
536
537#
538# Ethernet (10 or 100Mbit)
539#
540CONFIG_NET_ETHERNET=y
541CONFIG_MII=y
542# CONFIG_HAPPYMEAL is not set
543# CONFIG_SUNGEM is not set
544# CONFIG_NET_VENDOR_3COM is not set
545
546#
547# Tulip family network device support
548#
549# CONFIG_NET_TULIP is not set
550# CONFIG_HP100 is not set
551CONFIG_NET_PCI=y
552# CONFIG_PCNET32 is not set
553# CONFIG_AMD8111_ETH is not set
554# CONFIG_ADAPTEC_STARFIRE is not set
555# CONFIG_B44 is not set
556# CONFIG_FORCEDETH is not set
557# CONFIG_DGRS is not set
558# CONFIG_EEPRO100 is not set
559# CONFIG_E100 is not set
560# CONFIG_FEALNX is not set
561CONFIG_NATSEMI=y
562# CONFIG_NE2K_PCI is not set
563# CONFIG_8139CP is not set
564CONFIG_8139TOO=y
565# CONFIG_8139TOO_PIO is not set
566# CONFIG_8139TOO_TUNE_TWISTER is not set
567# CONFIG_8139TOO_8129 is not set
568# CONFIG_8139_OLD_RX_RESET is not set
569# CONFIG_SIS900 is not set
570# CONFIG_EPIC100 is not set
571# CONFIG_SUNDANCE is not set
572# CONFIG_TLAN is not set
573# CONFIG_VIA_RHINE is not set
574# CONFIG_LAN_SAA9730 is not set
575
576#
577# Ethernet (1000 Mbit)
578#
579# CONFIG_ACENIC is not set
580# CONFIG_DL2K is not set
581# CONFIG_E1000 is not set
582# CONFIG_NS83820 is not set
583# CONFIG_HAMACHI is not set
584# CONFIG_YELLOWFIN is not set
585# CONFIG_R8169 is not set
586# CONFIG_SIS190 is not set
587# CONFIG_SKGE is not set
588# CONFIG_SK98LIN is not set
589# CONFIG_VIA_VELOCITY is not set
590# CONFIG_TIGON3 is not set
591# CONFIG_BNX2 is not set
592
593#
594# Ethernet (10000 Mbit)
595#
596# CONFIG_CHELSIO_T1 is not set
597# CONFIG_IXGB is not set
598# CONFIG_S2IO is not set
599
600#
601# Token Ring devices
602#
603# CONFIG_TR is not set
604
605#
606# Wireless LAN (non-hamradio)
607#
608# CONFIG_NET_RADIO is not set
609
610#
611# Wan interfaces
612#
613# CONFIG_WAN is not set
614# CONFIG_FDDI is not set
615# CONFIG_HIPPI is not set
616CONFIG_PPP=m
617# CONFIG_PPP_MULTILINK is not set
618# CONFIG_PPP_FILTER is not set
619CONFIG_PPP_ASYNC=m
620CONFIG_PPP_SYNC_TTY=m
621CONFIG_PPP_DEFLATE=m
622# CONFIG_PPP_BSDCOMP is not set
623# CONFIG_PPPOE is not set
624# CONFIG_SLIP is not set
625# CONFIG_NET_FC is not set
626# CONFIG_SHAPER is not set
627# CONFIG_NETCONSOLE is not set
628# CONFIG_NETPOLL is not set
629# CONFIG_NET_POLL_CONTROLLER is not set
630
631#
632# ISDN subsystem
633#
634# CONFIG_ISDN is not set
635
636#
637# Telephony Support
638#
639# CONFIG_PHONE is not set
640
641#
642# Input device support
643#
644CONFIG_INPUT=y
645
646#
647# Userland interfaces
648#
649CONFIG_INPUT_MOUSEDEV=y
650CONFIG_INPUT_MOUSEDEV_PSAUX=y
651CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
652CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
653# CONFIG_INPUT_JOYDEV is not set
654# CONFIG_INPUT_TSDEV is not set
655CONFIG_INPUT_EVDEV=m
656# CONFIG_INPUT_EVBUG is not set
657
658#
659# Input Device Drivers
660#
661CONFIG_INPUT_KEYBOARD=y
662CONFIG_KEYBOARD_ATKBD=y
663# CONFIG_KEYBOARD_SUNKBD is not set
664# CONFIG_KEYBOARD_LKKBD is not set
665# CONFIG_KEYBOARD_XTKBD is not set
666# CONFIG_KEYBOARD_NEWTON is not set
667CONFIG_INPUT_MOUSE=y
668CONFIG_MOUSE_PS2=y
669# CONFIG_MOUSE_SERIAL is not set
670# CONFIG_MOUSE_VSXXXAA is not set
671# CONFIG_INPUT_JOYSTICK is not set
672# CONFIG_INPUT_TOUCHSCREEN is not set
673# CONFIG_INPUT_MISC is not set
674
675#
676# Hardware I/O ports
677#
678CONFIG_SERIO=y
679CONFIG_SERIO_I8042=y
680CONFIG_SERIO_SERPORT=y
681# CONFIG_SERIO_PCIPS2 is not set
682CONFIG_SERIO_LIBPS2=y
683# CONFIG_SERIO_RAW is not set
684# CONFIG_GAMEPORT is not set
685
686#
687# Character devices
688#
689CONFIG_VT=y
690# CONFIG_VT_CONSOLE is not set
691CONFIG_HW_CONSOLE=y
692CONFIG_SERIAL_NONSTANDARD=y
693# CONFIG_COMPUTONE is not set
694# CONFIG_ROCKETPORT is not set
695# CONFIG_CYCLADES is not set
696# CONFIG_DIGIEPCA is not set
697# CONFIG_MOXA_INTELLIO is not set
698# CONFIG_MOXA_SMARTIO is not set
699# CONFIG_ISI is not set
700# CONFIG_SYNCLINKMP is not set
701# CONFIG_N_HDLC is not set
702# CONFIG_RISCOM8 is not set
703# CONFIG_SPECIALIX is not set
704# CONFIG_SX is not set
705# CONFIG_RIO is not set
706# CONFIG_STALDRV is not set
707
708#
709# Serial drivers
710#
711# CONFIG_SERIAL_8250 is not set
712
713#
714# Non-8250 serial port support
715#
716# CONFIG_SERIAL_IP3106 is not set
717# CONFIG_SERIAL_JSM is not set
718CONFIG_UNIX98_PTYS=y
719CONFIG_LEGACY_PTYS=y
720CONFIG_LEGACY_PTY_COUNT=256
721
722#
723# IPMI
724#
725# CONFIG_IPMI_HANDLER is not set
726
727#
728# Watchdog Cards
729#
730# CONFIG_WATCHDOG is not set
731# CONFIG_RTC is not set
732# CONFIG_GEN_RTC is not set
733# CONFIG_DTLK is not set
734# CONFIG_R3964 is not set
735# CONFIG_APPLICOM is not set
736
737#
738# Ftape, the floppy tape device driver
739#
740# CONFIG_DRM is not set
741# CONFIG_RAW_DRIVER is not set
742
743#
744# TPM devices
745#
746# CONFIG_TCG_TPM is not set
747
748#
749# I2C support
750#
751CONFIG_I2C=m
752CONFIG_I2C_CHARDEV=m
753
754#
755# I2C Algorithms
756#
757CONFIG_I2C_ALGOBIT=m
758# CONFIG_I2C_ALGOPCF is not set
759# CONFIG_I2C_ALGOPCA is not set
760
761#
762# I2C Hardware Bus support
763#
764# CONFIG_I2C_ALI1535 is not set
765# CONFIG_I2C_ALI1563 is not set
766# CONFIG_I2C_ALI15X3 is not set
767# CONFIG_I2C_AMD756 is not set
768# CONFIG_I2C_AMD8111 is not set
769# CONFIG_I2C_I801 is not set
770# CONFIG_I2C_I810 is not set
771# CONFIG_I2C_PIIX4 is not set
772# CONFIG_I2C_NFORCE2 is not set
773# CONFIG_I2C_PARPORT_LIGHT is not set
774# CONFIG_I2C_PROSAVAGE is not set
775# CONFIG_I2C_SAVAGE4 is not set
776# CONFIG_SCx200_ACB is not set
777# CONFIG_I2C_SIS5595 is not set
778# CONFIG_I2C_SIS630 is not set
779# CONFIG_I2C_SIS96X is not set
780# CONFIG_I2C_STUB is not set
781# CONFIG_I2C_VIA is not set
782# CONFIG_I2C_VIAPRO is not set
783# CONFIG_I2C_VOODOO3 is not set
784# CONFIG_I2C_PCA_ISA is not set
785
786#
787# Miscellaneous I2C Chip support
788#
789# CONFIG_SENSORS_DS1337 is not set
790# CONFIG_SENSORS_DS1374 is not set
791# CONFIG_SENSORS_EEPROM is not set
792# CONFIG_SENSORS_PCF8574 is not set
793# CONFIG_SENSORS_PCA9539 is not set
794# CONFIG_SENSORS_PCF8591 is not set
795# CONFIG_SENSORS_RTC8564 is not set
796# CONFIG_SENSORS_MAX6875 is not set
797# CONFIG_I2C_DEBUG_CORE is not set
798# CONFIG_I2C_DEBUG_ALGO is not set
799# CONFIG_I2C_DEBUG_BUS is not set
800# CONFIG_I2C_DEBUG_CHIP is not set
801
802#
803# Dallas's 1-wire bus
804#
805# CONFIG_W1 is not set
806
807#
808# Hardware Monitoring support
809#
810CONFIG_HWMON=y
811# CONFIG_HWMON_VID is not set
812# CONFIG_SENSORS_ADM1021 is not set
813# CONFIG_SENSORS_ADM1025 is not set
814# CONFIG_SENSORS_ADM1026 is not set
815# CONFIG_SENSORS_ADM1031 is not set
816# CONFIG_SENSORS_ADM9240 is not set
817# CONFIG_SENSORS_ASB100 is not set
818# CONFIG_SENSORS_ATXP1 is not set
819# CONFIG_SENSORS_DS1621 is not set
820# CONFIG_SENSORS_FSCHER is not set
821# CONFIG_SENSORS_FSCPOS is not set
822# CONFIG_SENSORS_GL518SM is not set
823# CONFIG_SENSORS_GL520SM is not set
824# CONFIG_SENSORS_IT87 is not set
825# CONFIG_SENSORS_LM63 is not set
826# CONFIG_SENSORS_LM75 is not set
827# CONFIG_SENSORS_LM77 is not set
828# CONFIG_SENSORS_LM78 is not set
829# CONFIG_SENSORS_LM80 is not set
830# CONFIG_SENSORS_LM83 is not set
831# CONFIG_SENSORS_LM85 is not set
832# CONFIG_SENSORS_LM87 is not set
833# CONFIG_SENSORS_LM90 is not set
834# CONFIG_SENSORS_LM92 is not set
835# CONFIG_SENSORS_MAX1619 is not set
836# CONFIG_SENSORS_PC87360 is not set
837# CONFIG_SENSORS_SIS5595 is not set
838# CONFIG_SENSORS_SMSC47M1 is not set
839# CONFIG_SENSORS_SMSC47B397 is not set
840# CONFIG_SENSORS_VIA686A is not set
841# CONFIG_SENSORS_W83781D is not set
842# CONFIG_SENSORS_W83792D is not set
843# CONFIG_SENSORS_W83L785TS is not set
844# CONFIG_SENSORS_W83627HF is not set
845# CONFIG_SENSORS_W83627EHF is not set
846# CONFIG_HWMON_DEBUG_CHIP is not set
847
848#
849# Misc devices
850#
851
852#
853# Multimedia Capabilities Port drivers
854#
855
856#
857# Multimedia devices
858#
859# CONFIG_VIDEO_DEV is not set
860
861#
862# Digital Video Broadcasting Devices
863#
864# CONFIG_DVB is not set
865
866#
867# Graphics support
868#
869CONFIG_FB=y
870# CONFIG_FB_CFB_FILLRECT is not set
871# CONFIG_FB_CFB_COPYAREA is not set
872# CONFIG_FB_CFB_IMAGEBLIT is not set
873# CONFIG_FB_SOFT_CURSOR is not set
874# CONFIG_FB_MACMODES is not set
875# CONFIG_FB_MODE_HELPERS is not set
876# CONFIG_FB_TILEBLITTING is not set
877# CONFIG_FB_CIRRUS is not set
878# CONFIG_FB_PM2 is not set
879# CONFIG_FB_CYBER2000 is not set
880# CONFIG_FB_ASILIANT is not set
881# CONFIG_FB_IMSTT is not set
882# CONFIG_FB_NVIDIA is not set
883# CONFIG_FB_RIVA is not set
884# CONFIG_FB_MATROX is not set
885# CONFIG_FB_RADEON_OLD is not set
886# CONFIG_FB_RADEON is not set
887# CONFIG_FB_ATY128 is not set
888# CONFIG_FB_ATY is not set
889# CONFIG_FB_SAVAGE is not set
890# CONFIG_FB_SIS is not set
891# CONFIG_FB_NEOMAGIC is not set
892# CONFIG_FB_KYRO is not set
893# CONFIG_FB_3DFX is not set
894# CONFIG_FB_VOODOO1 is not set
895# CONFIG_FB_SMIVGX is not set
896# CONFIG_FB_CYBLA is not set
897# CONFIG_FB_TRIDENT is not set
898# CONFIG_FB_E1356 is not set
899# CONFIG_FB_S1D13XXX is not set
900# CONFIG_FB_VIRTUAL is not set
901
902#
903# Console display driver support
904#
905# CONFIG_VGA_CONSOLE is not set
906CONFIG_DUMMY_CONSOLE=y
907# CONFIG_FRAMEBUFFER_CONSOLE is not set
908
909#
910# Logo configuration
911#
912# CONFIG_LOGO is not set
913# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
914
915#
916# Sound
917#
918# CONFIG_SOUND is not set
919
920#
921# USB support
922#
923CONFIG_USB_ARCH_HAS_HCD=y
924CONFIG_USB_ARCH_HAS_OHCI=y
925CONFIG_USB=y
926# CONFIG_USB_DEBUG is not set
927
928#
929# Miscellaneous USB options
930#
931CONFIG_USB_DEVICEFS=y
932# CONFIG_USB_BANDWIDTH is not set
933# CONFIG_USB_DYNAMIC_MINORS is not set
934# CONFIG_USB_OTG is not set
935
936#
937# USB Host Controller Drivers
938#
939# CONFIG_USB_EHCI_HCD is not set
940# CONFIG_USB_ISP116X_HCD is not set
941# CONFIG_USB_OHCI_HCD is not set
942# CONFIG_USB_UHCI_HCD is not set
943# CONFIG_USB_SL811_HCD is not set
944
945#
946# USB Device Class drivers
947#
948# CONFIG_USB_BLUETOOTH_TTY is not set
949# CONFIG_USB_ACM is not set
950# CONFIG_USB_PRINTER is not set
951
952#
953# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
954#
955CONFIG_USB_STORAGE=y
956# CONFIG_USB_STORAGE_DEBUG is not set
957# CONFIG_USB_STORAGE_DATAFAB is not set
958# CONFIG_USB_STORAGE_FREECOM is not set
959# CONFIG_USB_STORAGE_ISD200 is not set
960# CONFIG_USB_STORAGE_DPCM is not set
961# CONFIG_USB_STORAGE_USBAT is not set
962# CONFIG_USB_STORAGE_SDDR09 is not set
963# CONFIG_USB_STORAGE_SDDR55 is not set
964# CONFIG_USB_STORAGE_JUMPSHOT is not set
965# CONFIG_USB_STORAGE_ONETOUCH is not set
966
967#
968# USB Input Devices
969#
970CONFIG_USB_HID=y
971CONFIG_USB_HIDINPUT=y
972# CONFIG_HID_FF is not set
973CONFIG_USB_HIDDEV=y
974# CONFIG_USB_AIPTEK is not set
975# CONFIG_USB_WACOM is not set
976# CONFIG_USB_ACECAD is not set
977# CONFIG_USB_KBTAB is not set
978# CONFIG_USB_POWERMATE is not set
979# CONFIG_USB_MTOUCH is not set
980# CONFIG_USB_ITMTOUCH is not set
981# CONFIG_USB_EGALAX is not set
982# CONFIG_USB_YEALINK is not set
983# CONFIG_USB_XPAD is not set
984# CONFIG_USB_ATI_REMOTE is not set
985# CONFIG_USB_KEYSPAN_REMOTE is not set
986# CONFIG_USB_APPLETOUCH is not set
987
988#
989# USB Imaging devices
990#
991# CONFIG_USB_MDC800 is not set
992# CONFIG_USB_MICROTEK is not set
993
994#
995# USB Multimedia devices
996#
997# CONFIG_USB_DABUSB is not set
998
999#
1000# Video4Linux support is needed for USB Multimedia device support
1001#
1002
1003#
1004# USB Network Adapters
1005#
1006# CONFIG_USB_CATC is not set
1007# CONFIG_USB_KAWETH is not set
1008# CONFIG_USB_PEGASUS is not set
1009# CONFIG_USB_RTL8150 is not set
1010# CONFIG_USB_USBNET is not set
1011CONFIG_USB_MON=y
1012
1013#
1014# USB port drivers
1015#
1016
1017#
1018# USB Serial Converter support
1019#
1020# CONFIG_USB_SERIAL is not set
1021
1022#
1023# USB Miscellaneous drivers
1024#
1025# CONFIG_USB_EMI62 is not set
1026# CONFIG_USB_EMI26 is not set
1027# CONFIG_USB_AUERSWALD is not set
1028# CONFIG_USB_RIO500 is not set
1029# CONFIG_USB_LEGOTOWER is not set
1030# CONFIG_USB_LCD is not set
1031# CONFIG_USB_LED is not set
1032# CONFIG_USB_CYTHERM is not set
1033# CONFIG_USB_PHIDGETKIT is not set
1034# CONFIG_USB_PHIDGETSERVO is not set
1035# CONFIG_USB_IDMOUSE is not set
1036# CONFIG_USB_LD is not set
1037# CONFIG_USB_TEST is not set
1038
1039#
1040# USB DSL modem support
1041#
1042
1043#
1044# USB Gadget Support
1045#
1046# CONFIG_USB_GADGET is not set
1047
1048#
1049# MMC/SD Card support
1050#
1051# CONFIG_MMC is not set
1052
1053#
1054# InfiniBand support
1055#
1056# CONFIG_INFINIBAND is not set
1057
1058#
1059# SN Devices
1060#
1061
1062#
1063# File systems
1064#
1065CONFIG_EXT2_FS=y
1066# CONFIG_EXT2_FS_XATTR is not set
1067# CONFIG_EXT2_FS_XIP is not set
1068CONFIG_EXT3_FS=y
1069CONFIG_EXT3_FS_XATTR=y
1070# CONFIG_EXT3_FS_POSIX_ACL is not set
1071# CONFIG_EXT3_FS_SECURITY is not set
1072CONFIG_JBD=y
1073# CONFIG_JBD_DEBUG is not set
1074CONFIG_FS_MBCACHE=y
1075# CONFIG_REISERFS_FS is not set
1076# CONFIG_JFS_FS is not set
1077# CONFIG_FS_POSIX_ACL is not set
1078CONFIG_XFS_FS=m
1079CONFIG_XFS_EXPORT=y
1080# CONFIG_XFS_QUOTA is not set
1081# CONFIG_XFS_SECURITY is not set
1082# CONFIG_XFS_POSIX_ACL is not set
1083# CONFIG_XFS_RT is not set
1084# CONFIG_MINIX_FS is not set
1085# CONFIG_ROMFS_FS is not set
1086CONFIG_INOTIFY=y
1087# CONFIG_QUOTA is not set
1088CONFIG_DNOTIFY=y
1089CONFIG_AUTOFS_FS=y
1090CONFIG_AUTOFS4_FS=y
1091# CONFIG_FUSE_FS is not set
1092
1093#
1094# CD-ROM/DVD Filesystems
1095#
1096# CONFIG_ISO9660_FS is not set
1097# CONFIG_UDF_FS is not set
1098
1099#
1100# DOS/FAT/NT Filesystems
1101#
1102CONFIG_FAT_FS=y
1103CONFIG_MSDOS_FS=y
1104CONFIG_VFAT_FS=y
1105CONFIG_FAT_DEFAULT_CODEPAGE=437
1106CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1107# CONFIG_NTFS_FS is not set
1108
1109#
1110# Pseudo filesystems
1111#
1112CONFIG_PROC_FS=y
1113# CONFIG_PROC_KCORE is not set
1114CONFIG_SYSFS=y
1115CONFIG_TMPFS=y
1116# CONFIG_HUGETLB_PAGE is not set
1117CONFIG_RAMFS=y
1118# CONFIG_RELAYFS_FS is not set
1119
1120#
1121# Miscellaneous filesystems
1122#
1123# CONFIG_ADFS_FS is not set
1124# CONFIG_AFFS_FS is not set
1125# CONFIG_HFS_FS is not set
1126# CONFIG_HFSPLUS_FS is not set
1127# CONFIG_BEFS_FS is not set
1128# CONFIG_BFS_FS is not set
1129# CONFIG_EFS_FS is not set
1130CONFIG_CRAMFS=y
1131# CONFIG_VXFS_FS is not set
1132# CONFIG_HPFS_FS is not set
1133# CONFIG_QNX4FS_FS is not set
1134# CONFIG_SYSV_FS is not set
1135# CONFIG_UFS_FS is not set
1136
1137#
1138# Network File Systems
1139#
1140CONFIG_NFS_FS=y
1141CONFIG_NFS_V3=y
1142# CONFIG_NFS_V3_ACL is not set
1143# CONFIG_NFS_V4 is not set
1144# CONFIG_NFS_DIRECTIO is not set
1145CONFIG_NFSD=m
1146# CONFIG_NFSD_V3 is not set
1147# CONFIG_NFSD_TCP is not set
1148CONFIG_ROOT_NFS=y
1149CONFIG_LOCKD=y
1150CONFIG_LOCKD_V4=y
1151CONFIG_EXPORTFS=m
1152CONFIG_NFS_COMMON=y
1153CONFIG_SUNRPC=y
1154# CONFIG_RPCSEC_GSS_KRB5 is not set
1155# CONFIG_RPCSEC_GSS_SPKM3 is not set
1156CONFIG_SMB_FS=m
1157# CONFIG_SMB_NLS_DEFAULT is not set
1158# CONFIG_CIFS is not set
1159# CONFIG_NCP_FS is not set
1160# CONFIG_CODA_FS is not set
1161# CONFIG_AFS_FS is not set
1162# CONFIG_9P_FS is not set
1163
1164#
1165# Partition Types
1166#
1167# CONFIG_PARTITION_ADVANCED is not set
1168CONFIG_MSDOS_PARTITION=y
1169
1170#
1171# Native Language Support
1172#
1173CONFIG_NLS=y
1174CONFIG_NLS_DEFAULT="iso8859-1"
1175# CONFIG_NLS_CODEPAGE_437 is not set
1176# CONFIG_NLS_CODEPAGE_737 is not set
1177# CONFIG_NLS_CODEPAGE_775 is not set
1178# CONFIG_NLS_CODEPAGE_850 is not set
1179# CONFIG_NLS_CODEPAGE_852 is not set
1180# CONFIG_NLS_CODEPAGE_855 is not set
1181# CONFIG_NLS_CODEPAGE_857 is not set
1182# CONFIG_NLS_CODEPAGE_860 is not set
1183# CONFIG_NLS_CODEPAGE_861 is not set
1184# CONFIG_NLS_CODEPAGE_862 is not set
1185# CONFIG_NLS_CODEPAGE_863 is not set
1186# CONFIG_NLS_CODEPAGE_864 is not set
1187# CONFIG_NLS_CODEPAGE_865 is not set
1188# CONFIG_NLS_CODEPAGE_866 is not set
1189# CONFIG_NLS_CODEPAGE_869 is not set
1190# CONFIG_NLS_CODEPAGE_936 is not set
1191# CONFIG_NLS_CODEPAGE_950 is not set
1192# CONFIG_NLS_CODEPAGE_932 is not set
1193# CONFIG_NLS_CODEPAGE_949 is not set
1194# CONFIG_NLS_CODEPAGE_874 is not set
1195# CONFIG_NLS_ISO8859_8 is not set
1196# CONFIG_NLS_CODEPAGE_1250 is not set
1197# CONFIG_NLS_CODEPAGE_1251 is not set
1198# CONFIG_NLS_ASCII is not set
1199# CONFIG_NLS_ISO8859_1 is not set
1200# CONFIG_NLS_ISO8859_2 is not set
1201# CONFIG_NLS_ISO8859_3 is not set
1202# CONFIG_NLS_ISO8859_4 is not set
1203# CONFIG_NLS_ISO8859_5 is not set
1204# CONFIG_NLS_ISO8859_6 is not set
1205# CONFIG_NLS_ISO8859_7 is not set
1206# CONFIG_NLS_ISO8859_9 is not set
1207# CONFIG_NLS_ISO8859_13 is not set
1208# CONFIG_NLS_ISO8859_14 is not set
1209# CONFIG_NLS_ISO8859_15 is not set
1210# CONFIG_NLS_KOI8_R is not set
1211# CONFIG_NLS_KOI8_U is not set
1212# CONFIG_NLS_UTF8 is not set
1213
1214#
1215# Profiling support
1216#
1217# CONFIG_PROFILING is not set
1218
1219#
1220# Kernel hacking
1221#
1222# CONFIG_PRINTK_TIME is not set
1223# CONFIG_DEBUG_KERNEL is not set
1224CONFIG_LOG_BUF_SHIFT=14
1225CONFIG_CROSSCOMPILE=y
1226CONFIG_CMDLINE=""
1227
1228#
1229# Security options
1230#
1231# CONFIG_KEYS is not set
1232# CONFIG_SECURITY is not set
1233
1234#
1235# Cryptographic options
1236#
1237# CONFIG_CRYPTO is not set
1238
1239#
1240# Hardware crypto devices
1241#
1242
1243#
1244# Library routines
1245#
1246CONFIG_CRC_CCITT=m
1247# CONFIG_CRC16 is not set
1248CONFIG_CRC32=y
1249# CONFIG_LIBCRC32C is not set
1250CONFIG_ZLIB_INFLATE=y
1251CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/mips/configs/qemu_defconfig b/arch/mips/configs/qemu_defconfig
index b6568e421b99..741a9a971367 100644
--- a/arch/mips/configs/qemu_defconfig
+++ b/arch/mips/configs/qemu_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.13-rc6 3# Linux kernel version: 2.6.14-rc2
4# Mon Aug 8 11:49:54 2005 4# Thu Oct 20 22:26:56 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -17,6 +17,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
17# General setup 17# General setup
18# 18#
19CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
20# CONFIG_SWAP is not set 21# CONFIG_SWAP is not set
21# CONFIG_SYSVIPC is not set 22# CONFIG_SYSVIPC is not set
22# CONFIG_BSD_PROCESS_ACCT is not set 23# CONFIG_BSD_PROCESS_ACCT is not set
@@ -25,6 +26,7 @@ CONFIG_LOCALVERSION=""
25# CONFIG_HOTPLUG is not set 26# CONFIG_HOTPLUG is not set
26CONFIG_KOBJECT_UEVENT=y 27CONFIG_KOBJECT_UEVENT=y
27# CONFIG_IKCONFIG is not set 28# CONFIG_IKCONFIG is not set
29CONFIG_INITRAMFS_SOURCE=""
28CONFIG_EMBEDDED=y 30CONFIG_EMBEDDED=y
29CONFIG_KALLSYMS=y 31CONFIG_KALLSYMS=y
30# CONFIG_KALLSYMS_EXTRA_PASS is not set 32# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -74,6 +76,7 @@ CONFIG_BASE_SMALL=1
74# CONFIG_MIPS_ATLAS is not set 76# CONFIG_MIPS_ATLAS is not set
75# CONFIG_MIPS_MALTA is not set 77# CONFIG_MIPS_MALTA is not set
76# CONFIG_MIPS_SEAD is not set 78# CONFIG_MIPS_SEAD is not set
79# CONFIG_MIPS_SIM is not set
77# CONFIG_MOMENCO_JAGUAR_ATX is not set 80# CONFIG_MOMENCO_JAGUAR_ATX is not set
78# CONFIG_MOMENCO_OCELOT is not set 81# CONFIG_MOMENCO_OCELOT is not set
79# CONFIG_MOMENCO_OCELOT_3 is not set 82# CONFIG_MOMENCO_OCELOT_3 is not set
@@ -91,6 +94,7 @@ CONFIG_QEMU=y
91# CONFIG_SGI_IP22 is not set 94# CONFIG_SGI_IP22 is not set
92# CONFIG_SGI_IP27 is not set 95# CONFIG_SGI_IP27 is not set
93# CONFIG_SGI_IP32 is not set 96# CONFIG_SGI_IP32 is not set
97# CONFIG_SIBYTE_BIGSUR is not set
94# CONFIG_SIBYTE_SWARM is not set 98# CONFIG_SIBYTE_SWARM is not set
95# CONFIG_SIBYTE_SENTOSA is not set 99# CONFIG_SIBYTE_SENTOSA is not set
96# CONFIG_SIBYTE_RHONE is not set 100# CONFIG_SIBYTE_RHONE is not set
@@ -105,7 +109,6 @@ CONFIG_QEMU=y
105# CONFIG_TOSHIBA_RBTX4938 is not set 109# CONFIG_TOSHIBA_RBTX4938 is not set
106CONFIG_RWSEM_GENERIC_SPINLOCK=y 110CONFIG_RWSEM_GENERIC_SPINLOCK=y
107CONFIG_GENERIC_CALIBRATE_DELAY=y 111CONFIG_GENERIC_CALIBRATE_DELAY=y
108CONFIG_HAVE_DEC_LOCK=y
109CONFIG_DMA_COHERENT=y 112CONFIG_DMA_COHERENT=y
110CONFIG_GENERIC_ISA_DMA=y 113CONFIG_GENERIC_ISA_DMA=y
111CONFIG_I8259=y 114CONFIG_I8259=y
@@ -119,7 +122,7 @@ CONFIG_HAVE_STD_PC_SERIAL_PORT=y
119# 122#
120# CPU selection 123# CPU selection
121# 124#
122# CONFIG_CPU_MIPS32_R1 is not set 125CONFIG_CPU_MIPS32_R1=y
123# CONFIG_CPU_MIPS32_R2 is not set 126# CONFIG_CPU_MIPS32_R2 is not set
124# CONFIG_CPU_MIPS64_R1 is not set 127# CONFIG_CPU_MIPS64_R1 is not set
125# CONFIG_CPU_MIPS64_R2 is not set 128# CONFIG_CPU_MIPS64_R2 is not set
@@ -127,7 +130,7 @@ CONFIG_HAVE_STD_PC_SERIAL_PORT=y
127# CONFIG_CPU_TX39XX is not set 130# CONFIG_CPU_TX39XX is not set
128# CONFIG_CPU_VR41XX is not set 131# CONFIG_CPU_VR41XX is not set
129# CONFIG_CPU_R4300 is not set 132# CONFIG_CPU_R4300 is not set
130CONFIG_CPU_R4X00=y 133# CONFIG_CPU_R4X00 is not set
131# CONFIG_CPU_TX49XX is not set 134# CONFIG_CPU_TX49XX is not set
132# CONFIG_CPU_R5000 is not set 135# CONFIG_CPU_R5000 is not set
133# CONFIG_CPU_R5432 is not set 136# CONFIG_CPU_R5432 is not set
@@ -138,9 +141,11 @@ CONFIG_CPU_R4X00=y
138# CONFIG_CPU_RM7000 is not set 141# CONFIG_CPU_RM7000 is not set
139# CONFIG_CPU_RM9000 is not set 142# CONFIG_CPU_RM9000 is not set
140# CONFIG_CPU_SB1 is not set 143# CONFIG_CPU_SB1 is not set
144CONFIG_SYS_HAS_CPU_MIPS32_R1=y
145CONFIG_CPU_MIPS32=y
146CONFIG_CPU_MIPSR1=y
141CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y 147CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
142CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y 148CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
143CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
144 149
145# 150#
146# Kernel type 151# Kernel type
@@ -151,15 +156,18 @@ CONFIG_PAGE_SIZE_4KB=y
151# CONFIG_PAGE_SIZE_8KB is not set 156# CONFIG_PAGE_SIZE_8KB is not set
152# CONFIG_PAGE_SIZE_16KB is not set 157# CONFIG_PAGE_SIZE_16KB is not set
153# CONFIG_PAGE_SIZE_64KB is not set 158# CONFIG_PAGE_SIZE_64KB is not set
159CONFIG_CPU_HAS_PREFETCH=y
154# CONFIG_MIPS_MT is not set 160# CONFIG_MIPS_MT is not set
155# CONFIG_64BIT_PHYS_ADDR is not set 161# CONFIG_64BIT_PHYS_ADDR is not set
156# CONFIG_CPU_ADVANCED is not set 162# CONFIG_CPU_ADVANCED is not set
157CONFIG_CPU_HAS_LLSC=y 163CONFIG_CPU_HAS_LLSC=y
158CONFIG_CPU_HAS_LLDSCD=y
159CONFIG_CPU_HAS_SYNC=y 164CONFIG_CPU_HAS_SYNC=y
165CONFIG_GENERIC_HARDIRQS=y
166CONFIG_GENERIC_IRQ_PROBE=y
160CONFIG_ARCH_FLATMEM_ENABLE=y 167CONFIG_ARCH_FLATMEM_ENABLE=y
161CONFIG_FLATMEM=y 168CONFIG_FLATMEM=y
162CONFIG_FLAT_NODE_MEM_MAP=y 169CONFIG_FLAT_NODE_MEM_MAP=y
170# CONFIG_SPARSEMEM_STATIC is not set
163CONFIG_PREEMPT_NONE=y 171CONFIG_PREEMPT_NONE=y
164# CONFIG_PREEMPT_VOLUNTARY is not set 172# CONFIG_PREEMPT_VOLUNTARY is not set
165# CONFIG_PREEMPT is not set 173# CONFIG_PREEMPT is not set
@@ -214,8 +222,8 @@ CONFIG_IP_PNP_BOOTP=y
214# CONFIG_INET_ESP is not set 222# CONFIG_INET_ESP is not set
215# CONFIG_INET_IPCOMP is not set 223# CONFIG_INET_IPCOMP is not set
216# CONFIG_INET_TUNNEL is not set 224# CONFIG_INET_TUNNEL is not set
217CONFIG_IP_TCPDIAG=y 225CONFIG_INET_DIAG=y
218# CONFIG_IP_TCPDIAG_IPV6 is not set 226CONFIG_INET_TCP_DIAG=y
219# CONFIG_TCP_CONG_ADVANCED is not set 227# CONFIG_TCP_CONG_ADVANCED is not set
220CONFIG_TCP_CONG_BIC=y 228CONFIG_TCP_CONG_BIC=y
221# CONFIG_IPV6 is not set 229# CONFIG_IPV6 is not set
@@ -232,9 +240,15 @@ CONFIG_TCP_CONG_BIC=y
232# 240#
233# Network testing 241# Network testing
234# 242#
243# CONFIG_NET_PKTGEN is not set
235# CONFIG_HAMRADIO is not set 244# CONFIG_HAMRADIO is not set
236# CONFIG_IRDA is not set 245# CONFIG_IRDA is not set
237# CONFIG_BT is not set 246# CONFIG_BT is not set
247CONFIG_IEEE80211=y
248# CONFIG_IEEE80211_DEBUG is not set
249CONFIG_IEEE80211_CRYPT_WEP=y
250CONFIG_IEEE80211_CRYPT_CCMP=y
251CONFIG_IEEE80211_CRYPT_TKIP=y
238 252
239# 253#
240# Device Drivers 254# Device Drivers
@@ -248,6 +262,11 @@ CONFIG_STANDALONE=y
248# CONFIG_FW_LOADER is not set 262# CONFIG_FW_LOADER is not set
249 263
250# 264#
265# Connector - unified userspace <-> kernelspace linker
266#
267CONFIG_CONNECTOR=y
268
269#
251# Memory Technology Devices (MTD) 270# Memory Technology Devices (MTD)
252# 271#
253# CONFIG_MTD is not set 272# CONFIG_MTD is not set
@@ -265,13 +284,12 @@ CONFIG_STANDALONE=y
265# 284#
266# Block devices 285# Block devices
267# 286#
268# CONFIG_BLK_DEV_FD is not set
269# CONFIG_BLK_DEV_COW_COMMON is not set 287# CONFIG_BLK_DEV_COW_COMMON is not set
270# CONFIG_BLK_DEV_LOOP is not set 288# CONFIG_BLK_DEV_LOOP is not set
271# CONFIG_BLK_DEV_NBD is not set 289# CONFIG_BLK_DEV_NBD is not set
272# CONFIG_BLK_DEV_RAM is not set 290# CONFIG_BLK_DEV_RAM is not set
273CONFIG_BLK_DEV_RAM_COUNT=16 291CONFIG_BLK_DEV_RAM_COUNT=16
274CONFIG_INITRAMFS_SOURCE="" 292# CONFIG_LBD is not set
275# CONFIG_CDROM_PKTCDVD is not set 293# CONFIG_CDROM_PKTCDVD is not set
276 294
277# 295#
@@ -291,6 +309,7 @@ CONFIG_IOSCHED_NOOP=y
291# 309#
292# SCSI device support 310# SCSI device support
293# 311#
312CONFIG_RAID_ATTRS=y
294# CONFIG_SCSI is not set 313# CONFIG_SCSI is not set
295 314
296# 315#
@@ -331,6 +350,21 @@ CONFIG_NETDEVICES=y
331# CONFIG_ARCNET is not set 350# CONFIG_ARCNET is not set
332 351
333# 352#
353# PHY device support
354#
355CONFIG_PHYLIB=y
356CONFIG_PHYCONTROL=y
357
358#
359# MII PHY device drivers
360#
361CONFIG_MARVELL_PHY=y
362CONFIG_DAVICOM_PHY=y
363CONFIG_QSEMI_PHY=y
364CONFIG_LXT_PHY=y
365CONFIG_CICADA_PHY=y
366
367#
334# Ethernet (10 or 100Mbit) 368# Ethernet (10 or 100Mbit)
335# 369#
336CONFIG_NET_ETHERNET=y 370CONFIG_NET_ETHERNET=y
@@ -470,7 +504,6 @@ CONFIG_SERIAL_CORE_CONSOLE=y
470# I2C support 504# I2C support
471# 505#
472# CONFIG_I2C is not set 506# CONFIG_I2C is not set
473# CONFIG_I2C_SENSOR is not set
474 507
475# 508#
476# Dallas's 1-wire bus 509# Dallas's 1-wire bus
@@ -481,12 +514,17 @@ CONFIG_SERIAL_CORE_CONSOLE=y
481# Hardware Monitoring support 514# Hardware Monitoring support
482# 515#
483# CONFIG_HWMON is not set 516# CONFIG_HWMON is not set
517# CONFIG_HWMON_VID is not set
484 518
485# 519#
486# Misc devices 520# Misc devices
487# 521#
488 522
489# 523#
524# Multimedia Capabilities Port drivers
525#
526
527#
490# Multimedia devices 528# Multimedia devices
491# 529#
492# CONFIG_VIDEO_DEV is not set 530# CONFIG_VIDEO_DEV is not set
@@ -532,7 +570,6 @@ CONFIG_DUMMY_CONSOLE=y
532# 570#
533# InfiniBand support 571# InfiniBand support
534# 572#
535# CONFIG_INFINIBAND is not set
536 573
537# 574#
538# SN Devices 575# SN Devices
@@ -547,10 +584,6 @@ CONFIG_DUMMY_CONSOLE=y
547# CONFIG_REISERFS_FS is not set 584# CONFIG_REISERFS_FS is not set
548# CONFIG_JFS_FS is not set 585# CONFIG_JFS_FS is not set
549# CONFIG_FS_POSIX_ACL is not set 586# CONFIG_FS_POSIX_ACL is not set
550
551#
552# XFS support
553#
554# CONFIG_XFS_FS is not set 587# CONFIG_XFS_FS is not set
555# CONFIG_MINIX_FS is not set 588# CONFIG_MINIX_FS is not set
556# CONFIG_ROMFS_FS is not set 589# CONFIG_ROMFS_FS is not set
@@ -559,6 +592,7 @@ CONFIG_INOTIFY=y
559# CONFIG_DNOTIFY is not set 592# CONFIG_DNOTIFY is not set
560# CONFIG_AUTOFS_FS is not set 593# CONFIG_AUTOFS_FS is not set
561# CONFIG_AUTOFS4_FS is not set 594# CONFIG_AUTOFS4_FS is not set
595CONFIG_FUSE_FS=y
562 596
563# 597#
564# CD-ROM/DVD Filesystems 598# CD-ROM/DVD Filesystems
@@ -576,11 +610,13 @@ CONFIG_INOTIFY=y
576# 610#
577# Pseudo filesystems 611# Pseudo filesystems
578# 612#
579# CONFIG_PROC_FS is not set 613CONFIG_PROC_FS=y
614CONFIG_PROC_KCORE=y
580# CONFIG_SYSFS is not set 615# CONFIG_SYSFS is not set
581# CONFIG_TMPFS is not set 616# CONFIG_TMPFS is not set
582# CONFIG_HUGETLB_PAGE is not set 617# CONFIG_HUGETLB_PAGE is not set
583CONFIG_RAMFS=y 618CONFIG_RAMFS=y
619CONFIG_RELAYFS_FS=y
584 620
585# 621#
586# Miscellaneous filesystems 622# Miscellaneous filesystems
@@ -634,12 +670,35 @@ CONFIG_CMDLINE="console=ttyS0 debug ip=172.20.0.2:172.20.0.1::255.255.0.0"
634# Security options 670# Security options
635# 671#
636# CONFIG_KEYS is not set 672# CONFIG_KEYS is not set
637# CONFIG_SECURITY is not set
638 673
639# 674#
640# Cryptographic options 675# Cryptographic options
641# 676#
642# CONFIG_CRYPTO is not set 677CONFIG_CRYPTO=y
678CONFIG_CRYPTO_HMAC=y
679CONFIG_CRYPTO_NULL=y
680CONFIG_CRYPTO_MD4=y
681CONFIG_CRYPTO_MD5=y
682CONFIG_CRYPTO_SHA1=y
683CONFIG_CRYPTO_SHA256=y
684CONFIG_CRYPTO_SHA512=y
685CONFIG_CRYPTO_WP512=y
686CONFIG_CRYPTO_TGR192=y
687CONFIG_CRYPTO_DES=y
688CONFIG_CRYPTO_BLOWFISH=y
689CONFIG_CRYPTO_TWOFISH=y
690CONFIG_CRYPTO_SERPENT=y
691CONFIG_CRYPTO_AES=y
692CONFIG_CRYPTO_CAST5=y
693CONFIG_CRYPTO_CAST6=y
694CONFIG_CRYPTO_TEA=y
695CONFIG_CRYPTO_ARC4=y
696CONFIG_CRYPTO_KHAZAD=y
697CONFIG_CRYPTO_ANUBIS=y
698CONFIG_CRYPTO_DEFLATE=y
699CONFIG_CRYPTO_MICHAEL_MIC=y
700CONFIG_CRYPTO_CRC32C=y
701# CONFIG_CRYPTO_TEST is not set
643 702
644# 703#
645# Hardware crypto devices 704# Hardware crypto devices
@@ -649,7 +708,8 @@ CONFIG_CMDLINE="console=ttyS0 debug ip=172.20.0.2:172.20.0.1::255.255.0.0"
649# Library routines 708# Library routines
650# 709#
651# CONFIG_CRC_CCITT is not set 710# CONFIG_CRC_CCITT is not set
711CONFIG_CRC16=y
652CONFIG_CRC32=y 712CONFIG_CRC32=y
653# CONFIG_LIBCRC32C is not set 713CONFIG_LIBCRC32C=y
654CONFIG_GENERIC_HARDIRQS=y 714CONFIG_ZLIB_INFLATE=y
655CONFIG_GENERIC_IRQ_PROBE=y 715CONFIG_ZLIB_DEFLATE=y
diff --git a/arch/mips/configs/rbhma4500_defconfig b/arch/mips/configs/rbhma4500_defconfig
new file mode 100644
index 000000000000..2bc61ca4ba08
--- /dev/null
+++ b/arch/mips/configs/rbhma4500_defconfig
@@ -0,0 +1,1259 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.14-rc2
4# Thu Oct 20 22:26:59 2005
5#
6CONFIG_MIPS=y
7
8#
9# Code maturity level options
10#
11CONFIG_EXPERIMENTAL=y
12CONFIG_CLEAN_COMPILE=y
13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
15
16#
17# General setup
18#
19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
21CONFIG_SWAP=y
22CONFIG_SYSVIPC=y
23# CONFIG_POSIX_MQUEUE is not set
24# CONFIG_BSD_PROCESS_ACCT is not set
25CONFIG_SYSCTL=y
26# CONFIG_AUDIT is not set
27CONFIG_HOTPLUG=y
28# CONFIG_KOBJECT_UEVENT is not set
29CONFIG_IKCONFIG=y
30CONFIG_IKCONFIG_PROC=y
31CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set
35CONFIG_PRINTK=y
36CONFIG_BUG=y
37CONFIG_BASE_FULL=y
38# CONFIG_FUTEX is not set
39# CONFIG_EPOLL is not set
40# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
41CONFIG_SHMEM=y
42CONFIG_CC_ALIGN_FUNCTIONS=0
43CONFIG_CC_ALIGN_LABELS=0
44CONFIG_CC_ALIGN_LOOPS=0
45CONFIG_CC_ALIGN_JUMPS=0
46# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0
48
49#
50# Loadable module support
51#
52CONFIG_MODULES=y
53# CONFIG_MODULE_UNLOAD is not set
54CONFIG_OBSOLETE_MODPARM=y
55# CONFIG_MODVERSIONS is not set
56# CONFIG_MODULE_SRCVERSION_ALL is not set
57CONFIG_KMOD=y
58
59#
60# Machine selection
61#
62# CONFIG_MIPS_MTX1 is not set
63# CONFIG_MIPS_BOSPORUS is not set
64# CONFIG_MIPS_PB1000 is not set
65# CONFIG_MIPS_PB1100 is not set
66# CONFIG_MIPS_PB1500 is not set
67# CONFIG_MIPS_PB1550 is not set
68# CONFIG_MIPS_PB1200 is not set
69# CONFIG_MIPS_DB1000 is not set
70# CONFIG_MIPS_DB1100 is not set
71# CONFIG_MIPS_DB1500 is not set
72# CONFIG_MIPS_DB1550 is not set
73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
75# CONFIG_MIPS_COBALT is not set
76# CONFIG_MACH_DECSTATION is not set
77# CONFIG_MIPS_EV64120 is not set
78# CONFIG_MIPS_EV96100 is not set
79# CONFIG_MIPS_IVR is not set
80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
83# CONFIG_MIPS_ATLAS is not set
84# CONFIG_MIPS_MALTA is not set
85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
88# CONFIG_MOMENCO_OCELOT is not set
89# CONFIG_MOMENCO_OCELOT_3 is not set
90# CONFIG_MOMENCO_OCELOT_C is not set
91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
95# CONFIG_DDB5074 is not set
96# CONFIG_DDB5476 is not set
97# CONFIG_DDB5477 is not set
98# CONFIG_MACH_VR41XX is not set
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
101# CONFIG_SGI_IP22 is not set
102# CONFIG_SGI_IP27 is not set
103# CONFIG_SGI_IP32 is not set
104# CONFIG_SIBYTE_BIGSUR is not set
105# CONFIG_SIBYTE_SWARM is not set
106# CONFIG_SIBYTE_SENTOSA is not set
107# CONFIG_SIBYTE_RHONE is not set
108# CONFIG_SIBYTE_CARMEL is not set
109# CONFIG_SIBYTE_PTSWARM is not set
110# CONFIG_SIBYTE_LITTLESUR is not set
111# CONFIG_SIBYTE_CRHINE is not set
112# CONFIG_SIBYTE_CRHONE is not set
113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
115# CONFIG_TOSHIBA_RBTX4927 is not set
116CONFIG_TOSHIBA_RBTX4938=y
117
118#
119# Multiplex Pin Select
120#
121CONFIG_TOSHIBA_RBTX4938_MPLEX_PIO58_61=y
122# CONFIG_TOSHIBA_RBTX4938_MPLEX_NAND is not set
123# CONFIG_TOSHIBA_RBTX4938_MPLEX_ATA is not set
124CONFIG_RWSEM_GENERIC_SPINLOCK=y
125CONFIG_GENERIC_CALIBRATE_DELAY=y
126CONFIG_DMA_NONCOHERENT=y
127CONFIG_DMA_NEED_PCI_MAP_STATE=y
128CONFIG_GENERIC_ISA_DMA=y
129CONFIG_I8259=y
130# CONFIG_CPU_BIG_ENDIAN is not set
131CONFIG_CPU_LITTLE_ENDIAN=y
132CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
133CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
134CONFIG_SWAP_IO_SPACE=y
135CONFIG_MIPS_L1_CACHE_SHIFT=5
136CONFIG_HAVE_STD_PC_SERIAL_PORT=y
137CONFIG_TOSHIBA_BOARDS=y
138
139#
140# CPU selection
141#
142# CONFIG_CPU_MIPS32_R1 is not set
143# CONFIG_CPU_MIPS32_R2 is not set
144# CONFIG_CPU_MIPS64_R1 is not set
145# CONFIG_CPU_MIPS64_R2 is not set
146# CONFIG_CPU_R3000 is not set
147# CONFIG_CPU_TX39XX is not set
148# CONFIG_CPU_VR41XX is not set
149# CONFIG_CPU_R4300 is not set
150# CONFIG_CPU_R4X00 is not set
151CONFIG_CPU_TX49XX=y
152# CONFIG_CPU_R5000 is not set
153# CONFIG_CPU_R5432 is not set
154# CONFIG_CPU_R6000 is not set
155# CONFIG_CPU_NEVADA is not set
156# CONFIG_CPU_R8000 is not set
157# CONFIG_CPU_R10000 is not set
158# CONFIG_CPU_RM7000 is not set
159# CONFIG_CPU_RM9000 is not set
160# CONFIG_CPU_SB1 is not set
161CONFIG_SYS_HAS_CPU_TX49XX=y
162CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
163CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
164CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
165
166#
167# Kernel type
168#
169CONFIG_32BIT=y
170# CONFIG_64BIT is not set
171CONFIG_PAGE_SIZE_4KB=y
172# CONFIG_PAGE_SIZE_8KB is not set
173# CONFIG_PAGE_SIZE_16KB is not set
174# CONFIG_PAGE_SIZE_64KB is not set
175# CONFIG_MIPS_MT is not set
176CONFIG_CPU_ADVANCED=y
177CONFIG_CPU_HAS_LLSC=y
178CONFIG_CPU_HAS_LLDSCD=y
179CONFIG_CPU_HAS_WB=y
180CONFIG_CPU_HAS_SYNC=y
181CONFIG_GENERIC_HARDIRQS=y
182CONFIG_GENERIC_IRQ_PROBE=y
183CONFIG_ARCH_FLATMEM_ENABLE=y
184CONFIG_SELECT_MEMORY_MODEL=y
185CONFIG_FLATMEM_MANUAL=y
186# CONFIG_DISCONTIGMEM_MANUAL is not set
187# CONFIG_SPARSEMEM_MANUAL is not set
188CONFIG_FLATMEM=y
189CONFIG_FLAT_NODE_MEM_MAP=y
190# CONFIG_SPARSEMEM_STATIC is not set
191CONFIG_PREEMPT_NONE=y
192# CONFIG_PREEMPT_VOLUNTARY is not set
193# CONFIG_PREEMPT is not set
194
195#
196# Bus options (PCI, PCMCIA, EISA, ISA, TC)
197#
198CONFIG_HW_HAS_PCI=y
199CONFIG_PCI=y
200# CONFIG_PCI_LEGACY_PROC is not set
201CONFIG_ISA=y
202CONFIG_MMU=y
203
204#
205# PCCARD (PCMCIA/CardBus) support
206#
207# CONFIG_PCCARD is not set
208
209#
210# PCI Hotplug Support
211#
212# CONFIG_HOTPLUG_PCI is not set
213
214#
215# Executable file formats
216#
217CONFIG_BINFMT_ELF=y
218# CONFIG_BINFMT_MISC is not set
219CONFIG_TRAD_SIGNALS=y
220
221#
222# Networking
223#
224CONFIG_NET=y
225
226#
227# Networking options
228#
229CONFIG_PACKET=y
230# CONFIG_PACKET_MMAP is not set
231CONFIG_UNIX=y
232# CONFIG_NET_KEY is not set
233CONFIG_INET=y
234CONFIG_IP_MULTICAST=y
235# CONFIG_IP_ADVANCED_ROUTER is not set
236CONFIG_IP_FIB_HASH=y
237CONFIG_IP_PNP=y
238# CONFIG_IP_PNP_DHCP is not set
239CONFIG_IP_PNP_BOOTP=y
240# CONFIG_IP_PNP_RARP is not set
241# CONFIG_NET_IPIP is not set
242# CONFIG_NET_IPGRE is not set
243# CONFIG_IP_MROUTE is not set
244# CONFIG_ARPD is not set
245# CONFIG_SYN_COOKIES is not set
246# CONFIG_INET_AH is not set
247# CONFIG_INET_ESP is not set
248# CONFIG_INET_IPCOMP is not set
249# CONFIG_INET_TUNNEL is not set
250CONFIG_INET_DIAG=y
251CONFIG_INET_TCP_DIAG=y
252# CONFIG_TCP_CONG_ADVANCED is not set
253CONFIG_TCP_CONG_BIC=y
254
255#
256# IP: Virtual Server Configuration
257#
258# CONFIG_IP_VS is not set
259CONFIG_IPV6=m
260# CONFIG_IPV6_PRIVACY is not set
261# CONFIG_INET6_AH is not set
262# CONFIG_INET6_ESP is not set
263# CONFIG_INET6_IPCOMP is not set
264# CONFIG_INET6_TUNNEL is not set
265# CONFIG_IPV6_TUNNEL is not set
266CONFIG_NETFILTER=y
267# CONFIG_NETFILTER_DEBUG is not set
268CONFIG_NETFILTER_NETLINK=m
269CONFIG_NETFILTER_NETLINK_QUEUE=m
270CONFIG_NETFILTER_NETLINK_LOG=m
271
272#
273# IP: Netfilter Configuration
274#
275# CONFIG_IP_NF_CONNTRACK is not set
276CONFIG_IP_NF_PPTP=m
277# CONFIG_IP_NF_QUEUE is not set
278# CONFIG_IP_NF_IPTABLES is not set
279# CONFIG_IP_NF_ARPTABLES is not set
280
281#
282# IPv6: Netfilter Configuration (EXPERIMENTAL)
283#
284# CONFIG_IP6_NF_QUEUE is not set
285# CONFIG_IP6_NF_IPTABLES is not set
286
287#
288# DCCP Configuration (EXPERIMENTAL)
289#
290# CONFIG_IP_DCCP is not set
291
292#
293# SCTP Configuration (EXPERIMENTAL)
294#
295# CONFIG_IP_SCTP is not set
296# CONFIG_ATM is not set
297# CONFIG_BRIDGE is not set
298# CONFIG_VLAN_8021Q is not set
299# CONFIG_DECNET is not set
300# CONFIG_LLC2 is not set
301# CONFIG_IPX is not set
302# CONFIG_ATALK is not set
303# CONFIG_X25 is not set
304# CONFIG_LAPB is not set
305# CONFIG_NET_DIVERT is not set
306# CONFIG_ECONET is not set
307# CONFIG_WAN_ROUTER is not set
308# CONFIG_NET_SCHED is not set
309# CONFIG_NET_CLS_ROUTE is not set
310
311#
312# Network testing
313#
314# CONFIG_NET_PKTGEN is not set
315# CONFIG_HAMRADIO is not set
316# CONFIG_IRDA is not set
317# CONFIG_BT is not set
318CONFIG_IEEE80211=m
319# CONFIG_IEEE80211_DEBUG is not set
320CONFIG_IEEE80211_CRYPT_WEP=m
321CONFIG_IEEE80211_CRYPT_CCMP=m
322CONFIG_IEEE80211_CRYPT_TKIP=m
323
324#
325# Device Drivers
326#
327
328#
329# Generic Driver Options
330#
331CONFIG_STANDALONE=y
332CONFIG_PREVENT_FIRMWARE_BUILD=y
333CONFIG_FW_LOADER=m
334
335#
336# Connector - unified userspace <-> kernelspace linker
337#
338CONFIG_CONNECTOR=m
339
340#
341# Memory Technology Devices (MTD)
342#
343CONFIG_MTD=y
344# CONFIG_MTD_DEBUG is not set
345# CONFIG_MTD_CONCAT is not set
346CONFIG_MTD_PARTITIONS=y
347# CONFIG_MTD_REDBOOT_PARTS is not set
348# CONFIG_MTD_CMDLINE_PARTS is not set
349
350#
351# User Modules And Translation Layers
352#
353CONFIG_MTD_CHAR=y
354CONFIG_MTD_BLOCK=y
355# CONFIG_FTL is not set
356# CONFIG_NFTL is not set
357# CONFIG_INFTL is not set
358
359#
360# RAM/ROM/Flash chip drivers
361#
362CONFIG_MTD_CFI=y
363# CONFIG_MTD_JEDECPROBE is not set
364CONFIG_MTD_GEN_PROBE=y
365# CONFIG_MTD_CFI_ADV_OPTIONS is not set
366CONFIG_MTD_MAP_BANK_WIDTH_1=y
367CONFIG_MTD_MAP_BANK_WIDTH_2=y
368CONFIG_MTD_MAP_BANK_WIDTH_4=y
369# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
370# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
371# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
372CONFIG_MTD_CFI_I1=y
373CONFIG_MTD_CFI_I2=y
374# CONFIG_MTD_CFI_I4 is not set
375# CONFIG_MTD_CFI_I8 is not set
376CONFIG_MTD_CFI_INTELEXT=y
377CONFIG_MTD_CFI_AMDSTD=y
378CONFIG_MTD_CFI_AMDSTD_RETRY=0
379# CONFIG_MTD_CFI_STAA is not set
380CONFIG_MTD_CFI_UTIL=y
381# CONFIG_MTD_RAM is not set
382# CONFIG_MTD_ROM is not set
383# CONFIG_MTD_ABSENT is not set
384
385#
386# Mapping drivers for chip access
387#
388# CONFIG_MTD_COMPLEX_MAPPINGS is not set
389# CONFIG_MTD_PHYSMAP is not set
390# CONFIG_MTD_PLATRAM is not set
391
392#
393# Self-contained MTD device drivers
394#
395# CONFIG_MTD_PMC551 is not set
396# CONFIG_MTD_SLRAM is not set
397# CONFIG_MTD_PHRAM is not set
398# CONFIG_MTD_MTDRAM is not set
399# CONFIG_MTD_BLKMTD is not set
400# CONFIG_MTD_BLOCK2MTD is not set
401
402#
403# Disk-On-Chip Device Drivers
404#
405# CONFIG_MTD_DOC2000 is not set
406# CONFIG_MTD_DOC2001 is not set
407# CONFIG_MTD_DOC2001PLUS is not set
408
409#
410# NAND Flash Device Drivers
411#
412# CONFIG_MTD_NAND is not set
413
414#
415# Parallel port support
416#
417# CONFIG_PARPORT is not set
418
419#
420# Plug and Play support
421#
422# CONFIG_PNP is not set
423
424#
425# Block devices
426#
427# CONFIG_BLK_CPQ_DA is not set
428# CONFIG_BLK_CPQ_CISS_DA is not set
429# CONFIG_BLK_DEV_DAC960 is not set
430# CONFIG_BLK_DEV_UMEM is not set
431# CONFIG_BLK_DEV_COW_COMMON is not set
432CONFIG_BLK_DEV_LOOP=y
433# CONFIG_BLK_DEV_CRYPTOLOOP is not set
434CONFIG_BLK_DEV_NBD=m
435# CONFIG_BLK_DEV_SX8 is not set
436# CONFIG_BLK_DEV_UB is not set
437CONFIG_BLK_DEV_RAM=y
438CONFIG_BLK_DEV_RAM_COUNT=16
439CONFIG_BLK_DEV_RAM_SIZE=8192
440CONFIG_BLK_DEV_INITRD=y
441# CONFIG_LBD is not set
442# CONFIG_CDROM_PKTCDVD is not set
443
444#
445# IO Schedulers
446#
447CONFIG_IOSCHED_NOOP=y
448CONFIG_IOSCHED_AS=y
449CONFIG_IOSCHED_DEADLINE=y
450CONFIG_IOSCHED_CFQ=y
451# CONFIG_ATA_OVER_ETH is not set
452
453#
454# ATA/ATAPI/MFM/RLL support
455#
456CONFIG_IDE=y
457CONFIG_BLK_DEV_IDE=y
458
459#
460# Please see Documentation/ide.txt for help/info on IDE drives
461#
462# CONFIG_BLK_DEV_IDE_SATA is not set
463CONFIG_BLK_DEV_IDEDISK=y
464# CONFIG_IDEDISK_MULTI_MODE is not set
465CONFIG_BLK_DEV_IDECD=y
466# CONFIG_BLK_DEV_IDETAPE is not set
467# CONFIG_BLK_DEV_IDEFLOPPY is not set
468# CONFIG_IDE_TASK_IOCTL is not set
469
470#
471# IDE chipset support/bugfixes
472#
473CONFIG_IDE_GENERIC=y
474CONFIG_BLK_DEV_IDEPCI=y
475CONFIG_IDEPCI_SHARE_IRQ=y
476# CONFIG_BLK_DEV_OFFBOARD is not set
477# CONFIG_BLK_DEV_GENERIC is not set
478# CONFIG_BLK_DEV_OPTI621 is not set
479CONFIG_BLK_DEV_IDEDMA_PCI=y
480# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
481# CONFIG_IDEDMA_PCI_AUTO is not set
482# CONFIG_BLK_DEV_AEC62XX is not set
483# CONFIG_BLK_DEV_ALI15X3 is not set
484# CONFIG_BLK_DEV_AMD74XX is not set
485# CONFIG_BLK_DEV_CMD64X is not set
486# CONFIG_BLK_DEV_TRIFLEX is not set
487# CONFIG_BLK_DEV_CY82C693 is not set
488# CONFIG_BLK_DEV_CS5520 is not set
489# CONFIG_BLK_DEV_CS5530 is not set
490# CONFIG_BLK_DEV_HPT34X is not set
491# CONFIG_BLK_DEV_HPT366 is not set
492# CONFIG_BLK_DEV_SC1200 is not set
493# CONFIG_BLK_DEV_PIIX is not set
494# CONFIG_BLK_DEV_IT821X is not set
495# CONFIG_BLK_DEV_NS87415 is not set
496# CONFIG_BLK_DEV_PDC202XX_OLD is not set
497# CONFIG_BLK_DEV_PDC202XX_NEW is not set
498# CONFIG_BLK_DEV_SVWKS is not set
499# CONFIG_BLK_DEV_SIIMAGE is not set
500# CONFIG_BLK_DEV_SLC90E66 is not set
501# CONFIG_BLK_DEV_TRM290 is not set
502# CONFIG_BLK_DEV_VIA82CXXX is not set
503# CONFIG_IDE_ARM is not set
504# CONFIG_IDE_CHIPSETS is not set
505CONFIG_BLK_DEV_IDEDMA=y
506# CONFIG_IDEDMA_IVB is not set
507# CONFIG_IDEDMA_AUTO is not set
508# CONFIG_BLK_DEV_HD is not set
509
510#
511# SCSI device support
512#
513CONFIG_RAID_ATTRS=m
514# CONFIG_SCSI is not set
515
516#
517# Old CD-ROM drivers (not SCSI, not IDE)
518#
519# CONFIG_CD_NO_IDESCSI is not set
520
521#
522# Multi-device support (RAID and LVM)
523#
524# CONFIG_MD is not set
525
526#
527# Fusion MPT device support
528#
529# CONFIG_FUSION is not set
530
531#
532# IEEE 1394 (FireWire) support
533#
534# CONFIG_IEEE1394 is not set
535
536#
537# I2O device support
538#
539# CONFIG_I2O is not set
540
541#
542# Network device support
543#
544CONFIG_NETDEVICES=y
545# CONFIG_DUMMY is not set
546# CONFIG_BONDING is not set
547# CONFIG_EQUALIZER is not set
548CONFIG_TUN=m
549
550#
551# ARCnet devices
552#
553# CONFIG_ARCNET is not set
554
555#
556# PHY device support
557#
558CONFIG_PHYLIB=m
559CONFIG_PHYCONTROL=y
560
561#
562# MII PHY device drivers
563#
564CONFIG_MARVELL_PHY=m
565CONFIG_DAVICOM_PHY=m
566CONFIG_QSEMI_PHY=m
567CONFIG_LXT_PHY=m
568CONFIG_CICADA_PHY=m
569
570#
571# Ethernet (10 or 100Mbit)
572#
573CONFIG_NET_ETHERNET=y
574# CONFIG_MII is not set
575# CONFIG_HAPPYMEAL is not set
576# CONFIG_SUNGEM is not set
577# CONFIG_NET_VENDOR_3COM is not set
578# CONFIG_NET_VENDOR_SMC is not set
579# CONFIG_NET_VENDOR_RACAL is not set
580
581#
582# Tulip family network device support
583#
584# CONFIG_NET_TULIP is not set
585# CONFIG_AT1700 is not set
586# CONFIG_DEPCA is not set
587# CONFIG_HP100 is not set
588CONFIG_NET_ISA=y
589# CONFIG_E2100 is not set
590# CONFIG_EWRK3 is not set
591# CONFIG_EEXPRESS is not set
592# CONFIG_EEXPRESS_PRO is not set
593# CONFIG_HPLAN_PLUS is not set
594# CONFIG_HPLAN is not set
595# CONFIG_LP486E is not set
596# CONFIG_ETH16I is not set
597CONFIG_NE2000=y
598# CONFIG_SEEQ8005 is not set
599CONFIG_NET_PCI=y
600# CONFIG_PCNET32 is not set
601# CONFIG_AMD8111_ETH is not set
602# CONFIG_ADAPTEC_STARFIRE is not set
603# CONFIG_AC3200 is not set
604# CONFIG_APRICOT is not set
605# CONFIG_B44 is not set
606# CONFIG_FORCEDETH is not set
607# CONFIG_CS89x0 is not set
608# CONFIG_DGRS is not set
609# CONFIG_EEPRO100 is not set
610# CONFIG_E100 is not set
611# CONFIG_FEALNX is not set
612# CONFIG_NATSEMI is not set
613# CONFIG_NE2K_PCI is not set
614# CONFIG_8139CP is not set
615# CONFIG_8139TOO is not set
616# CONFIG_SIS900 is not set
617# CONFIG_EPIC100 is not set
618# CONFIG_SUNDANCE is not set
619# CONFIG_TLAN is not set
620# CONFIG_VIA_RHINE is not set
621# CONFIG_LAN_SAA9730 is not set
622# CONFIG_NET_POCKET is not set
623
624#
625# Ethernet (1000 Mbit)
626#
627# CONFIG_ACENIC is not set
628# CONFIG_DL2K is not set
629# CONFIG_E1000 is not set
630# CONFIG_NS83820 is not set
631# CONFIG_HAMACHI is not set
632# CONFIG_YELLOWFIN is not set
633# CONFIG_R8169 is not set
634# CONFIG_SIS190 is not set
635# CONFIG_SKGE is not set
636# CONFIG_SK98LIN is not set
637# CONFIG_VIA_VELOCITY is not set
638# CONFIG_TIGON3 is not set
639# CONFIG_BNX2 is not set
640
641#
642# Ethernet (10000 Mbit)
643#
644# CONFIG_CHELSIO_T1 is not set
645# CONFIG_IXGB is not set
646# CONFIG_S2IO is not set
647
648#
649# Token Ring devices
650#
651# CONFIG_TR is not set
652
653#
654# Wireless LAN (non-hamradio)
655#
656CONFIG_NET_RADIO=y
657
658#
659# Obsolete Wireless cards support (pre-802.11)
660#
661# CONFIG_STRIP is not set
662# CONFIG_ARLAN is not set
663# CONFIG_WAVELAN is not set
664
665#
666# Wireless 802.11b ISA/PCI cards support
667#
668# CONFIG_IPW2100 is not set
669# CONFIG_IPW_DEBUG is not set
670CONFIG_IPW2200=m
671# CONFIG_AIRO is not set
672# CONFIG_HERMES is not set
673# CONFIG_ATMEL is not set
674
675#
676# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
677#
678# CONFIG_PRISM54 is not set
679# CONFIG_HOSTAP is not set
680CONFIG_NET_WIRELESS=y
681
682#
683# Wan interfaces
684#
685# CONFIG_WAN is not set
686# CONFIG_FDDI is not set
687# CONFIG_HIPPI is not set
688CONFIG_PPP=m
689CONFIG_PPP_MULTILINK=y
690# CONFIG_PPP_FILTER is not set
691CONFIG_PPP_ASYNC=m
692CONFIG_PPP_SYNC_TTY=m
693CONFIG_PPP_DEFLATE=m
694# CONFIG_PPP_BSDCOMP is not set
695CONFIG_PPPOE=m
696# CONFIG_SLIP is not set
697# CONFIG_SHAPER is not set
698# CONFIG_NETCONSOLE is not set
699# CONFIG_NETPOLL is not set
700# CONFIG_NET_POLL_CONTROLLER is not set
701
702#
703# ISDN subsystem
704#
705# CONFIG_ISDN is not set
706
707#
708# Telephony Support
709#
710# CONFIG_PHONE is not set
711
712#
713# Input device support
714#
715CONFIG_INPUT=y
716
717#
718# Userland interfaces
719#
720CONFIG_INPUT_MOUSEDEV=y
721CONFIG_INPUT_MOUSEDEV_PSAUX=y
722CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
723CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
724# CONFIG_INPUT_JOYDEV is not set
725# CONFIG_INPUT_TSDEV is not set
726CONFIG_INPUT_EVDEV=y
727# CONFIG_INPUT_EVBUG is not set
728
729#
730# Input Device Drivers
731#
732CONFIG_INPUT_KEYBOARD=y
733CONFIG_KEYBOARD_ATKBD=y
734# CONFIG_KEYBOARD_SUNKBD is not set
735# CONFIG_KEYBOARD_LKKBD is not set
736# CONFIG_KEYBOARD_XTKBD is not set
737# CONFIG_KEYBOARD_NEWTON is not set
738CONFIG_INPUT_MOUSE=y
739CONFIG_MOUSE_PS2=y
740# CONFIG_MOUSE_SERIAL is not set
741# CONFIG_MOUSE_INPORT is not set
742# CONFIG_MOUSE_LOGIBM is not set
743# CONFIG_MOUSE_PC110PAD is not set
744# CONFIG_MOUSE_VSXXXAA is not set
745# CONFIG_INPUT_JOYSTICK is not set
746# CONFIG_INPUT_TOUCHSCREEN is not set
747# CONFIG_INPUT_MISC is not set
748
749#
750# Hardware I/O ports
751#
752CONFIG_SERIO=y
753CONFIG_SERIO_I8042=y
754CONFIG_SERIO_SERPORT=y
755# CONFIG_SERIO_PCIPS2 is not set
756CONFIG_SERIO_LIBPS2=y
757# CONFIG_SERIO_RAW is not set
758# CONFIG_GAMEPORT is not set
759
760#
761# Character devices
762#
763CONFIG_VT=y
764CONFIG_VT_CONSOLE=y
765CONFIG_HW_CONSOLE=y
766# CONFIG_SERIAL_NONSTANDARD is not set
767
768#
769# Serial drivers
770#
771# CONFIG_SERIAL_8250 is not set
772
773#
774# Non-8250 serial port support
775#
776CONFIG_HAS_TXX9_SERIAL=y
777# CONFIG_SERIAL_JSM is not set
778CONFIG_UNIX98_PTYS=y
779CONFIG_LEGACY_PTYS=y
780CONFIG_LEGACY_PTY_COUNT=256
781
782#
783# IPMI
784#
785# CONFIG_IPMI_HANDLER is not set
786
787#
788# Watchdog Cards
789#
790# CONFIG_WATCHDOG is not set
791# CONFIG_RTC is not set
792# CONFIG_GEN_RTC is not set
793# CONFIG_DTLK is not set
794# CONFIG_R3964 is not set
795# CONFIG_APPLICOM is not set
796
797#
798# Ftape, the floppy tape device driver
799#
800# CONFIG_DRM is not set
801# CONFIG_RAW_DRIVER is not set
802
803#
804# TPM devices
805#
806# CONFIG_TCG_TPM is not set
807
808#
809# I2C support
810#
811# CONFIG_I2C is not set
812
813#
814# Dallas's 1-wire bus
815#
816# CONFIG_W1 is not set
817
818#
819# Hardware Monitoring support
820#
821CONFIG_HWMON=y
822# CONFIG_HWMON_VID is not set
823# CONFIG_HWMON_DEBUG_CHIP is not set
824
825#
826# Misc devices
827#
828
829#
830# Multimedia Capabilities Port drivers
831#
832
833#
834# Multimedia devices
835#
836# CONFIG_VIDEO_DEV is not set
837
838#
839# Digital Video Broadcasting Devices
840#
841# CONFIG_DVB is not set
842
843#
844# Graphics support
845#
846CONFIG_FB=y
847CONFIG_FB_CFB_FILLRECT=y
848CONFIG_FB_CFB_COPYAREA=y
849CONFIG_FB_CFB_IMAGEBLIT=y
850CONFIG_FB_SOFT_CURSOR=y
851# CONFIG_FB_MACMODES is not set
852# CONFIG_FB_MODE_HELPERS is not set
853# CONFIG_FB_TILEBLITTING is not set
854# CONFIG_FB_CIRRUS is not set
855# CONFIG_FB_PM2 is not set
856# CONFIG_FB_CYBER2000 is not set
857# CONFIG_FB_ASILIANT is not set
858# CONFIG_FB_IMSTT is not set
859# CONFIG_FB_NVIDIA is not set
860# CONFIG_FB_RIVA is not set
861# CONFIG_FB_MATROX is not set
862# CONFIG_FB_RADEON_OLD is not set
863# CONFIG_FB_RADEON is not set
864# CONFIG_FB_ATY128 is not set
865CONFIG_FB_ATY=y
866CONFIG_FB_ATY_CT=y
867# CONFIG_FB_ATY_GENERIC_LCD is not set
868# CONFIG_FB_ATY_XL_INIT is not set
869# CONFIG_FB_ATY_GX is not set
870# CONFIG_FB_SAVAGE is not set
871# CONFIG_FB_SIS is not set
872# CONFIG_FB_NEOMAGIC is not set
873# CONFIG_FB_KYRO is not set
874# CONFIG_FB_3DFX is not set
875# CONFIG_FB_VOODOO1 is not set
876# CONFIG_FB_SMIVGX is not set
877# CONFIG_FB_CYBLA is not set
878# CONFIG_FB_TRIDENT is not set
879# CONFIG_FB_E1356 is not set
880# CONFIG_FB_S1D13XXX is not set
881# CONFIG_FB_VIRTUAL is not set
882
883#
884# Console display driver support
885#
886CONFIG_VGA_CONSOLE=y
887# CONFIG_MDA_CONSOLE is not set
888CONFIG_DUMMY_CONSOLE=y
889# CONFIG_FRAMEBUFFER_CONSOLE is not set
890
891#
892# Logo configuration
893#
894# CONFIG_LOGO is not set
895# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
896
897#
898# Sound
899#
900# CONFIG_SOUND is not set
901
902#
903# USB support
904#
905CONFIG_USB_ARCH_HAS_HCD=y
906CONFIG_USB_ARCH_HAS_OHCI=y
907CONFIG_USB=y
908# CONFIG_USB_DEBUG is not set
909
910#
911# Miscellaneous USB options
912#
913# CONFIG_USB_DEVICEFS is not set
914# CONFIG_USB_BANDWIDTH is not set
915# CONFIG_USB_DYNAMIC_MINORS is not set
916# CONFIG_USB_OTG is not set
917
918#
919# USB Host Controller Drivers
920#
921# CONFIG_USB_EHCI_HCD is not set
922# CONFIG_USB_ISP116X_HCD is not set
923# CONFIG_USB_OHCI_HCD is not set
924# CONFIG_USB_UHCI_HCD is not set
925# CONFIG_USB_SL811_HCD is not set
926
927#
928# USB Device Class drivers
929#
930# CONFIG_USB_BLUETOOTH_TTY is not set
931# CONFIG_USB_ACM is not set
932# CONFIG_USB_PRINTER is not set
933
934#
935# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
936#
937# CONFIG_USB_STORAGE is not set
938
939#
940# USB Input Devices
941#
942CONFIG_USB_HID=y
943CONFIG_USB_HIDINPUT=y
944# CONFIG_HID_FF is not set
945CONFIG_USB_HIDDEV=y
946# CONFIG_USB_AIPTEK is not set
947# CONFIG_USB_WACOM is not set
948# CONFIG_USB_ACECAD is not set
949# CONFIG_USB_KBTAB is not set
950# CONFIG_USB_POWERMATE is not set
951# CONFIG_USB_MTOUCH is not set
952# CONFIG_USB_ITMTOUCH is not set
953# CONFIG_USB_EGALAX is not set
954CONFIG_USB_YEALINK=m
955# CONFIG_USB_XPAD is not set
956# CONFIG_USB_ATI_REMOTE is not set
957# CONFIG_USB_KEYSPAN_REMOTE is not set
958# CONFIG_USB_APPLETOUCH is not set
959
960#
961# USB Imaging devices
962#
963# CONFIG_USB_MDC800 is not set
964
965#
966# USB Multimedia devices
967#
968# CONFIG_USB_DABUSB is not set
969
970#
971# Video4Linux support is needed for USB Multimedia device support
972#
973
974#
975# USB Network Adapters
976#
977# CONFIG_USB_CATC is not set
978# CONFIG_USB_KAWETH is not set
979# CONFIG_USB_PEGASUS is not set
980# CONFIG_USB_RTL8150 is not set
981# CONFIG_USB_USBNET is not set
982# CONFIG_USB_ZD1201 is not set
983CONFIG_USB_MON=y
984
985#
986# USB port drivers
987#
988
989#
990# USB Serial Converter support
991#
992# CONFIG_USB_SERIAL is not set
993
994#
995# USB Miscellaneous drivers
996#
997# CONFIG_USB_EMI62 is not set
998# CONFIG_USB_EMI26 is not set
999# CONFIG_USB_AUERSWALD is not set
1000# CONFIG_USB_RIO500 is not set
1001# CONFIG_USB_LEGOTOWER is not set
1002# CONFIG_USB_LCD is not set
1003# CONFIG_USB_LED is not set
1004# CONFIG_USB_CYTHERM is not set
1005# CONFIG_USB_PHIDGETKIT is not set
1006# CONFIG_USB_PHIDGETSERVO is not set
1007# CONFIG_USB_IDMOUSE is not set
1008# CONFIG_USB_LD is not set
1009
1010#
1011# USB DSL modem support
1012#
1013
1014#
1015# USB Gadget Support
1016#
1017# CONFIG_USB_GADGET is not set
1018
1019#
1020# MMC/SD Card support
1021#
1022# CONFIG_MMC is not set
1023
1024#
1025# InfiniBand support
1026#
1027# CONFIG_INFINIBAND is not set
1028
1029#
1030# SN Devices
1031#
1032
1033#
1034# File systems
1035#
1036CONFIG_EXT2_FS=y
1037# CONFIG_EXT2_FS_XATTR is not set
1038# CONFIG_EXT2_FS_XIP is not set
1039CONFIG_EXT3_FS=m
1040CONFIG_EXT3_FS_XATTR=y
1041# CONFIG_EXT3_FS_POSIX_ACL is not set
1042# CONFIG_EXT3_FS_SECURITY is not set
1043CONFIG_JBD=m
1044# CONFIG_JBD_DEBUG is not set
1045CONFIG_FS_MBCACHE=y
1046CONFIG_REISERFS_FS=m
1047# CONFIG_REISERFS_CHECK is not set
1048# CONFIG_REISERFS_PROC_INFO is not set
1049# CONFIG_REISERFS_FS_XATTR is not set
1050# CONFIG_JFS_FS is not set
1051# CONFIG_FS_POSIX_ACL is not set
1052CONFIG_XFS_FS=m
1053CONFIG_XFS_EXPORT=y
1054# CONFIG_XFS_QUOTA is not set
1055# CONFIG_XFS_SECURITY is not set
1056# CONFIG_XFS_POSIX_ACL is not set
1057# CONFIG_XFS_RT is not set
1058# CONFIG_MINIX_FS is not set
1059# CONFIG_ROMFS_FS is not set
1060CONFIG_INOTIFY=y
1061# CONFIG_QUOTA is not set
1062# CONFIG_DNOTIFY is not set
1063# CONFIG_AUTOFS_FS is not set
1064CONFIG_AUTOFS4_FS=m
1065CONFIG_FUSE_FS=m
1066
1067#
1068# CD-ROM/DVD Filesystems
1069#
1070CONFIG_ISO9660_FS=y
1071# CONFIG_JOLIET is not set
1072# CONFIG_ZISOFS is not set
1073# CONFIG_UDF_FS is not set
1074
1075#
1076# DOS/FAT/NT Filesystems
1077#
1078CONFIG_FAT_FS=y
1079# CONFIG_MSDOS_FS is not set
1080CONFIG_VFAT_FS=y
1081CONFIG_FAT_DEFAULT_CODEPAGE=437
1082CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1083# CONFIG_NTFS_FS is not set
1084
1085#
1086# Pseudo filesystems
1087#
1088CONFIG_PROC_FS=y
1089# CONFIG_PROC_KCORE is not set
1090CONFIG_SYSFS=y
1091CONFIG_TMPFS=y
1092# CONFIG_HUGETLB_PAGE is not set
1093CONFIG_RAMFS=y
1094CONFIG_RELAYFS_FS=m
1095
1096#
1097# Miscellaneous filesystems
1098#
1099# CONFIG_ADFS_FS is not set
1100# CONFIG_AFFS_FS is not set
1101# CONFIG_HFS_FS is not set
1102# CONFIG_HFSPLUS_FS is not set
1103# CONFIG_BEFS_FS is not set
1104# CONFIG_BFS_FS is not set
1105# CONFIG_EFS_FS is not set
1106# CONFIG_JFFS_FS is not set
1107CONFIG_JFFS2_FS=y
1108CONFIG_JFFS2_FS_DEBUG=0
1109CONFIG_JFFS2_FS_WRITEBUFFER=y
1110# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
1111CONFIG_JFFS2_ZLIB=y
1112CONFIG_JFFS2_RTIME=y
1113# CONFIG_JFFS2_RUBIN is not set
1114CONFIG_CRAMFS=y
1115# CONFIG_VXFS_FS is not set
1116# CONFIG_HPFS_FS is not set
1117# CONFIG_QNX4FS_FS is not set
1118# CONFIG_SYSV_FS is not set
1119# CONFIG_UFS_FS is not set
1120
1121#
1122# Network File Systems
1123#
1124CONFIG_NFS_FS=y
1125CONFIG_NFS_V3=y
1126# CONFIG_NFS_V3_ACL is not set
1127# CONFIG_NFS_V4 is not set
1128# CONFIG_NFS_DIRECTIO is not set
1129CONFIG_NFSD=m
1130# CONFIG_NFSD_V3 is not set
1131# CONFIG_NFSD_TCP is not set
1132CONFIG_ROOT_NFS=y
1133CONFIG_LOCKD=y
1134CONFIG_LOCKD_V4=y
1135CONFIG_EXPORTFS=m
1136CONFIG_NFS_COMMON=y
1137CONFIG_SUNRPC=y
1138# CONFIG_RPCSEC_GSS_KRB5 is not set
1139# CONFIG_RPCSEC_GSS_SPKM3 is not set
1140CONFIG_SMB_FS=m
1141# CONFIG_SMB_NLS_DEFAULT is not set
1142# CONFIG_CIFS is not set
1143# CONFIG_NCP_FS is not set
1144# CONFIG_CODA_FS is not set
1145# CONFIG_AFS_FS is not set
1146# CONFIG_9P_FS is not set
1147
1148#
1149# Partition Types
1150#
1151# CONFIG_PARTITION_ADVANCED is not set
1152CONFIG_MSDOS_PARTITION=y
1153
1154#
1155# Native Language Support
1156#
1157CONFIG_NLS=y
1158CONFIG_NLS_DEFAULT="iso8859-1"
1159# CONFIG_NLS_CODEPAGE_437 is not set
1160# CONFIG_NLS_CODEPAGE_737 is not set
1161# CONFIG_NLS_CODEPAGE_775 is not set
1162# CONFIG_NLS_CODEPAGE_850 is not set
1163# CONFIG_NLS_CODEPAGE_852 is not set
1164# CONFIG_NLS_CODEPAGE_855 is not set
1165# CONFIG_NLS_CODEPAGE_857 is not set
1166# CONFIG_NLS_CODEPAGE_860 is not set
1167# CONFIG_NLS_CODEPAGE_861 is not set
1168# CONFIG_NLS_CODEPAGE_862 is not set
1169# CONFIG_NLS_CODEPAGE_863 is not set
1170# CONFIG_NLS_CODEPAGE_864 is not set
1171# CONFIG_NLS_CODEPAGE_865 is not set
1172# CONFIG_NLS_CODEPAGE_866 is not set
1173# CONFIG_NLS_CODEPAGE_869 is not set
1174# CONFIG_NLS_CODEPAGE_936 is not set
1175# CONFIG_NLS_CODEPAGE_950 is not set
1176# CONFIG_NLS_CODEPAGE_932 is not set
1177# CONFIG_NLS_CODEPAGE_949 is not set
1178# CONFIG_NLS_CODEPAGE_874 is not set
1179# CONFIG_NLS_ISO8859_8 is not set
1180# CONFIG_NLS_CODEPAGE_1250 is not set
1181# CONFIG_NLS_CODEPAGE_1251 is not set
1182# CONFIG_NLS_ASCII is not set
1183# CONFIG_NLS_ISO8859_1 is not set
1184# CONFIG_NLS_ISO8859_2 is not set
1185# CONFIG_NLS_ISO8859_3 is not set
1186# CONFIG_NLS_ISO8859_4 is not set
1187# CONFIG_NLS_ISO8859_5 is not set
1188# CONFIG_NLS_ISO8859_6 is not set
1189# CONFIG_NLS_ISO8859_7 is not set
1190# CONFIG_NLS_ISO8859_9 is not set
1191# CONFIG_NLS_ISO8859_13 is not set
1192# CONFIG_NLS_ISO8859_14 is not set
1193# CONFIG_NLS_ISO8859_15 is not set
1194# CONFIG_NLS_KOI8_R is not set
1195# CONFIG_NLS_KOI8_U is not set
1196# CONFIG_NLS_UTF8 is not set
1197
1198#
1199# Profiling support
1200#
1201# CONFIG_PROFILING is not set
1202
1203#
1204# Kernel hacking
1205#
1206# CONFIG_PRINTK_TIME is not set
1207# CONFIG_DEBUG_KERNEL is not set
1208CONFIG_LOG_BUF_SHIFT=14
1209CONFIG_CROSSCOMPILE=y
1210CONFIG_CMDLINE=""
1211
1212#
1213# Security options
1214#
1215# CONFIG_KEYS is not set
1216# CONFIG_SECURITY is not set
1217
1218#
1219# Cryptographic options
1220#
1221CONFIG_CRYPTO=y
1222CONFIG_CRYPTO_HMAC=y
1223CONFIG_CRYPTO_NULL=m
1224CONFIG_CRYPTO_MD4=m
1225CONFIG_CRYPTO_MD5=m
1226CONFIG_CRYPTO_SHA1=m
1227CONFIG_CRYPTO_SHA256=m
1228CONFIG_CRYPTO_SHA512=m
1229CONFIG_CRYPTO_WP512=m
1230CONFIG_CRYPTO_TGR192=m
1231CONFIG_CRYPTO_DES=m
1232CONFIG_CRYPTO_BLOWFISH=m
1233CONFIG_CRYPTO_TWOFISH=m
1234CONFIG_CRYPTO_SERPENT=m
1235CONFIG_CRYPTO_AES=m
1236CONFIG_CRYPTO_CAST5=m
1237CONFIG_CRYPTO_CAST6=m
1238CONFIG_CRYPTO_TEA=m
1239CONFIG_CRYPTO_ARC4=m
1240CONFIG_CRYPTO_KHAZAD=m
1241CONFIG_CRYPTO_ANUBIS=m
1242CONFIG_CRYPTO_DEFLATE=m
1243CONFIG_CRYPTO_MICHAEL_MIC=m
1244CONFIG_CRYPTO_CRC32C=m
1245# CONFIG_CRYPTO_TEST is not set
1246
1247#
1248# Hardware crypto devices
1249#
1250
1251#
1252# Library routines
1253#
1254CONFIG_CRC_CCITT=m
1255CONFIG_CRC16=m
1256CONFIG_CRC32=y
1257CONFIG_LIBCRC32C=m
1258CONFIG_ZLIB_INFLATE=y
1259CONFIG_ZLIB_DEFLATE=y
diff --git a/arch/mips/configs/rm200_defconfig b/arch/mips/configs/rm200_defconfig
index 17d4fce6c4c6..988a05824f01 100644
--- a/arch/mips/configs/rm200_defconfig
+++ b/arch/mips/configs/rm200_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:09 2005 4# Thu Oct 20 22:27:03 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,11 +11,13 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24CONFIG_POSIX_MQUEUE=y 23CONFIG_POSIX_MQUEUE=y
@@ -26,14 +25,17 @@ CONFIG_BSD_PROCESS_ACCT=y
26# CONFIG_BSD_PROCESS_ACCT_V3 is not set 25# CONFIG_BSD_PROCESS_ACCT_V3 is not set
27CONFIG_SYSCTL=y 26CONFIG_SYSCTL=y
28# CONFIG_AUDIT is not set 27# CONFIG_AUDIT is not set
29CONFIG_LOG_BUF_SHIFT=14 28CONFIG_HOTPLUG=y
30# CONFIG_HOTPLUG is not set
31CONFIG_KOBJECT_UEVENT=y 29CONFIG_KOBJECT_UEVENT=y
32CONFIG_IKCONFIG=y 30CONFIG_IKCONFIG=y
33CONFIG_IKCONFIG_PROC=y 31CONFIG_IKCONFIG_PROC=y
32CONFIG_INITRAMFS_SOURCE=""
34CONFIG_EMBEDDED=y 33CONFIG_EMBEDDED=y
35CONFIG_KALLSYMS=y 34CONFIG_KALLSYMS=y
36# CONFIG_KALLSYMS_EXTRA_PASS is not set 35# CONFIG_KALLSYMS_EXTRA_PASS is not set
36CONFIG_PRINTK=y
37CONFIG_BUG=y
38CONFIG_BASE_FULL=y
37CONFIG_FUTEX=y 39CONFIG_FUTEX=y
38CONFIG_EPOLL=y 40CONFIG_EPOLL=y
39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 41# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -43,6 +45,7 @@ CONFIG_CC_ALIGN_LABELS=0
43CONFIG_CC_ALIGN_LOOPS=0 45CONFIG_CC_ALIGN_LOOPS=0
44CONFIG_CC_ALIGN_JUMPS=0 46CONFIG_CC_ALIGN_JUMPS=0
45# CONFIG_TINY_SHMEM is not set 47# CONFIG_TINY_SHMEM is not set
48CONFIG_BASE_SMALL=0
46 49
47# 50#
48# Loadable module support 51# Loadable module support
@@ -58,43 +61,73 @@ CONFIG_KMOD=y
58# 61#
59# Machine selection 62# Machine selection
60# 63#
61# CONFIG_MACH_JAZZ is not set 64# CONFIG_MIPS_MTX1 is not set
62# CONFIG_MACH_VR41XX is not set 65# CONFIG_MIPS_BOSPORUS is not set
63# CONFIG_TOSHIBA_JMR3927 is not set 66# CONFIG_MIPS_PB1000 is not set
67# CONFIG_MIPS_PB1100 is not set
68# CONFIG_MIPS_PB1500 is not set
69# CONFIG_MIPS_PB1550 is not set
70# CONFIG_MIPS_PB1200 is not set
71# CONFIG_MIPS_DB1000 is not set
72# CONFIG_MIPS_DB1100 is not set
73# CONFIG_MIPS_DB1500 is not set
74# CONFIG_MIPS_DB1550 is not set
75# CONFIG_MIPS_DB1200 is not set
76# CONFIG_MIPS_MIRAGE is not set
64# CONFIG_MIPS_COBALT is not set 77# CONFIG_MIPS_COBALT is not set
65# CONFIG_MACH_DECSTATION is not set 78# CONFIG_MACH_DECSTATION is not set
66# CONFIG_MIPS_EV64120 is not set 79# CONFIG_MIPS_EV64120 is not set
67# CONFIG_MIPS_EV96100 is not set 80# CONFIG_MIPS_EV96100 is not set
68# CONFIG_MIPS_IVR is not set 81# CONFIG_MIPS_IVR is not set
69# CONFIG_LASAT is not set
70# CONFIG_MIPS_ITE8172 is not set 82# CONFIG_MIPS_ITE8172 is not set
83# CONFIG_MACH_JAZZ is not set
84# CONFIG_LASAT is not set
71# CONFIG_MIPS_ATLAS is not set 85# CONFIG_MIPS_ATLAS is not set
72# CONFIG_MIPS_MALTA is not set 86# CONFIG_MIPS_MALTA is not set
73# CONFIG_MIPS_SEAD is not set 87# CONFIG_MIPS_SEAD is not set
88# CONFIG_MIPS_SIM is not set
89# CONFIG_MOMENCO_JAGUAR_ATX is not set
74# CONFIG_MOMENCO_OCELOT is not set 90# CONFIG_MOMENCO_OCELOT is not set
75# CONFIG_MOMENCO_OCELOT_G is not set
76# CONFIG_MOMENCO_OCELOT_C is not set
77# CONFIG_MOMENCO_OCELOT_3 is not set 91# CONFIG_MOMENCO_OCELOT_3 is not set
78# CONFIG_MOMENCO_JAGUAR_ATX is not set 92# CONFIG_MOMENCO_OCELOT_C is not set
79# CONFIG_PMC_YOSEMITE is not set 93# CONFIG_MOMENCO_OCELOT_G is not set
94# CONFIG_MIPS_XXS1500 is not set
95# CONFIG_PNX8550_V2PCI is not set
96# CONFIG_PNX8550_JBS is not set
80# CONFIG_DDB5074 is not set 97# CONFIG_DDB5074 is not set
81# CONFIG_DDB5476 is not set 98# CONFIG_DDB5476 is not set
82# CONFIG_DDB5477 is not set 99# CONFIG_DDB5477 is not set
83# CONFIG_NEC_OSPREY is not set 100# CONFIG_MACH_VR41XX is not set
101# CONFIG_PMC_YOSEMITE is not set
102# CONFIG_QEMU is not set
84# CONFIG_SGI_IP22 is not set 103# CONFIG_SGI_IP22 is not set
85# CONFIG_SOC_AU1X00 is not set 104# CONFIG_SGI_IP27 is not set
86# CONFIG_SIBYTE_SB1xxx_SOC is not set 105# CONFIG_SGI_IP32 is not set
106# CONFIG_SIBYTE_BIGSUR is not set
107# CONFIG_SIBYTE_SWARM is not set
108# CONFIG_SIBYTE_SENTOSA is not set
109# CONFIG_SIBYTE_RHONE is not set
110# CONFIG_SIBYTE_CARMEL is not set
111# CONFIG_SIBYTE_PTSWARM is not set
112# CONFIG_SIBYTE_LITTLESUR is not set
113# CONFIG_SIBYTE_CRHINE is not set
114# CONFIG_SIBYTE_CRHONE is not set
87CONFIG_SNI_RM200_PCI=y 115CONFIG_SNI_RM200_PCI=y
116# CONFIG_TOSHIBA_JMR3927 is not set
88# CONFIG_TOSHIBA_RBTX4927 is not set 117# CONFIG_TOSHIBA_RBTX4927 is not set
118# CONFIG_TOSHIBA_RBTX4938 is not set
89CONFIG_RWSEM_GENERIC_SPINLOCK=y 119CONFIG_RWSEM_GENERIC_SPINLOCK=y
90CONFIG_GENERIC_CALIBRATE_DELAY=y 120CONFIG_GENERIC_CALIBRATE_DELAY=y
91CONFIG_HAVE_DEC_LOCK=y
92CONFIG_ARC=y 121CONFIG_ARC=y
122CONFIG_ARCH_MAY_HAVE_PC_FDC=y
93CONFIG_DMA_NONCOHERENT=y 123CONFIG_DMA_NONCOHERENT=y
94CONFIG_DMA_NEED_PCI_MAP_STATE=y 124CONFIG_DMA_NEED_PCI_MAP_STATE=y
95CONFIG_GENERIC_ISA_DMA=y 125CONFIG_GENERIC_ISA_DMA=y
96CONFIG_I8259=y 126CONFIG_I8259=y
127# CONFIG_CPU_BIG_ENDIAN is not set
97CONFIG_CPU_LITTLE_ENDIAN=y 128CONFIG_CPU_LITTLE_ENDIAN=y
129CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
130CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
98CONFIG_ARC32=y 131CONFIG_ARC32=y
99CONFIG_BOOT_ELF32=y 132CONFIG_BOOT_ELF32=y
100CONFIG_MIPS_L1_CACHE_SHIFT=5 133CONFIG_MIPS_L1_CACHE_SHIFT=5
@@ -106,8 +139,10 @@ CONFIG_ARC_PROMLIB=y
106# 139#
107# CPU selection 140# CPU selection
108# 141#
109# CONFIG_CPU_MIPS32 is not set 142# CONFIG_CPU_MIPS32_R1 is not set
110# CONFIG_CPU_MIPS64 is not set 143# CONFIG_CPU_MIPS32_R2 is not set
144# CONFIG_CPU_MIPS64_R1 is not set
145# CONFIG_CPU_MIPS64_R2 is not set
111# CONFIG_CPU_R3000 is not set 146# CONFIG_CPU_R3000 is not set
112# CONFIG_CPU_TX39XX is not set 147# CONFIG_CPU_TX39XX is not set
113# CONFIG_CPU_VR41XX is not set 148# CONFIG_CPU_VR41XX is not set
@@ -123,24 +158,49 @@ CONFIG_CPU_R4X00=y
123# CONFIG_CPU_RM7000 is not set 158# CONFIG_CPU_RM7000 is not set
124# CONFIG_CPU_RM9000 is not set 159# CONFIG_CPU_RM9000 is not set
125# CONFIG_CPU_SB1 is not set 160# CONFIG_CPU_SB1 is not set
161CONFIG_SYS_HAS_CPU_R4X00=y
162CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
163CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
164CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
165CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
166
167#
168# Kernel type
169#
170CONFIG_32BIT=y
171# CONFIG_64BIT is not set
126CONFIG_PAGE_SIZE_4KB=y 172CONFIG_PAGE_SIZE_4KB=y
127# CONFIG_PAGE_SIZE_8KB is not set 173# CONFIG_PAGE_SIZE_8KB is not set
128# CONFIG_PAGE_SIZE_16KB is not set 174# CONFIG_PAGE_SIZE_16KB is not set
129# CONFIG_PAGE_SIZE_64KB is not set 175# CONFIG_PAGE_SIZE_64KB is not set
176# CONFIG_MIPS_MT is not set
130# CONFIG_64BIT_PHYS_ADDR is not set 177# CONFIG_64BIT_PHYS_ADDR is not set
131# CONFIG_CPU_ADVANCED is not set 178# CONFIG_CPU_ADVANCED is not set
132CONFIG_CPU_HAS_LLSC=y 179CONFIG_CPU_HAS_LLSC=y
133CONFIG_CPU_HAS_LLDSCD=y 180CONFIG_CPU_HAS_LLDSCD=y
134CONFIG_CPU_HAS_SYNC=y 181CONFIG_CPU_HAS_SYNC=y
182CONFIG_GENERIC_HARDIRQS=y
183CONFIG_GENERIC_IRQ_PROBE=y
184CONFIG_SYS_SUPPORTS_HIGHMEM=y
185CONFIG_ARCH_FLATMEM_ENABLE=y
186CONFIG_SELECT_MEMORY_MODEL=y
187CONFIG_FLATMEM_MANUAL=y
188# CONFIG_DISCONTIGMEM_MANUAL is not set
189# CONFIG_SPARSEMEM_MANUAL is not set
190CONFIG_FLATMEM=y
191CONFIG_FLAT_NODE_MEM_MAP=y
192# CONFIG_SPARSEMEM_STATIC is not set
193# CONFIG_PREEMPT_NONE is not set
194CONFIG_PREEMPT_VOLUNTARY=y
135# CONFIG_PREEMPT is not set 195# CONFIG_PREEMPT is not set
136 196
137# 197#
138# Bus options (PCI, PCMCIA, EISA, ISA, TC) 198# Bus options (PCI, PCMCIA, EISA, ISA, TC)
139# 199#
200CONFIG_HW_HAS_EISA=y
140CONFIG_HW_HAS_PCI=y 201CONFIG_HW_HAS_PCI=y
141CONFIG_PCI=y 202CONFIG_PCI=y
142CONFIG_PCI_LEGACY_PROC=y 203CONFIG_PCI_LEGACY_PROC=y
143# CONFIG_PCI_NAMES is not set
144CONFIG_ISA=y 204CONFIG_ISA=y
145# CONFIG_EISA is not set 205# CONFIG_EISA is not set
146CONFIG_MMU=y 206CONFIG_MMU=y
@@ -151,11 +211,6 @@ CONFIG_MMU=y
151# CONFIG_PCCARD is not set 211# CONFIG_PCCARD is not set
152 212
153# 213#
154# PC-card bridges
155#
156CONFIG_PCMCIA_PROBE=y
157
158#
159# PCI Hotplug Support 214# PCI Hotplug Support
160# 215#
161# CONFIG_HOTPLUG_PCI is not set 216# CONFIG_HOTPLUG_PCI is not set
@@ -168,240 +223,7 @@ CONFIG_BINFMT_MISC=m
168CONFIG_TRAD_SIGNALS=y 223CONFIG_TRAD_SIGNALS=y
169 224
170# 225#
171# Device Drivers 226# Networking
172#
173
174#
175# Generic Driver Options
176#
177CONFIG_STANDALONE=y
178CONFIG_PREVENT_FIRMWARE_BUILD=y
179# CONFIG_FW_LOADER is not set
180
181#
182# Memory Technology Devices (MTD)
183#
184# CONFIG_MTD is not set
185
186#
187# Parallel port support
188#
189CONFIG_PARPORT=m
190CONFIG_PARPORT_PC=m
191CONFIG_PARPORT_PC_CML1=m
192CONFIG_PARPORT_SERIAL=m
193# CONFIG_PARPORT_PC_FIFO is not set
194# CONFIG_PARPORT_PC_SUPERIO is not set
195# CONFIG_PARPORT_OTHER is not set
196CONFIG_PARPORT_1284=y
197
198#
199# Plug and Play support
200#
201# CONFIG_PNP is not set
202
203#
204# Block devices
205#
206CONFIG_BLK_DEV_FD=m
207# CONFIG_BLK_DEV_XD is not set
208CONFIG_PARIDE=m
209CONFIG_PARIDE_PARPORT=m
210
211#
212# Parallel IDE high-level drivers
213#
214CONFIG_PARIDE_PD=m
215CONFIG_PARIDE_PCD=m
216CONFIG_PARIDE_PF=m
217CONFIG_PARIDE_PT=m
218CONFIG_PARIDE_PG=m
219
220#
221# Parallel IDE protocol modules
222#
223CONFIG_PARIDE_ATEN=m
224CONFIG_PARIDE_BPCK=m
225CONFIG_PARIDE_BPCK6=m
226CONFIG_PARIDE_COMM=m
227CONFIG_PARIDE_DSTR=m
228CONFIG_PARIDE_FIT2=m
229CONFIG_PARIDE_FIT3=m
230CONFIG_PARIDE_EPAT=m
231# CONFIG_PARIDE_EPATC8 is not set
232CONFIG_PARIDE_EPIA=m
233CONFIG_PARIDE_FRIQ=m
234CONFIG_PARIDE_FRPW=m
235CONFIG_PARIDE_KBIC=m
236CONFIG_PARIDE_KTTI=m
237CONFIG_PARIDE_ON20=m
238CONFIG_PARIDE_ON26=m
239# CONFIG_BLK_CPQ_DA is not set
240# CONFIG_BLK_CPQ_CISS_DA is not set
241# CONFIG_BLK_DEV_DAC960 is not set
242# CONFIG_BLK_DEV_UMEM is not set
243# CONFIG_BLK_DEV_COW_COMMON is not set
244CONFIG_BLK_DEV_LOOP=m
245CONFIG_BLK_DEV_CRYPTOLOOP=m
246CONFIG_BLK_DEV_NBD=m
247CONFIG_BLK_DEV_SX8=m
248CONFIG_BLK_DEV_UB=m
249CONFIG_BLK_DEV_RAM=m
250CONFIG_BLK_DEV_RAM_COUNT=16
251CONFIG_BLK_DEV_RAM_SIZE=4096
252CONFIG_INITRAMFS_SOURCE=""
253# CONFIG_LBD is not set
254CONFIG_CDROM_PKTCDVD=m
255CONFIG_CDROM_PKTCDVD_BUFFERS=8
256# CONFIG_CDROM_PKTCDVD_WCACHE is not set
257
258#
259# IO Schedulers
260#
261CONFIG_IOSCHED_NOOP=y
262CONFIG_IOSCHED_AS=y
263CONFIG_IOSCHED_DEADLINE=y
264CONFIG_IOSCHED_CFQ=y
265CONFIG_ATA_OVER_ETH=m
266
267#
268# ATA/ATAPI/MFM/RLL support
269#
270# CONFIG_IDE is not set
271
272#
273# SCSI device support
274#
275CONFIG_SCSI=y
276CONFIG_SCSI_PROC_FS=y
277
278#
279# SCSI support type (disk, tape, CD-ROM)
280#
281CONFIG_BLK_DEV_SD=y
282CONFIG_CHR_DEV_ST=m
283# CONFIG_CHR_DEV_OSST is not set
284CONFIG_BLK_DEV_SR=m
285CONFIG_BLK_DEV_SR_VENDOR=y
286# CONFIG_CHR_DEV_SG is not set
287
288#
289# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
290#
291# CONFIG_SCSI_MULTI_LUN is not set
292CONFIG_SCSI_CONSTANTS=y
293# CONFIG_SCSI_LOGGING is not set
294
295#
296# SCSI Transport Attributes
297#
298CONFIG_SCSI_SPI_ATTRS=y
299# CONFIG_SCSI_FC_ATTRS is not set
300# CONFIG_SCSI_ISCSI_ATTRS is not set
301
302#
303# SCSI low-level drivers
304#
305# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
306# CONFIG_SCSI_3W_9XXX is not set
307# CONFIG_SCSI_7000FASST is not set
308# CONFIG_SCSI_ACARD is not set
309# CONFIG_SCSI_AHA152X is not set
310# CONFIG_SCSI_AHA1542 is not set
311# CONFIG_SCSI_AACRAID is not set
312# CONFIG_SCSI_AIC7XXX is not set
313# CONFIG_SCSI_AIC7XXX_OLD is not set
314# CONFIG_SCSI_AIC79XX is not set
315# CONFIG_SCSI_DPT_I2O is not set
316# CONFIG_SCSI_IN2000 is not set
317CONFIG_MEGARAID_NEWGEN=y
318CONFIG_MEGARAID_MM=m
319CONFIG_MEGARAID_MAILBOX=m
320# CONFIG_SCSI_SATA is not set
321# CONFIG_SCSI_BUSLOGIC is not set
322# CONFIG_SCSI_DMX3191D is not set
323# CONFIG_SCSI_DTC3280 is not set
324# CONFIG_SCSI_EATA is not set
325# CONFIG_SCSI_EATA_PIO is not set
326# CONFIG_SCSI_FUTURE_DOMAIN is not set
327# CONFIG_SCSI_GDTH is not set
328# CONFIG_SCSI_GENERIC_NCR5380 is not set
329# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
330# CONFIG_SCSI_IPS is not set
331# CONFIG_SCSI_INITIO is not set
332# CONFIG_SCSI_INIA100 is not set
333CONFIG_SCSI_PPA=m
334CONFIG_SCSI_IMM=m
335# CONFIG_SCSI_IZIP_EPP16 is not set
336# CONFIG_SCSI_IZIP_SLOW_CTR is not set
337# CONFIG_SCSI_NCR53C406A is not set
338CONFIG_SCSI_SYM53C8XX_2=y
339CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
340CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
341CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
342# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
343# CONFIG_SCSI_IPR is not set
344# CONFIG_SCSI_PAS16 is not set
345# CONFIG_SCSI_PSI240I is not set
346# CONFIG_SCSI_QLOGIC_FAS is not set
347# CONFIG_SCSI_QLOGIC_ISP is not set
348# CONFIG_SCSI_QLOGIC_FC is not set
349# CONFIG_SCSI_QLOGIC_1280 is not set
350CONFIG_SCSI_QLA2XXX=y
351# CONFIG_SCSI_QLA21XX is not set
352# CONFIG_SCSI_QLA22XX is not set
353# CONFIG_SCSI_QLA2300 is not set
354# CONFIG_SCSI_QLA2322 is not set
355# CONFIG_SCSI_QLA6312 is not set
356# CONFIG_SCSI_SYM53C416 is not set
357# CONFIG_SCSI_DC395x is not set
358# CONFIG_SCSI_DC390T is not set
359# CONFIG_SCSI_T128 is not set
360# CONFIG_SCSI_U14_34F is not set
361# CONFIG_SCSI_NSP32 is not set
362# CONFIG_SCSI_DEBUG is not set
363
364#
365# Old CD-ROM drivers (not SCSI, not IDE)
366#
367# CONFIG_CD_NO_IDESCSI is not set
368
369#
370# Multi-device support (RAID and LVM)
371#
372CONFIG_MD=y
373CONFIG_BLK_DEV_MD=m
374CONFIG_MD_LINEAR=m
375CONFIG_MD_RAID0=m
376CONFIG_MD_RAID1=m
377CONFIG_MD_RAID10=m
378CONFIG_MD_RAID5=m
379# CONFIG_MD_RAID6 is not set
380CONFIG_MD_MULTIPATH=m
381CONFIG_MD_FAULTY=m
382CONFIG_BLK_DEV_DM=m
383# CONFIG_DM_CRYPT is not set
384CONFIG_DM_SNAPSHOT=m
385CONFIG_DM_MIRROR=m
386CONFIG_DM_ZERO=m
387
388#
389# Fusion MPT device support
390#
391# CONFIG_FUSION is not set
392
393#
394# IEEE 1394 (FireWire) support
395#
396# CONFIG_IEEE1394 is not set
397
398#
399# I2O device support
400#
401# CONFIG_I2O is not set
402
403#
404# Networking support
405# 227#
406CONFIG_NET=y 228CONFIG_NET=y
407 229
@@ -410,12 +232,14 @@ CONFIG_NET=y
410# 232#
411CONFIG_PACKET=m 233CONFIG_PACKET=m
412CONFIG_PACKET_MMAP=y 234CONFIG_PACKET_MMAP=y
413CONFIG_NETLINK_DEV=m
414CONFIG_UNIX=y 235CONFIG_UNIX=y
236CONFIG_XFRM=y
237# CONFIG_XFRM_USER is not set
415CONFIG_NET_KEY=m 238CONFIG_NET_KEY=m
416CONFIG_INET=y 239CONFIG_INET=y
417CONFIG_IP_MULTICAST=y 240CONFIG_IP_MULTICAST=y
418# CONFIG_IP_ADVANCED_ROUTER is not set 241# CONFIG_IP_ADVANCED_ROUTER is not set
242CONFIG_IP_FIB_HASH=y
419# CONFIG_IP_PNP is not set 243# CONFIG_IP_PNP is not set
420CONFIG_NET_IPIP=m 244CONFIG_NET_IPIP=m
421CONFIG_NET_IPGRE=m 245CONFIG_NET_IPGRE=m
@@ -429,8 +253,10 @@ CONFIG_IP_PIMSM_V2=y
429# CONFIG_INET_ESP is not set 253# CONFIG_INET_ESP is not set
430# CONFIG_INET_IPCOMP is not set 254# CONFIG_INET_IPCOMP is not set
431CONFIG_INET_TUNNEL=m 255CONFIG_INET_TUNNEL=m
432CONFIG_IP_TCPDIAG=m 256CONFIG_INET_DIAG=y
433CONFIG_IP_TCPDIAG_IPV6=y 257CONFIG_INET_TCP_DIAG=y
258# CONFIG_TCP_CONG_ADVANCED is not set
259CONFIG_TCP_CONG_BIC=y
434 260
435# 261#
436# IP: Virtual Server Configuration 262# IP: Virtual Server Configuration
@@ -446,6 +272,9 @@ CONFIG_IPV6_TUNNEL=m
446CONFIG_NETFILTER=y 272CONFIG_NETFILTER=y
447# CONFIG_NETFILTER_DEBUG is not set 273# CONFIG_NETFILTER_DEBUG is not set
448CONFIG_BRIDGE_NETFILTER=y 274CONFIG_BRIDGE_NETFILTER=y
275CONFIG_NETFILTER_NETLINK=m
276CONFIG_NETFILTER_NETLINK_QUEUE=m
277CONFIG_NETFILTER_NETLINK_LOG=m
449 278
450# 279#
451# IP: Netfilter Configuration 280# IP: Netfilter Configuration
@@ -453,11 +282,15 @@ CONFIG_BRIDGE_NETFILTER=y
453CONFIG_IP_NF_CONNTRACK=m 282CONFIG_IP_NF_CONNTRACK=m
454# CONFIG_IP_NF_CT_ACCT is not set 283# CONFIG_IP_NF_CT_ACCT is not set
455CONFIG_IP_NF_CONNTRACK_MARK=y 284CONFIG_IP_NF_CONNTRACK_MARK=y
285CONFIG_IP_NF_CONNTRACK_EVENTS=y
286CONFIG_IP_NF_CONNTRACK_NETLINK=m
456CONFIG_IP_NF_CT_PROTO_SCTP=m 287CONFIG_IP_NF_CT_PROTO_SCTP=m
457CONFIG_IP_NF_FTP=m 288CONFIG_IP_NF_FTP=m
458CONFIG_IP_NF_IRC=m 289CONFIG_IP_NF_IRC=m
290# CONFIG_IP_NF_NETBIOS_NS is not set
459CONFIG_IP_NF_TFTP=m 291CONFIG_IP_NF_TFTP=m
460CONFIG_IP_NF_AMANDA=m 292CONFIG_IP_NF_AMANDA=m
293CONFIG_IP_NF_PPTP=m
461CONFIG_IP_NF_QUEUE=m 294CONFIG_IP_NF_QUEUE=m
462CONFIG_IP_NF_IPTABLES=m 295CONFIG_IP_NF_IPTABLES=m
463CONFIG_IP_NF_MATCH_LIMIT=m 296CONFIG_IP_NF_MATCH_LIMIT=m
@@ -482,9 +315,11 @@ CONFIG_IP_NF_MATCH_PHYSDEV=m
482CONFIG_IP_NF_MATCH_ADDRTYPE=m 315CONFIG_IP_NF_MATCH_ADDRTYPE=m
483CONFIG_IP_NF_MATCH_REALM=m 316CONFIG_IP_NF_MATCH_REALM=m
484CONFIG_IP_NF_MATCH_SCTP=m 317CONFIG_IP_NF_MATCH_SCTP=m
318CONFIG_IP_NF_MATCH_DCCP=m
485CONFIG_IP_NF_MATCH_COMMENT=m 319CONFIG_IP_NF_MATCH_COMMENT=m
486CONFIG_IP_NF_MATCH_CONNMARK=m 320CONFIG_IP_NF_MATCH_CONNMARK=m
487CONFIG_IP_NF_MATCH_HASHLIMIT=m 321CONFIG_IP_NF_MATCH_HASHLIMIT=m
322CONFIG_IP_NF_MATCH_STRING=m
488CONFIG_IP_NF_FILTER=m 323CONFIG_IP_NF_FILTER=m
489CONFIG_IP_NF_TARGET_REJECT=m 324CONFIG_IP_NF_TARGET_REJECT=m
490CONFIG_IP_NF_TARGET_LOG=m 325CONFIG_IP_NF_TARGET_LOG=m
@@ -501,12 +336,14 @@ CONFIG_IP_NF_NAT_IRC=m
501CONFIG_IP_NF_NAT_FTP=m 336CONFIG_IP_NF_NAT_FTP=m
502CONFIG_IP_NF_NAT_TFTP=m 337CONFIG_IP_NF_NAT_TFTP=m
503CONFIG_IP_NF_NAT_AMANDA=m 338CONFIG_IP_NF_NAT_AMANDA=m
339CONFIG_IP_NF_NAT_PPTP=m
504CONFIG_IP_NF_MANGLE=m 340CONFIG_IP_NF_MANGLE=m
505CONFIG_IP_NF_TARGET_TOS=m 341CONFIG_IP_NF_TARGET_TOS=m
506CONFIG_IP_NF_TARGET_ECN=m 342CONFIG_IP_NF_TARGET_ECN=m
507CONFIG_IP_NF_TARGET_DSCP=m 343CONFIG_IP_NF_TARGET_DSCP=m
508CONFIG_IP_NF_TARGET_MARK=m 344CONFIG_IP_NF_TARGET_MARK=m
509CONFIG_IP_NF_TARGET_CLASSIFY=m 345CONFIG_IP_NF_TARGET_CLASSIFY=m
346CONFIG_IP_NF_TARGET_TTL=m
510CONFIG_IP_NF_TARGET_CONNMARK=m 347CONFIG_IP_NF_TARGET_CONNMARK=m
511CONFIG_IP_NF_TARGET_CLUSTERIP=m 348CONFIG_IP_NF_TARGET_CLUSTERIP=m
512CONFIG_IP_NF_RAW=m 349CONFIG_IP_NF_RAW=m
@@ -516,7 +353,7 @@ CONFIG_IP_NF_ARPFILTER=m
516CONFIG_IP_NF_ARP_MANGLE=m 353CONFIG_IP_NF_ARP_MANGLE=m
517 354
518# 355#
519# IPv6: Netfilter Configuration 356# IPv6: Netfilter Configuration (EXPERIMENTAL)
520# 357#
521CONFIG_IP6_NF_QUEUE=m 358CONFIG_IP6_NF_QUEUE=m
522CONFIG_IP6_NF_IPTABLES=m 359CONFIG_IP6_NF_IPTABLES=m
@@ -536,8 +373,10 @@ CONFIG_IP6_NF_MATCH_EUI64=m
536CONFIG_IP6_NF_MATCH_PHYSDEV=m 373CONFIG_IP6_NF_MATCH_PHYSDEV=m
537CONFIG_IP6_NF_FILTER=m 374CONFIG_IP6_NF_FILTER=m
538CONFIG_IP6_NF_TARGET_LOG=m 375CONFIG_IP6_NF_TARGET_LOG=m
376CONFIG_IP6_NF_TARGET_REJECT=m
539CONFIG_IP6_NF_MANGLE=m 377CONFIG_IP6_NF_MANGLE=m
540CONFIG_IP6_NF_TARGET_MARK=m 378CONFIG_IP6_NF_TARGET_MARK=m
379CONFIG_IP6_NF_TARGET_HL=m
541CONFIG_IP6_NF_RAW=m 380CONFIG_IP6_NF_RAW=m
542 381
543# 382#
@@ -567,9 +406,12 @@ CONFIG_BRIDGE_EBT_MARK_T=m
567CONFIG_BRIDGE_EBT_REDIRECT=m 406CONFIG_BRIDGE_EBT_REDIRECT=m
568CONFIG_BRIDGE_EBT_SNAT=m 407CONFIG_BRIDGE_EBT_SNAT=m
569CONFIG_BRIDGE_EBT_LOG=m 408CONFIG_BRIDGE_EBT_LOG=m
570# CONFIG_BRIDGE_EBT_ULOG is not set 409CONFIG_BRIDGE_EBT_ULOG=m
571CONFIG_XFRM=y 410
572# CONFIG_XFRM_USER is not set 411#
412# DCCP Configuration (EXPERIMENTAL)
413#
414# CONFIG_IP_DCCP is not set
573 415
574# 416#
575# SCTP Configuration (EXPERIMENTAL) 417# SCTP Configuration (EXPERIMENTAL)
@@ -588,10 +430,6 @@ CONFIG_DECNET=m
588# CONFIG_NET_DIVERT is not set 430# CONFIG_NET_DIVERT is not set
589# CONFIG_ECONET is not set 431# CONFIG_ECONET is not set
590# CONFIG_WAN_ROUTER is not set 432# CONFIG_WAN_ROUTER is not set
591
592#
593# QoS and/or fair queueing
594#
595CONFIG_NET_SCHED=y 433CONFIG_NET_SCHED=y
596CONFIG_NET_SCH_CLK_JIFFIES=y 434CONFIG_NET_SCH_CLK_JIFFIES=y
597# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set 435# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
@@ -611,6 +449,7 @@ CONFIG_NET_SCH_INGRESS=m
611CONFIG_NET_QOS=y 449CONFIG_NET_QOS=y
612CONFIG_NET_ESTIMATOR=y 450CONFIG_NET_ESTIMATOR=y
613CONFIG_NET_CLS=y 451CONFIG_NET_CLS=y
452CONFIG_NET_CLS_BASIC=m
614CONFIG_NET_CLS_TCINDEX=m 453CONFIG_NET_CLS_TCINDEX=m
615CONFIG_NET_CLS_ROUTE4=m 454CONFIG_NET_CLS_ROUTE4=m
616CONFIG_NET_CLS_ROUTE=y 455CONFIG_NET_CLS_ROUTE=y
@@ -621,6 +460,7 @@ CONFIG_NET_CLS_U32=m
621# CONFIG_CLS_U32_MARK is not set 460# CONFIG_CLS_U32_MARK is not set
622CONFIG_NET_CLS_RSVP=m 461CONFIG_NET_CLS_RSVP=m
623CONFIG_NET_CLS_RSVP6=m 462CONFIG_NET_CLS_RSVP6=m
463# CONFIG_NET_EMATCH is not set
624# CONFIG_NET_CLS_ACT is not set 464# CONFIG_NET_CLS_ACT is not set
625CONFIG_NET_CLS_POLICE=y 465CONFIG_NET_CLS_POLICE=y
626 466
@@ -628,8 +468,6 @@ CONFIG_NET_CLS_POLICE=y
628# Network testing 468# Network testing
629# 469#
630# CONFIG_NET_PKTGEN is not set 470# CONFIG_NET_PKTGEN is not set
631# CONFIG_NETPOLL is not set
632# CONFIG_NET_POLL_CONTROLLER is not set
633CONFIG_HAMRADIO=y 471CONFIG_HAMRADIO=y
634 472
635# 473#
@@ -646,8 +484,6 @@ CONFIG_ROSE=m
646CONFIG_MKISS=m 484CONFIG_MKISS=m
647CONFIG_6PACK=m 485CONFIG_6PACK=m
648CONFIG_BPQETHER=m 486CONFIG_BPQETHER=m
649# CONFIG_DMASCC is not set
650# CONFIG_SCC is not set
651# CONFIG_BAYCOM_SER_FDX is not set 487# CONFIG_BAYCOM_SER_FDX is not set
652# CONFIG_BAYCOM_SER_HDX is not set 488# CONFIG_BAYCOM_SER_HDX is not set
653# CONFIG_BAYCOM_PAR is not set 489# CONFIG_BAYCOM_PAR is not set
@@ -655,12 +491,257 @@ CONFIG_BPQETHER=m
655# CONFIG_YAM is not set 491# CONFIG_YAM is not set
656# CONFIG_IRDA is not set 492# CONFIG_IRDA is not set
657# CONFIG_BT is not set 493# CONFIG_BT is not set
494CONFIG_IEEE80211=m
495# CONFIG_IEEE80211_DEBUG is not set
496CONFIG_IEEE80211_CRYPT_WEP=m
497CONFIG_IEEE80211_CRYPT_CCMP=m
498CONFIG_IEEE80211_CRYPT_TKIP=m
499
500#
501# Device Drivers
502#
503
504#
505# Generic Driver Options
506#
507CONFIG_STANDALONE=y
508CONFIG_PREVENT_FIRMWARE_BUILD=y
509CONFIG_FW_LOADER=m
510
511#
512# Connector - unified userspace <-> kernelspace linker
513#
514CONFIG_CONNECTOR=m
515
516#
517# Memory Technology Devices (MTD)
518#
519# CONFIG_MTD is not set
520
521#
522# Parallel port support
523#
524CONFIG_PARPORT=m
525CONFIG_PARPORT_PC=m
526CONFIG_PARPORT_SERIAL=m
527# CONFIG_PARPORT_PC_FIFO is not set
528# CONFIG_PARPORT_PC_SUPERIO is not set
529CONFIG_PARPORT_NOT_PC=y
530# CONFIG_PARPORT_GSC is not set
531CONFIG_PARPORT_1284=y
532
533#
534# Plug and Play support
535#
536# CONFIG_PNP is not set
537
538#
539# Block devices
540#
541CONFIG_BLK_DEV_FD=m
542CONFIG_PARIDE=m
543CONFIG_PARIDE_PARPORT=m
544
545#
546# Parallel IDE high-level drivers
547#
548CONFIG_PARIDE_PD=m
549CONFIG_PARIDE_PCD=m
550CONFIG_PARIDE_PF=m
551CONFIG_PARIDE_PT=m
552CONFIG_PARIDE_PG=m
553
554#
555# Parallel IDE protocol modules
556#
557CONFIG_PARIDE_ATEN=m
558CONFIG_PARIDE_BPCK=m
559CONFIG_PARIDE_BPCK6=m
560CONFIG_PARIDE_COMM=m
561CONFIG_PARIDE_DSTR=m
562CONFIG_PARIDE_FIT2=m
563CONFIG_PARIDE_FIT3=m
564CONFIG_PARIDE_EPAT=m
565# CONFIG_PARIDE_EPATC8 is not set
566CONFIG_PARIDE_EPIA=m
567CONFIG_PARIDE_FRIQ=m
568CONFIG_PARIDE_FRPW=m
569CONFIG_PARIDE_KBIC=m
570CONFIG_PARIDE_KTTI=m
571CONFIG_PARIDE_ON20=m
572CONFIG_PARIDE_ON26=m
573# CONFIG_BLK_CPQ_DA is not set
574# CONFIG_BLK_CPQ_CISS_DA is not set
575# CONFIG_BLK_DEV_DAC960 is not set
576# CONFIG_BLK_DEV_UMEM is not set
577# CONFIG_BLK_DEV_COW_COMMON is not set
578CONFIG_BLK_DEV_LOOP=m
579CONFIG_BLK_DEV_CRYPTOLOOP=m
580CONFIG_BLK_DEV_NBD=m
581CONFIG_BLK_DEV_SX8=m
582CONFIG_BLK_DEV_UB=m
583CONFIG_BLK_DEV_RAM=m
584CONFIG_BLK_DEV_RAM_COUNT=16
585CONFIG_BLK_DEV_RAM_SIZE=4096
586# CONFIG_LBD is not set
587CONFIG_CDROM_PKTCDVD=m
588CONFIG_CDROM_PKTCDVD_BUFFERS=8
589# CONFIG_CDROM_PKTCDVD_WCACHE is not set
590
591#
592# IO Schedulers
593#
594CONFIG_IOSCHED_NOOP=y
595CONFIG_IOSCHED_AS=y
596CONFIG_IOSCHED_DEADLINE=y
597CONFIG_IOSCHED_CFQ=y
598CONFIG_ATA_OVER_ETH=m
599
600#
601# ATA/ATAPI/MFM/RLL support
602#
603# CONFIG_IDE is not set
604
605#
606# SCSI device support
607#
608CONFIG_RAID_ATTRS=m
609CONFIG_SCSI=y
610CONFIG_SCSI_PROC_FS=y
611
612#
613# SCSI support type (disk, tape, CD-ROM)
614#
615CONFIG_BLK_DEV_SD=y
616CONFIG_CHR_DEV_ST=m
617# CONFIG_CHR_DEV_OSST is not set
618CONFIG_BLK_DEV_SR=m
619CONFIG_BLK_DEV_SR_VENDOR=y
620# CONFIG_CHR_DEV_SG is not set
621# CONFIG_CHR_DEV_SCH is not set
622
623#
624# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
625#
626# CONFIG_SCSI_MULTI_LUN is not set
627CONFIG_SCSI_CONSTANTS=y
628# CONFIG_SCSI_LOGGING is not set
629
630#
631# SCSI Transport Attributes
632#
633CONFIG_SCSI_SPI_ATTRS=y
634# CONFIG_SCSI_FC_ATTRS is not set
635CONFIG_SCSI_ISCSI_ATTRS=m
636CONFIG_SCSI_SAS_ATTRS=m
637
638#
639# SCSI low-level drivers
640#
641# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
642# CONFIG_SCSI_3W_9XXX is not set
643# CONFIG_SCSI_ACARD is not set
644# CONFIG_SCSI_AHA152X is not set
645# CONFIG_SCSI_AACRAID is not set
646# CONFIG_SCSI_AIC7XXX is not set
647# CONFIG_SCSI_AIC7XXX_OLD is not set
648# CONFIG_SCSI_AIC79XX is not set
649# CONFIG_SCSI_DPT_I2O is not set
650# CONFIG_SCSI_IN2000 is not set
651CONFIG_MEGARAID_NEWGEN=y
652CONFIG_MEGARAID_MM=m
653CONFIG_MEGARAID_MAILBOX=m
654# CONFIG_SCSI_SATA is not set
655# CONFIG_SCSI_DMX3191D is not set
656# CONFIG_SCSI_DTC3280 is not set
657# CONFIG_SCSI_FUTURE_DOMAIN is not set
658# CONFIG_SCSI_GENERIC_NCR5380 is not set
659# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
660# CONFIG_SCSI_IPS is not set
661# CONFIG_SCSI_INITIO is not set
662# CONFIG_SCSI_INIA100 is not set
663CONFIG_SCSI_PPA=m
664CONFIG_SCSI_IMM=m
665# CONFIG_SCSI_IZIP_EPP16 is not set
666# CONFIG_SCSI_IZIP_SLOW_CTR is not set
667# CONFIG_SCSI_NCR53C406A is not set
668CONFIG_SCSI_SYM53C8XX_2=y
669CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
670CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
671CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
672# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
673# CONFIG_SCSI_IPR is not set
674# CONFIG_SCSI_PAS16 is not set
675# CONFIG_SCSI_PSI240I is not set
676# CONFIG_SCSI_QLOGIC_FAS is not set
677# CONFIG_SCSI_QLOGIC_FC is not set
678# CONFIG_SCSI_QLOGIC_1280 is not set
679CONFIG_SCSI_QLA2XXX=y
680# CONFIG_SCSI_QLA21XX is not set
681# CONFIG_SCSI_QLA22XX is not set
682# CONFIG_SCSI_QLA2300 is not set
683# CONFIG_SCSI_QLA2322 is not set
684# CONFIG_SCSI_QLA6312 is not set
685# CONFIG_SCSI_QLA24XX is not set
686# CONFIG_SCSI_LPFC is not set
687# CONFIG_SCSI_SYM53C416 is not set
688# CONFIG_SCSI_DC395x is not set
689# CONFIG_SCSI_DC390T is not set
690# CONFIG_SCSI_T128 is not set
691# CONFIG_SCSI_NSP32 is not set
692# CONFIG_SCSI_DEBUG is not set
693
694#
695# Old CD-ROM drivers (not SCSI, not IDE)
696#
697# CONFIG_CD_NO_IDESCSI is not set
698
699#
700# Multi-device support (RAID and LVM)
701#
702CONFIG_MD=y
703CONFIG_BLK_DEV_MD=m
704CONFIG_MD_LINEAR=m
705CONFIG_MD_RAID0=m
706CONFIG_MD_RAID1=m
707CONFIG_MD_RAID10=m
708CONFIG_MD_RAID5=m
709# CONFIG_MD_RAID6 is not set
710CONFIG_MD_MULTIPATH=m
711CONFIG_MD_FAULTY=m
712CONFIG_BLK_DEV_DM=m
713# CONFIG_DM_CRYPT is not set
714CONFIG_DM_SNAPSHOT=m
715CONFIG_DM_MIRROR=m
716CONFIG_DM_ZERO=m
717CONFIG_DM_MULTIPATH=m
718CONFIG_DM_MULTIPATH_EMC=m
719
720#
721# Fusion MPT device support
722#
723# CONFIG_FUSION is not set
724# CONFIG_FUSION_SPI is not set
725# CONFIG_FUSION_FC is not set
726
727#
728# IEEE 1394 (FireWire) support
729#
730# CONFIG_IEEE1394 is not set
731
732#
733# I2O device support
734#
735# CONFIG_I2O is not set
736
737#
738# Network device support
739#
658CONFIG_NETDEVICES=y 740CONFIG_NETDEVICES=y
659CONFIG_DUMMY=m 741CONFIG_DUMMY=m
660CONFIG_BONDING=m 742CONFIG_BONDING=m
661CONFIG_EQUALIZER=m 743CONFIG_EQUALIZER=m
662CONFIG_TUN=m 744CONFIG_TUN=m
663CONFIG_ETHERTAP=m
664 745
665# 746#
666# ARCnet devices 747# ARCnet devices
@@ -668,6 +749,21 @@ CONFIG_ETHERTAP=m
668# CONFIG_ARCNET is not set 749# CONFIG_ARCNET is not set
669 750
670# 751#
752# PHY device support
753#
754CONFIG_PHYLIB=m
755CONFIG_PHYCONTROL=y
756
757#
758# MII PHY device drivers
759#
760CONFIG_MARVELL_PHY=m
761CONFIG_DAVICOM_PHY=m
762CONFIG_QSEMI_PHY=m
763CONFIG_LXT_PHY=m
764CONFIG_CICADA_PHY=m
765
766#
671# Ethernet (10 or 100Mbit) 767# Ethernet (10 or 100Mbit)
672# 768#
673CONFIG_NET_ETHERNET=y 769CONFIG_NET_ETHERNET=y
@@ -675,7 +771,6 @@ CONFIG_MII=y
675# CONFIG_HAPPYMEAL is not set 771# CONFIG_HAPPYMEAL is not set
676# CONFIG_SUNGEM is not set 772# CONFIG_SUNGEM is not set
677# CONFIG_NET_VENDOR_3COM is not set 773# CONFIG_NET_VENDOR_3COM is not set
678# CONFIG_LANCE is not set
679# CONFIG_NET_VENDOR_SMC is not set 774# CONFIG_NET_VENDOR_SMC is not set
680# CONFIG_NET_VENDOR_RACAL is not set 775# CONFIG_NET_VENDOR_RACAL is not set
681 776
@@ -696,7 +791,6 @@ CONFIG_NET_ISA=y
696# CONFIG_LP486E is not set 791# CONFIG_LP486E is not set
697# CONFIG_ETH16I is not set 792# CONFIG_ETH16I is not set
698CONFIG_NE2000=m 793CONFIG_NE2000=m
699# CONFIG_ZNET is not set
700# CONFIG_SEEQ8005 is not set 794# CONFIG_SEEQ8005 is not set
701CONFIG_NET_PCI=y 795CONFIG_NET_PCI=y
702CONFIG_PCNET32=y 796CONFIG_PCNET32=y
@@ -733,13 +827,17 @@ CONFIG_EEPRO100=m
733# CONFIG_HAMACHI is not set 827# CONFIG_HAMACHI is not set
734# CONFIG_YELLOWFIN is not set 828# CONFIG_YELLOWFIN is not set
735# CONFIG_R8169 is not set 829# CONFIG_R8169 is not set
830# CONFIG_SIS190 is not set
831# CONFIG_SKGE is not set
736# CONFIG_SK98LIN is not set 832# CONFIG_SK98LIN is not set
737CONFIG_VIA_VELOCITY=m 833CONFIG_VIA_VELOCITY=m
738# CONFIG_TIGON3 is not set 834# CONFIG_TIGON3 is not set
835# CONFIG_BNX2 is not set
739 836
740# 837#
741# Ethernet (10000 Mbit) 838# Ethernet (10000 Mbit)
742# 839#
840# CONFIG_CHELSIO_T1 is not set
743# CONFIG_IXGB is not set 841# CONFIG_IXGB is not set
744# CONFIG_S2IO is not set 842# CONFIG_S2IO is not set
745 843
@@ -752,6 +850,8 @@ CONFIG_VIA_VELOCITY=m
752# Wireless LAN (non-hamradio) 850# Wireless LAN (non-hamradio)
753# 851#
754# CONFIG_NET_RADIO is not set 852# CONFIG_NET_RADIO is not set
853# CONFIG_IPW_DEBUG is not set
854CONFIG_IPW2200=m
755 855
756# 856#
757# Wan interfaces 857# Wan interfaces
@@ -765,6 +865,8 @@ CONFIG_PLIP=m
765# CONFIG_NET_FC is not set 865# CONFIG_NET_FC is not set
766# CONFIG_SHAPER is not set 866# CONFIG_SHAPER is not set
767# CONFIG_NETCONSOLE is not set 867# CONFIG_NETCONSOLE is not set
868# CONFIG_NETPOLL is not set
869# CONFIG_NET_POLL_CONTROLLER is not set
768 870
769# 871#
770# ISDN subsystem 872# ISDN subsystem
@@ -794,20 +896,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
794# CONFIG_INPUT_EVBUG is not set 896# CONFIG_INPUT_EVBUG is not set
795 897
796# 898#
797# Input I/O drivers
798#
799# CONFIG_GAMEPORT is not set
800CONFIG_SOUND_GAMEPORT=y
801CONFIG_SERIO=y
802CONFIG_SERIO_I8042=y
803CONFIG_SERIO_SERPORT=y
804# CONFIG_SERIO_CT82C710 is not set
805CONFIG_SERIO_PARKBD=m
806# CONFIG_SERIO_PCIPS2 is not set
807CONFIG_SERIO_LIBPS2=y
808CONFIG_SERIO_RAW=m
809
810#
811# Input Device Drivers 899# Input Device Drivers
812# 900#
813CONFIG_INPUT_KEYBOARD=y 901CONFIG_INPUT_KEYBOARD=y
@@ -828,6 +916,18 @@ CONFIG_MOUSE_PS2=y
828# CONFIG_INPUT_MISC is not set 916# CONFIG_INPUT_MISC is not set
829 917
830# 918#
919# Hardware I/O ports
920#
921CONFIG_SERIO=y
922CONFIG_SERIO_I8042=y
923CONFIG_SERIO_SERPORT=y
924CONFIG_SERIO_PARKBD=m
925# CONFIG_SERIO_PCIPS2 is not set
926CONFIG_SERIO_LIBPS2=y
927CONFIG_SERIO_RAW=m
928# CONFIG_GAMEPORT is not set
929
930#
831# Character devices 931# Character devices
832# 932#
833CONFIG_VT=y 933CONFIG_VT=y
@@ -844,13 +944,13 @@ CONFIG_SERIAL_8250_EXTENDED=y
844# CONFIG_SERIAL_8250_MANY_PORTS is not set 944# CONFIG_SERIAL_8250_MANY_PORTS is not set
845CONFIG_SERIAL_8250_SHARE_IRQ=y 945CONFIG_SERIAL_8250_SHARE_IRQ=y
846CONFIG_SERIAL_8250_DETECT_IRQ=y 946CONFIG_SERIAL_8250_DETECT_IRQ=y
847CONFIG_SERIAL_8250_MULTIPORT=y
848CONFIG_SERIAL_8250_RSA=y 947CONFIG_SERIAL_8250_RSA=y
849 948
850# 949#
851# Non-8250 serial port support 950# Non-8250 serial port support
852# 951#
853CONFIG_SERIAL_CORE=m 952CONFIG_SERIAL_CORE=m
953# CONFIG_SERIAL_JSM is not set
854CONFIG_UNIX98_PTYS=y 954CONFIG_UNIX98_PTYS=y
855CONFIG_LEGACY_PTYS=y 955CONFIG_LEGACY_PTYS=y
856CONFIG_LEGACY_PTY_COUNT=256 956CONFIG_LEGACY_PTY_COUNT=256
@@ -881,6 +981,11 @@ CONFIG_RTC=m
881# CONFIG_RAW_DRIVER is not set 981# CONFIG_RAW_DRIVER is not set
882 982
883# 983#
984# TPM devices
985#
986# CONFIG_TCG_TPM is not set
987
988#
884# I2C support 989# I2C support
885# 990#
886# CONFIG_I2C is not set 991# CONFIG_I2C is not set
@@ -891,15 +996,26 @@ CONFIG_RTC=m
891CONFIG_W1=m 996CONFIG_W1=m
892CONFIG_W1_MATROX=m 997CONFIG_W1_MATROX=m
893CONFIG_W1_DS9490=m 998CONFIG_W1_DS9490=m
894CONFIG_W1_DS9490_BRIDGE=m 999# CONFIG_W1_DS9490_BRIDGE is not set
895CONFIG_W1_THERM=m 1000CONFIG_W1_THERM=m
896CONFIG_W1_SMEM=m 1001CONFIG_W1_SMEM=m
1002# CONFIG_W1_DS2433 is not set
1003
1004#
1005# Hardware Monitoring support
1006#
1007# CONFIG_HWMON is not set
1008# CONFIG_HWMON_VID is not set
897 1009
898# 1010#
899# Misc devices 1011# Misc devices
900# 1012#
901 1013
902# 1014#
1015# Multimedia Capabilities Port drivers
1016#
1017
1018#
903# Multimedia devices 1019# Multimedia devices
904# 1020#
905# CONFIG_VIDEO_DEV is not set 1021# CONFIG_VIDEO_DEV is not set
@@ -920,7 +1036,6 @@ CONFIG_W1_SMEM=m
920CONFIG_VGA_CONSOLE=y 1036CONFIG_VGA_CONSOLE=y
921# CONFIG_MDA_CONSOLE is not set 1037# CONFIG_MDA_CONSOLE is not set
922CONFIG_DUMMY_CONSOLE=y 1038CONFIG_DUMMY_CONSOLE=y
923# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
924 1039
925# 1040#
926# Sound 1041# Sound
@@ -930,6 +1045,8 @@ CONFIG_DUMMY_CONSOLE=y
930# 1045#
931# USB support 1046# USB support
932# 1047#
1048CONFIG_USB_ARCH_HAS_HCD=y
1049CONFIG_USB_ARCH_HAS_OHCI=y
933CONFIG_USB=m 1050CONFIG_USB=m
934# CONFIG_USB_DEBUG is not set 1051# CONFIG_USB_DEBUG is not set
935 1052
@@ -940,8 +1057,6 @@ CONFIG_USB_DEVICEFS=y
940# CONFIG_USB_BANDWIDTH is not set 1057# CONFIG_USB_BANDWIDTH is not set
941# CONFIG_USB_DYNAMIC_MINORS is not set 1058# CONFIG_USB_DYNAMIC_MINORS is not set
942# CONFIG_USB_OTG is not set 1059# CONFIG_USB_OTG is not set
943CONFIG_USB_ARCH_HAS_HCD=y
944CONFIG_USB_ARCH_HAS_OHCI=y
945 1060
946# 1061#
947# USB Host Controller Drivers 1062# USB Host Controller Drivers
@@ -949,7 +1064,10 @@ CONFIG_USB_ARCH_HAS_OHCI=y
949CONFIG_USB_EHCI_HCD=m 1064CONFIG_USB_EHCI_HCD=m
950# CONFIG_USB_EHCI_SPLIT_ISO is not set 1065# CONFIG_USB_EHCI_SPLIT_ISO is not set
951# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1066# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1067# CONFIG_USB_ISP116X_HCD is not set
952CONFIG_USB_OHCI_HCD=m 1068CONFIG_USB_OHCI_HCD=m
1069# CONFIG_USB_OHCI_BIG_ENDIAN is not set
1070CONFIG_USB_OHCI_LITTLE_ENDIAN=y
953CONFIG_USB_UHCI_HCD=m 1071CONFIG_USB_UHCI_HCD=m
954# CONFIG_USB_SL811_HCD is not set 1072# CONFIG_USB_SL811_HCD is not set
955 1073
@@ -965,11 +1083,10 @@ CONFIG_USB_PRINTER=m
965# 1083#
966CONFIG_USB_STORAGE=m 1084CONFIG_USB_STORAGE=m
967# CONFIG_USB_STORAGE_DEBUG is not set 1085# CONFIG_USB_STORAGE_DEBUG is not set
968# CONFIG_USB_STORAGE_RW_DETECT is not set
969CONFIG_USB_STORAGE_DATAFAB=y 1086CONFIG_USB_STORAGE_DATAFAB=y
970CONFIG_USB_STORAGE_FREECOM=y 1087CONFIG_USB_STORAGE_FREECOM=y
971CONFIG_USB_STORAGE_DPCM=y 1088CONFIG_USB_STORAGE_DPCM=y
972CONFIG_USB_STORAGE_HP8200e=y 1089# CONFIG_USB_STORAGE_USBAT is not set
973CONFIG_USB_STORAGE_SDDR09=y 1090CONFIG_USB_STORAGE_SDDR09=y
974CONFIG_USB_STORAGE_SDDR55=y 1091CONFIG_USB_STORAGE_SDDR55=y
975CONFIG_USB_STORAGE_JUMPSHOT=y 1092CONFIG_USB_STORAGE_JUMPSHOT=y
@@ -992,12 +1109,17 @@ CONFIG_USB_KBD=m
992CONFIG_USB_MOUSE=m 1109CONFIG_USB_MOUSE=m
993CONFIG_USB_AIPTEK=m 1110CONFIG_USB_AIPTEK=m
994CONFIG_USB_WACOM=m 1111CONFIG_USB_WACOM=m
1112# CONFIG_USB_ACECAD is not set
995CONFIG_USB_KBTAB=m 1113CONFIG_USB_KBTAB=m
996CONFIG_USB_POWERMATE=m 1114CONFIG_USB_POWERMATE=m
997# CONFIG_USB_MTOUCH is not set 1115# CONFIG_USB_MTOUCH is not set
1116# CONFIG_USB_ITMTOUCH is not set
998CONFIG_USB_EGALAX=m 1117CONFIG_USB_EGALAX=m
1118CONFIG_USB_YEALINK=m
999CONFIG_USB_XPAD=m 1119CONFIG_USB_XPAD=m
1000# CONFIG_USB_ATI_REMOTE is not set 1120# CONFIG_USB_ATI_REMOTE is not set
1121# CONFIG_USB_KEYSPAN_REMOTE is not set
1122# CONFIG_USB_APPLETOUCH is not set
1001 1123
1002# 1124#
1003# USB Imaging devices 1125# USB Imaging devices
@@ -1022,30 +1144,15 @@ CONFIG_USB_KAWETH=m
1022CONFIG_USB_PEGASUS=m 1144CONFIG_USB_PEGASUS=m
1023CONFIG_USB_RTL8150=m 1145CONFIG_USB_RTL8150=m
1024CONFIG_USB_USBNET=m 1146CONFIG_USB_USBNET=m
1025 1147CONFIG_USB_NET_AX8817X=m
1026# 1148CONFIG_USB_NET_CDCETHER=m
1027# USB Host-to-Host Cables 1149# CONFIG_USB_NET_GL620A is not set
1028# 1150CONFIG_USB_NET_NET1080=m
1029CONFIG_USB_ALI_M5632=y 1151# CONFIG_USB_NET_PLUSB is not set
1030CONFIG_USB_AN2720=y 1152# CONFIG_USB_NET_RNDIS_HOST is not set
1031CONFIG_USB_BELKIN=y 1153# CONFIG_USB_NET_CDC_SUBSET is not set
1032CONFIG_USB_GENESYS=y 1154CONFIG_USB_NET_ZAURUS=m
1033CONFIG_USB_NET1080=y 1155CONFIG_USB_MON=y
1034CONFIG_USB_PL2301=y
1035CONFIG_USB_KC2190=y
1036
1037#
1038# Intelligent USB Devices/Gadgets
1039#
1040CONFIG_USB_ARMLINUX=y
1041CONFIG_USB_EPSON2888=y
1042CONFIG_USB_ZAURUS=y
1043CONFIG_USB_CDCETHER=y
1044
1045#
1046# USB Network Adapters
1047#
1048CONFIG_USB_AX8817X=y
1049 1156
1050# 1157#
1051# USB port drivers 1158# USB port drivers
@@ -1057,9 +1164,11 @@ CONFIG_USB_USS720=m
1057# 1164#
1058CONFIG_USB_SERIAL=m 1165CONFIG_USB_SERIAL=m
1059CONFIG_USB_SERIAL_GENERIC=y 1166CONFIG_USB_SERIAL_GENERIC=y
1167CONFIG_USB_SERIAL_AIRPRIME=m
1060CONFIG_USB_SERIAL_BELKIN=m 1168CONFIG_USB_SERIAL_BELKIN=m
1061CONFIG_USB_SERIAL_WHITEHEAT=m 1169CONFIG_USB_SERIAL_WHITEHEAT=m
1062CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m 1170CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
1171# CONFIG_USB_SERIAL_CP2101 is not set
1063CONFIG_USB_SERIAL_CYPRESS_M8=m 1172CONFIG_USB_SERIAL_CYPRESS_M8=m
1064CONFIG_USB_SERIAL_EMPEG=m 1173CONFIG_USB_SERIAL_EMPEG=m
1065CONFIG_USB_SERIAL_FTDI_SIO=m 1174CONFIG_USB_SERIAL_FTDI_SIO=m
@@ -1088,6 +1197,7 @@ CONFIG_USB_SERIAL_KLSI=m
1088CONFIG_USB_SERIAL_KOBIL_SCT=m 1197CONFIG_USB_SERIAL_KOBIL_SCT=m
1089CONFIG_USB_SERIAL_MCT_U232=m 1198CONFIG_USB_SERIAL_MCT_U232=m
1090CONFIG_USB_SERIAL_PL2303=m 1199CONFIG_USB_SERIAL_PL2303=m
1200CONFIG_USB_SERIAL_HP4X=m
1091CONFIG_USB_SERIAL_SAFE=m 1201CONFIG_USB_SERIAL_SAFE=m
1092CONFIG_USB_SERIAL_SAFE_PADDED=y 1202CONFIG_USB_SERIAL_SAFE_PADDED=y
1093# CONFIG_USB_SERIAL_TI is not set 1203# CONFIG_USB_SERIAL_TI is not set
@@ -1110,10 +1220,13 @@ CONFIG_USB_CYTHERM=m
1110CONFIG_USB_PHIDGETKIT=m 1220CONFIG_USB_PHIDGETKIT=m
1111CONFIG_USB_PHIDGETSERVO=m 1221CONFIG_USB_PHIDGETSERVO=m
1112# CONFIG_USB_IDMOUSE is not set 1222# CONFIG_USB_IDMOUSE is not set
1223CONFIG_USB_SISUSBVGA=m
1224# CONFIG_USB_SISUSBVGA_CON is not set
1225CONFIG_USB_LD=m
1113CONFIG_USB_TEST=m 1226CONFIG_USB_TEST=m
1114 1227
1115# 1228#
1116# USB ATM/DSL drivers 1229# USB DSL modem support
1117# 1230#
1118 1231
1119# 1232#
@@ -1132,10 +1245,15 @@ CONFIG_USB_TEST=m
1132# CONFIG_INFINIBAND is not set 1245# CONFIG_INFINIBAND is not set
1133 1246
1134# 1247#
1248# SN Devices
1249#
1250
1251#
1135# File systems 1252# File systems
1136# 1253#
1137CONFIG_EXT2_FS=m 1254CONFIG_EXT2_FS=m
1138# CONFIG_EXT2_FS_XATTR is not set 1255# CONFIG_EXT2_FS_XATTR is not set
1256# CONFIG_EXT2_FS_XIP is not set
1139CONFIG_EXT3_FS=y 1257CONFIG_EXT3_FS=y
1140CONFIG_EXT3_FS_XATTR=y 1258CONFIG_EXT3_FS_XATTR=y
1141# CONFIG_EXT3_FS_POSIX_ACL is not set 1259# CONFIG_EXT3_FS_POSIX_ACL is not set
@@ -1152,17 +1270,20 @@ CONFIG_REISERFS_FS_SECURITY=y
1152# CONFIG_JFS_FS is not set 1270# CONFIG_JFS_FS is not set
1153CONFIG_FS_POSIX_ACL=y 1271CONFIG_FS_POSIX_ACL=y
1154CONFIG_XFS_FS=m 1272CONFIG_XFS_FS=m
1155# CONFIG_XFS_RT is not set 1273CONFIG_XFS_EXPORT=y
1156CONFIG_XFS_QUOTA=y 1274CONFIG_XFS_QUOTA=m
1157CONFIG_XFS_SECURITY=y 1275CONFIG_XFS_SECURITY=y
1158# CONFIG_XFS_POSIX_ACL is not set 1276# CONFIG_XFS_POSIX_ACL is not set
1277# CONFIG_XFS_RT is not set
1159CONFIG_MINIX_FS=m 1278CONFIG_MINIX_FS=m
1160CONFIG_ROMFS_FS=m 1279CONFIG_ROMFS_FS=m
1280CONFIG_INOTIFY=y
1161# CONFIG_QUOTA is not set 1281# CONFIG_QUOTA is not set
1162CONFIG_QUOTACTL=y 1282CONFIG_QUOTACTL=y
1163CONFIG_DNOTIFY=y 1283CONFIG_DNOTIFY=y
1164CONFIG_AUTOFS_FS=m 1284CONFIG_AUTOFS_FS=m
1165CONFIG_AUTOFS4_FS=m 1285CONFIG_AUTOFS4_FS=m
1286CONFIG_FUSE_FS=m
1166 1287
1167# 1288#
1168# CD-ROM/DVD Filesystems 1289# CD-ROM/DVD Filesystems
@@ -1192,12 +1313,10 @@ CONFIG_NTFS_FS=m
1192CONFIG_PROC_FS=y 1313CONFIG_PROC_FS=y
1193CONFIG_PROC_KCORE=y 1314CONFIG_PROC_KCORE=y
1194CONFIG_SYSFS=y 1315CONFIG_SYSFS=y
1195# CONFIG_DEVFS_FS is not set
1196CONFIG_DEVPTS_FS_XATTR=y
1197CONFIG_DEVPTS_FS_SECURITY=y
1198# CONFIG_TMPFS is not set 1316# CONFIG_TMPFS is not set
1199# CONFIG_HUGETLB_PAGE is not set 1317# CONFIG_HUGETLB_PAGE is not set
1200CONFIG_RAMFS=y 1318CONFIG_RAMFS=y
1319CONFIG_RELAYFS_FS=m
1201 1320
1202# 1321#
1203# Miscellaneous filesystems 1322# Miscellaneous filesystems
@@ -1224,15 +1343,18 @@ CONFIG_UFS_FS=m
1224# 1343#
1225CONFIG_NFS_FS=m 1344CONFIG_NFS_FS=m
1226CONFIG_NFS_V3=y 1345CONFIG_NFS_V3=y
1346# CONFIG_NFS_V3_ACL is not set
1227# CONFIG_NFS_V4 is not set 1347# CONFIG_NFS_V4 is not set
1228# CONFIG_NFS_DIRECTIO is not set 1348# CONFIG_NFS_DIRECTIO is not set
1229CONFIG_NFSD=m 1349CONFIG_NFSD=m
1230CONFIG_NFSD_V3=y 1350CONFIG_NFSD_V3=y
1351# CONFIG_NFSD_V3_ACL is not set
1231# CONFIG_NFSD_V4 is not set 1352# CONFIG_NFSD_V4 is not set
1232CONFIG_NFSD_TCP=y 1353CONFIG_NFSD_TCP=y
1233CONFIG_LOCKD=m 1354CONFIG_LOCKD=m
1234CONFIG_LOCKD_V4=y 1355CONFIG_LOCKD_V4=y
1235CONFIG_EXPORTFS=m 1356CONFIG_EXPORTFS=m
1357CONFIG_NFS_COMMON=y
1236CONFIG_SUNRPC=m 1358CONFIG_SUNRPC=m
1237CONFIG_SUNRPC_GSS=m 1359CONFIG_SUNRPC_GSS=m
1238CONFIG_RPCSEC_GSS_KRB5=m 1360CONFIG_RPCSEC_GSS_KRB5=m
@@ -1256,6 +1378,7 @@ CONFIG_CODA_FS=m
1256CONFIG_CODA_FS_OLD_API=y 1378CONFIG_CODA_FS_OLD_API=y
1257CONFIG_AFS_FS=m 1379CONFIG_AFS_FS=m
1258CONFIG_RXRPC=m 1380CONFIG_RXRPC=m
1381# CONFIG_9P_FS is not set
1259 1382
1260# 1383#
1261# Partition Types 1384# Partition Types
@@ -1329,7 +1452,9 @@ CONFIG_NLS_UTF8=m
1329# 1452#
1330# Kernel hacking 1453# Kernel hacking
1331# 1454#
1455# CONFIG_PRINTK_TIME is not set
1332# CONFIG_DEBUG_KERNEL is not set 1456# CONFIG_DEBUG_KERNEL is not set
1457CONFIG_LOG_BUF_SHIFT=14
1333CONFIG_CROSSCOMPILE=y 1458CONFIG_CROSSCOMPILE=y
1334CONFIG_CMDLINE="" 1459CONFIG_CMDLINE=""
1335 1460
@@ -1352,6 +1477,7 @@ CONFIG_CRYPTO_SHA1=m
1352CONFIG_CRYPTO_SHA256=m 1477CONFIG_CRYPTO_SHA256=m
1353CONFIG_CRYPTO_SHA512=m 1478CONFIG_CRYPTO_SHA512=m
1354CONFIG_CRYPTO_WP512=m 1479CONFIG_CRYPTO_WP512=m
1480CONFIG_CRYPTO_TGR192=m
1355CONFIG_CRYPTO_DES=m 1481CONFIG_CRYPTO_DES=m
1356CONFIG_CRYPTO_BLOWFISH=m 1482CONFIG_CRYPTO_BLOWFISH=m
1357CONFIG_CRYPTO_TWOFISH=m 1483CONFIG_CRYPTO_TWOFISH=m
@@ -1360,13 +1486,13 @@ CONFIG_CRYPTO_AES=m
1360CONFIG_CRYPTO_CAST5=m 1486CONFIG_CRYPTO_CAST5=m
1361CONFIG_CRYPTO_CAST6=m 1487CONFIG_CRYPTO_CAST6=m
1362CONFIG_CRYPTO_TEA=m 1488CONFIG_CRYPTO_TEA=m
1363# CONFIG_CRYPTO_ARC4 is not set 1489CONFIG_CRYPTO_ARC4=m
1364CONFIG_CRYPTO_KHAZAD=m 1490CONFIG_CRYPTO_KHAZAD=m
1365CONFIG_CRYPTO_ANUBIS=m 1491CONFIG_CRYPTO_ANUBIS=m
1366CONFIG_CRYPTO_DEFLATE=m 1492CONFIG_CRYPTO_DEFLATE=m
1367CONFIG_CRYPTO_MICHAEL_MIC=m 1493CONFIG_CRYPTO_MICHAEL_MIC=m
1368# CONFIG_CRYPTO_CRC32C is not set 1494CONFIG_CRYPTO_CRC32C=m
1369CONFIG_CRYPTO_TEST=m 1495# CONFIG_CRYPTO_TEST is not set
1370 1496
1371# 1497#
1372# Hardware crypto devices 1498# Hardware crypto devices
@@ -1376,9 +1502,12 @@ CONFIG_CRYPTO_TEST=m
1376# Library routines 1502# Library routines
1377# 1503#
1378CONFIG_CRC_CCITT=m 1504CONFIG_CRC_CCITT=m
1505CONFIG_CRC16=m
1379CONFIG_CRC32=y 1506CONFIG_CRC32=y
1380# CONFIG_LIBCRC32C is not set 1507CONFIG_LIBCRC32C=m
1381CONFIG_ZLIB_INFLATE=m 1508CONFIG_ZLIB_INFLATE=m
1382CONFIG_ZLIB_DEFLATE=m 1509CONFIG_ZLIB_DEFLATE=m
1383CONFIG_GENERIC_HARDIRQS=y 1510CONFIG_TEXTSEARCH=y
1384CONFIG_GENERIC_IRQ_PROBE=y 1511CONFIG_TEXTSEARCH_KMP=m
1512CONFIG_TEXTSEARCH_BM=m
1513CONFIG_TEXTSEARCH_FSM=m
diff --git a/arch/mips/configs/sb1250-swarm_defconfig b/arch/mips/configs/sb1250-swarm_defconfig
index 1dc935f37582..4365d9c8c42e 100644
--- a/arch/mips/configs/sb1250-swarm_defconfig
+++ b/arch/mips/configs/sb1250-swarm_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:10 2005 4# Thu Oct 20 22:27:05 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,30 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_LOCK_KERNEL=y 13CONFIG_LOCK_KERNEL=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=15 27CONFIG_HOTPLUG=y
29# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_CPUSETS=y
31CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 32CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 33CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 34# CONFIG_KALLSYMS_EXTRA_PASS is not set
35CONFIG_PRINTK=y
36CONFIG_BUG=y
37CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 38CONFIG_FUTEX=y
36CONFIG_EPOLL=y 39CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 40# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +44,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 44CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 45CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 46# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0
44 48
45# 49#
46# Loadable module support 50# Loadable module support
@@ -57,32 +61,49 @@ CONFIG_STOP_MACHINE=y
57# 61#
58# Machine selection 62# Machine selection
59# 63#
60# CONFIG_MACH_JAZZ is not set 64# CONFIG_MIPS_MTX1 is not set
61# CONFIG_MACH_VR41XX is not set 65# CONFIG_MIPS_BOSPORUS is not set
62# CONFIG_TOSHIBA_JMR3927 is not set 66# CONFIG_MIPS_PB1000 is not set
67# CONFIG_MIPS_PB1100 is not set
68# CONFIG_MIPS_PB1500 is not set
69# CONFIG_MIPS_PB1550 is not set
70# CONFIG_MIPS_PB1200 is not set
71# CONFIG_MIPS_DB1000 is not set
72# CONFIG_MIPS_DB1100 is not set
73# CONFIG_MIPS_DB1500 is not set
74# CONFIG_MIPS_DB1550 is not set
75# CONFIG_MIPS_DB1200 is not set
76# CONFIG_MIPS_MIRAGE is not set
63# CONFIG_MIPS_COBALT is not set 77# CONFIG_MIPS_COBALT is not set
64# CONFIG_MACH_DECSTATION is not set 78# CONFIG_MACH_DECSTATION is not set
65# CONFIG_MIPS_EV64120 is not set 79# CONFIG_MIPS_EV64120 is not set
66# CONFIG_MIPS_EV96100 is not set 80# CONFIG_MIPS_EV96100 is not set
67# CONFIG_MIPS_IVR is not set 81# CONFIG_MIPS_IVR is not set
68# CONFIG_LASAT is not set
69# CONFIG_MIPS_ITE8172 is not set 82# CONFIG_MIPS_ITE8172 is not set
83# CONFIG_MACH_JAZZ is not set
84# CONFIG_LASAT is not set
70# CONFIG_MIPS_ATLAS is not set 85# CONFIG_MIPS_ATLAS is not set
71# CONFIG_MIPS_MALTA is not set 86# CONFIG_MIPS_MALTA is not set
72# CONFIG_MIPS_SEAD is not set 87# CONFIG_MIPS_SEAD is not set
88# CONFIG_MIPS_SIM is not set
89# CONFIG_MOMENCO_JAGUAR_ATX is not set
73# CONFIG_MOMENCO_OCELOT is not set 90# CONFIG_MOMENCO_OCELOT is not set
74# CONFIG_MOMENCO_OCELOT_G is not set
75# CONFIG_MOMENCO_OCELOT_C is not set
76# CONFIG_MOMENCO_OCELOT_3 is not set 91# CONFIG_MOMENCO_OCELOT_3 is not set
77# CONFIG_MOMENCO_JAGUAR_ATX is not set 92# CONFIG_MOMENCO_OCELOT_C is not set
78# CONFIG_PMC_YOSEMITE is not set 93# CONFIG_MOMENCO_OCELOT_G is not set
94# CONFIG_MIPS_XXS1500 is not set
95# CONFIG_PNX8550_V2PCI is not set
96# CONFIG_PNX8550_JBS is not set
79# CONFIG_DDB5074 is not set 97# CONFIG_DDB5074 is not set
80# CONFIG_DDB5476 is not set 98# CONFIG_DDB5476 is not set
81# CONFIG_DDB5477 is not set 99# CONFIG_DDB5477 is not set
82# CONFIG_NEC_OSPREY is not set 100# CONFIG_MACH_VR41XX is not set
101# CONFIG_PMC_YOSEMITE is not set
102# CONFIG_QEMU is not set
83# CONFIG_SGI_IP22 is not set 103# CONFIG_SGI_IP22 is not set
84# CONFIG_SOC_AU1X00 is not set 104# CONFIG_SGI_IP27 is not set
85CONFIG_SIBYTE_SB1xxx_SOC=y 105# CONFIG_SGI_IP32 is not set
106# CONFIG_SIBYTE_BIGSUR is not set
86CONFIG_SIBYTE_SWARM=y 107CONFIG_SIBYTE_SWARM=y
87# CONFIG_SIBYTE_SENTOSA is not set 108# CONFIG_SIBYTE_SENTOSA is not set
88# CONFIG_SIBYTE_RHONE is not set 109# CONFIG_SIBYTE_RHONE is not set
@@ -91,9 +112,12 @@ CONFIG_SIBYTE_SWARM=y
91# CONFIG_SIBYTE_LITTLESUR is not set 112# CONFIG_SIBYTE_LITTLESUR is not set
92# CONFIG_SIBYTE_CRHINE is not set 113# CONFIG_SIBYTE_CRHINE is not set
93# CONFIG_SIBYTE_CRHONE is not set 114# CONFIG_SIBYTE_CRHONE is not set
94# CONFIG_SIBYTE_UNKNOWN is not set 115# CONFIG_SNI_RM200_PCI is not set
95CONFIG_SIBYTE_BOARD=y 116# CONFIG_TOSHIBA_JMR3927 is not set
117# CONFIG_TOSHIBA_RBTX4927 is not set
118# CONFIG_TOSHIBA_RBTX4938 is not set
96CONFIG_SIBYTE_SB1250=y 119CONFIG_SIBYTE_SB1250=y
120CONFIG_SIBYTE_SB1xxx_SOC=y
97CONFIG_CPU_SB1_PASS_1=y 121CONFIG_CPU_SB1_PASS_1=y
98# CONFIG_CPU_SB1_PASS_2_1250 is not set 122# CONFIG_CPU_SB1_PASS_2_1250 is not set
99# CONFIG_CPU_SB1_PASS_2_2 is not set 123# CONFIG_CPU_SB1_PASS_2_2 is not set
@@ -102,18 +126,20 @@ CONFIG_CPU_SB1_PASS_1=y
102# CONFIG_CPU_SB1_PASS_3 is not set 126# CONFIG_CPU_SB1_PASS_3 is not set
103CONFIG_SIBYTE_HAS_LDT=y 127CONFIG_SIBYTE_HAS_LDT=y
104# CONFIG_SIMULATION is not set 128# CONFIG_SIMULATION is not set
129# CONFIG_CONFIG_SB1_CEX_ALWAYS_FATAL is not set
130# CONFIG_CONFIG_SB1_CERR_STALL is not set
105CONFIG_SIBYTE_CFE=y 131CONFIG_SIBYTE_CFE=y
106# CONFIG_SIBYTE_CFE_CONSOLE is not set 132# CONFIG_SIBYTE_CFE_CONSOLE is not set
107# CONFIG_SIBYTE_BUS_WATCHER is not set 133# CONFIG_SIBYTE_BUS_WATCHER is not set
108# CONFIG_SIBYTE_SB1250_PROF is not set 134# CONFIG_SIBYTE_SB1250_PROF is not set
109# CONFIG_SIBYTE_TBPROF is not set 135# CONFIG_SIBYTE_TBPROF is not set
110# CONFIG_SNI_RM200_PCI is not set
111# CONFIG_TOSHIBA_RBTX4927 is not set
112CONFIG_RWSEM_GENERIC_SPINLOCK=y 136CONFIG_RWSEM_GENERIC_SPINLOCK=y
113CONFIG_GENERIC_CALIBRATE_DELAY=y 137CONFIG_GENERIC_CALIBRATE_DELAY=y
114CONFIG_HAVE_DEC_LOCK=y
115CONFIG_DMA_COHERENT=y 138CONFIG_DMA_COHERENT=y
139CONFIG_CPU_BIG_ENDIAN=y
116# CONFIG_CPU_LITTLE_ENDIAN is not set 140# CONFIG_CPU_LITTLE_ENDIAN is not set
141CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
142CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
117CONFIG_SWAP_IO_SPACE=y 143CONFIG_SWAP_IO_SPACE=y
118CONFIG_BOOT_ELF32=y 144CONFIG_BOOT_ELF32=y
119CONFIG_MIPS_L1_CACHE_SHIFT=5 145CONFIG_MIPS_L1_CACHE_SHIFT=5
@@ -121,8 +147,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
121# 147#
122# CPU selection 148# CPU selection
123# 149#
124# CONFIG_CPU_MIPS32 is not set 150# CONFIG_CPU_MIPS32_R1 is not set
125# CONFIG_CPU_MIPS64 is not set 151# CONFIG_CPU_MIPS32_R2 is not set
152# CONFIG_CPU_MIPS64_R1 is not set
153# CONFIG_CPU_MIPS64_R2 is not set
126# CONFIG_CPU_R3000 is not set 154# CONFIG_CPU_R3000 is not set
127# CONFIG_CPU_TX39XX is not set 155# CONFIG_CPU_TX39XX is not set
128# CONFIG_CPU_VR41XX is not set 156# CONFIG_CPU_VR41XX is not set
@@ -138,22 +166,46 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
138# CONFIG_CPU_RM7000 is not set 166# CONFIG_CPU_RM7000 is not set
139# CONFIG_CPU_RM9000 is not set 167# CONFIG_CPU_RM9000 is not set
140CONFIG_CPU_SB1=y 168CONFIG_CPU_SB1=y
169CONFIG_SYS_HAS_CPU_SB1=y
170CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
171CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
172CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
173CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
174
175#
176# Kernel type
177#
178# CONFIG_32BIT is not set
179CONFIG_64BIT=y
141CONFIG_PAGE_SIZE_4KB=y 180CONFIG_PAGE_SIZE_4KB=y
142# CONFIG_PAGE_SIZE_8KB is not set 181# CONFIG_PAGE_SIZE_8KB is not set
143# CONFIG_PAGE_SIZE_16KB is not set 182# CONFIG_PAGE_SIZE_16KB is not set
144# CONFIG_PAGE_SIZE_64KB is not set 183# CONFIG_PAGE_SIZE_64KB is not set
145# CONFIG_SIBYTE_DMA_PAGEOPS is not set 184# CONFIG_SIBYTE_DMA_PAGEOPS is not set
146CONFIG_CPU_HAS_PREFETCH=y 185CONFIG_CPU_HAS_PREFETCH=y
186# CONFIG_MIPS_MT is not set
147CONFIG_SB1_PASS_1_WORKAROUNDS=y 187CONFIG_SB1_PASS_1_WORKAROUNDS=y
148# CONFIG_64BIT_PHYS_ADDR is not set
149# CONFIG_CPU_ADVANCED is not set
150CONFIG_CPU_HAS_LLSC=y 188CONFIG_CPU_HAS_LLSC=y
151CONFIG_CPU_HAS_LLDSCD=y 189CONFIG_CPU_HAS_LLDSCD=y
152CONFIG_CPU_HAS_SYNC=y 190CONFIG_CPU_HAS_SYNC=y
153# CONFIG_HIGHMEM is not set 191CONFIG_GENERIC_HARDIRQS=y
192CONFIG_GENERIC_IRQ_PROBE=y
193CONFIG_CPU_SUPPORTS_HIGHMEM=y
194CONFIG_SYS_SUPPORTS_HIGHMEM=y
195CONFIG_ARCH_FLATMEM_ENABLE=y
196CONFIG_SELECT_MEMORY_MODEL=y
197CONFIG_FLATMEM_MANUAL=y
198# CONFIG_DISCONTIGMEM_MANUAL is not set
199# CONFIG_SPARSEMEM_MANUAL is not set
200CONFIG_FLATMEM=y
201CONFIG_FLAT_NODE_MEM_MAP=y
202# CONFIG_SPARSEMEM_STATIC is not set
154CONFIG_SMP=y 203CONFIG_SMP=y
155CONFIG_NR_CPUS=2 204CONFIG_NR_CPUS=2
205CONFIG_PREEMPT_NONE=y
206# CONFIG_PREEMPT_VOLUNTARY is not set
156# CONFIG_PREEMPT is not set 207# CONFIG_PREEMPT is not set
208CONFIG_PREEMPT_BKL=y
157 209
158# 210#
159# Bus options (PCI, PCMCIA, EISA, ISA, TC) 211# Bus options (PCI, PCMCIA, EISA, ISA, TC)
@@ -161,7 +213,6 @@ CONFIG_NR_CPUS=2
161CONFIG_HW_HAS_PCI=y 213CONFIG_HW_HAS_PCI=y
162CONFIG_PCI=y 214CONFIG_PCI=y
163CONFIG_PCI_LEGACY_PROC=y 215CONFIG_PCI_LEGACY_PROC=y
164CONFIG_PCI_NAMES=y
165CONFIG_MMU=y 216CONFIG_MMU=y
166 217
167# 218#
@@ -170,10 +221,6 @@ CONFIG_MMU=y
170# CONFIG_PCCARD is not set 221# CONFIG_PCCARD is not set
171 222
172# 223#
173# PC-card bridges
174#
175
176#
177# PCI Hotplug Support 224# PCI Hotplug Support
178# 225#
179# CONFIG_HOTPLUG_PCI is not set 226# CONFIG_HOTPLUG_PCI is not set
@@ -183,7 +230,86 @@ CONFIG_MMU=y
183# 230#
184CONFIG_BINFMT_ELF=y 231CONFIG_BINFMT_ELF=y
185# CONFIG_BINFMT_MISC is not set 232# CONFIG_BINFMT_MISC is not set
186CONFIG_TRAD_SIGNALS=y 233# CONFIG_BUILD_ELF64 is not set
234CONFIG_MIPS32_COMPAT=y
235CONFIG_COMPAT=y
236CONFIG_MIPS32_O32=y
237# CONFIG_MIPS32_N32 is not set
238CONFIG_BINFMT_ELF32=y
239
240#
241# Networking
242#
243CONFIG_NET=y
244
245#
246# Networking options
247#
248CONFIG_PACKET=y
249CONFIG_PACKET_MMAP=y
250CONFIG_UNIX=y
251CONFIG_XFRM=y
252CONFIG_XFRM_USER=m
253CONFIG_NET_KEY=y
254CONFIG_INET=y
255# CONFIG_IP_MULTICAST is not set
256# CONFIG_IP_ADVANCED_ROUTER is not set
257CONFIG_IP_FIB_HASH=y
258CONFIG_IP_PNP=y
259CONFIG_IP_PNP_DHCP=y
260CONFIG_IP_PNP_BOOTP=y
261# CONFIG_IP_PNP_RARP is not set
262# CONFIG_NET_IPIP is not set
263# CONFIG_NET_IPGRE is not set
264# CONFIG_ARPD is not set
265# CONFIG_SYN_COOKIES is not set
266# CONFIG_INET_AH is not set
267# CONFIG_INET_ESP is not set
268# CONFIG_INET_IPCOMP is not set
269CONFIG_INET_TUNNEL=m
270CONFIG_INET_DIAG=y
271CONFIG_INET_TCP_DIAG=y
272# CONFIG_TCP_CONG_ADVANCED is not set
273CONFIG_TCP_CONG_BIC=y
274# CONFIG_IPV6 is not set
275# CONFIG_NETFILTER is not set
276
277#
278# DCCP Configuration (EXPERIMENTAL)
279#
280# CONFIG_IP_DCCP is not set
281
282#
283# SCTP Configuration (EXPERIMENTAL)
284#
285# CONFIG_IP_SCTP is not set
286# CONFIG_ATM is not set
287# CONFIG_BRIDGE is not set
288# CONFIG_VLAN_8021Q is not set
289# CONFIG_DECNET is not set
290# CONFIG_LLC2 is not set
291# CONFIG_IPX is not set
292# CONFIG_ATALK is not set
293# CONFIG_X25 is not set
294# CONFIG_LAPB is not set
295# CONFIG_NET_DIVERT is not set
296# CONFIG_ECONET is not set
297# CONFIG_WAN_ROUTER is not set
298# CONFIG_NET_SCHED is not set
299# CONFIG_NET_CLS_ROUTE is not set
300
301#
302# Network testing
303#
304# CONFIG_NET_PKTGEN is not set
305# CONFIG_HAMRADIO is not set
306# CONFIG_IRDA is not set
307# CONFIG_BT is not set
308CONFIG_IEEE80211=m
309# CONFIG_IEEE80211_DEBUG is not set
310CONFIG_IEEE80211_CRYPT_WEP=m
311CONFIG_IEEE80211_CRYPT_CCMP=m
312CONFIG_IEEE80211_CRYPT_TKIP=m
187 313
188# 314#
189# Device Drivers 315# Device Drivers
@@ -194,7 +320,12 @@ CONFIG_TRAD_SIGNALS=y
194# 320#
195CONFIG_STANDALONE=y 321CONFIG_STANDALONE=y
196CONFIG_PREVENT_FIRMWARE_BUILD=y 322CONFIG_PREVENT_FIRMWARE_BUILD=y
197# CONFIG_FW_LOADER is not set 323CONFIG_FW_LOADER=m
324
325#
326# Connector - unified userspace <-> kernelspace linker
327#
328CONFIG_CONNECTOR=m
198 329
199# 330#
200# Memory Technology Devices (MTD) 331# Memory Technology Devices (MTD)
@@ -213,7 +344,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
213# 344#
214# Block devices 345# Block devices
215# 346#
216# CONFIG_BLK_DEV_FD is not set
217# CONFIG_BLK_CPQ_DA is not set 347# CONFIG_BLK_CPQ_DA is not set
218# CONFIG_BLK_CPQ_CISS_DA is not set 348# CONFIG_BLK_CPQ_CISS_DA is not set
219# CONFIG_BLK_DEV_DAC960 is not set 349# CONFIG_BLK_DEV_DAC960 is not set
@@ -226,8 +356,6 @@ CONFIG_BLK_DEV_RAM=y
226CONFIG_BLK_DEV_RAM_COUNT=16 356CONFIG_BLK_DEV_RAM_COUNT=16
227CONFIG_BLK_DEV_RAM_SIZE=9220 357CONFIG_BLK_DEV_RAM_SIZE=9220
228CONFIG_BLK_DEV_INITRD=y 358CONFIG_BLK_DEV_INITRD=y
229CONFIG_INITRAMFS_SOURCE=""
230# CONFIG_LBD is not set
231CONFIG_CDROM_PKTCDVD=m 359CONFIG_CDROM_PKTCDVD=m
232CONFIG_CDROM_PKTCDVD_BUFFERS=8 360CONFIG_CDROM_PKTCDVD_BUFFERS=8
233# CONFIG_CDROM_PKTCDVD_WCACHE is not set 361# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -263,7 +391,7 @@ CONFIG_BLK_DEV_IDEFLOPPY=y
263# 391#
264CONFIG_IDE_GENERIC=y 392CONFIG_IDE_GENERIC=y
265# CONFIG_BLK_DEV_IDEPCI is not set 393# CONFIG_BLK_DEV_IDEPCI is not set
266CONFIG_BLK_DEV_IDE_SWARM=y 394# CONFIG_BLK_DEV_IDE_SWARM is not set
267# CONFIG_IDE_ARM is not set 395# CONFIG_IDE_ARM is not set
268# CONFIG_BLK_DEV_IDEDMA is not set 396# CONFIG_BLK_DEV_IDEDMA is not set
269# CONFIG_IDEDMA_AUTO is not set 397# CONFIG_IDEDMA_AUTO is not set
@@ -272,6 +400,7 @@ CONFIG_BLK_DEV_IDE_SWARM=y
272# 400#
273# SCSI device support 401# SCSI device support
274# 402#
403CONFIG_RAID_ATTRS=m
275# CONFIG_SCSI is not set 404# CONFIG_SCSI is not set
276 405
277# 406#
@@ -282,6 +411,7 @@ CONFIG_BLK_DEV_IDE_SWARM=y
282# 411#
283# Fusion MPT device support 412# Fusion MPT device support
284# 413#
414# CONFIG_FUSION is not set
285 415
286# 416#
287# IEEE 1394 (FireWire) support 417# IEEE 1394 (FireWire) support
@@ -294,78 +424,13 @@ CONFIG_BLK_DEV_IDE_SWARM=y
294# CONFIG_I2O is not set 424# CONFIG_I2O is not set
295 425
296# 426#
297# Networking support 427# Network device support
298# 428#
299CONFIG_NET=y
300
301#
302# Networking options
303#
304CONFIG_PACKET=y
305CONFIG_PACKET_MMAP=y
306CONFIG_NETLINK_DEV=y
307CONFIG_UNIX=y
308CONFIG_NET_KEY=y
309CONFIG_INET=y
310# CONFIG_IP_MULTICAST is not set
311# CONFIG_IP_ADVANCED_ROUTER is not set
312CONFIG_IP_PNP=y
313CONFIG_IP_PNP_DHCP=y
314CONFIG_IP_PNP_BOOTP=y
315# CONFIG_IP_PNP_RARP is not set
316# CONFIG_NET_IPIP is not set
317# CONFIG_NET_IPGRE is not set
318# CONFIG_ARPD is not set
319# CONFIG_SYN_COOKIES is not set
320# CONFIG_INET_AH is not set
321# CONFIG_INET_ESP is not set
322# CONFIG_INET_IPCOMP is not set
323CONFIG_INET_TUNNEL=m
324CONFIG_IP_TCPDIAG=m
325# CONFIG_IP_TCPDIAG_IPV6 is not set
326# CONFIG_IPV6 is not set
327# CONFIG_NETFILTER is not set
328CONFIG_XFRM=y
329CONFIG_XFRM_USER=m
330
331#
332# SCTP Configuration (EXPERIMENTAL)
333#
334# CONFIG_IP_SCTP is not set
335# CONFIG_ATM is not set
336# CONFIG_BRIDGE is not set
337# CONFIG_VLAN_8021Q is not set
338# CONFIG_DECNET is not set
339# CONFIG_LLC2 is not set
340# CONFIG_IPX is not set
341# CONFIG_ATALK is not set
342# CONFIG_X25 is not set
343# CONFIG_LAPB is not set
344# CONFIG_NET_DIVERT is not set
345# CONFIG_ECONET is not set
346# CONFIG_WAN_ROUTER is not set
347
348#
349# QoS and/or fair queueing
350#
351# CONFIG_NET_SCHED is not set
352# CONFIG_NET_CLS_ROUTE is not set
353
354#
355# Network testing
356#
357# CONFIG_NET_PKTGEN is not set
358# CONFIG_NETPOLL is not set
359# CONFIG_NET_POLL_CONTROLLER is not set
360# CONFIG_HAMRADIO is not set
361# CONFIG_IRDA is not set
362# CONFIG_BT is not set
363CONFIG_NETDEVICES=y 429CONFIG_NETDEVICES=y
364# CONFIG_DUMMY is not set 430# CONFIG_DUMMY is not set
365# CONFIG_BONDING is not set 431# CONFIG_BONDING is not set
366# CONFIG_EQUALIZER is not set 432# CONFIG_EQUALIZER is not set
367# CONFIG_TUN is not set 433# CONFIG_TUN is not set
368# CONFIG_ETHERTAP is not set
369 434
370# 435#
371# ARCnet devices 436# ARCnet devices
@@ -373,6 +438,21 @@ CONFIG_NETDEVICES=y
373# CONFIG_ARCNET is not set 438# CONFIG_ARCNET is not set
374 439
375# 440#
441# PHY device support
442#
443CONFIG_PHYLIB=m
444CONFIG_PHYCONTROL=y
445
446#
447# MII PHY device drivers
448#
449CONFIG_MARVELL_PHY=m
450CONFIG_DAVICOM_PHY=m
451CONFIG_QSEMI_PHY=m
452CONFIG_LXT_PHY=m
453CONFIG_CICADA_PHY=m
454
455#
376# Ethernet (10 or 100Mbit) 456# Ethernet (10 or 100Mbit)
377# 457#
378CONFIG_NET_ETHERNET=y 458CONFIG_NET_ETHERNET=y
@@ -399,12 +479,16 @@ CONFIG_MII=y
399# CONFIG_YELLOWFIN is not set 479# CONFIG_YELLOWFIN is not set
400# CONFIG_R8169 is not set 480# CONFIG_R8169 is not set
401CONFIG_NET_SB1250_MAC=y 481CONFIG_NET_SB1250_MAC=y
482# CONFIG_SIS190 is not set
483# CONFIG_SKGE is not set
402# CONFIG_SK98LIN is not set 484# CONFIG_SK98LIN is not set
403# CONFIG_TIGON3 is not set 485# CONFIG_TIGON3 is not set
486# CONFIG_BNX2 is not set
404 487
405# 488#
406# Ethernet (10000 Mbit) 489# Ethernet (10000 Mbit)
407# 490#
491# CONFIG_CHELSIO_T1 is not set
408# CONFIG_IXGB is not set 492# CONFIG_IXGB is not set
409# CONFIG_S2IO is not set 493# CONFIG_S2IO is not set
410 494
@@ -417,6 +501,8 @@ CONFIG_NET_SB1250_MAC=y
417# Wireless LAN (non-hamradio) 501# Wireless LAN (non-hamradio)
418# 502#
419# CONFIG_NET_RADIO is not set 503# CONFIG_NET_RADIO is not set
504# CONFIG_IPW_DEBUG is not set
505CONFIG_IPW2200=m
420 506
421# 507#
422# Wan interfaces 508# Wan interfaces
@@ -428,6 +514,8 @@ CONFIG_NET_SB1250_MAC=y
428# CONFIG_SLIP is not set 514# CONFIG_SLIP is not set
429# CONFIG_SHAPER is not set 515# CONFIG_SHAPER is not set
430# CONFIG_NETCONSOLE is not set 516# CONFIG_NETCONSOLE is not set
517# CONFIG_NETPOLL is not set
518# CONFIG_NET_POLL_CONTROLLER is not set
431 519
432# 520#
433# ISDN subsystem 521# ISDN subsystem
@@ -445,25 +533,15 @@ CONFIG_NET_SB1250_MAC=y
445# CONFIG_INPUT is not set 533# CONFIG_INPUT is not set
446 534
447# 535#
448# Userland interfaces 536# Hardware I/O ports
449#
450
451#
452# Input I/O drivers
453# 537#
454# CONFIG_GAMEPORT is not set
455CONFIG_SOUND_GAMEPORT=y
456CONFIG_SERIO=y 538CONFIG_SERIO=y
457# CONFIG_SERIO_I8042 is not set 539# CONFIG_SERIO_I8042 is not set
458CONFIG_SERIO_SERPORT=y 540CONFIG_SERIO_SERPORT=y
459# CONFIG_SERIO_CT82C710 is not set
460# CONFIG_SERIO_PCIPS2 is not set 541# CONFIG_SERIO_PCIPS2 is not set
461# CONFIG_SERIO_LIBPS2 is not set 542# CONFIG_SERIO_LIBPS2 is not set
462CONFIG_SERIO_RAW=m 543CONFIG_SERIO_RAW=m
463 544# CONFIG_GAMEPORT is not set
464#
465# Input Device Drivers
466#
467 545
468# 546#
469# Character devices 547# Character devices
@@ -472,11 +550,13 @@ CONFIG_SERIO_RAW=m
472CONFIG_SERIAL_NONSTANDARD=y 550CONFIG_SERIAL_NONSTANDARD=y
473# CONFIG_ROCKETPORT is not set 551# CONFIG_ROCKETPORT is not set
474# CONFIG_CYCLADES is not set 552# CONFIG_CYCLADES is not set
553# CONFIG_DIGIEPCA is not set
475# CONFIG_MOXA_SMARTIO is not set 554# CONFIG_MOXA_SMARTIO is not set
476# CONFIG_ISI is not set 555# CONFIG_ISI is not set
477# CONFIG_SYNCLINK is not set
478# CONFIG_SYNCLINKMP is not set 556# CONFIG_SYNCLINKMP is not set
479# CONFIG_N_HDLC is not set 557# CONFIG_N_HDLC is not set
558# CONFIG_SPECIALIX is not set
559# CONFIG_SX is not set
480# CONFIG_STALDRV is not set 560# CONFIG_STALDRV is not set
481CONFIG_SIBYTE_SB1250_DUART=y 561CONFIG_SIBYTE_SB1250_DUART=y
482CONFIG_SIBYTE_SB1250_DUART_CONSOLE=y 562CONFIG_SIBYTE_SB1250_DUART_CONSOLE=y
@@ -489,6 +569,7 @@ CONFIG_SIBYTE_SB1250_DUART_CONSOLE=y
489# 569#
490# Non-8250 serial port support 570# Non-8250 serial port support
491# 571#
572# CONFIG_SERIAL_JSM is not set
492CONFIG_UNIX98_PTYS=y 573CONFIG_UNIX98_PTYS=y
493CONFIG_LEGACY_PTYS=y 574CONFIG_LEGACY_PTYS=y
494CONFIG_LEGACY_PTY_COUNT=256 575CONFIG_LEGACY_PTY_COUNT=256
@@ -515,6 +596,11 @@ CONFIG_LEGACY_PTY_COUNT=256
515# CONFIG_RAW_DRIVER is not set 596# CONFIG_RAW_DRIVER is not set
516 597
517# 598#
599# TPM devices
600#
601# CONFIG_TCG_TPM is not set
602
603#
518# I2C support 604# I2C support
519# 605#
520# CONFIG_I2C is not set 606# CONFIG_I2C is not set
@@ -525,10 +611,20 @@ CONFIG_LEGACY_PTY_COUNT=256
525# CONFIG_W1 is not set 611# CONFIG_W1 is not set
526 612
527# 613#
614# Hardware Monitoring support
615#
616# CONFIG_HWMON is not set
617# CONFIG_HWMON_VID is not set
618
619#
528# Misc devices 620# Misc devices
529# 621#
530 622
531# 623#
624# Multimedia Capabilities Port drivers
625#
626
627#
532# Multimedia devices 628# Multimedia devices
533# 629#
534# CONFIG_VIDEO_DEV is not set 630# CONFIG_VIDEO_DEV is not set
@@ -542,7 +638,6 @@ CONFIG_LEGACY_PTY_COUNT=256
542# Graphics support 638# Graphics support
543# 639#
544# CONFIG_FB is not set 640# CONFIG_FB is not set
545# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
546 641
547# 642#
548# Sound 643# Sound
@@ -552,13 +647,9 @@ CONFIG_LEGACY_PTY_COUNT=256
552# 647#
553# USB support 648# USB support
554# 649#
555# CONFIG_USB is not set
556CONFIG_USB_ARCH_HAS_HCD=y 650CONFIG_USB_ARCH_HAS_HCD=y
557CONFIG_USB_ARCH_HAS_OHCI=y 651CONFIG_USB_ARCH_HAS_OHCI=y
558 652# CONFIG_USB is not set
559#
560# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
561#
562 653
563# 654#
564# USB Gadget Support 655# USB Gadget Support
@@ -576,12 +667,17 @@ CONFIG_USB_ARCH_HAS_OHCI=y
576# CONFIG_INFINIBAND is not set 667# CONFIG_INFINIBAND is not set
577 668
578# 669#
670# SN Devices
671#
672
673#
579# File systems 674# File systems
580# 675#
581CONFIG_EXT2_FS=y 676CONFIG_EXT2_FS=y
582CONFIG_EXT2_FS_XATTR=y 677CONFIG_EXT2_FS_XATTR=y
583CONFIG_EXT2_FS_POSIX_ACL=y 678CONFIG_EXT2_FS_POSIX_ACL=y
584CONFIG_EXT2_FS_SECURITY=y 679CONFIG_EXT2_FS_SECURITY=y
680# CONFIG_EXT2_FS_XIP is not set
585# CONFIG_EXT3_FS is not set 681# CONFIG_EXT3_FS is not set
586# CONFIG_JBD is not set 682# CONFIG_JBD is not set
587CONFIG_FS_MBCACHE=y 683CONFIG_FS_MBCACHE=y
@@ -591,10 +687,12 @@ CONFIG_FS_POSIX_ACL=y
591# CONFIG_XFS_FS is not set 687# CONFIG_XFS_FS is not set
592# CONFIG_MINIX_FS is not set 688# CONFIG_MINIX_FS is not set
593# CONFIG_ROMFS_FS is not set 689# CONFIG_ROMFS_FS is not set
690CONFIG_INOTIFY=y
594# CONFIG_QUOTA is not set 691# CONFIG_QUOTA is not set
595CONFIG_DNOTIFY=y 692CONFIG_DNOTIFY=y
596# CONFIG_AUTOFS_FS is not set 693# CONFIG_AUTOFS_FS is not set
597# CONFIG_AUTOFS4_FS is not set 694# CONFIG_AUTOFS4_FS is not set
695CONFIG_FUSE_FS=m
598 696
599# 697#
600# CD-ROM/DVD Filesystems 698# CD-ROM/DVD Filesystems
@@ -615,11 +713,10 @@ CONFIG_DNOTIFY=y
615CONFIG_PROC_FS=y 713CONFIG_PROC_FS=y
616CONFIG_PROC_KCORE=y 714CONFIG_PROC_KCORE=y
617CONFIG_SYSFS=y 715CONFIG_SYSFS=y
618# CONFIG_DEVFS_FS is not set
619# CONFIG_DEVPTS_FS_XATTR is not set
620# CONFIG_TMPFS is not set 716# CONFIG_TMPFS is not set
621# CONFIG_HUGETLB_PAGE is not set 717# CONFIG_HUGETLB_PAGE is not set
622CONFIG_RAMFS=y 718CONFIG_RAMFS=y
719CONFIG_RELAYFS_FS=m
623 720
624# 721#
625# Miscellaneous filesystems 722# Miscellaneous filesystems
@@ -643,13 +740,14 @@ CONFIG_RAMFS=y
643# 740#
644CONFIG_NFS_FS=y 741CONFIG_NFS_FS=y
645CONFIG_NFS_V3=y 742CONFIG_NFS_V3=y
743# CONFIG_NFS_V3_ACL is not set
646# CONFIG_NFS_V4 is not set 744# CONFIG_NFS_V4 is not set
647# CONFIG_NFS_DIRECTIO is not set 745# CONFIG_NFS_DIRECTIO is not set
648# CONFIG_NFSD is not set 746# CONFIG_NFSD is not set
649CONFIG_ROOT_NFS=y 747CONFIG_ROOT_NFS=y
650CONFIG_LOCKD=y 748CONFIG_LOCKD=y
651CONFIG_LOCKD_V4=y 749CONFIG_LOCKD_V4=y
652# CONFIG_EXPORTFS is not set 750CONFIG_NFS_COMMON=y
653CONFIG_SUNRPC=y 751CONFIG_SUNRPC=y
654# CONFIG_RPCSEC_GSS_KRB5 is not set 752# CONFIG_RPCSEC_GSS_KRB5 is not set
655# CONFIG_RPCSEC_GSS_SPKM3 is not set 753# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -658,6 +756,7 @@ CONFIG_SUNRPC=y
658# CONFIG_NCP_FS is not set 756# CONFIG_NCP_FS is not set
659# CONFIG_CODA_FS is not set 757# CONFIG_CODA_FS is not set
660# CONFIG_AFS_FS is not set 758# CONFIG_AFS_FS is not set
759# CONFIG_9P_FS is not set
661 760
662# 761#
663# Partition Types 762# Partition Types
@@ -678,7 +777,9 @@ CONFIG_MSDOS_PARTITION=y
678# 777#
679# Kernel hacking 778# Kernel hacking
680# 779#
780# CONFIG_PRINTK_TIME is not set
681# CONFIG_DEBUG_KERNEL is not set 781# CONFIG_DEBUG_KERNEL is not set
782CONFIG_LOG_BUF_SHIFT=15
682CONFIG_CROSSCOMPILE=y 783CONFIG_CROSSCOMPILE=y
683CONFIG_CMDLINE="" 784CONFIG_CMDLINE=""
684# CONFIG_SB1XXX_CORELIS is not set 785# CONFIG_SB1XXX_CORELIS is not set
@@ -695,27 +796,28 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
695# 796#
696CONFIG_CRYPTO=y 797CONFIG_CRYPTO=y
697CONFIG_CRYPTO_HMAC=y 798CONFIG_CRYPTO_HMAC=y
698CONFIG_CRYPTO_NULL=y 799CONFIG_CRYPTO_NULL=m
699CONFIG_CRYPTO_MD4=y 800CONFIG_CRYPTO_MD4=m
700CONFIG_CRYPTO_MD5=y 801CONFIG_CRYPTO_MD5=m
701CONFIG_CRYPTO_SHA1=y 802CONFIG_CRYPTO_SHA1=m
702CONFIG_CRYPTO_SHA256=y 803CONFIG_CRYPTO_SHA256=m
703CONFIG_CRYPTO_SHA512=y 804CONFIG_CRYPTO_SHA512=m
704CONFIG_CRYPTO_WP512=m 805CONFIG_CRYPTO_WP512=m
705CONFIG_CRYPTO_DES=y 806CONFIG_CRYPTO_TGR192=m
706CONFIG_CRYPTO_BLOWFISH=y 807CONFIG_CRYPTO_DES=m
707CONFIG_CRYPTO_TWOFISH=y 808CONFIG_CRYPTO_BLOWFISH=m
708CONFIG_CRYPTO_SERPENT=y 809CONFIG_CRYPTO_TWOFISH=m
810CONFIG_CRYPTO_SERPENT=m
709CONFIG_CRYPTO_AES=m 811CONFIG_CRYPTO_AES=m
710# CONFIG_CRYPTO_CAST5 is not set 812CONFIG_CRYPTO_CAST5=m
711# CONFIG_CRYPTO_CAST6 is not set 813CONFIG_CRYPTO_CAST6=m
712CONFIG_CRYPTO_TEA=m 814CONFIG_CRYPTO_TEA=m
713# CONFIG_CRYPTO_ARC4 is not set 815CONFIG_CRYPTO_ARC4=m
714CONFIG_CRYPTO_KHAZAD=m 816CONFIG_CRYPTO_KHAZAD=m
715CONFIG_CRYPTO_ANUBIS=m 817CONFIG_CRYPTO_ANUBIS=m
716CONFIG_CRYPTO_DEFLATE=y 818CONFIG_CRYPTO_DEFLATE=m
717CONFIG_CRYPTO_MICHAEL_MIC=y 819CONFIG_CRYPTO_MICHAEL_MIC=m
718# CONFIG_CRYPTO_CRC32C is not set 820CONFIG_CRYPTO_CRC32C=m
719# CONFIG_CRYPTO_TEST is not set 821# CONFIG_CRYPTO_TEST is not set
720 822
721# 823#
@@ -726,9 +828,8 @@ CONFIG_CRYPTO_MICHAEL_MIC=y
726# Library routines 828# Library routines
727# 829#
728# CONFIG_CRC_CCITT is not set 830# CONFIG_CRC_CCITT is not set
831CONFIG_CRC16=m
729CONFIG_CRC32=y 832CONFIG_CRC32=y
730# CONFIG_LIBCRC32C is not set 833CONFIG_LIBCRC32C=m
731CONFIG_ZLIB_INFLATE=y 834CONFIG_ZLIB_INFLATE=m
732CONFIG_ZLIB_DEFLATE=y 835CONFIG_ZLIB_DEFLATE=m
733CONFIG_GENERIC_HARDIRQS=y
734CONFIG_GENERIC_IRQ_PROBE=y
diff --git a/arch/mips/configs/sead_defconfig b/arch/mips/configs/sead_defconfig
index dd07e866b128..d835f6db1f41 100644
--- a/arch/mips/configs/sead_defconfig
+++ b/arch/mips/configs/sead_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:10 2005 4# Thu Oct 20 22:27:07 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,22 +11,26 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
22CONFIG_SWAP=y 20CONFIG_LOCALVERSION_AUTO=y
23# CONFIG_SYSVIPC is not set 21# CONFIG_SWAP is not set
22CONFIG_SYSVIPC=y
24# CONFIG_BSD_PROCESS_ACCT is not set 23# CONFIG_BSD_PROCESS_ACCT is not set
25CONFIG_SYSCTL=y 24CONFIG_SYSCTL=y
26# CONFIG_AUDIT is not set
27CONFIG_LOG_BUF_SHIFT=14
28# CONFIG_HOTPLUG is not set 25# CONFIG_HOTPLUG is not set
29# CONFIG_IKCONFIG is not set 26# CONFIG_IKCONFIG is not set
27CONFIG_INITRAMFS_SOURCE=""
30CONFIG_EMBEDDED=y 28CONFIG_EMBEDDED=y
31CONFIG_KALLSYMS=y 29CONFIG_KALLSYMS=y
32# CONFIG_KALLSYMS_EXTRA_PASS is not set 30# CONFIG_KALLSYMS_EXTRA_PASS is not set
31CONFIG_PRINTK=y
32CONFIG_BUG=y
33CONFIG_BASE_FULL=y
33CONFIG_FUTEX=y 34CONFIG_FUTEX=y
34CONFIG_EPOLL=y 35CONFIG_EPOLL=y
35# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 36# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -39,6 +40,7 @@ CONFIG_CC_ALIGN_LABELS=0
39CONFIG_CC_ALIGN_LOOPS=0 40CONFIG_CC_ALIGN_LOOPS=0
40CONFIG_CC_ALIGN_JUMPS=0 41CONFIG_CC_ALIGN_JUMPS=0
41# CONFIG_TINY_SHMEM is not set 42# CONFIG_TINY_SHMEM is not set
43CONFIG_BASE_SMALL=0
42 44
43# 45#
44# Loadable module support 46# Loadable module support
@@ -48,40 +50,69 @@ CONFIG_CC_ALIGN_JUMPS=0
48# 50#
49# Machine selection 51# Machine selection
50# 52#
51# CONFIG_MACH_JAZZ is not set 53# CONFIG_MIPS_MTX1 is not set
52# CONFIG_MACH_VR41XX is not set 54# CONFIG_MIPS_BOSPORUS is not set
53# CONFIG_TOSHIBA_JMR3927 is not set 55# CONFIG_MIPS_PB1000 is not set
56# CONFIG_MIPS_PB1100 is not set
57# CONFIG_MIPS_PB1500 is not set
58# CONFIG_MIPS_PB1550 is not set
59# CONFIG_MIPS_PB1200 is not set
60# CONFIG_MIPS_DB1000 is not set
61# CONFIG_MIPS_DB1100 is not set
62# CONFIG_MIPS_DB1500 is not set
63# CONFIG_MIPS_DB1550 is not set
64# CONFIG_MIPS_DB1200 is not set
65# CONFIG_MIPS_MIRAGE is not set
54# CONFIG_MIPS_COBALT is not set 66# CONFIG_MIPS_COBALT is not set
55# CONFIG_MACH_DECSTATION is not set 67# CONFIG_MACH_DECSTATION is not set
56# CONFIG_MIPS_EV64120 is not set 68# CONFIG_MIPS_EV64120 is not set
57# CONFIG_MIPS_EV96100 is not set 69# CONFIG_MIPS_EV96100 is not set
58# CONFIG_MIPS_IVR is not set 70# CONFIG_MIPS_IVR is not set
59# CONFIG_LASAT is not set
60# CONFIG_MIPS_ITE8172 is not set 71# CONFIG_MIPS_ITE8172 is not set
72# CONFIG_MACH_JAZZ is not set
73# CONFIG_LASAT is not set
61# CONFIG_MIPS_ATLAS is not set 74# CONFIG_MIPS_ATLAS is not set
62# CONFIG_MIPS_MALTA is not set 75# CONFIG_MIPS_MALTA is not set
63CONFIG_MIPS_SEAD=y 76CONFIG_MIPS_SEAD=y
77# CONFIG_MIPS_SIM is not set
78# CONFIG_MOMENCO_JAGUAR_ATX is not set
64# CONFIG_MOMENCO_OCELOT is not set 79# CONFIG_MOMENCO_OCELOT is not set
65# CONFIG_MOMENCO_OCELOT_G is not set
66# CONFIG_MOMENCO_OCELOT_C is not set
67# CONFIG_MOMENCO_OCELOT_3 is not set 80# CONFIG_MOMENCO_OCELOT_3 is not set
68# CONFIG_MOMENCO_JAGUAR_ATX is not set 81# CONFIG_MOMENCO_OCELOT_C is not set
69# CONFIG_PMC_YOSEMITE is not set 82# CONFIG_MOMENCO_OCELOT_G is not set
83# CONFIG_MIPS_XXS1500 is not set
84# CONFIG_PNX8550_V2PCI is not set
85# CONFIG_PNX8550_JBS is not set
70# CONFIG_DDB5074 is not set 86# CONFIG_DDB5074 is not set
71# CONFIG_DDB5476 is not set 87# CONFIG_DDB5476 is not set
72# CONFIG_DDB5477 is not set 88# CONFIG_DDB5477 is not set
73# CONFIG_NEC_OSPREY is not set 89# CONFIG_MACH_VR41XX is not set
90# CONFIG_PMC_YOSEMITE is not set
91# CONFIG_QEMU is not set
74# CONFIG_SGI_IP22 is not set 92# CONFIG_SGI_IP22 is not set
75# CONFIG_SOC_AU1X00 is not set 93# CONFIG_SGI_IP27 is not set
76# CONFIG_SIBYTE_SB1xxx_SOC is not set 94# CONFIG_SGI_IP32 is not set
95# CONFIG_SIBYTE_BIGSUR is not set
96# CONFIG_SIBYTE_SWARM is not set
97# CONFIG_SIBYTE_SENTOSA is not set
98# CONFIG_SIBYTE_RHONE is not set
99# CONFIG_SIBYTE_CARMEL is not set
100# CONFIG_SIBYTE_PTSWARM is not set
101# CONFIG_SIBYTE_LITTLESUR is not set
102# CONFIG_SIBYTE_CRHINE is not set
103# CONFIG_SIBYTE_CRHONE is not set
77# CONFIG_SNI_RM200_PCI is not set 104# CONFIG_SNI_RM200_PCI is not set
105# CONFIG_TOSHIBA_JMR3927 is not set
78# CONFIG_TOSHIBA_RBTX4927 is not set 106# CONFIG_TOSHIBA_RBTX4927 is not set
107# CONFIG_TOSHIBA_RBTX4938 is not set
79CONFIG_RWSEM_GENERIC_SPINLOCK=y 108CONFIG_RWSEM_GENERIC_SPINLOCK=y
80CONFIG_GENERIC_CALIBRATE_DELAY=y 109CONFIG_GENERIC_CALIBRATE_DELAY=y
81CONFIG_HAVE_DEC_LOCK=y
82CONFIG_DMA_NONCOHERENT=y 110CONFIG_DMA_NONCOHERENT=y
83CONFIG_DMA_NEED_PCI_MAP_STATE=y 111CONFIG_DMA_NEED_PCI_MAP_STATE=y
112# CONFIG_CPU_BIG_ENDIAN is not set
84CONFIG_CPU_LITTLE_ENDIAN=y 113CONFIG_CPU_LITTLE_ENDIAN=y
114CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
115CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
85CONFIG_IRQ_CPU=y 116CONFIG_IRQ_CPU=y
86CONFIG_MIPS_BOARDS_GEN=y 117CONFIG_MIPS_BOARDS_GEN=y
87CONFIG_MIPS_L1_CACHE_SHIFT=5 118CONFIG_MIPS_L1_CACHE_SHIFT=5
@@ -89,8 +120,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
89# 120#
90# CPU selection 121# CPU selection
91# 122#
92CONFIG_CPU_MIPS32=y 123CONFIG_CPU_MIPS32_R1=y
93# CONFIG_CPU_MIPS64 is not set 124# CONFIG_CPU_MIPS32_R2 is not set
125# CONFIG_CPU_MIPS64_R1 is not set
126# CONFIG_CPU_MIPS64_R2 is not set
94# CONFIG_CPU_R3000 is not set 127# CONFIG_CPU_R3000 is not set
95# CONFIG_CPU_TX39XX is not set 128# CONFIG_CPU_TX39XX is not set
96# CONFIG_CPU_VR41XX is not set 129# CONFIG_CPU_VR41XX is not set
@@ -106,15 +139,42 @@ CONFIG_CPU_MIPS32=y
106# CONFIG_CPU_RM7000 is not set 139# CONFIG_CPU_RM7000 is not set
107# CONFIG_CPU_RM9000 is not set 140# CONFIG_CPU_RM9000 is not set
108# CONFIG_CPU_SB1 is not set 141# CONFIG_CPU_SB1 is not set
142CONFIG_SYS_HAS_CPU_MIPS32_R1=y
143CONFIG_SYS_HAS_CPU_MIPS32_R2=y
144CONFIG_SYS_HAS_CPU_MIPS64_R1=y
145CONFIG_CPU_MIPS32=y
146CONFIG_CPU_MIPSR1=y
147CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
148CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
149CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
150
151#
152# Kernel type
153#
154CONFIG_32BIT=y
155# CONFIG_64BIT is not set
109CONFIG_PAGE_SIZE_4KB=y 156CONFIG_PAGE_SIZE_4KB=y
110# CONFIG_PAGE_SIZE_8KB is not set 157# CONFIG_PAGE_SIZE_8KB is not set
111# CONFIG_PAGE_SIZE_16KB is not set 158# CONFIG_PAGE_SIZE_16KB is not set
112# CONFIG_PAGE_SIZE_64KB is not set 159# CONFIG_PAGE_SIZE_64KB is not set
113CONFIG_CPU_HAS_PREFETCH=y 160CONFIG_CPU_HAS_PREFETCH=y
161# CONFIG_MIPS_MT is not set
114# CONFIG_64BIT_PHYS_ADDR is not set 162# CONFIG_64BIT_PHYS_ADDR is not set
115# CONFIG_CPU_ADVANCED is not set 163# CONFIG_CPU_ADVANCED is not set
116CONFIG_CPU_HAS_LLSC=y 164CONFIG_CPU_HAS_LLSC=y
117CONFIG_CPU_HAS_SYNC=y 165CONFIG_CPU_HAS_SYNC=y
166CONFIG_GENERIC_HARDIRQS=y
167CONFIG_GENERIC_IRQ_PROBE=y
168CONFIG_ARCH_FLATMEM_ENABLE=y
169CONFIG_SELECT_MEMORY_MODEL=y
170CONFIG_FLATMEM_MANUAL=y
171# CONFIG_DISCONTIGMEM_MANUAL is not set
172# CONFIG_SPARSEMEM_MANUAL is not set
173CONFIG_FLATMEM=y
174CONFIG_FLAT_NODE_MEM_MAP=y
175# CONFIG_SPARSEMEM_STATIC is not set
176CONFIG_PREEMPT_NONE=y
177# CONFIG_PREEMPT_VOLUNTARY is not set
118# CONFIG_PREEMPT is not set 178# CONFIG_PREEMPT is not set
119 179
120# 180#
@@ -128,10 +188,6 @@ CONFIG_MMU=y
128# CONFIG_PCCARD is not set 188# CONFIG_PCCARD is not set
129 189
130# 190#
131# PC-card bridges
132#
133
134#
135# PCI Hotplug Support 191# PCI Hotplug Support
136# 192#
137 193
@@ -143,6 +199,11 @@ CONFIG_BINFMT_ELF=y
143CONFIG_TRAD_SIGNALS=y 199CONFIG_TRAD_SIGNALS=y
144 200
145# 201#
202# Networking
203#
204# CONFIG_NET is not set
205
206#
146# Device Drivers 207# Device Drivers
147# 208#
148 209
@@ -154,6 +215,10 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
154# CONFIG_FW_LOADER is not set 215# CONFIG_FW_LOADER is not set
155 216
156# 217#
218# Connector - unified userspace <-> kernelspace linker
219#
220
221#
157# Memory Technology Devices (MTD) 222# Memory Technology Devices (MTD)
158# 223#
159# CONFIG_MTD is not set 224# CONFIG_MTD is not set
@@ -170,7 +235,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
170# 235#
171# Block devices 236# Block devices
172# 237#
173# CONFIG_BLK_DEV_FD is not set
174# CONFIG_BLK_DEV_COW_COMMON is not set 238# CONFIG_BLK_DEV_COW_COMMON is not set
175CONFIG_BLK_DEV_LOOP=y 239CONFIG_BLK_DEV_LOOP=y
176# CONFIG_BLK_DEV_CRYPTOLOOP is not set 240# CONFIG_BLK_DEV_CRYPTOLOOP is not set
@@ -178,11 +242,8 @@ CONFIG_BLK_DEV_RAM=y
178CONFIG_BLK_DEV_RAM_COUNT=16 242CONFIG_BLK_DEV_RAM_COUNT=16
179CONFIG_BLK_DEV_RAM_SIZE=18432 243CONFIG_BLK_DEV_RAM_SIZE=18432
180CONFIG_BLK_DEV_INITRD=y 244CONFIG_BLK_DEV_INITRD=y
181CONFIG_INITRAMFS_SOURCE=""
182# CONFIG_LBD is not set 245# CONFIG_LBD is not set
183CONFIG_CDROM_PKTCDVD=y 246# CONFIG_CDROM_PKTCDVD is not set
184CONFIG_CDROM_PKTCDVD_BUFFERS=8
185# CONFIG_CDROM_PKTCDVD_WCACHE is not set
186 247
187# 248#
188# IO Schedulers 249# IO Schedulers
@@ -200,6 +261,7 @@ CONFIG_IOSCHED_CFQ=y
200# 261#
201# SCSI device support 262# SCSI device support
202# 263#
264CONFIG_RAID_ATTRS=y
203# CONFIG_SCSI is not set 265# CONFIG_SCSI is not set
204 266
205# 267#
@@ -210,6 +272,7 @@ CONFIG_IOSCHED_CFQ=y
210# 272#
211# Fusion MPT device support 273# Fusion MPT device support
212# 274#
275# CONFIG_FUSION is not set
213 276
214# 277#
215# IEEE 1394 (FireWire) support 278# IEEE 1394 (FireWire) support
@@ -220,9 +283,8 @@ CONFIG_IOSCHED_CFQ=y
220# 283#
221 284
222# 285#
223# Networking support 286# Network device support
224# 287#
225# CONFIG_NET is not set
226# CONFIG_NETPOLL is not set 288# CONFIG_NETPOLL is not set
227# CONFIG_NET_POLL_CONTROLLER is not set 289# CONFIG_NET_POLL_CONTROLLER is not set
228 290
@@ -238,47 +300,18 @@ CONFIG_IOSCHED_CFQ=y
238# 300#
239# Input device support 301# Input device support
240# 302#
241CONFIG_INPUT=y 303# CONFIG_INPUT is not set
242 304
243# 305#
244# Userland interfaces 306# Hardware I/O ports
245#
246CONFIG_INPUT_MOUSEDEV=y
247CONFIG_INPUT_MOUSEDEV_PSAUX=y
248CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
249CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
250# CONFIG_INPUT_JOYDEV is not set
251# CONFIG_INPUT_TSDEV is not set
252# CONFIG_INPUT_EVDEV is not set
253# CONFIG_INPUT_EVBUG is not set
254
255#
256# Input I/O drivers
257# 307#
308# CONFIG_SERIO is not set
258# CONFIG_GAMEPORT is not set 309# CONFIG_GAMEPORT is not set
259CONFIG_SOUND_GAMEPORT=y
260CONFIG_SERIO=y
261# CONFIG_SERIO_I8042 is not set
262CONFIG_SERIO_SERPORT=y
263# CONFIG_SERIO_CT82C710 is not set
264# CONFIG_SERIO_LIBPS2 is not set
265CONFIG_SERIO_RAW=y
266
267#
268# Input Device Drivers
269#
270# CONFIG_INPUT_KEYBOARD is not set
271# CONFIG_INPUT_MOUSE is not set
272# CONFIG_INPUT_JOYSTICK is not set
273# CONFIG_INPUT_TOUCHSCREEN is not set
274# CONFIG_INPUT_MISC is not set
275 310
276# 311#
277# Character devices 312# Character devices
278# 313#
279CONFIG_VT=y 314# CONFIG_VT is not set
280CONFIG_VT_CONSOLE=y
281CONFIG_HW_CONSOLE=y
282# CONFIG_SERIAL_NONSTANDARD is not set 315# CONFIG_SERIAL_NONSTANDARD is not set
283 316
284# 317#
@@ -294,7 +327,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4
294# 327#
295CONFIG_SERIAL_CORE=y 328CONFIG_SERIAL_CORE=y
296CONFIG_SERIAL_CORE_CONSOLE=y 329CONFIG_SERIAL_CORE_CONSOLE=y
297# CONFIG_UNIX98_PTYS is not set 330CONFIG_UNIX98_PTYS=y
298CONFIG_LEGACY_PTYS=y 331CONFIG_LEGACY_PTYS=y
299CONFIG_LEGACY_PTY_COUNT=256 332CONFIG_LEGACY_PTY_COUNT=256
300 333
@@ -315,10 +348,13 @@ CONFIG_LEGACY_PTY_COUNT=256
315# 348#
316# Ftape, the floppy tape device driver 349# Ftape, the floppy tape device driver
317# 350#
318# CONFIG_DRM is not set
319# CONFIG_RAW_DRIVER is not set 351# CONFIG_RAW_DRIVER is not set
320 352
321# 353#
354# TPM devices
355#
356
357#
322# I2C support 358# I2C support
323# 359#
324# CONFIG_I2C is not set 360# CONFIG_I2C is not set
@@ -329,10 +365,20 @@ CONFIG_LEGACY_PTY_COUNT=256
329# CONFIG_W1 is not set 365# CONFIG_W1 is not set
330 366
331# 367#
368# Hardware Monitoring support
369#
370# CONFIG_HWMON is not set
371# CONFIG_HWMON_VID is not set
372
373#
332# Misc devices 374# Misc devices
333# 375#
334 376
335# 377#
378# Multimedia Capabilities Port drivers
379#
380
381#
336# Multimedia devices 382# Multimedia devices
337# 383#
338# CONFIG_VIDEO_DEV is not set 384# CONFIG_VIDEO_DEV is not set
@@ -347,13 +393,6 @@ CONFIG_LEGACY_PTY_COUNT=256
347# CONFIG_FB is not set 393# CONFIG_FB is not set
348 394
349# 395#
350# Console display driver support
351#
352# CONFIG_VGA_CONSOLE is not set
353CONFIG_DUMMY_CONSOLE=y
354# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
355
356#
357# Sound 396# Sound
358# 397#
359# CONFIG_SOUND is not set 398# CONFIG_SOUND is not set
@@ -365,10 +404,6 @@ CONFIG_DUMMY_CONSOLE=y
365# CONFIG_USB_ARCH_HAS_OHCI is not set 404# CONFIG_USB_ARCH_HAS_OHCI is not set
366 405
367# 406#
368# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
369#
370
371#
372# USB Gadget Support 407# USB Gadget Support
373# 408#
374# CONFIG_USB_GADGET is not set 409# CONFIG_USB_GADGET is not set
@@ -381,28 +416,31 @@ CONFIG_DUMMY_CONSOLE=y
381# 416#
382# InfiniBand support 417# InfiniBand support
383# 418#
384# CONFIG_INFINIBAND is not set 419
420#
421# SN Devices
422#
385 423
386# 424#
387# File systems 425# File systems
388# 426#
389CONFIG_EXT2_FS=y 427CONFIG_EXT2_FS=y
390CONFIG_EXT2_FS_XATTR=y 428# CONFIG_EXT2_FS_XATTR is not set
391CONFIG_EXT2_FS_POSIX_ACL=y 429# CONFIG_EXT2_FS_XIP is not set
392CONFIG_EXT2_FS_SECURITY=y
393# CONFIG_EXT3_FS is not set 430# CONFIG_EXT3_FS is not set
394# CONFIG_JBD is not set 431# CONFIG_JBD is not set
395CONFIG_FS_MBCACHE=y
396# CONFIG_REISERFS_FS is not set 432# CONFIG_REISERFS_FS is not set
397# CONFIG_JFS_FS is not set 433# CONFIG_JFS_FS is not set
398CONFIG_FS_POSIX_ACL=y 434# CONFIG_FS_POSIX_ACL is not set
399# CONFIG_XFS_FS is not set 435# CONFIG_XFS_FS is not set
400# CONFIG_MINIX_FS is not set 436# CONFIG_MINIX_FS is not set
401# CONFIG_ROMFS_FS is not set 437# CONFIG_ROMFS_FS is not set
438CONFIG_INOTIFY=y
402# CONFIG_QUOTA is not set 439# CONFIG_QUOTA is not set
403CONFIG_DNOTIFY=y 440CONFIG_DNOTIFY=y
404# CONFIG_AUTOFS_FS is not set 441# CONFIG_AUTOFS_FS is not set
405# CONFIG_AUTOFS4_FS is not set 442# CONFIG_AUTOFS4_FS is not set
443CONFIG_FUSE_FS=y
406 444
407# 445#
408# CD-ROM/DVD Filesystems 446# CD-ROM/DVD Filesystems
@@ -423,10 +461,10 @@ CONFIG_DNOTIFY=y
423CONFIG_PROC_FS=y 461CONFIG_PROC_FS=y
424CONFIG_PROC_KCORE=y 462CONFIG_PROC_KCORE=y
425CONFIG_SYSFS=y 463CONFIG_SYSFS=y
426# CONFIG_DEVFS_FS is not set
427# CONFIG_TMPFS is not set 464# CONFIG_TMPFS is not set
428# CONFIG_HUGETLB_PAGE is not set 465# CONFIG_HUGETLB_PAGE is not set
429CONFIG_RAMFS=y 466CONFIG_RAMFS=y
467CONFIG_RELAYFS_FS=y
430 468
431# 469#
432# Miscellaneous filesystems 470# Miscellaneous filesystems
@@ -448,8 +486,18 @@ CONFIG_RAMFS=y
448# 486#
449# Partition Types 487# Partition Types
450# 488#
451# CONFIG_PARTITION_ADVANCED is not set 489CONFIG_PARTITION_ADVANCED=y
452CONFIG_MSDOS_PARTITION=y 490# CONFIG_ACORN_PARTITION is not set
491# CONFIG_OSF_PARTITION is not set
492# CONFIG_AMIGA_PARTITION is not set
493# CONFIG_ATARI_PARTITION is not set
494# CONFIG_MAC_PARTITION is not set
495# CONFIG_MSDOS_PARTITION is not set
496# CONFIG_LDM_PARTITION is not set
497# CONFIG_SGI_PARTITION is not set
498# CONFIG_ULTRIX_PARTITION is not set
499# CONFIG_SUN_PARTITION is not set
500# CONFIG_EFI_PARTITION is not set
453 501
454# 502#
455# Native Language Support 503# Native Language Support
@@ -464,15 +512,16 @@ CONFIG_MSDOS_PARTITION=y
464# 512#
465# Kernel hacking 513# Kernel hacking
466# 514#
515# CONFIG_PRINTK_TIME is not set
467# CONFIG_DEBUG_KERNEL is not set 516# CONFIG_DEBUG_KERNEL is not set
517CONFIG_LOG_BUF_SHIFT=14
468CONFIG_CROSSCOMPILE=y 518CONFIG_CROSSCOMPILE=y
469CONFIG_CMDLINE="" 519CONFIG_CMDLINE=""
470 520
471# 521#
472# Security options 522# Security options
473# 523#
474CONFIG_KEYS=y 524# CONFIG_KEYS is not set
475CONFIG_KEYS_DEBUG_PROC_KEYS=y
476# CONFIG_SECURITY is not set 525# CONFIG_SECURITY is not set
477 526
478# 527#
@@ -488,7 +537,6 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
488# Library routines 537# Library routines
489# 538#
490# CONFIG_CRC_CCITT is not set 539# CONFIG_CRC_CCITT is not set
540CONFIG_CRC16=y
491# CONFIG_CRC32 is not set 541# CONFIG_CRC32 is not set
492# CONFIG_LIBCRC32C is not set 542# CONFIG_LIBCRC32C is not set
493CONFIG_GENERIC_HARDIRQS=y
494CONFIG_GENERIC_IRQ_PROBE=y
diff --git a/arch/mips/configs/tb0226_defconfig b/arch/mips/configs/tb0226_defconfig
index c9d3f83caf0f..bf60a17de2b0 100644
--- a/arch/mips/configs/tb0226_defconfig
+++ b/arch/mips/configs/tb0226_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:12 2005 4# Thu Oct 20 22:27:10 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14
29# CONFIG_HOTPLUG is not set 27# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,55 +59,87 @@ CONFIG_KMOD=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60CONFIG_MACH_VR41XX=y 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_NEC_CMBVR4133 is not set 64# CONFIG_MIPS_PB1000 is not set
62# CONFIG_CASIO_E55 is not set 65# CONFIG_MIPS_PB1100 is not set
63# CONFIG_IBM_WORKPAD is not set 66# CONFIG_MIPS_PB1500 is not set
64CONFIG_TANBAC_TB0226=y 67# CONFIG_MIPS_PB1550 is not set
65# CONFIG_TANBAC_TB0229 is not set 68# CONFIG_MIPS_PB1200 is not set
66# CONFIG_VICTOR_MPC30X is not set 69# CONFIG_MIPS_DB1000 is not set
67# CONFIG_ZAO_CAPCELLA is not set 70# CONFIG_MIPS_DB1100 is not set
68# CONFIG_TOSHIBA_JMR3927 is not set 71# CONFIG_MIPS_DB1500 is not set
72# CONFIG_MIPS_DB1550 is not set
73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
69# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
70# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
71# CONFIG_MIPS_EV64120 is not set 77# CONFIG_MIPS_EV64120 is not set
72# CONFIG_MIPS_EV96100 is not set 78# CONFIG_MIPS_EV96100 is not set
73# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
74# CONFIG_LASAT is not set
75# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
76# CONFIG_MIPS_ATLAS is not set 83# CONFIG_MIPS_ATLAS is not set
77# CONFIG_MIPS_MALTA is not set 84# CONFIG_MIPS_MALTA is not set
78# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
79# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
80# CONFIG_MOMENCO_OCELOT_G is not set
81# CONFIG_MOMENCO_OCELOT_C is not set
82# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
83# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
84# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
85# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
86# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
87# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
88# CONFIG_NEC_OSPREY is not set 98CONFIG_MACH_VR41XX=y
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
89# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
90# CONFIG_SOC_AU1X00 is not set 102# CONFIG_SGI_IP27 is not set
91# CONFIG_SIBYTE_SB1xxx_SOC is not set 103# CONFIG_SGI_IP32 is not set
104# CONFIG_SIBYTE_BIGSUR is not set
105# CONFIG_SIBYTE_SWARM is not set
106# CONFIG_SIBYTE_SENTOSA is not set
107# CONFIG_SIBYTE_RHONE is not set
108# CONFIG_SIBYTE_CARMEL is not set
109# CONFIG_SIBYTE_PTSWARM is not set
110# CONFIG_SIBYTE_LITTLESUR is not set
111# CONFIG_SIBYTE_CRHINE is not set
112# CONFIG_SIBYTE_CRHONE is not set
92# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
93# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
117# CONFIG_NEC_CMBVR4133 is not set
118# CONFIG_CASIO_E55 is not set
119# CONFIG_IBM_WORKPAD is not set
120CONFIG_TANBAC_TB022X=y
121CONFIG_TANBAC_TB0226=y
122# CONFIG_VICTOR_MPC30X is not set
123# CONFIG_ZAO_CAPCELLA is not set
124CONFIG_PCI_VR41XX=y
125# CONFIG_VRC4173 is not set
94CONFIG_RWSEM_GENERIC_SPINLOCK=y 126CONFIG_RWSEM_GENERIC_SPINLOCK=y
95CONFIG_GENERIC_CALIBRATE_DELAY=y 127CONFIG_GENERIC_CALIBRATE_DELAY=y
96CONFIG_HAVE_DEC_LOCK=y
97CONFIG_DMA_NONCOHERENT=y 128CONFIG_DMA_NONCOHERENT=y
98CONFIG_DMA_NEED_PCI_MAP_STATE=y 129CONFIG_DMA_NEED_PCI_MAP_STATE=y
130# CONFIG_CPU_BIG_ENDIAN is not set
99CONFIG_CPU_LITTLE_ENDIAN=y 131CONFIG_CPU_LITTLE_ENDIAN=y
132CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
100CONFIG_IRQ_CPU=y 133CONFIG_IRQ_CPU=y
101CONFIG_MIPS_L1_CACHE_SHIFT=5 134CONFIG_MIPS_L1_CACHE_SHIFT=5
102 135
103# 136#
104# CPU selection 137# CPU selection
105# 138#
106# CONFIG_CPU_MIPS32 is not set 139# CONFIG_CPU_MIPS32_R1 is not set
107# CONFIG_CPU_MIPS64 is not set 140# CONFIG_CPU_MIPS32_R2 is not set
141# CONFIG_CPU_MIPS64_R1 is not set
142# CONFIG_CPU_MIPS64_R2 is not set
108# CONFIG_CPU_R3000 is not set 143# CONFIG_CPU_R3000 is not set
109# CONFIG_CPU_TX39XX is not set 144# CONFIG_CPU_TX39XX is not set
110CONFIG_CPU_VR41XX=y 145CONFIG_CPU_VR41XX=y
@@ -120,19 +155,44 @@ CONFIG_CPU_VR41XX=y
120# CONFIG_CPU_RM7000 is not set 155# CONFIG_CPU_RM7000 is not set
121# CONFIG_CPU_RM9000 is not set 156# CONFIG_CPU_RM9000 is not set
122# CONFIG_CPU_SB1 is not set 157# CONFIG_CPU_SB1 is not set
158CONFIG_SYS_HAS_CPU_VR41XX=y
159CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
160CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
161CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
162CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
163
164#
165# Kernel type
166#
167CONFIG_32BIT=y
168# CONFIG_64BIT is not set
123CONFIG_PAGE_SIZE_4KB=y 169CONFIG_PAGE_SIZE_4KB=y
124# CONFIG_PAGE_SIZE_8KB is not set 170# CONFIG_PAGE_SIZE_8KB is not set
125# CONFIG_PAGE_SIZE_16KB is not set 171# CONFIG_PAGE_SIZE_16KB is not set
126# CONFIG_PAGE_SIZE_64KB is not set 172# CONFIG_PAGE_SIZE_64KB is not set
173# CONFIG_MIPS_MT is not set
127# CONFIG_CPU_ADVANCED is not set 174# CONFIG_CPU_ADVANCED is not set
128CONFIG_CPU_HAS_SYNC=y 175CONFIG_CPU_HAS_SYNC=y
176CONFIG_GENERIC_HARDIRQS=y
177CONFIG_GENERIC_IRQ_PROBE=y
178CONFIG_ARCH_FLATMEM_ENABLE=y
179CONFIG_SELECT_MEMORY_MODEL=y
180CONFIG_FLATMEM_MANUAL=y
181# CONFIG_DISCONTIGMEM_MANUAL is not set
182# CONFIG_SPARSEMEM_MANUAL is not set
183CONFIG_FLATMEM=y
184CONFIG_FLAT_NODE_MEM_MAP=y
185# CONFIG_SPARSEMEM_STATIC is not set
186CONFIG_PREEMPT_NONE=y
187# CONFIG_PREEMPT_VOLUNTARY is not set
129# CONFIG_PREEMPT is not set 188# CONFIG_PREEMPT is not set
130 189
131# 190#
132# Bus options (PCI, PCMCIA, EISA, ISA, TC) 191# Bus options (PCI, PCMCIA, EISA, ISA, TC)
133# 192#
134CONFIG_HW_HAS_PCI=y 193CONFIG_HW_HAS_PCI=y
135# CONFIG_PCI is not set 194CONFIG_PCI=y
195# CONFIG_PCI_LEGACY_PROC is not set
136CONFIG_MMU=y 196CONFIG_MMU=y
137 197
138# 198#
@@ -141,12 +201,9 @@ CONFIG_MMU=y
141# CONFIG_PCCARD is not set 201# CONFIG_PCCARD is not set
142 202
143# 203#
144# PC-card bridges
145#
146
147#
148# PCI Hotplug Support 204# PCI Hotplug Support
149# 205#
206# CONFIG_HOTPLUG_PCI is not set
150 207
151# 208#
152# Executable file formats 209# Executable file formats
@@ -156,6 +213,87 @@ CONFIG_BINFMT_ELF=y
156CONFIG_TRAD_SIGNALS=y 213CONFIG_TRAD_SIGNALS=y
157 214
158# 215#
216# Networking
217#
218CONFIG_NET=y
219
220#
221# Networking options
222#
223CONFIG_PACKET=y
224# CONFIG_PACKET_MMAP is not set
225CONFIG_UNIX=y
226CONFIG_XFRM=y
227CONFIG_XFRM_USER=m
228# CONFIG_NET_KEY is not set
229CONFIG_INET=y
230CONFIG_IP_MULTICAST=y
231CONFIG_IP_ADVANCED_ROUTER=y
232CONFIG_ASK_IP_FIB_HASH=y
233# CONFIG_IP_FIB_TRIE is not set
234CONFIG_IP_FIB_HASH=y
235CONFIG_IP_MULTIPLE_TABLES=y
236CONFIG_IP_ROUTE_MULTIPATH=y
237# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
238CONFIG_IP_ROUTE_VERBOSE=y
239CONFIG_IP_PNP=y
240# CONFIG_IP_PNP_DHCP is not set
241CONFIG_IP_PNP_BOOTP=y
242# CONFIG_IP_PNP_RARP is not set
243# CONFIG_NET_IPIP is not set
244# CONFIG_NET_IPGRE is not set
245# CONFIG_IP_MROUTE is not set
246# CONFIG_ARPD is not set
247CONFIG_SYN_COOKIES=y
248# CONFIG_INET_AH is not set
249# CONFIG_INET_ESP is not set
250# CONFIG_INET_IPCOMP is not set
251CONFIG_INET_TUNNEL=m
252CONFIG_INET_DIAG=y
253CONFIG_INET_TCP_DIAG=y
254# CONFIG_TCP_CONG_ADVANCED is not set
255CONFIG_TCP_CONG_BIC=y
256# CONFIG_IPV6 is not set
257# CONFIG_NETFILTER is not set
258
259#
260# DCCP Configuration (EXPERIMENTAL)
261#
262# CONFIG_IP_DCCP is not set
263
264#
265# SCTP Configuration (EXPERIMENTAL)
266#
267# CONFIG_IP_SCTP is not set
268# CONFIG_ATM is not set
269# CONFIG_BRIDGE is not set
270# CONFIG_VLAN_8021Q is not set
271# CONFIG_DECNET is not set
272# CONFIG_LLC2 is not set
273# CONFIG_IPX is not set
274# CONFIG_ATALK is not set
275# CONFIG_X25 is not set
276# CONFIG_LAPB is not set
277# CONFIG_NET_DIVERT is not set
278# CONFIG_ECONET is not set
279# CONFIG_WAN_ROUTER is not set
280# CONFIG_NET_SCHED is not set
281# CONFIG_NET_CLS_ROUTE is not set
282
283#
284# Network testing
285#
286# CONFIG_NET_PKTGEN is not set
287# CONFIG_HAMRADIO is not set
288# CONFIG_IRDA is not set
289# CONFIG_BT is not set
290CONFIG_IEEE80211=m
291# CONFIG_IEEE80211_DEBUG is not set
292CONFIG_IEEE80211_CRYPT_WEP=m
293CONFIG_IEEE80211_CRYPT_CCMP=m
294CONFIG_IEEE80211_CRYPT_TKIP=m
295
296#
159# Device Drivers 297# Device Drivers
160# 298#
161 299
@@ -167,6 +305,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
167# CONFIG_FW_LOADER is not set 305# CONFIG_FW_LOADER is not set
168 306
169# 307#
308# Connector - unified userspace <-> kernelspace linker
309#
310CONFIG_CONNECTOR=m
311
312#
170# Memory Technology Devices (MTD) 313# Memory Technology Devices (MTD)
171# 314#
172# CONFIG_MTD is not set 315# CONFIG_MTD is not set
@@ -183,19 +326,21 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
183# 326#
184# Block devices 327# Block devices
185# 328#
186# CONFIG_BLK_DEV_FD is not set 329# CONFIG_BLK_CPQ_DA is not set
330# CONFIG_BLK_CPQ_CISS_DA is not set
331# CONFIG_BLK_DEV_DAC960 is not set
332# CONFIG_BLK_DEV_UMEM is not set
187# CONFIG_BLK_DEV_COW_COMMON is not set 333# CONFIG_BLK_DEV_COW_COMMON is not set
188CONFIG_BLK_DEV_LOOP=m 334CONFIG_BLK_DEV_LOOP=m
189# CONFIG_BLK_DEV_CRYPTOLOOP is not set 335# CONFIG_BLK_DEV_CRYPTOLOOP is not set
190CONFIG_BLK_DEV_NBD=m 336CONFIG_BLK_DEV_NBD=m
337# CONFIG_BLK_DEV_SX8 is not set
338# CONFIG_BLK_DEV_UB is not set
191CONFIG_BLK_DEV_RAM=m 339CONFIG_BLK_DEV_RAM=m
192CONFIG_BLK_DEV_RAM_COUNT=16 340CONFIG_BLK_DEV_RAM_COUNT=16
193CONFIG_BLK_DEV_RAM_SIZE=4096 341CONFIG_BLK_DEV_RAM_SIZE=4096
194CONFIG_INITRAMFS_SOURCE=""
195# CONFIG_LBD is not set 342# CONFIG_LBD is not set
196CONFIG_CDROM_PKTCDVD=m 343# CONFIG_CDROM_PKTCDVD is not set
197CONFIG_CDROM_PKTCDVD_BUFFERS=8
198# CONFIG_CDROM_PKTCDVD_WCACHE is not set
199 344
200# 345#
201# IO Schedulers 346# IO Schedulers
@@ -209,33 +354,12 @@ CONFIG_ATA_OVER_ETH=m
209# 354#
210# ATA/ATAPI/MFM/RLL support 355# ATA/ATAPI/MFM/RLL support
211# 356#
212CONFIG_IDE=y 357# CONFIG_IDE is not set
213CONFIG_BLK_DEV_IDE=y
214
215#
216# Please see Documentation/ide.txt for help/info on IDE drives
217#
218# CONFIG_BLK_DEV_IDE_SATA is not set
219CONFIG_BLK_DEV_IDEDISK=y
220CONFIG_IDEDISK_MULTI_MODE=y
221# CONFIG_BLK_DEV_IDECD is not set
222# CONFIG_BLK_DEV_IDETAPE is not set
223# CONFIG_BLK_DEV_IDEFLOPPY is not set
224CONFIG_BLK_DEV_IDESCSI=y
225# CONFIG_IDE_TASK_IOCTL is not set
226
227#
228# IDE chipset support/bugfixes
229#
230CONFIG_IDE_GENERIC=y
231# CONFIG_IDE_ARM is not set
232# CONFIG_BLK_DEV_IDEDMA is not set
233# CONFIG_IDEDMA_AUTO is not set
234# CONFIG_BLK_DEV_HD is not set
235 358
236# 359#
237# SCSI device support 360# SCSI device support
238# 361#
362# CONFIG_RAID_ATTRS is not set
239CONFIG_SCSI=y 363CONFIG_SCSI=y
240CONFIG_SCSI_PROC_FS=y 364CONFIG_SCSI_PROC_FS=y
241 365
@@ -245,15 +369,15 @@ CONFIG_SCSI_PROC_FS=y
245CONFIG_BLK_DEV_SD=y 369CONFIG_BLK_DEV_SD=y
246# CONFIG_CHR_DEV_ST is not set 370# CONFIG_CHR_DEV_ST is not set
247# CONFIG_CHR_DEV_OSST is not set 371# CONFIG_CHR_DEV_OSST is not set
248CONFIG_BLK_DEV_SR=y 372# CONFIG_BLK_DEV_SR is not set
249# CONFIG_BLK_DEV_SR_VENDOR is not set 373# CONFIG_CHR_DEV_SG is not set
250CONFIG_CHR_DEV_SG=y 374# CONFIG_CHR_DEV_SCH is not set
251 375
252# 376#
253# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 377# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
254# 378#
255CONFIG_SCSI_MULTI_LUN=y 379CONFIG_SCSI_MULTI_LUN=y
256CONFIG_SCSI_CONSTANTS=y 380# CONFIG_SCSI_CONSTANTS is not set
257# CONFIG_SCSI_LOGGING is not set 381# CONFIG_SCSI_LOGGING is not set
258 382
259# 383#
@@ -262,11 +386,42 @@ CONFIG_SCSI_CONSTANTS=y
262# CONFIG_SCSI_SPI_ATTRS is not set 386# CONFIG_SCSI_SPI_ATTRS is not set
263# CONFIG_SCSI_FC_ATTRS is not set 387# CONFIG_SCSI_FC_ATTRS is not set
264# CONFIG_SCSI_ISCSI_ATTRS is not set 388# CONFIG_SCSI_ISCSI_ATTRS is not set
389# CONFIG_SCSI_SAS_ATTRS is not set
265 390
266# 391#
267# SCSI low-level drivers 392# SCSI low-level drivers
268# 393#
394# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
395# CONFIG_SCSI_3W_9XXX is not set
396# CONFIG_SCSI_ACARD is not set
397# CONFIG_SCSI_AACRAID is not set
398# CONFIG_SCSI_AIC7XXX is not set
399# CONFIG_SCSI_AIC7XXX_OLD is not set
400# CONFIG_SCSI_AIC79XX is not set
401# CONFIG_SCSI_DPT_I2O is not set
402# CONFIG_MEGARAID_NEWGEN is not set
403# CONFIG_MEGARAID_LEGACY is not set
269# CONFIG_SCSI_SATA is not set 404# CONFIG_SCSI_SATA is not set
405# CONFIG_SCSI_DMX3191D is not set
406# CONFIG_SCSI_FUTURE_DOMAIN is not set
407# CONFIG_SCSI_IPS is not set
408# CONFIG_SCSI_INITIO is not set
409# CONFIG_SCSI_INIA100 is not set
410# CONFIG_SCSI_SYM53C8XX_2 is not set
411# CONFIG_SCSI_IPR is not set
412# CONFIG_SCSI_QLOGIC_FC is not set
413# CONFIG_SCSI_QLOGIC_1280 is not set
414CONFIG_SCSI_QLA2XXX=y
415# CONFIG_SCSI_QLA21XX is not set
416# CONFIG_SCSI_QLA22XX is not set
417# CONFIG_SCSI_QLA2300 is not set
418# CONFIG_SCSI_QLA2322 is not set
419# CONFIG_SCSI_QLA6312 is not set
420# CONFIG_SCSI_QLA24XX is not set
421# CONFIG_SCSI_LPFC is not set
422# CONFIG_SCSI_DC395x is not set
423# CONFIG_SCSI_DC390T is not set
424# CONFIG_SCSI_NSP32 is not set
270# CONFIG_SCSI_DEBUG is not set 425# CONFIG_SCSI_DEBUG is not set
271 426
272# 427#
@@ -277,131 +432,132 @@ CONFIG_SCSI_CONSTANTS=y
277# 432#
278# Fusion MPT device support 433# Fusion MPT device support
279# 434#
435# CONFIG_FUSION is not set
436# CONFIG_FUSION_SPI is not set
437# CONFIG_FUSION_FC is not set
280 438
281# 439#
282# IEEE 1394 (FireWire) support 440# IEEE 1394 (FireWire) support
283# 441#
442# CONFIG_IEEE1394 is not set
284 443
285# 444#
286# I2O device support 445# I2O device support
287# 446#
447# CONFIG_I2O is not set
288 448
289# 449#
290# Networking support 450# Network device support
291#
292CONFIG_NET=y
293
294#
295# Networking options
296# 451#
297CONFIG_PACKET=y 452CONFIG_NETDEVICES=y
298# CONFIG_PACKET_MMAP is not set 453# CONFIG_DUMMY is not set
299CONFIG_NETLINK_DEV=m 454# CONFIG_BONDING is not set
300CONFIG_UNIX=y 455# CONFIG_EQUALIZER is not set
301# CONFIG_NET_KEY is not set 456# CONFIG_TUN is not set
302CONFIG_INET=y
303CONFIG_IP_MULTICAST=y
304CONFIG_IP_ADVANCED_ROUTER=y
305CONFIG_IP_MULTIPLE_TABLES=y
306CONFIG_IP_ROUTE_MULTIPATH=y
307CONFIG_IP_ROUTE_VERBOSE=y
308CONFIG_IP_PNP=y
309# CONFIG_IP_PNP_DHCP is not set
310CONFIG_IP_PNP_BOOTP=y
311# CONFIG_IP_PNP_RARP is not set
312# CONFIG_NET_IPIP is not set
313# CONFIG_NET_IPGRE is not set
314# CONFIG_IP_MROUTE is not set
315# CONFIG_ARPD is not set
316CONFIG_SYN_COOKIES=y
317# CONFIG_INET_AH is not set
318# CONFIG_INET_ESP is not set
319# CONFIG_INET_IPCOMP is not set
320CONFIG_INET_TUNNEL=m
321CONFIG_IP_TCPDIAG=m
322# CONFIG_IP_TCPDIAG_IPV6 is not set
323# CONFIG_IPV6 is not set
324# CONFIG_NETFILTER is not set
325CONFIG_XFRM=y
326CONFIG_XFRM_USER=m
327 457
328# 458#
329# SCTP Configuration (EXPERIMENTAL) 459# ARCnet devices
330# 460#
331# CONFIG_IP_SCTP is not set 461# CONFIG_ARCNET is not set
332# CONFIG_ATM is not set
333# CONFIG_BRIDGE is not set
334# CONFIG_VLAN_8021Q is not set
335# CONFIG_DECNET is not set
336# CONFIG_LLC2 is not set
337# CONFIG_IPX is not set
338# CONFIG_ATALK is not set
339# CONFIG_X25 is not set
340# CONFIG_LAPB is not set
341# CONFIG_NET_DIVERT is not set
342# CONFIG_ECONET is not set
343# CONFIG_WAN_ROUTER is not set
344 462
345# 463#
346# QoS and/or fair queueing 464# PHY device support
347# 465#
348# CONFIG_NET_SCHED is not set 466CONFIG_PHYLIB=m
349# CONFIG_NET_CLS_ROUTE is not set 467CONFIG_PHYCONTROL=y
350 468
351# 469#
352# Network testing 470# MII PHY device drivers
353# 471#
354# CONFIG_NET_PKTGEN is not set 472CONFIG_MARVELL_PHY=m
355# CONFIG_NETPOLL is not set 473CONFIG_DAVICOM_PHY=m
356# CONFIG_NET_POLL_CONTROLLER is not set 474CONFIG_QSEMI_PHY=m
357# CONFIG_HAMRADIO is not set 475CONFIG_LXT_PHY=m
358# CONFIG_IRDA is not set 476CONFIG_CICADA_PHY=m
359# CONFIG_BT is not set
360CONFIG_NETDEVICES=y
361# CONFIG_DUMMY is not set
362# CONFIG_BONDING is not set
363# CONFIG_EQUALIZER is not set
364# CONFIG_TUN is not set
365# CONFIG_ETHERTAP is not set
366 477
367# 478#
368# Ethernet (10 or 100Mbit) 479# Ethernet (10 or 100Mbit)
369# 480#
370CONFIG_NET_ETHERNET=y 481CONFIG_NET_ETHERNET=y
371# CONFIG_MII is not set 482CONFIG_MII=y
483# CONFIG_HAPPYMEAL is not set
484# CONFIG_SUNGEM is not set
485# CONFIG_NET_VENDOR_3COM is not set
486
487#
488# Tulip family network device support
489#
490# CONFIG_NET_TULIP is not set
491# CONFIG_HP100 is not set
492CONFIG_NET_PCI=y
493# CONFIG_PCNET32 is not set
494# CONFIG_AMD8111_ETH is not set
495# CONFIG_ADAPTEC_STARFIRE is not set
496# CONFIG_B44 is not set
497# CONFIG_FORCEDETH is not set
498# CONFIG_DGRS is not set
499CONFIG_EEPRO100=y
500# CONFIG_E100 is not set
501# CONFIG_FEALNX is not set
502# CONFIG_NATSEMI is not set
503# CONFIG_NE2K_PCI is not set
504# CONFIG_8139CP is not set
505# CONFIG_8139TOO is not set
506# CONFIG_SIS900 is not set
507# CONFIG_EPIC100 is not set
508# CONFIG_SUNDANCE is not set
509# CONFIG_TLAN is not set
510# CONFIG_VIA_RHINE is not set
511# CONFIG_LAN_SAA9730 is not set
372 512
373# 513#
374# Ethernet (1000 Mbit) 514# Ethernet (1000 Mbit)
375# 515#
516# CONFIG_ACENIC is not set
517# CONFIG_DL2K is not set
518# CONFIG_E1000 is not set
519# CONFIG_NS83820 is not set
520# CONFIG_HAMACHI is not set
521# CONFIG_YELLOWFIN is not set
522# CONFIG_R8169 is not set
523# CONFIG_SIS190 is not set
524# CONFIG_SKGE is not set
525# CONFIG_SK98LIN is not set
526# CONFIG_VIA_VELOCITY is not set
527# CONFIG_TIGON3 is not set
528# CONFIG_BNX2 is not set
376 529
377# 530#
378# Ethernet (10000 Mbit) 531# Ethernet (10000 Mbit)
379# 532#
533# CONFIG_CHELSIO_T1 is not set
534# CONFIG_IXGB is not set
535# CONFIG_S2IO is not set
380 536
381# 537#
382# Token Ring devices 538# Token Ring devices
383# 539#
540# CONFIG_TR is not set
384 541
385# 542#
386# Wireless LAN (non-hamradio) 543# Wireless LAN (non-hamradio)
387# 544#
388# CONFIG_NET_RADIO is not set 545# CONFIG_NET_RADIO is not set
546# CONFIG_IPW2200 is not set
389 547
390# 548#
391# Wan interfaces 549# Wan interfaces
392# 550#
393# CONFIG_WAN is not set 551# CONFIG_WAN is not set
394CONFIG_PPP=m 552# CONFIG_FDDI is not set
395CONFIG_PPP_MULTILINK=y 553# CONFIG_HIPPI is not set
396# CONFIG_PPP_FILTER is not set 554# CONFIG_PPP is not set
397CONFIG_PPP_ASYNC=m
398CONFIG_PPP_SYNC_TTY=m
399CONFIG_PPP_DEFLATE=m
400CONFIG_PPP_BSDCOMP=m
401CONFIG_PPPOE=m
402# CONFIG_SLIP is not set 555# CONFIG_SLIP is not set
556# CONFIG_NET_FC is not set
403# CONFIG_SHAPER is not set 557# CONFIG_SHAPER is not set
404# CONFIG_NETCONSOLE is not set 558# CONFIG_NETCONSOLE is not set
559# CONFIG_NETPOLL is not set
560# CONFIG_NET_POLL_CONTROLLER is not set
405 561
406# 562#
407# ISDN subsystem 563# ISDN subsystem
@@ -421,28 +577,13 @@ CONFIG_INPUT=y
421# 577#
422# Userland interfaces 578# Userland interfaces
423# 579#
424CONFIG_INPUT_MOUSEDEV=y 580# CONFIG_INPUT_MOUSEDEV is not set
425CONFIG_INPUT_MOUSEDEV_PSAUX=y
426CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
427CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
428# CONFIG_INPUT_JOYDEV is not set 581# CONFIG_INPUT_JOYDEV is not set
429# CONFIG_INPUT_TSDEV is not set 582# CONFIG_INPUT_TSDEV is not set
430# CONFIG_INPUT_EVDEV is not set 583# CONFIG_INPUT_EVDEV is not set
431# CONFIG_INPUT_EVBUG is not set 584# CONFIG_INPUT_EVBUG is not set
432 585
433# 586#
434# Input I/O drivers
435#
436# CONFIG_GAMEPORT is not set
437CONFIG_SOUND_GAMEPORT=y
438CONFIG_SERIO=y
439CONFIG_SERIO_I8042=y
440CONFIG_SERIO_SERPORT=y
441# CONFIG_SERIO_CT82C710 is not set
442# CONFIG_SERIO_LIBPS2 is not set
443CONFIG_SERIO_RAW=m
444
445#
446# Input Device Drivers 587# Input Device Drivers
447# 588#
448# CONFIG_INPUT_KEYBOARD is not set 589# CONFIG_INPUT_KEYBOARD is not set
@@ -452,6 +593,12 @@ CONFIG_SERIO_RAW=m
452# CONFIG_INPUT_MISC is not set 593# CONFIG_INPUT_MISC is not set
453 594
454# 595#
596# Hardware I/O ports
597#
598# CONFIG_SERIO is not set
599# CONFIG_GAMEPORT is not set
600
601#
455# Character devices 602# Character devices
456# 603#
457CONFIG_VT=y 604CONFIG_VT=y
@@ -462,16 +609,16 @@ CONFIG_HW_CONSOLE=y
462# 609#
463# Serial drivers 610# Serial drivers
464# 611#
465CONFIG_SERIAL_8250=y 612# CONFIG_SERIAL_8250 is not set
466CONFIG_SERIAL_8250_CONSOLE=y
467CONFIG_SERIAL_8250_NR_UARTS=4
468# CONFIG_SERIAL_8250_EXTENDED is not set
469 613
470# 614#
471# Non-8250 serial port support 615# Non-8250 serial port support
472# 616#
473CONFIG_SERIAL_CORE=y 617CONFIG_SERIAL_CORE=y
474CONFIG_SERIAL_CORE_CONSOLE=y 618CONFIG_SERIAL_CORE_CONSOLE=y
619CONFIG_SERIAL_VR41XX=y
620CONFIG_SERIAL_VR41XX_CONSOLE=y
621# CONFIG_SERIAL_JSM is not set
475CONFIG_UNIX98_PTYS=y 622CONFIG_UNIX98_PTYS=y
476CONFIG_LEGACY_PTYS=y 623CONFIG_LEGACY_PTYS=y
477CONFIG_LEGACY_PTY_COUNT=256 624CONFIG_LEGACY_PTY_COUNT=256
@@ -489,14 +636,22 @@ CONFIG_LEGACY_PTY_COUNT=256
489# CONFIG_GEN_RTC is not set 636# CONFIG_GEN_RTC is not set
490# CONFIG_DTLK is not set 637# CONFIG_DTLK is not set
491# CONFIG_R3964 is not set 638# CONFIG_R3964 is not set
639# CONFIG_APPLICOM is not set
640# CONFIG_TANBAC_TB0219 is not set
492 641
493# 642#
494# Ftape, the floppy tape device driver 643# Ftape, the floppy tape device driver
495# 644#
496# CONFIG_DRM is not set 645# CONFIG_DRM is not set
646CONFIG_GPIO_VR41XX=y
497# CONFIG_RAW_DRIVER is not set 647# CONFIG_RAW_DRIVER is not set
498 648
499# 649#
650# TPM devices
651#
652# CONFIG_TCG_TPM is not set
653
654#
500# I2C support 655# I2C support
501# 656#
502# CONFIG_I2C is not set 657# CONFIG_I2C is not set
@@ -507,10 +662,20 @@ CONFIG_LEGACY_PTY_COUNT=256
507# CONFIG_W1 is not set 662# CONFIG_W1 is not set
508 663
509# 664#
665# Hardware Monitoring support
666#
667# CONFIG_HWMON is not set
668# CONFIG_HWMON_VID is not set
669
670#
510# Misc devices 671# Misc devices
511# 672#
512 673
513# 674#
675# Multimedia Capabilities Port drivers
676#
677
678#
514# Multimedia devices 679# Multimedia devices
515# 680#
516# CONFIG_VIDEO_DEV is not set 681# CONFIG_VIDEO_DEV is not set
@@ -523,48 +688,147 @@ CONFIG_LEGACY_PTY_COUNT=256
523# 688#
524# Graphics support 689# Graphics support
525# 690#
526CONFIG_FB=y 691# CONFIG_FB is not set
527# CONFIG_FB_MODE_HELPERS is not set
528# CONFIG_FB_TILEBLITTING is not set
529# CONFIG_FB_VIRTUAL is not set
530 692
531# 693#
532# Console display driver support 694# Console display driver support
533# 695#
534# CONFIG_VGA_CONSOLE is not set 696# CONFIG_VGA_CONSOLE is not set
535CONFIG_DUMMY_CONSOLE=y 697CONFIG_DUMMY_CONSOLE=y
536# CONFIG_FRAMEBUFFER_CONSOLE is not set
537 698
538# 699#
539# Logo configuration 700# Sound
540# 701#
541# CONFIG_LOGO is not set 702# CONFIG_SOUND is not set
542# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
543 703
544# 704#
545# Sound 705# USB support
546# 706#
547CONFIG_SOUND=y 707CONFIG_USB_ARCH_HAS_HCD=y
708CONFIG_USB_ARCH_HAS_OHCI=y
709CONFIG_USB=y
710# CONFIG_USB_DEBUG is not set
548 711
549# 712#
550# Advanced Linux Sound Architecture 713# Miscellaneous USB options
551# 714#
552# CONFIG_SND is not set 715CONFIG_USB_DEVICEFS=y
716# CONFIG_USB_BANDWIDTH is not set
717# CONFIG_USB_DYNAMIC_MINORS is not set
718# CONFIG_USB_OTG is not set
553 719
554# 720#
555# Open Sound System 721# USB Host Controller Drivers
556# 722#
557# CONFIG_SOUND_PRIME is not set 723CONFIG_USB_EHCI_HCD=y
724# CONFIG_USB_EHCI_SPLIT_ISO is not set
725# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
726# CONFIG_USB_ISP116X_HCD is not set
727CONFIG_USB_OHCI_HCD=y
728# CONFIG_USB_OHCI_BIG_ENDIAN is not set
729CONFIG_USB_OHCI_LITTLE_ENDIAN=y
730# CONFIG_USB_UHCI_HCD is not set
731# CONFIG_USB_SL811_HCD is not set
558 732
559# 733#
560# USB support 734# USB Device Class drivers
561# 735#
562# CONFIG_USB_ARCH_HAS_HCD is not set 736# CONFIG_USB_BLUETOOTH_TTY is not set
563# CONFIG_USB_ARCH_HAS_OHCI is not set 737# CONFIG_USB_ACM is not set
738# CONFIG_USB_PRINTER is not set
564 739
565# 740#
566# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information 741# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
567# 742#
743CONFIG_USB_STORAGE=m
744# CONFIG_USB_STORAGE_DEBUG is not set
745# CONFIG_USB_STORAGE_DATAFAB is not set
746# CONFIG_USB_STORAGE_FREECOM is not set
747# CONFIG_USB_STORAGE_DPCM is not set
748# CONFIG_USB_STORAGE_USBAT is not set
749# CONFIG_USB_STORAGE_SDDR09 is not set
750# CONFIG_USB_STORAGE_SDDR55 is not set
751# CONFIG_USB_STORAGE_JUMPSHOT is not set
752
753#
754# USB Input Devices
755#
756# CONFIG_USB_HID is not set
757
758#
759# USB HID Boot Protocol drivers
760#
761# CONFIG_USB_KBD is not set
762# CONFIG_USB_MOUSE is not set
763# CONFIG_USB_AIPTEK is not set
764# CONFIG_USB_WACOM is not set
765# CONFIG_USB_ACECAD is not set
766# CONFIG_USB_KBTAB is not set
767# CONFIG_USB_POWERMATE is not set
768# CONFIG_USB_MTOUCH is not set
769# CONFIG_USB_ITMTOUCH is not set
770# CONFIG_USB_EGALAX is not set
771# CONFIG_USB_YEALINK is not set
772# CONFIG_USB_XPAD is not set
773# CONFIG_USB_ATI_REMOTE is not set
774# CONFIG_USB_KEYSPAN_REMOTE is not set
775# CONFIG_USB_APPLETOUCH is not set
776
777#
778# USB Imaging devices
779#
780# CONFIG_USB_MDC800 is not set
781# CONFIG_USB_MICROTEK is not set
782
783#
784# USB Multimedia devices
785#
786# CONFIG_USB_DABUSB is not set
787
788#
789# Video4Linux support is needed for USB Multimedia device support
790#
791
792#
793# USB Network Adapters
794#
795# CONFIG_USB_CATC is not set
796# CONFIG_USB_KAWETH is not set
797# CONFIG_USB_PEGASUS is not set
798# CONFIG_USB_RTL8150 is not set
799# CONFIG_USB_USBNET is not set
800CONFIG_USB_MON=y
801
802#
803# USB port drivers
804#
805
806#
807# USB Serial Converter support
808#
809# CONFIG_USB_SERIAL is not set
810
811#
812# USB Miscellaneous drivers
813#
814# CONFIG_USB_EMI62 is not set
815# CONFIG_USB_EMI26 is not set
816# CONFIG_USB_AUERSWALD is not set
817# CONFIG_USB_RIO500 is not set
818# CONFIG_USB_LEGOTOWER is not set
819# CONFIG_USB_LCD is not set
820# CONFIG_USB_LED is not set
821# CONFIG_USB_CYTHERM is not set
822# CONFIG_USB_PHIDGETKIT is not set
823# CONFIG_USB_PHIDGETSERVO is not set
824# CONFIG_USB_IDMOUSE is not set
825# CONFIG_USB_SISUSBVGA is not set
826# CONFIG_USB_LD is not set
827# CONFIG_USB_TEST is not set
828
829#
830# USB DSL modem support
831#
568 832
569# 833#
570# USB Gadget Support 834# USB Gadget Support
@@ -582,39 +846,41 @@ CONFIG_SOUND=y
582# CONFIG_INFINIBAND is not set 846# CONFIG_INFINIBAND is not set
583 847
584# 848#
849# SN Devices
850#
851
852#
585# File systems 853# File systems
586# 854#
587CONFIG_EXT2_FS=y 855CONFIG_EXT2_FS=y
588# CONFIG_EXT2_FS_XATTR is not set 856# CONFIG_EXT2_FS_XATTR is not set
857# CONFIG_EXT2_FS_XIP is not set
589# CONFIG_EXT3_FS is not set 858# CONFIG_EXT3_FS is not set
590# CONFIG_JBD is not set 859# CONFIG_JBD is not set
591# CONFIG_REISERFS_FS is not set 860# CONFIG_REISERFS_FS is not set
592# CONFIG_JFS_FS is not set 861# CONFIG_JFS_FS is not set
862# CONFIG_FS_POSIX_ACL is not set
593# CONFIG_XFS_FS is not set 863# CONFIG_XFS_FS is not set
594# CONFIG_MINIX_FS is not set 864# CONFIG_MINIX_FS is not set
595CONFIG_ROMFS_FS=m 865CONFIG_ROMFS_FS=m
866CONFIG_INOTIFY=y
596# CONFIG_QUOTA is not set 867# CONFIG_QUOTA is not set
597CONFIG_DNOTIFY=y 868CONFIG_DNOTIFY=y
598# CONFIG_AUTOFS_FS is not set 869# CONFIG_AUTOFS_FS is not set
599CONFIG_AUTOFS4_FS=y 870CONFIG_AUTOFS4_FS=y
871CONFIG_FUSE_FS=m
600 872
601# 873#
602# CD-ROM/DVD Filesystems 874# CD-ROM/DVD Filesystems
603# 875#
604CONFIG_ISO9660_FS=y 876# CONFIG_ISO9660_FS is not set
605CONFIG_JOLIET=y
606CONFIG_ZISOFS=y
607CONFIG_ZISOFS_FS=y
608# CONFIG_UDF_FS is not set 877# CONFIG_UDF_FS is not set
609 878
610# 879#
611# DOS/FAT/NT Filesystems 880# DOS/FAT/NT Filesystems
612# 881#
613CONFIG_FAT_FS=m 882# CONFIG_MSDOS_FS is not set
614CONFIG_MSDOS_FS=m 883# CONFIG_VFAT_FS is not set
615CONFIG_VFAT_FS=m
616CONFIG_FAT_DEFAULT_CODEPAGE=437
617CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
618# CONFIG_NTFS_FS is not set 884# CONFIG_NTFS_FS is not set
619 885
620# 886#
@@ -623,13 +889,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
623CONFIG_PROC_FS=y 889CONFIG_PROC_FS=y
624CONFIG_PROC_KCORE=y 890CONFIG_PROC_KCORE=y
625CONFIG_SYSFS=y 891CONFIG_SYSFS=y
626# CONFIG_DEVFS_FS is not set
627CONFIG_DEVPTS_FS_XATTR=y
628CONFIG_DEVPTS_FS_SECURITY=y
629CONFIG_TMPFS=y 892CONFIG_TMPFS=y
630# CONFIG_TMPFS_XATTR is not set
631# CONFIG_HUGETLB_PAGE is not set 893# CONFIG_HUGETLB_PAGE is not set
632CONFIG_RAMFS=y 894CONFIG_RAMFS=y
895CONFIG_RELAYFS_FS=m
633 896
634# 897#
635# Miscellaneous filesystems 898# Miscellaneous filesystems
@@ -653,16 +916,19 @@ CONFIG_CRAMFS=m
653# 916#
654CONFIG_NFS_FS=y 917CONFIG_NFS_FS=y
655CONFIG_NFS_V3=y 918CONFIG_NFS_V3=y
919# CONFIG_NFS_V3_ACL is not set
656# CONFIG_NFS_V4 is not set 920# CONFIG_NFS_V4 is not set
657# CONFIG_NFS_DIRECTIO is not set 921# CONFIG_NFS_DIRECTIO is not set
658CONFIG_NFSD=m 922CONFIG_NFSD=m
659CONFIG_NFSD_V3=y 923CONFIG_NFSD_V3=y
924# CONFIG_NFSD_V3_ACL is not set
660# CONFIG_NFSD_V4 is not set 925# CONFIG_NFSD_V4 is not set
661# CONFIG_NFSD_TCP is not set 926# CONFIG_NFSD_TCP is not set
662CONFIG_ROOT_NFS=y 927CONFIG_ROOT_NFS=y
663CONFIG_LOCKD=y 928CONFIG_LOCKD=y
664CONFIG_LOCKD_V4=y 929CONFIG_LOCKD_V4=y
665CONFIG_EXPORTFS=m 930CONFIG_EXPORTFS=m
931CONFIG_NFS_COMMON=y
666CONFIG_SUNRPC=y 932CONFIG_SUNRPC=y
667# CONFIG_RPCSEC_GSS_KRB5 is not set 933# CONFIG_RPCSEC_GSS_KRB5 is not set
668# CONFIG_RPCSEC_GSS_SPKM3 is not set 934# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -673,6 +939,7 @@ CONFIG_SMB_NLS_REMOTE="cp932"
673# CONFIG_NCP_FS is not set 939# CONFIG_NCP_FS is not set
674# CONFIG_CODA_FS is not set 940# CONFIG_CODA_FS is not set
675# CONFIG_AFS_FS is not set 941# CONFIG_AFS_FS is not set
942# CONFIG_9P_FS is not set
676 943
677# 944#
678# Partition Types 945# Partition Types
@@ -732,9 +999,11 @@ CONFIG_NLS_ISO8859_1=m
732# 999#
733# Kernel hacking 1000# Kernel hacking
734# 1001#
1002# CONFIG_PRINTK_TIME is not set
735# CONFIG_DEBUG_KERNEL is not set 1003# CONFIG_DEBUG_KERNEL is not set
1004CONFIG_LOG_BUF_SHIFT=14
736CONFIG_CROSSCOMPILE=y 1005CONFIG_CROSSCOMPILE=y
737CONFIG_CMDLINE="" 1006CONFIG_CMDLINE="mem=32M console=ttyVR0,115200"
738 1007
739# 1008#
740# Security options 1009# Security options
@@ -746,7 +1015,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
746# 1015#
747# Cryptographic options 1016# Cryptographic options
748# 1017#
749# CONFIG_CRYPTO is not set 1018CONFIG_CRYPTO=y
1019CONFIG_CRYPTO_HMAC=y
1020CONFIG_CRYPTO_NULL=m
1021CONFIG_CRYPTO_MD4=m
1022CONFIG_CRYPTO_MD5=m
1023CONFIG_CRYPTO_SHA1=m
1024CONFIG_CRYPTO_SHA256=m
1025CONFIG_CRYPTO_SHA512=m
1026CONFIG_CRYPTO_WP512=m
1027CONFIG_CRYPTO_TGR192=m
1028CONFIG_CRYPTO_DES=m
1029CONFIG_CRYPTO_BLOWFISH=m
1030CONFIG_CRYPTO_TWOFISH=m
1031CONFIG_CRYPTO_SERPENT=m
1032CONFIG_CRYPTO_AES=m
1033CONFIG_CRYPTO_CAST5=m
1034CONFIG_CRYPTO_CAST6=m
1035CONFIG_CRYPTO_TEA=m
1036CONFIG_CRYPTO_ARC4=m
1037CONFIG_CRYPTO_KHAZAD=m
1038CONFIG_CRYPTO_ANUBIS=m
1039CONFIG_CRYPTO_DEFLATE=m
1040CONFIG_CRYPTO_MICHAEL_MIC=m
1041CONFIG_CRYPTO_CRC32C=m
1042# CONFIG_CRYPTO_TEST is not set
750 1043
751# 1044#
752# Hardware crypto devices 1045# Hardware crypto devices
@@ -756,9 +1049,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
756# Library routines 1049# Library routines
757# 1050#
758CONFIG_CRC_CCITT=m 1051CONFIG_CRC_CCITT=m
759# CONFIG_CRC32 is not set 1052CONFIG_CRC16=m
760# CONFIG_LIBCRC32C is not set 1053CONFIG_CRC32=m
761CONFIG_ZLIB_INFLATE=y 1054CONFIG_LIBCRC32C=m
1055CONFIG_ZLIB_INFLATE=m
762CONFIG_ZLIB_DEFLATE=m 1056CONFIG_ZLIB_DEFLATE=m
763CONFIG_GENERIC_HARDIRQS=y
764CONFIG_GENERIC_IRQ_PROBE=y
diff --git a/arch/mips/configs/tb0229_defconfig b/arch/mips/configs/tb0229_defconfig
index 2cb669188aa9..ac8b64e87b8a 100644
--- a/arch/mips/configs/tb0229_defconfig
+++ b/arch/mips/configs/tb0229_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:12 2005 4# Thu Oct 20 22:27:13 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14 27CONFIG_HOTPLUG=y
29# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,58 +59,87 @@ CONFIG_KMOD=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60CONFIG_MACH_VR41XX=y 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_NEC_CMBVR4133 is not set 64# CONFIG_MIPS_PB1000 is not set
62# CONFIG_CASIO_E55 is not set 65# CONFIG_MIPS_PB1100 is not set
63# CONFIG_IBM_WORKPAD is not set 66# CONFIG_MIPS_PB1500 is not set
64# CONFIG_TANBAC_TB0226 is not set 67# CONFIG_MIPS_PB1550 is not set
65CONFIG_TANBAC_TB0229=y 68# CONFIG_MIPS_PB1200 is not set
66CONFIG_TANBAC_TB0219=y 69# CONFIG_MIPS_DB1000 is not set
67# CONFIG_VICTOR_MPC30X is not set 70# CONFIG_MIPS_DB1100 is not set
68# CONFIG_ZAO_CAPCELLA is not set 71# CONFIG_MIPS_DB1500 is not set
69CONFIG_PCI_VR41XX=y 72# CONFIG_MIPS_DB1550 is not set
70# CONFIG_VRC4173 is not set 73# CONFIG_MIPS_DB1200 is not set
71# CONFIG_TOSHIBA_JMR3927 is not set 74# CONFIG_MIPS_MIRAGE is not set
72# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
73# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
74# CONFIG_MIPS_EV64120 is not set 77# CONFIG_MIPS_EV64120 is not set
75# CONFIG_MIPS_EV96100 is not set 78# CONFIG_MIPS_EV96100 is not set
76# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
77# CONFIG_LASAT is not set
78# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
79# CONFIG_MIPS_ATLAS is not set 83# CONFIG_MIPS_ATLAS is not set
80# CONFIG_MIPS_MALTA is not set 84# CONFIG_MIPS_MALTA is not set
81# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
82# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
83# CONFIG_MOMENCO_OCELOT_G is not set
84# CONFIG_MOMENCO_OCELOT_C is not set
85# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
86# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
87# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
88# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
89# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
90# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
91# CONFIG_NEC_OSPREY is not set 98CONFIG_MACH_VR41XX=y
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
92# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
93# CONFIG_SOC_AU1X00 is not set 102# CONFIG_SGI_IP27 is not set
94# CONFIG_SIBYTE_SB1xxx_SOC is not set 103# CONFIG_SGI_IP32 is not set
104# CONFIG_SIBYTE_BIGSUR is not set
105# CONFIG_SIBYTE_SWARM is not set
106# CONFIG_SIBYTE_SENTOSA is not set
107# CONFIG_SIBYTE_RHONE is not set
108# CONFIG_SIBYTE_CARMEL is not set
109# CONFIG_SIBYTE_PTSWARM is not set
110# CONFIG_SIBYTE_LITTLESUR is not set
111# CONFIG_SIBYTE_CRHINE is not set
112# CONFIG_SIBYTE_CRHONE is not set
95# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
96# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
117# CONFIG_NEC_CMBVR4133 is not set
118# CONFIG_CASIO_E55 is not set
119# CONFIG_IBM_WORKPAD is not set
120CONFIG_TANBAC_TB022X=y
121# CONFIG_TANBAC_TB0226 is not set
122# CONFIG_VICTOR_MPC30X is not set
123# CONFIG_ZAO_CAPCELLA is not set
124CONFIG_PCI_VR41XX=y
125# CONFIG_VRC4173 is not set
97CONFIG_RWSEM_GENERIC_SPINLOCK=y 126CONFIG_RWSEM_GENERIC_SPINLOCK=y
98CONFIG_GENERIC_CALIBRATE_DELAY=y 127CONFIG_GENERIC_CALIBRATE_DELAY=y
99CONFIG_HAVE_DEC_LOCK=y
100CONFIG_DMA_NONCOHERENT=y 128CONFIG_DMA_NONCOHERENT=y
101CONFIG_DMA_NEED_PCI_MAP_STATE=y 129CONFIG_DMA_NEED_PCI_MAP_STATE=y
130# CONFIG_CPU_BIG_ENDIAN is not set
102CONFIG_CPU_LITTLE_ENDIAN=y 131CONFIG_CPU_LITTLE_ENDIAN=y
132CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
103CONFIG_IRQ_CPU=y 133CONFIG_IRQ_CPU=y
104CONFIG_MIPS_L1_CACHE_SHIFT=5 134CONFIG_MIPS_L1_CACHE_SHIFT=5
105 135
106# 136#
107# CPU selection 137# CPU selection
108# 138#
109# CONFIG_CPU_MIPS32 is not set 139# CONFIG_CPU_MIPS32_R1 is not set
110# CONFIG_CPU_MIPS64 is not set 140# CONFIG_CPU_MIPS32_R2 is not set
141# CONFIG_CPU_MIPS64_R1 is not set
142# CONFIG_CPU_MIPS64_R2 is not set
111# CONFIG_CPU_R3000 is not set 143# CONFIG_CPU_R3000 is not set
112# CONFIG_CPU_TX39XX is not set 144# CONFIG_CPU_TX39XX is not set
113CONFIG_CPU_VR41XX=y 145CONFIG_CPU_VR41XX=y
@@ -123,12 +155,36 @@ CONFIG_CPU_VR41XX=y
123# CONFIG_CPU_RM7000 is not set 155# CONFIG_CPU_RM7000 is not set
124# CONFIG_CPU_RM9000 is not set 156# CONFIG_CPU_RM9000 is not set
125# CONFIG_CPU_SB1 is not set 157# CONFIG_CPU_SB1 is not set
158CONFIG_SYS_HAS_CPU_VR41XX=y
159CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
160CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
161CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
162CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
163
164#
165# Kernel type
166#
167CONFIG_32BIT=y
168# CONFIG_64BIT is not set
126CONFIG_PAGE_SIZE_4KB=y 169CONFIG_PAGE_SIZE_4KB=y
127# CONFIG_PAGE_SIZE_8KB is not set 170# CONFIG_PAGE_SIZE_8KB is not set
128# CONFIG_PAGE_SIZE_16KB is not set 171# CONFIG_PAGE_SIZE_16KB is not set
129# CONFIG_PAGE_SIZE_64KB is not set 172# CONFIG_PAGE_SIZE_64KB is not set
173# CONFIG_MIPS_MT is not set
130# CONFIG_CPU_ADVANCED is not set 174# CONFIG_CPU_ADVANCED is not set
131CONFIG_CPU_HAS_SYNC=y 175CONFIG_CPU_HAS_SYNC=y
176CONFIG_GENERIC_HARDIRQS=y
177CONFIG_GENERIC_IRQ_PROBE=y
178CONFIG_ARCH_FLATMEM_ENABLE=y
179CONFIG_SELECT_MEMORY_MODEL=y
180CONFIG_FLATMEM_MANUAL=y
181# CONFIG_DISCONTIGMEM_MANUAL is not set
182# CONFIG_SPARSEMEM_MANUAL is not set
183CONFIG_FLATMEM=y
184CONFIG_FLAT_NODE_MEM_MAP=y
185# CONFIG_SPARSEMEM_STATIC is not set
186CONFIG_PREEMPT_NONE=y
187# CONFIG_PREEMPT_VOLUNTARY is not set
132# CONFIG_PREEMPT is not set 188# CONFIG_PREEMPT is not set
133 189
134# 190#
@@ -136,8 +192,7 @@ CONFIG_CPU_HAS_SYNC=y
136# 192#
137CONFIG_HW_HAS_PCI=y 193CONFIG_HW_HAS_PCI=y
138CONFIG_PCI=y 194CONFIG_PCI=y
139CONFIG_PCI_LEGACY_PROC=y 195# CONFIG_PCI_LEGACY_PROC is not set
140CONFIG_PCI_NAMES=y
141CONFIG_MMU=y 196CONFIG_MMU=y
142 197
143# 198#
@@ -146,10 +201,6 @@ CONFIG_MMU=y
146# CONFIG_PCCARD is not set 201# CONFIG_PCCARD is not set
147 202
148# 203#
149# PC-card bridges
150#
151
152#
153# PCI Hotplug Support 204# PCI Hotplug Support
154# 205#
155# CONFIG_HOTPLUG_PCI is not set 206# CONFIG_HOTPLUG_PCI is not set
@@ -162,6 +213,88 @@ CONFIG_BINFMT_ELF=y
162CONFIG_TRAD_SIGNALS=y 213CONFIG_TRAD_SIGNALS=y
163 214
164# 215#
216# Networking
217#
218CONFIG_NET=y
219
220#
221# Networking options
222#
223CONFIG_PACKET=y
224# CONFIG_PACKET_MMAP is not set
225CONFIG_UNIX=y
226CONFIG_XFRM=y
227CONFIG_XFRM_USER=m
228# CONFIG_NET_KEY is not set
229CONFIG_INET=y
230CONFIG_IP_MULTICAST=y
231CONFIG_IP_ADVANCED_ROUTER=y
232CONFIG_ASK_IP_FIB_HASH=y
233# CONFIG_IP_FIB_TRIE is not set
234CONFIG_IP_FIB_HASH=y
235CONFIG_IP_MULTIPLE_TABLES=y
236CONFIG_IP_ROUTE_MULTIPATH=y
237# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
238CONFIG_IP_ROUTE_VERBOSE=y
239CONFIG_IP_PNP=y
240# CONFIG_IP_PNP_DHCP is not set
241CONFIG_IP_PNP_BOOTP=y
242# CONFIG_IP_PNP_RARP is not set
243CONFIG_NET_IPIP=m
244CONFIG_NET_IPGRE=m
245# CONFIG_NET_IPGRE_BROADCAST is not set
246# CONFIG_IP_MROUTE is not set
247# CONFIG_ARPD is not set
248CONFIG_SYN_COOKIES=y
249# CONFIG_INET_AH is not set
250# CONFIG_INET_ESP is not set
251# CONFIG_INET_IPCOMP is not set
252CONFIG_INET_TUNNEL=m
253CONFIG_INET_DIAG=y
254CONFIG_INET_TCP_DIAG=y
255# CONFIG_TCP_CONG_ADVANCED is not set
256CONFIG_TCP_CONG_BIC=y
257# CONFIG_IPV6 is not set
258# CONFIG_NETFILTER is not set
259
260#
261# DCCP Configuration (EXPERIMENTAL)
262#
263# CONFIG_IP_DCCP is not set
264
265#
266# SCTP Configuration (EXPERIMENTAL)
267#
268# CONFIG_IP_SCTP is not set
269# CONFIG_ATM is not set
270# CONFIG_BRIDGE is not set
271# CONFIG_VLAN_8021Q is not set
272# CONFIG_DECNET is not set
273# CONFIG_LLC2 is not set
274# CONFIG_IPX is not set
275# CONFIG_ATALK is not set
276# CONFIG_X25 is not set
277# CONFIG_LAPB is not set
278# CONFIG_NET_DIVERT is not set
279# CONFIG_ECONET is not set
280# CONFIG_WAN_ROUTER is not set
281# CONFIG_NET_SCHED is not set
282# CONFIG_NET_CLS_ROUTE is not set
283
284#
285# Network testing
286#
287# CONFIG_NET_PKTGEN is not set
288# CONFIG_HAMRADIO is not set
289# CONFIG_IRDA is not set
290# CONFIG_BT is not set
291CONFIG_IEEE80211=m
292# CONFIG_IEEE80211_DEBUG is not set
293CONFIG_IEEE80211_CRYPT_WEP=m
294CONFIG_IEEE80211_CRYPT_CCMP=m
295CONFIG_IEEE80211_CRYPT_TKIP=m
296
297#
165# Device Drivers 298# Device Drivers
166# 299#
167 300
@@ -170,7 +303,12 @@ CONFIG_TRAD_SIGNALS=y
170# 303#
171CONFIG_STANDALONE=y 304CONFIG_STANDALONE=y
172CONFIG_PREVENT_FIRMWARE_BUILD=y 305CONFIG_PREVENT_FIRMWARE_BUILD=y
173# CONFIG_FW_LOADER is not set 306CONFIG_FW_LOADER=m
307
308#
309# Connector - unified userspace <-> kernelspace linker
310#
311CONFIG_CONNECTOR=m
174 312
175# 313#
176# Memory Technology Devices (MTD) 314# Memory Technology Devices (MTD)
@@ -189,7 +327,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
189# 327#
190# Block devices 328# Block devices
191# 329#
192# CONFIG_BLK_DEV_FD is not set
193# CONFIG_BLK_CPQ_DA is not set 330# CONFIG_BLK_CPQ_DA is not set
194# CONFIG_BLK_CPQ_CISS_DA is not set 331# CONFIG_BLK_CPQ_CISS_DA is not set
195# CONFIG_BLK_DEV_DAC960 is not set 332# CONFIG_BLK_DEV_DAC960 is not set
@@ -199,11 +336,11 @@ CONFIG_BLK_DEV_LOOP=m
199# CONFIG_BLK_DEV_CRYPTOLOOP is not set 336# CONFIG_BLK_DEV_CRYPTOLOOP is not set
200CONFIG_BLK_DEV_NBD=m 337CONFIG_BLK_DEV_NBD=m
201# CONFIG_BLK_DEV_SX8 is not set 338# CONFIG_BLK_DEV_SX8 is not set
339# CONFIG_BLK_DEV_UB is not set
202CONFIG_BLK_DEV_RAM=y 340CONFIG_BLK_DEV_RAM=y
203CONFIG_BLK_DEV_RAM_COUNT=16 341CONFIG_BLK_DEV_RAM_COUNT=16
204CONFIG_BLK_DEV_RAM_SIZE=4096 342CONFIG_BLK_DEV_RAM_SIZE=4096
205# CONFIG_BLK_DEV_INITRD is not set 343# CONFIG_BLK_DEV_INITRD is not set
206CONFIG_INITRAMFS_SOURCE=""
207# CONFIG_LBD is not set 344# CONFIG_LBD is not set
208CONFIG_CDROM_PKTCDVD=m 345CONFIG_CDROM_PKTCDVD=m
209CONFIG_CDROM_PKTCDVD_BUFFERS=8 346CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -226,6 +363,7 @@ CONFIG_ATA_OVER_ETH=m
226# 363#
227# SCSI device support 364# SCSI device support
228# 365#
366# CONFIG_RAID_ATTRS is not set
229# CONFIG_SCSI is not set 367# CONFIG_SCSI is not set
230 368
231# 369#
@@ -236,6 +374,7 @@ CONFIG_ATA_OVER_ETH=m
236# 374#
237# Fusion MPT device support 375# Fusion MPT device support
238# 376#
377# CONFIG_FUSION is not set
239 378
240# 379#
241# IEEE 1394 (FireWire) support 380# IEEE 1394 (FireWire) support
@@ -248,83 +387,13 @@ CONFIG_ATA_OVER_ETH=m
248# CONFIG_I2O is not set 387# CONFIG_I2O is not set
249 388
250# 389#
251# Networking support 390# Network device support
252#
253CONFIG_NET=y
254
255#
256# Networking options
257#
258CONFIG_PACKET=y
259# CONFIG_PACKET_MMAP is not set
260CONFIG_NETLINK_DEV=m
261CONFIG_UNIX=y
262# CONFIG_NET_KEY is not set
263CONFIG_INET=y
264CONFIG_IP_MULTICAST=y
265CONFIG_IP_ADVANCED_ROUTER=y
266CONFIG_IP_MULTIPLE_TABLES=y
267CONFIG_IP_ROUTE_MULTIPATH=y
268CONFIG_IP_ROUTE_VERBOSE=y
269CONFIG_IP_PNP=y
270# CONFIG_IP_PNP_DHCP is not set
271CONFIG_IP_PNP_BOOTP=y
272# CONFIG_IP_PNP_RARP is not set
273CONFIG_NET_IPIP=m
274CONFIG_NET_IPGRE=m
275# CONFIG_NET_IPGRE_BROADCAST is not set
276# CONFIG_IP_MROUTE is not set
277# CONFIG_ARPD is not set
278CONFIG_SYN_COOKIES=y
279# CONFIG_INET_AH is not set
280# CONFIG_INET_ESP is not set
281# CONFIG_INET_IPCOMP is not set
282CONFIG_INET_TUNNEL=m
283CONFIG_IP_TCPDIAG=m
284# CONFIG_IP_TCPDIAG_IPV6 is not set
285# CONFIG_IPV6 is not set
286# CONFIG_NETFILTER is not set
287CONFIG_XFRM=y
288CONFIG_XFRM_USER=m
289
290#
291# SCTP Configuration (EXPERIMENTAL)
292#
293# CONFIG_IP_SCTP is not set
294# CONFIG_ATM is not set
295# CONFIG_BRIDGE is not set
296# CONFIG_VLAN_8021Q is not set
297# CONFIG_DECNET is not set
298# CONFIG_LLC2 is not set
299# CONFIG_IPX is not set
300# CONFIG_ATALK is not set
301# CONFIG_X25 is not set
302# CONFIG_LAPB is not set
303# CONFIG_NET_DIVERT is not set
304# CONFIG_ECONET is not set
305# CONFIG_WAN_ROUTER is not set
306
307#
308# QoS and/or fair queueing
309#
310# CONFIG_NET_SCHED is not set
311# CONFIG_NET_CLS_ROUTE is not set
312
313#
314# Network testing
315# 391#
316# CONFIG_NET_PKTGEN is not set
317# CONFIG_NETPOLL is not set
318# CONFIG_NET_POLL_CONTROLLER is not set
319# CONFIG_HAMRADIO is not set
320# CONFIG_IRDA is not set
321# CONFIG_BT is not set
322CONFIG_NETDEVICES=y 392CONFIG_NETDEVICES=y
323CONFIG_DUMMY=m 393CONFIG_DUMMY=m
324# CONFIG_BONDING is not set 394# CONFIG_BONDING is not set
325# CONFIG_EQUALIZER is not set 395# CONFIG_EQUALIZER is not set
326# CONFIG_TUN is not set 396# CONFIG_TUN is not set
327# CONFIG_ETHERTAP is not set
328 397
329# 398#
330# ARCnet devices 399# ARCnet devices
@@ -332,6 +401,21 @@ CONFIG_DUMMY=m
332# CONFIG_ARCNET is not set 401# CONFIG_ARCNET is not set
333 402
334# 403#
404# PHY device support
405#
406CONFIG_PHYLIB=m
407CONFIG_PHYCONTROL=y
408
409#
410# MII PHY device drivers
411#
412CONFIG_MARVELL_PHY=m
413CONFIG_DAVICOM_PHY=m
414CONFIG_QSEMI_PHY=m
415CONFIG_LXT_PHY=m
416CONFIG_CICADA_PHY=m
417
418#
335# Ethernet (10 or 100Mbit) 419# Ethernet (10 or 100Mbit)
336# 420#
337CONFIG_NET_ETHERNET=y 421CONFIG_NET_ETHERNET=y
@@ -346,7 +430,7 @@ CONFIG_MII=y
346# CONFIG_NET_TULIP is not set 430# CONFIG_NET_TULIP is not set
347# CONFIG_HP100 is not set 431# CONFIG_HP100 is not set
348CONFIG_NET_PCI=y 432CONFIG_NET_PCI=y
349CONFIG_PCNET32=y 433# CONFIG_PCNET32 is not set
350# CONFIG_AMD8111_ETH is not set 434# CONFIG_AMD8111_ETH is not set
351# CONFIG_ADAPTEC_STARFIRE is not set 435# CONFIG_ADAPTEC_STARFIRE is not set
352# CONFIG_B44 is not set 436# CONFIG_B44 is not set
@@ -358,7 +442,11 @@ CONFIG_EEPRO100=y
358# CONFIG_NATSEMI is not set 442# CONFIG_NATSEMI is not set
359# CONFIG_NE2K_PCI is not set 443# CONFIG_NE2K_PCI is not set
360# CONFIG_8139CP is not set 444# CONFIG_8139CP is not set
361# CONFIG_8139TOO is not set 445CONFIG_8139TOO=y
446CONFIG_8139TOO_PIO=y
447# CONFIG_8139TOO_TUNE_TWISTER is not set
448# CONFIG_8139TOO_8129 is not set
449# CONFIG_8139_OLD_RX_RESET is not set
362# CONFIG_SIS900 is not set 450# CONFIG_SIS900 is not set
363# CONFIG_EPIC100 is not set 451# CONFIG_EPIC100 is not set
364# CONFIG_SUNDANCE is not set 452# CONFIG_SUNDANCE is not set
@@ -375,14 +463,19 @@ CONFIG_EEPRO100=y
375# CONFIG_NS83820 is not set 463# CONFIG_NS83820 is not set
376# CONFIG_HAMACHI is not set 464# CONFIG_HAMACHI is not set
377# CONFIG_YELLOWFIN is not set 465# CONFIG_YELLOWFIN is not set
378# CONFIG_R8169 is not set 466CONFIG_R8169=y
467# CONFIG_R8169_NAPI is not set
468# CONFIG_SIS190 is not set
469# CONFIG_SKGE is not set
379# CONFIG_SK98LIN is not set 470# CONFIG_SK98LIN is not set
380# CONFIG_VIA_VELOCITY is not set 471# CONFIG_VIA_VELOCITY is not set
381# CONFIG_TIGON3 is not set 472# CONFIG_TIGON3 is not set
473# CONFIG_BNX2 is not set
382 474
383# 475#
384# Ethernet (10000 Mbit) 476# Ethernet (10000 Mbit)
385# 477#
478# CONFIG_CHELSIO_T1 is not set
386# CONFIG_IXGB is not set 479# CONFIG_IXGB is not set
387# CONFIG_S2IO is not set 480# CONFIG_S2IO is not set
388 481
@@ -395,6 +488,8 @@ CONFIG_EEPRO100=y
395# Wireless LAN (non-hamradio) 488# Wireless LAN (non-hamradio)
396# 489#
397# CONFIG_NET_RADIO is not set 490# CONFIG_NET_RADIO is not set
491# CONFIG_IPW_DEBUG is not set
492CONFIG_IPW2200=m
398 493
399# 494#
400# Wan interfaces 495# Wan interfaces
@@ -416,6 +511,8 @@ CONFIG_SLIP_SMART=y
416CONFIG_SLIP_MODE_SLIP6=y 511CONFIG_SLIP_MODE_SLIP6=y
417# CONFIG_SHAPER is not set 512# CONFIG_SHAPER is not set
418# CONFIG_NETCONSOLE is not set 513# CONFIG_NETCONSOLE is not set
514# CONFIG_NETPOLL is not set
515# CONFIG_NET_POLL_CONTROLLER is not set
419 516
420# 517#
421# ISDN subsystem 518# ISDN subsystem
@@ -435,29 +532,13 @@ CONFIG_INPUT=y
435# 532#
436# Userland interfaces 533# Userland interfaces
437# 534#
438CONFIG_INPUT_MOUSEDEV=y 535# CONFIG_INPUT_MOUSEDEV is not set
439CONFIG_INPUT_MOUSEDEV_PSAUX=y
440CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
441CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
442# CONFIG_INPUT_JOYDEV is not set 536# CONFIG_INPUT_JOYDEV is not set
443# CONFIG_INPUT_TSDEV is not set 537# CONFIG_INPUT_TSDEV is not set
444# CONFIG_INPUT_EVDEV is not set 538# CONFIG_INPUT_EVDEV is not set
445# CONFIG_INPUT_EVBUG is not set 539# CONFIG_INPUT_EVBUG is not set
446 540
447# 541#
448# Input I/O drivers
449#
450# CONFIG_GAMEPORT is not set
451CONFIG_SOUND_GAMEPORT=y
452CONFIG_SERIO=y
453CONFIG_SERIO_I8042=y
454CONFIG_SERIO_SERPORT=y
455# CONFIG_SERIO_CT82C710 is not set
456# CONFIG_SERIO_PCIPS2 is not set
457# CONFIG_SERIO_LIBPS2 is not set
458CONFIG_SERIO_RAW=m
459
460#
461# Input Device Drivers 542# Input Device Drivers
462# 543#
463# CONFIG_INPUT_KEYBOARD is not set 544# CONFIG_INPUT_KEYBOARD is not set
@@ -467,6 +548,12 @@ CONFIG_SERIO_RAW=m
467# CONFIG_INPUT_MISC is not set 548# CONFIG_INPUT_MISC is not set
468 549
469# 550#
551# Hardware I/O ports
552#
553# CONFIG_SERIO is not set
554# CONFIG_GAMEPORT is not set
555
556#
470# Character devices 557# Character devices
471# 558#
472CONFIG_VT=y 559CONFIG_VT=y
@@ -477,16 +564,16 @@ CONFIG_HW_CONSOLE=y
477# 564#
478# Serial drivers 565# Serial drivers
479# 566#
480CONFIG_SERIAL_8250=y 567# CONFIG_SERIAL_8250 is not set
481CONFIG_SERIAL_8250_CONSOLE=y
482CONFIG_SERIAL_8250_NR_UARTS=4
483# CONFIG_SERIAL_8250_EXTENDED is not set
484 568
485# 569#
486# Non-8250 serial port support 570# Non-8250 serial port support
487# 571#
488CONFIG_SERIAL_CORE=y 572CONFIG_SERIAL_CORE=y
489CONFIG_SERIAL_CORE_CONSOLE=y 573CONFIG_SERIAL_CORE_CONSOLE=y
574CONFIG_SERIAL_VR41XX=y
575CONFIG_SERIAL_VR41XX_CONSOLE=y
576# CONFIG_SERIAL_JSM is not set
490CONFIG_UNIX98_PTYS=y 577CONFIG_UNIX98_PTYS=y
491CONFIG_LEGACY_PTYS=y 578CONFIG_LEGACY_PTYS=y
492CONFIG_LEGACY_PTY_COUNT=256 579CONFIG_LEGACY_PTY_COUNT=256
@@ -505,14 +592,21 @@ CONFIG_LEGACY_PTY_COUNT=256
505# CONFIG_DTLK is not set 592# CONFIG_DTLK is not set
506# CONFIG_R3964 is not set 593# CONFIG_R3964 is not set
507# CONFIG_APPLICOM is not set 594# CONFIG_APPLICOM is not set
595CONFIG_TANBAC_TB0219=y
508 596
509# 597#
510# Ftape, the floppy tape device driver 598# Ftape, the floppy tape device driver
511# 599#
512# CONFIG_DRM is not set 600# CONFIG_DRM is not set
601CONFIG_GPIO_VR41XX=y
513# CONFIG_RAW_DRIVER is not set 602# CONFIG_RAW_DRIVER is not set
514 603
515# 604#
605# TPM devices
606#
607# CONFIG_TCG_TPM is not set
608
609#
516# I2C support 610# I2C support
517# 611#
518# CONFIG_I2C is not set 612# CONFIG_I2C is not set
@@ -523,10 +617,20 @@ CONFIG_LEGACY_PTY_COUNT=256
523# CONFIG_W1 is not set 617# CONFIG_W1 is not set
524 618
525# 619#
620# Hardware Monitoring support
621#
622# CONFIG_HWMON is not set
623# CONFIG_HWMON_VID is not set
624
625#
526# Misc devices 626# Misc devices
527# 627#
528 628
529# 629#
630# Multimedia Capabilities Port drivers
631#
632
633#
530# Multimedia devices 634# Multimedia devices
531# 635#
532# CONFIG_VIDEO_DEV is not set 636# CONFIG_VIDEO_DEV is not set
@@ -546,7 +650,6 @@ CONFIG_LEGACY_PTY_COUNT=256
546# 650#
547# CONFIG_VGA_CONSOLE is not set 651# CONFIG_VGA_CONSOLE is not set
548CONFIG_DUMMY_CONSOLE=y 652CONFIG_DUMMY_CONSOLE=y
549# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
550 653
551# 654#
552# Sound 655# Sound
@@ -556,13 +659,122 @@ CONFIG_DUMMY_CONSOLE=y
556# 659#
557# USB support 660# USB support
558# 661#
559# CONFIG_USB is not set
560CONFIG_USB_ARCH_HAS_HCD=y 662CONFIG_USB_ARCH_HAS_HCD=y
561CONFIG_USB_ARCH_HAS_OHCI=y 663CONFIG_USB_ARCH_HAS_OHCI=y
664CONFIG_USB=m
665# CONFIG_USB_DEBUG is not set
666
667#
668# Miscellaneous USB options
669#
670CONFIG_USB_DEVICEFS=y
671# CONFIG_USB_BANDWIDTH is not set
672# CONFIG_USB_DYNAMIC_MINORS is not set
673# CONFIG_USB_OTG is not set
674
675#
676# USB Host Controller Drivers
677#
678CONFIG_USB_EHCI_HCD=m
679# CONFIG_USB_EHCI_SPLIT_ISO is not set
680# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
681# CONFIG_USB_ISP116X_HCD is not set
682CONFIG_USB_OHCI_HCD=m
683# CONFIG_USB_OHCI_BIG_ENDIAN is not set
684CONFIG_USB_OHCI_LITTLE_ENDIAN=y
685# CONFIG_USB_UHCI_HCD is not set
686# CONFIG_USB_SL811_HCD is not set
687
688#
689# USB Device Class drivers
690#
691# CONFIG_USB_BLUETOOTH_TTY is not set
692# CONFIG_USB_ACM is not set
693# CONFIG_USB_PRINTER is not set
562 694
563# 695#
564# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information 696# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
565# 697#
698# CONFIG_USB_STORAGE is not set
699
700#
701# USB Input Devices
702#
703# CONFIG_USB_HID is not set
704
705#
706# USB HID Boot Protocol drivers
707#
708# CONFIG_USB_KBD is not set
709# CONFIG_USB_MOUSE is not set
710# CONFIG_USB_AIPTEK is not set
711# CONFIG_USB_WACOM is not set
712# CONFIG_USB_ACECAD is not set
713# CONFIG_USB_KBTAB is not set
714# CONFIG_USB_POWERMATE is not set
715# CONFIG_USB_MTOUCH is not set
716# CONFIG_USB_ITMTOUCH is not set
717# CONFIG_USB_EGALAX is not set
718# CONFIG_USB_YEALINK is not set
719# CONFIG_USB_XPAD is not set
720# CONFIG_USB_ATI_REMOTE is not set
721# CONFIG_USB_KEYSPAN_REMOTE is not set
722# CONFIG_USB_APPLETOUCH is not set
723
724#
725# USB Imaging devices
726#
727# CONFIG_USB_MDC800 is not set
728
729#
730# USB Multimedia devices
731#
732# CONFIG_USB_DABUSB is not set
733
734#
735# Video4Linux support is needed for USB Multimedia device support
736#
737
738#
739# USB Network Adapters
740#
741# CONFIG_USB_CATC is not set
742# CONFIG_USB_KAWETH is not set
743# CONFIG_USB_PEGASUS is not set
744# CONFIG_USB_RTL8150 is not set
745# CONFIG_USB_USBNET is not set
746CONFIG_USB_MON=y
747
748#
749# USB port drivers
750#
751
752#
753# USB Serial Converter support
754#
755# CONFIG_USB_SERIAL is not set
756
757#
758# USB Miscellaneous drivers
759#
760# CONFIG_USB_EMI62 is not set
761# CONFIG_USB_EMI26 is not set
762# CONFIG_USB_AUERSWALD is not set
763# CONFIG_USB_RIO500 is not set
764# CONFIG_USB_LEGOTOWER is not set
765# CONFIG_USB_LCD is not set
766# CONFIG_USB_LED is not set
767# CONFIG_USB_CYTHERM is not set
768# CONFIG_USB_PHIDGETKIT is not set
769# CONFIG_USB_PHIDGETSERVO is not set
770# CONFIG_USB_IDMOUSE is not set
771# CONFIG_USB_SISUSBVGA is not set
772# CONFIG_USB_LD is not set
773# CONFIG_USB_TEST is not set
774
775#
776# USB DSL modem support
777#
566 778
567# 779#
568# USB Gadget Support 780# USB Gadget Support
@@ -580,10 +792,15 @@ CONFIG_USB_ARCH_HAS_OHCI=y
580# CONFIG_INFINIBAND is not set 792# CONFIG_INFINIBAND is not set
581 793
582# 794#
795# SN Devices
796#
797
798#
583# File systems 799# File systems
584# 800#
585CONFIG_EXT2_FS=y 801CONFIG_EXT2_FS=y
586# CONFIG_EXT2_FS_XATTR is not set 802# CONFIG_EXT2_FS_XATTR is not set
803# CONFIG_EXT2_FS_XIP is not set
587CONFIG_EXT3_FS=m 804CONFIG_EXT3_FS=m
588CONFIG_EXT3_FS_XATTR=y 805CONFIG_EXT3_FS_XATTR=y
589# CONFIG_EXT3_FS_POSIX_ACL is not set 806# CONFIG_EXT3_FS_POSIX_ACL is not set
@@ -597,18 +814,22 @@ CONFIG_JFS_FS=m
597# CONFIG_JFS_SECURITY is not set 814# CONFIG_JFS_SECURITY is not set
598# CONFIG_JFS_DEBUG is not set 815# CONFIG_JFS_DEBUG is not set
599# CONFIG_JFS_STATISTICS is not set 816# CONFIG_JFS_STATISTICS is not set
817# CONFIG_FS_POSIX_ACL is not set
600CONFIG_XFS_FS=y 818CONFIG_XFS_FS=y
601# CONFIG_XFS_RT is not set 819CONFIG_XFS_EXPORT=y
602CONFIG_XFS_QUOTA=y 820CONFIG_XFS_QUOTA=y
603# CONFIG_XFS_SECURITY is not set 821# CONFIG_XFS_SECURITY is not set
604CONFIG_XFS_POSIX_ACL=y 822CONFIG_XFS_POSIX_ACL=y
823# CONFIG_XFS_RT is not set
605# CONFIG_MINIX_FS is not set 824# CONFIG_MINIX_FS is not set
606CONFIG_ROMFS_FS=m 825CONFIG_ROMFS_FS=m
826CONFIG_INOTIFY=y
607# CONFIG_QUOTA is not set 827# CONFIG_QUOTA is not set
608CONFIG_QUOTACTL=y 828CONFIG_QUOTACTL=y
609CONFIG_DNOTIFY=y 829CONFIG_DNOTIFY=y
610# CONFIG_AUTOFS_FS is not set 830# CONFIG_AUTOFS_FS is not set
611CONFIG_AUTOFS4_FS=y 831CONFIG_AUTOFS4_FS=y
832CONFIG_FUSE_FS=m
612 833
613# 834#
614# CD-ROM/DVD Filesystems 835# CD-ROM/DVD Filesystems
@@ -635,13 +856,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
635CONFIG_PROC_FS=y 856CONFIG_PROC_FS=y
636CONFIG_PROC_KCORE=y 857CONFIG_PROC_KCORE=y
637CONFIG_SYSFS=y 858CONFIG_SYSFS=y
638# CONFIG_DEVFS_FS is not set
639CONFIG_DEVPTS_FS_XATTR=y
640CONFIG_DEVPTS_FS_SECURITY=y
641CONFIG_TMPFS=y 859CONFIG_TMPFS=y
642# CONFIG_TMPFS_XATTR is not set
643# CONFIG_HUGETLB_PAGE is not set 860# CONFIG_HUGETLB_PAGE is not set
644CONFIG_RAMFS=y 861CONFIG_RAMFS=y
862CONFIG_RELAYFS_FS=m
645 863
646# 864#
647# Miscellaneous filesystems 865# Miscellaneous filesystems
@@ -665,16 +883,19 @@ CONFIG_CRAMFS=m
665# 883#
666CONFIG_NFS_FS=y 884CONFIG_NFS_FS=y
667CONFIG_NFS_V3=y 885CONFIG_NFS_V3=y
886# CONFIG_NFS_V3_ACL is not set
668# CONFIG_NFS_V4 is not set 887# CONFIG_NFS_V4 is not set
669# CONFIG_NFS_DIRECTIO is not set 888# CONFIG_NFS_DIRECTIO is not set
670CONFIG_NFSD=y 889CONFIG_NFSD=y
671CONFIG_NFSD_V3=y 890CONFIG_NFSD_V3=y
891# CONFIG_NFSD_V3_ACL is not set
672# CONFIG_NFSD_V4 is not set 892# CONFIG_NFSD_V4 is not set
673CONFIG_NFSD_TCP=y 893CONFIG_NFSD_TCP=y
674CONFIG_ROOT_NFS=y 894CONFIG_ROOT_NFS=y
675CONFIG_LOCKD=y 895CONFIG_LOCKD=y
676CONFIG_LOCKD_V4=y 896CONFIG_LOCKD_V4=y
677CONFIG_EXPORTFS=y 897CONFIG_EXPORTFS=y
898CONFIG_NFS_COMMON=y
678CONFIG_SUNRPC=y 899CONFIG_SUNRPC=y
679# CONFIG_RPCSEC_GSS_KRB5 is not set 900# CONFIG_RPCSEC_GSS_KRB5 is not set
680# CONFIG_RPCSEC_GSS_SPKM3 is not set 901# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -685,6 +906,7 @@ CONFIG_SMB_NLS_REMOTE="cp932"
685# CONFIG_NCP_FS is not set 906# CONFIG_NCP_FS is not set
686# CONFIG_CODA_FS is not set 907# CONFIG_CODA_FS is not set
687# CONFIG_AFS_FS is not set 908# CONFIG_AFS_FS is not set
909# CONFIG_9P_FS is not set
688 910
689# 911#
690# Partition Types 912# Partition Types
@@ -744,9 +966,11 @@ CONFIG_NLS_ISO8859_1=m
744# 966#
745# Kernel hacking 967# Kernel hacking
746# 968#
969# CONFIG_PRINTK_TIME is not set
747# CONFIG_DEBUG_KERNEL is not set 970# CONFIG_DEBUG_KERNEL is not set
971CONFIG_LOG_BUF_SHIFT=14
748CONFIG_CROSSCOMPILE=y 972CONFIG_CROSSCOMPILE=y
749CONFIG_CMDLINE="mem=64M console=ttyS0,38400 ip=bootp root=/dev/nfs" 973CONFIG_CMDLINE="mem=64M console=ttyVR0,115200 ip=any root=/dev/nfs"
750 974
751# 975#
752# Security options 976# Security options
@@ -758,7 +982,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
758# 982#
759# Cryptographic options 983# Cryptographic options
760# 984#
761# CONFIG_CRYPTO is not set 985CONFIG_CRYPTO=y
986CONFIG_CRYPTO_HMAC=y
987CONFIG_CRYPTO_NULL=m
988CONFIG_CRYPTO_MD4=m
989CONFIG_CRYPTO_MD5=m
990CONFIG_CRYPTO_SHA1=m
991CONFIG_CRYPTO_SHA256=m
992CONFIG_CRYPTO_SHA512=m
993CONFIG_CRYPTO_WP512=m
994CONFIG_CRYPTO_TGR192=m
995CONFIG_CRYPTO_DES=m
996CONFIG_CRYPTO_BLOWFISH=m
997CONFIG_CRYPTO_TWOFISH=m
998CONFIG_CRYPTO_SERPENT=m
999CONFIG_CRYPTO_AES=m
1000CONFIG_CRYPTO_CAST5=m
1001CONFIG_CRYPTO_CAST6=m
1002CONFIG_CRYPTO_TEA=m
1003CONFIG_CRYPTO_ARC4=m
1004CONFIG_CRYPTO_KHAZAD=m
1005CONFIG_CRYPTO_ANUBIS=m
1006CONFIG_CRYPTO_DEFLATE=m
1007CONFIG_CRYPTO_MICHAEL_MIC=m
1008CONFIG_CRYPTO_CRC32C=m
1009# CONFIG_CRYPTO_TEST is not set
762 1010
763# 1011#
764# Hardware crypto devices 1012# Hardware crypto devices
@@ -768,9 +1016,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
768# Library routines 1016# Library routines
769# 1017#
770CONFIG_CRC_CCITT=m 1018CONFIG_CRC_CCITT=m
1019CONFIG_CRC16=m
771CONFIG_CRC32=y 1020CONFIG_CRC32=y
772# CONFIG_LIBCRC32C is not set 1021CONFIG_LIBCRC32C=m
773CONFIG_ZLIB_INFLATE=y 1022CONFIG_ZLIB_INFLATE=y
774CONFIG_ZLIB_DEFLATE=m 1023CONFIG_ZLIB_DEFLATE=m
775CONFIG_GENERIC_HARDIRQS=y
776CONFIG_GENERIC_IRQ_PROBE=y
diff --git a/arch/mips/configs/tb0287_defconfig b/arch/mips/configs/tb0287_defconfig
index 17b9f2f65ba0..95344832d66e 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.13-mm1 3# Linux kernel version: 2.6.14-rc5-mm1
4# Thu Sep 1 22:58:34 2005 4# Tue Oct 25 00:20:22 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -19,6 +19,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
19CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y 20CONFIG_LOCALVERSION_AUTO=y
21CONFIG_SWAP=y 21CONFIG_SWAP=y
22CONFIG_SWAP_PREFETCH=y
22CONFIG_SYSVIPC=y 23CONFIG_SYSVIPC=y
23# CONFIG_POSIX_MQUEUE is not set 24# CONFIG_POSIX_MQUEUE is not set
24# CONFIG_BSD_PROCESS_ACCT is not set 25# CONFIG_BSD_PROCESS_ACCT is not set
@@ -55,74 +56,91 @@ CONFIG_OBSOLETE_MODPARM=y
55CONFIG_MODVERSIONS=y 56CONFIG_MODVERSIONS=y
56CONFIG_MODULE_SRCVERSION_ALL=y 57CONFIG_MODULE_SRCVERSION_ALL=y
57CONFIG_KMOD=y 58CONFIG_KMOD=y
58CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
59CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
60CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
61CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
62
63#
64# Kernel type
65#
66CONFIG_32BIT=y
67# CONFIG_64BIT is not set
68 59
69# 60#
70# Machine selection 61# Machine selection
71# 62#
72# CONFIG_MACH_JAZZ is not set 63# CONFIG_MIPS_MTX1 is not set
73CONFIG_MACH_VR41XX=y 64# CONFIG_MIPS_BOSPORUS is not set
74# CONFIG_NEC_CMBVR4133 is not set 65# CONFIG_MIPS_PB1000 is not set
75# CONFIG_CASIO_E55 is not set 66# CONFIG_MIPS_PB1100 is not set
76# CONFIG_IBM_WORKPAD is not set 67# CONFIG_MIPS_PB1500 is not set
77CONFIG_TANBAC_TB022X=y 68# CONFIG_MIPS_PB1550 is not set
78# CONFIG_TANBAC_TB0226 is not set 69# CONFIG_MIPS_PB1200 is not set
79CONFIG_TANBAC_TB0287=y 70# CONFIG_MIPS_DB1000 is not set
80# CONFIG_VICTOR_MPC30X is not set 71# CONFIG_MIPS_DB1100 is not set
81# CONFIG_ZAO_CAPCELLA is not set 72# CONFIG_MIPS_DB1500 is not set
82CONFIG_PCI_VR41XX=y 73# CONFIG_MIPS_DB1550 is not set
83# CONFIG_VRC4173 is not set 74# CONFIG_MIPS_DB1200 is not set
84# CONFIG_TOSHIBA_JMR3927 is not set 75# CONFIG_MIPS_MIRAGE is not set
85# CONFIG_MIPS_COBALT is not set 76# CONFIG_MIPS_COBALT is not set
86# CONFIG_MACH_DECSTATION is not set 77# CONFIG_MACH_DECSTATION is not set
87# CONFIG_MIPS_EV64120 is not set 78# CONFIG_MIPS_EV64120 is not set
88# CONFIG_MIPS_EV96100 is not set 79# CONFIG_MIPS_EV96100 is not set
89# CONFIG_MIPS_IVR is not set 80# CONFIG_MIPS_IVR is not set
90# CONFIG_LASAT is not set
91# CONFIG_MIPS_ITE8172 is not set 81# CONFIG_MIPS_ITE8172 is not set
82# CONFIG_MACH_JAZZ is not set
83# CONFIG_LASAT is not set
92# CONFIG_MIPS_ATLAS is not set 84# CONFIG_MIPS_ATLAS is not set
93# CONFIG_MIPS_MALTA is not set 85# CONFIG_MIPS_MALTA is not set
94# CONFIG_MIPS_SEAD is not set 86# CONFIG_MIPS_SEAD is not set
87# CONFIG_MIPS_SIM is not set
88# CONFIG_MOMENCO_JAGUAR_ATX is not set
95# CONFIG_MOMENCO_OCELOT is not set 89# CONFIG_MOMENCO_OCELOT is not set
96# CONFIG_MOMENCO_OCELOT_G is not set
97# CONFIG_MOMENCO_OCELOT_C is not set
98# CONFIG_MOMENCO_OCELOT_3 is not set 90# CONFIG_MOMENCO_OCELOT_3 is not set
99# CONFIG_MOMENCO_JAGUAR_ATX is not set 91# CONFIG_MOMENCO_OCELOT_C is not set
100# CONFIG_PMC_YOSEMITE is not set 92# CONFIG_MOMENCO_OCELOT_G is not set
93# CONFIG_MIPS_XXS1500 is not set
94# CONFIG_PNX8550_V2PCI is not set
95# CONFIG_PNX8550_JBS is not set
101# CONFIG_DDB5074 is not set 96# CONFIG_DDB5074 is not set
102# CONFIG_DDB5476 is not set 97# CONFIG_DDB5476 is not set
103# CONFIG_DDB5477 is not set 98# CONFIG_DDB5477 is not set
99CONFIG_MACH_VR41XX=y
100# CONFIG_PMC_YOSEMITE is not set
104# CONFIG_QEMU is not set 101# CONFIG_QEMU is not set
105# CONFIG_SGI_IP22 is not set 102# CONFIG_SGI_IP22 is not set
106# CONFIG_SGI_IP27 is not set 103# CONFIG_SGI_IP27 is not set
107# CONFIG_SGI_IP32 is not set 104# CONFIG_SGI_IP32 is not set
108# CONFIG_SOC_AU1X00 is not set 105# CONFIG_SIBYTE_SWARM is not set
109# CONFIG_SIBYTE_SB1xxx_SOC is not set 106# CONFIG_SIBYTE_SENTOSA is not set
107# CONFIG_SIBYTE_RHONE is not set
108# CONFIG_SIBYTE_CARMEL is not set
109# CONFIG_SIBYTE_PTSWARM is not set
110# CONFIG_SIBYTE_LITTLESUR is not set
111# CONFIG_SIBYTE_CRHINE is not set
112# CONFIG_SIBYTE_CRHONE is not set
110# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
111# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
117# CONFIG_CASIO_E55 is not set
118# CONFIG_IBM_WORKPAD is not set
119# CONFIG_NEC_CMBVR4133 is not set
120CONFIG_TANBAC_TB022X=y
121# CONFIG_TANBAC_TB0226 is not set
122CONFIG_TANBAC_TB0287=y
123# CONFIG_VICTOR_MPC30X is not set
124# CONFIG_ZAO_CAPCELLA is not set
125CONFIG_PCI_VR41XX=y
126# CONFIG_VRC4173 is not set
112CONFIG_RWSEM_GENERIC_SPINLOCK=y 127CONFIG_RWSEM_GENERIC_SPINLOCK=y
113CONFIG_GENERIC_CALIBRATE_DELAY=y 128CONFIG_GENERIC_CALIBRATE_DELAY=y
114CONFIG_HAVE_DEC_LOCK=y
115CONFIG_DMA_NONCOHERENT=y 129CONFIG_DMA_NONCOHERENT=y
116CONFIG_DMA_NEED_PCI_MAP_STATE=y 130CONFIG_DMA_NEED_PCI_MAP_STATE=y
131# CONFIG_CPU_BIG_ENDIAN is not set
117CONFIG_CPU_LITTLE_ENDIAN=y 132CONFIG_CPU_LITTLE_ENDIAN=y
133CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
118CONFIG_IRQ_CPU=y 134CONFIG_IRQ_CPU=y
119CONFIG_MIPS_L1_CACHE_SHIFT=5 135CONFIG_MIPS_L1_CACHE_SHIFT=5
120 136
121# 137#
122# CPU selection 138# CPU selection
123# 139#
124# CONFIG_CPU_MIPS32 is not set 140# CONFIG_CPU_MIPS32_R1 is not set
125# CONFIG_CPU_MIPS64 is not set 141# CONFIG_CPU_MIPS32_R2 is not set
142# CONFIG_CPU_MIPS64_R1 is not set
143# CONFIG_CPU_MIPS64_R2 is not set
126# CONFIG_CPU_R3000 is not set 144# CONFIG_CPU_R3000 is not set
127# CONFIG_CPU_TX39XX is not set 145# CONFIG_CPU_TX39XX is not set
128CONFIG_CPU_VR41XX=y 146CONFIG_CPU_VR41XX=y
@@ -138,12 +156,25 @@ CONFIG_CPU_VR41XX=y
138# CONFIG_CPU_RM7000 is not set 156# CONFIG_CPU_RM7000 is not set
139# CONFIG_CPU_RM9000 is not set 157# CONFIG_CPU_RM9000 is not set
140# CONFIG_CPU_SB1 is not set 158# CONFIG_CPU_SB1 is not set
159CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
160CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
161CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
162CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
163
164#
165# Kernel type
166#
167CONFIG_32BIT=y
168# CONFIG_64BIT is not set
141CONFIG_PAGE_SIZE_4KB=y 169CONFIG_PAGE_SIZE_4KB=y
142# CONFIG_PAGE_SIZE_8KB is not set 170# CONFIG_PAGE_SIZE_8KB is not set
143# CONFIG_PAGE_SIZE_16KB is not set 171# CONFIG_PAGE_SIZE_16KB is not set
144# CONFIG_PAGE_SIZE_64KB is not set 172# CONFIG_PAGE_SIZE_64KB is not set
173# CONFIG_MIPS_MT is not set
145# CONFIG_CPU_ADVANCED is not set 174# CONFIG_CPU_ADVANCED is not set
146CONFIG_CPU_HAS_SYNC=y 175CONFIG_CPU_HAS_SYNC=y
176CONFIG_GENERIC_HARDIRQS=y
177CONFIG_GENERIC_IRQ_PROBE=y
147CONFIG_ARCH_FLATMEM_ENABLE=y 178CONFIG_ARCH_FLATMEM_ENABLE=y
148CONFIG_SELECT_MEMORY_MODEL=y 179CONFIG_SELECT_MEMORY_MODEL=y
149CONFIG_FLATMEM_MANUAL=y 180CONFIG_FLATMEM_MANUAL=y
@@ -152,6 +183,9 @@ CONFIG_FLATMEM_MANUAL=y
152CONFIG_FLATMEM=y 183CONFIG_FLATMEM=y
153CONFIG_FLAT_NODE_MEM_MAP=y 184CONFIG_FLAT_NODE_MEM_MAP=y
154# CONFIG_SPARSEMEM_STATIC is not set 185# CONFIG_SPARSEMEM_STATIC is not set
186CONFIG_SPLIT_PTLOCK_CPUS=4
187CONFIG_PREEMPT_NONE=y
188# CONFIG_PREEMPT_VOLUNTARY is not set
155# CONFIG_PREEMPT is not set 189# CONFIG_PREEMPT is not set
156 190
157# 191#
@@ -262,7 +296,6 @@ CONFIG_TCP_CONG_HTCP=m
262# Network testing 296# Network testing
263# 297#
264# CONFIG_NET_PKTGEN is not set 298# CONFIG_NET_PKTGEN is not set
265# CONFIG_NETFILTER_NETLINK is not set
266# CONFIG_HAMRADIO is not set 299# CONFIG_HAMRADIO is not set
267# CONFIG_IRDA is not set 300# CONFIG_IRDA is not set
268# CONFIG_BT is not set 301# CONFIG_BT is not set
@@ -280,6 +313,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
280# CONFIG_FW_LOADER is not set 313# CONFIG_FW_LOADER is not set
281 314
282# 315#
316# Connector - unified userspace <-> kernelspace linker
317#
318# CONFIG_CONNECTOR is not set
319
320#
283# Memory Technology Devices (MTD) 321# Memory Technology Devices (MTD)
284# 322#
285# CONFIG_MTD is not set 323# CONFIG_MTD is not set
@@ -296,7 +334,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
296# 334#
297# Block devices 335# Block devices
298# 336#
299# CONFIG_BLK_DEV_FD is not set
300# CONFIG_BLK_CPQ_DA is not set 337# CONFIG_BLK_CPQ_DA is not set
301# CONFIG_BLK_CPQ_CISS_DA is not set 338# CONFIG_BLK_CPQ_CISS_DA is not set
302# CONFIG_BLK_DEV_DAC960 is not set 339# CONFIG_BLK_DEV_DAC960 is not set
@@ -312,6 +349,7 @@ CONFIG_BLK_DEV_RAM_COUNT=16
312CONFIG_BLK_DEV_RAM_SIZE=4096 349CONFIG_BLK_DEV_RAM_SIZE=4096
313# CONFIG_BLK_DEV_INITRD is not set 350# CONFIG_BLK_DEV_INITRD is not set
314# CONFIG_LBD is not set 351# CONFIG_LBD is not set
352# CONFIG_BLK_DEV_IO_TRACE is not set
315# CONFIG_CDROM_PKTCDVD is not set 353# CONFIG_CDROM_PKTCDVD is not set
316 354
317# 355#
@@ -321,6 +359,11 @@ CONFIG_IOSCHED_NOOP=y
321CONFIG_IOSCHED_AS=y 359CONFIG_IOSCHED_AS=y
322CONFIG_IOSCHED_DEADLINE=y 360CONFIG_IOSCHED_DEADLINE=y
323CONFIG_IOSCHED_CFQ=y 361CONFIG_IOSCHED_CFQ=y
362CONFIG_DEFAULT_AS=y
363# CONFIG_DEFAULT_DEADLINE is not set
364# CONFIG_DEFAULT_CFQ is not set
365# CONFIG_DEFAULT_NOOP is not set
366CONFIG_DEFAULT_IOSCHED="anticipatory"
324# CONFIG_ATA_OVER_ETH is not set 367# CONFIG_ATA_OVER_ETH is not set
325 368
326# 369#
@@ -410,13 +453,20 @@ CONFIG_BLK_DEV_SD=y
410# CONFIG_SCSI_SPI_ATTRS is not set 453# CONFIG_SCSI_SPI_ATTRS is not set
411# CONFIG_SCSI_FC_ATTRS is not set 454# CONFIG_SCSI_FC_ATTRS is not set
412# CONFIG_SCSI_ISCSI_ATTRS is not set 455# CONFIG_SCSI_ISCSI_ATTRS is not set
456# CONFIG_SCSI_SAS_ATTRS is not set
457
458#
459# SCSI Transport Layers
460#
461# CONFIG_SAS_CLASS is not set
413 462
414# 463#
415# SCSI low-level drivers 464# SCSI low-level drivers
416# 465#
466# CONFIG_ISCSI_TCP is not set
467# CONFIG_SCSI_ARCMSR is not set
417# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 468# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
418# CONFIG_SCSI_3W_9XXX is not set 469# CONFIG_SCSI_3W_9XXX is not set
419# CONFIG_SCSI_ARCMSR is not set
420# CONFIG_SCSI_ACARD is not set 470# CONFIG_SCSI_ACARD is not set
421# CONFIG_SCSI_AACRAID is not set 471# CONFIG_SCSI_AACRAID is not set
422# CONFIG_SCSI_AIC7XXX is not set 472# CONFIG_SCSI_AIC7XXX is not set
@@ -425,12 +475,10 @@ CONFIG_BLK_DEV_SD=y
425# CONFIG_SCSI_DPT_I2O is not set 475# CONFIG_SCSI_DPT_I2O is not set
426# CONFIG_MEGARAID_NEWGEN is not set 476# CONFIG_MEGARAID_NEWGEN is not set
427# CONFIG_MEGARAID_LEGACY is not set 477# CONFIG_MEGARAID_LEGACY is not set
478# CONFIG_MEGARAID_SAS is not set
428# CONFIG_SCSI_SATA is not set 479# CONFIG_SCSI_SATA is not set
429# CONFIG_SCSI_BUSLOGIC is not set
430# CONFIG_SCSI_DMX3191D is not set 480# CONFIG_SCSI_DMX3191D is not set
431# CONFIG_SCSI_EATA is not set
432# CONFIG_SCSI_FUTURE_DOMAIN is not set 481# CONFIG_SCSI_FUTURE_DOMAIN is not set
433# CONFIG_SCSI_GDTH is not set
434# CONFIG_SCSI_IPS is not set 482# CONFIG_SCSI_IPS is not set
435# CONFIG_SCSI_INITIO is not set 483# CONFIG_SCSI_INITIO is not set
436# CONFIG_SCSI_INIA100 is not set 484# CONFIG_SCSI_INIA100 is not set
@@ -462,6 +510,7 @@ CONFIG_SCSI_QLA2XXX=y
462# CONFIG_FUSION is not set 510# CONFIG_FUSION is not set
463# CONFIG_FUSION_SPI is not set 511# CONFIG_FUSION_SPI is not set
464# CONFIG_FUSION_FC is not set 512# CONFIG_FUSION_FC is not set
513# CONFIG_FUSION_SAS is not set
465 514
466# 515#
467# IEEE 1394 (FireWire) support 516# IEEE 1394 (FireWire) support
@@ -529,6 +578,7 @@ CONFIG_NET_ETHERNET=y
529CONFIG_MII=y 578CONFIG_MII=y
530# CONFIG_HAPPYMEAL is not set 579# CONFIG_HAPPYMEAL is not set
531# CONFIG_SUNGEM is not set 580# CONFIG_SUNGEM is not set
581# CONFIG_CASSINI is not set
532# CONFIG_NET_VENDOR_3COM is not set 582# CONFIG_NET_VENDOR_3COM is not set
533 583
534# 584#
@@ -572,6 +622,7 @@ CONFIG_R8169=y
572# Wireless LAN (non-hamradio) 622# Wireless LAN (non-hamradio)
573# 623#
574# CONFIG_NET_RADIO is not set 624# CONFIG_NET_RADIO is not set
625# CONFIG_HOSTAP is not set
575 626
576# 627#
577# Wan interfaces 628# Wan interfaces
@@ -682,6 +733,7 @@ CONFIG_GPIO_VR41XX=y
682# TPM devices 733# TPM devices
683# 734#
684# CONFIG_TCG_TPM is not set 735# CONFIG_TCG_TPM is not set
736# CONFIG_TELCLOCK is not set
685 737
686# 738#
687# I2C support 739# I2C support
@@ -770,12 +822,15 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
770# 822#
771# USB Device Class drivers 823# USB Device Class drivers
772# 824#
773# CONFIG_USB_BLUETOOTH_TTY is not set
774# CONFIG_USB_ACM is not set 825# CONFIG_USB_ACM is not set
775# CONFIG_USB_PRINTER is not set 826# CONFIG_USB_PRINTER is not set
776 827
777# 828#
778# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information 829# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
830#
831
832#
833# may also be needed; see USB_STORAGE Help for more information
779# 834#
780CONFIG_USB_STORAGE=m 835CONFIG_USB_STORAGE=m
781# CONFIG_USB_STORAGE_DEBUG is not set 836# CONFIG_USB_STORAGE_DEBUG is not set
@@ -891,6 +946,11 @@ CONFIG_USB_MON=y
891# 946#
892 947
893# 948#
949# EDAC - error detection and reporting (RAS)
950#
951# CONFIG_EDAC is not set
952
953#
894# Distributed Lock Manager 954# Distributed Lock Manager
895# 955#
896# CONFIG_DLM is not set 956# CONFIG_DLM is not set
@@ -901,20 +961,22 @@ CONFIG_USB_MON=y
901CONFIG_EXT2_FS=y 961CONFIG_EXT2_FS=y
902# CONFIG_EXT2_FS_XATTR is not set 962# CONFIG_EXT2_FS_XATTR is not set
903# CONFIG_EXT2_FS_XIP is not set 963# CONFIG_EXT2_FS_XIP is not set
904# CONFIG_EXT3_FS is not set 964CONFIG_EXT3_FS=y
965CONFIG_EXT3_FS_XATTR=y
966# CONFIG_EXT3_FS_POSIX_ACL is not set
967# CONFIG_EXT3_FS_SECURITY is not set
968CONFIG_JBD=y
969# CONFIG_JBD_DEBUG is not set
970CONFIG_FS_MBCACHE=y
905# CONFIG_REISER4_FS is not set 971# CONFIG_REISER4_FS is not set
906# CONFIG_REISERFS_FS is not set 972# CONFIG_REISERFS_FS is not set
907# CONFIG_JFS_FS is not set 973# CONFIG_JFS_FS is not set
908# CONFIG_FS_POSIX_ACL is not set 974# CONFIG_FS_POSIX_ACL is not set
909
910#
911# XFS support
912#
913CONFIG_XFS_FS=y 975CONFIG_XFS_FS=y
914# CONFIG_XFS_RT is not set
915CONFIG_XFS_QUOTA=y 976CONFIG_XFS_QUOTA=y
916# CONFIG_XFS_SECURITY is not set 977# CONFIG_XFS_SECURITY is not set
917CONFIG_XFS_POSIX_ACL=y 978CONFIG_XFS_POSIX_ACL=y
979# CONFIG_XFS_RT is not set
918# CONFIG_OCFS2_FS is not set 980# CONFIG_OCFS2_FS is not set
919# CONFIG_MINIX_FS is not set 981# CONFIG_MINIX_FS is not set
920CONFIG_ROMFS_FS=m 982CONFIG_ROMFS_FS=m
@@ -948,8 +1010,8 @@ CONFIG_SYSFS=y
948CONFIG_TMPFS=y 1010CONFIG_TMPFS=y
949# CONFIG_HUGETLB_PAGE is not set 1011# CONFIG_HUGETLB_PAGE is not set
950CONFIG_RAMFS=y 1012CONFIG_RAMFS=y
951# CONFIG_CONFIGFS_FS is not set
952# CONFIG_RELAYFS_FS is not set 1013# CONFIG_RELAYFS_FS is not set
1014# CONFIG_CONFIGFS_FS is not set
953 1015
954# 1016#
955# Miscellaneous filesystems 1017# Miscellaneous filesystems
@@ -1004,6 +1066,11 @@ CONFIG_MSDOS_PARTITION=y
1004# CONFIG_NLS is not set 1066# CONFIG_NLS is not set
1005 1067
1006# 1068#
1069# Profiling support
1070#
1071# CONFIG_PROFILING is not set
1072
1073#
1007# Kernel hacking 1074# Kernel hacking
1008# 1075#
1009# CONFIG_PRINTK_TIME is not set 1076# CONFIG_PRINTK_TIME is not set
@@ -1036,6 +1103,3 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
1036CONFIG_CRC32=y 1103CONFIG_CRC32=y
1037# CONFIG_LIBCRC32C is not set 1104# CONFIG_LIBCRC32C is not set
1038CONFIG_ZLIB_INFLATE=m 1105CONFIG_ZLIB_INFLATE=m
1039CONFIG_GENERIC_HARDIRQS=y
1040CONFIG_GENERIC_IRQ_PROBE=y
1041CONFIG_ISA_DMA_API=y
diff --git a/arch/mips/configs/workpad_defconfig b/arch/mips/configs/workpad_defconfig
index 16e07fca446f..ab13621ef3b9 100644
--- a/arch/mips/configs/workpad_defconfig
+++ b/arch/mips/configs/workpad_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:12 2005 4# Thu Oct 20 22:27:16 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,24 +11,29 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14 27CONFIG_HOTPLUG=y
29# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 29# CONFIG_IKCONFIG is not set
30CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 31CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 32CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_PRINTK=y
35CONFIG_BUG=y
36CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 37CONFIG_FUTEX=y
36CONFIG_EPOLL=y 38CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -41,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 45# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0
44 47
45# 48#
46# Loadable module support 49# Loadable module support
@@ -56,56 +59,84 @@ CONFIG_KMOD=y
56# 59#
57# Machine selection 60# Machine selection
58# 61#
59# CONFIG_MACH_JAZZ is not set 62# CONFIG_MIPS_MTX1 is not set
60CONFIG_MACH_VR41XX=y 63# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_NEC_CMBVR4133 is not set 64# CONFIG_MIPS_PB1000 is not set
62# CONFIG_CASIO_E55 is not set 65# CONFIG_MIPS_PB1100 is not set
63CONFIG_IBM_WORKPAD=y 66# CONFIG_MIPS_PB1500 is not set
64# CONFIG_TANBAC_TB0226 is not set 67# CONFIG_MIPS_PB1550 is not set
65# CONFIG_TANBAC_TB0229 is not set 68# CONFIG_MIPS_PB1200 is not set
66# CONFIG_VICTOR_MPC30X is not set 69# CONFIG_MIPS_DB1000 is not set
67# CONFIG_ZAO_CAPCELLA is not set 70# CONFIG_MIPS_DB1100 is not set
68CONFIG_VRC4171=y 71# CONFIG_MIPS_DB1500 is not set
69# CONFIG_TOSHIBA_JMR3927 is not set 72# CONFIG_MIPS_DB1550 is not set
73# CONFIG_MIPS_DB1200 is not set
74# CONFIG_MIPS_MIRAGE is not set
70# CONFIG_MIPS_COBALT is not set 75# CONFIG_MIPS_COBALT is not set
71# CONFIG_MACH_DECSTATION is not set 76# CONFIG_MACH_DECSTATION is not set
72# CONFIG_MIPS_EV64120 is not set 77# CONFIG_MIPS_EV64120 is not set
73# CONFIG_MIPS_EV96100 is not set 78# CONFIG_MIPS_EV96100 is not set
74# CONFIG_MIPS_IVR is not set 79# CONFIG_MIPS_IVR is not set
75# CONFIG_LASAT is not set
76# CONFIG_MIPS_ITE8172 is not set 80# CONFIG_MIPS_ITE8172 is not set
81# CONFIG_MACH_JAZZ is not set
82# CONFIG_LASAT is not set
77# CONFIG_MIPS_ATLAS is not set 83# CONFIG_MIPS_ATLAS is not set
78# CONFIG_MIPS_MALTA is not set 84# CONFIG_MIPS_MALTA is not set
79# CONFIG_MIPS_SEAD is not set 85# CONFIG_MIPS_SEAD is not set
86# CONFIG_MIPS_SIM is not set
87# CONFIG_MOMENCO_JAGUAR_ATX is not set
80# CONFIG_MOMENCO_OCELOT is not set 88# CONFIG_MOMENCO_OCELOT is not set
81# CONFIG_MOMENCO_OCELOT_G is not set
82# CONFIG_MOMENCO_OCELOT_C is not set
83# CONFIG_MOMENCO_OCELOT_3 is not set 89# CONFIG_MOMENCO_OCELOT_3 is not set
84# CONFIG_MOMENCO_JAGUAR_ATX is not set 90# CONFIG_MOMENCO_OCELOT_C is not set
85# CONFIG_PMC_YOSEMITE is not set 91# CONFIG_MOMENCO_OCELOT_G is not set
92# CONFIG_MIPS_XXS1500 is not set
93# CONFIG_PNX8550_V2PCI is not set
94# CONFIG_PNX8550_JBS is not set
86# CONFIG_DDB5074 is not set 95# CONFIG_DDB5074 is not set
87# CONFIG_DDB5476 is not set 96# CONFIG_DDB5476 is not set
88# CONFIG_DDB5477 is not set 97# CONFIG_DDB5477 is not set
89# CONFIG_NEC_OSPREY is not set 98CONFIG_MACH_VR41XX=y
99# CONFIG_PMC_YOSEMITE is not set
100# CONFIG_QEMU is not set
90# CONFIG_SGI_IP22 is not set 101# CONFIG_SGI_IP22 is not set
91# CONFIG_SOC_AU1X00 is not set 102# CONFIG_SGI_IP27 is not set
92# CONFIG_SIBYTE_SB1xxx_SOC is not set 103# CONFIG_SGI_IP32 is not set
104# CONFIG_SIBYTE_BIGSUR is not set
105# CONFIG_SIBYTE_SWARM is not set
106# CONFIG_SIBYTE_SENTOSA is not set
107# CONFIG_SIBYTE_RHONE is not set
108# CONFIG_SIBYTE_CARMEL is not set
109# CONFIG_SIBYTE_PTSWARM is not set
110# CONFIG_SIBYTE_LITTLESUR is not set
111# CONFIG_SIBYTE_CRHINE is not set
112# CONFIG_SIBYTE_CRHONE is not set
93# CONFIG_SNI_RM200_PCI is not set 113# CONFIG_SNI_RM200_PCI is not set
114# CONFIG_TOSHIBA_JMR3927 is not set
94# CONFIG_TOSHIBA_RBTX4927 is not set 115# CONFIG_TOSHIBA_RBTX4927 is not set
116# CONFIG_TOSHIBA_RBTX4938 is not set
117# CONFIG_NEC_CMBVR4133 is not set
118# CONFIG_CASIO_E55 is not set
119CONFIG_IBM_WORKPAD=y
120# CONFIG_TANBAC_TB022X is not set
121# CONFIG_VICTOR_MPC30X is not set
122# CONFIG_ZAO_CAPCELLA is not set
95CONFIG_RWSEM_GENERIC_SPINLOCK=y 123CONFIG_RWSEM_GENERIC_SPINLOCK=y
96CONFIG_GENERIC_CALIBRATE_DELAY=y 124CONFIG_GENERIC_CALIBRATE_DELAY=y
97CONFIG_HAVE_DEC_LOCK=y
98CONFIG_DMA_NONCOHERENT=y 125CONFIG_DMA_NONCOHERENT=y
99CONFIG_DMA_NEED_PCI_MAP_STATE=y 126CONFIG_DMA_NEED_PCI_MAP_STATE=y
127# CONFIG_CPU_BIG_ENDIAN is not set
100CONFIG_CPU_LITTLE_ENDIAN=y 128CONFIG_CPU_LITTLE_ENDIAN=y
129CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
101CONFIG_IRQ_CPU=y 130CONFIG_IRQ_CPU=y
102CONFIG_MIPS_L1_CACHE_SHIFT=5 131CONFIG_MIPS_L1_CACHE_SHIFT=5
103 132
104# 133#
105# CPU selection 134# CPU selection
106# 135#
107# CONFIG_CPU_MIPS32 is not set 136# CONFIG_CPU_MIPS32_R1 is not set
108# CONFIG_CPU_MIPS64 is not set 137# CONFIG_CPU_MIPS32_R2 is not set
138# CONFIG_CPU_MIPS64_R1 is not set
139# CONFIG_CPU_MIPS64_R2 is not set
109# CONFIG_CPU_R3000 is not set 140# CONFIG_CPU_R3000 is not set
110# CONFIG_CPU_TX39XX is not set 141# CONFIG_CPU_TX39XX is not set
111CONFIG_CPU_VR41XX=y 142CONFIG_CPU_VR41XX=y
@@ -121,12 +152,36 @@ CONFIG_CPU_VR41XX=y
121# CONFIG_CPU_RM7000 is not set 152# CONFIG_CPU_RM7000 is not set
122# CONFIG_CPU_RM9000 is not set 153# CONFIG_CPU_RM9000 is not set
123# CONFIG_CPU_SB1 is not set 154# CONFIG_CPU_SB1 is not set
155CONFIG_SYS_HAS_CPU_VR41XX=y
156CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
157CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
158CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
159CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
160
161#
162# Kernel type
163#
164CONFIG_32BIT=y
165# CONFIG_64BIT is not set
124CONFIG_PAGE_SIZE_4KB=y 166CONFIG_PAGE_SIZE_4KB=y
125# CONFIG_PAGE_SIZE_8KB is not set 167# CONFIG_PAGE_SIZE_8KB is not set
126# CONFIG_PAGE_SIZE_16KB is not set 168# CONFIG_PAGE_SIZE_16KB is not set
127# CONFIG_PAGE_SIZE_64KB is not set 169# CONFIG_PAGE_SIZE_64KB is not set
170# CONFIG_MIPS_MT is not set
128# CONFIG_CPU_ADVANCED is not set 171# CONFIG_CPU_ADVANCED is not set
129CONFIG_CPU_HAS_SYNC=y 172CONFIG_CPU_HAS_SYNC=y
173CONFIG_GENERIC_HARDIRQS=y
174CONFIG_GENERIC_IRQ_PROBE=y
175CONFIG_ARCH_FLATMEM_ENABLE=y
176CONFIG_SELECT_MEMORY_MODEL=y
177CONFIG_FLATMEM_MANUAL=y
178# CONFIG_DISCONTIGMEM_MANUAL is not set
179# CONFIG_SPARSEMEM_MANUAL is not set
180CONFIG_FLATMEM=y
181CONFIG_FLAT_NODE_MEM_MAP=y
182# CONFIG_SPARSEMEM_STATIC is not set
183CONFIG_PREEMPT_NONE=y
184# CONFIG_PREEMPT_VOLUNTARY is not set
130# CONFIG_PREEMPT is not set 185# CONFIG_PREEMPT is not set
131 186
132# 187#
@@ -138,11 +193,17 @@ CONFIG_MMU=y
138# 193#
139# PCCARD (PCMCIA/CardBus) support 194# PCCARD (PCMCIA/CardBus) support
140# 195#
141# CONFIG_PCCARD is not set 196CONFIG_PCCARD=y
197# CONFIG_PCMCIA_DEBUG is not set
198CONFIG_PCMCIA=y
199CONFIG_PCMCIA_LOAD_CIS=y
200CONFIG_PCMCIA_IOCTL=y
142 201
143# 202#
144# PC-card bridges 203# PC-card bridges
145# 204#
205# CONFIG_I82365 is not set
206# CONFIG_TCIC is not set
146CONFIG_PCMCIA_PROBE=y 207CONFIG_PCMCIA_PROBE=y
147 208
148# 209#
@@ -157,6 +218,78 @@ CONFIG_BINFMT_ELF=y
157CONFIG_TRAD_SIGNALS=y 218CONFIG_TRAD_SIGNALS=y
158 219
159# 220#
221# Networking
222#
223CONFIG_NET=y
224
225#
226# Networking options
227#
228CONFIG_PACKET=y
229CONFIG_PACKET_MMAP=y
230CONFIG_UNIX=y
231CONFIG_XFRM=y
232CONFIG_XFRM_USER=m
233CONFIG_NET_KEY=y
234CONFIG_INET=y
235CONFIG_IP_MULTICAST=y
236# CONFIG_IP_ADVANCED_ROUTER is not set
237CONFIG_IP_FIB_HASH=y
238# CONFIG_IP_PNP is not set
239# CONFIG_NET_IPIP is not set
240# CONFIG_NET_IPGRE is not set
241# CONFIG_IP_MROUTE is not set
242# CONFIG_ARPD is not set
243# CONFIG_SYN_COOKIES is not set
244# CONFIG_INET_AH is not set
245# CONFIG_INET_ESP is not set
246# CONFIG_INET_IPCOMP is not set
247CONFIG_INET_TUNNEL=m
248CONFIG_INET_DIAG=y
249CONFIG_INET_TCP_DIAG=y
250# CONFIG_TCP_CONG_ADVANCED is not set
251CONFIG_TCP_CONG_BIC=y
252# CONFIG_IPV6 is not set
253# CONFIG_NETFILTER is not set
254
255#
256# DCCP Configuration (EXPERIMENTAL)
257#
258# CONFIG_IP_DCCP is not set
259
260#
261# SCTP Configuration (EXPERIMENTAL)
262#
263# CONFIG_IP_SCTP is not set
264# CONFIG_ATM is not set
265# CONFIG_BRIDGE is not set
266# CONFIG_VLAN_8021Q is not set
267# CONFIG_DECNET is not set
268# CONFIG_LLC2 is not set
269# CONFIG_IPX is not set
270# CONFIG_ATALK is not set
271# CONFIG_X25 is not set
272# CONFIG_LAPB is not set
273# CONFIG_NET_DIVERT is not set
274# CONFIG_ECONET is not set
275# CONFIG_WAN_ROUTER is not set
276# CONFIG_NET_SCHED is not set
277# CONFIG_NET_CLS_ROUTE is not set
278
279#
280# Network testing
281#
282# CONFIG_NET_PKTGEN is not set
283# CONFIG_HAMRADIO is not set
284# CONFIG_IRDA is not set
285# CONFIG_BT is not set
286CONFIG_IEEE80211=m
287# CONFIG_IEEE80211_DEBUG is not set
288CONFIG_IEEE80211_CRYPT_WEP=m
289CONFIG_IEEE80211_CRYPT_CCMP=m
290CONFIG_IEEE80211_CRYPT_TKIP=m
291
292#
160# Device Drivers 293# Device Drivers
161# 294#
162 295
@@ -165,7 +298,12 @@ CONFIG_TRAD_SIGNALS=y
165# 298#
166CONFIG_STANDALONE=y 299CONFIG_STANDALONE=y
167CONFIG_PREVENT_FIRMWARE_BUILD=y 300CONFIG_PREVENT_FIRMWARE_BUILD=y
168# CONFIG_FW_LOADER is not set 301CONFIG_FW_LOADER=y
302
303#
304# Connector - unified userspace <-> kernelspace linker
305#
306CONFIG_CONNECTOR=m
169 307
170# 308#
171# Memory Technology Devices (MTD) 309# Memory Technology Devices (MTD)
@@ -185,18 +323,13 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
185# 323#
186# Block devices 324# Block devices
187# 325#
188# CONFIG_BLK_DEV_FD is not set
189# CONFIG_BLK_DEV_XD is not set
190# CONFIG_BLK_DEV_COW_COMMON is not set 326# CONFIG_BLK_DEV_COW_COMMON is not set
191# CONFIG_BLK_DEV_LOOP is not set 327# CONFIG_BLK_DEV_LOOP is not set
192# CONFIG_BLK_DEV_NBD is not set 328# CONFIG_BLK_DEV_NBD is not set
193# CONFIG_BLK_DEV_RAM is not set 329# CONFIG_BLK_DEV_RAM is not set
194CONFIG_BLK_DEV_RAM_COUNT=16 330CONFIG_BLK_DEV_RAM_COUNT=16
195CONFIG_INITRAMFS_SOURCE=""
196# CONFIG_LBD is not set 331# CONFIG_LBD is not set
197CONFIG_CDROM_PKTCDVD=m 332# CONFIG_CDROM_PKTCDVD is not set
198CONFIG_CDROM_PKTCDVD_BUFFERS=8
199# CONFIG_CDROM_PKTCDVD_WCACHE is not set
200 333
201# 334#
202# IO Schedulers 335# IO Schedulers
@@ -219,6 +352,7 @@ CONFIG_BLK_DEV_IDE=y
219# CONFIG_BLK_DEV_IDE_SATA is not set 352# CONFIG_BLK_DEV_IDE_SATA is not set
220CONFIG_BLK_DEV_IDEDISK=y 353CONFIG_BLK_DEV_IDEDISK=y
221# CONFIG_IDEDISK_MULTI_MODE is not set 354# CONFIG_IDEDISK_MULTI_MODE is not set
355CONFIG_BLK_DEV_IDECS=m
222# CONFIG_BLK_DEV_IDECD is not set 356# CONFIG_BLK_DEV_IDECD is not set
223# CONFIG_BLK_DEV_IDETAPE is not set 357# CONFIG_BLK_DEV_IDETAPE is not set
224# CONFIG_BLK_DEV_IDEFLOPPY is not set 358# CONFIG_BLK_DEV_IDEFLOPPY is not set
@@ -237,6 +371,7 @@ CONFIG_IDE_GENERIC=y
237# 371#
238# SCSI device support 372# SCSI device support
239# 373#
374# CONFIG_RAID_ATTRS is not set
240# CONFIG_SCSI is not set 375# CONFIG_SCSI is not set
241 376
242# 377#
@@ -252,6 +387,7 @@ CONFIG_IDE_GENERIC=y
252# 387#
253# Fusion MPT device support 388# Fusion MPT device support
254# 389#
390# CONFIG_FUSION is not set
255 391
256# 392#
257# IEEE 1394 (FireWire) support 393# IEEE 1394 (FireWire) support
@@ -262,76 +398,13 @@ CONFIG_IDE_GENERIC=y
262# 398#
263 399
264# 400#
265# Networking support 401# Network device support
266#
267CONFIG_NET=y
268
269# 402#
270# Networking options
271#
272CONFIG_PACKET=y
273CONFIG_PACKET_MMAP=y
274CONFIG_NETLINK_DEV=y
275CONFIG_UNIX=y
276CONFIG_NET_KEY=y
277CONFIG_INET=y
278CONFIG_IP_MULTICAST=y
279# CONFIG_IP_ADVANCED_ROUTER is not set
280# CONFIG_IP_PNP is not set
281# CONFIG_NET_IPIP is not set
282# CONFIG_NET_IPGRE is not set
283# CONFIG_IP_MROUTE is not set
284# CONFIG_ARPD is not set
285# CONFIG_SYN_COOKIES is not set
286# CONFIG_INET_AH is not set
287# CONFIG_INET_ESP is not set
288# CONFIG_INET_IPCOMP is not set
289CONFIG_INET_TUNNEL=m
290CONFIG_IP_TCPDIAG=m
291# CONFIG_IP_TCPDIAG_IPV6 is not set
292# CONFIG_IPV6 is not set
293# CONFIG_NETFILTER is not set
294CONFIG_XFRM=y
295CONFIG_XFRM_USER=m
296
297#
298# SCTP Configuration (EXPERIMENTAL)
299#
300# CONFIG_IP_SCTP is not set
301# CONFIG_ATM is not set
302# CONFIG_BRIDGE is not set
303# CONFIG_VLAN_8021Q is not set
304# CONFIG_DECNET is not set
305# CONFIG_LLC2 is not set
306# CONFIG_IPX is not set
307# CONFIG_ATALK is not set
308# CONFIG_X25 is not set
309# CONFIG_LAPB is not set
310# CONFIG_NET_DIVERT is not set
311# CONFIG_ECONET is not set
312# CONFIG_WAN_ROUTER is not set
313
314#
315# QoS and/or fair queueing
316#
317# CONFIG_NET_SCHED is not set
318# CONFIG_NET_CLS_ROUTE is not set
319
320#
321# Network testing
322#
323# CONFIG_NET_PKTGEN is not set
324# CONFIG_NETPOLL is not set
325# CONFIG_NET_POLL_CONTROLLER is not set
326# CONFIG_HAMRADIO is not set
327# CONFIG_IRDA is not set
328# CONFIG_BT is not set
329CONFIG_NETDEVICES=y 403CONFIG_NETDEVICES=y
330# CONFIG_DUMMY is not set 404# CONFIG_DUMMY is not set
331# CONFIG_BONDING is not set 405# CONFIG_BONDING is not set
332# CONFIG_EQUALIZER is not set 406# CONFIG_EQUALIZER is not set
333# CONFIG_TUN is not set 407# CONFIG_TUN is not set
334# CONFIG_ETHERTAP is not set
335 408
336# 409#
337# ARCnet devices 410# ARCnet devices
@@ -339,12 +412,26 @@ CONFIG_NETDEVICES=y
339# CONFIG_ARCNET is not set 412# CONFIG_ARCNET is not set
340 413
341# 414#
415# PHY device support
416#
417CONFIG_PHYLIB=m
418CONFIG_PHYCONTROL=y
419
420#
421# MII PHY device drivers
422#
423CONFIG_MARVELL_PHY=m
424CONFIG_DAVICOM_PHY=m
425CONFIG_QSEMI_PHY=m
426CONFIG_LXT_PHY=m
427CONFIG_CICADA_PHY=m
428
429#
342# Ethernet (10 or 100Mbit) 430# Ethernet (10 or 100Mbit)
343# 431#
344CONFIG_NET_ETHERNET=y 432CONFIG_NET_ETHERNET=y
345# CONFIG_MII is not set 433CONFIG_MII=m
346# CONFIG_NET_VENDOR_3COM is not set 434# CONFIG_NET_VENDOR_3COM is not set
347# CONFIG_LANCE is not set
348# CONFIG_NET_VENDOR_SMC is not set 435# CONFIG_NET_VENDOR_SMC is not set
349# CONFIG_NET_VENDOR_RACAL is not set 436# CONFIG_NET_VENDOR_RACAL is not set
350# CONFIG_AT1700 is not set 437# CONFIG_AT1700 is not set
@@ -373,6 +460,19 @@ CONFIG_NET_ETHERNET=y
373# CONFIG_NET_RADIO is not set 460# CONFIG_NET_RADIO is not set
374 461
375# 462#
463# PCMCIA network device support
464#
465CONFIG_NET_PCMCIA=y
466CONFIG_PCMCIA_3C589=m
467CONFIG_PCMCIA_3C574=m
468CONFIG_PCMCIA_FMVJ18X=m
469CONFIG_PCMCIA_PCNET=m
470CONFIG_PCMCIA_NMCLAN=m
471CONFIG_PCMCIA_SMC91C92=m
472CONFIG_PCMCIA_XIRC2PS=m
473CONFIG_PCMCIA_AXNET=m
474
475#
376# Wan interfaces 476# Wan interfaces
377# 477#
378# CONFIG_WAN is not set 478# CONFIG_WAN is not set
@@ -380,6 +480,8 @@ CONFIG_NET_ETHERNET=y
380# CONFIG_SLIP is not set 480# CONFIG_SLIP is not set
381# CONFIG_SHAPER is not set 481# CONFIG_SHAPER is not set
382# CONFIG_NETCONSOLE is not set 482# CONFIG_NETCONSOLE is not set
483# CONFIG_NETPOLL is not set
484# CONFIG_NET_POLL_CONTROLLER is not set
383 485
384# 486#
385# ISDN subsystem 487# ISDN subsystem
@@ -409,18 +511,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
409# CONFIG_INPUT_EVBUG is not set 511# CONFIG_INPUT_EVBUG is not set
410 512
411# 513#
412# Input I/O drivers
413#
414# CONFIG_GAMEPORT is not set
415CONFIG_SOUND_GAMEPORT=y
416CONFIG_SERIO=y
417CONFIG_SERIO_I8042=y
418CONFIG_SERIO_SERPORT=y
419# CONFIG_SERIO_CT82C710 is not set
420# CONFIG_SERIO_LIBPS2 is not set
421CONFIG_SERIO_RAW=m
422
423#
424# Input Device Drivers 514# Input Device Drivers
425# 515#
426# CONFIG_INPUT_KEYBOARD is not set 516# CONFIG_INPUT_KEYBOARD is not set
@@ -430,6 +520,16 @@ CONFIG_SERIO_RAW=m
430# CONFIG_INPUT_MISC is not set 520# CONFIG_INPUT_MISC is not set
431 521
432# 522#
523# Hardware I/O ports
524#
525CONFIG_SERIO=y
526# CONFIG_SERIO_I8042 is not set
527CONFIG_SERIO_SERPORT=y
528# CONFIG_SERIO_LIBPS2 is not set
529CONFIG_SERIO_RAW=m
530# CONFIG_GAMEPORT is not set
531
532#
433# Character devices 533# Character devices
434# 534#
435CONFIG_VT=y 535CONFIG_VT=y
@@ -440,16 +540,15 @@ CONFIG_HW_CONSOLE=y
440# 540#
441# Serial drivers 541# Serial drivers
442# 542#
443CONFIG_SERIAL_8250=y 543# CONFIG_SERIAL_8250 is not set
444CONFIG_SERIAL_8250_CONSOLE=y
445CONFIG_SERIAL_8250_NR_UARTS=4
446# CONFIG_SERIAL_8250_EXTENDED is not set
447 544
448# 545#
449# Non-8250 serial port support 546# Non-8250 serial port support
450# 547#
451CONFIG_SERIAL_CORE=y 548CONFIG_SERIAL_CORE=y
452CONFIG_SERIAL_CORE_CONSOLE=y 549CONFIG_SERIAL_CORE_CONSOLE=y
550CONFIG_SERIAL_VR41XX=y
551CONFIG_SERIAL_VR41XX_CONSOLE=y
453CONFIG_UNIX98_PTYS=y 552CONFIG_UNIX98_PTYS=y
454CONFIG_LEGACY_PTYS=y 553CONFIG_LEGACY_PTYS=y
455CONFIG_LEGACY_PTY_COUNT=256 554CONFIG_LEGACY_PTY_COUNT=256
@@ -484,10 +583,19 @@ CONFIG_WATCHDOG=y
484# 583#
485# Ftape, the floppy tape device driver 584# Ftape, the floppy tape device driver
486# 585#
487# CONFIG_DRM is not set 586
587#
588# PCMCIA character devices
589#
590# CONFIG_SYNCLINK_CS is not set
591# CONFIG_GPIO_VR41XX is not set
488# CONFIG_RAW_DRIVER is not set 592# CONFIG_RAW_DRIVER is not set
489 593
490# 594#
595# TPM devices
596#
597
598#
491# I2C support 599# I2C support
492# 600#
493# CONFIG_I2C is not set 601# CONFIG_I2C is not set
@@ -498,10 +606,20 @@ CONFIG_WATCHDOG=y
498# CONFIG_W1 is not set 606# CONFIG_W1 is not set
499 607
500# 608#
609# Hardware Monitoring support
610#
611# CONFIG_HWMON is not set
612# CONFIG_HWMON_VID is not set
613
614#
501# Misc devices 615# Misc devices
502# 616#
503 617
504# 618#
619# Multimedia Capabilities Port drivers
620#
621
622#
505# Multimedia devices 623# Multimedia devices
506# 624#
507# CONFIG_VIDEO_DEV is not set 625# CONFIG_VIDEO_DEV is not set
@@ -522,7 +640,6 @@ CONFIG_WATCHDOG=y
522# CONFIG_VGA_CONSOLE is not set 640# CONFIG_VGA_CONSOLE is not set
523# CONFIG_MDA_CONSOLE is not set 641# CONFIG_MDA_CONSOLE is not set
524CONFIG_DUMMY_CONSOLE=y 642CONFIG_DUMMY_CONSOLE=y
525# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
526 643
527# 644#
528# Sound 645# Sound
@@ -536,10 +653,6 @@ CONFIG_DUMMY_CONSOLE=y
536# CONFIG_USB_ARCH_HAS_OHCI is not set 653# CONFIG_USB_ARCH_HAS_OHCI is not set
537 654
538# 655#
539# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
540#
541
542#
543# USB Gadget Support 656# USB Gadget Support
544# 657#
545# CONFIG_USB_GADGET is not set 658# CONFIG_USB_GADGET is not set
@@ -552,7 +665,10 @@ CONFIG_DUMMY_CONSOLE=y
552# 665#
553# InfiniBand support 666# InfiniBand support
554# 667#
555# CONFIG_INFINIBAND is not set 668
669#
670# SN Devices
671#
556 672
557# 673#
558# File systems 674# File systems
@@ -561,6 +677,7 @@ CONFIG_EXT2_FS=y
561CONFIG_EXT2_FS_XATTR=y 677CONFIG_EXT2_FS_XATTR=y
562CONFIG_EXT2_FS_POSIX_ACL=y 678CONFIG_EXT2_FS_POSIX_ACL=y
563CONFIG_EXT2_FS_SECURITY=y 679CONFIG_EXT2_FS_SECURITY=y
680# CONFIG_EXT2_FS_XIP is not set
564# CONFIG_EXT3_FS is not set 681# CONFIG_EXT3_FS is not set
565# CONFIG_JBD is not set 682# CONFIG_JBD is not set
566CONFIG_FS_MBCACHE=y 683CONFIG_FS_MBCACHE=y
@@ -570,10 +687,12 @@ CONFIG_FS_POSIX_ACL=y
570# CONFIG_XFS_FS is not set 687# CONFIG_XFS_FS is not set
571# CONFIG_MINIX_FS is not set 688# CONFIG_MINIX_FS is not set
572# CONFIG_ROMFS_FS is not set 689# CONFIG_ROMFS_FS is not set
690CONFIG_INOTIFY=y
573# CONFIG_QUOTA is not set 691# CONFIG_QUOTA is not set
574CONFIG_DNOTIFY=y 692CONFIG_DNOTIFY=y
575CONFIG_AUTOFS_FS=y 693CONFIG_AUTOFS_FS=y
576CONFIG_AUTOFS4_FS=y 694CONFIG_AUTOFS4_FS=y
695CONFIG_FUSE_FS=m
577 696
578# 697#
579# CD-ROM/DVD Filesystems 698# CD-ROM/DVD Filesystems
@@ -594,12 +713,10 @@ CONFIG_AUTOFS4_FS=y
594CONFIG_PROC_FS=y 713CONFIG_PROC_FS=y
595CONFIG_PROC_KCORE=y 714CONFIG_PROC_KCORE=y
596CONFIG_SYSFS=y 715CONFIG_SYSFS=y
597# CONFIG_DEVFS_FS is not set
598CONFIG_DEVPTS_FS_XATTR=y
599CONFIG_DEVPTS_FS_SECURITY=y
600# CONFIG_TMPFS is not set 716# CONFIG_TMPFS is not set
601# CONFIG_HUGETLB_PAGE is not set 717# CONFIG_HUGETLB_PAGE is not set
602CONFIG_RAMFS=y 718CONFIG_RAMFS=y
719CONFIG_RELAYFS_FS=m
603 720
604# 721#
605# Miscellaneous filesystems 722# Miscellaneous filesystems
@@ -630,6 +747,7 @@ CONFIG_NFSD=y
630# CONFIG_NFSD_TCP is not set 747# CONFIG_NFSD_TCP is not set
631CONFIG_LOCKD=y 748CONFIG_LOCKD=y
632CONFIG_EXPORTFS=y 749CONFIG_EXPORTFS=y
750CONFIG_NFS_COMMON=y
633CONFIG_SUNRPC=y 751CONFIG_SUNRPC=y
634# CONFIG_RPCSEC_GSS_KRB5 is not set 752# CONFIG_RPCSEC_GSS_KRB5 is not set
635# CONFIG_RPCSEC_GSS_SPKM3 is not set 753# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -638,6 +756,7 @@ CONFIG_SUNRPC=y
638# CONFIG_NCP_FS is not set 756# CONFIG_NCP_FS is not set
639# CONFIG_CODA_FS is not set 757# CONFIG_CODA_FS is not set
640# CONFIG_AFS_FS is not set 758# CONFIG_AFS_FS is not set
759# CONFIG_9P_FS is not set
641 760
642# 761#
643# Partition Types 762# Partition Types
@@ -658,9 +777,11 @@ CONFIG_MSDOS_PARTITION=y
658# 777#
659# Kernel hacking 778# Kernel hacking
660# 779#
780# CONFIG_PRINTK_TIME is not set
661# CONFIG_DEBUG_KERNEL is not set 781# CONFIG_DEBUG_KERNEL is not set
782CONFIG_LOG_BUF_SHIFT=14
662CONFIG_CROSSCOMPILE=y 783CONFIG_CROSSCOMPILE=y
663CONFIG_CMDLINE="" 784CONFIG_CMDLINE="console=ttyVR0,19200 mem=16M"
664 785
665# 786#
666# Security options 787# Security options
@@ -672,7 +793,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
672# 793#
673# Cryptographic options 794# Cryptographic options
674# 795#
675# CONFIG_CRYPTO is not set 796CONFIG_CRYPTO=y
797CONFIG_CRYPTO_HMAC=y
798CONFIG_CRYPTO_NULL=m
799CONFIG_CRYPTO_MD4=m
800CONFIG_CRYPTO_MD5=m
801CONFIG_CRYPTO_SHA1=m
802CONFIG_CRYPTO_SHA256=m
803CONFIG_CRYPTO_SHA512=m
804CONFIG_CRYPTO_WP512=m
805CONFIG_CRYPTO_TGR192=m
806CONFIG_CRYPTO_DES=m
807CONFIG_CRYPTO_BLOWFISH=m
808CONFIG_CRYPTO_TWOFISH=m
809CONFIG_CRYPTO_SERPENT=m
810CONFIG_CRYPTO_AES=m
811CONFIG_CRYPTO_CAST5=m
812CONFIG_CRYPTO_CAST6=m
813CONFIG_CRYPTO_TEA=m
814CONFIG_CRYPTO_ARC4=m
815CONFIG_CRYPTO_KHAZAD=m
816CONFIG_CRYPTO_ANUBIS=m
817CONFIG_CRYPTO_DEFLATE=m
818CONFIG_CRYPTO_MICHAEL_MIC=m
819CONFIG_CRYPTO_CRC32C=m
820# CONFIG_CRYPTO_TEST is not set
676 821
677# 822#
678# Hardware crypto devices 823# Hardware crypto devices
@@ -682,7 +827,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
682# Library routines 827# Library routines
683# 828#
684# CONFIG_CRC_CCITT is not set 829# CONFIG_CRC_CCITT is not set
685# CONFIG_CRC32 is not set 830CONFIG_CRC16=m
686# CONFIG_LIBCRC32C is not set 831CONFIG_CRC32=y
687CONFIG_GENERIC_HARDIRQS=y 832CONFIG_LIBCRC32C=m
688CONFIG_GENERIC_IRQ_PROBE=y 833CONFIG_ZLIB_INFLATE=m
834CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/mips/configs/yosemite_defconfig b/arch/mips/configs/yosemite_defconfig
index 6d2290777ad7..5b0b7f30e205 100644
--- a/arch/mips/configs/yosemite_defconfig
+++ b/arch/mips/configs/yosemite_defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:49:13 2005 4# Thu Oct 20 22:27:18 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,25 +11,31 @@ CONFIG_32BIT=y
14# CONFIG_EXPERIMENTAL is not set 11# CONFIG_EXPERIMENTAL is not set
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_LOCK_KERNEL=y 13CONFIG_LOCK_KERNEL=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_BSD_PROCESS_ACCT is not set 23# CONFIG_BSD_PROCESS_ACCT is not set
25CONFIG_SYSCTL=y 24CONFIG_SYSCTL=y
26# CONFIG_AUDIT is not set 25# CONFIG_AUDIT is not set
27CONFIG_LOG_BUF_SHIFT=14 26CONFIG_HOTPLUG=y
28# CONFIG_HOTPLUG is not set
29CONFIG_KOBJECT_UEVENT=y 27CONFIG_KOBJECT_UEVENT=y
30CONFIG_IKCONFIG=y 28CONFIG_IKCONFIG=y
31CONFIG_IKCONFIG_PROC=y 29CONFIG_IKCONFIG_PROC=y
30# CONFIG_CPUSETS is not set
31CONFIG_INITRAMFS_SOURCE=""
32CONFIG_EMBEDDED=y 32CONFIG_EMBEDDED=y
33CONFIG_KALLSYMS=y 33CONFIG_KALLSYMS=y
34# CONFIG_KALLSYMS_ALL is not set 34# CONFIG_KALLSYMS_ALL is not set
35# CONFIG_KALLSYMS_EXTRA_PASS is not set 35# CONFIG_KALLSYMS_EXTRA_PASS is not set
36CONFIG_PRINTK=y
37CONFIG_BUG=y
38CONFIG_BASE_FULL=y
36CONFIG_FUTEX=y 39CONFIG_FUTEX=y
37CONFIG_EPOLL=y 40CONFIG_EPOLL=y
38# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 41# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -42,6 +45,7 @@ CONFIG_CC_ALIGN_LABELS=0
42CONFIG_CC_ALIGN_LOOPS=0 45CONFIG_CC_ALIGN_LOOPS=0
43CONFIG_CC_ALIGN_JUMPS=0 46CONFIG_CC_ALIGN_JUMPS=0
44# CONFIG_TINY_SHMEM is not set 47# CONFIG_TINY_SHMEM is not set
48CONFIG_BASE_SMALL=0
45 49
46# 50#
47# Loadable module support 51# Loadable module support
@@ -56,34 +60,68 @@ CONFIG_STOP_MACHINE=y
56# 60#
57# Machine selection 61# Machine selection
58# 62#
59# CONFIG_MACH_JAZZ is not set 63# CONFIG_MIPS_MTX1 is not set
60# CONFIG_MACH_VR41XX is not set 64# CONFIG_MIPS_BOSPORUS is not set
61# CONFIG_TOSHIBA_JMR3927 is not set 65# CONFIG_MIPS_PB1000 is not set
66# CONFIG_MIPS_PB1100 is not set
67# CONFIG_MIPS_PB1500 is not set
68# CONFIG_MIPS_PB1550 is not set
69# CONFIG_MIPS_PB1200 is not set
70# CONFIG_MIPS_DB1000 is not set
71# CONFIG_MIPS_DB1100 is not set
72# CONFIG_MIPS_DB1500 is not set
73# CONFIG_MIPS_DB1550 is not set
74# CONFIG_MIPS_DB1200 is not set
75# CONFIG_MIPS_MIRAGE is not set
76# CONFIG_MIPS_COBALT is not set
62# CONFIG_MACH_DECSTATION is not set 77# CONFIG_MACH_DECSTATION is not set
78# CONFIG_MIPS_EV64120 is not set
79# CONFIG_MIPS_EV96100 is not set
63# CONFIG_MIPS_IVR is not set 80# CONFIG_MIPS_IVR is not set
64# CONFIG_LASAT is not set
65# CONFIG_MIPS_ITE8172 is not set 81# CONFIG_MIPS_ITE8172 is not set
82# CONFIG_MACH_JAZZ is not set
83# CONFIG_LASAT is not set
66# CONFIG_MIPS_ATLAS is not set 84# CONFIG_MIPS_ATLAS is not set
67# CONFIG_MIPS_MALTA is not set 85# CONFIG_MIPS_MALTA is not set
86# CONFIG_MIPS_SEAD is not set
87# CONFIG_MIPS_SIM is not set
88# CONFIG_MOMENCO_JAGUAR_ATX is not set
68# CONFIG_MOMENCO_OCELOT is not set 89# CONFIG_MOMENCO_OCELOT is not set
69# CONFIG_MOMENCO_OCELOT_G is not set
70# CONFIG_MOMENCO_OCELOT_C is not set
71# CONFIG_MOMENCO_OCELOT_3 is not set 90# CONFIG_MOMENCO_OCELOT_3 is not set
72# CONFIG_MOMENCO_JAGUAR_ATX is not set 91# CONFIG_MOMENCO_OCELOT_C is not set
73CONFIG_PMC_YOSEMITE=y 92# CONFIG_MOMENCO_OCELOT_G is not set
74# CONFIG_HYPERTRANSPORT is not set 93# CONFIG_MIPS_XXS1500 is not set
94# CONFIG_PNX8550_V2PCI is not set
95# CONFIG_PNX8550_JBS is not set
96# CONFIG_DDB5074 is not set
75# CONFIG_DDB5476 is not set 97# CONFIG_DDB5476 is not set
76# CONFIG_DDB5477 is not set 98# CONFIG_DDB5477 is not set
77# CONFIG_NEC_OSPREY is not set 99# CONFIG_MACH_VR41XX is not set
100CONFIG_PMC_YOSEMITE=y
101# CONFIG_QEMU is not set
78# CONFIG_SGI_IP22 is not set 102# CONFIG_SGI_IP22 is not set
79# CONFIG_SOC_AU1X00 is not set 103# CONFIG_SGI_IP27 is not set
104# CONFIG_SGI_IP32 is not set
105# CONFIG_SIBYTE_BIGSUR is not set
106# CONFIG_SIBYTE_SWARM is not set
107# CONFIG_SIBYTE_SENTOSA is not set
108# CONFIG_SIBYTE_RHONE is not set
109# CONFIG_SIBYTE_CARMEL is not set
110# CONFIG_SIBYTE_PTSWARM is not set
111# CONFIG_SIBYTE_LITTLESUR is not set
112# CONFIG_SIBYTE_CRHINE is not set
113# CONFIG_SIBYTE_CRHONE is not set
80# CONFIG_SNI_RM200_PCI is not set 114# CONFIG_SNI_RM200_PCI is not set
115# CONFIG_TOSHIBA_JMR3927 is not set
81# CONFIG_TOSHIBA_RBTX4927 is not set 116# CONFIG_TOSHIBA_RBTX4927 is not set
117# CONFIG_TOSHIBA_RBTX4938 is not set
118# CONFIG_HYPERTRANSPORT is not set
82CONFIG_RWSEM_GENERIC_SPINLOCK=y 119CONFIG_RWSEM_GENERIC_SPINLOCK=y
83CONFIG_GENERIC_CALIBRATE_DELAY=y 120CONFIG_GENERIC_CALIBRATE_DELAY=y
84CONFIG_HAVE_DEC_LOCK=y
85CONFIG_DMA_COHERENT=y 121CONFIG_DMA_COHERENT=y
122CONFIG_CPU_BIG_ENDIAN=y
86# CONFIG_CPU_LITTLE_ENDIAN is not set 123# CONFIG_CPU_LITTLE_ENDIAN is not set
124CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
87CONFIG_IRQ_CPU=y 125CONFIG_IRQ_CPU=y
88CONFIG_IRQ_CPU_RM7K=y 126CONFIG_IRQ_CPU_RM7K=y
89CONFIG_IRQ_CPU_RM9K=y 127CONFIG_IRQ_CPU_RM9K=y
@@ -93,8 +131,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
93# 131#
94# CPU selection 132# CPU selection
95# 133#
96# CONFIG_CPU_MIPS32 is not set 134# CONFIG_CPU_MIPS32_R1 is not set
97# CONFIG_CPU_MIPS64 is not set 135# CONFIG_CPU_MIPS32_R2 is not set
136# CONFIG_CPU_MIPS64_R1 is not set
137# CONFIG_CPU_MIPS64_R2 is not set
98# CONFIG_CPU_R3000 is not set 138# CONFIG_CPU_R3000 is not set
99# CONFIG_CPU_TX39XX is not set 139# CONFIG_CPU_TX39XX is not set
100# CONFIG_CPU_VR41XX is not set 140# CONFIG_CPU_VR41XX is not set
@@ -110,20 +150,43 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
110# CONFIG_CPU_RM7000 is not set 150# CONFIG_CPU_RM7000 is not set
111CONFIG_CPU_RM9000=y 151CONFIG_CPU_RM9000=y
112# CONFIG_CPU_SB1 is not set 152# CONFIG_CPU_SB1 is not set
153CONFIG_SYS_HAS_CPU_RM9000=y
154CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
155CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
156CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
157CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
158
159#
160# Kernel type
161#
162CONFIG_32BIT=y
163# CONFIG_64BIT is not set
113CONFIG_PAGE_SIZE_4KB=y 164CONFIG_PAGE_SIZE_4KB=y
114# CONFIG_PAGE_SIZE_8KB is not set 165# CONFIG_PAGE_SIZE_8KB is not set
115# CONFIG_PAGE_SIZE_16KB is not set 166# CONFIG_PAGE_SIZE_16KB is not set
116# CONFIG_PAGE_SIZE_64KB is not set 167# CONFIG_PAGE_SIZE_64KB is not set
117CONFIG_CPU_HAS_PREFETCH=y 168CONFIG_CPU_HAS_PREFETCH=y
169# CONFIG_MIPS_MT is not set
118# CONFIG_64BIT_PHYS_ADDR is not set 170# CONFIG_64BIT_PHYS_ADDR is not set
119# CONFIG_CPU_ADVANCED is not set 171# CONFIG_CPU_ADVANCED is not set
120CONFIG_CPU_HAS_LLSC=y 172CONFIG_CPU_HAS_LLSC=y
121CONFIG_CPU_HAS_LLDSCD=y 173CONFIG_CPU_HAS_LLDSCD=y
122CONFIG_CPU_HAS_SYNC=y 174CONFIG_CPU_HAS_SYNC=y
175CONFIG_GENERIC_HARDIRQS=y
176CONFIG_GENERIC_IRQ_PROBE=y
123CONFIG_HIGHMEM=y 177CONFIG_HIGHMEM=y
178CONFIG_CPU_SUPPORTS_HIGHMEM=y
179CONFIG_SYS_SUPPORTS_HIGHMEM=y
180CONFIG_ARCH_FLATMEM_ENABLE=y
181CONFIG_FLATMEM=y
182CONFIG_FLAT_NODE_MEM_MAP=y
183# CONFIG_SPARSEMEM_STATIC is not set
124CONFIG_SMP=y 184CONFIG_SMP=y
125CONFIG_NR_CPUS=2 185CONFIG_NR_CPUS=2
186CONFIG_PREEMPT_NONE=y
187# CONFIG_PREEMPT_VOLUNTARY is not set
126# CONFIG_PREEMPT is not set 188# CONFIG_PREEMPT is not set
189CONFIG_PREEMPT_BKL=y
127 190
128# 191#
129# Bus options (PCI, PCMCIA, EISA, ISA, TC) 192# Bus options (PCI, PCMCIA, EISA, ISA, TC)
@@ -131,7 +194,7 @@ CONFIG_NR_CPUS=2
131CONFIG_HW_HAS_PCI=y 194CONFIG_HW_HAS_PCI=y
132CONFIG_PCI=y 195CONFIG_PCI=y
133CONFIG_PCI_LEGACY_PROC=y 196CONFIG_PCI_LEGACY_PROC=y
134CONFIG_PCI_NAMES=y 197# CONFIG_PCI_DEBUG is not set
135CONFIG_MMU=y 198CONFIG_MMU=y
136 199
137# 200#
@@ -140,10 +203,6 @@ CONFIG_MMU=y
140# CONFIG_PCCARD is not set 203# CONFIG_PCCARD is not set
141 204
142# 205#
143# PC-card bridges
144#
145
146#
147# PCI Hotplug Support 206# PCI Hotplug Support
148# 207#
149 208
@@ -155,6 +214,69 @@ CONFIG_BINFMT_ELF=y
155CONFIG_TRAD_SIGNALS=y 214CONFIG_TRAD_SIGNALS=y
156 215
157# 216#
217# Networking
218#
219CONFIG_NET=y
220
221#
222# Networking options
223#
224CONFIG_PACKET=m
225CONFIG_PACKET_MMAP=y
226CONFIG_UNIX=y
227CONFIG_XFRM=y
228CONFIG_XFRM_USER=m
229# CONFIG_NET_KEY is not set
230CONFIG_INET=y
231# CONFIG_IP_MULTICAST is not set
232# CONFIG_IP_ADVANCED_ROUTER is not set
233CONFIG_IP_FIB_HASH=y
234CONFIG_IP_PNP=y
235# CONFIG_IP_PNP_DHCP is not set
236CONFIG_IP_PNP_BOOTP=y
237# CONFIG_IP_PNP_RARP is not set
238# CONFIG_NET_IPIP is not set
239# CONFIG_NET_IPGRE is not set
240# CONFIG_SYN_COOKIES is not set
241# CONFIG_INET_AH is not set
242# CONFIG_INET_ESP is not set
243# CONFIG_INET_IPCOMP is not set
244CONFIG_INET_TUNNEL=m
245CONFIG_INET_DIAG=y
246CONFIG_INET_TCP_DIAG=y
247# CONFIG_TCP_CONG_ADVANCED is not set
248CONFIG_TCP_CONG_BIC=y
249CONFIG_IPV6=m
250CONFIG_IPV6_PRIVACY=y
251CONFIG_INET6_AH=m
252CONFIG_INET6_ESP=m
253CONFIG_INET6_IPCOMP=m
254CONFIG_INET6_TUNNEL=m
255CONFIG_IPV6_TUNNEL=m
256# CONFIG_NETFILTER is not set
257# CONFIG_BRIDGE is not set
258# CONFIG_VLAN_8021Q is not set
259# CONFIG_DECNET is not set
260# CONFIG_LLC2 is not set
261# CONFIG_IPX is not set
262# CONFIG_ATALK is not set
263# CONFIG_NET_SCHED is not set
264# CONFIG_NET_CLS_ROUTE is not set
265
266#
267# Network testing
268#
269# CONFIG_NET_PKTGEN is not set
270# CONFIG_HAMRADIO is not set
271# CONFIG_IRDA is not set
272# CONFIG_BT is not set
273CONFIG_IEEE80211=m
274# CONFIG_IEEE80211_DEBUG is not set
275CONFIG_IEEE80211_CRYPT_WEP=m
276CONFIG_IEEE80211_CRYPT_CCMP=m
277CONFIG_IEEE80211_CRYPT_TKIP=m
278
279#
158# Device Drivers 280# Device Drivers
159# 281#
160 282
@@ -163,10 +285,15 @@ CONFIG_TRAD_SIGNALS=y
163# 285#
164CONFIG_STANDALONE=y 286CONFIG_STANDALONE=y
165CONFIG_PREVENT_FIRMWARE_BUILD=y 287CONFIG_PREVENT_FIRMWARE_BUILD=y
166# CONFIG_FW_LOADER is not set 288CONFIG_FW_LOADER=m
167# CONFIG_DEBUG_DRIVER is not set 289# CONFIG_DEBUG_DRIVER is not set
168 290
169# 291#
292# Connector - unified userspace <-> kernelspace linker
293#
294CONFIG_CONNECTOR=m
295
296#
170# Memory Technology Devices (MTD) 297# Memory Technology Devices (MTD)
171# 298#
172# CONFIG_MTD is not set 299# CONFIG_MTD is not set
@@ -183,7 +310,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
183# 310#
184# Block devices 311# Block devices
185# 312#
186# CONFIG_BLK_DEV_FD is not set
187# CONFIG_BLK_CPQ_DA is not set 313# CONFIG_BLK_CPQ_DA is not set
188# CONFIG_BLK_CPQ_CISS_DA is not set 314# CONFIG_BLK_CPQ_CISS_DA is not set
189# CONFIG_BLK_DEV_DAC960 is not set 315# CONFIG_BLK_DEV_DAC960 is not set
@@ -193,7 +319,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
193# CONFIG_BLK_DEV_SX8 is not set 319# CONFIG_BLK_DEV_SX8 is not set
194# CONFIG_BLK_DEV_RAM is not set 320# CONFIG_BLK_DEV_RAM is not set
195CONFIG_BLK_DEV_RAM_COUNT=16 321CONFIG_BLK_DEV_RAM_COUNT=16
196CONFIG_INITRAMFS_SOURCE=""
197# CONFIG_LBD is not set 322# CONFIG_LBD is not set
198CONFIG_CDROM_PKTCDVD=m 323CONFIG_CDROM_PKTCDVD=m
199CONFIG_CDROM_PKTCDVD_BUFFERS=8 324CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -216,6 +341,7 @@ CONFIG_ATA_OVER_ETH=m
216# 341#
217# SCSI device support 342# SCSI device support
218# 343#
344CONFIG_RAID_ATTRS=m
219# CONFIG_SCSI is not set 345# CONFIG_SCSI is not set
220 346
221# 347#
@@ -226,6 +352,7 @@ CONFIG_ATA_OVER_ETH=m
226# 352#
227# Fusion MPT device support 353# Fusion MPT device support
228# 354#
355# CONFIG_FUSION is not set
229 356
230# 357#
231# IEEE 1394 (FireWire) support 358# IEEE 1394 (FireWire) support
@@ -238,59 +365,8 @@ CONFIG_ATA_OVER_ETH=m
238# CONFIG_I2O is not set 365# CONFIG_I2O is not set
239 366
240# 367#
241# Networking support 368# Network device support
242# 369#
243CONFIG_NET=y
244
245#
246# Networking options
247#
248CONFIG_PACKET=m
249CONFIG_PACKET_MMAP=y
250CONFIG_NETLINK_DEV=m
251CONFIG_UNIX=y
252# CONFIG_NET_KEY is not set
253CONFIG_INET=y
254# CONFIG_IP_MULTICAST is not set
255# CONFIG_IP_ADVANCED_ROUTER is not set
256CONFIG_IP_PNP=y
257# CONFIG_IP_PNP_DHCP is not set
258CONFIG_IP_PNP_BOOTP=y
259# CONFIG_IP_PNP_RARP is not set
260# CONFIG_NET_IPIP is not set
261# CONFIG_NET_IPGRE is not set
262# CONFIG_SYN_COOKIES is not set
263# CONFIG_INET_AH is not set
264# CONFIG_INET_ESP is not set
265# CONFIG_INET_IPCOMP is not set
266CONFIG_INET_TUNNEL=m
267CONFIG_IP_TCPDIAG=m
268# CONFIG_IP_TCPDIAG_IPV6 is not set
269# CONFIG_NETFILTER is not set
270CONFIG_XFRM=y
271CONFIG_XFRM_USER=m
272# CONFIG_BRIDGE is not set
273# CONFIG_VLAN_8021Q is not set
274# CONFIG_DECNET is not set
275# CONFIG_LLC2 is not set
276# CONFIG_IPX is not set
277# CONFIG_ATALK is not set
278
279#
280# QoS and/or fair queueing
281#
282# CONFIG_NET_SCHED is not set
283# CONFIG_NET_CLS_ROUTE is not set
284
285#
286# Network testing
287#
288# CONFIG_NET_PKTGEN is not set
289# CONFIG_NETPOLL is not set
290# CONFIG_NET_POLL_CONTROLLER is not set
291# CONFIG_HAMRADIO is not set
292# CONFIG_IRDA is not set
293# CONFIG_BT is not set
294CONFIG_NETDEVICES=y 370CONFIG_NETDEVICES=y
295# CONFIG_DUMMY is not set 371# CONFIG_DUMMY is not set
296# CONFIG_BONDING is not set 372# CONFIG_BONDING is not set
@@ -303,6 +379,21 @@ CONFIG_NETDEVICES=y
303# CONFIG_ARCNET is not set 379# CONFIG_ARCNET is not set
304 380
305# 381#
382# PHY device support
383#
384CONFIG_PHYLIB=m
385CONFIG_PHYCONTROL=y
386
387#
388# MII PHY device drivers
389#
390CONFIG_MARVELL_PHY=m
391CONFIG_DAVICOM_PHY=m
392CONFIG_QSEMI_PHY=m
393CONFIG_LXT_PHY=m
394CONFIG_CICADA_PHY=m
395
396#
306# Ethernet (10 or 100Mbit) 397# Ethernet (10 or 100Mbit)
307# 398#
308CONFIG_NET_ETHERNET=y 399CONFIG_NET_ETHERNET=y
@@ -327,13 +418,16 @@ CONFIG_MII=y
327# CONFIG_NS83820 is not set 418# CONFIG_NS83820 is not set
328# CONFIG_HAMACHI is not set 419# CONFIG_HAMACHI is not set
329# CONFIG_R8169 is not set 420# CONFIG_R8169 is not set
421# CONFIG_SIS190 is not set
330# CONFIG_SK98LIN is not set 422# CONFIG_SK98LIN is not set
331# CONFIG_TIGON3 is not set 423# CONFIG_TIGON3 is not set
424# CONFIG_BNX2 is not set
332CONFIG_TITAN_GE=y 425CONFIG_TITAN_GE=y
333 426
334# 427#
335# Ethernet (10000 Mbit) 428# Ethernet (10000 Mbit)
336# 429#
430# CONFIG_CHELSIO_T1 is not set
337# CONFIG_IXGB is not set 431# CONFIG_IXGB is not set
338# CONFIG_S2IO is not set 432# CONFIG_S2IO is not set
339 433
@@ -346,6 +440,8 @@ CONFIG_TITAN_GE=y
346# Wireless LAN (non-hamradio) 440# Wireless LAN (non-hamradio)
347# 441#
348# CONFIG_NET_RADIO is not set 442# CONFIG_NET_RADIO is not set
443# CONFIG_IPW_DEBUG is not set
444CONFIG_IPW2200=m
349 445
350# 446#
351# Wan interfaces 447# Wan interfaces
@@ -354,6 +450,8 @@ CONFIG_TITAN_GE=y
354# CONFIG_FDDI is not set 450# CONFIG_FDDI is not set
355# CONFIG_PPP is not set 451# CONFIG_PPP is not set
356# CONFIG_SLIP is not set 452# CONFIG_SLIP is not set
453# CONFIG_NETPOLL is not set
454# CONFIG_NET_POLL_CONTROLLER is not set
357 455
358# 456#
359# ISDN subsystem 457# ISDN subsystem
@@ -371,20 +469,10 @@ CONFIG_TITAN_GE=y
371# CONFIG_INPUT is not set 469# CONFIG_INPUT is not set
372 470
373# 471#
374# Userland interfaces 472# Hardware I/O ports
375#
376
377#
378# Input I/O drivers
379# 473#
380# CONFIG_GAMEPORT is not set
381CONFIG_SOUND_GAMEPORT=y
382# CONFIG_SERIO is not set 474# CONFIG_SERIO is not set
383# CONFIG_SERIO_I8042 is not set 475# CONFIG_GAMEPORT is not set
384
385#
386# Input Device Drivers
387#
388 476
389# 477#
390# Character devices 478# Character devices
@@ -405,6 +493,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4
405# 493#
406CONFIG_SERIAL_CORE=y 494CONFIG_SERIAL_CORE=y
407CONFIG_SERIAL_CORE_CONSOLE=y 495CONFIG_SERIAL_CORE_CONSOLE=y
496# CONFIG_SERIAL_JSM is not set
408CONFIG_UNIX98_PTYS=y 497CONFIG_UNIX98_PTYS=y
409CONFIG_LEGACY_PTYS=y 498CONFIG_LEGACY_PTYS=y
410CONFIG_LEGACY_PTY_COUNT=256 499CONFIG_LEGACY_PTY_COUNT=256
@@ -432,6 +521,10 @@ CONFIG_GEN_RTC_X=y
432# CONFIG_RAW_DRIVER is not set 521# CONFIG_RAW_DRIVER is not set
433 522
434# 523#
524# TPM devices
525#
526
527#
435# I2C support 528# I2C support
436# 529#
437# CONFIG_I2C is not set 530# CONFIG_I2C is not set
@@ -442,10 +535,20 @@ CONFIG_GEN_RTC_X=y
442# CONFIG_W1 is not set 535# CONFIG_W1 is not set
443 536
444# 537#
538# Hardware Monitoring support
539#
540# CONFIG_HWMON is not set
541# CONFIG_HWMON_VID is not set
542
543#
445# Misc devices 544# Misc devices
446# 545#
447 546
448# 547#
548# Multimedia Capabilities Port drivers
549#
550
551#
449# Multimedia devices 552# Multimedia devices
450# 553#
451# CONFIG_VIDEO_DEV is not set 554# CONFIG_VIDEO_DEV is not set
@@ -459,7 +562,6 @@ CONFIG_GEN_RTC_X=y
459# Graphics support 562# Graphics support
460# 563#
461# CONFIG_FB is not set 564# CONFIG_FB is not set
462# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
463 565
464# 566#
465# Sound 567# Sound
@@ -469,13 +571,9 @@ CONFIG_GEN_RTC_X=y
469# 571#
470# USB support 572# USB support
471# 573#
472# CONFIG_USB is not set
473CONFIG_USB_ARCH_HAS_HCD=y 574CONFIG_USB_ARCH_HAS_HCD=y
474CONFIG_USB_ARCH_HAS_OHCI=y 575CONFIG_USB_ARCH_HAS_OHCI=y
475 576# CONFIG_USB is not set
476#
477# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
478#
479 577
480# 578#
481# USB Gadget Support 579# USB Gadget Support
@@ -493,6 +591,10 @@ CONFIG_USB_ARCH_HAS_OHCI=y
493# CONFIG_INFINIBAND is not set 591# CONFIG_INFINIBAND is not set
494 592
495# 593#
594# SN Devices
595#
596
597#
496# File systems 598# File systems
497# 599#
498# CONFIG_EXT2_FS is not set 600# CONFIG_EXT2_FS is not set
@@ -500,13 +602,16 @@ CONFIG_USB_ARCH_HAS_OHCI=y
500# CONFIG_JBD is not set 602# CONFIG_JBD is not set
501# CONFIG_REISERFS_FS is not set 603# CONFIG_REISERFS_FS is not set
502# CONFIG_JFS_FS is not set 604# CONFIG_JFS_FS is not set
605# CONFIG_FS_POSIX_ACL is not set
503# CONFIG_XFS_FS is not set 606# CONFIG_XFS_FS is not set
504# CONFIG_MINIX_FS is not set 607# CONFIG_MINIX_FS is not set
505# CONFIG_ROMFS_FS is not set 608# CONFIG_ROMFS_FS is not set
609CONFIG_INOTIFY=y
506# CONFIG_QUOTA is not set 610# CONFIG_QUOTA is not set
507CONFIG_DNOTIFY=y 611CONFIG_DNOTIFY=y
508# CONFIG_AUTOFS_FS is not set 612# CONFIG_AUTOFS_FS is not set
509# CONFIG_AUTOFS4_FS is not set 613# CONFIG_AUTOFS4_FS is not set
614CONFIG_FUSE_FS=m
510 615
511# 616#
512# CD-ROM/DVD Filesystems 617# CD-ROM/DVD Filesystems
@@ -527,11 +632,10 @@ CONFIG_DNOTIFY=y
527CONFIG_PROC_FS=y 632CONFIG_PROC_FS=y
528CONFIG_PROC_KCORE=y 633CONFIG_PROC_KCORE=y
529CONFIG_SYSFS=y 634CONFIG_SYSFS=y
530# CONFIG_DEVPTS_FS_XATTR is not set
531CONFIG_TMPFS=y 635CONFIG_TMPFS=y
532# CONFIG_TMPFS_XATTR is not set
533# CONFIG_HUGETLB_PAGE is not set 636# CONFIG_HUGETLB_PAGE is not set
534CONFIG_RAMFS=y 637CONFIG_RAMFS=y
638CONFIG_RELAYFS_FS=m
535 639
536# 640#
537# Miscellaneous filesystems 641# Miscellaneous filesystems
@@ -552,7 +656,7 @@ CONFIG_NFS_FS=y
552# CONFIG_NFSD is not set 656# CONFIG_NFSD is not set
553CONFIG_ROOT_NFS=y 657CONFIG_ROOT_NFS=y
554CONFIG_LOCKD=y 658CONFIG_LOCKD=y
555# CONFIG_EXPORTFS is not set 659CONFIG_NFS_COMMON=y
556CONFIG_SUNRPC=y 660CONFIG_SUNRPC=y
557# CONFIG_SMB_FS is not set 661# CONFIG_SMB_FS is not set
558# CONFIG_CIFS is not set 662# CONFIG_CIFS is not set
@@ -573,8 +677,11 @@ CONFIG_MSDOS_PARTITION=y
573# 677#
574# Kernel hacking 678# Kernel hacking
575# 679#
680# CONFIG_PRINTK_TIME is not set
576CONFIG_DEBUG_KERNEL=y 681CONFIG_DEBUG_KERNEL=y
577# CONFIG_MAGIC_SYSRQ is not set 682# CONFIG_MAGIC_SYSRQ is not set
683CONFIG_LOG_BUF_SHIFT=14
684CONFIG_DETECT_SOFTLOCKUP=y
578# CONFIG_SCHEDSTATS is not set 685# CONFIG_SCHEDSTATS is not set
579# CONFIG_DEBUG_SLAB is not set 686# CONFIG_DEBUG_SLAB is not set
580# CONFIG_DEBUG_SPINLOCK is not set 687# CONFIG_DEBUG_SPINLOCK is not set
@@ -599,7 +706,31 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
599# 706#
600# Cryptographic options 707# Cryptographic options
601# 708#
602# CONFIG_CRYPTO is not set 709CONFIG_CRYPTO=y
710CONFIG_CRYPTO_HMAC=y
711CONFIG_CRYPTO_NULL=m
712CONFIG_CRYPTO_MD4=m
713CONFIG_CRYPTO_MD5=m
714CONFIG_CRYPTO_SHA1=m
715CONFIG_CRYPTO_SHA256=m
716CONFIG_CRYPTO_SHA512=m
717CONFIG_CRYPTO_WP512=m
718CONFIG_CRYPTO_TGR192=m
719CONFIG_CRYPTO_DES=m
720CONFIG_CRYPTO_BLOWFISH=m
721CONFIG_CRYPTO_TWOFISH=m
722CONFIG_CRYPTO_SERPENT=m
723CONFIG_CRYPTO_AES=m
724CONFIG_CRYPTO_CAST5=m
725CONFIG_CRYPTO_CAST6=m
726CONFIG_CRYPTO_TEA=m
727CONFIG_CRYPTO_ARC4=m
728CONFIG_CRYPTO_KHAZAD=m
729CONFIG_CRYPTO_ANUBIS=m
730CONFIG_CRYPTO_DEFLATE=m
731CONFIG_CRYPTO_MICHAEL_MIC=m
732CONFIG_CRYPTO_CRC32C=m
733# CONFIG_CRYPTO_TEST is not set
603 734
604# 735#
605# Hardware crypto devices 736# Hardware crypto devices
@@ -609,7 +740,8 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
609# Library routines 740# Library routines
610# 741#
611# CONFIG_CRC_CCITT is not set 742# CONFIG_CRC_CCITT is not set
612# CONFIG_CRC32 is not set 743CONFIG_CRC16=m
613# CONFIG_LIBCRC32C is not set 744CONFIG_CRC32=m
614CONFIG_GENERIC_HARDIRQS=y 745CONFIG_LIBCRC32C=m
615CONFIG_GENERIC_IRQ_PROBE=y 746CONFIG_ZLIB_INFLATE=m
747CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/mips/ddb5xxx/Kconfig b/arch/mips/ddb5xxx/Kconfig
new file mode 100644
index 000000000000..e9b5de49f4c2
--- /dev/null
+++ b/arch/mips/ddb5xxx/Kconfig
@@ -0,0 +1,4 @@
1config DDB5477_BUS_FREQUENCY
2 int "bus frequency (in kHZ, 0 for auto-detect)"
3 depends on DDB5477
4 default 0
diff --git a/arch/mips/ddb5xxx/ddb5074/nile4_pic.c b/arch/mips/ddb5xxx/ddb5074/nile4_pic.c
index 68c127cd70c9..8743ffce8653 100644
--- a/arch/mips/ddb5xxx/ddb5074/nile4_pic.c
+++ b/arch/mips/ddb5xxx/ddb5074/nile4_pic.c
@@ -209,14 +209,13 @@ static void nile4_irq_end(unsigned int irq) {
209#define nile4_irq_shutdown nile4_disable_irq 209#define nile4_irq_shutdown nile4_disable_irq
210 210
211static hw_irq_controller nile4_irq_controller = { 211static hw_irq_controller nile4_irq_controller = {
212 "nile4", 212 .typename = "nile4",
213 nile4_irq_startup, 213 .startup = nile4_irq_startup,
214 nile4_irq_shutdown, 214 .shutdown = nile4_irq_shutdown,
215 nile4_enable_irq, 215 .enable = nile4_enable_irq,
216 nile4_disable_irq, 216 .disable = nile4_disable_irq,
217 nile4_ack_irq, 217 .ack = nile4_ack_irq,
218 nile4_irq_end, 218 .end = nile4_irq_end,
219 NULL
220}; 219};
221 220
222void nile4_irq_setup(u32 base) { 221void nile4_irq_setup(u32 base) {
diff --git a/arch/mips/ddb5xxx/ddb5074/setup.c b/arch/mips/ddb5xxx/ddb5074/setup.c
index a73a5978d550..11535be265b9 100644
--- a/arch/mips/ddb5xxx/ddb5074/setup.c
+++ b/arch/mips/ddb5xxx/ddb5074/setup.c
@@ -85,7 +85,7 @@ static void __init ddb_time_init(void)
85 85
86 86
87 87
88static void __init ddb5074_setup(void) 88void __init plat_setup(void)
89{ 89{
90 set_io_port_base(NILE4_PCI_IO_BASE); 90 set_io_port_base(NILE4_PCI_IO_BASE);
91 isa_slot_offset = NILE4_PCI_MEM_BASE; 91 isa_slot_offset = NILE4_PCI_MEM_BASE;
@@ -106,8 +106,6 @@ static void __init ddb5074_setup(void)
106 panic_timeout = 180; 106 panic_timeout = 180;
107} 107}
108 108
109early_initcall(ddb5074_setup);
110
111#define USE_NILE4_SERIAL 0 109#define USE_NILE4_SERIAL 0
112 110
113#if USE_NILE4_SERIAL 111#if USE_NILE4_SERIAL
diff --git a/arch/mips/ddb5xxx/ddb5476/setup.c b/arch/mips/ddb5xxx/ddb5476/setup.c
index 71531f8146ea..f4e480a74edf 100644
--- a/arch/mips/ddb5xxx/ddb5476/setup.c
+++ b/arch/mips/ddb5xxx/ddb5476/setup.c
@@ -124,7 +124,7 @@ static struct {
124 124
125static void ddb5476_board_init(void); 125static void ddb5476_board_init(void);
126 126
127static void __init ddb5476_setup(void) 127void __init plat_setup(void)
128{ 128{
129 set_io_port_base(KSEG1ADDR(DDB_PCI_IO_BASE)); 129 set_io_port_base(KSEG1ADDR(DDB_PCI_IO_BASE));
130 130
@@ -158,8 +158,6 @@ static void __init ddb5476_setup(void)
158 ddb5476_board_init(); 158 ddb5476_board_init();
159} 159}
160 160
161early_initcall(ddb5476_setup);
162
163/* 161/*
164 * We don't trust bios. We essentially does hardware re-initialization 162 * We don't trust bios. We essentially does hardware re-initialization
165 * as complete as possible, as far as we know we can safely do. 163 * as complete as possible, as far as we know we can safely do.
diff --git a/arch/mips/ddb5xxx/ddb5476/vrc5476_irq.c b/arch/mips/ddb5xxx/ddb5476/vrc5476_irq.c
index a77682be01ac..f66fe5b58636 100644
--- a/arch/mips/ddb5xxx/ddb5476/vrc5476_irq.c
+++ b/arch/mips/ddb5xxx/ddb5476/vrc5476_irq.c
@@ -53,14 +53,13 @@ static void vrc5476_irq_end(uint irq)
53} 53}
54 54
55static hw_irq_controller vrc5476_irq_controller = { 55static hw_irq_controller vrc5476_irq_controller = {
56 "vrc5476", 56 .typename = "vrc5476",
57 vrc5476_irq_startup, 57 .startup = vrc5476_irq_startup,
58 vrc5476_irq_shutdown, 58 .shutdown = vrc5476_irq_shutdown,
59 vrc5476_irq_enable, 59 .enable = vrc5476_irq_enable,
60 vrc5476_irq_disable, 60 .disable = vrc5476_irq_disable,
61 vrc5476_irq_ack, 61 .ack = vrc5476_irq_ack,
62 vrc5476_irq_end, 62 .end = vrc5476_irq_end
63 NULL /* no affinity stuff for UP */
64}; 63};
65 64
66void __init 65void __init
diff --git a/arch/mips/ddb5xxx/ddb5477/irq_5477.c b/arch/mips/ddb5xxx/ddb5477/irq_5477.c
index 0d5e706207ec..5fcd5f070cdc 100644
--- a/arch/mips/ddb5xxx/ddb5477/irq_5477.c
+++ b/arch/mips/ddb5xxx/ddb5477/irq_5477.c
@@ -90,14 +90,13 @@ vrc5477_irq_end(unsigned int irq)
90} 90}
91 91
92hw_irq_controller vrc5477_irq_controller = { 92hw_irq_controller vrc5477_irq_controller = {
93 "vrc5477_irq", 93 .typename = "vrc5477_irq",
94 vrc5477_irq_startup, 94 .startup = vrc5477_irq_startup,
95 vrc5477_irq_shutdown, 95 .shutdown = vrc5477_irq_shutdown,
96 vrc5477_irq_enable, 96 .enable = vrc5477_irq_enable,
97 vrc5477_irq_disable, 97 .disable = vrc5477_irq_disable,
98 vrc5477_irq_ack, 98 .ack = vrc5477_irq_ack,
99 vrc5477_irq_end, 99 .end = vrc5477_irq_end
100 NULL /* no affinity stuff for UP */
101}; 100};
102 101
103void __init vrc5477_irq_init(u32 irq_base) 102void __init vrc5477_irq_init(u32 irq_base)
diff --git a/arch/mips/ddb5xxx/ddb5477/setup.c b/arch/mips/ddb5xxx/ddb5477/setup.c
index d62f5a789b05..81163353c4a8 100644
--- a/arch/mips/ddb5xxx/ddb5477/setup.c
+++ b/arch/mips/ddb5xxx/ddb5477/setup.c
@@ -170,7 +170,7 @@ static void ddb5477_board_init(void);
170extern struct pci_controller ddb5477_ext_controller; 170extern struct pci_controller ddb5477_ext_controller;
171extern struct pci_controller ddb5477_io_controller; 171extern struct pci_controller ddb5477_io_controller;
172 172
173static int ddb5477_setup(void) 173void __init plat_setup(void)
174{ 174{
175 /* initialize board - we don't trust the loader */ 175 /* initialize board - we don't trust the loader */
176 ddb5477_board_init(); 176 ddb5477_board_init();
@@ -193,12 +193,8 @@ static int ddb5477_setup(void)
193 193
194 register_pci_controller (&ddb5477_ext_controller); 194 register_pci_controller (&ddb5477_ext_controller);
195 register_pci_controller (&ddb5477_io_controller); 195 register_pci_controller (&ddb5477_io_controller);
196
197 return 0;
198} 196}
199 197
200early_initcall(ddb5477_setup);
201
202static void __init ddb5477_board_init(void) 198static void __init ddb5477_board_init(void)
203{ 199{
204 /* ----------- setup PDARs ------------ */ 200 /* ----------- setup PDARs ------------ */
diff --git a/arch/mips/dec/Makefile b/arch/mips/dec/Makefile
index 688757a97cb8..ed181fdc3ac9 100644
--- a/arch/mips/dec/Makefile
+++ b/arch/mips/dec/Makefile
@@ -2,8 +2,8 @@
2# Makefile for the DECstation family specific parts of the kernel 2# Makefile for the DECstation family specific parts of the kernel
3# 3#
4 4
5obj-y := ecc-berr.o int-handler.o ioasic-irq.o kn02-irq.o reset.o \ 5obj-y := ecc-berr.o int-handler.o ioasic-irq.o kn01-berr.o \
6 setup.o time.o 6 kn02-irq.o kn02xa-berr.o reset.o setup.o time.o
7 7
8obj-$(CONFIG_PROM_CONSOLE) += promcon.o 8obj-$(CONFIG_PROM_CONSOLE) += promcon.o
9obj-$(CONFIG_CPU_HAS_WB) += wbflush.o 9obj-$(CONFIG_CPU_HAS_WB) += wbflush.o
diff --git a/arch/mips/dec/ecc-berr.c b/arch/mips/dec/ecc-berr.c
index 6dbce92eb068..cc24c5ed0c05 100644
--- a/arch/mips/dec/ecc-berr.c
+++ b/arch/mips/dec/ecc-berr.c
@@ -6,7 +6,7 @@
6 * 5000/240 (KN03), 5000/260 (KN05) and DECsystem 5900 (KN03), 6 * 5000/240 (KN03), 5000/260 (KN05) and DECsystem 5900 (KN03),
7 * 5900/260 (KN05) systems. 7 * 5900/260 (KN05) systems.
8 * 8 *
9 * Copyright (c) 2003 Maciej W. Rozycki 9 * Copyright (c) 2003, 2005 Maciej W. Rozycki
10 * 10 *
11 * This program is free software; you can redistribute it and/or 11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License 12 * modify it under the terms of the GNU General Public License
@@ -15,6 +15,7 @@
15 */ 15 */
16 16
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/interrupt.h>
18#include <linux/kernel.h> 19#include <linux/kernel.h>
19#include <linux/sched.h> 20#include <linux/sched.h>
20#include <linux/spinlock.h> 21#include <linux/spinlock.h>
@@ -57,7 +58,7 @@ static int dec_ecc_be_backend(struct pt_regs *regs, int is_fixup, int invoker)
57 58
58 const char *kind, *agent, *cycle, *event; 59 const char *kind, *agent, *cycle, *event;
59 const char *status = "", *xbit = "", *fmt = ""; 60 const char *status = "", *xbit = "", *fmt = "";
60 dma_addr_t address; 61 unsigned long address;
61 u16 syn = 0, sngl; 62 u16 syn = 0, sngl;
62 63
63 int i = 0; 64 int i = 0;
@@ -66,7 +67,7 @@ static int dec_ecc_be_backend(struct pt_regs *regs, int is_fixup, int invoker)
66 u32 chksyn = *kn0x_chksyn; 67 u32 chksyn = *kn0x_chksyn;
67 int action = MIPS_BE_FATAL; 68 int action = MIPS_BE_FATAL;
68 69
69 /* For non-ECC ack ASAP, so any subsequent errors get caught. */ 70 /* For non-ECC ack ASAP, so that any subsequent errors get caught. */
70 if ((erraddr & (KN0X_EAR_VALID | KN0X_EAR_ECCERR)) == KN0X_EAR_VALID) 71 if ((erraddr & (KN0X_EAR_VALID | KN0X_EAR_ECCERR)) == KN0X_EAR_VALID)
71 dec_ecc_be_ack(); 72 dec_ecc_be_ack();
72 73
@@ -74,7 +75,7 @@ static int dec_ecc_be_backend(struct pt_regs *regs, int is_fixup, int invoker)
74 75
75 if (!(erraddr & KN0X_EAR_VALID)) { 76 if (!(erraddr & KN0X_EAR_VALID)) {
76 /* No idea what happened. */ 77 /* No idea what happened. */
77 printk(KERN_ALERT "Unidentified bus error %s.\n", kind); 78 printk(KERN_ALERT "Unidentified bus error %s\n", kind);
78 return action; 79 return action;
79 } 80 }
80 81
@@ -126,7 +127,7 @@ static int dec_ecc_be_backend(struct pt_regs *regs, int is_fixup, int invoker)
126 /* Ack now, no rewrite will happen. */ 127 /* Ack now, no rewrite will happen. */
127 dec_ecc_be_ack(); 128 dec_ecc_be_ack();
128 129
129 fmt = KERN_ALERT "%s" "invalid.\n"; 130 fmt = KERN_ALERT "%s" "invalid\n";
130 } else { 131 } else {
131 sngl = syn & KN0X_ESR_SNGLO; 132 sngl = syn & KN0X_ESR_SNGLO;
132 syn &= KN0X_ESR_SYNLO; 133 syn &= KN0X_ESR_SYNLO;
@@ -144,7 +145,8 @@ static int dec_ecc_be_backend(struct pt_regs *regs, int is_fixup, int invoker)
144 } else if (!sngl) { 145 } else if (!sngl) {
145 status = dbestr; 146 status = dbestr;
146 } else { 147 } else {
147 volatile u32 *ptr = (void *)KSEG1ADDR(address); 148 volatile u32 *ptr =
149 (void *)CKSEG1ADDR(address);
148 150
149 *ptr = *ptr; /* Rewrite. */ 151 *ptr = *ptr; /* Rewrite. */
150 iob(); 152 iob();
@@ -160,12 +162,12 @@ static int dec_ecc_be_backend(struct pt_regs *regs, int is_fixup, int invoker)
160 if (syn == 0x01) { 162 if (syn == 0x01) {
161 fmt = KERN_ALERT "%s" 163 fmt = KERN_ALERT "%s"
162 "%#04x -- %s bit error " 164 "%#04x -- %s bit error "
163 "at check bit C%s.\n"; 165 "at check bit C%s\n";
164 xbit = "X"; 166 xbit = "X";
165 } else { 167 } else {
166 fmt = KERN_ALERT "%s" 168 fmt = KERN_ALERT "%s"
167 "%#04x -- %s bit error " 169 "%#04x -- %s bit error "
168 "at check bit C%s%u.\n"; 170 "at check bit C%s%u\n";
169 } 171 }
170 i = syn >> 2; 172 i = syn >> 2;
171 } else { 173 } else {
@@ -175,16 +177,16 @@ static int dec_ecc_be_backend(struct pt_regs *regs, int is_fixup, int invoker)
175 if (i < 32) 177 if (i < 32)
176 fmt = KERN_ALERT "%s" 178 fmt = KERN_ALERT "%s"
177 "%#04x -- %s bit error " 179 "%#04x -- %s bit error "
178 "at data bit D%s%u.\n"; 180 "at data bit D%s%u\n";
179 else 181 else
180 fmt = KERN_ALERT "%s" 182 fmt = KERN_ALERT "%s"
181 "%#04x -- %s bit error.\n"; 183 "%#04x -- %s bit error\n";
182 } 184 }
183 } 185 }
184 } 186 }
185 187
186 if (action != MIPS_BE_FIXUP) 188 if (action != MIPS_BE_FIXUP)
187 printk(KERN_ALERT "Bus error %s: %s %s %s at %#010lx.\n", 189 printk(KERN_ALERT "Bus error %s: %s %s %s at %#010lx\n",
188 kind, agent, cycle, event, address); 190 kind, agent, cycle, event, address);
189 191
190 if (action != MIPS_BE_FIXUP && erraddr & KN0X_EAR_ECCERR) 192 if (action != MIPS_BE_FIXUP && erraddr & KN0X_EAR_ECCERR)
@@ -203,11 +205,11 @@ irqreturn_t dec_ecc_be_interrupt(int irq, void *dev_id, struct pt_regs *regs)
203 int action = dec_ecc_be_backend(regs, 0, 1); 205 int action = dec_ecc_be_backend(regs, 0, 1);
204 206
205 if (action == MIPS_BE_DISCARD) 207 if (action == MIPS_BE_DISCARD)
206 return IRQ_NONE; 208 return IRQ_HANDLED;
207 209
208 /* 210 /*
209 * FIXME: Find affected processes and kill them, otherwise we 211 * FIXME: Find the affected processes and kill them, otherwise
210 * must die. 212 * we must die.
211 * 213 *
212 * The interrupt is asynchronously delivered thus EPC and RA 214 * The interrupt is asynchronously delivered thus EPC and RA
213 * may be irrelevant, but are printed for a reference. 215 * may be irrelevant, but are printed for a reference.
@@ -225,16 +227,16 @@ irqreturn_t dec_ecc_be_interrupt(int irq, void *dev_id, struct pt_regs *regs)
225 */ 227 */
226static inline void dec_kn02_be_init(void) 228static inline void dec_kn02_be_init(void)
227{ 229{
228 volatile u32 *csr = (void *)KN02_CSR_BASE; 230 volatile u32 *csr = (void *)CKSEG1ADDR(KN02_SLOT_BASE + KN02_CSR);
229 unsigned long flags; 231 unsigned long flags;
230 232
231 kn0x_erraddr = (void *)(KN02_SLOT_BASE + KN02_ERRADDR); 233 kn0x_erraddr = (void *)CKSEG1ADDR(KN02_SLOT_BASE + KN02_ERRADDR);
232 kn0x_chksyn = (void *)(KN02_SLOT_BASE + KN02_CHKSYN); 234 kn0x_chksyn = (void *)CKSEG1ADDR(KN02_SLOT_BASE + KN02_CHKSYN);
233 235
234 spin_lock_irqsave(&kn02_lock, flags); 236 spin_lock_irqsave(&kn02_lock, flags);
235 237
236 /* Preset write-only bits of the Control Register cache. */ 238 /* Preset write-only bits of the Control Register cache. */
237 cached_kn02_csr = *csr | KN03_CSR_LEDS; 239 cached_kn02_csr = *csr | KN02_CSR_LEDS;
238 240
239 /* Set normal ECC detection and generation. */ 241 /* Set normal ECC detection and generation. */
240 cached_kn02_csr &= ~(KN02_CSR_DIAGCHK | KN02_CSR_DIAGGEN); 242 cached_kn02_csr &= ~(KN02_CSR_DIAGCHK | KN02_CSR_DIAGGEN);
@@ -248,11 +250,11 @@ static inline void dec_kn02_be_init(void)
248 250
249static inline void dec_kn03_be_init(void) 251static inline void dec_kn03_be_init(void)
250{ 252{
251 volatile u32 *mcr = (void *)(KN03_SLOT_BASE + IOASIC_MCR); 253 volatile u32 *mcr = (void *)CKSEG1ADDR(KN03_SLOT_BASE + IOASIC_MCR);
252 volatile u32 *mbcs = (void *)(KN03_SLOT_BASE + KN05_MB_CSR); 254 volatile u32 *mbcs = (void *)CKSEG1ADDR(KN4K_SLOT_BASE + KN4K_MB_CSR);
253 255
254 kn0x_erraddr = (void *)(KN03_SLOT_BASE + IOASIC_ERRADDR); 256 kn0x_erraddr = (void *)CKSEG1ADDR(KN03_SLOT_BASE + IOASIC_ERRADDR);
255 kn0x_chksyn = (void *)(KN03_SLOT_BASE + IOASIC_CHKSYN); 257 kn0x_chksyn = (void *)CKSEG1ADDR(KN03_SLOT_BASE + IOASIC_CHKSYN);
256 258
257 /* 259 /*
258 * Set normal ECC detection and generation, enable ECC correction. 260 * Set normal ECC detection and generation, enable ECC correction.
@@ -264,7 +266,7 @@ static inline void dec_kn03_be_init(void)
264 *mcr = (*mcr & ~(KN03_MCR_DIAGCHK | KN03_MCR_DIAGGEN)) | 266 *mcr = (*mcr & ~(KN03_MCR_DIAGCHK | KN03_MCR_DIAGGEN)) |
265 KN03_MCR_CORRECT; 267 KN03_MCR_CORRECT;
266 if (current_cpu_data.cputype == CPU_R4400SC) 268 if (current_cpu_data.cputype == CPU_R4400SC)
267 *mbcs |= KN05_MB_CSR_EE; 269 *mbcs |= KN4K_MB_CSR_EE;
268 fast_iob(); 270 fast_iob();
269} 271}
270 272
diff --git a/arch/mips/dec/int-handler.S b/arch/mips/dec/int-handler.S
index c89768d5c4e5..41fa372007bf 100644
--- a/arch/mips/dec/int-handler.S
+++ b/arch/mips/dec/int-handler.S
@@ -2,9 +2,9 @@
2 * arch/mips/dec/int-handler.S 2 * arch/mips/dec/int-handler.S
3 * 3 *
4 * Copyright (C) 1995, 1996, 1997 Paul M. Antoine and Harald Koerfgen 4 * Copyright (C) 1995, 1996, 1997 Paul M. Antoine and Harald Koerfgen
5 * Copyright (C) 2000, 2001, 2002, 2003 Maciej W. Rozycki 5 * Copyright (C) 2000, 2001, 2002, 2003, 2005 Maciej W. Rozycki
6 * 6 *
7 * Written by Ralf Baechle and Andreas Busse, modified for DECStation 7 * Written by Ralf Baechle and Andreas Busse, modified for DECstation
8 * support by Paul Antoine and Harald Koerfgen. 8 * support by Paul Antoine and Harald Koerfgen.
9 * 9 *
10 * completly rewritten: 10 * completly rewritten:
@@ -14,11 +14,12 @@
14 * by Maciej W. Rozycki. 14 * by Maciej W. Rozycki.
15 */ 15 */
16#include <linux/config.h> 16#include <linux/config.h>
17
18#include <asm/addrspace.h>
17#include <asm/asm.h> 19#include <asm/asm.h>
18#include <asm/regdef.h>
19#include <asm/mipsregs.h> 20#include <asm/mipsregs.h>
21#include <asm/regdef.h>
20#include <asm/stackframe.h> 22#include <asm/stackframe.h>
21#include <asm/addrspace.h>
22 23
23#include <asm/dec/interrupts.h> 24#include <asm/dec/interrupts.h>
24#include <asm/dec/ioasic_addrs.h> 25#include <asm/dec/ioasic_addrs.h>
@@ -28,11 +29,14 @@
28#include <asm/dec/kn02xa.h> 29#include <asm/dec/kn02xa.h>
29#include <asm/dec/kn03.h> 30#include <asm/dec/kn03.h>
30 31
32#define KN02_CSR_BASE CKSEG1ADDR(KN02_SLOT_BASE + KN02_CSR)
33#define KN02XA_IOASIC_BASE CKSEG1ADDR(KN02XA_SLOT_BASE + IOASIC_IOCTL)
34#define KN03_IOASIC_BASE CKSEG1ADDR(KN03_SLOT_BASE + IOASIC_IOCTL)
31 35
32 .text 36 .text
33 .set noreorder 37 .set noreorder
34/* 38/*
35 * decstation_handle_int: Interrupt handler for DECStations 39 * decstation_handle_int: Interrupt handler for DECstations
36 * 40 *
37 * We follow the model in the Indy interrupt code by David Miller, where he 41 * We follow the model in the Indy interrupt code by David Miller, where he
38 * says: a lot of complication here is taken away because: 42 * says: a lot of complication here is taken away because:
@@ -48,7 +52,7 @@
48 * 3) Linux only thinks in terms of all IRQs on or all IRQs 52 * 3) Linux only thinks in terms of all IRQs on or all IRQs
49 * off, nothing in between like BSD spl() brain-damage. 53 * off, nothing in between like BSD spl() brain-damage.
50 * 54 *
51 * Furthermore, the IRQs on the DECStations look basically (barring 55 * Furthermore, the IRQs on the DECstations look basically (barring
52 * software IRQs which we don't use at all) like... 56 * software IRQs which we don't use at all) like...
53 * 57 *
54 * DS2100/3100's, aka kn01, aka Pmax: 58 * DS2100/3100's, aka kn01, aka Pmax:
@@ -61,7 +65,7 @@
61 * 3 Lance Ethernet 65 * 3 Lance Ethernet
62 * 4 DZ11 serial 66 * 4 DZ11 serial
63 * 5 RTC 67 * 5 RTC
64 * 6 Memory Controller 68 * 6 Memory Controller & Video
65 * 7 FPU 69 * 7 FPU
66 * 70 *
67 * DS5000/200, aka kn02, aka 3max: 71 * DS5000/200, aka kn02, aka 3max:
diff --git a/arch/mips/dec/kn01-berr.c b/arch/mips/dec/kn01-berr.c
new file mode 100644
index 000000000000..b9271db9bc76
--- /dev/null
+++ b/arch/mips/dec/kn01-berr.c
@@ -0,0 +1,201 @@
1/*
2 * linux/arch/mips/dec/kn01-berr.c
3 *
4 * Bus error event handling code for DECstation/DECsystem 3100
5 * and 2100 (KN01) systems equipped with parity error detection
6 * logic.
7 *
8 * Copyright (c) 2005 Maciej W. Rozycki
9 *
10 * This program is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU General Public License
12 * as published by the Free Software Foundation; either version
13 * 2 of the License, or (at your option) any later version.
14 */
15
16#include <linux/init.h>
17#include <linux/interrupt.h>
18#include <linux/kernel.h>
19#include <linux/spinlock.h>
20#include <linux/types.h>
21
22#include <asm/inst.h>
23#include <asm/mipsregs.h>
24#include <asm/page.h>
25#include <asm/system.h>
26#include <asm/traps.h>
27#include <asm/uaccess.h>
28
29#include <asm/dec/kn01.h>
30
31
32/* CP0 hazard avoidance. */
33#define BARRIER \
34 __asm__ __volatile__( \
35 ".set push\n\t" \
36 ".set noreorder\n\t" \
37 "nop\n\t" \
38 ".set pop\n\t")
39
40/*
41 * Bits 7:0 of the Control Register are write-only -- the
42 * corresponding bits of the Status Register have a different
43 * meaning. Hence we use a cache. It speeds up things a bit
44 * as well.
45 *
46 * There is no default value -- it has to be initialized.
47 */
48u16 cached_kn01_csr;
49DEFINE_SPINLOCK(kn01_lock);
50
51
52static inline void dec_kn01_be_ack(void)
53{
54 volatile u16 *csr = (void *)CKSEG1ADDR(KN01_SLOT_BASE + KN01_CSR);
55 unsigned long flags;
56
57 spin_lock_irqsave(&kn01_lock, flags);
58
59 *csr = cached_kn01_csr | KN01_CSR_MEMERR; /* Clear bus IRQ. */
60 iob();
61
62 spin_unlock_irqrestore(&kn01_lock, flags);
63}
64
65static int dec_kn01_be_backend(struct pt_regs *regs, int is_fixup, int invoker)
66{
67 volatile u32 *kn01_erraddr = (void *)CKSEG1ADDR(KN01_SLOT_BASE +
68 KN01_ERRADDR);
69
70 static const char excstr[] = "exception";
71 static const char intstr[] = "interrupt";
72 static const char cpustr[] = "CPU";
73 static const char mreadstr[] = "memory read";
74 static const char readstr[] = "read";
75 static const char writestr[] = "write";
76 static const char timestr[] = "timeout";
77 static const char paritystr[] = "parity error";
78
79 int data = regs->cp0_cause & 4;
80 unsigned int __user *pc = (unsigned int __user *)regs->cp0_epc +
81 ((regs->cp0_cause & CAUSEF_BD) != 0);
82 union mips_instruction insn;
83 unsigned long entrylo, offset;
84 long asid, entryhi, vaddr;
85
86 const char *kind, *agent, *cycle, *event;
87 unsigned long address;
88
89 u32 erraddr = *kn01_erraddr;
90 int action = MIPS_BE_FATAL;
91
92 /* Ack ASAP, so that any subsequent errors get caught. */
93 dec_kn01_be_ack();
94
95 kind = invoker ? intstr : excstr;
96
97 agent = cpustr;
98
99 if (invoker)
100 address = erraddr;
101 else {
102 /* Bloody hardware doesn't record the address for reads... */
103 if (data) {
104 /* This never faults. */
105 __get_user(insn.word, pc);
106 vaddr = regs->regs[insn.i_format.rs] +
107 insn.i_format.simmediate;
108 } else
109 vaddr = (long)pc;
110 if (KSEGX(vaddr) == CKSEG0 || KSEGX(vaddr) == CKSEG1)
111 address = CPHYSADDR(vaddr);
112 else {
113 /* Peek at what physical address the CPU used. */
114 asid = read_c0_entryhi();
115 entryhi = asid & (PAGE_SIZE - 1);
116 entryhi |= vaddr & ~(PAGE_SIZE - 1);
117 write_c0_entryhi(entryhi);
118 BARRIER;
119 tlb_probe();
120 /* No need to check for presence. */
121 tlb_read();
122 entrylo = read_c0_entrylo0();
123 write_c0_entryhi(asid);
124 offset = vaddr & (PAGE_SIZE - 1);
125 address = (entrylo & ~(PAGE_SIZE - 1)) | offset;
126 }
127 }
128
129 /* Treat low 256MB as memory, high -- as I/O. */
130 if (address < 0x10000000) {
131 cycle = mreadstr;
132 event = paritystr;
133 } else {
134 cycle = invoker ? writestr : readstr;
135 event = timestr;
136 }
137
138 if (is_fixup)
139 action = MIPS_BE_FIXUP;
140
141 if (action != MIPS_BE_FIXUP)
142 printk(KERN_ALERT "Bus error %s: %s %s %s at %#010lx\n",
143 kind, agent, cycle, event, address);
144
145 return action;
146}
147
148int dec_kn01_be_handler(struct pt_regs *regs, int is_fixup)
149{
150 return dec_kn01_be_backend(regs, is_fixup, 0);
151}
152
153irqreturn_t dec_kn01_be_interrupt(int irq, void *dev_id,
154 struct pt_regs *regs)
155{
156 volatile u16 *csr = (void *)CKSEG1ADDR(KN01_SLOT_BASE + KN01_CSR);
157 int action;
158
159 if (!(*csr & KN01_CSR_MEMERR))
160 return IRQ_NONE; /* Must have been video. */
161
162 action = dec_kn01_be_backend(regs, 0, 1);
163
164 if (action == MIPS_BE_DISCARD)
165 return IRQ_HANDLED;
166
167 /*
168 * FIXME: Find the affected processes and kill them, otherwise
169 * we must die.
170 *
171 * The interrupt is asynchronously delivered thus EPC and RA
172 * may be irrelevant, but are printed for a reference.
173 */
174 printk(KERN_ALERT "Fatal bus interrupt, epc == %08lx, ra == %08lx\n",
175 regs->cp0_epc, regs->regs[31]);
176 die("Unrecoverable bus error", regs);
177}
178
179
180void __init dec_kn01_be_init(void)
181{
182 volatile u16 *csr = (void *)CKSEG1ADDR(KN01_SLOT_BASE + KN01_CSR);
183 unsigned long flags;
184
185 spin_lock_irqsave(&kn01_lock, flags);
186
187 /* Preset write-only bits of the Control Register cache. */
188 cached_kn01_csr = *csr;
189 cached_kn01_csr &= KN01_CSR_STATUS | KN01_CSR_PARDIS | KN01_CSR_TXDIS;
190 cached_kn01_csr |= KN01_CSR_LEDS;
191
192 /* Enable parity error detection. */
193 cached_kn01_csr &= ~KN01_CSR_PARDIS;
194 *csr = cached_kn01_csr;
195 iob();
196
197 spin_unlock_irqrestore(&kn01_lock, flags);
198
199 /* Clear any leftover errors from the firmware. */
200 dec_kn01_be_ack();
201}
diff --git a/arch/mips/dec/kn02-irq.c b/arch/mips/dec/kn02-irq.c
index e0bfcd1521e2..898bed502a34 100644
--- a/arch/mips/dec/kn02-irq.c
+++ b/arch/mips/dec/kn02-irq.c
@@ -4,7 +4,7 @@
4 * DECstation 5000/200 (KN02) Control and Status Register 4 * DECstation 5000/200 (KN02) Control and Status Register
5 * interrupts. 5 * interrupts.
6 * 6 *
7 * Copyright (c) 2002, 2003 Maciej W. Rozycki 7 * Copyright (c) 2002, 2003, 2005 Maciej W. Rozycki
8 * 8 *
9 * This program is free software; you can redistribute it and/or 9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License 10 * modify it under the terms of the GNU General Public License
@@ -37,7 +37,8 @@ static int kn02_irq_base;
37 37
38static inline void unmask_kn02_irq(unsigned int irq) 38static inline void unmask_kn02_irq(unsigned int irq)
39{ 39{
40 volatile u32 *csr = (volatile u32 *)KN02_CSR_BASE; 40 volatile u32 *csr = (volatile u32 *)CKSEG1ADDR(KN02_SLOT_BASE +
41 KN02_CSR);
41 42
42 cached_kn02_csr |= (1 << (irq - kn02_irq_base + 16)); 43 cached_kn02_csr |= (1 << (irq - kn02_irq_base + 16));
43 *csr = cached_kn02_csr; 44 *csr = cached_kn02_csr;
@@ -45,7 +46,8 @@ static inline void unmask_kn02_irq(unsigned int irq)
45 46
46static inline void mask_kn02_irq(unsigned int irq) 47static inline void mask_kn02_irq(unsigned int irq)
47{ 48{
48 volatile u32 *csr = (volatile u32 *)KN02_CSR_BASE; 49 volatile u32 *csr = (volatile u32 *)CKSEG1ADDR(KN02_SLOT_BASE +
50 KN02_CSR);
49 51
50 cached_kn02_csr &= ~(1 << (irq - kn02_irq_base + 16)); 52 cached_kn02_csr &= ~(1 << (irq - kn02_irq_base + 16));
51 *csr = cached_kn02_csr; 53 *csr = cached_kn02_csr;
@@ -105,13 +107,14 @@ static struct hw_interrupt_type kn02_irq_type = {
105 107
106void __init init_kn02_irqs(int base) 108void __init init_kn02_irqs(int base)
107{ 109{
108 volatile u32 *csr = (volatile u32 *)KN02_CSR_BASE; 110 volatile u32 *csr = (volatile u32 *)CKSEG1ADDR(KN02_SLOT_BASE +
111 KN02_CSR);
109 unsigned long flags; 112 unsigned long flags;
110 int i; 113 int i;
111 114
112 /* Mask interrupts. */ 115 /* Mask interrupts. */
113 spin_lock_irqsave(&kn02_lock, flags); 116 spin_lock_irqsave(&kn02_lock, flags);
114 cached_kn02_csr &= ~KN03_CSR_IOINTEN; 117 cached_kn02_csr &= ~KN02_CSR_IOINTEN;
115 *csr = cached_kn02_csr; 118 *csr = cached_kn02_csr;
116 iob(); 119 iob();
117 spin_unlock_irqrestore(&kn02_lock, flags); 120 spin_unlock_irqrestore(&kn02_lock, flags);
diff --git a/arch/mips/dec/kn02xa-berr.c b/arch/mips/dec/kn02xa-berr.c
new file mode 100644
index 000000000000..6cd3f94f79fe
--- /dev/null
+++ b/arch/mips/dec/kn02xa-berr.c
@@ -0,0 +1,139 @@
1/*
2 * linux/arch/mips/dec/kn02xa-berr.c
3 *
4 * Bus error event handling code for 5000-series systems equipped
5 * with parity error detection logic, i.e. DECstation/DECsystem
6 * 5000/120, /125, /133 (KN02-BA), 5000/150 (KN04-BA) and Personal
7 * DECstation/DECsystem 5000/20, /25, /33 (KN02-CA), 5000/50
8 * (KN04-CA) systems.
9 *
10 * Copyright (c) 2005 Maciej W. Rozycki
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version
15 * 2 of the License, or (at your option) any later version.
16 */
17
18#include <linux/init.h>
19#include <linux/interrupt.h>
20#include <linux/kernel.h>
21#include <linux/types.h>
22
23#include <asm/addrspace.h>
24#include <asm/system.h>
25#include <asm/traps.h>
26
27#include <asm/dec/kn02ca.h>
28#include <asm/dec/kn02xa.h>
29#include <asm/dec/kn05.h>
30
31static inline void dec_kn02xa_be_ack(void)
32{
33 volatile u32 *mer = (void *)CKSEG1ADDR(KN02XA_MER);
34 volatile u32 *mem_intr = (void *)CKSEG1ADDR(KN02XA_MEM_INTR);
35
36 *mer = KN02CA_MER_INTR; /* Clear errors; keep the ARC IRQ. */
37 *mem_intr = 0; /* Any write clears the bus IRQ. */
38 iob();
39}
40
41static int dec_kn02xa_be_backend(struct pt_regs *regs, int is_fixup,
42 int invoker)
43{
44 volatile u32 *kn02xa_mer = (void *)CKSEG1ADDR(KN02XA_MER);
45 volatile u32 *kn02xa_ear = (void *)CKSEG1ADDR(KN02XA_EAR);
46
47 static const char excstr[] = "exception";
48 static const char intstr[] = "interrupt";
49 static const char cpustr[] = "CPU";
50 static const char mreadstr[] = "memory read";
51 static const char readstr[] = "read";
52 static const char writestr[] = "write";
53 static const char timestr[] = "timeout";
54 static const char paritystr[] = "parity error";
55 static const char lanestat[][4] = { " OK", "BAD" };
56
57 const char *kind, *agent, *cycle, *event;
58 unsigned long address;
59
60 u32 mer = *kn02xa_mer;
61 u32 ear = *kn02xa_ear;
62 int action = MIPS_BE_FATAL;
63
64 /* Ack ASAP, so that any subsequent errors get caught. */
65 dec_kn02xa_be_ack();
66
67 kind = invoker ? intstr : excstr;
68
69 /* No DMA errors? */
70 agent = cpustr;
71
72 address = ear & KN02XA_EAR_ADDRESS;
73
74 /* Low 256MB is decoded as memory, high -- as TC. */
75 if (address < 0x10000000) {
76 cycle = mreadstr;
77 event = paritystr;
78 } else {
79 cycle = invoker ? writestr : readstr;
80 event = timestr;
81 }
82
83 if (is_fixup)
84 action = MIPS_BE_FIXUP;
85
86 if (action != MIPS_BE_FIXUP)
87 printk(KERN_ALERT "Bus error %s: %s %s %s at %#010lx\n",
88 kind, agent, cycle, event, address);
89
90 if (action != MIPS_BE_FIXUP && address < 0x10000000)
91 printk(KERN_ALERT " Byte lane status %#3x -- "
92 "#3: %s, #2: %s, #1: %s, #0: %s\n",
93 (mer & KN02XA_MER_BYTERR) >> 8,
94 lanestat[(mer & KN02XA_MER_BYTERR_3) != 0],
95 lanestat[(mer & KN02XA_MER_BYTERR_2) != 0],
96 lanestat[(mer & KN02XA_MER_BYTERR_1) != 0],
97 lanestat[(mer & KN02XA_MER_BYTERR_0) != 0]);
98
99 return action;
100}
101
102int dec_kn02xa_be_handler(struct pt_regs *regs, int is_fixup)
103{
104 return dec_kn02xa_be_backend(regs, is_fixup, 0);
105}
106
107irqreturn_t dec_kn02xa_be_interrupt(int irq, void *dev_id,
108 struct pt_regs *regs)
109{
110 int action = dec_kn02xa_be_backend(regs, 0, 1);
111
112 if (action == MIPS_BE_DISCARD)
113 return IRQ_HANDLED;
114
115 /*
116 * FIXME: Find the affected processes and kill them, otherwise
117 * we must die.
118 *
119 * The interrupt is asynchronously delivered thus EPC and RA
120 * may be irrelevant, but are printed for a reference.
121 */
122 printk(KERN_ALERT "Fatal bus interrupt, epc == %08lx, ra == %08lx\n",
123 regs->cp0_epc, regs->regs[31]);
124 die("Unrecoverable bus error", regs);
125}
126
127
128void __init dec_kn02xa_be_init(void)
129{
130 volatile u32 *mbcs = (void *)CKSEG1ADDR(KN4K_SLOT_BASE + KN4K_MB_CSR);
131
132 /* For KN04 we need to make sure EE (?) is enabled in the MB. */
133 if (current_cpu_data.cputype == CPU_R4000SC)
134 *mbcs |= KN4K_MB_CSR_EE;
135 fast_iob();
136
137 /* Clear any leftover errors from the firmware. */
138 dec_kn02xa_be_ack();
139}
diff --git a/arch/mips/dec/prom/identify.c b/arch/mips/dec/prom/identify.c
index 9380588cb15c..81d5e878ddce 100644
--- a/arch/mips/dec/prom/identify.c
+++ b/arch/mips/dec/prom/identify.c
@@ -2,7 +2,7 @@
2 * identify.c: machine identification code. 2 * identify.c: machine identification code.
3 * 3 *
4 * Copyright (C) 1998 Harald Koerfgen and Paul M. Antoine 4 * Copyright (C) 1998 Harald Koerfgen and Paul M. Antoine
5 * Copyright (C) 2002, 2003, 2004 Maciej W. Rozycki 5 * Copyright (C) 2002, 2003, 2004, 2005 Maciej W. Rozycki
6 */ 6 */
7#include <linux/init.h> 7#include <linux/init.h>
8#include <linux/kernel.h> 8#include <linux/kernel.h>
@@ -12,6 +12,7 @@
12#include <linux/types.h> 12#include <linux/types.h>
13 13
14#include <asm/bootinfo.h> 14#include <asm/bootinfo.h>
15
15#include <asm/dec/ioasic.h> 16#include <asm/dec/ioasic.h>
16#include <asm/dec/ioasic_addrs.h> 17#include <asm/dec/ioasic_addrs.h>
17#include <asm/dec/kn01.h> 18#include <asm/dec/kn01.h>
@@ -21,6 +22,7 @@
21#include <asm/dec/kn03.h> 22#include <asm/dec/kn03.h>
22#include <asm/dec/kn230.h> 23#include <asm/dec/kn230.h>
23#include <asm/dec/prom.h> 24#include <asm/dec/prom.h>
25#include <asm/dec/system.h>
24 26
25#include "dectypes.h" 27#include "dectypes.h"
26 28
@@ -68,34 +70,44 @@ EXPORT_SYMBOL(dec_rtc_base);
68 70
69static inline void prom_init_kn01(void) 71static inline void prom_init_kn01(void)
70{ 72{
71 dec_rtc_base = (void *)KN01_RTC_BASE; 73 dec_kn_slot_base = KN01_SLOT_BASE;
72 dec_kn_slot_size = KN01_SLOT_SIZE; 74 dec_kn_slot_size = KN01_SLOT_SIZE;
75
76 dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + KN01_RTC);
73} 77}
74 78
75static inline void prom_init_kn230(void) 79static inline void prom_init_kn230(void)
76{ 80{
77 dec_rtc_base = (void *)KN01_RTC_BASE; 81 dec_kn_slot_base = KN01_SLOT_BASE;
78 dec_kn_slot_size = KN01_SLOT_SIZE; 82 dec_kn_slot_size = KN01_SLOT_SIZE;
83
84 dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + KN01_RTC);
79} 85}
80 86
81static inline void prom_init_kn02(void) 87static inline void prom_init_kn02(void)
82{ 88{
83 dec_rtc_base = (void *)KN02_RTC_BASE; 89 dec_kn_slot_base = KN02_SLOT_BASE;
84 dec_kn_slot_size = KN02_SLOT_SIZE; 90 dec_kn_slot_size = KN02_SLOT_SIZE;
91
92 dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + KN02_RTC);
85} 93}
86 94
87static inline void prom_init_kn02xa(void) 95static inline void prom_init_kn02xa(void)
88{ 96{
89 ioasic_base = (void *)KN02XA_IOASIC_BASE; 97 dec_kn_slot_base = KN02XA_SLOT_BASE;
90 dec_rtc_base = (void *)KN02XA_RTC_BASE;
91 dec_kn_slot_size = IOASIC_SLOT_SIZE; 98 dec_kn_slot_size = IOASIC_SLOT_SIZE;
99
100 ioasic_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_IOCTL);
101 dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_TOY);
92} 102}
93 103
94static inline void prom_init_kn03(void) 104static inline void prom_init_kn03(void)
95{ 105{
96 ioasic_base = (void *)KN03_IOASIC_BASE; 106 dec_kn_slot_base = KN03_SLOT_BASE;
97 dec_rtc_base = (void *)KN03_RTC_BASE;
98 dec_kn_slot_size = IOASIC_SLOT_SIZE; 107 dec_kn_slot_size = IOASIC_SLOT_SIZE;
108
109 ioasic_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_IOCTL);
110 dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_TOY);
99} 111}
100 112
101 113
diff --git a/arch/mips/dec/prom/init.c b/arch/mips/dec/prom/init.c
index 60f74256e689..32a7cc7e4c65 100644
--- a/arch/mips/dec/prom/init.c
+++ b/arch/mips/dec/prom/init.c
@@ -6,6 +6,8 @@
6 */ 6 */
7#include <linux/config.h> 7#include <linux/config.h>
8#include <linux/init.h> 8#include <linux/init.h>
9#include <linux/kernel.h>
10#include <linux/linkage.h>
9#include <linux/smp.h> 11#include <linux/smp.h>
10#include <linux/string.h> 12#include <linux/string.h>
11#include <linux/types.h> 13#include <linux/types.h>
@@ -85,17 +87,13 @@ void __init which_prom(s32 magic, s32 *prom_vec)
85 87
86void __init prom_init(void) 88void __init prom_init(void)
87{ 89{
88 extern void dec_machine_halt(void); 90 extern void ATTRIB_NORET dec_machine_halt(void);
89 static char cpu_msg[] __initdata = 91 static char cpu_msg[] __initdata =
90 "Sorry, this kernel is compiled for a wrong CPU type!\n"; 92 "Sorry, this kernel is compiled for a wrong CPU type!\n";
91 static char r3k_msg[] __initdata =
92 "Please recompile with \"CONFIG_CPU_R3000 = y\".\n";
93 static char r4k_msg[] __initdata =
94 "Please recompile with \"CONFIG_CPU_R4x00 = y\".\n";
95 s32 argc = fw_arg0; 93 s32 argc = fw_arg0;
96 s32 argv = fw_arg1; 94 s32 *argv = (void *)fw_arg1;
97 u32 magic = fw_arg2; 95 u32 magic = fw_arg2;
98 s32 prom_vec = fw_arg3; 96 s32 *prom_vec = (void *)fw_arg3;
99 97
100 /* 98 /*
101 * Determine which PROM we have 99 * Determine which PROM we have
@@ -113,6 +111,8 @@ void __init prom_init(void)
113#if defined(CONFIG_CPU_R3000) 111#if defined(CONFIG_CPU_R3000)
114 if ((current_cpu_data.cputype == CPU_R4000SC) || 112 if ((current_cpu_data.cputype == CPU_R4000SC) ||
115 (current_cpu_data.cputype == CPU_R4400SC)) { 113 (current_cpu_data.cputype == CPU_R4400SC)) {
114 static char r4k_msg[] __initdata =
115 "Please recompile with \"CONFIG_CPU_R4x00 = y\".\n";
116 printk(cpu_msg); 116 printk(cpu_msg);
117 printk(r4k_msg); 117 printk(r4k_msg);
118 dec_machine_halt(); 118 dec_machine_halt();
@@ -122,6 +122,8 @@ void __init prom_init(void)
122#if defined(CONFIG_CPU_R4X00) 122#if defined(CONFIG_CPU_R4X00)
123 if ((current_cpu_data.cputype == CPU_R3000) || 123 if ((current_cpu_data.cputype == CPU_R3000) ||
124 (current_cpu_data.cputype == CPU_R3000A)) { 124 (current_cpu_data.cputype == CPU_R3000A)) {
125 static char r3k_msg[] __initdata =
126 "Please recompile with \"CONFIG_CPU_R3000 = y\".\n";
125 printk(cpu_msg); 127 printk(cpu_msg);
126 printk(r3k_msg); 128 printk(r3k_msg);
127 dec_machine_halt(); 129 dec_machine_halt();
diff --git a/arch/mips/dec/prom/memory.c b/arch/mips/dec/prom/memory.c
index e4f6f26425ea..83d4556c3cb5 100644
--- a/arch/mips/dec/prom/memory.c
+++ b/arch/mips/dec/prom/memory.c
@@ -35,22 +35,22 @@ static inline void pmax_setup_memory_region(void)
35 extern char genexcept_early; 35 extern char genexcept_early;
36 36
37 /* Install exception handler */ 37 /* Install exception handler */
38 memcpy(&old_handler, (void *)(KSEG0 + 0x80), 0x80); 38 memcpy(&old_handler, (void *)(CKSEG0 + 0x80), 0x80);
39 memcpy((void *)(KSEG0 + 0x80), &genexcept_early, 0x80); 39 memcpy((void *)(CKSEG0 + 0x80), &genexcept_early, 0x80);
40 40
41 /* read unmapped and uncached (KSEG1) 41 /* read unmapped and uncached (KSEG1)
42 * DECstations have at least 4MB RAM 42 * DECstations have at least 4MB RAM
43 * Assume less than 480MB of RAM, as this is max for 5000/2xx 43 * Assume less than 480MB of RAM, as this is max for 5000/2xx
44 * FIXME this should be replaced by the first free page! 44 * FIXME this should be replaced by the first free page!
45 */ 45 */
46 for (memory_page = (unsigned char *) KSEG1 + CHUNK_SIZE; 46 for (memory_page = (unsigned char *)CKSEG1 + CHUNK_SIZE;
47 (mem_err== 0) && (memory_page < ((unsigned char *) KSEG1+0x1E000000)); 47 mem_err == 0 && memory_page < (unsigned char *)CKSEG1 + 0x1e00000;
48 memory_page += CHUNK_SIZE) { 48 memory_page += CHUNK_SIZE) {
49 dummy = *memory_page; 49 dummy = *memory_page;
50 } 50 }
51 memcpy((void *)(KSEG0 + 0x80), &old_handler, 0x80); 51 memcpy((void *)(CKSEG0 + 0x80), &old_handler, 0x80);
52 52
53 add_memory_region(0, (unsigned long)memory_page - KSEG1 - CHUNK_SIZE, 53 add_memory_region(0, (unsigned long)memory_page - CKSEG1 - CHUNK_SIZE,
54 BOOT_MEM_RAM); 54 BOOT_MEM_RAM);
55} 55}
56 56
@@ -65,7 +65,7 @@ static inline void rex_setup_memory_region(void)
65 memmap *bm; 65 memmap *bm;
66 66
67 /* some free 64k */ 67 /* some free 64k */
68 bm = (memmap *)KSEG0ADDR(0x28000); 68 bm = (memmap *)CKSEG0ADDR(0x28000);
69 69
70 bitmap_size = rex_getbitmap(bm); 70 bitmap_size = rex_getbitmap(bm);
71 71
diff --git a/arch/mips/dec/reset.c b/arch/mips/dec/reset.c
index 7e4d34d0573d..f78c6da47921 100644
--- a/arch/mips/dec/reset.c
+++ b/arch/mips/dec/reset.c
@@ -14,7 +14,7 @@ typedef void ATTRIB_NORET (* noret_func_t)(void);
14 14
15static inline void ATTRIB_NORET back_to_prom(void) 15static inline void ATTRIB_NORET back_to_prom(void)
16{ 16{
17 noret_func_t func = (void *) KSEG1ADDR(0x1fc00000); 17 noret_func_t func = (void *)CKSEG1ADDR(0x1fc00000);
18 18
19 func(); 19 func();
20} 20}
diff --git a/arch/mips/dec/setup.c b/arch/mips/dec/setup.c
index 6a69309baf40..9ef54fe1feaa 100644
--- a/arch/mips/dec/setup.c
+++ b/arch/mips/dec/setup.c
@@ -1,19 +1,20 @@
1/* 1/*
2 * Setup the interrupt stuff. 2 * System-specific setup, especially interrupts.
3 * 3 *
4 * This file is subject to the terms and conditions of the GNU General Public 4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive 5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details. 6 * for more details.
7 * 7 *
8 * Copyright (C) 1998 Harald Koerfgen 8 * Copyright (C) 1998 Harald Koerfgen
9 * Copyright (C) 2000, 2001, 2002, 2003 Maciej W. Rozycki 9 * Copyright (C) 2000, 2001, 2002, 2003, 2005 Maciej W. Rozycki
10 */ 10 */
11#include <linux/sched.h>
12#include <linux/interrupt.h>
13#include <linux/param.h>
14#include <linux/console.h> 11#include <linux/console.h>
15#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/interrupt.h>
14#include <linux/ioport.h>
16#include <linux/module.h> 15#include <linux/module.h>
16#include <linux/param.h>
17#include <linux/sched.h>
17#include <linux/spinlock.h> 18#include <linux/spinlock.h>
18#include <linux/types.h> 19#include <linux/types.h>
19 20
@@ -38,6 +39,7 @@
38#include <asm/dec/kn02ca.h> 39#include <asm/dec/kn02ca.h>
39#include <asm/dec/kn03.h> 40#include <asm/dec/kn03.h>
40#include <asm/dec/kn230.h> 41#include <asm/dec/kn230.h>
42#include <asm/dec/system.h>
41 43
42 44
43extern void dec_machine_restart(char *command); 45extern void dec_machine_restart(char *command);
@@ -47,10 +49,16 @@ extern irqreturn_t dec_intr_halt(int irq, void *dev_id, struct pt_regs *regs);
47 49
48extern asmlinkage void decstation_handle_int(void); 50extern asmlinkage void decstation_handle_int(void);
49 51
52unsigned long dec_kn_slot_base, dec_kn_slot_size;
53
54EXPORT_SYMBOL(dec_kn_slot_base);
55EXPORT_SYMBOL(dec_kn_slot_size);
56
50spinlock_t ioasic_ssr_lock; 57spinlock_t ioasic_ssr_lock;
51 58
52volatile u32 *ioasic_base; 59volatile u32 *ioasic_base;
53unsigned long dec_kn_slot_size; 60
61EXPORT_SYMBOL(ioasic_base);
54 62
55/* 63/*
56 * IRQ routing and priority tables. Priorites are set as follows: 64 * IRQ routing and priority tables. Priorites are set as follows:
@@ -77,6 +85,9 @@ unsigned long dec_kn_slot_size;
77int dec_interrupt[DEC_NR_INTS] = { 85int dec_interrupt[DEC_NR_INTS] = {
78 [0 ... DEC_NR_INTS - 1] = -1 86 [0 ... DEC_NR_INTS - 1] = -1
79}; 87};
88
89EXPORT_SYMBOL(dec_interrupt);
90
80int_ptr cpu_mask_nr_tbl[DEC_MAX_CPU_INTS][2] = { 91int_ptr cpu_mask_nr_tbl[DEC_MAX_CPU_INTS][2] = {
81 { { .i = ~0 }, { .p = dec_intr_unimplemented } }, 92 { { .i = ~0 }, { .p = dec_intr_unimplemented } },
82}; 93};
@@ -108,11 +119,20 @@ static struct irqaction haltirq = {
108/* 119/*
109 * Bus error (DBE/IBE exceptions and bus interrupts) handling setup. 120 * Bus error (DBE/IBE exceptions and bus interrupts) handling setup.
110 */ 121 */
111void __init dec_be_init(void) 122static void __init dec_be_init(void)
112{ 123{
113 switch (mips_machtype) { 124 switch (mips_machtype) {
114 case MACH_DS23100: /* DS2100/DS3100 Pmin/Pmax */ 125 case MACH_DS23100: /* DS2100/DS3100 Pmin/Pmax */
126 board_be_handler = dec_kn01_be_handler;
127 busirq.handler = dec_kn01_be_interrupt;
115 busirq.flags |= SA_SHIRQ; 128 busirq.flags |= SA_SHIRQ;
129 dec_kn01_be_init();
130 break;
131 case MACH_DS5000_1XX: /* DS5000/1xx 3min */
132 case MACH_DS5000_XX: /* DS5000/xx Maxine */
133 board_be_handler = dec_kn02xa_be_handler;
134 busirq.handler = dec_kn02xa_be_interrupt;
135 dec_kn02xa_be_init();
116 break; 136 break;
117 case MACH_DS5000_200: /* DS5000/200 3max */ 137 case MACH_DS5000_200: /* DS5000/200 3max */
118 case MACH_DS5000_2X0: /* DS5000/240 3max+ */ 138 case MACH_DS5000_2X0: /* DS5000/240 3max+ */
@@ -128,7 +148,7 @@ void __init dec_be_init(void)
128extern void dec_time_init(void); 148extern void dec_time_init(void);
129extern void dec_timer_setup(struct irqaction *); 149extern void dec_timer_setup(struct irqaction *);
130 150
131static void __init decstation_setup(void) 151void __init plat_setup(void)
132{ 152{
133 board_be_init = dec_be_init; 153 board_be_init = dec_be_init;
134 board_time_init = dec_time_init; 154 board_time_init = dec_time_init;
@@ -139,9 +159,10 @@ static void __init decstation_setup(void)
139 _machine_restart = dec_machine_restart; 159 _machine_restart = dec_machine_restart;
140 _machine_halt = dec_machine_halt; 160 _machine_halt = dec_machine_halt;
141 _machine_power_off = dec_machine_power_off; 161 _machine_power_off = dec_machine_power_off;
142}
143 162
144early_initcall(decstation_setup); 163 ioport_resource.start = ~0UL;
164 ioport_resource.end = 0UL;
165}
145 166
146/* 167/*
147 * Machine-specific initialisation for KN01, aka DS2100 (aka Pmin) 168 * Machine-specific initialisation for KN01, aka DS2100 (aka Pmin)
@@ -206,7 +227,7 @@ static int_ptr kn01_cpu_mask_nr_tbl[][2] __initdata = {
206 { .p = cpu_all_int } }, 227 { .p = cpu_all_int } },
207}; 228};
208 229
209void __init dec_init_kn01(void) 230static void __init dec_init_kn01(void)
210{ 231{
211 /* IRQ routing. */ 232 /* IRQ routing. */
212 memcpy(&dec_interrupt, &kn01_interrupt, 233 memcpy(&dec_interrupt, &kn01_interrupt,
@@ -281,7 +302,7 @@ static int_ptr kn230_cpu_mask_nr_tbl[][2] __initdata = {
281 { .p = cpu_all_int } }, 302 { .p = cpu_all_int } },
282}; 303};
283 304
284void __init dec_init_kn230(void) 305static void __init dec_init_kn230(void)
285{ 306{
286 /* IRQ routing. */ 307 /* IRQ routing. */
287 memcpy(&dec_interrupt, &kn230_interrupt, 308 memcpy(&dec_interrupt, &kn230_interrupt,
@@ -371,7 +392,7 @@ static int_ptr kn02_asic_mask_nr_tbl[][2] __initdata = {
371 { .p = kn02_all_int } }, 392 { .p = kn02_all_int } },
372}; 393};
373 394
374void __init dec_init_kn02(void) 395static void __init dec_init_kn02(void)
375{ 396{
376 /* IRQ routing. */ 397 /* IRQ routing. */
377 memcpy(&dec_interrupt, &kn02_interrupt, 398 memcpy(&dec_interrupt, &kn02_interrupt,
@@ -472,7 +493,7 @@ static int_ptr kn02ba_asic_mask_nr_tbl[][2] __initdata = {
472 { .p = asic_all_int } }, 493 { .p = asic_all_int } },
473}; 494};
474 495
475void __init dec_init_kn02ba(void) 496static void __init dec_init_kn02ba(void)
476{ 497{
477 /* IRQ routing. */ 498 /* IRQ routing. */
478 memcpy(&dec_interrupt, &kn02ba_interrupt, 499 memcpy(&dec_interrupt, &kn02ba_interrupt,
@@ -569,7 +590,7 @@ static int_ptr kn02ca_asic_mask_nr_tbl[][2] __initdata = {
569 { .p = asic_all_int } }, 590 { .p = asic_all_int } },
570}; 591};
571 592
572void __init dec_init_kn02ca(void) 593static void __init dec_init_kn02ca(void)
573{ 594{
574 /* IRQ routing. */ 595 /* IRQ routing. */
575 memcpy(&dec_interrupt, &kn02ca_interrupt, 596 memcpy(&dec_interrupt, &kn02ca_interrupt,
@@ -670,7 +691,7 @@ static int_ptr kn03_asic_mask_nr_tbl[][2] __initdata = {
670 { .p = asic_all_int } }, 691 { .p = asic_all_int } },
671}; 692};
672 693
673void __init dec_init_kn03(void) 694static void __init dec_init_kn03(void)
674{ 695{
675 /* IRQ routing. */ 696 /* IRQ routing. */
676 memcpy(&dec_interrupt, &kn03_interrupt, 697 memcpy(&dec_interrupt, &kn03_interrupt,
@@ -744,7 +765,3 @@ void __init arch_init_irq(void)
744 if (dec_interrupt[DEC_IRQ_HALT] >= 0) 765 if (dec_interrupt[DEC_IRQ_HALT] >= 0)
745 setup_irq(dec_interrupt[DEC_IRQ_HALT], &haltirq); 766 setup_irq(dec_interrupt[DEC_IRQ_HALT], &haltirq);
746} 767}
747
748EXPORT_SYMBOL(ioasic_base);
749EXPORT_SYMBOL(dec_kn_slot_size);
750EXPORT_SYMBOL(dec_interrupt);
diff --git a/arch/mips/defconfig b/arch/mips/defconfig
index 20f84b119b4c..4b585e642c2a 100644
--- a/arch/mips/defconfig
+++ b/arch/mips/defconfig
@@ -1,12 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.11-rc2 3# Linux kernel version: 2.6.14-rc2
4# Wed Jan 26 02:48:59 2005 4# Thu Oct 20 22:25:09 2005
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7# CONFIG_64BIT is not set
8# CONFIG_64BIT is not set
9CONFIG_32BIT=y
10 7
11# 8#
12# Code maturity level options 9# Code maturity level options
@@ -14,25 +11,30 @@ CONFIG_32BIT=y
14CONFIG_EXPERIMENTAL=y 11CONFIG_EXPERIMENTAL=y
15CONFIG_CLEAN_COMPILE=y 12CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 13CONFIG_BROKEN_ON_SMP=y
14CONFIG_INIT_ENV_ARG_LIMIT=32
17 15
18# 16#
19# General setup 17# General setup
20# 18#
21CONFIG_LOCALVERSION="" 19CONFIG_LOCALVERSION=""
20CONFIG_LOCALVERSION_AUTO=y
22CONFIG_SWAP=y 21CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 22CONFIG_SYSVIPC=y
24# CONFIG_POSIX_MQUEUE is not set 23# CONFIG_POSIX_MQUEUE is not set
25# CONFIG_BSD_PROCESS_ACCT is not set 24# CONFIG_BSD_PROCESS_ACCT is not set
26CONFIG_SYSCTL=y 25CONFIG_SYSCTL=y
27# CONFIG_AUDIT is not set 26# CONFIG_AUDIT is not set
28CONFIG_LOG_BUF_SHIFT=14
29# CONFIG_HOTPLUG is not set 27# CONFIG_HOTPLUG is not set
30CONFIG_KOBJECT_UEVENT=y 28CONFIG_KOBJECT_UEVENT=y
31CONFIG_IKCONFIG=y 29CONFIG_IKCONFIG=y
32CONFIG_IKCONFIG_PROC=y 30CONFIG_IKCONFIG_PROC=y
31CONFIG_INITRAMFS_SOURCE=""
33CONFIG_EMBEDDED=y 32CONFIG_EMBEDDED=y
34CONFIG_KALLSYMS=y 33CONFIG_KALLSYMS=y
35# CONFIG_KALLSYMS_EXTRA_PASS is not set 34# CONFIG_KALLSYMS_EXTRA_PASS is not set
35CONFIG_PRINTK=y
36CONFIG_BUG=y
37CONFIG_BASE_FULL=y
36CONFIG_FUTEX=y 38CONFIG_FUTEX=y
37CONFIG_EPOLL=y 39CONFIG_EPOLL=y
38# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 40# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -42,6 +44,7 @@ CONFIG_CC_ALIGN_LABELS=0
42CONFIG_CC_ALIGN_LOOPS=0 44CONFIG_CC_ALIGN_LOOPS=0
43CONFIG_CC_ALIGN_JUMPS=0 45CONFIG_CC_ALIGN_JUMPS=0
44# CONFIG_TINY_SHMEM is not set 46# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0
45 48
46# 49#
47# Loadable module support 50# Loadable module support
@@ -57,41 +60,69 @@ CONFIG_KMOD=y
57# 60#
58# Machine selection 61# Machine selection
59# 62#
60# CONFIG_MACH_JAZZ is not set 63# CONFIG_MIPS_MTX1 is not set
61# CONFIG_MACH_VR41XX is not set 64# CONFIG_MIPS_BOSPORUS is not set
62# CONFIG_TOSHIBA_JMR3927 is not set 65# CONFIG_MIPS_PB1000 is not set
66# CONFIG_MIPS_PB1100 is not set
67# CONFIG_MIPS_PB1500 is not set
68# CONFIG_MIPS_PB1550 is not set
69# CONFIG_MIPS_PB1200 is not set
70# CONFIG_MIPS_DB1000 is not set
71# CONFIG_MIPS_DB1100 is not set
72# CONFIG_MIPS_DB1500 is not set
73# CONFIG_MIPS_DB1550 is not set
74# CONFIG_MIPS_DB1200 is not set
75# CONFIG_MIPS_MIRAGE is not set
63# CONFIG_MIPS_COBALT is not set 76# CONFIG_MIPS_COBALT is not set
64# CONFIG_MACH_DECSTATION is not set 77# CONFIG_MACH_DECSTATION is not set
65# CONFIG_MIPS_EV64120 is not set 78# CONFIG_MIPS_EV64120 is not set
66# CONFIG_MIPS_EV96100 is not set 79# CONFIG_MIPS_EV96100 is not set
67# CONFIG_MIPS_IVR is not set 80# CONFIG_MIPS_IVR is not set
68# CONFIG_LASAT is not set
69# CONFIG_MIPS_ITE8172 is not set 81# CONFIG_MIPS_ITE8172 is not set
82# CONFIG_MACH_JAZZ is not set
83# CONFIG_LASAT is not set
70# CONFIG_MIPS_ATLAS is not set 84# CONFIG_MIPS_ATLAS is not set
71# CONFIG_MIPS_MALTA is not set 85# CONFIG_MIPS_MALTA is not set
72# CONFIG_MIPS_SEAD is not set 86# CONFIG_MIPS_SEAD is not set
87# CONFIG_MIPS_SIM is not set
88# CONFIG_MOMENCO_JAGUAR_ATX is not set
73# CONFIG_MOMENCO_OCELOT is not set 89# CONFIG_MOMENCO_OCELOT is not set
74# CONFIG_MOMENCO_OCELOT_G is not set
75# CONFIG_MOMENCO_OCELOT_C is not set
76# CONFIG_MOMENCO_OCELOT_3 is not set 90# CONFIG_MOMENCO_OCELOT_3 is not set
77# CONFIG_MOMENCO_JAGUAR_ATX is not set 91# CONFIG_MOMENCO_OCELOT_C is not set
78# CONFIG_PMC_YOSEMITE is not set 92# CONFIG_MOMENCO_OCELOT_G is not set
93# CONFIG_MIPS_XXS1500 is not set
94# CONFIG_PNX8550_V2PCI is not set
95# CONFIG_PNX8550_JBS is not set
79# CONFIG_DDB5074 is not set 96# CONFIG_DDB5074 is not set
80# CONFIG_DDB5476 is not set 97# CONFIG_DDB5476 is not set
81# CONFIG_DDB5477 is not set 98# CONFIG_DDB5477 is not set
82# CONFIG_NEC_OSPREY is not set 99# CONFIG_MACH_VR41XX is not set
100# CONFIG_PMC_YOSEMITE is not set
101# CONFIG_QEMU is not set
83CONFIG_SGI_IP22=y 102CONFIG_SGI_IP22=y
84# CONFIG_SOC_AU1X00 is not set 103# CONFIG_SGI_IP27 is not set
85# CONFIG_SIBYTE_SB1xxx_SOC is not set 104# CONFIG_SGI_IP32 is not set
105# CONFIG_SIBYTE_BIGSUR is not set
106# CONFIG_SIBYTE_SWARM is not set
107# CONFIG_SIBYTE_SENTOSA is not set
108# CONFIG_SIBYTE_RHONE is not set
109# CONFIG_SIBYTE_CARMEL is not set
110# CONFIG_SIBYTE_PTSWARM is not set
111# CONFIG_SIBYTE_LITTLESUR is not set
112# CONFIG_SIBYTE_CRHINE is not set
113# CONFIG_SIBYTE_CRHONE is not set
86# CONFIG_SNI_RM200_PCI is not set 114# CONFIG_SNI_RM200_PCI is not set
115# CONFIG_TOSHIBA_JMR3927 is not set
87# CONFIG_TOSHIBA_RBTX4927 is not set 116# CONFIG_TOSHIBA_RBTX4927 is not set
117# CONFIG_TOSHIBA_RBTX4938 is not set
88CONFIG_RWSEM_GENERIC_SPINLOCK=y 118CONFIG_RWSEM_GENERIC_SPINLOCK=y
89CONFIG_GENERIC_CALIBRATE_DELAY=y 119CONFIG_GENERIC_CALIBRATE_DELAY=y
90CONFIG_HAVE_DEC_LOCK=y
91CONFIG_ARC=y 120CONFIG_ARC=y
92CONFIG_DMA_NONCOHERENT=y 121CONFIG_DMA_NONCOHERENT=y
93CONFIG_DMA_NEED_PCI_MAP_STATE=y 122CONFIG_DMA_NEED_PCI_MAP_STATE=y
123CONFIG_CPU_BIG_ENDIAN=y
94# CONFIG_CPU_LITTLE_ENDIAN is not set 124# CONFIG_CPU_LITTLE_ENDIAN is not set
125CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
95CONFIG_IRQ_CPU=y 126CONFIG_IRQ_CPU=y
96CONFIG_SWAP_IO_SPACE=y 127CONFIG_SWAP_IO_SPACE=y
97CONFIG_ARC32=y 128CONFIG_ARC32=y
@@ -103,8 +134,10 @@ CONFIG_ARC_PROMLIB=y
103# 134#
104# CPU selection 135# CPU selection
105# 136#
106# CONFIG_CPU_MIPS32 is not set 137# CONFIG_CPU_MIPS32_R1 is not set
107# CONFIG_CPU_MIPS64 is not set 138# CONFIG_CPU_MIPS32_R2 is not set
139# CONFIG_CPU_MIPS64_R1 is not set
140# CONFIG_CPU_MIPS64_R2 is not set
108# CONFIG_CPU_R3000 is not set 141# CONFIG_CPU_R3000 is not set
109# CONFIG_CPU_TX39XX is not set 142# CONFIG_CPU_TX39XX is not set
110# CONFIG_CPU_VR41XX is not set 143# CONFIG_CPU_VR41XX is not set
@@ -120,22 +153,48 @@ CONFIG_CPU_R5000=y
120# CONFIG_CPU_RM7000 is not set 153# CONFIG_CPU_RM7000 is not set
121# CONFIG_CPU_RM9000 is not set 154# CONFIG_CPU_RM9000 is not set
122# CONFIG_CPU_SB1 is not set 155# CONFIG_CPU_SB1 is not set
156CONFIG_SYS_HAS_CPU_R4X00=y
157CONFIG_SYS_HAS_CPU_R5000=y
158CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
159CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
160CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
161CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
162
163#
164# Kernel type
165#
166CONFIG_32BIT=y
167# CONFIG_64BIT is not set
123CONFIG_PAGE_SIZE_4KB=y 168CONFIG_PAGE_SIZE_4KB=y
124# CONFIG_PAGE_SIZE_8KB is not set 169# CONFIG_PAGE_SIZE_8KB is not set
125# CONFIG_PAGE_SIZE_16KB is not set 170# CONFIG_PAGE_SIZE_16KB is not set
126# CONFIG_PAGE_SIZE_64KB is not set 171# CONFIG_PAGE_SIZE_64KB is not set
127CONFIG_BOARD_SCACHE=y 172CONFIG_BOARD_SCACHE=y
128CONFIG_IP22_CPU_SCACHE=y 173CONFIG_IP22_CPU_SCACHE=y
174# CONFIG_MIPS_MT is not set
129# CONFIG_64BIT_PHYS_ADDR is not set 175# CONFIG_64BIT_PHYS_ADDR is not set
130# CONFIG_CPU_ADVANCED is not set 176# CONFIG_CPU_ADVANCED is not set
131CONFIG_CPU_HAS_LLSC=y 177CONFIG_CPU_HAS_LLSC=y
132CONFIG_CPU_HAS_LLDSCD=y 178CONFIG_CPU_HAS_LLDSCD=y
133CONFIG_CPU_HAS_SYNC=y 179CONFIG_CPU_HAS_SYNC=y
180CONFIG_GENERIC_HARDIRQS=y
181CONFIG_GENERIC_IRQ_PROBE=y
182CONFIG_ARCH_FLATMEM_ENABLE=y
183CONFIG_SELECT_MEMORY_MODEL=y
184CONFIG_FLATMEM_MANUAL=y
185# CONFIG_DISCONTIGMEM_MANUAL is not set
186# CONFIG_SPARSEMEM_MANUAL is not set
187CONFIG_FLATMEM=y
188CONFIG_FLAT_NODE_MEM_MAP=y
189# CONFIG_SPARSEMEM_STATIC is not set
190# CONFIG_PREEMPT_NONE is not set
191CONFIG_PREEMPT_VOLUNTARY=y
134# CONFIG_PREEMPT is not set 192# CONFIG_PREEMPT is not set
135 193
136# 194#
137# Bus options (PCI, PCMCIA, EISA, ISA, TC) 195# Bus options (PCI, PCMCIA, EISA, ISA, TC)
138# 196#
197CONFIG_HW_HAS_EISA=y
139# CONFIG_EISA is not set 198# CONFIG_EISA is not set
140CONFIG_MMU=y 199CONFIG_MMU=y
141 200
@@ -145,10 +204,6 @@ CONFIG_MMU=y
145# CONFIG_PCCARD is not set 204# CONFIG_PCCARD is not set
146 205
147# 206#
148# PC-card bridges
149#
150
151#
152# PCI Hotplug Support 207# PCI Hotplug Support
153# 208#
154 209
@@ -160,115 +215,7 @@ CONFIG_BINFMT_MISC=m
160CONFIG_TRAD_SIGNALS=y 215CONFIG_TRAD_SIGNALS=y
161 216
162# 217#
163# Device Drivers 218# Networking
164#
165
166#
167# Generic Driver Options
168#
169CONFIG_STANDALONE=y
170CONFIG_PREVENT_FIRMWARE_BUILD=y
171# CONFIG_FW_LOADER is not set
172
173#
174# Memory Technology Devices (MTD)
175#
176# CONFIG_MTD is not set
177
178#
179# Parallel port support
180#
181# CONFIG_PARPORT is not set
182
183#
184# Plug and Play support
185#
186
187#
188# Block devices
189#
190# CONFIG_BLK_DEV_FD is not set
191# CONFIG_BLK_DEV_COW_COMMON is not set
192# CONFIG_BLK_DEV_LOOP is not set
193# CONFIG_BLK_DEV_NBD is not set
194# CONFIG_BLK_DEV_RAM is not set
195CONFIG_BLK_DEV_RAM_COUNT=16
196CONFIG_INITRAMFS_SOURCE=""
197# CONFIG_LBD is not set
198CONFIG_CDROM_PKTCDVD=m
199CONFIG_CDROM_PKTCDVD_BUFFERS=8
200# CONFIG_CDROM_PKTCDVD_WCACHE is not set
201
202#
203# IO Schedulers
204#
205CONFIG_IOSCHED_NOOP=y
206CONFIG_IOSCHED_AS=y
207CONFIG_IOSCHED_DEADLINE=y
208CONFIG_IOSCHED_CFQ=y
209CONFIG_ATA_OVER_ETH=m
210
211#
212# ATA/ATAPI/MFM/RLL support
213#
214# CONFIG_IDE is not set
215
216#
217# SCSI device support
218#
219CONFIG_SCSI=y
220CONFIG_SCSI_PROC_FS=y
221
222#
223# SCSI support type (disk, tape, CD-ROM)
224#
225CONFIG_BLK_DEV_SD=y
226CONFIG_CHR_DEV_ST=y
227# CONFIG_CHR_DEV_OSST is not set
228CONFIG_BLK_DEV_SR=y
229# CONFIG_BLK_DEV_SR_VENDOR is not set
230# CONFIG_CHR_DEV_SG is not set
231
232#
233# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
234#
235# CONFIG_SCSI_MULTI_LUN is not set
236CONFIG_SCSI_CONSTANTS=y
237# CONFIG_SCSI_LOGGING is not set
238
239#
240# SCSI Transport Attributes
241#
242CONFIG_SCSI_SPI_ATTRS=m
243# CONFIG_SCSI_FC_ATTRS is not set
244CONFIG_SCSI_ISCSI_ATTRS=m
245
246#
247# SCSI low-level drivers
248#
249CONFIG_SGIWD93_SCSI=y
250# CONFIG_SCSI_SATA is not set
251# CONFIG_SCSI_DEBUG is not set
252
253#
254# Multi-device support (RAID and LVM)
255#
256# CONFIG_MD is not set
257
258#
259# Fusion MPT device support
260#
261
262#
263# IEEE 1394 (FireWire) support
264#
265
266#
267# I2O device support
268#
269
270#
271# Networking support
272# 219#
273CONFIG_NET=y 220CONFIG_NET=y
274 221
@@ -277,12 +224,14 @@ CONFIG_NET=y
277# 224#
278CONFIG_PACKET=y 225CONFIG_PACKET=y
279CONFIG_PACKET_MMAP=y 226CONFIG_PACKET_MMAP=y
280CONFIG_NETLINK_DEV=y
281CONFIG_UNIX=y 227CONFIG_UNIX=y
228CONFIG_XFRM=y
229CONFIG_XFRM_USER=m
282CONFIG_NET_KEY=y 230CONFIG_NET_KEY=y
283CONFIG_INET=y 231CONFIG_INET=y
284CONFIG_IP_MULTICAST=y 232CONFIG_IP_MULTICAST=y
285# CONFIG_IP_ADVANCED_ROUTER is not set 233# CONFIG_IP_ADVANCED_ROUTER is not set
234CONFIG_IP_FIB_HASH=y
286CONFIG_IP_PNP=y 235CONFIG_IP_PNP=y
287# CONFIG_IP_PNP_DHCP is not set 236# CONFIG_IP_PNP_DHCP is not set
288CONFIG_IP_PNP_BOOTP=y 237CONFIG_IP_PNP_BOOTP=y
@@ -296,8 +245,10 @@ CONFIG_INET_AH=m
296CONFIG_INET_ESP=m 245CONFIG_INET_ESP=m
297CONFIG_INET_IPCOMP=m 246CONFIG_INET_IPCOMP=m
298CONFIG_INET_TUNNEL=m 247CONFIG_INET_TUNNEL=m
299CONFIG_IP_TCPDIAG=m 248CONFIG_INET_DIAG=y
300CONFIG_IP_TCPDIAG_IPV6=y 249CONFIG_INET_TCP_DIAG=y
250# CONFIG_TCP_CONG_ADVANCED is not set
251CONFIG_TCP_CONG_BIC=y
301 252
302# 253#
303# IP: Virtual Server Configuration 254# IP: Virtual Server Configuration
@@ -341,6 +292,9 @@ CONFIG_INET6_TUNNEL=m
341CONFIG_IPV6_TUNNEL=m 292CONFIG_IPV6_TUNNEL=m
342CONFIG_NETFILTER=y 293CONFIG_NETFILTER=y
343# CONFIG_NETFILTER_DEBUG is not set 294# CONFIG_NETFILTER_DEBUG is not set
295CONFIG_NETFILTER_NETLINK=m
296CONFIG_NETFILTER_NETLINK_QUEUE=m
297CONFIG_NETFILTER_NETLINK_LOG=m
344 298
345# 299#
346# IP: Netfilter Configuration 300# IP: Netfilter Configuration
@@ -348,11 +302,15 @@ CONFIG_NETFILTER=y
348CONFIG_IP_NF_CONNTRACK=m 302CONFIG_IP_NF_CONNTRACK=m
349CONFIG_IP_NF_CT_ACCT=y 303CONFIG_IP_NF_CT_ACCT=y
350CONFIG_IP_NF_CONNTRACK_MARK=y 304CONFIG_IP_NF_CONNTRACK_MARK=y
305CONFIG_IP_NF_CONNTRACK_EVENTS=y
306CONFIG_IP_NF_CONNTRACK_NETLINK=m
351# CONFIG_IP_NF_CT_PROTO_SCTP is not set 307# CONFIG_IP_NF_CT_PROTO_SCTP is not set
352CONFIG_IP_NF_FTP=m 308CONFIG_IP_NF_FTP=m
353CONFIG_IP_NF_IRC=m 309CONFIG_IP_NF_IRC=m
310# CONFIG_IP_NF_NETBIOS_NS is not set
354CONFIG_IP_NF_TFTP=m 311CONFIG_IP_NF_TFTP=m
355CONFIG_IP_NF_AMANDA=m 312CONFIG_IP_NF_AMANDA=m
313CONFIG_IP_NF_PPTP=m
356CONFIG_IP_NF_QUEUE=m 314CONFIG_IP_NF_QUEUE=m
357CONFIG_IP_NF_IPTABLES=m 315CONFIG_IP_NF_IPTABLES=m
358CONFIG_IP_NF_MATCH_LIMIT=m 316CONFIG_IP_NF_MATCH_LIMIT=m
@@ -376,9 +334,12 @@ CONFIG_IP_NF_MATCH_OWNER=m
376CONFIG_IP_NF_MATCH_ADDRTYPE=m 334CONFIG_IP_NF_MATCH_ADDRTYPE=m
377CONFIG_IP_NF_MATCH_REALM=m 335CONFIG_IP_NF_MATCH_REALM=m
378CONFIG_IP_NF_MATCH_SCTP=m 336CONFIG_IP_NF_MATCH_SCTP=m
337CONFIG_IP_NF_MATCH_DCCP=m
379CONFIG_IP_NF_MATCH_COMMENT=m 338CONFIG_IP_NF_MATCH_COMMENT=m
380CONFIG_IP_NF_MATCH_CONNMARK=m 339CONFIG_IP_NF_MATCH_CONNMARK=m
340CONFIG_IP_NF_MATCH_CONNBYTES=m
381CONFIG_IP_NF_MATCH_HASHLIMIT=m 341CONFIG_IP_NF_MATCH_HASHLIMIT=m
342CONFIG_IP_NF_MATCH_STRING=m
382CONFIG_IP_NF_FILTER=m 343CONFIG_IP_NF_FILTER=m
383CONFIG_IP_NF_TARGET_REJECT=m 344CONFIG_IP_NF_TARGET_REJECT=m
384CONFIG_IP_NF_TARGET_LOG=m 345CONFIG_IP_NF_TARGET_LOG=m
@@ -395,12 +356,14 @@ CONFIG_IP_NF_NAT_IRC=m
395CONFIG_IP_NF_NAT_FTP=m 356CONFIG_IP_NF_NAT_FTP=m
396CONFIG_IP_NF_NAT_TFTP=m 357CONFIG_IP_NF_NAT_TFTP=m
397CONFIG_IP_NF_NAT_AMANDA=m 358CONFIG_IP_NF_NAT_AMANDA=m
359CONFIG_IP_NF_NAT_PPTP=m
398CONFIG_IP_NF_MANGLE=m 360CONFIG_IP_NF_MANGLE=m
399CONFIG_IP_NF_TARGET_TOS=m 361CONFIG_IP_NF_TARGET_TOS=m
400CONFIG_IP_NF_TARGET_ECN=m 362CONFIG_IP_NF_TARGET_ECN=m
401CONFIG_IP_NF_TARGET_DSCP=m 363CONFIG_IP_NF_TARGET_DSCP=m
402CONFIG_IP_NF_TARGET_MARK=m 364CONFIG_IP_NF_TARGET_MARK=m
403CONFIG_IP_NF_TARGET_CLASSIFY=m 365CONFIG_IP_NF_TARGET_CLASSIFY=m
366CONFIG_IP_NF_TARGET_TTL=m
404CONFIG_IP_NF_TARGET_CONNMARK=m 367CONFIG_IP_NF_TARGET_CONNMARK=m
405CONFIG_IP_NF_TARGET_CLUSTERIP=m 368CONFIG_IP_NF_TARGET_CLUSTERIP=m
406CONFIG_IP_NF_RAW=m 369CONFIG_IP_NF_RAW=m
@@ -410,7 +373,7 @@ CONFIG_IP_NF_ARPFILTER=m
410CONFIG_IP_NF_ARP_MANGLE=m 373CONFIG_IP_NF_ARP_MANGLE=m
411 374
412# 375#
413# IPv6: Netfilter Configuration 376# IPv6: Netfilter Configuration (EXPERIMENTAL)
414# 377#
415CONFIG_IP6_NF_QUEUE=m 378CONFIG_IP6_NF_QUEUE=m
416CONFIG_IP6_NF_IPTABLES=m 379CONFIG_IP6_NF_IPTABLES=m
@@ -429,11 +392,16 @@ CONFIG_IP6_NF_MATCH_LENGTH=m
429CONFIG_IP6_NF_MATCH_EUI64=m 392CONFIG_IP6_NF_MATCH_EUI64=m
430CONFIG_IP6_NF_FILTER=m 393CONFIG_IP6_NF_FILTER=m
431CONFIG_IP6_NF_TARGET_LOG=m 394CONFIG_IP6_NF_TARGET_LOG=m
395CONFIG_IP6_NF_TARGET_REJECT=m
432CONFIG_IP6_NF_MANGLE=m 396CONFIG_IP6_NF_MANGLE=m
433CONFIG_IP6_NF_TARGET_MARK=m 397CONFIG_IP6_NF_TARGET_MARK=m
398CONFIG_IP6_NF_TARGET_HL=m
434CONFIG_IP6_NF_RAW=m 399CONFIG_IP6_NF_RAW=m
435CONFIG_XFRM=y 400
436CONFIG_XFRM_USER=m 401#
402# DCCP Configuration (EXPERIMENTAL)
403#
404# CONFIG_IP_DCCP is not set
437 405
438# 406#
439# SCTP Configuration (EXPERIMENTAL) 407# SCTP Configuration (EXPERIMENTAL)
@@ -456,10 +424,6 @@ CONFIG_SCTP_HMAC_MD5=y
456CONFIG_NET_DIVERT=y 424CONFIG_NET_DIVERT=y
457# CONFIG_ECONET is not set 425# CONFIG_ECONET is not set
458# CONFIG_WAN_ROUTER is not set 426# CONFIG_WAN_ROUTER is not set
459
460#
461# QoS and/or fair queueing
462#
463CONFIG_NET_SCHED=y 427CONFIG_NET_SCHED=y
464# CONFIG_NET_SCH_CLK_JIFFIES is not set 428# CONFIG_NET_SCH_CLK_JIFFIES is not set
465CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y 429CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
@@ -479,6 +443,7 @@ CONFIG_NET_SCH_INGRESS=m
479CONFIG_NET_QOS=y 443CONFIG_NET_QOS=y
480CONFIG_NET_ESTIMATOR=y 444CONFIG_NET_ESTIMATOR=y
481CONFIG_NET_CLS=y 445CONFIG_NET_CLS=y
446CONFIG_NET_CLS_BASIC=m
482CONFIG_NET_CLS_TCINDEX=m 447CONFIG_NET_CLS_TCINDEX=m
483CONFIG_NET_CLS_ROUTE4=m 448CONFIG_NET_CLS_ROUTE4=m
484CONFIG_NET_CLS_ROUTE=y 449CONFIG_NET_CLS_ROUTE=y
@@ -489,6 +454,7 @@ CONFIG_NET_CLS_U32=m
489# CONFIG_CLS_U32_MARK is not set 454# CONFIG_CLS_U32_MARK is not set
490CONFIG_NET_CLS_RSVP=m 455CONFIG_NET_CLS_RSVP=m
491CONFIG_NET_CLS_RSVP6=m 456CONFIG_NET_CLS_RSVP6=m
457# CONFIG_NET_EMATCH is not set
492# CONFIG_NET_CLS_ACT is not set 458# CONFIG_NET_CLS_ACT is not set
493CONFIG_NET_CLS_POLICE=y 459CONFIG_NET_CLS_POLICE=y
494 460
@@ -496,17 +462,153 @@ CONFIG_NET_CLS_POLICE=y
496# Network testing 462# Network testing
497# 463#
498# CONFIG_NET_PKTGEN is not set 464# CONFIG_NET_PKTGEN is not set
499# CONFIG_NETPOLL is not set
500# CONFIG_NET_POLL_CONTROLLER is not set
501# CONFIG_HAMRADIO is not set 465# CONFIG_HAMRADIO is not set
502# CONFIG_IRDA is not set 466# CONFIG_IRDA is not set
503# CONFIG_BT is not set 467# CONFIG_BT is not set
468CONFIG_IEEE80211=m
469# CONFIG_IEEE80211_DEBUG is not set
470CONFIG_IEEE80211_CRYPT_WEP=m
471CONFIG_IEEE80211_CRYPT_CCMP=m
472CONFIG_IEEE80211_CRYPT_TKIP=m
473
474#
475# Device Drivers
476#
477
478#
479# Generic Driver Options
480#
481CONFIG_STANDALONE=y
482CONFIG_PREVENT_FIRMWARE_BUILD=y
483# CONFIG_FW_LOADER is not set
484
485#
486# Connector - unified userspace <-> kernelspace linker
487#
488CONFIG_CONNECTOR=m
489
490#
491# Memory Technology Devices (MTD)
492#
493# CONFIG_MTD is not set
494
495#
496# Parallel port support
497#
498# CONFIG_PARPORT is not set
499
500#
501# Plug and Play support
502#
503
504#
505# Block devices
506#
507# CONFIG_BLK_DEV_COW_COMMON is not set
508# CONFIG_BLK_DEV_LOOP is not set
509# CONFIG_BLK_DEV_NBD is not set
510# CONFIG_BLK_DEV_RAM is not set
511CONFIG_BLK_DEV_RAM_COUNT=16
512# CONFIG_LBD is not set
513CONFIG_CDROM_PKTCDVD=m
514CONFIG_CDROM_PKTCDVD_BUFFERS=8
515# CONFIG_CDROM_PKTCDVD_WCACHE is not set
516
517#
518# IO Schedulers
519#
520CONFIG_IOSCHED_NOOP=y
521CONFIG_IOSCHED_AS=y
522CONFIG_IOSCHED_DEADLINE=y
523CONFIG_IOSCHED_CFQ=y
524CONFIG_ATA_OVER_ETH=m
525
526#
527# ATA/ATAPI/MFM/RLL support
528#
529# CONFIG_IDE is not set
530
531#
532# SCSI device support
533#
534CONFIG_RAID_ATTRS=m
535CONFIG_SCSI=y
536CONFIG_SCSI_PROC_FS=y
537
538#
539# SCSI support type (disk, tape, CD-ROM)
540#
541CONFIG_BLK_DEV_SD=y
542CONFIG_CHR_DEV_ST=y
543# CONFIG_CHR_DEV_OSST is not set
544CONFIG_BLK_DEV_SR=y
545# CONFIG_BLK_DEV_SR_VENDOR is not set
546# CONFIG_CHR_DEV_SG is not set
547CONFIG_CHR_DEV_SCH=m
548
549#
550# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
551#
552# CONFIG_SCSI_MULTI_LUN is not set
553CONFIG_SCSI_CONSTANTS=y
554# CONFIG_SCSI_LOGGING is not set
555
556#
557# SCSI Transport Attributes
558#
559CONFIG_SCSI_SPI_ATTRS=m
560# CONFIG_SCSI_FC_ATTRS is not set
561CONFIG_SCSI_ISCSI_ATTRS=m
562CONFIG_SCSI_SAS_ATTRS=m
563
564#
565# SCSI low-level drivers
566#
567CONFIG_SGIWD93_SCSI=y
568# CONFIG_SCSI_SATA is not set
569# CONFIG_SCSI_DEBUG is not set
570
571#
572# Multi-device support (RAID and LVM)
573#
574# CONFIG_MD is not set
575
576#
577# Fusion MPT device support
578#
579# CONFIG_FUSION is not set
580
581#
582# IEEE 1394 (FireWire) support
583#
584
585#
586# I2O device support
587#
588
589#
590# Network device support
591#
504CONFIG_NETDEVICES=y 592CONFIG_NETDEVICES=y
505CONFIG_DUMMY=m 593CONFIG_DUMMY=m
506CONFIG_BONDING=m 594CONFIG_BONDING=m
507CONFIG_EQUALIZER=m 595CONFIG_EQUALIZER=m
508CONFIG_TUN=m 596CONFIG_TUN=m
509CONFIG_ETHERTAP=m 597
598#
599# PHY device support
600#
601CONFIG_PHYLIB=m
602CONFIG_PHYCONTROL=y
603
604#
605# MII PHY device drivers
606#
607CONFIG_MARVELL_PHY=m
608CONFIG_DAVICOM_PHY=m
609CONFIG_QSEMI_PHY=m
610CONFIG_LXT_PHY=m
611CONFIG_CICADA_PHY=m
510 612
511# 613#
512# Ethernet (10 or 100Mbit) 614# Ethernet (10 or 100Mbit)
@@ -540,6 +642,8 @@ CONFIG_SGISEEQ=y
540# CONFIG_SLIP is not set 642# CONFIG_SLIP is not set
541# CONFIG_SHAPER is not set 643# CONFIG_SHAPER is not set
542# CONFIG_NETCONSOLE is not set 644# CONFIG_NETCONSOLE is not set
645# CONFIG_NETPOLL is not set
646# CONFIG_NET_POLL_CONTROLLER is not set
543 647
544# 648#
545# ISDN subsystem 649# ISDN subsystem
@@ -569,18 +673,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
569# CONFIG_INPUT_EVBUG is not set 673# CONFIG_INPUT_EVBUG is not set
570 674
571# 675#
572# Input I/O drivers
573#
574# CONFIG_GAMEPORT is not set
575CONFIG_SOUND_GAMEPORT=y
576CONFIG_SERIO=y
577CONFIG_SERIO_I8042=y
578CONFIG_SERIO_SERPORT=y
579# CONFIG_SERIO_CT82C710 is not set
580CONFIG_SERIO_LIBPS2=y
581CONFIG_SERIO_RAW=m
582
583#
584# Input Device Drivers 676# Input Device Drivers
585# 677#
586CONFIG_INPUT_KEYBOARD=y 678CONFIG_INPUT_KEYBOARD=y
@@ -598,6 +690,16 @@ CONFIG_MOUSE_SERIAL=m
598# CONFIG_INPUT_MISC is not set 690# CONFIG_INPUT_MISC is not set
599 691
600# 692#
693# Hardware I/O ports
694#
695CONFIG_SERIO=y
696CONFIG_SERIO_I8042=y
697CONFIG_SERIO_SERPORT=y
698CONFIG_SERIO_LIBPS2=y
699CONFIG_SERIO_RAW=m
700# CONFIG_GAMEPORT is not set
701
702#
601# Character devices 703# Character devices
602# 704#
603CONFIG_VT=y 705CONFIG_VT=y
@@ -644,11 +746,14 @@ CONFIG_SGI_DS1286=m
644# 746#
645# Ftape, the floppy tape device driver 747# Ftape, the floppy tape device driver
646# 748#
647# CONFIG_DRM is not set
648CONFIG_RAW_DRIVER=m 749CONFIG_RAW_DRIVER=m
649CONFIG_MAX_RAW_DEVS=256 750CONFIG_MAX_RAW_DEVS=256
650 751
651# 752#
753# TPM devices
754#
755
756#
652# I2C support 757# I2C support
653# 758#
654# CONFIG_I2C is not set 759# CONFIG_I2C is not set
@@ -659,10 +764,20 @@ CONFIG_MAX_RAW_DEVS=256
659# CONFIG_W1 is not set 764# CONFIG_W1 is not set
660 765
661# 766#
767# Hardware Monitoring support
768#
769# CONFIG_HWMON is not set
770# CONFIG_HWMON_VID is not set
771
772#
662# Misc devices 773# Misc devices
663# 774#
664 775
665# 776#
777# Multimedia Capabilities Port drivers
778#
779
780#
666# Multimedia devices 781# Multimedia devices
667# 782#
668# CONFIG_VIDEO_DEV is not set 783# CONFIG_VIDEO_DEV is not set
@@ -693,7 +808,6 @@ CONFIG_LOGO=y
693# CONFIG_LOGO_LINUX_VGA16 is not set 808# CONFIG_LOGO_LINUX_VGA16 is not set
694# CONFIG_LOGO_LINUX_CLUT224 is not set 809# CONFIG_LOGO_LINUX_CLUT224 is not set
695CONFIG_LOGO_SGI_CLUT224=y 810CONFIG_LOGO_SGI_CLUT224=y
696# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
697 811
698# 812#
699# Sound 813# Sound
@@ -707,10 +821,6 @@ CONFIG_LOGO_SGI_CLUT224=y
707# CONFIG_USB_ARCH_HAS_OHCI is not set 821# CONFIG_USB_ARCH_HAS_OHCI is not set
708 822
709# 823#
710# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
711#
712
713#
714# USB Gadget Support 824# USB Gadget Support
715# 825#
716# CONFIG_USB_GADGET is not set 826# CONFIG_USB_GADGET is not set
@@ -723,13 +833,17 @@ CONFIG_LOGO_SGI_CLUT224=y
723# 833#
724# InfiniBand support 834# InfiniBand support
725# 835#
726# CONFIG_INFINIBAND is not set 836
837#
838# SN Devices
839#
727 840
728# 841#
729# File systems 842# File systems
730# 843#
731CONFIG_EXT2_FS=m 844CONFIG_EXT2_FS=m
732# CONFIG_EXT2_FS_XATTR is not set 845# CONFIG_EXT2_FS_XATTR is not set
846# CONFIG_EXT2_FS_XIP is not set
733CONFIG_EXT3_FS=y 847CONFIG_EXT3_FS=y
734CONFIG_EXT3_FS_XATTR=y 848CONFIG_EXT3_FS_XATTR=y
735CONFIG_EXT3_FS_POSIX_ACL=y 849CONFIG_EXT3_FS_POSIX_ACL=y
@@ -741,12 +855,14 @@ CONFIG_FS_MBCACHE=y
741# CONFIG_JFS_FS is not set 855# CONFIG_JFS_FS is not set
742CONFIG_FS_POSIX_ACL=y 856CONFIG_FS_POSIX_ACL=y
743CONFIG_XFS_FS=m 857CONFIG_XFS_FS=m
744# CONFIG_XFS_RT is not set 858CONFIG_XFS_EXPORT=y
745CONFIG_XFS_QUOTA=y 859CONFIG_XFS_QUOTA=m
746CONFIG_XFS_SECURITY=y 860CONFIG_XFS_SECURITY=y
747# CONFIG_XFS_POSIX_ACL is not set 861# CONFIG_XFS_POSIX_ACL is not set
862# CONFIG_XFS_RT is not set
748CONFIG_MINIX_FS=m 863CONFIG_MINIX_FS=m
749# CONFIG_ROMFS_FS is not set 864# CONFIG_ROMFS_FS is not set
865CONFIG_INOTIFY=y
750CONFIG_QUOTA=y 866CONFIG_QUOTA=y
751# CONFIG_QFMT_V1 is not set 867# CONFIG_QFMT_V1 is not set
752CONFIG_QFMT_V2=m 868CONFIG_QFMT_V2=m
@@ -754,6 +870,7 @@ CONFIG_QUOTACTL=y
754CONFIG_DNOTIFY=y 870CONFIG_DNOTIFY=y
755CONFIG_AUTOFS_FS=m 871CONFIG_AUTOFS_FS=m
756CONFIG_AUTOFS4_FS=m 872CONFIG_AUTOFS4_FS=m
873CONFIG_FUSE_FS=m
757 874
758# 875#
759# CD-ROM/DVD Filesystems 876# CD-ROM/DVD Filesystems
@@ -781,12 +898,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
781CONFIG_PROC_FS=y 898CONFIG_PROC_FS=y
782CONFIG_PROC_KCORE=y 899CONFIG_PROC_KCORE=y
783CONFIG_SYSFS=y 900CONFIG_SYSFS=y
784# CONFIG_DEVFS_FS is not set
785CONFIG_DEVPTS_FS_XATTR=y
786CONFIG_DEVPTS_FS_SECURITY=y
787# CONFIG_TMPFS is not set 901# CONFIG_TMPFS is not set
788# CONFIG_HUGETLB_PAGE is not set 902# CONFIG_HUGETLB_PAGE is not set
789CONFIG_RAMFS=y 903CONFIG_RAMFS=y
904CONFIG_RELAYFS_FS=m
790 905
791# 906#
792# Miscellaneous filesystems 907# Miscellaneous filesystems
@@ -811,15 +926,20 @@ CONFIG_UFS_FS=m
811# 926#
812CONFIG_NFS_FS=m 927CONFIG_NFS_FS=m
813CONFIG_NFS_V3=y 928CONFIG_NFS_V3=y
929CONFIG_NFS_V3_ACL=y
814# CONFIG_NFS_V4 is not set 930# CONFIG_NFS_V4 is not set
815# CONFIG_NFS_DIRECTIO is not set 931# CONFIG_NFS_DIRECTIO is not set
816CONFIG_NFSD=m 932CONFIG_NFSD=m
933CONFIG_NFSD_V2_ACL=y
817CONFIG_NFSD_V3=y 934CONFIG_NFSD_V3=y
935CONFIG_NFSD_V3_ACL=y
818# CONFIG_NFSD_V4 is not set 936# CONFIG_NFSD_V4 is not set
819CONFIG_NFSD_TCP=y 937CONFIG_NFSD_TCP=y
820CONFIG_LOCKD=m 938CONFIG_LOCKD=m
821CONFIG_LOCKD_V4=y 939CONFIG_LOCKD_V4=y
822CONFIG_EXPORTFS=m 940CONFIG_EXPORTFS=m
941CONFIG_NFS_ACL_SUPPORT=m
942CONFIG_NFS_COMMON=y
823CONFIG_SUNRPC=m 943CONFIG_SUNRPC=m
824CONFIG_SUNRPC_GSS=m 944CONFIG_SUNRPC_GSS=m
825CONFIG_RPCSEC_GSS_KRB5=m 945CONFIG_RPCSEC_GSS_KRB5=m
@@ -835,6 +955,7 @@ CONFIG_CIFS=m
835CONFIG_CODA_FS=m 955CONFIG_CODA_FS=m
836# CONFIG_CODA_FS_OLD_API is not set 956# CONFIG_CODA_FS_OLD_API is not set
837# CONFIG_AFS_FS is not set 957# CONFIG_AFS_FS is not set
958# CONFIG_9P_FS is not set
838 959
839# 960#
840# Partition Types 961# Partition Types
@@ -908,7 +1029,9 @@ CONFIG_NLS_UTF8=m
908# 1029#
909# Kernel hacking 1030# Kernel hacking
910# 1031#
1032# CONFIG_PRINTK_TIME is not set
911# CONFIG_DEBUG_KERNEL is not set 1033# CONFIG_DEBUG_KERNEL is not set
1034CONFIG_LOG_BUF_SHIFT=14
912CONFIG_CROSSCOMPILE=y 1035CONFIG_CROSSCOMPILE=y
913CONFIG_CMDLINE="" 1036CONFIG_CMDLINE=""
914 1037
@@ -931,6 +1054,7 @@ CONFIG_CRYPTO_SHA1=m
931CONFIG_CRYPTO_SHA256=m 1054CONFIG_CRYPTO_SHA256=m
932CONFIG_CRYPTO_SHA512=m 1055CONFIG_CRYPTO_SHA512=m
933CONFIG_CRYPTO_WP512=m 1056CONFIG_CRYPTO_WP512=m
1057CONFIG_CRYPTO_TGR192=m
934CONFIG_CRYPTO_DES=m 1058CONFIG_CRYPTO_DES=m
935CONFIG_CRYPTO_BLOWFISH=m 1059CONFIG_CRYPTO_BLOWFISH=m
936CONFIG_CRYPTO_TWOFISH=m 1060CONFIG_CRYPTO_TWOFISH=m
@@ -942,10 +1066,10 @@ CONFIG_CRYPTO_TEA=m
942CONFIG_CRYPTO_ARC4=m 1066CONFIG_CRYPTO_ARC4=m
943CONFIG_CRYPTO_KHAZAD=m 1067CONFIG_CRYPTO_KHAZAD=m
944CONFIG_CRYPTO_ANUBIS=m 1068CONFIG_CRYPTO_ANUBIS=m
945CONFIG_CRYPTO_DEFLATE=y 1069CONFIG_CRYPTO_DEFLATE=m
946CONFIG_CRYPTO_MICHAEL_MIC=m 1070CONFIG_CRYPTO_MICHAEL_MIC=m
947CONFIG_CRYPTO_CRC32C=m 1071CONFIG_CRYPTO_CRC32C=m
948CONFIG_CRYPTO_TEST=m 1072# CONFIG_CRYPTO_TEST is not set
949 1073
950# 1074#
951# Hardware crypto devices 1075# Hardware crypto devices
@@ -955,9 +1079,12 @@ CONFIG_CRYPTO_TEST=m
955# Library routines 1079# Library routines
956# 1080#
957# CONFIG_CRC_CCITT is not set 1081# CONFIG_CRC_CCITT is not set
1082CONFIG_CRC16=m
958CONFIG_CRC32=m 1083CONFIG_CRC32=m
959CONFIG_LIBCRC32C=m 1084CONFIG_LIBCRC32C=m
960CONFIG_ZLIB_INFLATE=y 1085CONFIG_ZLIB_INFLATE=m
961CONFIG_ZLIB_DEFLATE=y 1086CONFIG_ZLIB_DEFLATE=m
962CONFIG_GENERIC_HARDIRQS=y 1087CONFIG_TEXTSEARCH=y
963CONFIG_GENERIC_IRQ_PROBE=y 1088CONFIG_TEXTSEARCH_KMP=m
1089CONFIG_TEXTSEARCH_BM=m
1090CONFIG_TEXTSEARCH_FSM=m
diff --git a/arch/mips/galileo-boards/ev96100/setup.c b/arch/mips/galileo-boards/ev96100/setup.c
index 28bd908c6d55..78dbb18edeb8 100644
--- a/arch/mips/galileo-boards/ev96100/setup.c
+++ b/arch/mips/galileo-boards/ev96100/setup.c
@@ -55,7 +55,7 @@ extern void mips_reboot_setup(void);
55 55
56unsigned char mac_0_1[12]; 56unsigned char mac_0_1[12];
57 57
58static void __init ev96100_setup(void) 58void __init plat_setup(void)
59{ 59{
60 unsigned int config = read_c0_config(); 60 unsigned int config = read_c0_config();
61 unsigned int status = read_c0_status(); 61 unsigned int status = read_c0_status();
@@ -142,8 +142,6 @@ static void __init ev96100_setup(void)
142 tmp = GT_READ(GT_PCI0_CFGDATA_OFS); 142 tmp = GT_READ(GT_PCI0_CFGDATA_OFS);
143} 143}
144 144
145early_initcall(ev96100_setup);
146
147unsigned short get_gt_devid(void) 145unsigned short get_gt_devid(void)
148{ 146{
149 u32 gt_devid; 147 u32 gt_devid;
diff --git a/arch/mips/gt64120/ev64120/Kconfig b/arch/mips/gt64120/ev64120/Kconfig
new file mode 100644
index 000000000000..d691762cb0f7
--- /dev/null
+++ b/arch/mips/gt64120/ev64120/Kconfig
@@ -0,0 +1,3 @@
1config EVB_PCI1
2 bool "Enable Second PCI (PCI1)"
3 depends on MIPS_EV64120
diff --git a/arch/mips/gt64120/ev64120/setup.c b/arch/mips/gt64120/ev64120/setup.c
index dba0961400cc..98b5a96cc039 100644
--- a/arch/mips/gt64120/ev64120/setup.c
+++ b/arch/mips/gt64120/ev64120/setup.c
@@ -69,7 +69,7 @@ unsigned long __init prom_free_prom_memory(void)
69 */ 69 */
70extern void gt64120_time_init(void); 70extern void gt64120_time_init(void);
71 71
72static void __init ev64120_setup(void) 72void __init plat_setup(void)
73{ 73{
74 _machine_restart = galileo_machine_restart; 74 _machine_restart = galileo_machine_restart;
75 _machine_halt = galileo_machine_halt; 75 _machine_halt = galileo_machine_halt;
@@ -79,8 +79,6 @@ static void __init ev64120_setup(void)
79 set_io_port_base(KSEG1); 79 set_io_port_base(KSEG1);
80} 80}
81 81
82early_initcall(ev64120_setup);
83
84const char *get_system_type(void) 82const char *get_system_type(void)
85{ 83{
86 return "Galileo EV64120A"; 84 return "Galileo EV64120A";
diff --git a/arch/mips/gt64120/momenco_ocelot/setup.c b/arch/mips/gt64120/momenco_ocelot/setup.c
index d610f8c17c81..0d07c33112d0 100644
--- a/arch/mips/gt64120/momenco_ocelot/setup.c
+++ b/arch/mips/gt64120/momenco_ocelot/setup.c
@@ -150,7 +150,7 @@ void PMON_v2_setup()
150 gt64120_base = 0xe0000000; 150 gt64120_base = 0xe0000000;
151} 151}
152 152
153static void __init momenco_ocelot_setup(void) 153void __init plat_setup(void)
154{ 154{
155 void (*l3func)(unsigned long)=KSEG1ADDR(&setup_l3cache); 155 void (*l3func)(unsigned long)=KSEG1ADDR(&setup_l3cache);
156 unsigned int tmpword; 156 unsigned int tmpword;
@@ -307,8 +307,6 @@ static void __init momenco_ocelot_setup(void)
307 GT_WRITE(GT_DEV_B3_OFS, 0xfef73); 307 GT_WRITE(GT_DEV_B3_OFS, 0xfef73);
308} 308}
309 309
310early_initcall(momenco_ocelot_setup);
311
312extern int rm7k_tcache_enabled; 310extern int rm7k_tcache_enabled;
313/* 311/*
314 * This runs in KSEG1. See the verbiage in rm7k.c::probe_scache() 312 * This runs in KSEG1. See the verbiage in rm7k.c::probe_scache()
diff --git a/arch/mips/ite-boards/Kconfig b/arch/mips/ite-boards/Kconfig
new file mode 100644
index 000000000000..a6d59ad8f846
--- /dev/null
+++ b/arch/mips/ite-boards/Kconfig
@@ -0,0 +1,8 @@
1config IT8172_REVC
2 bool "Support for older IT8172 (Rev C)"
3 depends on MIPS_ITE8172
4 help
5 Say Y here to support the older, Revision C version of the Integrated
6 Technology Express, Inc. ITE8172 SBC. Vendor page at
7 <http://www.ite.com.tw/ia/brief_it8172bsp.htm>; picture of the
8 board at <http://www.mvista.com/partners/semiconductor/ite.html>.
diff --git a/arch/mips/ite-boards/generic/irq.c b/arch/mips/ite-boards/generic/irq.c
index cb71b9024d6f..e67f96129491 100644
--- a/arch/mips/ite-boards/generic/irq.c
+++ b/arch/mips/ite-boards/generic/irq.c
@@ -138,14 +138,13 @@ static void end_ite_irq(unsigned int irq)
138} 138}
139 139
140static struct hw_interrupt_type it8172_irq_type = { 140static struct hw_interrupt_type it8172_irq_type = {
141 "ITE8172", 141 .typename = "ITE8172",
142 startup_ite_irq, 142 .startup = startup_ite_irq,
143 shutdown_ite_irq, 143 .shutdown = shutdown_ite_irq,
144 enable_it8172_irq, 144 .enable = enable_it8172_irq,
145 disable_it8172_irq, 145 .disable = disable_it8172_irq,
146 mask_and_ack_ite_irq, 146 .ack = mask_and_ack_ite_irq,
147 end_ite_irq, 147 .end = end_ite_irq,
148 NULL
149}; 148};
150 149
151 150
@@ -159,13 +158,13 @@ static void ack_none(unsigned int irq) { }
159#define end_none enable_none 158#define end_none enable_none
160 159
161static struct hw_interrupt_type cp0_irq_type = { 160static struct hw_interrupt_type cp0_irq_type = {
162 "CP0 Count", 161 .typename = "CP0 Count",
163 startup_none, 162 .startup = startup_none,
164 shutdown_none, 163 .shutdown = shutdown_none,
165 enable_none, 164 .enable = enable_none,
166 disable_none, 165 .disable = disable_none,
167 ack_none, 166 .ack = ack_none,
168 end_none 167 .end = end_none
169}; 168};
170 169
171void enable_cpu_timer(void) 170void enable_cpu_timer(void)
@@ -182,7 +181,6 @@ void __init arch_init_irq(void)
182 int i; 181 int i;
183 unsigned long flags; 182 unsigned long flags;
184 183
185 memset(irq_desc, 0, sizeof(irq_desc));
186 set_except_vector(0, it8172_IRQ); 184 set_except_vector(0, it8172_IRQ);
187 185
188 /* mask all interrupts */ 186 /* mask all interrupts */
diff --git a/arch/mips/ite-boards/generic/it8172_setup.c b/arch/mips/ite-boards/generic/it8172_setup.c
index a5f6d84bc181..062429dd7ca0 100644
--- a/arch/mips/ite-boards/generic/it8172_setup.c
+++ b/arch/mips/ite-boards/generic/it8172_setup.c
@@ -105,7 +105,7 @@ void __init it8172_init_ram_resource(unsigned long memsize)
105 it8172_resources.ram.end = memsize; 105 it8172_resources.ram.end = memsize;
106} 106}
107 107
108static void __init it8172_setup(void) 108void __init plat_setup(void)
109{ 109{
110 unsigned short dsr; 110 unsigned short dsr;
111 char *argptr; 111 char *argptr;
@@ -251,8 +251,6 @@ static void __init it8172_setup(void)
251#endif /* CONFIG_IT8172_SCR1 */ 251#endif /* CONFIG_IT8172_SCR1 */
252} 252}
253 253
254early_initcall(it8172_setup);
255
256#ifdef CONFIG_SERIO_I8042 254#ifdef CONFIG_SERIO_I8042
257/* 255/*
258 * According to the ITE Special BIOS Note for waking up the 256 * According to the ITE Special BIOS Note for waking up the
diff --git a/arch/mips/jazz/Kconfig b/arch/mips/jazz/Kconfig
new file mode 100644
index 000000000000..1f372b0d2559
--- /dev/null
+++ b/arch/mips/jazz/Kconfig
@@ -0,0 +1,33 @@
1config ACER_PICA_61
2 bool "Support for Acer PICA 1 chipset (EXPERIMENTAL)"
3 depends on MACH_JAZZ && EXPERIMENTAL
4 select DMA_NONCOHERENT
5 select SYS_SUPPORTS_LITTLE_ENDIAN
6 help
7 This is a machine with a R4400 133/150 MHz CPU. To compile a Linux
8 kernel that runs on these, say Y here. For details about Linux on
9 the MIPS architecture, check out the Linux/MIPS FAQ on the WWW at
10 <http://www.linux-mips.org/>.
11
12config MIPS_MAGNUM_4000
13 bool "Support for MIPS Magnum 4000"
14 depends on MACH_JAZZ
15 select DMA_NONCOHERENT
16 select SYS_SUPPORTS_BIG_ENDIAN if EXPERIMENTAL
17 select SYS_SUPPORTS_LITTLE_ENDIAN
18 help
19 This is a machine with a R4000 100 MHz CPU. To compile a Linux
20 kernel that runs on these, say Y here. For details about Linux on
21 the MIPS architecture, check out the Linux/MIPS FAQ on the WWW at
22 <http://www.linux-mips.org/>.
23
24config OLIVETTI_M700
25 bool "Support for Olivetti M700-10"
26 depends on MACH_JAZZ
27 select DMA_NONCOHERENT
28 select SYS_SUPPORTS_LITTLE_ENDIAN
29 help
30 This is a machine with a R4000 100 MHz CPU. To compile a Linux
31 kernel that runs on these, say Y here. For details about Linux on
32 the MIPS architecture, check out the Linux/MIPS FAQ on the WWW at
33 <http://www.linux-mips.org/>.
diff --git a/arch/mips/jazz/irq.c b/arch/mips/jazz/irq.c
index 0b608fa98d5a..b309b1bcf2e8 100644
--- a/arch/mips/jazz/irq.c
+++ b/arch/mips/jazz/irq.c
@@ -58,14 +58,13 @@ static void end_r4030_irq(unsigned int irq)
58} 58}
59 59
60static struct hw_interrupt_type r4030_irq_type = { 60static struct hw_interrupt_type r4030_irq_type = {
61 "R4030", 61 .typename = "R4030",
62 startup_r4030_irq, 62 .startup = startup_r4030_irq,
63 shutdown_r4030_irq, 63 .shutdown = shutdown_r4030_irq,
64 enable_r4030_irq, 64 .enable = enable_r4030_irq,
65 disable_r4030_irq, 65 .disable = disable_r4030_irq,
66 mask_and_ack_r4030_irq, 66 .ack = mask_and_ack_r4030_irq,
67 end_r4030_irq, 67 .end = end_r4030_irq,
68 NULL
69}; 68};
70 69
71void __init init_r4030_ints(void) 70void __init init_r4030_ints(void)
diff --git a/arch/mips/jazz/setup.c b/arch/mips/jazz/setup.c
index fccb06fe209d..044df9d4ab7c 100644
--- a/arch/mips/jazz/setup.c
+++ b/arch/mips/jazz/setup.c
@@ -50,7 +50,7 @@ static struct resource jazz_io_resources[] = {
50 { "dma2", 0xc0, 0xdf, IORESOURCE_BUSY }, 50 { "dma2", 0xc0, 0xdf, IORESOURCE_BUSY },
51}; 51};
52 52
53static void __init jazz_setup(void) 53void __init plat_setup(void)
54{ 54{
55 int i; 55 int i;
56 56
@@ -97,5 +97,3 @@ static void __init jazz_setup(void)
97 97
98 vdma_init(); 98 vdma_init();
99} 99}
100
101early_initcall(jazz_setup);
diff --git a/arch/mips/jmr3927/rbhma3100/irq.c b/arch/mips/jmr3927/rbhma3100/irq.c
index b9799b86fc79..7cbe14483f13 100644
--- a/arch/mips/jmr3927/rbhma3100/irq.c
+++ b/arch/mips/jmr3927/rbhma3100/irq.c
@@ -412,13 +412,13 @@ void __init arch_init_irq(void)
412} 412}
413 413
414static hw_irq_controller jmr3927_irq_controller = { 414static hw_irq_controller jmr3927_irq_controller = {
415 "jmr3927_irq", 415 .typename = "jmr3927_irq",
416 jmr3927_irq_startup, 416 .startup = jmr3927_irq_startup,
417 jmr3927_irq_shutdown, 417 .shutdown = jmr3927_irq_shutdown,
418 jmr3927_irq_enable, 418 .enable = jmr3927_irq_enable,
419 jmr3927_irq_disable, 419 .disable = jmr3927_irq_disable,
420 jmr3927_irq_ack, 420 .ack = jmr3927_irq_ack,
421 jmr3927_irq_end, 421 .end = jmr3927_irq_end,
422}; 422};
423 423
424void jmr3927_irq_init(u32 irq_base) 424void jmr3927_irq_init(u32 irq_base)
diff --git a/arch/mips/jmr3927/rbhma3100/setup.c b/arch/mips/jmr3927/rbhma3100/setup.c
index 32039bb2f440..3e2fbdc66097 100644
--- a/arch/mips/jmr3927/rbhma3100/setup.c
+++ b/arch/mips/jmr3927/rbhma3100/setup.c
@@ -44,6 +44,11 @@
44#include <linux/ioport.h> 44#include <linux/ioport.h>
45#include <linux/param.h> /* for HZ */ 45#include <linux/param.h> /* for HZ */
46#include <linux/delay.h> 46#include <linux/delay.h>
47#ifdef CONFIG_SERIAL_TXX9
48#include <linux/tty.h>
49#include <linux/serial.h>
50#include <linux/serial_core.h>
51#endif
47 52
48#include <asm/addrspace.h> 53#include <asm/addrspace.h>
49#include <asm/time.h> 54#include <asm/time.h>
@@ -193,7 +198,7 @@ static void jmr3927_board_init(void);
193extern struct resource pci_io_resource; 198extern struct resource pci_io_resource;
194extern struct resource pci_mem_resource; 199extern struct resource pci_mem_resource;
195 200
196static void __init jmr3927_setup(void) 201void __init plat_setup(void)
197{ 202{
198 char *argptr; 203 char *argptr;
199 204
@@ -211,8 +216,8 @@ static void __init jmr3927_setup(void)
211 */ 216 */
212 ioport_resource.start = pci_io_resource.start; 217 ioport_resource.start = pci_io_resource.start;
213 ioport_resource.end = pci_io_resource.end; 218 ioport_resource.end = pci_io_resource.end;
214 iomem_resource.start = pci_mem_resource.start; 219 iomem_resource.start = 0;
215 iomem_resource.end = pci_mem_resource.end; 220 iomem_resource.end = 0xffffffff;
216 221
217 /* Reboot on panic */ 222 /* Reboot on panic */
218 panic_timeout = 180; 223 panic_timeout = 180;
@@ -265,18 +270,35 @@ static void __init jmr3927_setup(void)
265 strcat(argptr, " ip=bootp"); 270 strcat(argptr, " ip=bootp");
266 } 271 }
267 272
268#ifdef CONFIG_TXX927_SERIAL_CONSOLE 273#ifdef CONFIG_SERIAL_TXX9
274 {
275 extern int early_serial_txx9_setup(struct uart_port *port);
276 int i;
277 struct uart_port req;
278 for(i = 0; i < 2; i++) {
279 memset(&req, 0, sizeof(req));
280 req.line = i;
281 req.iotype = UPIO_MEM;
282 req.membase = (char *)TX3927_SIO_REG(i);
283 req.mapbase = TX3927_SIO_REG(i);
284 req.irq = i == 0 ?
285 JMR3927_IRQ_IRC_SIO0 : JMR3927_IRQ_IRC_SIO1;
286 if (i == 0)
287 req.flags |= UPF_BUGGY_UART /*HAVE_CTS_LINE*/;
288 req.uartclk = JMR3927_IMCLK;
289 early_serial_txx9_setup(&req);
290 }
291 }
292#ifdef CONFIG_SERIAL_TXX9_CONSOLE
269 argptr = prom_getcmdline(); 293 argptr = prom_getcmdline();
270 if ((argptr = strstr(argptr, "console=")) == NULL) { 294 if ((argptr = strstr(argptr, "console=")) == NULL) {
271 argptr = prom_getcmdline(); 295 argptr = prom_getcmdline();
272 strcat(argptr, " console=ttyS1,115200"); 296 strcat(argptr, " console=ttyS1,115200");
273 } 297 }
274#endif 298#endif
299#endif
275} 300}
276 301
277early_initcall(jmr3927_setup);
278
279
280static void tx3927_setup(void); 302static void tx3927_setup(void);
281 303
282#ifdef CONFIG_PCI 304#ifdef CONFIG_PCI
@@ -335,7 +357,7 @@ static void __init jmr3927_board_init(void)
335 jmr3927_io_dipsw()); 357 jmr3927_io_dipsw());
336} 358}
337 359
338static void __init tx3927_setup(void) 360void __init plat_setup(void)
339{ 361{
340 int i; 362 int i;
341 363
diff --git a/arch/mips/kernel/Makefile b/arch/mips/kernel/Makefile
index d3303584fbd1..72f2126ad19d 100644
--- a/arch/mips/kernel/Makefile
+++ b/arch/mips/kernel/Makefile
@@ -11,11 +11,7 @@ obj-y += cpu-probe.o branch.o entry.o genex.o irq.o process.o \
11binfmt_irix-objs := irixelf.o irixinv.o irixioctl.o irixsig.o \ 11binfmt_irix-objs := irixelf.o irixinv.o irixioctl.o irixsig.o \
12 irix5sys.o sysirix.o 12 irix5sys.o sysirix.o
13 13
14ifdef CONFIG_MODULES 14obj-$(CONFIG_MODULES) += mips_ksyms.o module.o
15obj-y += mips_ksyms.o module.o
16obj-$(CONFIG_32BIT) += module-elf32.o
17obj-$(CONFIG_64BIT) += module-elf64.o
18endif
19 15
20obj-$(CONFIG_CPU_R3000) += r2300_fpu.o r2300_switch.o 16obj-$(CONFIG_CPU_R3000) += r2300_fpu.o r2300_switch.o
21obj-$(CONFIG_CPU_TX39XX) += r2300_fpu.o r2300_switch.o 17obj-$(CONFIG_CPU_TX39XX) += r2300_fpu.o r2300_switch.o
@@ -38,12 +34,18 @@ obj-$(CONFIG_CPU_R6000) += r6000_fpu.o r4k_switch.o
38 34
39obj-$(CONFIG_SMP) += smp.o 35obj-$(CONFIG_SMP) += smp.o
40 36
37obj-$(CONFIG_MIPS_MT_SMP) += smp_mt.o
38
39obj-$(CONFIG_MIPS_VPE_LOADER) += vpe.o
40obj-$(CONFIG_MIPS_VPE_APSP_API) += rtlx.o
41
41obj-$(CONFIG_NO_ISA) += dma-no-isa.o 42obj-$(CONFIG_NO_ISA) += dma-no-isa.o
42obj-$(CONFIG_I8259) += i8259.o 43obj-$(CONFIG_I8259) += i8259.o
43obj-$(CONFIG_IRQ_CPU) += irq_cpu.o 44obj-$(CONFIG_IRQ_CPU) += irq_cpu.o
44obj-$(CONFIG_IRQ_CPU_RM7K) += irq-rm7000.o 45obj-$(CONFIG_IRQ_CPU_RM7K) += irq-rm7000.o
45obj-$(CONFIG_IRQ_CPU_RM9K) += irq-rm9000.o 46obj-$(CONFIG_IRQ_CPU_RM9K) += irq-rm9000.o
46obj-$(CONFIG_IRQ_MV64340) += irq-mv6434x.o 47obj-$(CONFIG_IRQ_MV64340) += irq-mv6434x.o
48obj-$(CONFIG_MIPS_BOARDS_GEN) += irq-msc01.o
47 49
48obj-$(CONFIG_32BIT) += scall32-o32.o 50obj-$(CONFIG_32BIT) += scall32-o32.o
49obj-$(CONFIG_64BIT) += scall64-64.o 51obj-$(CONFIG_64BIT) += scall64-64.o
@@ -57,8 +59,6 @@ obj-$(CONFIG_PROC_FS) += proc.o
57 59
58obj-$(CONFIG_64BIT) += cpu-bugs64.o 60obj-$(CONFIG_64BIT) += cpu-bugs64.o
59 61
60obj-$(CONFIG_GEN_RTC) += genrtc.o
61
62CFLAGS_cpu-bugs64.o = $(shell if $(CC) $(CFLAGS) -Wa,-mdaddi -c -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-DHAVE_AS_SET_DADDI"; fi) 62CFLAGS_cpu-bugs64.o = $(shell if $(CC) $(CFLAGS) -Wa,-mdaddi -c -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-DHAVE_AS_SET_DADDI"; fi)
63CFLAGS_ioctl32.o += -Ifs/ 63CFLAGS_ioctl32.o += -Ifs/
64 64
diff --git a/arch/mips/kernel/asm-offsets.c b/arch/mips/kernel/asm-offsets.c
index 2c11abb5a406..ca6b03c773be 100644
--- a/arch/mips/kernel/asm-offsets.c
+++ b/arch/mips/kernel/asm-offsets.c
@@ -95,6 +95,7 @@ void output_thread_info_defines(void)
95 offset("#define TI_PRE_COUNT ", struct thread_info, preempt_count); 95 offset("#define TI_PRE_COUNT ", struct thread_info, preempt_count);
96 offset("#define TI_ADDR_LIMIT ", struct thread_info, addr_limit); 96 offset("#define TI_ADDR_LIMIT ", struct thread_info, addr_limit);
97 offset("#define TI_RESTART_BLOCK ", struct thread_info, restart_block); 97 offset("#define TI_RESTART_BLOCK ", struct thread_info, restart_block);
98 offset("#define TI_TP_VALUE ", struct thread_info, tp_value);
98 constant("#define _THREAD_SIZE_ORDER ", THREAD_SIZE_ORDER); 99 constant("#define _THREAD_SIZE_ORDER ", THREAD_SIZE_ORDER);
99 constant("#define _THREAD_SIZE ", THREAD_SIZE); 100 constant("#define _THREAD_SIZE ", THREAD_SIZE);
100 constant("#define _THREAD_MASK ", THREAD_MASK); 101 constant("#define _THREAD_MASK ", THREAD_MASK);
@@ -240,6 +241,7 @@ void output_mm_defines(void)
240 linefeed; 241 linefeed;
241} 242}
242 243
244#ifdef CONFIG_32BIT
243void output_sc_defines(void) 245void output_sc_defines(void)
244{ 246{
245 text("/* Linux sigcontext offsets. */"); 247 text("/* Linux sigcontext offsets. */");
@@ -251,10 +253,29 @@ void output_sc_defines(void)
251 offset("#define SC_STATUS ", struct sigcontext, sc_status); 253 offset("#define SC_STATUS ", struct sigcontext, sc_status);
252 offset("#define SC_FPC_CSR ", struct sigcontext, sc_fpc_csr); 254 offset("#define SC_FPC_CSR ", struct sigcontext, sc_fpc_csr);
253 offset("#define SC_FPC_EIR ", struct sigcontext, sc_fpc_eir); 255 offset("#define SC_FPC_EIR ", struct sigcontext, sc_fpc_eir);
254 offset("#define SC_CAUSE ", struct sigcontext, sc_cause); 256 offset("#define SC_HI1 ", struct sigcontext, sc_hi1);
255 offset("#define SC_BADVADDR ", struct sigcontext, sc_badvaddr); 257 offset("#define SC_LO1 ", struct sigcontext, sc_lo1);
258 offset("#define SC_HI2 ", struct sigcontext, sc_hi2);
259 offset("#define SC_LO2 ", struct sigcontext, sc_lo2);
260 offset("#define SC_HI3 ", struct sigcontext, sc_hi3);
261 offset("#define SC_LO3 ", struct sigcontext, sc_lo3);
256 linefeed; 262 linefeed;
257} 263}
264#endif
265
266#ifdef CONFIG_64BIT
267void output_sc_defines(void)
268{
269 text("/* Linux sigcontext offsets. */");
270 offset("#define SC_REGS ", struct sigcontext, sc_regs);
271 offset("#define SC_FPREGS ", struct sigcontext, sc_fpregs);
272 offset("#define SC_MDHI ", struct sigcontext, sc_hi);
273 offset("#define SC_MDLO ", struct sigcontext, sc_lo);
274 offset("#define SC_PC ", struct sigcontext, sc_pc);
275 offset("#define SC_FPC_CSR ", struct sigcontext, sc_fpc_csr);
276 linefeed;
277}
278#endif
258 279
259#ifdef CONFIG_MIPS32_COMPAT 280#ifdef CONFIG_MIPS32_COMPAT
260void output_sc32_defines(void) 281void output_sc32_defines(void)
diff --git a/arch/mips/kernel/binfmt_elfn32.c b/arch/mips/kernel/binfmt_elfn32.c
index 6b645fbb1ddc..d8e2674a1543 100644
--- a/arch/mips/kernel/binfmt_elfn32.c
+++ b/arch/mips/kernel/binfmt_elfn32.c
@@ -52,7 +52,6 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
52 52
53#include <asm/processor.h> 53#include <asm/processor.h>
54#include <linux/module.h> 54#include <linux/module.h>
55#include <linux/config.h>
56#include <linux/elfcore.h> 55#include <linux/elfcore.h>
57#include <linux/compat.h> 56#include <linux/compat.h>
58 57
@@ -116,4 +115,7 @@ MODULE_AUTHOR("Ralf Baechle (ralf@linux-mips.org)");
116#undef MODULE_DESCRIPTION 115#undef MODULE_DESCRIPTION
117#undef MODULE_AUTHOR 116#undef MODULE_AUTHOR
118 117
118#undef TASK_SIZE
119#define TASK_SIZE TASK_SIZE32
120
119#include "../../../fs/binfmt_elf.c" 121#include "../../../fs/binfmt_elf.c"
diff --git a/arch/mips/kernel/binfmt_elfo32.c b/arch/mips/kernel/binfmt_elfo32.c
index b4075e99c452..cec5f327e360 100644
--- a/arch/mips/kernel/binfmt_elfo32.c
+++ b/arch/mips/kernel/binfmt_elfo32.c
@@ -54,7 +54,6 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
54 54
55#include <asm/processor.h> 55#include <asm/processor.h>
56#include <linux/module.h> 56#include <linux/module.h>
57#include <linux/config.h>
58#include <linux/elfcore.h> 57#include <linux/elfcore.h>
59#include <linux/compat.h> 58#include <linux/compat.h>
60 59
@@ -98,7 +97,7 @@ struct elf_prpsinfo32
98#define init_elf_binfmt init_elf32_binfmt 97#define init_elf_binfmt init_elf32_binfmt
99 98
100#define jiffies_to_timeval jiffies_to_compat_timeval 99#define jiffies_to_timeval jiffies_to_compat_timeval
101static __inline__ void 100static inline void
102jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value) 101jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value)
103{ 102{
104 /* 103 /*
@@ -113,21 +112,26 @@ jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value)
113#undef ELF_CORE_COPY_REGS 112#undef ELF_CORE_COPY_REGS
114#define ELF_CORE_COPY_REGS(_dest,_regs) elf32_core_copy_regs(_dest,_regs); 113#define ELF_CORE_COPY_REGS(_dest,_regs) elf32_core_copy_regs(_dest,_regs);
115 114
116void elf32_core_copy_regs(elf_gregset_t _dest, struct pt_regs *_regs) 115void elf32_core_copy_regs(elf_gregset_t grp, struct pt_regs *regs)
117{ 116{
118 int i; 117 int i;
119 118
120 memset(_dest, 0, sizeof(elf_gregset_t)); 119 for (i = 0; i < EF_R0; i++)
121 120 grp[i] = 0;
122 /* XXXKW the 6 is from EF_REG0 in gdb/gdb/mips-linux-tdep.c, include/asm-mips/reg.h */ 121 grp[EF_R0] = 0;
123 for (i=6; i<38; i++) 122 for (i = 1; i <= 31; i++)
124 _dest[i] = (elf_greg_t) _regs->regs[i-6]; 123 grp[EF_R0 + i] = (elf_greg_t) regs->regs[i];
125 _dest[i++] = (elf_greg_t) _regs->lo; 124 grp[EF_R26] = 0;
126 _dest[i++] = (elf_greg_t) _regs->hi; 125 grp[EF_R27] = 0;
127 _dest[i++] = (elf_greg_t) _regs->cp0_epc; 126 grp[EF_LO] = (elf_greg_t) regs->lo;
128 _dest[i++] = (elf_greg_t) _regs->cp0_badvaddr; 127 grp[EF_HI] = (elf_greg_t) regs->hi;
129 _dest[i++] = (elf_greg_t) _regs->cp0_status; 128 grp[EF_CP0_EPC] = (elf_greg_t) regs->cp0_epc;
130 _dest[i++] = (elf_greg_t) _regs->cp0_cause; 129 grp[EF_CP0_BADVADDR] = (elf_greg_t) regs->cp0_badvaddr;
130 grp[EF_CP0_STATUS] = (elf_greg_t) regs->cp0_status;
131 grp[EF_CP0_CAUSE] = (elf_greg_t) regs->cp0_cause;
132#ifdef EF_UNUSED0
133 grp[EF_UNUSED0] = 0;
134#endif
131} 135}
132 136
133MODULE_DESCRIPTION("Binary format loader for compatibility with o32 Linux/MIPS binaries"); 137MODULE_DESCRIPTION("Binary format loader for compatibility with o32 Linux/MIPS binaries");
@@ -136,4 +140,7 @@ MODULE_AUTHOR("Ralf Baechle (ralf@linux-mips.org)");
136#undef MODULE_DESCRIPTION 140#undef MODULE_DESCRIPTION
137#undef MODULE_AUTHOR 141#undef MODULE_AUTHOR
138 142
143#undef TASK_SIZE
144#define TASK_SIZE TASK_SIZE32
145
139#include "../../../fs/binfmt_elf.c" 146#include "../../../fs/binfmt_elf.c"
diff --git a/arch/mips/kernel/branch.c b/arch/mips/kernel/branch.c
index 01117e977a7f..374de839558d 100644
--- a/arch/mips/kernel/branch.c
+++ b/arch/mips/kernel/branch.c
@@ -12,6 +12,7 @@
12#include <asm/branch.h> 12#include <asm/branch.h>
13#include <asm/cpu.h> 13#include <asm/cpu.h>
14#include <asm/cpu-features.h> 14#include <asm/cpu-features.h>
15#include <asm/fpu.h>
15#include <asm/inst.h> 16#include <asm/inst.h>
16#include <asm/ptrace.h> 17#include <asm/ptrace.h>
17#include <asm/uaccess.h> 18#include <asm/uaccess.h>
@@ -21,7 +22,7 @@
21 */ 22 */
22int __compute_return_epc(struct pt_regs *regs) 23int __compute_return_epc(struct pt_regs *regs)
23{ 24{
24 unsigned int *addr, bit, fcr31; 25 unsigned int *addr, bit, fcr31, dspcontrol;
25 long epc; 26 long epc;
26 union mips_instruction insn; 27 union mips_instruction insn;
27 28
@@ -98,6 +99,18 @@ int __compute_return_epc(struct pt_regs *regs)
98 epc += 8; 99 epc += 8;
99 regs->cp0_epc = epc; 100 regs->cp0_epc = epc;
100 break; 101 break;
102 case bposge32_op:
103 if (!cpu_has_dsp)
104 goto sigill;
105
106 dspcontrol = rddsp(0x01);
107
108 if (dspcontrol >= 32) {
109 epc = epc + 4 + (insn.i_format.simmediate << 2);
110 } else
111 epc += 8;
112 regs->cp0_epc = epc;
113 break;
101 } 114 }
102 break; 115 break;
103 116
@@ -161,10 +174,13 @@ int __compute_return_epc(struct pt_regs *regs)
161 * And now the FPA/cp1 branch instructions. 174 * And now the FPA/cp1 branch instructions.
162 */ 175 */
163 case cop1_op: 176 case cop1_op:
164 if (!cpu_has_fpu) 177 preempt_disable();
165 fcr31 = current->thread.fpu.soft.fcr31; 178 if (is_fpu_owner())
166 else
167 asm volatile("cfc1\t%0,$31" : "=r" (fcr31)); 179 asm volatile("cfc1\t%0,$31" : "=r" (fcr31));
180 else
181 fcr31 = current->thread.fpu.hard.fcr31;
182 preempt_enable();
183
168 bit = (insn.i_format.rt >> 2); 184 bit = (insn.i_format.rt >> 2);
169 bit += (bit != 0); 185 bit += (bit != 0);
170 bit += 23; 186 bit += 23;
@@ -196,4 +212,9 @@ unaligned:
196 printk("%s: unaligned epc - sending SIGBUS.\n", current->comm); 212 printk("%s: unaligned epc - sending SIGBUS.\n", current->comm);
197 force_sig(SIGBUS, current); 213 force_sig(SIGBUS, current);
198 return -EFAULT; 214 return -EFAULT;
215
216sigill:
217 printk("%s: DSP branch but not DSP ASE - sending SIGBUS.\n", current->comm);
218 force_sig(SIGBUS, current);
219 return -EFAULT;
199} 220}
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index 7685f8baf3f0..a263fb7a3971 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -2,9 +2,9 @@
2 * Processor capabilities determination functions. 2 * Processor capabilities determination functions.
3 * 3 *
4 * Copyright (C) xxxx the Anonymous 4 * Copyright (C) xxxx the Anonymous
5 * Copyright (C) 2003 Maciej W. Rozycki 5 * Copyright (C) 2003, 2004 Maciej W. Rozycki
6 * Copyright (C) 1994 - 2003 Ralf Baechle 6 * Copyright (C) 1994 - 2003 Ralf Baechle
7 * Copyright (C) 2001 MIPS Inc. 7 * Copyright (C) 2001, 2004 MIPS Inc.
8 * 8 *
9 * This program is free software; you can redistribute it and/or 9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License 10 * modify it under the terms of the GNU General Public License
@@ -17,7 +17,6 @@
17#include <linux/ptrace.h> 17#include <linux/ptrace.h>
18#include <linux/stddef.h> 18#include <linux/stddef.h>
19 19
20#include <asm/bugs.h>
21#include <asm/cpu.h> 20#include <asm/cpu.h>
22#include <asm/fpu.h> 21#include <asm/fpu.h>
23#include <asm/mipsregs.h> 22#include <asm/mipsregs.h>
@@ -51,36 +50,48 @@ static void r4k_wait(void)
51 ".set\tmips0"); 50 ".set\tmips0");
52} 51}
53 52
54/* 53/* The Au1xxx wait is available only if using 32khz counter or
55 * The Au1xxx wait is available only if we run CONFIG_PM and 54 * external timer source, but specifically not CP0 Counter. */
56 * the timer setup found we had a 32KHz counter available. 55int allow_au1k_wait;
57 * There are still problems with functions that may call au1k_wait
58 * directly, but that will be discovered pretty quickly.
59 */
60extern void (*au1k_wait_ptr)(void);
61 56
62void au1k_wait(void) 57static void au1k_wait(void)
63{ 58{
64#ifdef CONFIG_PM
65 /* using the wait instruction makes CP0 counter unusable */ 59 /* using the wait instruction makes CP0 counter unusable */
66 __asm__(".set\tmips3\n\t" 60 __asm__(".set mips3\n\t"
61 "cache 0x14, 0(%0)\n\t"
62 "cache 0x14, 32(%0)\n\t"
63 "sync\n\t"
64 "nop\n\t"
67 "wait\n\t" 65 "wait\n\t"
68 "nop\n\t" 66 "nop\n\t"
69 "nop\n\t" 67 "nop\n\t"
70 "nop\n\t" 68 "nop\n\t"
71 "nop\n\t" 69 "nop\n\t"
72 ".set\tmips0"); 70 ".set mips0\n\t"
73#else 71 : : "r" (au1k_wait));
74 __asm__("nop\n\t"
75 "nop");
76#endif
77} 72}
78 73
74static int __initdata nowait = 0;
75
76int __init wait_disable(char *s)
77{
78 nowait = 1;
79
80 return 1;
81}
82
83__setup("nowait", wait_disable);
84
79static inline void check_wait(void) 85static inline void check_wait(void)
80{ 86{
81 struct cpuinfo_mips *c = &current_cpu_data; 87 struct cpuinfo_mips *c = &current_cpu_data;
82 88
83 printk("Checking for 'wait' instruction... "); 89 printk("Checking for 'wait' instruction... ");
90 if (nowait) {
91 printk (" disabled.\n");
92 return;
93 }
94
84 switch (c->cputype) { 95 switch (c->cputype) {
85 case CPU_R3081: 96 case CPU_R3081:
86 case CPU_R3081E: 97 case CPU_R3081E:
@@ -109,22 +120,22 @@ static inline void check_wait(void)
109/* case CPU_20KC:*/ 120/* case CPU_20KC:*/
110 case CPU_24K: 121 case CPU_24K:
111 case CPU_25KF: 122 case CPU_25KF:
123 case CPU_34K:
124 case CPU_PR4450:
112 cpu_wait = r4k_wait; 125 cpu_wait = r4k_wait;
113 printk(" available.\n"); 126 printk(" available.\n");
114 break; 127 break;
115#ifdef CONFIG_PM
116 case CPU_AU1000: 128 case CPU_AU1000:
117 case CPU_AU1100: 129 case CPU_AU1100:
118 case CPU_AU1500: 130 case CPU_AU1500:
119 if (au1k_wait_ptr != NULL) { 131 case CPU_AU1550:
120 cpu_wait = au1k_wait_ptr; 132 case CPU_AU1200:
133 if (allow_au1k_wait) {
134 cpu_wait = au1k_wait;
121 printk(" available.\n"); 135 printk(" available.\n");
122 } 136 } else
123 else {
124 printk(" unavailable.\n"); 137 printk(" unavailable.\n");
125 }
126 break; 138 break;
127#endif
128 default: 139 default:
129 printk(" unavailable.\n"); 140 printk(" unavailable.\n");
130 break; 141 break;
@@ -180,7 +191,7 @@ static inline int __cpu_has_fpu(void)
180 return ((cpu_get_fpu_id() & 0xff00) != FPIR_IMP_NONE); 191 return ((cpu_get_fpu_id() & 0xff00) != FPIR_IMP_NONE);
181} 192}
182 193
183#define R4K_OPTS (MIPS_CPU_TLB | MIPS_CPU_4KEX | MIPS_CPU_4KTLB \ 194#define R4K_OPTS (MIPS_CPU_TLB | MIPS_CPU_4KEX | MIPS_CPU_4K_CACHE \
184 | MIPS_CPU_COUNTER) 195 | MIPS_CPU_COUNTER)
185 196
186static inline void cpu_probe_legacy(struct cpuinfo_mips *c) 197static inline void cpu_probe_legacy(struct cpuinfo_mips *c)
@@ -189,7 +200,8 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips *c)
189 case PRID_IMP_R2000: 200 case PRID_IMP_R2000:
190 c->cputype = CPU_R2000; 201 c->cputype = CPU_R2000;
191 c->isa_level = MIPS_CPU_ISA_I; 202 c->isa_level = MIPS_CPU_ISA_I;
192 c->options = MIPS_CPU_TLB | MIPS_CPU_NOFPUEX; 203 c->options = MIPS_CPU_TLB | MIPS_CPU_3K_CACHE |
204 MIPS_CPU_NOFPUEX;
193 if (__cpu_has_fpu()) 205 if (__cpu_has_fpu())
194 c->options |= MIPS_CPU_FPU; 206 c->options |= MIPS_CPU_FPU;
195 c->tlbsize = 64; 207 c->tlbsize = 64;
@@ -203,7 +215,8 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips *c)
203 else 215 else
204 c->cputype = CPU_R3000; 216 c->cputype = CPU_R3000;
205 c->isa_level = MIPS_CPU_ISA_I; 217 c->isa_level = MIPS_CPU_ISA_I;
206 c->options = MIPS_CPU_TLB | MIPS_CPU_NOFPUEX; 218 c->options = MIPS_CPU_TLB | MIPS_CPU_3K_CACHE |
219 MIPS_CPU_NOFPUEX;
207 if (__cpu_has_fpu()) 220 if (__cpu_has_fpu())
208 c->options |= MIPS_CPU_FPU; 221 c->options |= MIPS_CPU_FPU;
209 c->tlbsize = 64; 222 c->tlbsize = 64;
@@ -266,7 +279,8 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips *c)
266 case PRID_IMP_R4600: 279 case PRID_IMP_R4600:
267 c->cputype = CPU_R4600; 280 c->cputype = CPU_R4600;
268 c->isa_level = MIPS_CPU_ISA_III; 281 c->isa_level = MIPS_CPU_ISA_III;
269 c->options = R4K_OPTS | MIPS_CPU_FPU | MIPS_CPU_LLSC; 282 c->options = R4K_OPTS | MIPS_CPU_FPU | MIPS_CPU_32FPR |
283 MIPS_CPU_LLSC;
270 c->tlbsize = 48; 284 c->tlbsize = 48;
271 break; 285 break;
272 #if 0 286 #if 0
@@ -285,7 +299,7 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips *c)
285 #endif 299 #endif
286 case PRID_IMP_TX39: 300 case PRID_IMP_TX39:
287 c->isa_level = MIPS_CPU_ISA_I; 301 c->isa_level = MIPS_CPU_ISA_I;
288 c->options = MIPS_CPU_TLB; 302 c->options = MIPS_CPU_TLB | MIPS_CPU_TX39_CACHE;
289 303
290 if ((c->processor_id & 0xf0) == (PRID_REV_TX3927 & 0xf0)) { 304 if ((c->processor_id & 0xf0) == (PRID_REV_TX3927 & 0xf0)) {
291 c->cputype = CPU_TX3927; 305 c->cputype = CPU_TX3927;
@@ -421,74 +435,147 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips *c)
421 } 435 }
422} 436}
423 437
424static inline void decode_config1(struct cpuinfo_mips *c) 438static inline unsigned int decode_config0(struct cpuinfo_mips *c)
425{ 439{
426 unsigned long config0 = read_c0_config(); 440 unsigned int config0;
427 unsigned long config1; 441 int isa;
442
443 config0 = read_c0_config();
428 444
429 if ((config0 & (1 << 31)) == 0) 445 if (((config0 & MIPS_CONF_MT) >> 7) == 1)
430 return; /* actually wort a panic() */ 446 c->options |= MIPS_CPU_TLB;
447 isa = (config0 & MIPS_CONF_AT) >> 13;
448 switch (isa) {
449 case 0:
450 c->isa_level = MIPS_CPU_ISA_M32;
451 break;
452 case 2:
453 c->isa_level = MIPS_CPU_ISA_M64;
454 break;
455 default:
456 panic("Unsupported ISA type, cp0.config0.at: %d.", isa);
457 }
458
459 return config0 & MIPS_CONF_M;
460}
461
462static inline unsigned int decode_config1(struct cpuinfo_mips *c)
463{
464 unsigned int config1;
431 465
432 /* MIPS32 or MIPS64 compliant CPU. Read Config 1 register. */
433 c->options = MIPS_CPU_TLB | MIPS_CPU_4KEX |
434 MIPS_CPU_4KTLB | MIPS_CPU_COUNTER | MIPS_CPU_DIVEC |
435 MIPS_CPU_LLSC | MIPS_CPU_MCHECK;
436 config1 = read_c0_config1(); 466 config1 = read_c0_config1();
437 if (config1 & (1 << 3)) 467
468 if (config1 & MIPS_CONF1_MD)
469 c->ases |= MIPS_ASE_MDMX;
470 if (config1 & MIPS_CONF1_WR)
438 c->options |= MIPS_CPU_WATCH; 471 c->options |= MIPS_CPU_WATCH;
439 if (config1 & (1 << 2)) 472 if (config1 & MIPS_CONF1_CA)
440 c->options |= MIPS_CPU_MIPS16; 473 c->ases |= MIPS_ASE_MIPS16;
441 if (config1 & (1 << 1)) 474 if (config1 & MIPS_CONF1_EP)
442 c->options |= MIPS_CPU_EJTAG; 475 c->options |= MIPS_CPU_EJTAG;
443 if (config1 & 1) { 476 if (config1 & MIPS_CONF1_FP) {
444 c->options |= MIPS_CPU_FPU; 477 c->options |= MIPS_CPU_FPU;
445 c->options |= MIPS_CPU_32FPR; 478 c->options |= MIPS_CPU_32FPR;
446 } 479 }
480 if (cpu_has_tlb)
481 c->tlbsize = ((config1 & MIPS_CONF1_TLBS) >> 25) + 1;
482
483 return config1 & MIPS_CONF_M;
484}
485
486static inline unsigned int decode_config2(struct cpuinfo_mips *c)
487{
488 unsigned int config2;
489
490 config2 = read_c0_config2();
491
492 if (config2 & MIPS_CONF2_SL)
493 c->scache.flags &= ~MIPS_CACHE_NOT_PRESENT;
494
495 return config2 & MIPS_CONF_M;
496}
497
498static inline unsigned int decode_config3(struct cpuinfo_mips *c)
499{
500 unsigned int config3;
501
502 config3 = read_c0_config3();
503
504 if (config3 & MIPS_CONF3_SM)
505 c->ases |= MIPS_ASE_SMARTMIPS;
506 if (config3 & MIPS_CONF3_DSP)
507 c->ases |= MIPS_ASE_DSP;
508 if (config3 & MIPS_CONF3_VINT)
509 c->options |= MIPS_CPU_VINT;
510 if (config3 & MIPS_CONF3_VEIC)
511 c->options |= MIPS_CPU_VEIC;
512 if (config3 & MIPS_CONF3_MT)
513 c->ases |= MIPS_ASE_MIPSMT;
514
515 return config3 & MIPS_CONF_M;
516}
517
518static inline void decode_configs(struct cpuinfo_mips *c)
519{
520 /* MIPS32 or MIPS64 compliant CPU. */
521 c->options = MIPS_CPU_4KEX | MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER |
522 MIPS_CPU_DIVEC | MIPS_CPU_LLSC | MIPS_CPU_MCHECK;
523
447 c->scache.flags = MIPS_CACHE_NOT_PRESENT; 524 c->scache.flags = MIPS_CACHE_NOT_PRESENT;
448 525
449 c->tlbsize = ((config1 >> 25) & 0x3f) + 1; 526 /* Read Config registers. */
527 if (!decode_config0(c))
528 return; /* actually worth a panic() */
529 if (!decode_config1(c))
530 return;
531 if (!decode_config2(c))
532 return;
533 if (!decode_config3(c))
534 return;
450} 535}
451 536
452static inline void cpu_probe_mips(struct cpuinfo_mips *c) 537static inline void cpu_probe_mips(struct cpuinfo_mips *c)
453{ 538{
454 decode_config1(c); 539 decode_configs(c);
455 switch (c->processor_id & 0xff00) { 540 switch (c->processor_id & 0xff00) {
456 case PRID_IMP_4KC: 541 case PRID_IMP_4KC:
457 c->cputype = CPU_4KC; 542 c->cputype = CPU_4KC;
458 c->isa_level = MIPS_CPU_ISA_M32;
459 break; 543 break;
460 case PRID_IMP_4KEC: 544 case PRID_IMP_4KEC:
461 c->cputype = CPU_4KEC; 545 c->cputype = CPU_4KEC;
462 c->isa_level = MIPS_CPU_ISA_M32; 546 break;
547 case PRID_IMP_4KECR2:
548 c->cputype = CPU_4KEC;
463 break; 549 break;
464 case PRID_IMP_4KSC: 550 case PRID_IMP_4KSC:
551 case PRID_IMP_4KSD:
465 c->cputype = CPU_4KSC; 552 c->cputype = CPU_4KSC;
466 c->isa_level = MIPS_CPU_ISA_M32;
467 break; 553 break;
468 case PRID_IMP_5KC: 554 case PRID_IMP_5KC:
469 c->cputype = CPU_5KC; 555 c->cputype = CPU_5KC;
470 c->isa_level = MIPS_CPU_ISA_M64;
471 break; 556 break;
472 case PRID_IMP_20KC: 557 case PRID_IMP_20KC:
473 c->cputype = CPU_20KC; 558 c->cputype = CPU_20KC;
474 c->isa_level = MIPS_CPU_ISA_M64;
475 break; 559 break;
476 case PRID_IMP_24K: 560 case PRID_IMP_24K:
561 case PRID_IMP_24KE:
477 c->cputype = CPU_24K; 562 c->cputype = CPU_24K;
478 c->isa_level = MIPS_CPU_ISA_M32;
479 break; 563 break;
480 case PRID_IMP_25KF: 564 case PRID_IMP_25KF:
481 c->cputype = CPU_25KF; 565 c->cputype = CPU_25KF;
482 c->isa_level = MIPS_CPU_ISA_M64;
483 /* Probe for L2 cache */ 566 /* Probe for L2 cache */
484 c->scache.flags &= ~MIPS_CACHE_NOT_PRESENT; 567 c->scache.flags &= ~MIPS_CACHE_NOT_PRESENT;
485 break; 568 break;
569 case PRID_IMP_34K:
570 c->cputype = CPU_34K;
571 c->isa_level = MIPS_CPU_ISA_M32;
572 break;
486 } 573 }
487} 574}
488 575
489static inline void cpu_probe_alchemy(struct cpuinfo_mips *c) 576static inline void cpu_probe_alchemy(struct cpuinfo_mips *c)
490{ 577{
491 decode_config1(c); 578 decode_configs(c);
492 switch (c->processor_id & 0xff00) { 579 switch (c->processor_id & 0xff00) {
493 case PRID_IMP_AU1_REV1: 580 case PRID_IMP_AU1_REV1:
494 case PRID_IMP_AU1_REV2: 581 case PRID_IMP_AU1_REV2:
@@ -505,50 +592,70 @@ static inline void cpu_probe_alchemy(struct cpuinfo_mips *c)
505 case 3: 592 case 3:
506 c->cputype = CPU_AU1550; 593 c->cputype = CPU_AU1550;
507 break; 594 break;
595 case 4:
596 c->cputype = CPU_AU1200;
597 break;
508 default: 598 default:
509 panic("Unknown Au Core!"); 599 panic("Unknown Au Core!");
510 break; 600 break;
511 } 601 }
512 c->isa_level = MIPS_CPU_ISA_M32;
513 break; 602 break;
514 } 603 }
515} 604}
516 605
517static inline void cpu_probe_sibyte(struct cpuinfo_mips *c) 606static inline void cpu_probe_sibyte(struct cpuinfo_mips *c)
518{ 607{
519 decode_config1(c); 608 decode_configs(c);
609
610 /*
611 * For historical reasons the SB1 comes with it's own variant of
612 * cache code which eventually will be folded into c-r4k.c. Until
613 * then we pretend it's got it's own cache architecture.
614 */
615 c->options &= ~MIPS_CPU_4K_CACHE;
616 c->options |= MIPS_CPU_SB1_CACHE;
617
520 switch (c->processor_id & 0xff00) { 618 switch (c->processor_id & 0xff00) {
521 case PRID_IMP_SB1: 619 case PRID_IMP_SB1:
522 c->cputype = CPU_SB1; 620 c->cputype = CPU_SB1;
523 c->isa_level = MIPS_CPU_ISA_M64; 621#ifdef CONFIG_SB1_PASS_1_WORKAROUNDS
524 c->options = MIPS_CPU_TLB | MIPS_CPU_4KEX |
525 MIPS_CPU_COUNTER | MIPS_CPU_DIVEC |
526 MIPS_CPU_MCHECK | MIPS_CPU_EJTAG |
527 MIPS_CPU_WATCH | MIPS_CPU_LLSC;
528#ifndef CONFIG_SB1_PASS_1_WORKAROUNDS
529 /* FPU in pass1 is known to have issues. */ 622 /* FPU in pass1 is known to have issues. */
530 c->options |= MIPS_CPU_FPU | MIPS_CPU_32FPR; 623 c->options &= ~(MIPS_CPU_FPU | MIPS_CPU_32FPR);
531#endif 624#endif
532 break; 625 break;
626 case PRID_IMP_SB1A:
627 c->cputype = CPU_SB1A;
628 break;
533 } 629 }
534} 630}
535 631
536static inline void cpu_probe_sandcraft(struct cpuinfo_mips *c) 632static inline void cpu_probe_sandcraft(struct cpuinfo_mips *c)
537{ 633{
538 decode_config1(c); 634 decode_configs(c);
539 switch (c->processor_id & 0xff00) { 635 switch (c->processor_id & 0xff00) {
540 case PRID_IMP_SR71000: 636 case PRID_IMP_SR71000:
541 c->cputype = CPU_SR71000; 637 c->cputype = CPU_SR71000;
542 c->isa_level = MIPS_CPU_ISA_M64;
543 c->options = MIPS_CPU_TLB | MIPS_CPU_4KEX |
544 MIPS_CPU_4KTLB | MIPS_CPU_FPU |
545 MIPS_CPU_COUNTER | MIPS_CPU_MCHECK;
546 c->scache.ways = 8; 638 c->scache.ways = 8;
547 c->tlbsize = 64; 639 c->tlbsize = 64;
548 break; 640 break;
549 } 641 }
550} 642}
551 643
644static inline void cpu_probe_philips(struct cpuinfo_mips *c)
645{
646 decode_configs(c);
647 switch (c->processor_id & 0xff00) {
648 case PRID_IMP_PR4450:
649 c->cputype = CPU_PR4450;
650 c->isa_level = MIPS_CPU_ISA_M32;
651 break;
652 default:
653 panic("Unknown Philips Core!"); /* REVISIT: die? */
654 break;
655 }
656}
657
658
552__init void cpu_probe(void) 659__init void cpu_probe(void)
553{ 660{
554 struct cpuinfo_mips *c = &current_cpu_data; 661 struct cpuinfo_mips *c = &current_cpu_data;
@@ -571,15 +678,24 @@ __init void cpu_probe(void)
571 case PRID_COMP_SIBYTE: 678 case PRID_COMP_SIBYTE:
572 cpu_probe_sibyte(c); 679 cpu_probe_sibyte(c);
573 break; 680 break;
574
575 case PRID_COMP_SANDCRAFT: 681 case PRID_COMP_SANDCRAFT:
576 cpu_probe_sandcraft(c); 682 cpu_probe_sandcraft(c);
577 break; 683 break;
684 case PRID_COMP_PHILIPS:
685 cpu_probe_philips(c);
686 break;
578 default: 687 default:
579 c->cputype = CPU_UNKNOWN; 688 c->cputype = CPU_UNKNOWN;
580 } 689 }
581 if (c->options & MIPS_CPU_FPU) 690 if (c->options & MIPS_CPU_FPU) {
582 c->fpu_id = cpu_get_fpu_id(); 691 c->fpu_id = cpu_get_fpu_id();
692
693 if (c->isa_level == MIPS_CPU_ISA_M32 ||
694 c->isa_level == MIPS_CPU_ISA_M64) {
695 if (c->fpu_id & MIPS_FPIR_3D)
696 c->ases |= MIPS_ASE_MIPS3D;
697 }
698 }
583} 699}
584 700
585__init void cpu_report(void) 701__init void cpu_report(void)
diff --git a/arch/mips/kernel/dma-no-isa.c b/arch/mips/kernel/dma-no-isa.c
new file mode 100644
index 000000000000..6df8b07741e3
--- /dev/null
+++ b/arch/mips/kernel/dma-no-isa.c
@@ -0,0 +1,28 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 2004 by Ralf Baechle
7 *
8 * Dummy ISA DMA functions for systems that don't have ISA but share drivers
9 * with ISA such as legacy free PCI.
10 */
11#include <linux/errno.h>
12#include <linux/module.h>
13#include <linux/spinlock.h>
14
15DEFINE_SPINLOCK(dma_spin_lock);
16
17int request_dma(unsigned int dmanr, const char * device_id)
18{
19 return -EINVAL;
20}
21
22void free_dma(unsigned int dmanr)
23{
24}
25
26EXPORT_SYMBOL(dma_spin_lock);
27EXPORT_SYMBOL(request_dma);
28EXPORT_SYMBOL(free_dma);
diff --git a/arch/mips/kernel/entry.S b/arch/mips/kernel/entry.S
index 5eb429137e06..83c87fe4ee4f 100644
--- a/arch/mips/kernel/entry.S
+++ b/arch/mips/kernel/entry.S
@@ -19,11 +19,11 @@
19#include <asm/war.h> 19#include <asm/war.h>
20 20
21#ifdef CONFIG_PREEMPT 21#ifdef CONFIG_PREEMPT
22 .macro preempt_stop reg=t0 22 .macro preempt_stop
23 .endm 23 .endm
24#else 24#else
25 .macro preempt_stop reg=t0 25 .macro preempt_stop
26 local_irq_disable \reg 26 local_irq_disable
27 .endm 27 .endm
28#define resume_kernel restore_all 28#define resume_kernel restore_all
29#endif 29#endif
@@ -37,17 +37,18 @@ FEXPORT(ret_from_irq)
37 andi t0, t0, KU_USER 37 andi t0, t0, KU_USER
38 beqz t0, resume_kernel 38 beqz t0, resume_kernel
39 39
40FEXPORT(resume_userspace) 40resume_userspace:
41 local_irq_disable t0 # make sure we dont miss an 41 local_irq_disable # make sure we dont miss an
42 # interrupt setting need_resched 42 # interrupt setting need_resched
43 # between sampling and return 43 # between sampling and return
44 LONG_L a2, TI_FLAGS($28) # current->work 44 LONG_L a2, TI_FLAGS($28) # current->work
45 andi a2, _TIF_WORK_MASK # (ignoring syscall_trace) 45 andi t0, a2, _TIF_WORK_MASK # (ignoring syscall_trace)
46 bnez a2, work_pending 46 bnez t0, work_pending
47 j restore_all 47 j restore_all
48 48
49#ifdef CONFIG_PREEMPT 49#ifdef CONFIG_PREEMPT
50ENTRY(resume_kernel) 50resume_kernel:
51 local_irq_disable
51 lw t0, TI_PRE_COUNT($28) 52 lw t0, TI_PRE_COUNT($28)
52 bnez t0, restore_all 53 bnez t0, restore_all
53need_resched: 54need_resched:
@@ -57,12 +58,7 @@ need_resched:
57 LONG_L t0, PT_STATUS(sp) # Interrupts off? 58 LONG_L t0, PT_STATUS(sp) # Interrupts off?
58 andi t0, 1 59 andi t0, 1
59 beqz t0, restore_all 60 beqz t0, restore_all
60 li t0, PREEMPT_ACTIVE 61 jal preempt_schedule_irq
61 sw t0, TI_PRE_COUNT($28)
62 local_irq_enable t0
63 jal schedule
64 sw zero, TI_PRE_COUNT($28)
65 local_irq_disable t0
66 b need_resched 62 b need_resched
67#endif 63#endif
68 64
@@ -88,13 +84,13 @@ FEXPORT(restore_partial) # restore partial frame
88 RESTORE_SP_AND_RET 84 RESTORE_SP_AND_RET
89 .set at 85 .set at
90 86
91FEXPORT(work_pending) 87work_pending:
92 andi t0, a2, _TIF_NEED_RESCHED 88 andi t0, a2, _TIF_NEED_RESCHED # a2 is preloaded with TI_FLAGS
93 beqz t0, work_notifysig 89 beqz t0, work_notifysig
94work_resched: 90work_resched:
95 jal schedule 91 jal schedule
96 92
97 local_irq_disable t0 # make sure need_resched and 93 local_irq_disable # make sure need_resched and
98 # signals dont change between 94 # signals dont change between
99 # sampling and return 95 # sampling and return
100 LONG_L a2, TI_FLAGS($28) 96 LONG_L a2, TI_FLAGS($28)
@@ -109,15 +105,14 @@ work_notifysig: # deal with pending signals and
109 move a0, sp 105 move a0, sp
110 li a1, 0 106 li a1, 0
111 jal do_notify_resume # a2 already loaded 107 jal do_notify_resume # a2 already loaded
112 j restore_all 108 j resume_userspace
113 109
114FEXPORT(syscall_exit_work_partial) 110FEXPORT(syscall_exit_work_partial)
115 SAVE_STATIC 111 SAVE_STATIC
116FEXPORT(syscall_exit_work) 112syscall_exit_work:
117 LONG_L t0, TI_FLAGS($28) 113 li t0, _TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT
118 li t1, _TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT 114 and t0, a2 # a2 is preloaded with TI_FLAGS
119 and t0, t1 115 beqz t0, work_pending # trace bit set?
120 beqz t0, work_pending # trace bit is set
121 local_irq_enable # could let do_syscall_trace() 116 local_irq_enable # could let do_syscall_trace()
122 # call schedule() instead 117 # call schedule() instead
123 move a0, sp 118 move a0, sp
@@ -128,28 +123,25 @@ FEXPORT(syscall_exit_work)
128/* 123/*
129 * Common spurious interrupt handler. 124 * Common spurious interrupt handler.
130 */ 125 */
131 .text
132 .align 5
133LEAF(spurious_interrupt) 126LEAF(spurious_interrupt)
134 /* 127 /*
135 * Someone tried to fool us by sending an interrupt but we 128 * Someone tried to fool us by sending an interrupt but we
136 * couldn't find a cause for it. 129 * couldn't find a cause for it.
137 */ 130 */
131 PTR_LA t1, irq_err_count
138#ifdef CONFIG_SMP 132#ifdef CONFIG_SMP
139 lui t1, %hi(irq_err_count) 1331: ll t0, (t1)
1401: ll t0, %lo(irq_err_count)(t1)
141 addiu t0, 1 134 addiu t0, 1
142 sc t0, %lo(irq_err_count)(t1) 135 sc t0, (t1)
143#if R10000_LLSC_WAR 136#if R10000_LLSC_WAR
144 beqzl t0, 1b 137 beqzl t0, 1b
145#else 138#else
146 beqz t0, 1b 139 beqz t0, 1b
147#endif 140#endif
148#else 141#else
149 lui t1, %hi(irq_err_count) 142 lw t0, (t1)
150 lw t0, %lo(irq_err_count)(t1)
151 addiu t0, 1 143 addiu t0, 1
152 sw t0, %lo(irq_err_count)(t1) 144 sw t0, (t1)
153#endif 145#endif
154 j ret_from_irq 146 j ret_from_irq
155 END(spurious_interrupt) 147 END(spurious_interrupt)
diff --git a/arch/mips/kernel/gdb-low.S b/arch/mips/kernel/gdb-low.S
index 512bedbfa7b9..83b8986f9401 100644
--- a/arch/mips/kernel/gdb-low.S
+++ b/arch/mips/kernel/gdb-low.S
@@ -52,16 +52,15 @@
52 /* 52 /*
53 * Called from user mode, go somewhere else. 53 * Called from user mode, go somewhere else.
54 */ 54 */
55 lui k1, %hi(saved_vectors)
56 mfc0 k0, CP0_CAUSE 55 mfc0 k0, CP0_CAUSE
57 andi k0, k0, 0x7c 56 andi k0, k0, 0x7c
58 add k1, k1, k0 57 add k1, k1, k0
59 lw k0, %lo(saved_vectors)(k1) 58 PTR_L k0, saved_vectors(k1)
60 jr k0 59 jr k0
61 nop 60 nop
621: 611:
63 move k0, sp 62 move k0, sp
64 subu sp, k1, GDB_FR_SIZE*2 # see comment above 63 PTR_SUBU sp, k1, GDB_FR_SIZE*2 # see comment above
65 LONG_S k0, GDB_FR_REG29(sp) 64 LONG_S k0, GDB_FR_REG29(sp)
66 LONG_S $2, GDB_FR_REG2(sp) 65 LONG_S $2, GDB_FR_REG2(sp)
67 66
diff --git a/arch/mips/kernel/gdb-stub.c b/arch/mips/kernel/gdb-stub.c
index d3fd1ab14274..96d18c43dca0 100644
--- a/arch/mips/kernel/gdb-stub.c
+++ b/arch/mips/kernel/gdb-stub.c
@@ -176,8 +176,10 @@ int kgdb_enabled;
176/* 176/*
177 * spin locks for smp case 177 * spin locks for smp case
178 */ 178 */
179static spinlock_t kgdb_lock = SPIN_LOCK_UNLOCKED; 179static DEFINE_SPINLOCK(kgdb_lock);
180static spinlock_t kgdb_cpulock[NR_CPUS] = { [0 ... NR_CPUS-1] = SPIN_LOCK_UNLOCKED}; 180static raw_spinlock_t kgdb_cpulock[NR_CPUS] = {
181 [0 ... NR_CPUS-1] = __RAW_SPIN_LOCK_UNLOCKED;
182};
181 183
182/* 184/*
183 * BUFMAX defines the maximum number of characters in inbound/outbound buffers 185 * BUFMAX defines the maximum number of characters in inbound/outbound buffers
@@ -637,29 +639,32 @@ static struct gdb_bp_save async_bp;
637 * and only one can be active at a time. 639 * and only one can be active at a time.
638 */ 640 */
639extern spinlock_t smp_call_lock; 641extern spinlock_t smp_call_lock;
642
640void set_async_breakpoint(unsigned long *epc) 643void set_async_breakpoint(unsigned long *epc)
641{ 644{
642 /* skip breaking into userland */ 645 /* skip breaking into userland */
643 if ((*epc & 0x80000000) == 0) 646 if ((*epc & 0x80000000) == 0)
644 return; 647 return;
645 648
649#ifdef CONFIG_SMP
646 /* avoid deadlock if someone is make IPC */ 650 /* avoid deadlock if someone is make IPC */
647 if (spin_is_locked(&smp_call_lock)) 651 if (spin_is_locked(&smp_call_lock))
648 return; 652 return;
653#endif
649 654
650 async_bp.addr = *epc; 655 async_bp.addr = *epc;
651 *epc = (unsigned long)async_breakpoint; 656 *epc = (unsigned long)async_breakpoint;
652} 657}
653 658
654void kgdb_wait(void *arg) 659static void kgdb_wait(void *arg)
655{ 660{
656 unsigned flags; 661 unsigned flags;
657 int cpu = smp_processor_id(); 662 int cpu = smp_processor_id();
658 663
659 local_irq_save(flags); 664 local_irq_save(flags);
660 665
661 spin_lock(&kgdb_cpulock[cpu]); 666 __raw_spin_lock(&kgdb_cpulock[cpu]);
662 spin_unlock(&kgdb_cpulock[cpu]); 667 __raw_spin_unlock(&kgdb_cpulock[cpu]);
663 668
664 local_irq_restore(flags); 669 local_irq_restore(flags);
665} 670}
@@ -707,7 +712,7 @@ void handle_exception (struct gdb_regs *regs)
707 * acquire the CPU spinlocks 712 * acquire the CPU spinlocks
708 */ 713 */
709 for (i = num_online_cpus()-1; i >= 0; i--) 714 for (i = num_online_cpus()-1; i >= 0; i--)
710 if (spin_trylock(&kgdb_cpulock[i]) == 0) 715 if (__raw_spin_trylock(&kgdb_cpulock[i]) == 0)
711 panic("kgdb: couldn't get cpulock %d\n", i); 716 panic("kgdb: couldn't get cpulock %d\n", i);
712 717
713 /* 718 /*
@@ -982,7 +987,7 @@ finish_kgdb:
982exit_kgdb_exception: 987exit_kgdb_exception:
983 /* release locks so other CPUs can go */ 988 /* release locks so other CPUs can go */
984 for (i = num_online_cpus()-1; i >= 0; i--) 989 for (i = num_online_cpus()-1; i >= 0; i--)
985 spin_unlock(&kgdb_cpulock[i]); 990 __raw_spin_unlock(&kgdb_cpulock[i]);
986 spin_unlock(&kgdb_lock); 991 spin_unlock(&kgdb_lock);
987 992
988 __flush_cache_all(); 993 __flush_cache_all();
@@ -1036,12 +1041,12 @@ void adel(void)
1036 * malloc is needed by gdb client in "call func()", even a private one 1041 * malloc is needed by gdb client in "call func()", even a private one
1037 * will make gdb happy 1042 * will make gdb happy
1038 */ 1043 */
1039static void *malloc(size_t size) 1044static void * __attribute_used__ malloc(size_t size)
1040{ 1045{
1041 return kmalloc(size, GFP_ATOMIC); 1046 return kmalloc(size, GFP_ATOMIC);
1042} 1047}
1043 1048
1044static void free(void *where) 1049static void __attribute_used__ free (void *where)
1045{ 1050{
1046 kfree(where); 1051 kfree(where);
1047} 1052}
diff --git a/arch/mips/kernel/genex.S b/arch/mips/kernel/genex.S
index e7f6c1b90806..aa18a8b7b380 100644
--- a/arch/mips/kernel/genex.S
+++ b/arch/mips/kernel/genex.S
@@ -82,7 +82,7 @@ NESTED(except_vec3_r4000, 0, sp)
82 li k0, 14<<2 82 li k0, 14<<2
83 beq k1, k0, handle_vcei 83 beq k1, k0, handle_vcei
84#ifdef CONFIG_64BIT 84#ifdef CONFIG_64BIT
85 dsll k1, k1, 1 85 dsll k1, k1, 1
86#endif 86#endif
87 .set pop 87 .set pop
88 PTR_L k0, exception_handlers(k1) 88 PTR_L k0, exception_handlers(k1)
@@ -90,17 +90,17 @@ NESTED(except_vec3_r4000, 0, sp)
90 90
91 /* 91 /*
92 * Big shit, we now may have two dirty primary cache lines for the same 92 * Big shit, we now may have two dirty primary cache lines for the same
93 * physical address. We can savely invalidate the line pointed to by 93 * physical address. We can safely invalidate the line pointed to by
94 * c0_badvaddr because after return from this exception handler the 94 * c0_badvaddr because after return from this exception handler the
95 * load / store will be re-executed. 95 * load / store will be re-executed.
96 */ 96 */
97handle_vced: 97handle_vced:
98 DMFC0 k0, CP0_BADVADDR 98 MFC0 k0, CP0_BADVADDR
99 li k1, -4 # Is this ... 99 li k1, -4 # Is this ...
100 and k0, k1 # ... really needed? 100 and k0, k1 # ... really needed?
101 mtc0 zero, CP0_TAGLO 101 mtc0 zero, CP0_TAGLO
102 cache Index_Store_Tag_D,(k0) 102 cache Index_Store_Tag_D, (k0)
103 cache Hit_Writeback_Inv_SD,(k0) 103 cache Hit_Writeback_Inv_SD, (k0)
104#ifdef CONFIG_PROC_FS 104#ifdef CONFIG_PROC_FS
105 PTR_LA k0, vced_count 105 PTR_LA k0, vced_count
106 lw k1, (k0) 106 lw k1, (k0)
@@ -148,6 +148,38 @@ NESTED(except_vec_ejtag_debug, 0, sp)
148 __FINIT 148 __FINIT
149 149
150/* 150/*
151 * Vectored interrupt handler.
152 * This prototype is copied to ebase + n*IntCtl.VS and patched
153 * to invoke the handler
154 */
155NESTED(except_vec_vi, 0, sp)
156 SAVE_SOME
157 SAVE_AT
158 .set push
159 .set noreorder
160EXPORT(except_vec_vi_lui)
161 lui v0, 0 /* Patched */
162 j except_vec_vi_handler
163EXPORT(except_vec_vi_ori)
164 ori v0, 0 /* Patched */
165 .set pop
166 END(except_vec_vi)
167EXPORT(except_vec_vi_end)
168
169/*
170 * Common Vectored Interrupt code
171 * Complete the register saves and invoke the handler which is passed in $v0
172 */
173NESTED(except_vec_vi_handler, 0, sp)
174 SAVE_TEMP
175 SAVE_STATIC
176 CLI
177 move a0, sp
178 jalr v0
179 j ret_from_irq
180 END(except_vec_vi_handler)
181
182/*
151 * EJTAG debug exception handler. 183 * EJTAG debug exception handler.
152 */ 184 */
153NESTED(ejtag_debug_handler, PT_SIZE, sp) 185NESTED(ejtag_debug_handler, PT_SIZE, sp)
@@ -291,6 +323,8 @@ NESTED(nmi_handler, PT_SIZE, sp)
291 BUILD_HANDLER mdmx mdmx sti silent /* #22 */ 323 BUILD_HANDLER mdmx mdmx sti silent /* #22 */
292 BUILD_HANDLER watch watch sti verbose /* #23 */ 324 BUILD_HANDLER watch watch sti verbose /* #23 */
293 BUILD_HANDLER mcheck mcheck cli verbose /* #24 */ 325 BUILD_HANDLER mcheck mcheck cli verbose /* #24 */
326 BUILD_HANDLER mt mt sti verbose /* #25 */
327 BUILD_HANDLER dsp dsp sti silent /* #26 */
294 BUILD_HANDLER reserved reserved sti verbose /* others */ 328 BUILD_HANDLER reserved reserved sti verbose /* others */
295 329
296#ifdef CONFIG_64BIT 330#ifdef CONFIG_64BIT
diff --git a/arch/mips/kernel/genrtc.c b/arch/mips/kernel/genrtc.c
deleted file mode 100644
index 71416e7bbbaa..000000000000
--- a/arch/mips/kernel/genrtc.c
+++ /dev/null
@@ -1,64 +0,0 @@
1/*
2 * A glue layer that provides RTC read/write to drivers/char/genrtc.c driver
3 * based on MIPS internal RTC routines. It does take care locking
4 * issues so that we are SMP/Preemption safe.
5 *
6 * Copyright (C) 2004 MontaVista Software Inc.
7 * Author: Jun Sun, jsun@mvista.com or jsun@junsun.net
8 *
9 * Please read the COPYING file for all license details.
10 */
11
12#include <linux/spinlock.h>
13
14#include <asm/rtc.h>
15#include <asm/time.h>
16
17static DEFINE_SPINLOCK(mips_rtc_lock);
18
19unsigned int get_rtc_time(struct rtc_time *time)
20{
21 unsigned long nowtime;
22
23 spin_lock(&mips_rtc_lock);
24 nowtime = rtc_get_time();
25 to_tm(nowtime, time);
26 time->tm_year -= 1900;
27 spin_unlock(&mips_rtc_lock);
28
29 return RTC_24H;
30}
31
32int set_rtc_time(struct rtc_time *time)
33{
34 unsigned long nowtime;
35 int ret;
36
37 spin_lock(&mips_rtc_lock);
38 nowtime = mktime(time->tm_year+1900, time->tm_mon+1,
39 time->tm_mday, time->tm_hour, time->tm_min,
40 time->tm_sec);
41 ret = rtc_set_time(nowtime);
42 spin_unlock(&mips_rtc_lock);
43
44 return ret;
45}
46
47unsigned int get_rtc_ss(void)
48{
49 struct rtc_time h;
50
51 get_rtc_time(&h);
52 return h.tm_sec;
53}
54
55int get_rtc_pll(struct rtc_pll_info *pll)
56{
57 return -EINVAL;
58}
59
60int set_rtc_pll(struct rtc_pll_info *pll)
61{
62 return -EINVAL;
63}
64
diff --git a/arch/mips/kernel/head.S b/arch/mips/kernel/head.S
index 2a1b45d66f04..2e9122a4213a 100644
--- a/arch/mips/kernel/head.S
+++ b/arch/mips/kernel/head.S
@@ -22,11 +22,8 @@
22#include <asm/page.h> 22#include <asm/page.h>
23#include <asm/mipsregs.h> 23#include <asm/mipsregs.h>
24#include <asm/stackframe.h> 24#include <asm/stackframe.h>
25#ifdef CONFIG_SGI_IP27 25
26#include <asm/sn/addrs.h> 26#include <kernel-entry-init.h>
27#include <asm/sn/sn0/hubni.h>
28#include <asm/sn/klkernvars.h>
29#endif
30 27
31 .macro ARC64_TWIDDLE_PC 28 .macro ARC64_TWIDDLE_PC
32#if defined(CONFIG_ARC64) || defined(CONFIG_MAPPED_KERNEL) 29#if defined(CONFIG_ARC64) || defined(CONFIG_MAPPED_KERNEL)
@@ -38,18 +35,6 @@
38#endif 35#endif
39 .endm 36 .endm
40 37
41#ifdef CONFIG_SGI_IP27
42 /*
43 * outputs the local nasid into res. IP27 stuff.
44 */
45 .macro GET_NASID_ASM res
46 dli \res, LOCAL_HUB_ADDR(NI_STATUS_REV_ID)
47 ld \res, (\res)
48 and \res, NSRI_NODEID_MASK
49 dsrl \res, NSRI_NODEID_SHFT
50 .endm
51#endif /* CONFIG_SGI_IP27 */
52
53 /* 38 /*
54 * inputs are the text nasid in t1, data nasid in t2. 39 * inputs are the text nasid in t1, data nasid in t2.
55 */ 40 */
@@ -131,16 +116,21 @@
131EXPORT(stext) # used for profiling 116EXPORT(stext) # used for profiling
132EXPORT(_stext) 117EXPORT(_stext)
133 118
119#if defined(CONFIG_QEMU) || defined(CONFIG_MIPS_SIM)
120 /*
121 * Give us a fighting chance of running if execution beings at the
122 * kernel load address. This is needed because this platform does
123 * not have a ELF loader yet.
124 */
125 j kernel_entry
126#endif
134 __INIT 127 __INIT
135 128
136NESTED(kernel_entry, 16, sp) # kernel entry point 129NESTED(kernel_entry, 16, sp) # kernel entry point
137 setup_c0_status_pri
138 130
139#ifdef CONFIG_SGI_IP27 131 kernel_entry_setup # cpu specific setup
140 GET_NASID_ASM t1 132
141 move t2, t1 # text and data are here 133 setup_c0_status_pri
142 MAPPED_KERNEL_SETUP_TLB
143#endif /* IP27 */
144 134
145 ARC64_TWIDDLE_PC 135 ARC64_TWIDDLE_PC
146 136
@@ -157,6 +147,7 @@ NESTED(kernel_entry, 16, sp) # kernel entry point
157 LONG_S a2, fw_arg2 147 LONG_S a2, fw_arg2
158 LONG_S a3, fw_arg3 148 LONG_S a3, fw_arg3
159 149
150 MTC0 zero, CP0_CONTEXT # clear context register
160 PTR_LA $28, init_thread_union 151 PTR_LA $28, init_thread_union
161 PTR_ADDIU sp, $28, _THREAD_SIZE - 32 152 PTR_ADDIU sp, $28, _THREAD_SIZE - 32
162 set_saved_sp sp, t0, t1 153 set_saved_sp sp, t0, t1
@@ -165,6 +156,10 @@ NESTED(kernel_entry, 16, sp) # kernel entry point
165 j start_kernel 156 j start_kernel
166 END(kernel_entry) 157 END(kernel_entry)
167 158
159#ifdef CONFIG_QEMU
160 __INIT
161#endif
162
168#ifdef CONFIG_SMP 163#ifdef CONFIG_SMP
169/* 164/*
170 * SMP slave cpus entry point. Board specific code for bootstrap calls this 165 * SMP slave cpus entry point. Board specific code for bootstrap calls this
@@ -172,20 +167,7 @@ NESTED(kernel_entry, 16, sp) # kernel entry point
172 */ 167 */
173NESTED(smp_bootstrap, 16, sp) 168NESTED(smp_bootstrap, 16, sp)
174 setup_c0_status_sec 169 setup_c0_status_sec
175 170 smp_slave_setup
176#ifdef CONFIG_SGI_IP27
177 GET_NASID_ASM t1
178 dli t0, KLDIR_OFFSET + (KLI_KERN_VARS * KLDIR_ENT_SIZE) + \
179 KLDIR_OFF_POINTER + CAC_BASE
180 dsll t1, NASID_SHFT
181 or t0, t0, t1
182 ld t0, 0(t0) # t0 points to kern_vars struct
183 lh t1, KV_RO_NASID_OFFSET(t0)
184 lh t2, KV_RW_NASID_OFFSET(t0)
185 MAPPED_KERNEL_SETUP_TLB
186 ARC64_TWIDDLE_PC
187#endif /* CONFIG_SGI_IP27 */
188
189 j start_secondary 171 j start_secondary
190 END(smp_bootstrap) 172 END(smp_bootstrap)
191#endif /* CONFIG_SMP */ 173#endif /* CONFIG_SMP */
@@ -200,19 +182,13 @@ NESTED(smp_bootstrap, 16, sp)
200 .comm fw_arg2, SZREG, SZREG 182 .comm fw_arg2, SZREG, SZREG
201 .comm fw_arg3, SZREG, SZREG 183 .comm fw_arg3, SZREG, SZREG
202 184
203 .macro page name, order=0 185 .macro page name, order
204 .globl \name 186 .comm \name, (_PAGE_SIZE << \order), (_PAGE_SIZE << \order)
205\name: .size \name, (_PAGE_SIZE << \order)
206 .org . + (_PAGE_SIZE << \order)
207 .type \name, @object
208 .endm 187 .endm
209 188
210 .data
211 .align PAGE_SHIFT
212
213 /* 189 /*
214 * ... but on 64-bit we've got three-level pagetables with a 190 * On 64-bit we've got three-level pagetables with a slightly
215 * slightly different layout ... 191 * different layout ...
216 */ 192 */
217 page swapper_pg_dir, _PGD_ORDER 193 page swapper_pg_dir, _PGD_ORDER
218#ifdef CONFIG_64BIT 194#ifdef CONFIG_64BIT
diff --git a/arch/mips/kernel/i8259.c b/arch/mips/kernel/i8259.c
index 447759201d1d..b974ac9057f6 100644
--- a/arch/mips/kernel/i8259.c
+++ b/arch/mips/kernel/i8259.c
@@ -31,7 +31,7 @@ void disable_8259A_irq(unsigned int irq);
31 * moves to arch independent land 31 * moves to arch independent land
32 */ 32 */
33 33
34spinlock_t DEFINE_SPINLOCK(i8259A_lock); 34DEFINE_SPINLOCK(i8259A_lock);
35 35
36static void end_8259A_irq (unsigned int irq) 36static void end_8259A_irq (unsigned int irq)
37{ 37{
@@ -52,14 +52,13 @@ static unsigned int startup_8259A_irq(unsigned int irq)
52} 52}
53 53
54static struct hw_interrupt_type i8259A_irq_type = { 54static struct hw_interrupt_type i8259A_irq_type = {
55 "XT-PIC", 55 .typename = "XT-PIC",
56 startup_8259A_irq, 56 .startup = startup_8259A_irq,
57 shutdown_8259A_irq, 57 .shutdown = shutdown_8259A_irq,
58 enable_8259A_irq, 58 .enable = enable_8259A_irq,
59 disable_8259A_irq, 59 .disable = disable_8259A_irq,
60 mask_and_ack_8259A, 60 .ack = mask_and_ack_8259A,
61 end_8259A_irq, 61 .end = end_8259A_irq,
62 NULL
63}; 62};
64 63
65/* 64/*
@@ -308,7 +307,7 @@ static struct resource pic2_io_resource = {
308 307
309/* 308/*
310 * On systems with i8259-style interrupt controllers we assume for 309 * On systems with i8259-style interrupt controllers we assume for
311 * driver compatibility reasons interrupts 0 - 15 to be the i8295 310 * driver compatibility reasons interrupts 0 - 15 to be the i8259
312 * interrupts even if the hardware uses a different interrupt numbering. 311 * interrupts even if the hardware uses a different interrupt numbering.
313 */ 312 */
314void __init init_i8259_irqs (void) 313void __init init_i8259_irqs (void)
@@ -322,7 +321,7 @@ void __init init_i8259_irqs (void)
322 321
323 for (i = 0; i < 16; i++) { 322 for (i = 0; i < 16; i++) {
324 irq_desc[i].status = IRQ_DISABLED; 323 irq_desc[i].status = IRQ_DISABLED;
325 irq_desc[i].action = 0; 324 irq_desc[i].action = NULL;
326 irq_desc[i].depth = 1; 325 irq_desc[i].depth = 1;
327 irq_desc[i].handler = &i8259A_irq_type; 326 irq_desc[i].handler = &i8259A_irq_type;
328 } 327 }
diff --git a/arch/mips/kernel/ioctl32.c b/arch/mips/kernel/ioctl32.c
index c069719ff0d8..ed9b2da510be 100644
--- a/arch/mips/kernel/ioctl32.c
+++ b/arch/mips/kernel/ioctl32.c
@@ -41,12 +41,6 @@ IOCTL_TABLE_START
41#define DECLARES 41#define DECLARES
42#include "compat_ioctl.c" 42#include "compat_ioctl.c"
43 43
44#ifdef CONFIG_SIBYTE_TBPROF
45COMPATIBLE_IOCTL(SBPROF_ZBSTART)
46COMPATIBLE_IOCTL(SBPROF_ZBSTOP)
47COMPATIBLE_IOCTL(SBPROF_ZBWAITFULL)
48#endif /* CONFIG_SIBYTE_TBPROF */
49
50/*HANDLE_IOCTL(RTC_IRQP_READ, w_long) 44/*HANDLE_IOCTL(RTC_IRQP_READ, w_long)
51COMPATIBLE_IOCTL(RTC_IRQP_SET) 45COMPATIBLE_IOCTL(RTC_IRQP_SET)
52HANDLE_IOCTL(RTC_EPOCH_READ, w_long) 46HANDLE_IOCTL(RTC_EPOCH_READ, w_long)
diff --git a/arch/mips/kernel/irixelf.c b/arch/mips/kernel/irixelf.c
index 4af20cd91f9f..10d3644e3608 100644
--- a/arch/mips/kernel/irixelf.c
+++ b/arch/mips/kernel/irixelf.c
@@ -8,7 +8,7 @@
8 * 8 *
9 * Copyright (C) 1993 - 1994 Eric Youngdale <ericy@cais.com> 9 * Copyright (C) 1993 - 1994 Eric Youngdale <ericy@cais.com>
10 * Copyright (C) 1996 - 2004 David S. Miller <dm@engr.sgi.com> 10 * Copyright (C) 1996 - 2004 David S. Miller <dm@engr.sgi.com>
11 * Copyright (C) 2004 Steven J. Hill <sjhill@realitydiluted.com> 11 * Copyright (C) 2004 - 2005 Steven J. Hill <sjhill@realitydiluted.com>
12 */ 12 */
13#include <linux/module.h> 13#include <linux/module.h>
14#include <linux/fs.h> 14#include <linux/fs.h>
@@ -31,15 +31,16 @@
31#include <linux/elfcore.h> 31#include <linux/elfcore.h>
32#include <linux/smp_lock.h> 32#include <linux/smp_lock.h>
33 33
34#include <asm/uaccess.h>
35#include <asm/mipsregs.h> 34#include <asm/mipsregs.h>
35#include <asm/namei.h>
36#include <asm/prctl.h> 36#include <asm/prctl.h>
37#include <asm/uaccess.h>
37 38
38#define DLINFO_ITEMS 12 39#define DLINFO_ITEMS 12
39 40
40#include <linux/elf.h> 41#include <linux/elf.h>
41 42
42#undef DEBUG_ELF 43#undef DEBUG
43 44
44static int load_irix_binary(struct linux_binprm * bprm, struct pt_regs * regs); 45static int load_irix_binary(struct linux_binprm * bprm, struct pt_regs * regs);
45static int load_irix_library(struct file *); 46static int load_irix_library(struct file *);
@@ -55,7 +56,7 @@ static struct linux_binfmt irix_format = {
55#define elf_addr_t unsigned long 56#define elf_addr_t unsigned long
56#endif 57#endif
57 58
58#ifdef DEBUG_ELF 59#ifdef DEBUG
59/* Debugging routines. */ 60/* Debugging routines. */
60static char *get_elf_p_type(Elf32_Word p_type) 61static char *get_elf_p_type(Elf32_Word p_type)
61{ 62{
@@ -120,7 +121,7 @@ static void dump_phdrs(struct elf_phdr *ep, int pnum)
120 print_phdr(i, ep); 121 print_phdr(i, ep);
121 } 122 }
122} 123}
123#endif /* (DEBUG_ELF) */ 124#endif /* DEBUG */
124 125
125static void set_brk(unsigned long start, unsigned long end) 126static void set_brk(unsigned long start, unsigned long end)
126{ 127{
@@ -146,20 +147,20 @@ static void padzero(unsigned long elf_bss)
146 nbyte = elf_bss & (PAGE_SIZE-1); 147 nbyte = elf_bss & (PAGE_SIZE-1);
147 if (nbyte) { 148 if (nbyte) {
148 nbyte = PAGE_SIZE - nbyte; 149 nbyte = PAGE_SIZE - nbyte;
149 clear_user((void *) elf_bss, nbyte); 150 clear_user((void __user *) elf_bss, nbyte);
150 } 151 }
151} 152}
152 153
153unsigned long * create_irix_tables(char * p, int argc, int envc, 154static unsigned long * create_irix_tables(char * p, int argc, int envc,
154 struct elfhdr * exec, unsigned int load_addr, 155 struct elfhdr * exec, unsigned int load_addr,
155 unsigned int interp_load_addr, 156 unsigned int interp_load_addr, struct pt_regs *regs,
156 struct pt_regs *regs, struct elf_phdr *ephdr) 157 struct elf_phdr *ephdr)
157{ 158{
158 elf_addr_t *argv; 159 elf_addr_t *argv;
159 elf_addr_t *envp; 160 elf_addr_t *envp;
160 elf_addr_t *sp, *csp; 161 elf_addr_t *sp, *csp;
161 162
162#ifdef DEBUG_ELF 163#ifdef DEBUG
163 printk("create_irix_tables: p[%p] argc[%d] envc[%d] " 164 printk("create_irix_tables: p[%p] argc[%d] envc[%d] "
164 "load_addr[%08x] interp_load_addr[%08x]\n", 165 "load_addr[%08x] interp_load_addr[%08x]\n",
165 p, argc, envc, load_addr, interp_load_addr); 166 p, argc, envc, load_addr, interp_load_addr);
@@ -248,14 +249,13 @@ static unsigned int load_irix_interp(struct elfhdr * interp_elf_ex,
248 last_bss = 0; 249 last_bss = 0;
249 error = load_addr = 0; 250 error = load_addr = 0;
250 251
251#ifdef DEBUG_ELF 252#ifdef DEBUG
252 print_elfhdr(interp_elf_ex); 253 print_elfhdr(interp_elf_ex);
253#endif 254#endif
254 255
255 /* First of all, some simple consistency checks */ 256 /* First of all, some simple consistency checks */
256 if ((interp_elf_ex->e_type != ET_EXEC && 257 if ((interp_elf_ex->e_type != ET_EXEC &&
257 interp_elf_ex->e_type != ET_DYN) || 258 interp_elf_ex->e_type != ET_DYN) ||
258 !irix_elf_check_arch(interp_elf_ex) ||
259 !interpreter->f_op->mmap) { 259 !interpreter->f_op->mmap) {
260 printk("IRIX interp has bad e_type %d\n", interp_elf_ex->e_type); 260 printk("IRIX interp has bad e_type %d\n", interp_elf_ex->e_type);
261 return 0xffffffff; 261 return 0xffffffff;
@@ -290,7 +290,7 @@ static unsigned int load_irix_interp(struct elfhdr * interp_elf_ex,
290 (char *) elf_phdata, 290 (char *) elf_phdata,
291 sizeof(struct elf_phdr) * interp_elf_ex->e_phnum); 291 sizeof(struct elf_phdr) * interp_elf_ex->e_phnum);
292 292
293#ifdef DEBUG_ELF 293#ifdef DEBUG
294 dump_phdrs(elf_phdata, interp_elf_ex->e_phnum); 294 dump_phdrs(elf_phdata, interp_elf_ex->e_phnum);
295#endif 295#endif
296 296
@@ -306,13 +306,11 @@ static unsigned int load_irix_interp(struct elfhdr * interp_elf_ex,
306 elf_type |= MAP_FIXED; 306 elf_type |= MAP_FIXED;
307 vaddr = eppnt->p_vaddr; 307 vaddr = eppnt->p_vaddr;
308 308
309#ifdef DEBUG_ELF 309 pr_debug("INTERP do_mmap(%p, %08lx, %08lx, %08lx, %08lx, %08lx) ",
310 printk("INTERP do_mmap(%p, %08lx, %08lx, %08lx, %08lx, %08lx) ",
311 interpreter, vaddr, 310 interpreter, vaddr,
312 (unsigned long) (eppnt->p_filesz + (eppnt->p_vaddr & 0xfff)), 311 (unsigned long) (eppnt->p_filesz + (eppnt->p_vaddr & 0xfff)),
313 (unsigned long) elf_prot, (unsigned long) elf_type, 312 (unsigned long) elf_prot, (unsigned long) elf_type,
314 (unsigned long) (eppnt->p_offset & 0xfffff000)); 313 (unsigned long) (eppnt->p_offset & 0xfffff000));
315#endif
316 down_write(&current->mm->mmap_sem); 314 down_write(&current->mm->mmap_sem);
317 error = do_mmap(interpreter, vaddr, 315 error = do_mmap(interpreter, vaddr,
318 eppnt->p_filesz + (eppnt->p_vaddr & 0xfff), 316 eppnt->p_filesz + (eppnt->p_vaddr & 0xfff),
@@ -324,14 +322,10 @@ static unsigned int load_irix_interp(struct elfhdr * interp_elf_ex,
324 printk("Aieee IRIX interp mmap error=%d\n", error); 322 printk("Aieee IRIX interp mmap error=%d\n", error);
325 break; /* Real error */ 323 break; /* Real error */
326 } 324 }
327#ifdef DEBUG_ELF 325 pr_debug("error=%08lx ", (unsigned long) error);
328 printk("error=%08lx ", (unsigned long) error);
329#endif
330 if(!load_addr && interp_elf_ex->e_type == ET_DYN) { 326 if(!load_addr && interp_elf_ex->e_type == ET_DYN) {
331 load_addr = error; 327 load_addr = error;
332#ifdef DEBUG_ELF 328 pr_debug("load_addr = error ");
333 printk("load_addr = error ");
334#endif
335 } 329 }
336 330
337 /* Find the end of the file mapping for this phdr, and keep 331 /* Find the end of the file mapping for this phdr, and keep
@@ -345,17 +339,13 @@ static unsigned int load_irix_interp(struct elfhdr * interp_elf_ex,
345 */ 339 */
346 k = eppnt->p_memsz + eppnt->p_vaddr; 340 k = eppnt->p_memsz + eppnt->p_vaddr;
347 if(k > last_bss) last_bss = k; 341 if(k > last_bss) last_bss = k;
348#ifdef DEBUG_ELF 342 pr_debug("\n");
349 printk("\n");
350#endif
351 } 343 }
352 } 344 }
353 345
354 /* Now use mmap to map the library into memory. */ 346 /* Now use mmap to map the library into memory. */
355 if(error < 0 && error > -1024) { 347 if(error < 0 && error > -1024) {
356#ifdef DEBUG_ELF 348 pr_debug("got error %d\n", error);
357 printk("got error %d\n", error);
358#endif
359 kfree(elf_phdata); 349 kfree(elf_phdata);
360 return 0xffffffff; 350 return 0xffffffff;
361 } 351 }
@@ -365,16 +355,12 @@ static unsigned int load_irix_interp(struct elfhdr * interp_elf_ex,
365 * that there are zero-mapped pages up to and including the 355 * that there are zero-mapped pages up to and including the
366 * last bss page. 356 * last bss page.
367 */ 357 */
368#ifdef DEBUG_ELF 358 pr_debug("padzero(%08lx) ", (unsigned long) (elf_bss));
369 printk("padzero(%08lx) ", (unsigned long) (elf_bss));
370#endif
371 padzero(elf_bss); 359 padzero(elf_bss);
372 len = (elf_bss + 0xfff) & 0xfffff000; /* What we have mapped so far */ 360 len = (elf_bss + 0xfff) & 0xfffff000; /* What we have mapped so far */
373 361
374#ifdef DEBUG_ELF 362 pr_debug("last_bss[%08lx] len[%08lx]\n", (unsigned long) last_bss,
375 printk("last_bss[%08lx] len[%08lx]\n", (unsigned long) last_bss, 363 (unsigned long) len);
376 (unsigned long) len);
377#endif
378 364
379 /* Map the last of the bss segment */ 365 /* Map the last of the bss segment */
380 if (last_bss > len) { 366 if (last_bss > len) {
@@ -396,12 +382,7 @@ static int verify_binary(struct elfhdr *ehp, struct linux_binprm *bprm)
396 382
397 /* First of all, some simple consistency checks */ 383 /* First of all, some simple consistency checks */
398 if((ehp->e_type != ET_EXEC && ehp->e_type != ET_DYN) || 384 if((ehp->e_type != ET_EXEC && ehp->e_type != ET_DYN) ||
399 !irix_elf_check_arch(ehp) || !bprm->file->f_op->mmap) { 385 !bprm->file->f_op->mmap) {
400 return -ENOEXEC;
401 }
402
403 /* Only support MIPS ARCH2 or greater IRIX binaries for now. */
404 if(!(ehp->e_flags & EF_MIPS_ARCH) && !(ehp->e_flags & 0x04)) {
405 return -ENOEXEC; 386 return -ENOEXEC;
406 } 387 }
407 388
@@ -411,16 +392,17 @@ static int verify_binary(struct elfhdr *ehp, struct linux_binprm *bprm)
411 * XXX all registers as 64bits on cpu's capable of this at 392 * XXX all registers as 64bits on cpu's capable of this at
412 * XXX exception time plus frob the XTLB exception vector. 393 * XXX exception time plus frob the XTLB exception vector.
413 */ 394 */
414 if((ehp->e_flags & 0x20)) { 395 if((ehp->e_flags & EF_MIPS_ABI2))
415 return -ENOEXEC; 396 return -ENOEXEC;
416 }
417 397
418 return 0; /* It's ok. */ 398 return 0;
419} 399}
420 400
421#define IRIX_INTERP_PREFIX "/usr/gnemul/irix" 401/*
422 402 * This is where the detailed check is performed. Irix binaries
423/* Look for an IRIX ELF interpreter. */ 403 * use interpreters with 'libc.so' in the name, so this function
404 * can differentiate between Linux and Irix binaries.
405 */
424static inline int look_for_irix_interpreter(char **name, 406static inline int look_for_irix_interpreter(char **name,
425 struct file **interpreter, 407 struct file **interpreter,
426 struct elfhdr *interp_elf_ex, 408 struct elfhdr *interp_elf_ex,
@@ -440,12 +422,11 @@ static inline int look_for_irix_interpreter(char **name,
440 if (*name != NULL) 422 if (*name != NULL)
441 goto out; 423 goto out;
442 424
443 *name = kmalloc((epp->p_filesz + strlen(IRIX_INTERP_PREFIX)), 425 *name = kmalloc(epp->p_filesz + strlen(IRIX_EMUL), GFP_KERNEL);
444 GFP_KERNEL);
445 if (!*name) 426 if (!*name)
446 return -ENOMEM; 427 return -ENOMEM;
447 428
448 strcpy(*name, IRIX_INTERP_PREFIX); 429 strcpy(*name, IRIX_EMUL);
449 retval = kernel_read(bprm->file, epp->p_offset, (*name + 16), 430 retval = kernel_read(bprm->file, epp->p_offset, (*name + 16),
450 epp->p_filesz); 431 epp->p_filesz);
451 if (retval < 0) 432 if (retval < 0)
@@ -562,7 +543,7 @@ static inline int map_interpreter(struct elf_phdr *epp, struct elfhdr *ihp,
562 * process and the system, here we map the page and fill the 543 * process and the system, here we map the page and fill the
563 * structure 544 * structure
564 */ 545 */
565void irix_map_prda_page (void) 546static void irix_map_prda_page(void)
566{ 547{
567 unsigned long v; 548 unsigned long v;
568 struct prda *pp; 549 struct prda *pp;
@@ -601,14 +582,33 @@ static int load_irix_binary(struct linux_binprm * bprm, struct pt_regs * regs)
601 582
602 load_addr = 0; 583 load_addr = 0;
603 has_interp = has_ephdr = 0; 584 has_interp = has_ephdr = 0;
604 elf_ihdr = elf_ephdr = 0; 585 elf_ihdr = elf_ephdr = NULL;
605 elf_ex = *((struct elfhdr *) bprm->buf); 586 elf_ex = *((struct elfhdr *) bprm->buf);
606 retval = -ENOEXEC; 587 retval = -ENOEXEC;
607 588
608 if (verify_binary(&elf_ex, bprm)) 589 if (verify_binary(&elf_ex, bprm))
609 goto out; 590 goto out;
610 591
611#ifdef DEBUG_ELF 592 /*
593 * Telling -o32 static binaries from Linux and Irix apart from each
594 * other is difficult. There are 2 differences to be noted for static
595 * binaries from the 2 operating systems:
596 *
597 * 1) Irix binaries have their .text section before their .init
598 * section. Linux binaries are just the opposite.
599 *
600 * 2) Irix binaries usually have <= 12 sections and Linux
601 * binaries have > 20.
602 *
603 * We will use Method #2 since Method #1 would require us to read in
604 * the section headers which is way too much overhead. This appears
605 * to work for everything we have ran into so far. If anyone has a
606 * better method to tell the binaries apart, I'm listening.
607 */
608 if (elf_ex.e_shnum > 20)
609 goto out;
610
611#ifdef DEBUG
612 print_elfhdr(&elf_ex); 612 print_elfhdr(&elf_ex);
613#endif 613#endif
614 614
@@ -623,11 +623,10 @@ static int load_irix_binary(struct linux_binprm * bprm, struct pt_regs * regs)
623 } 623 }
624 624
625 retval = kernel_read(bprm->file, elf_ex.e_phoff, (char *)elf_phdata, size); 625 retval = kernel_read(bprm->file, elf_ex.e_phoff, (char *)elf_phdata, size);
626
627 if (retval < 0) 626 if (retval < 0)
628 goto out_free_ph; 627 goto out_free_ph;
629 628
630#ifdef DEBUG_ELF 629#ifdef DEBUG
631 dump_phdrs(elf_phdata, elf_ex.e_phnum); 630 dump_phdrs(elf_phdata, elf_ex.e_phnum);
632#endif 631#endif
633 632
@@ -644,9 +643,8 @@ static int load_irix_binary(struct linux_binprm * bprm, struct pt_regs * regs)
644 break; 643 break;
645 }; 644 };
646 } 645 }
647#ifdef DEBUG_ELF 646
648 printk("\n"); 647 pr_debug("\n");
649#endif
650 648
651 elf_bss = 0; 649 elf_bss = 0;
652 elf_brk = 0; 650 elf_brk = 0;
@@ -657,12 +655,19 @@ static int load_irix_binary(struct linux_binprm * bprm, struct pt_regs * regs)
657 end_code = 0; 655 end_code = 0;
658 end_data = 0; 656 end_data = 0;
659 657
660 retval = look_for_irix_interpreter(&elf_interpreter, 658 /*
661 &interpreter, 659 * If we get a return value, we change the value to be ENOEXEC
660 * so that we can exit gracefully and the main binary format
661 * search loop in 'fs/exec.c' will move onto the next handler
662 * which should be the normal ELF binary handler.
663 */
664 retval = look_for_irix_interpreter(&elf_interpreter, &interpreter,
662 &interp_elf_ex, elf_phdata, bprm, 665 &interp_elf_ex, elf_phdata, bprm,
663 elf_ex.e_phnum); 666 elf_ex.e_phnum);
664 if (retval) 667 if (retval) {
668 retval = -ENOEXEC;
665 goto out_free_file; 669 goto out_free_file;
670 }
666 671
667 if (elf_interpreter) { 672 if (elf_interpreter) {
668 retval = verify_irix_interpreter(&interp_elf_ex); 673 retval = verify_irix_interpreter(&interp_elf_ex);
@@ -692,7 +697,6 @@ static int load_irix_binary(struct linux_binprm * bprm, struct pt_regs * regs)
692 /* Do this so that we can load the interpreter, if need be. We will 697 /* Do this so that we can load the interpreter, if need be. We will
693 * change some of these later. 698 * change some of these later.
694 */ 699 */
695 set_mm_counter(current->mm, rss, 0);
696 setup_arg_pages(bprm, STACK_TOP, EXSTACK_DEFAULT); 700 setup_arg_pages(bprm, STACK_TOP, EXSTACK_DEFAULT);
697 current->mm->start_stack = bprm->p; 701 current->mm->start_stack = bprm->p;
698 702
@@ -746,18 +750,16 @@ static int load_irix_binary(struct linux_binprm * bprm, struct pt_regs * regs)
746 * IRIX maps a page at 0x200000 which holds some system 750 * IRIX maps a page at 0x200000 which holds some system
747 * information. Programs depend on this. 751 * information. Programs depend on this.
748 */ 752 */
749 irix_map_prda_page (); 753 irix_map_prda_page();
750 754
751 padzero(elf_bss); 755 padzero(elf_bss);
752 756
753#ifdef DEBUG_ELF 757 pr_debug("(start_brk) %lx\n" , (long) current->mm->start_brk);
754 printk("(start_brk) %lx\n" , (long) current->mm->start_brk); 758 pr_debug("(end_code) %lx\n" , (long) current->mm->end_code);
755 printk("(end_code) %lx\n" , (long) current->mm->end_code); 759 pr_debug("(start_code) %lx\n" , (long) current->mm->start_code);
756 printk("(start_code) %lx\n" , (long) current->mm->start_code); 760 pr_debug("(end_data) %lx\n" , (long) current->mm->end_data);
757 printk("(end_data) %lx\n" , (long) current->mm->end_data); 761 pr_debug("(start_stack) %lx\n" , (long) current->mm->start_stack);
758 printk("(start_stack) %lx\n" , (long) current->mm->start_stack); 762 pr_debug("(brk) %lx\n" , (long) current->mm->brk);
759 printk("(brk) %lx\n" , (long) current->mm->brk);
760#endif
761 763
762#if 0 /* XXX No fucking way dude... */ 764#if 0 /* XXX No fucking way dude... */
763 /* Why this, you ask??? Well SVr4 maps page 0 as read-only, 765 /* Why this, you ask??? Well SVr4 maps page 0 as read-only,
@@ -782,8 +784,7 @@ out_free_dentry:
782 allow_write_access(interpreter); 784 allow_write_access(interpreter);
783 fput(interpreter); 785 fput(interpreter);
784out_free_interp: 786out_free_interp:
785 if (elf_interpreter) 787 kfree(elf_interpreter);
786 kfree(elf_interpreter);
787out_free_file: 788out_free_file:
788out_free_ph: 789out_free_ph:
789 kfree (elf_phdata); 790 kfree (elf_phdata);
@@ -813,7 +814,7 @@ static int load_irix_library(struct file *file)
813 814
814 /* First of all, some simple consistency checks. */ 815 /* First of all, some simple consistency checks. */
815 if(elf_ex.e_type != ET_EXEC || elf_ex.e_phnum > 2 || 816 if(elf_ex.e_type != ET_EXEC || elf_ex.e_phnum > 2 ||
816 !irix_elf_check_arch(&elf_ex) || !file->f_op->mmap) 817 !file->f_op->mmap)
817 return -ENOEXEC; 818 return -ENOEXEC;
818 819
819 /* Now read in all of the header information. */ 820 /* Now read in all of the header information. */
@@ -874,35 +875,36 @@ static int load_irix_library(struct file *file)
874 * phdrs there are in the USER_PHDRP array. We return the vaddr the 875 * phdrs there are in the USER_PHDRP array. We return the vaddr the
875 * first phdr was successfully mapped to. 876 * first phdr was successfully mapped to.
876 */ 877 */
877unsigned long irix_mapelf(int fd, struct elf_phdr *user_phdrp, int cnt) 878unsigned long irix_mapelf(int fd, struct elf_phdr __user *user_phdrp, int cnt)
878{ 879{
879 struct elf_phdr *hp; 880 unsigned long type, vaddr, filesz, offset, flags;
881 struct elf_phdr __user *hp;
880 struct file *filp; 882 struct file *filp;
881 int i, retval; 883 int i, retval;
882 884
883#ifdef DEBUG_ELF 885 pr_debug("irix_mapelf: fd[%d] user_phdrp[%p] cnt[%d]\n",
884 printk("irix_mapelf: fd[%d] user_phdrp[%p] cnt[%d]\n", 886 fd, user_phdrp, cnt);
885 fd, user_phdrp, cnt);
886#endif
887 887
888 /* First get the verification out of the way. */ 888 /* First get the verification out of the way. */
889 hp = user_phdrp; 889 hp = user_phdrp;
890 if (!access_ok(VERIFY_READ, hp, (sizeof(struct elf_phdr) * cnt))) { 890 if (!access_ok(VERIFY_READ, hp, (sizeof(struct elf_phdr) * cnt))) {
891#ifdef DEBUG_ELF 891 pr_debug("irix_mapelf: bad pointer to ELF PHDR!\n");
892 printk("irix_mapelf: access_ok fails!\n"); 892
893#endif
894 return -EFAULT; 893 return -EFAULT;
895 } 894 }
896 895
897#ifdef DEBUG_ELF 896#ifdef DEBUG
898 dump_phdrs(user_phdrp, cnt); 897 dump_phdrs(user_phdrp, cnt);
899#endif 898#endif
900 899
901 for(i = 0; i < cnt; i++, hp++) 900 for (i = 0; i < cnt; i++, hp++) {
902 if(hp->p_type != PT_LOAD) { 901 if (__get_user(type, &hp->p_type))
902 return -EFAULT;
903 if (type != PT_LOAD) {
903 printk("irix_mapelf: One section is not PT_LOAD!\n"); 904 printk("irix_mapelf: One section is not PT_LOAD!\n");
904 return -ENOEXEC; 905 return -ENOEXEC;
905 } 906 }
907 }
906 908
907 filp = fget(fd); 909 filp = fget(fd);
908 if (!filp) 910 if (!filp)
@@ -917,29 +919,40 @@ unsigned long irix_mapelf(int fd, struct elf_phdr *user_phdrp, int cnt)
917 for(i = 0; i < cnt; i++, hp++) { 919 for(i = 0; i < cnt; i++, hp++) {
918 int prot; 920 int prot;
919 921
920 prot = (hp->p_flags & PF_R) ? PROT_READ : 0; 922 retval = __get_user(vaddr, &hp->p_vaddr);
921 prot |= (hp->p_flags & PF_W) ? PROT_WRITE : 0; 923 retval |= __get_user(filesz, &hp->p_filesz);
922 prot |= (hp->p_flags & PF_X) ? PROT_EXEC : 0; 924 retval |= __get_user(offset, &hp->p_offset);
925 retval |= __get_user(flags, &hp->p_flags);
926 if (retval)
927 return retval;
928
929 prot = (flags & PF_R) ? PROT_READ : 0;
930 prot |= (flags & PF_W) ? PROT_WRITE : 0;
931 prot |= (flags & PF_X) ? PROT_EXEC : 0;
932
923 down_write(&current->mm->mmap_sem); 933 down_write(&current->mm->mmap_sem);
924 retval = do_mmap(filp, (hp->p_vaddr & 0xfffff000), 934 retval = do_mmap(filp, (vaddr & 0xfffff000),
925 (hp->p_filesz + (hp->p_vaddr & 0xfff)), 935 (filesz + (vaddr & 0xfff)),
926 prot, (MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE), 936 prot, (MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE),
927 (hp->p_offset & 0xfffff000)); 937 (offset & 0xfffff000));
928 up_write(&current->mm->mmap_sem); 938 up_write(&current->mm->mmap_sem);
929 939
930 if(retval != (hp->p_vaddr & 0xfffff000)) { 940 if (retval != (vaddr & 0xfffff000)) {
931 printk("irix_mapelf: do_mmap fails with %d!\n", retval); 941 printk("irix_mapelf: do_mmap fails with %d!\n", retval);
932 fput(filp); 942 fput(filp);
933 return retval; 943 return retval;
934 } 944 }
935 } 945 }
936 946
937#ifdef DEBUG_ELF 947 pr_debug("irix_mapelf: Success, returning %08lx\n",
938 printk("irix_mapelf: Success, returning %08lx\n", 948 (unsigned long) user_phdrp->p_vaddr);
939 (unsigned long) user_phdrp->p_vaddr); 949
940#endif
941 fput(filp); 950 fput(filp);
942 return user_phdrp->p_vaddr; 951
952 if (__get_user(vaddr, &user_phdrp->p_vaddr))
953 return -EFAULT;
954
955 return vaddr;
943} 956}
944 957
945/* 958/*
@@ -952,9 +965,9 @@ unsigned long irix_mapelf(int fd, struct elf_phdr *user_phdrp, int cnt)
952/* These are the only things you should do on a core-file: use only these 965/* These are the only things you should do on a core-file: use only these
953 * functions to write out all the necessary info. 966 * functions to write out all the necessary info.
954 */ 967 */
955static int dump_write(struct file *file, const void *addr, int nr) 968static int dump_write(struct file *file, const void __user *addr, int nr)
956{ 969{
957 return file->f_op->write(file, addr, nr, &file->f_pos) == nr; 970 return file->f_op->write(file, (const char __user *) addr, nr, &file->f_pos) == nr;
958} 971}
959 972
960static int dump_seek(struct file *file, off_t off) 973static int dump_seek(struct file *file, off_t off)
@@ -1064,8 +1077,8 @@ static int irix_core_dump(long signr, struct pt_regs * regs, struct file *file)
1064 struct elfhdr elf; 1077 struct elfhdr elf;
1065 off_t offset = 0, dataoff; 1078 off_t offset = 0, dataoff;
1066 int limit = current->signal->rlim[RLIMIT_CORE].rlim_cur; 1079 int limit = current->signal->rlim[RLIMIT_CORE].rlim_cur;
1067 int numnote = 4; 1080 int numnote = 3;
1068 struct memelfnote notes[4]; 1081 struct memelfnote notes[3];
1069 struct elf_prstatus prstatus; /* NT_PRSTATUS */ 1082 struct elf_prstatus prstatus; /* NT_PRSTATUS */
1070 elf_fpregset_t fpu; /* NT_PRFPREG */ 1083 elf_fpregset_t fpu; /* NT_PRFPREG */
1071 struct elf_prpsinfo psinfo; /* NT_PRPSINFO */ 1084 struct elf_prpsinfo psinfo; /* NT_PRPSINFO */
@@ -1073,7 +1086,7 @@ static int irix_core_dump(long signr, struct pt_regs * regs, struct file *file)
1073 /* Count what's needed to dump, up to the limit of coredump size. */ 1086 /* Count what's needed to dump, up to the limit of coredump size. */
1074 segs = 0; 1087 segs = 0;
1075 size = 0; 1088 size = 0;
1076 for(vma = current->mm->mmap; vma != NULL; vma = vma->vm_next) { 1089 for (vma = current->mm->mmap; vma != NULL; vma = vma->vm_next) {
1077 if (maydump(vma)) 1090 if (maydump(vma))
1078 { 1091 {
1079 int sz = vma->vm_end-vma->vm_start; 1092 int sz = vma->vm_end-vma->vm_start;
@@ -1187,9 +1200,9 @@ static int irix_core_dump(long signr, struct pt_regs * regs, struct file *file)
1187 1200
1188 len = current->mm->arg_end - current->mm->arg_start; 1201 len = current->mm->arg_end - current->mm->arg_start;
1189 len = len >= ELF_PRARGSZ ? ELF_PRARGSZ : len; 1202 len = len >= ELF_PRARGSZ ? ELF_PRARGSZ : len;
1190 copy_from_user(&psinfo.pr_psargs, 1203 (void *) copy_from_user(&psinfo.pr_psargs,
1191 (const char *)current->mm->arg_start, len); 1204 (const char __user *)current->mm->arg_start, len);
1192 for(i = 0; i < len; i++) 1205 for (i = 0; i < len; i++)
1193 if (psinfo.pr_psargs[i] == 0) 1206 if (psinfo.pr_psargs[i] == 0)
1194 psinfo.pr_psargs[i] = ' '; 1207 psinfo.pr_psargs[i] = ' ';
1195 psinfo.pr_psargs[len] = 0; 1208 psinfo.pr_psargs[len] = 0;
@@ -1198,20 +1211,15 @@ static int irix_core_dump(long signr, struct pt_regs * regs, struct file *file)
1198 } 1211 }
1199 strlcpy(psinfo.pr_fname, current->comm, sizeof(psinfo.pr_fname)); 1212 strlcpy(psinfo.pr_fname, current->comm, sizeof(psinfo.pr_fname));
1200 1213
1201 notes[2].name = "CORE";
1202 notes[2].type = NT_TASKSTRUCT;
1203 notes[2].datasz = sizeof(*current);
1204 notes[2].data = current;
1205
1206 /* Try to dump the FPU. */ 1214 /* Try to dump the FPU. */
1207 prstatus.pr_fpvalid = dump_fpu (regs, &fpu); 1215 prstatus.pr_fpvalid = dump_fpu (regs, &fpu);
1208 if (!prstatus.pr_fpvalid) { 1216 if (!prstatus.pr_fpvalid) {
1209 numnote--; 1217 numnote--;
1210 } else { 1218 } else {
1211 notes[3].name = "CORE"; 1219 notes[2].name = "CORE";
1212 notes[3].type = NT_PRFPREG; 1220 notes[2].type = NT_PRFPREG;
1213 notes[3].datasz = sizeof(fpu); 1221 notes[2].datasz = sizeof(fpu);
1214 notes[3].data = &fpu; 1222 notes[2].data = &fpu;
1215 } 1223 }
1216 1224
1217 /* Write notes phdr entry. */ 1225 /* Write notes phdr entry. */
@@ -1256,8 +1264,10 @@ static int irix_core_dump(long signr, struct pt_regs * regs, struct file *file)
1256 phdr.p_memsz = sz; 1264 phdr.p_memsz = sz;
1257 offset += phdr.p_filesz; 1265 offset += phdr.p_filesz;
1258 phdr.p_flags = vma->vm_flags & VM_READ ? PF_R : 0; 1266 phdr.p_flags = vma->vm_flags & VM_READ ? PF_R : 0;
1259 if (vma->vm_flags & VM_WRITE) phdr.p_flags |= PF_W; 1267 if (vma->vm_flags & VM_WRITE)
1260 if (vma->vm_flags & VM_EXEC) phdr.p_flags |= PF_X; 1268 phdr.p_flags |= PF_W;
1269 if (vma->vm_flags & VM_EXEC)
1270 phdr.p_flags |= PF_X;
1261 phdr.p_align = PAGE_SIZE; 1271 phdr.p_align = PAGE_SIZE;
1262 1272
1263 DUMP_WRITE(&phdr, sizeof(phdr)); 1273 DUMP_WRITE(&phdr, sizeof(phdr));
@@ -1283,7 +1293,7 @@ static int irix_core_dump(long signr, struct pt_regs * regs, struct file *file)
1283#ifdef DEBUG 1293#ifdef DEBUG
1284 printk("elf_core_dump: writing %08lx %lx\n", addr, len); 1294 printk("elf_core_dump: writing %08lx %lx\n", addr, len);
1285#endif 1295#endif
1286 DUMP_WRITE((void *)addr, len); 1296 DUMP_WRITE((void __user *)addr, len);
1287 } 1297 }
1288 1298
1289 if ((off_t) file->f_pos != offset) { 1299 if ((off_t) file->f_pos != offset) {
@@ -1299,7 +1309,7 @@ end_coredump:
1299 1309
1300static int __init init_irix_binfmt(void) 1310static int __init init_irix_binfmt(void)
1301{ 1311{
1302 int init_inventory(void); 1312 extern int init_inventory(void);
1303 extern asmlinkage unsigned long sys_call_table; 1313 extern asmlinkage unsigned long sys_call_table;
1304 extern asmlinkage unsigned long sys_call_table_irix5; 1314 extern asmlinkage unsigned long sys_call_table_irix5;
1305 1315
@@ -1318,7 +1328,9 @@ static int __init init_irix_binfmt(void)
1318 1328
1319static void __exit exit_irix_binfmt(void) 1329static void __exit exit_irix_binfmt(void)
1320{ 1330{
1321 /* Remove the IRIX ELF loaders. */ 1331 /*
1332 * Remove the Irix ELF loader.
1333 */
1322 unregister_binfmt(&irix_format); 1334 unregister_binfmt(&irix_format);
1323} 1335}
1324 1336
diff --git a/arch/mips/kernel/irixinv.c b/arch/mips/kernel/irixinv.c
index 60aa98cd1791..de8584f62311 100644
--- a/arch/mips/kernel/irixinv.c
+++ b/arch/mips/kernel/irixinv.c
@@ -30,10 +30,10 @@ void add_to_inventory (int class, int type, int controller, int unit, int state)
30 inventory_items++; 30 inventory_items++;
31} 31}
32 32
33int dump_inventory_to_user (void *userbuf, int size) 33int dump_inventory_to_user (void __user *userbuf, int size)
34{ 34{
35 inventory_t *inv = &inventory [0]; 35 inventory_t *inv = &inventory [0];
36 inventory_t *user = userbuf; 36 inventory_t __user *user = userbuf;
37 int v; 37 int v;
38 38
39 if (!access_ok(VERIFY_WRITE, userbuf, size)) 39 if (!access_ok(VERIFY_WRITE, userbuf, size))
@@ -41,7 +41,8 @@ int dump_inventory_to_user (void *userbuf, int size)
41 41
42 for (v = 0; v < inventory_items; v++){ 42 for (v = 0; v < inventory_items; v++){
43 inv = &inventory [v]; 43 inv = &inventory [v];
44 copy_to_user (user, inv, sizeof (inventory_t)); 44 if (copy_to_user (user, inv, sizeof (inventory_t)))
45 return -EFAULT;
45 user++; 46 user++;
46 } 47 }
47 return inventory_items * sizeof (inventory_t); 48 return inventory_items * sizeof (inventory_t);
diff --git a/arch/mips/kernel/irixioctl.c b/arch/mips/kernel/irixioctl.c
index 3cdc22346f4c..e2863821a3dd 100644
--- a/arch/mips/kernel/irixioctl.c
+++ b/arch/mips/kernel/irixioctl.c
@@ -59,7 +59,7 @@ asmlinkage int irix_ioctl(int fd, unsigned long cmd, unsigned long arg)
59{ 59{
60 struct tty_struct *tp, *rtp; 60 struct tty_struct *tp, *rtp;
61 mm_segment_t old_fs; 61 mm_segment_t old_fs;
62 int error = 0; 62 int i, error = 0;
63 63
64#ifdef DEBUG_IOCTLS 64#ifdef DEBUG_IOCTLS
65 printk("[%s:%d] irix_ioctl(%d, ", current->comm, current->pid, fd); 65 printk("[%s:%d] irix_ioctl(%d, ", current->comm, current->pid, fd);
@@ -74,12 +74,13 @@ asmlinkage int irix_ioctl(int fd, unsigned long cmd, unsigned long arg)
74 74
75 case 0x0000540d: { 75 case 0x0000540d: {
76 struct termios kt; 76 struct termios kt;
77 struct irix_termios *it = (struct irix_termios *) arg; 77 struct irix_termios __user *it =
78 (struct irix_termios __user *) arg;
78 79
79#ifdef DEBUG_IOCTLS 80#ifdef DEBUG_IOCTLS
80 printk("TCGETS, %08lx) ", arg); 81 printk("TCGETS, %08lx) ", arg);
81#endif 82#endif
82 if(!access_ok(VERIFY_WRITE, it, sizeof(*it))) { 83 if (!access_ok(VERIFY_WRITE, it, sizeof(*it))) {
83 error = -EFAULT; 84 error = -EFAULT;
84 break; 85 break;
85 } 86 }
@@ -88,13 +89,14 @@ asmlinkage int irix_ioctl(int fd, unsigned long cmd, unsigned long arg)
88 set_fs(old_fs); 89 set_fs(old_fs);
89 if (error) 90 if (error)
90 break; 91 break;
91 __put_user(kt.c_iflag, &it->c_iflag); 92
92 __put_user(kt.c_oflag, &it->c_oflag); 93 error = __put_user(kt.c_iflag, &it->c_iflag);
93 __put_user(kt.c_cflag, &it->c_cflag); 94 error |= __put_user(kt.c_oflag, &it->c_oflag);
94 __put_user(kt.c_lflag, &it->c_lflag); 95 error |= __put_user(kt.c_cflag, &it->c_cflag);
95 for(error = 0; error < NCCS; error++) 96 error |= __put_user(kt.c_lflag, &it->c_lflag);
96 __put_user(kt.c_cc[error], &it->c_cc[error]); 97
97 error = 0; 98 for (i = 0; i < NCCS; i++)
99 error |= __put_user(kt.c_cc[i], &it->c_cc[i]);
98 break; 100 break;
99 } 101 }
100 102
@@ -112,14 +114,19 @@ asmlinkage int irix_ioctl(int fd, unsigned long cmd, unsigned long arg)
112 old_fs = get_fs(); set_fs(get_ds()); 114 old_fs = get_fs(); set_fs(get_ds());
113 error = sys_ioctl(fd, TCGETS, (unsigned long) &kt); 115 error = sys_ioctl(fd, TCGETS, (unsigned long) &kt);
114 set_fs(old_fs); 116 set_fs(old_fs);
115 if(error) 117 if (error)
118 break;
119
120 error = __get_user(kt.c_iflag, &it->c_iflag);
121 error |= __get_user(kt.c_oflag, &it->c_oflag);
122 error |= __get_user(kt.c_cflag, &it->c_cflag);
123 error |= __get_user(kt.c_lflag, &it->c_lflag);
124
125 for (i = 0; i < NCCS; i++)
126 error |= __get_user(kt.c_cc[i], &it->c_cc[i]);
127
128 if (error)
116 break; 129 break;
117 __get_user(kt.c_iflag, &it->c_iflag);
118 __get_user(kt.c_oflag, &it->c_oflag);
119 __get_user(kt.c_cflag, &it->c_cflag);
120 __get_user(kt.c_lflag, &it->c_lflag);
121 for(error = 0; error < NCCS; error++)
122 __get_user(kt.c_cc[error], &it->c_cc[error]);
123 old_fs = get_fs(); set_fs(get_ds()); 130 old_fs = get_fs(); set_fs(get_ds());
124 error = sys_ioctl(fd, TCSETS, (unsigned long) &kt); 131 error = sys_ioctl(fd, TCSETS, (unsigned long) &kt);
125 set_fs(old_fs); 132 set_fs(old_fs);
@@ -153,7 +160,7 @@ asmlinkage int irix_ioctl(int fd, unsigned long cmd, unsigned long arg)
153#ifdef DEBUG_IOCTLS 160#ifdef DEBUG_IOCTLS
154 printk("rtp->session=%d ", rtp->session); 161 printk("rtp->session=%d ", rtp->session);
155#endif 162#endif
156 error = put_user(rtp->session, (unsigned long *) arg); 163 error = put_user(rtp->session, (unsigned long __user *) arg);
157 break; 164 break;
158 165
159 case 0x746e: 166 case 0x746e:
@@ -195,50 +202,32 @@ asmlinkage int irix_ioctl(int fd, unsigned long cmd, unsigned long arg)
195 break; 202 break;
196 203
197 case 0x8004667e: 204 case 0x8004667e:
198#ifdef DEBUG_IOCTLS
199 printk("FIONBIO, %08lx) arg=%d ", arg, *(int *)arg);
200#endif
201 error = sys_ioctl(fd, FIONBIO, arg); 205 error = sys_ioctl(fd, FIONBIO, arg);
202 break; 206 break;
203 207
204 case 0x80047476: 208 case 0x80047476:
205#ifdef DEBUG_IOCTLS
206 printk("TIOCSPGRP, %08lx) arg=%d ", arg, *(int *)arg);
207#endif
208 error = sys_ioctl(fd, TIOCSPGRP, arg); 209 error = sys_ioctl(fd, TIOCSPGRP, arg);
209 break; 210 break;
210 211
211 case 0x8020690c: 212 case 0x8020690c:
212#ifdef DEBUG_IOCTLS
213 printk("SIOCSIFADDR, %08lx) arg=%d ", arg, *(int *)arg);
214#endif
215 error = sys_ioctl(fd, SIOCSIFADDR, arg); 213 error = sys_ioctl(fd, SIOCSIFADDR, arg);
216 break; 214 break;
217 215
218 case 0x80206910: 216 case 0x80206910:
219#ifdef DEBUG_IOCTLS
220 printk("SIOCSIFFLAGS, %08lx) arg=%d ", arg, *(int *)arg);
221#endif
222 error = sys_ioctl(fd, SIOCSIFFLAGS, arg); 217 error = sys_ioctl(fd, SIOCSIFFLAGS, arg);
223 break; 218 break;
224 219
225 case 0xc0206911: 220 case 0xc0206911:
226#ifdef DEBUG_IOCTLS
227 printk("SIOCGIFFLAGS, %08lx) arg=%d ", arg, *(int *)arg);
228#endif
229 error = sys_ioctl(fd, SIOCGIFFLAGS, arg); 221 error = sys_ioctl(fd, SIOCGIFFLAGS, arg);
230 break; 222 break;
231 223
232 case 0xc020691b: 224 case 0xc020691b:
233#ifdef DEBUG_IOCTLS
234 printk("SIOCGIFMETRIC, %08lx) arg=%d ", arg, *(int *)arg);
235#endif
236 error = sys_ioctl(fd, SIOCGIFMETRIC, arg); 225 error = sys_ioctl(fd, SIOCGIFMETRIC, arg);
237 break; 226 break;
238 227
239 default: { 228 default: {
240#ifdef DEBUG_MISSING_IOCTL 229#ifdef DEBUG_MISSING_IOCTL
241 char *msg = "Unimplemented IOCTL cmd tell linux@engr.sgi.com\n"; 230 char *msg = "Unimplemented IOCTL cmd tell linux-mips@linux-mips.org\n";
242 231
243#ifdef DEBUG_IOCTLS 232#ifdef DEBUG_IOCTLS
244 printk("UNIMP_IOCTL, %08lx)\n", arg); 233 printk("UNIMP_IOCTL, %08lx)\n", arg);
diff --git a/arch/mips/kernel/irixsig.c b/arch/mips/kernel/irixsig.c
index eff89322ba50..908e63684208 100644
--- a/arch/mips/kernel/irixsig.c
+++ b/arch/mips/kernel/irixsig.c
@@ -76,36 +76,39 @@ static inline void dump_irix5_sigctx(struct sigctx_irix5 *c)
76} 76}
77#endif 77#endif
78 78
79static void setup_irix_frame(struct k_sigaction *ka, struct pt_regs *regs, 79static int setup_irix_frame(struct k_sigaction *ka, struct pt_regs *regs,
80 int signr, sigset_t *oldmask) 80 int signr, sigset_t *oldmask)
81{ 81{
82 struct sigctx_irix5 __user *ctx;
82 unsigned long sp; 83 unsigned long sp;
83 struct sigctx_irix5 *ctx; 84 int error, i;
84 int i;
85 85
86 sp = regs->regs[29]; 86 sp = regs->regs[29];
87 sp -= sizeof(struct sigctx_irix5); 87 sp -= sizeof(struct sigctx_irix5);
88 sp &= ~(0xf); 88 sp &= ~(0xf);
89 ctx = (struct sigctx_irix5 *) sp; 89 ctx = (struct sigctx_irix5 __user *) sp;
90 if (!access_ok(VERIFY_WRITE, ctx, sizeof(*ctx))) 90 if (!access_ok(VERIFY_WRITE, ctx, sizeof(*ctx)))
91 goto segv_and_exit; 91 goto segv_and_exit;
92 92
93 __put_user(0, &ctx->weird_fpu_thing); 93 error = __put_user(0, &ctx->weird_fpu_thing);
94 __put_user(~(0x00000001), &ctx->rmask); 94 error |= __put_user(~(0x00000001), &ctx->rmask);
95 __put_user(0, &ctx->regs[0]); 95 error |= __put_user(0, &ctx->regs[0]);
96 for(i = 1; i < 32; i++) 96 for(i = 1; i < 32; i++)
97 __put_user((u64) regs->regs[i], &ctx->regs[i]); 97 error |= __put_user((u64) regs->regs[i], &ctx->regs[i]);
98
99 error |= __put_user((u64) regs->hi, &ctx->hi);
100 error |= __put_user((u64) regs->lo, &ctx->lo);
101 error |= __put_user((u64) regs->cp0_epc, &ctx->pc);
102 error |= __put_user(!!used_math(), &ctx->usedfp);
103 error |= __put_user((u64) regs->cp0_cause, &ctx->cp0_cause);
104 error |= __put_user((u64) regs->cp0_badvaddr, &ctx->cp0_badvaddr);
98 105
99 __put_user((u64) regs->hi, &ctx->hi); 106 error |= __put_user(0, &ctx->sstk_flags); /* XXX sigstack unimp... todo... */
100 __put_user((u64) regs->lo, &ctx->lo);
101 __put_user((u64) regs->cp0_epc, &ctx->pc);
102 __put_user(!!used_math(), &ctx->usedfp);
103 __put_user((u64) regs->cp0_cause, &ctx->cp0_cause);
104 __put_user((u64) regs->cp0_badvaddr, &ctx->cp0_badvaddr);
105 107
106 __put_user(0, &ctx->sstk_flags); /* XXX sigstack unimp... todo... */ 108 error |= __copy_to_user(&ctx->sigset, oldmask, sizeof(irix_sigset_t)) ? -EFAULT : 0;
107 109
108 __copy_to_user(&ctx->sigset, oldmask, sizeof(irix_sigset_t)); 110 if (error)
111 goto segv_and_exit;
109 112
110#ifdef DEBUG_SIG 113#ifdef DEBUG_SIG
111 dump_irix5_sigctx(ctx); 114 dump_irix5_sigctx(ctx);
@@ -117,13 +120,14 @@ static void setup_irix_frame(struct k_sigaction *ka, struct pt_regs *regs,
117 regs->regs[7] = (unsigned long) ka->sa.sa_handler; 120 regs->regs[7] = (unsigned long) ka->sa.sa_handler;
118 regs->regs[25] = regs->cp0_epc = (unsigned long) ka->sa_restorer; 121 regs->regs[25] = regs->cp0_epc = (unsigned long) ka->sa_restorer;
119 122
120 return; 123 return 1;
121 124
122segv_and_exit: 125segv_and_exit:
123 force_sigsegv(signr, current); 126 force_sigsegv(signr, current);
127 return 0;
124} 128}
125 129
126static void inline 130static int inline
127setup_irix_rt_frame(struct k_sigaction * ka, struct pt_regs *regs, 131setup_irix_rt_frame(struct k_sigaction * ka, struct pt_regs *regs,
128 int signr, sigset_t *oldmask, siginfo_t *info) 132 int signr, sigset_t *oldmask, siginfo_t *info)
129{ 133{
@@ -131,9 +135,11 @@ setup_irix_rt_frame(struct k_sigaction * ka, struct pt_regs *regs,
131 do_exit(SIGSEGV); 135 do_exit(SIGSEGV);
132} 136}
133 137
134static inline void handle_signal(unsigned long sig, siginfo_t *info, 138static inline int handle_signal(unsigned long sig, siginfo_t *info,
135 struct k_sigaction *ka, sigset_t *oldset, struct pt_regs * regs) 139 struct k_sigaction *ka, sigset_t *oldset, struct pt_regs * regs)
136{ 140{
141 int ret;
142
137 switch(regs->regs[0]) { 143 switch(regs->regs[0]) {
138 case ERESTARTNOHAND: 144 case ERESTARTNOHAND:
139 regs->regs[2] = EINTR; 145 regs->regs[2] = EINTR;
@@ -151,9 +157,9 @@ static inline void handle_signal(unsigned long sig, siginfo_t *info,
151 regs->regs[0] = 0; /* Don't deal with this again. */ 157 regs->regs[0] = 0; /* Don't deal with this again. */
152 158
153 if (ka->sa.sa_flags & SA_SIGINFO) 159 if (ka->sa.sa_flags & SA_SIGINFO)
154 setup_irix_rt_frame(ka, regs, sig, oldset, info); 160 ret = setup_irix_rt_frame(ka, regs, sig, oldset, info);
155 else 161 else
156 setup_irix_frame(ka, regs, sig, oldset); 162 ret = setup_irix_frame(ka, regs, sig, oldset);
157 163
158 spin_lock_irq(&current->sighand->siglock); 164 spin_lock_irq(&current->sighand->siglock);
159 sigorsets(&current->blocked,&current->blocked,&ka->sa.sa_mask); 165 sigorsets(&current->blocked,&current->blocked,&ka->sa.sa_mask);
@@ -161,6 +167,8 @@ static inline void handle_signal(unsigned long sig, siginfo_t *info,
161 sigaddset(&current->blocked,sig); 167 sigaddset(&current->blocked,sig);
162 recalc_sigpending(); 168 recalc_sigpending();
163 spin_unlock_irq(&current->sighand->siglock); 169 spin_unlock_irq(&current->sighand->siglock);
170
171 return ret;
164} 172}
165 173
166asmlinkage int do_irix_signal(sigset_t *oldset, struct pt_regs *regs) 174asmlinkage int do_irix_signal(sigset_t *oldset, struct pt_regs *regs)
@@ -184,10 +192,8 @@ asmlinkage int do_irix_signal(sigset_t *oldset, struct pt_regs *regs)
184 oldset = &current->blocked; 192 oldset = &current->blocked;
185 193
186 signr = get_signal_to_deliver(&info, &ka, regs, NULL); 194 signr = get_signal_to_deliver(&info, &ka, regs, NULL);
187 if (signr > 0) { 195 if (signr > 0)
188 handle_signal(signr, &info, &ka, oldset, regs); 196 return handle_signal(signr, &info, &ka, oldset, regs);
189 return 1;
190 }
191 197
192no_signal: 198no_signal:
193 /* 199 /*
@@ -208,10 +214,11 @@ no_signal:
208asmlinkage void 214asmlinkage void
209irix_sigreturn(struct pt_regs *regs) 215irix_sigreturn(struct pt_regs *regs)
210{ 216{
211 struct sigctx_irix5 *context, *magic; 217 struct sigctx_irix5 __user *context, *magic;
212 unsigned long umask, mask; 218 unsigned long umask, mask;
213 u64 *fregs; 219 u64 *fregs;
214 int sig, i, base = 0; 220 u32 usedfp;
221 int error, sig, i, base = 0;
215 sigset_t blocked; 222 sigset_t blocked;
216 223
217 /* Always make any pending restarted system calls return -EINTR */ 224 /* Always make any pending restarted system calls return -EINTR */
@@ -220,8 +227,8 @@ irix_sigreturn(struct pt_regs *regs)
220 if (regs->regs[2] == 1000) 227 if (regs->regs[2] == 1000)
221 base = 1; 228 base = 1;
222 229
223 context = (struct sigctx_irix5 *) regs->regs[base + 4]; 230 context = (struct sigctx_irix5 __user *) regs->regs[base + 4];
224 magic = (struct sigctx_irix5 *) regs->regs[base + 5]; 231 magic = (struct sigctx_irix5 __user *) regs->regs[base + 5];
225 sig = (int) regs->regs[base + 6]; 232 sig = (int) regs->regs[base + 6];
226#ifdef DEBUG_SIG 233#ifdef DEBUG_SIG
227 printk("[%s:%d] IRIX sigreturn(scp[%p],ucp[%p],sig[%d])\n", 234 printk("[%s:%d] IRIX sigreturn(scp[%p],ucp[%p],sig[%d])\n",
@@ -236,25 +243,31 @@ irix_sigreturn(struct pt_regs *regs)
236 dump_irix5_sigctx(context); 243 dump_irix5_sigctx(context);
237#endif 244#endif
238 245
239 __get_user(regs->cp0_epc, &context->pc); 246 error = __get_user(regs->cp0_epc, &context->pc);
240 umask = context->rmask; mask = 2; 247 error |= __get_user(umask, &context->rmask);
248
249 mask = 2;
241 for (i = 1; i < 32; i++, mask <<= 1) { 250 for (i = 1; i < 32; i++, mask <<= 1) {
242 if(umask & mask) 251 if (umask & mask)
243 __get_user(regs->regs[i], &context->regs[i]); 252 error |= __get_user(regs->regs[i], &context->regs[i]);
244 } 253 }
245 __get_user(regs->hi, &context->hi); 254 error |= __get_user(regs->hi, &context->hi);
246 __get_user(regs->lo, &context->lo); 255 error |= __get_user(regs->lo, &context->lo);
247 256
248 if ((umask & 1) && context->usedfp) { 257 error |= __get_user(usedfp, &context->usedfp);
258 if ((umask & 1) && usedfp) {
249 fregs = (u64 *) &current->thread.fpu; 259 fregs = (u64 *) &current->thread.fpu;
260
250 for(i = 0; i < 32; i++) 261 for(i = 0; i < 32; i++)
251 fregs[i] = (u64) context->fpregs[i]; 262 error |= __get_user(fregs[i], &context->fpregs[i]);
252 __get_user(current->thread.fpu.hard.fcr31, &context->fpcsr); 263 error |= __get_user(current->thread.fpu.hard.fcr31, &context->fpcsr);
253 } 264 }
254 265
255 /* XXX do sigstack crapola here... XXX */ 266 /* XXX do sigstack crapola here... XXX */
256 267
257 if (__copy_from_user(&blocked, &context->sigset, sizeof(blocked))) 268 error |= __copy_from_user(&blocked, &context->sigset, sizeof(blocked)) ? -EFAULT : 0;
269
270 if (error)
258 goto badframe; 271 goto badframe;
259 272
260 sigdelsetmask(&blocked, ~_BLOCKABLE); 273 sigdelsetmask(&blocked, ~_BLOCKABLE);
@@ -296,8 +309,8 @@ static inline void dump_sigact_irix5(struct sigact_irix5 *p)
296#endif 309#endif
297 310
298asmlinkage int 311asmlinkage int
299irix_sigaction(int sig, const struct sigaction *act, 312irix_sigaction(int sig, const struct sigaction __user *act,
300 struct sigaction *oact, void *trampoline) 313 struct sigaction __user *oact, void __user *trampoline)
301{ 314{
302 struct k_sigaction new_ka, old_ka; 315 struct k_sigaction new_ka, old_ka;
303 int ret; 316 int ret;
@@ -311,12 +324,16 @@ irix_sigaction(int sig, const struct sigaction *act,
311#endif 324#endif
312 if (act) { 325 if (act) {
313 sigset_t mask; 326 sigset_t mask;
314 if (!access_ok(VERIFY_READ, act, sizeof(*act)) || 327 int err;
315 __get_user(new_ka.sa.sa_handler, &act->sa_handler) || 328
316 __get_user(new_ka.sa.sa_flags, &act->sa_flags)) 329 if (!access_ok(VERIFY_READ, act, sizeof(*act)))
317 return -EFAULT; 330 return -EFAULT;
331 err = __get_user(new_ka.sa.sa_handler, &act->sa_handler);
332 err |= __get_user(new_ka.sa.sa_flags, &act->sa_flags);
318 333
319 __copy_from_user(&mask, &act->sa_mask, sizeof(sigset_t)); 334 err |= __copy_from_user(&mask, &act->sa_mask, sizeof(sigset_t)) ? -EFAULT : 0;
335 if (err)
336 return err;
320 337
321 /* 338 /*
322 * Hmmm... methinks IRIX libc always passes a valid trampoline 339 * Hmmm... methinks IRIX libc always passes a valid trampoline
@@ -330,30 +347,37 @@ irix_sigaction(int sig, const struct sigaction *act,
330 ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); 347 ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
331 348
332 if (!ret && oact) { 349 if (!ret && oact) {
333 if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) || 350 int err;
334 __put_user(old_ka.sa.sa_handler, &oact->sa_handler) || 351
335 __put_user(old_ka.sa.sa_flags, &oact->sa_flags)) 352 if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)))
353 return -EFAULT;
354
355 err = __put_user(old_ka.sa.sa_handler, &oact->sa_handler);
356 err |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags);
357 err |= __copy_to_user(&oact->sa_mask, &old_ka.sa.sa_mask,
358 sizeof(sigset_t)) ? -EFAULT : 0;
359 if (err)
336 return -EFAULT; 360 return -EFAULT;
337 __copy_to_user(&old_ka.sa.sa_mask, &oact->sa_mask,
338 sizeof(sigset_t));
339 } 361 }
340 362
341 return ret; 363 return ret;
342} 364}
343 365
344asmlinkage int irix_sigpending(irix_sigset_t *set) 366asmlinkage int irix_sigpending(irix_sigset_t __user *set)
345{ 367{
346 return do_sigpending(set, sizeof(*set)); 368 return do_sigpending(set, sizeof(*set));
347} 369}
348 370
349asmlinkage int irix_sigprocmask(int how, irix_sigset_t *new, irix_sigset_t *old) 371asmlinkage int irix_sigprocmask(int how, irix_sigset_t __user *new,
372 irix_sigset_t __user *old)
350{ 373{
351 sigset_t oldbits, newbits; 374 sigset_t oldbits, newbits;
352 375
353 if (new) { 376 if (new) {
354 if (!access_ok(VERIFY_READ, new, sizeof(*new))) 377 if (!access_ok(VERIFY_READ, new, sizeof(*new)))
355 return -EFAULT; 378 return -EFAULT;
356 __copy_from_user(&newbits, new, sizeof(unsigned long)*4); 379 if (__copy_from_user(&newbits, new, sizeof(unsigned long)*4))
380 return -EFAULT;
357 sigdelsetmask(&newbits, ~_BLOCKABLE); 381 sigdelsetmask(&newbits, ~_BLOCKABLE);
358 382
359 spin_lock_irq(&current->sighand->siglock); 383 spin_lock_irq(&current->sighand->siglock);
@@ -381,20 +405,19 @@ asmlinkage int irix_sigprocmask(int how, irix_sigset_t *new, irix_sigset_t *old)
381 recalc_sigpending(); 405 recalc_sigpending();
382 spin_unlock_irq(&current->sighand->siglock); 406 spin_unlock_irq(&current->sighand->siglock);
383 } 407 }
384 if(old) { 408 if (old)
385 if (!access_ok(VERIFY_WRITE, old, sizeof(*old))) 409 return copy_to_user(old, &current->blocked,
386 return -EFAULT; 410 sizeof(unsigned long)*4) ? -EFAULT : 0;
387 __copy_to_user(old, &current->blocked, sizeof(unsigned long)*4);
388 }
389 411
390 return 0; 412 return 0;
391} 413}
392 414
393asmlinkage int irix_sigsuspend(struct pt_regs *regs) 415asmlinkage int irix_sigsuspend(struct pt_regs *regs)
394{ 416{
395 sigset_t *uset, saveset, newset; 417 sigset_t saveset, newset;
418 sigset_t __user *uset;
396 419
397 uset = (sigset_t *) regs->regs[4]; 420 uset = (sigset_t __user *) regs->regs[4];
398 if (copy_from_user(&newset, uset, sizeof(sigset_t))) 421 if (copy_from_user(&newset, uset, sizeof(sigset_t)))
399 return -EFAULT; 422 return -EFAULT;
400 sigdelsetmask(&newset, ~_BLOCKABLE); 423 sigdelsetmask(&newset, ~_BLOCKABLE);
@@ -440,12 +463,13 @@ struct irix5_siginfo {
440 } stuff; 463 } stuff;
441}; 464};
442 465
443asmlinkage int irix_sigpoll_sys(unsigned long *set, struct irix5_siginfo *info, 466asmlinkage int irix_sigpoll_sys(unsigned long __user *set,
444 struct timespec *tp) 467 struct irix5_siginfo __user *info, struct timespec __user *tp)
445{ 468{
446 long expire = MAX_SCHEDULE_TIMEOUT; 469 long expire = MAX_SCHEDULE_TIMEOUT;
447 sigset_t kset; 470 sigset_t kset;
448 int i, sig, error, timeo = 0; 471 int i, sig, error, timeo = 0;
472 struct timespec ktp;
449 473
450#ifdef DEBUG_SIG 474#ifdef DEBUG_SIG
451 printk("[%s:%d] irix_sigpoll_sys(%p,%p,%p)\n", 475 printk("[%s:%d] irix_sigpoll_sys(%p,%p,%p)\n",
@@ -456,14 +480,8 @@ asmlinkage int irix_sigpoll_sys(unsigned long *set, struct irix5_siginfo *info,
456 if (!set) 480 if (!set)
457 return -EINVAL; 481 return -EINVAL;
458 482
459 if (!access_ok(VERIFY_READ, set, sizeof(kset))) { 483 if (copy_from_user(&kset, set, sizeof(set)))
460 error = -EFAULT; 484 return -EFAULT;
461 goto out;
462 }
463
464 __copy_from_user(&kset, set, sizeof(set));
465 if (error)
466 goto out;
467 485
468 if (info && clear_user(info, sizeof(*info))) { 486 if (info && clear_user(info, sizeof(*info))) {
469 error = -EFAULT; 487 error = -EFAULT;
@@ -471,19 +489,21 @@ asmlinkage int irix_sigpoll_sys(unsigned long *set, struct irix5_siginfo *info,
471 } 489 }
472 490
473 if (tp) { 491 if (tp) {
474 if (!access_ok(VERIFY_READ, tp, sizeof(*tp))) 492 if (copy_from_user(&ktp, tp, sizeof(*tp)))
475 return -EFAULT; 493 return -EFAULT;
476 if (!tp->tv_sec && !tp->tv_nsec) { 494
477 error = -EINVAL; 495 if (!ktp.tv_sec && !ktp.tv_nsec)
478 goto out; 496 return -EINVAL;
479 } 497
480 expire = timespec_to_jiffies(tp) + (tp->tv_sec||tp->tv_nsec); 498 expire = timespec_to_jiffies(&ktp) +
499 (ktp.tv_sec || ktp.tv_nsec);
481 } 500 }
482 501
483 while(1) { 502 while(1) {
484 long tmp = 0; 503 long tmp = 0;
485 504
486 expire = schedule_timeout_interruptible(expire); 505 current->state = TASK_INTERRUPTIBLE;
506 expire = schedule_timeout(expire);
487 507
488 for (i=0; i<=4; i++) 508 for (i=0; i<=4; i++)
489 tmp |= (current->pending.signal.sig[i] & kset.sig[i]); 509 tmp |= (current->pending.signal.sig[i] & kset.sig[i]);
@@ -500,15 +520,14 @@ asmlinkage int irix_sigpoll_sys(unsigned long *set, struct irix5_siginfo *info,
500 if (timeo) 520 if (timeo)
501 return -EAGAIN; 521 return -EAGAIN;
502 522
503 for(sig = 1; i <= 65 /* IRIX_NSIG */; sig++) { 523 for (sig = 1; i <= 65 /* IRIX_NSIG */; sig++) {
504 if (sigismember (&kset, sig)) 524 if (sigismember (&kset, sig))
505 continue; 525 continue;
506 if (sigismember (&current->pending.signal, sig)) { 526 if (sigismember (&current->pending.signal, sig)) {
507 /* XXX need more than this... */ 527 /* XXX need more than this... */
508 if (info) 528 if (info)
509 info->sig = sig; 529 return copy_to_user(&info->sig, &sig, sizeof(sig));
510 error = 0; 530 return 0;
511 goto out;
512 } 531 }
513 } 532 }
514 533
@@ -534,8 +553,9 @@ extern int getrusage(struct task_struct *, int, struct rusage __user *);
534 553
535#define W_MASK (W_EXITED | W_TRAPPED | W_STOPPED | W_CONT | W_NOHANG) 554#define W_MASK (W_EXITED | W_TRAPPED | W_STOPPED | W_CONT | W_NOHANG)
536 555
537asmlinkage int irix_waitsys(int type, int pid, struct irix5_siginfo *info, 556asmlinkage int irix_waitsys(int type, int pid,
538 int options, struct rusage *ru) 557 struct irix5_siginfo __user *info, int options,
558 struct rusage __user *ru)
539{ 559{
540 int flag, retval; 560 int flag, retval;
541 DECLARE_WAITQUEUE(wait, current); 561 DECLARE_WAITQUEUE(wait, current);
@@ -543,28 +563,22 @@ asmlinkage int irix_waitsys(int type, int pid, struct irix5_siginfo *info,
543 struct task_struct *p; 563 struct task_struct *p;
544 struct list_head *_p; 564 struct list_head *_p;
545 565
546 if (!info) { 566 if (!info)
547 retval = -EINVAL; 567 return -EINVAL;
548 goto out; 568
549 } 569 if (!access_ok(VERIFY_WRITE, info, sizeof(*info)))
550 if (!access_ok(VERIFY_WRITE, info, sizeof(*info))) { 570 return -EFAULT;
551 retval = -EFAULT; 571
552 goto out; 572 if (ru)
553 } 573 if (!access_ok(VERIFY_WRITE, ru, sizeof(*ru)))
554 if (ru) { 574 return -EFAULT;
555 if (!access_ok(VERIFY_WRITE, ru, sizeof(*ru))) { 575
556 retval = -EFAULT; 576 if (options & ~W_MASK)
557 goto out; 577 return -EINVAL;
558 } 578
559 } 579 if (type != IRIX_P_PID && type != IRIX_P_PGID && type != IRIX_P_ALL)
560 if (options & ~(W_MASK)) { 580 return -EINVAL;
561 retval = -EINVAL; 581
562 goto out;
563 }
564 if (type != IRIX_P_PID && type != IRIX_P_PGID && type != IRIX_P_ALL) {
565 retval = -EINVAL;
566 goto out;
567 }
568 add_wait_queue(&current->signal->wait_chldexit, &wait); 582 add_wait_queue(&current->signal->wait_chldexit, &wait);
569repeat: 583repeat:
570 flag = 0; 584 flag = 0;
@@ -595,18 +609,20 @@ repeat:
595 add_parent(p, p->parent); 609 add_parent(p, p->parent);
596 write_unlock_irq(&tasklist_lock); 610 write_unlock_irq(&tasklist_lock);
597 retval = ru ? getrusage(p, RUSAGE_BOTH, ru) : 0; 611 retval = ru ? getrusage(p, RUSAGE_BOTH, ru) : 0;
598 if (!retval && ru) { 612 if (retval)
599 retval |= __put_user(SIGCHLD, &info->sig); 613 goto end_waitsys;
600 retval |= __put_user(0, &info->code); 614
601 retval |= __put_user(p->pid, &info->stuff.procinfo.pid); 615 retval = __put_user(SIGCHLD, &info->sig);
602 retval |= __put_user((p->exit_code >> 8) & 0xff, 616 retval |= __put_user(0, &info->code);
603 &info->stuff.procinfo.procdata.child.status); 617 retval |= __put_user(p->pid, &info->stuff.procinfo.pid);
604 retval |= __put_user(p->utime, &info->stuff.procinfo.procdata.child.utime); 618 retval |= __put_user((p->exit_code >> 8) & 0xff,
605 retval |= __put_user(p->stime, &info->stuff.procinfo.procdata.child.stime); 619 &info->stuff.procinfo.procdata.child.status);
606 } 620 retval |= __put_user(p->utime, &info->stuff.procinfo.procdata.child.utime);
607 if (!retval) { 621 retval |= __put_user(p->stime, &info->stuff.procinfo.procdata.child.stime);
608 p->exit_code = 0; 622 if (retval)
609 } 623 goto end_waitsys;
624
625 p->exit_code = 0;
610 goto end_waitsys; 626 goto end_waitsys;
611 627
612 case EXIT_ZOMBIE: 628 case EXIT_ZOMBIE:
@@ -614,16 +630,18 @@ repeat:
614 current->signal->cstime += p->stime + p->signal->cstime; 630 current->signal->cstime += p->stime + p->signal->cstime;
615 if (ru != NULL) 631 if (ru != NULL)
616 getrusage(p, RUSAGE_BOTH, ru); 632 getrusage(p, RUSAGE_BOTH, ru);
617 __put_user(SIGCHLD, &info->sig); 633 retval = __put_user(SIGCHLD, &info->sig);
618 __put_user(1, &info->code); /* CLD_EXITED */ 634 retval |= __put_user(1, &info->code); /* CLD_EXITED */
619 __put_user(p->pid, &info->stuff.procinfo.pid); 635 retval |= __put_user(p->pid, &info->stuff.procinfo.pid);
620 __put_user((p->exit_code >> 8) & 0xff, 636 retval |= __put_user((p->exit_code >> 8) & 0xff,
621 &info->stuff.procinfo.procdata.child.status); 637 &info->stuff.procinfo.procdata.child.status);
622 __put_user(p->utime, 638 retval |= __put_user(p->utime,
623 &info->stuff.procinfo.procdata.child.utime); 639 &info->stuff.procinfo.procdata.child.utime);
624 __put_user(p->stime, 640 retval |= __put_user(p->stime,
625 &info->stuff.procinfo.procdata.child.stime); 641 &info->stuff.procinfo.procdata.child.stime);
626 retval = 0; 642 if (retval)
643 return retval;
644
627 if (p->real_parent != p->parent) { 645 if (p->real_parent != p->parent) {
628 write_lock_irq(&tasklist_lock); 646 write_lock_irq(&tasklist_lock);
629 remove_parent(p); 647 remove_parent(p);
@@ -656,7 +674,6 @@ end_waitsys:
656 current->state = TASK_RUNNING; 674 current->state = TASK_RUNNING;
657 remove_wait_queue(&current->signal->wait_chldexit, &wait); 675 remove_wait_queue(&current->signal->wait_chldexit, &wait);
658 676
659out:
660 return retval; 677 return retval;
661} 678}
662 679
@@ -675,39 +692,39 @@ struct irix5_context {
675 692
676asmlinkage int irix_getcontext(struct pt_regs *regs) 693asmlinkage int irix_getcontext(struct pt_regs *regs)
677{ 694{
678 int i, base = 0; 695 int error, i, base = 0;
679 struct irix5_context *ctx; 696 struct irix5_context __user *ctx;
680 unsigned long flags; 697 unsigned long flags;
681 698
682 if (regs->regs[2] == 1000) 699 if (regs->regs[2] == 1000)
683 base = 1; 700 base = 1;
684 ctx = (struct irix5_context *) regs->regs[base + 4]; 701 ctx = (struct irix5_context __user *) regs->regs[base + 4];
685 702
686#ifdef DEBUG_SIG 703#ifdef DEBUG_SIG
687 printk("[%s:%d] irix_getcontext(%p)\n", 704 printk("[%s:%d] irix_getcontext(%p)\n",
688 current->comm, current->pid, ctx); 705 current->comm, current->pid, ctx);
689#endif 706#endif
690 707
691 if (!access_ok(VERIFY_WRITE, ctx, sizeof(*ctx))) 708 if (!access_ok(VERIFY_WRITE, ctx, sizeof(*ctx)));
692 return -EFAULT; 709 return -EFAULT;
693 710
694 __put_user(current->thread.irix_oldctx, &ctx->link); 711 error = __put_user(current->thread.irix_oldctx, &ctx->link);
695 712
696 __copy_to_user(&ctx->sigmask, &current->blocked, sizeof(irix_sigset_t)); 713 error |= __copy_to_user(&ctx->sigmask, &current->blocked, sizeof(irix_sigset_t)) ? -EFAULT : 0;
697 714
698 /* XXX Do sigstack stuff someday... */ 715 /* XXX Do sigstack stuff someday... */
699 __put_user(0, &ctx->stack.sp); 716 error |= __put_user(0, &ctx->stack.sp);
700 __put_user(0, &ctx->stack.size); 717 error |= __put_user(0, &ctx->stack.size);
701 __put_user(0, &ctx->stack.flags); 718 error |= __put_user(0, &ctx->stack.flags);
702 719
703 __put_user(0, &ctx->weird_graphics_thing); 720 error |= __put_user(0, &ctx->weird_graphics_thing);
704 __put_user(0, &ctx->regs[0]); 721 error |= __put_user(0, &ctx->regs[0]);
705 for (i = 1; i < 32; i++) 722 for (i = 1; i < 32; i++)
706 __put_user(regs->regs[i], &ctx->regs[i]); 723 error |= __put_user(regs->regs[i], &ctx->regs[i]);
707 __put_user(regs->lo, &ctx->regs[32]); 724 error |= __put_user(regs->lo, &ctx->regs[32]);
708 __put_user(regs->hi, &ctx->regs[33]); 725 error |= __put_user(regs->hi, &ctx->regs[33]);
709 __put_user(regs->cp0_cause, &ctx->regs[34]); 726 error |= __put_user(regs->cp0_cause, &ctx->regs[34]);
710 __put_user(regs->cp0_epc, &ctx->regs[35]); 727 error |= __put_user(regs->cp0_epc, &ctx->regs[35]);
711 728
712 flags = 0x0f; 729 flags = 0x0f;
713 if (!used_math()) { 730 if (!used_math()) {
@@ -716,119 +733,124 @@ asmlinkage int irix_getcontext(struct pt_regs *regs)
716 /* XXX wheee... */ 733 /* XXX wheee... */
717 printk("Wheee, no code for saving IRIX FPU context yet.\n"); 734 printk("Wheee, no code for saving IRIX FPU context yet.\n");
718 } 735 }
719 __put_user(flags, &ctx->flags); 736 error |= __put_user(flags, &ctx->flags);
720 737
721 return 0; 738 return error;
722} 739}
723 740
724asmlinkage unsigned long irix_setcontext(struct pt_regs *regs) 741asmlinkage void irix_setcontext(struct pt_regs *regs)
725{ 742{
726 int error, base = 0; 743 struct irix5_context __user *ctx;
727 struct irix5_context *ctx; 744 int err, base = 0;
745 u32 flags;
728 746
729 if(regs->regs[2] == 1000) 747 if (regs->regs[2] == 1000)
730 base = 1; 748 base = 1;
731 ctx = (struct irix5_context *) regs->regs[base + 4]; 749 ctx = (struct irix5_context __user *) regs->regs[base + 4];
732 750
733#ifdef DEBUG_SIG 751#ifdef DEBUG_SIG
734 printk("[%s:%d] irix_setcontext(%p)\n", 752 printk("[%s:%d] irix_setcontext(%p)\n",
735 current->comm, current->pid, ctx); 753 current->comm, current->pid, ctx);
736#endif 754#endif
737 755
738 if (!access_ok(VERIFY_READ, ctx, sizeof(*ctx))) { 756 if (!access_ok(VERIFY_READ, ctx, sizeof(*ctx)))
739 error = -EFAULT; 757 goto segv_and_exit;
740 goto out;
741 }
742 758
743 if (ctx->flags & 0x02) { 759 err = __get_user(flags, &ctx->flags);
760 if (flags & 0x02) {
744 /* XXX sigstack garbage, todo... */ 761 /* XXX sigstack garbage, todo... */
745 printk("Wheee, cannot do sigstack stuff in setcontext\n"); 762 printk("Wheee, cannot do sigstack stuff in setcontext\n");
746 } 763 }
747 764
748 if (ctx->flags & 0x04) { 765 if (flags & 0x04) {
749 int i; 766 int i;
750 767
751 /* XXX extra control block stuff... todo... */ 768 /* XXX extra control block stuff... todo... */
752 for(i = 1; i < 32; i++) 769 for (i = 1; i < 32; i++)
753 regs->regs[i] = ctx->regs[i]; 770 err |= __get_user(regs->regs[i], &ctx->regs[i]);
754 regs->lo = ctx->regs[32]; 771 err |= __get_user(regs->lo, &ctx->regs[32]);
755 regs->hi = ctx->regs[33]; 772 err |= __get_user(regs->hi, &ctx->regs[33]);
756 regs->cp0_epc = ctx->regs[35]; 773 err |= __get_user(regs->cp0_epc, &ctx->regs[35]);
757 } 774 }
758 775
759 if (ctx->flags & 0x08) { 776 if (flags & 0x08)
760 /* XXX fpu context, blah... */ 777 /* XXX fpu context, blah... */
761 printk("Wheee, cannot restore FPU context yet...\n"); 778 printk(KERN_ERR "Wheee, cannot restore FPU context yet...\n");
762 }
763 current->thread.irix_oldctx = ctx->link;
764 error = regs->regs[2];
765 779
766out: 780 err |= __get_user(current->thread.irix_oldctx, &ctx->link);
767 return error; 781 if (err)
782 goto segv_and_exit;
783
784 /*
785 * Don't let your children do this ...
786 */
787 if (current_thread_info()->flags & TIF_SYSCALL_TRACE)
788 do_syscall_trace(regs, 1);
789 __asm__ __volatile__(
790 "move\t$29,%0\n\t"
791 "j\tsyscall_exit"
792 :/* no outputs */
793 :"r" (&regs));
794 /* Unreached */
795
796segv_and_exit:
797 force_sigsegv(SIGSEGV, current);
768} 798}
769 799
770struct irix_sigstack { unsigned long sp; int status; }; 800struct irix_sigstack {
801 unsigned long sp;
802 int status;
803};
771 804
772asmlinkage int irix_sigstack(struct irix_sigstack *new, struct irix_sigstack *old) 805asmlinkage int irix_sigstack(struct irix_sigstack __user *new,
806 struct irix_sigstack __user *old)
773{ 807{
774 int error = -EFAULT;
775
776#ifdef DEBUG_SIG 808#ifdef DEBUG_SIG
777 printk("[%s:%d] irix_sigstack(%p,%p)\n", 809 printk("[%s:%d] irix_sigstack(%p,%p)\n",
778 current->comm, current->pid, new, old); 810 current->comm, current->pid, new, old);
779#endif 811#endif
780 if(new) { 812 if (new) {
781 if (!access_ok(VERIFY_READ, new, sizeof(*new))) 813 if (!access_ok(VERIFY_READ, new, sizeof(*new)))
782 goto out; 814 return -EFAULT;
783 } 815 }
784 816
785 if(old) { 817 if (old) {
786 if (!access_ok(VERIFY_WRITE, old, sizeof(*old))) 818 if (!access_ok(VERIFY_WRITE, old, sizeof(*old)))
787 goto out; 819 return -EFAULT;
788 } 820 }
789 error = 0;
790 821
791out: 822 return 0;
792 return error;
793} 823}
794 824
795struct irix_sigaltstack { unsigned long sp; int size; int status; }; 825struct irix_sigaltstack { unsigned long sp; int size; int status; };
796 826
797asmlinkage int irix_sigaltstack(struct irix_sigaltstack *new, 827asmlinkage int irix_sigaltstack(struct irix_sigaltstack __user *new,
798 struct irix_sigaltstack *old) 828 struct irix_sigaltstack __user *old)
799{ 829{
800 int error = -EFAULT;
801
802#ifdef DEBUG_SIG 830#ifdef DEBUG_SIG
803 printk("[%s:%d] irix_sigaltstack(%p,%p)\n", 831 printk("[%s:%d] irix_sigaltstack(%p,%p)\n",
804 current->comm, current->pid, new, old); 832 current->comm, current->pid, new, old);
805#endif 833#endif
806 if (new) { 834 if (new)
807 if (!access_ok(VERIFY_READ, new, sizeof(*new))) 835 if (!access_ok(VERIFY_READ, new, sizeof(*new)))
808 goto out; 836 return -EFAULT;
809 }
810 837
811 if (old) { 838 if (old) {
812 if (!access_ok(VERIFY_WRITE, old, sizeof(*old))) 839 if (!access_ok(VERIFY_WRITE, old, sizeof(*old)))
813 goto out; 840 return -EFAULT;
814 } 841 }
815 error = 0;
816
817out:
818 error = 0;
819 842
820 return error; 843 return 0;
821} 844}
822 845
823struct irix_procset { 846struct irix_procset {
824 int cmd, ltype, lid, rtype, rid; 847 int cmd, ltype, lid, rtype, rid;
825}; 848};
826 849
827asmlinkage int irix_sigsendset(struct irix_procset *pset, int sig) 850asmlinkage int irix_sigsendset(struct irix_procset __user *pset, int sig)
828{ 851{
829 if (!access_ok(VERIFY_READ, pset, sizeof(*pset))) 852 if (!access_ok(VERIFY_READ, pset, sizeof(*pset)))
830 return -EFAULT; 853 return -EFAULT;
831
832#ifdef DEBUG_SIG 854#ifdef DEBUG_SIG
833 printk("[%s:%d] irix_sigsendset([%d,%d,%d,%d,%d],%d)\n", 855 printk("[%s:%d] irix_sigsendset([%d,%d,%d,%d,%d],%d)\n",
834 current->comm, current->pid, 856 current->comm, current->pid,
diff --git a/arch/mips/kernel/irq-msc01.c b/arch/mips/kernel/irq-msc01.c
index 43c00ac0b88d..3f653c7cfbf3 100644
--- a/arch/mips/kernel/irq-msc01.c
+++ b/arch/mips/kernel/irq-msc01.c
@@ -74,7 +74,7 @@ static void disable_msc_irq(unsigned int irq)
74static void level_mask_and_ack_msc_irq(unsigned int irq) 74static void level_mask_and_ack_msc_irq(unsigned int irq)
75{ 75{
76 mask_msc_irq(irq); 76 mask_msc_irq(irq);
77 if (!cpu_has_ei) 77 if (!cpu_has_veic)
78 MSCIC_WRITE(MSC01_IC_EOI, 0); 78 MSCIC_WRITE(MSC01_IC_EOI, 0);
79} 79}
80 80
@@ -84,7 +84,7 @@ static void level_mask_and_ack_msc_irq(unsigned int irq)
84static void edge_mask_and_ack_msc_irq(unsigned int irq) 84static void edge_mask_and_ack_msc_irq(unsigned int irq)
85{ 85{
86 mask_msc_irq(irq); 86 mask_msc_irq(irq);
87 if (!cpu_has_ei) 87 if (!cpu_has_veic)
88 MSCIC_WRITE(MSC01_IC_EOI, 0); 88 MSCIC_WRITE(MSC01_IC_EOI, 0);
89 else { 89 else {
90 u32 r; 90 u32 r;
@@ -129,25 +129,23 @@ msc_bind_eic_interrupt (unsigned int irq, unsigned int set)
129#define shutdown_msc_irq disable_msc_irq 129#define shutdown_msc_irq disable_msc_irq
130 130
131struct hw_interrupt_type msc_levelirq_type = { 131struct hw_interrupt_type msc_levelirq_type = {
132 "SOC-it-Level", 132 .typename = "SOC-it-Level",
133 startup_msc_irq, 133 .startup = startup_msc_irq,
134 shutdown_msc_irq, 134 .shutdown = shutdown_msc_irq,
135 enable_msc_irq, 135 .enable = enable_msc_irq,
136 disable_msc_irq, 136 .disable = disable_msc_irq,
137 level_mask_and_ack_msc_irq, 137 .ack = level_mask_and_ack_msc_irq,
138 end_msc_irq, 138 .end = end_msc_irq,
139 NULL
140}; 139};
141 140
142struct hw_interrupt_type msc_edgeirq_type = { 141struct hw_interrupt_type msc_edgeirq_type = {
143 "SOC-it-Edge", 142 .typename = "SOC-it-Edge",
144 startup_msc_irq, 143 .startup =startup_msc_irq,
145 shutdown_msc_irq, 144 .shutdown = shutdown_msc_irq,
146 enable_msc_irq, 145 .enable = enable_msc_irq,
147 disable_msc_irq, 146 .disable = disable_msc_irq,
148 edge_mask_and_ack_msc_irq, 147 .ack = edge_mask_and_ack_msc_irq,
149 end_msc_irq, 148 .end = end_msc_irq,
150 NULL
151}; 149};
152 150
153 151
@@ -168,14 +166,14 @@ void __init init_msc_irqs(unsigned int base, msc_irqmap_t *imp, int nirq)
168 switch (imp->im_type) { 166 switch (imp->im_type) {
169 case MSC01_IRQ_EDGE: 167 case MSC01_IRQ_EDGE:
170 irq_desc[base+n].handler = &msc_edgeirq_type; 168 irq_desc[base+n].handler = &msc_edgeirq_type;
171 if (cpu_has_ei) 169 if (cpu_has_veic)
172 MSCIC_WRITE(MSC01_IC_SUP+n*8, MSC01_IC_SUP_EDGE_BIT); 170 MSCIC_WRITE(MSC01_IC_SUP+n*8, MSC01_IC_SUP_EDGE_BIT);
173 else 171 else
174 MSCIC_WRITE(MSC01_IC_SUP+n*8, MSC01_IC_SUP_EDGE_BIT | imp->im_lvl); 172 MSCIC_WRITE(MSC01_IC_SUP+n*8, MSC01_IC_SUP_EDGE_BIT | imp->im_lvl);
175 break; 173 break;
176 case MSC01_IRQ_LEVEL: 174 case MSC01_IRQ_LEVEL:
177 irq_desc[base+n].handler = &msc_levelirq_type; 175 irq_desc[base+n].handler = &msc_levelirq_type;
178 if (cpu_has_ei) 176 if (cpu_has_veic)
179 MSCIC_WRITE(MSC01_IC_SUP+n*8, 0); 177 MSCIC_WRITE(MSC01_IC_SUP+n*8, 0);
180 else 178 else
181 MSCIC_WRITE(MSC01_IC_SUP+n*8, imp->im_lvl); 179 MSCIC_WRITE(MSC01_IC_SUP+n*8, imp->im_lvl);
diff --git a/arch/mips/kernel/irq-mv6434x.c b/arch/mips/kernel/irq-mv6434x.c
index 088bbbc869e6..0ac067f45cf5 100644
--- a/arch/mips/kernel/irq-mv6434x.c
+++ b/arch/mips/kernel/irq-mv6434x.c
@@ -135,14 +135,13 @@ void ll_mv64340_irq(struct pt_regs *regs)
135#define shutdown_mv64340_irq disable_mv64340_irq 135#define shutdown_mv64340_irq disable_mv64340_irq
136 136
137struct hw_interrupt_type mv64340_irq_type = { 137struct hw_interrupt_type mv64340_irq_type = {
138 "MV-64340", 138 .typename = "MV-64340",
139 startup_mv64340_irq, 139 .startup = startup_mv64340_irq,
140 shutdown_mv64340_irq, 140 .shutdown = shutdown_mv64340_irq,
141 enable_mv64340_irq, 141 .enable = enable_mv64340_irq,
142 disable_mv64340_irq, 142 .disable = disable_mv64340_irq,
143 mask_and_ack_mv64340_irq, 143 .ack = mask_and_ack_mv64340_irq,
144 end_mv64340_irq, 144 .end = end_mv64340_irq,
145 NULL
146}; 145};
147 146
148void __init mv64340_irq_init(unsigned int base) 147void __init mv64340_irq_init(unsigned int base)
diff --git a/arch/mips/kernel/irq-rm7000.c b/arch/mips/kernel/irq-rm7000.c
index f5d779fd0355..0b130c5ac5d9 100644
--- a/arch/mips/kernel/irq-rm7000.c
+++ b/arch/mips/kernel/irq-rm7000.c
@@ -72,13 +72,13 @@ static void rm7k_cpu_irq_end(unsigned int irq)
72} 72}
73 73
74static hw_irq_controller rm7k_irq_controller = { 74static hw_irq_controller rm7k_irq_controller = {
75 "RM7000", 75 .typename = "RM7000",
76 rm7k_cpu_irq_startup, 76 .startup = rm7k_cpu_irq_startup,
77 rm7k_cpu_irq_shutdown, 77 .shutdown = rm7k_cpu_irq_shutdown,
78 rm7k_cpu_irq_enable, 78 .enable = rm7k_cpu_irq_enable,
79 rm7k_cpu_irq_disable, 79 .disable = rm7k_cpu_irq_disable,
80 rm7k_cpu_irq_ack, 80 .ack = rm7k_cpu_irq_ack,
81 rm7k_cpu_irq_end, 81 .end = rm7k_cpu_irq_end,
82}; 82};
83 83
84void __init rm7k_cpu_irq_init(int base) 84void __init rm7k_cpu_irq_init(int base)
diff --git a/arch/mips/kernel/irq-rm9000.c b/arch/mips/kernel/irq-rm9000.c
index bdd130296256..9b5f20c32acb 100644
--- a/arch/mips/kernel/irq-rm9000.c
+++ b/arch/mips/kernel/irq-rm9000.c
@@ -106,23 +106,23 @@ static void rm9k_cpu_irq_end(unsigned int irq)
106} 106}
107 107
108static hw_irq_controller rm9k_irq_controller = { 108static hw_irq_controller rm9k_irq_controller = {
109 "RM9000", 109 .typename = "RM9000",
110 rm9k_cpu_irq_startup, 110 .startup = rm9k_cpu_irq_startup,
111 rm9k_cpu_irq_shutdown, 111 .shutdown = rm9k_cpu_irq_shutdown,
112 rm9k_cpu_irq_enable, 112 .enable = rm9k_cpu_irq_enable,
113 rm9k_cpu_irq_disable, 113 .disable = rm9k_cpu_irq_disable,
114 rm9k_cpu_irq_ack, 114 .ack = rm9k_cpu_irq_ack,
115 rm9k_cpu_irq_end, 115 .end = rm9k_cpu_irq_end,
116}; 116};
117 117
118static hw_irq_controller rm9k_perfcounter_irq = { 118static hw_irq_controller rm9k_perfcounter_irq = {
119 "RM9000", 119 .typename = "RM9000",
120 rm9k_perfcounter_irq_startup, 120 .startup = rm9k_perfcounter_irq_startup,
121 rm9k_perfcounter_irq_shutdown, 121 .shutdown = rm9k_perfcounter_irq_shutdown,
122 rm9k_cpu_irq_enable, 122 .enable = rm9k_cpu_irq_enable,
123 rm9k_cpu_irq_disable, 123 .disable = rm9k_cpu_irq_disable,
124 rm9k_cpu_irq_ack, 124 .ack = rm9k_cpu_irq_ack,
125 rm9k_cpu_irq_end, 125 .end = rm9k_cpu_irq_end,
126}; 126};
127 127
128unsigned int rm9000_perfcount_irq; 128unsigned int rm9000_perfcount_irq;
diff --git a/arch/mips/kernel/irq_cpu.c b/arch/mips/kernel/irq_cpu.c
index 2b936cf1ef70..5db67e31ec1a 100644
--- a/arch/mips/kernel/irq_cpu.c
+++ b/arch/mips/kernel/irq_cpu.c
@@ -3,6 +3,8 @@
3 * Author: Jun Sun, jsun@mvista.com or jsun@junsun.net 3 * Author: Jun Sun, jsun@mvista.com or jsun@junsun.net
4 * 4 *
5 * Copyright (C) 2001 Ralf Baechle 5 * Copyright (C) 2001 Ralf Baechle
6 * Copyright (C) 2005 MIPS Technologies, Inc. All rights reserved.
7 * Author: Maciej W. Rozycki <macro@mips.com>
6 * 8 *
7 * This file define the irq handler for MIPS CPU interrupts. 9 * This file define the irq handler for MIPS CPU interrupts.
8 * 10 *
@@ -31,19 +33,21 @@
31 33
32#include <asm/irq_cpu.h> 34#include <asm/irq_cpu.h>
33#include <asm/mipsregs.h> 35#include <asm/mipsregs.h>
36#include <asm/mipsmtregs.h>
34#include <asm/system.h> 37#include <asm/system.h>
35 38
36static int mips_cpu_irq_base; 39static int mips_cpu_irq_base;
37 40
38static inline void unmask_mips_irq(unsigned int irq) 41static inline void unmask_mips_irq(unsigned int irq)
39{ 42{
40 clear_c0_cause(0x100 << (irq - mips_cpu_irq_base));
41 set_c0_status(0x100 << (irq - mips_cpu_irq_base)); 43 set_c0_status(0x100 << (irq - mips_cpu_irq_base));
44 irq_enable_hazard();
42} 45}
43 46
44static inline void mask_mips_irq(unsigned int irq) 47static inline void mask_mips_irq(unsigned int irq)
45{ 48{
46 clear_c0_status(0x100 << (irq - mips_cpu_irq_base)); 49 clear_c0_status(0x100 << (irq - mips_cpu_irq_base));
50 irq_disable_hazard();
47} 51}
48 52
49static inline void mips_cpu_irq_enable(unsigned int irq) 53static inline void mips_cpu_irq_enable(unsigned int irq)
@@ -52,6 +56,7 @@ static inline void mips_cpu_irq_enable(unsigned int irq)
52 56
53 local_irq_save(flags); 57 local_irq_save(flags);
54 unmask_mips_irq(irq); 58 unmask_mips_irq(irq);
59 back_to_back_c0_hazard();
55 local_irq_restore(flags); 60 local_irq_restore(flags);
56} 61}
57 62
@@ -61,6 +66,7 @@ static void mips_cpu_irq_disable(unsigned int irq)
61 66
62 local_irq_save(flags); 67 local_irq_save(flags);
63 mask_mips_irq(irq); 68 mask_mips_irq(irq);
69 back_to_back_c0_hazard();
64 local_irq_restore(flags); 70 local_irq_restore(flags);
65} 71}
66 72
@@ -71,7 +77,7 @@ static unsigned int mips_cpu_irq_startup(unsigned int irq)
71 return 0; 77 return 0;
72} 78}
73 79
74#define mips_cpu_irq_shutdown mips_cpu_irq_disable 80#define mips_cpu_irq_shutdown mips_cpu_irq_disable
75 81
76/* 82/*
77 * While we ack the interrupt interrupts are disabled and thus we don't need 83 * While we ack the interrupt interrupts are disabled and thus we don't need
@@ -79,9 +85,6 @@ static unsigned int mips_cpu_irq_startup(unsigned int irq)
79 */ 85 */
80static void mips_cpu_irq_ack(unsigned int irq) 86static void mips_cpu_irq_ack(unsigned int irq)
81{ 87{
82 /* Only necessary for soft interrupts */
83 clear_c0_cause(0x100 << (irq - mips_cpu_irq_base));
84
85 mask_mips_irq(irq); 88 mask_mips_irq(irq);
86} 89}
87 90
@@ -92,22 +95,82 @@ static void mips_cpu_irq_end(unsigned int irq)
92} 95}
93 96
94static hw_irq_controller mips_cpu_irq_controller = { 97static hw_irq_controller mips_cpu_irq_controller = {
95 "MIPS", 98 .typename = "MIPS",
96 mips_cpu_irq_startup, 99 .startup = mips_cpu_irq_startup,
97 mips_cpu_irq_shutdown, 100 .shutdown = mips_cpu_irq_shutdown,
98 mips_cpu_irq_enable, 101 .enable = mips_cpu_irq_enable,
99 mips_cpu_irq_disable, 102 .disable = mips_cpu_irq_disable,
100 mips_cpu_irq_ack, 103 .ack = mips_cpu_irq_ack,
101 mips_cpu_irq_end, 104 .end = mips_cpu_irq_end,
102 NULL /* no affinity stuff for UP */
103}; 105};
104 106
107/*
108 * Basically the same as above but taking care of all the MT stuff
109 */
110
111#define unmask_mips_mt_irq unmask_mips_irq
112#define mask_mips_mt_irq mask_mips_irq
113#define mips_mt_cpu_irq_enable mips_cpu_irq_enable
114#define mips_mt_cpu_irq_disable mips_cpu_irq_disable
115
116static unsigned int mips_mt_cpu_irq_startup(unsigned int irq)
117{
118 unsigned int vpflags = dvpe();
119
120 clear_c0_cause(0x100 << (irq - mips_cpu_irq_base));
121 evpe(vpflags);
122 mips_mt_cpu_irq_enable(irq);
123
124 return 0;
125}
126
127#define mips_mt_cpu_irq_shutdown mips_mt_cpu_irq_disable
128
129/*
130 * While we ack the interrupt interrupts are disabled and thus we don't need
131 * to deal with concurrency issues. Same for mips_cpu_irq_end.
132 */
133static void mips_mt_cpu_irq_ack(unsigned int irq)
134{
135 unsigned int vpflags = dvpe();
136 clear_c0_cause(0x100 << (irq - mips_cpu_irq_base));
137 evpe(vpflags);
138 mask_mips_mt_irq(irq);
139}
140
141#define mips_mt_cpu_irq_end mips_cpu_irq_end
142
143static hw_irq_controller mips_mt_cpu_irq_controller = {
144 .typename = "MIPS",
145 .startup = mips_mt_cpu_irq_startup,
146 .shutdown = mips_mt_cpu_irq_shutdown,
147 .enable = mips_mt_cpu_irq_enable,
148 .disable = mips_mt_cpu_irq_disable,
149 .ack = mips_mt_cpu_irq_ack,
150 .end = mips_mt_cpu_irq_end,
151};
105 152
106void __init mips_cpu_irq_init(int irq_base) 153void __init mips_cpu_irq_init(int irq_base)
107{ 154{
108 int i; 155 int i;
109 156
110 for (i = irq_base; i < irq_base + 8; i++) { 157 /* Mask interrupts. */
158 clear_c0_status(ST0_IM);
159 clear_c0_cause(CAUSEF_IP);
160
161 /*
162 * Only MT is using the software interrupts currently, so we just
163 * leave them uninitialized for other processors.
164 */
165 if (cpu_has_mipsmt)
166 for (i = irq_base; i < irq_base + 2; i++) {
167 irq_desc[i].status = IRQ_DISABLED;
168 irq_desc[i].action = NULL;
169 irq_desc[i].depth = 1;
170 irq_desc[i].handler = &mips_mt_cpu_irq_controller;
171 }
172
173 for (i = irq_base + 2; i < irq_base + 8; i++) {
111 irq_desc[i].status = IRQ_DISABLED; 174 irq_desc[i].status = IRQ_DISABLED;
112 irq_desc[i].action = NULL; 175 irq_desc[i].action = NULL;
113 irq_desc[i].depth = 1; 176 irq_desc[i].depth = 1;
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c
index ece4564919d8..330cf84d21fe 100644
--- a/arch/mips/kernel/linux32.c
+++ b/arch/mips/kernel/linux32.c
@@ -215,81 +215,32 @@ sys32_readdir(unsigned int fd, void * dirent32, unsigned int count)
215 return(n); 215 return(n);
216} 216}
217 217
218struct rusage32 { 218asmlinkage int
219 struct compat_timeval ru_utime; 219sys32_waitpid(compat_pid_t pid, unsigned int *stat_addr, int options)
220 struct compat_timeval ru_stime;
221 int ru_maxrss;
222 int ru_ixrss;
223 int ru_idrss;
224 int ru_isrss;
225 int ru_minflt;
226 int ru_majflt;
227 int ru_nswap;
228 int ru_inblock;
229 int ru_oublock;
230 int ru_msgsnd;
231 int ru_msgrcv;
232 int ru_nsignals;
233 int ru_nvcsw;
234 int ru_nivcsw;
235};
236
237static int
238put_rusage (struct rusage32 *ru, struct rusage *r)
239{ 220{
240 int err; 221 return compat_sys_wait4(pid, stat_addr, options, NULL);
241
242 if (!access_ok(VERIFY_WRITE, ru, sizeof *ru))
243 return -EFAULT;
244
245 err = __put_user (r->ru_utime.tv_sec, &ru->ru_utime.tv_sec);
246 err |= __put_user (r->ru_utime.tv_usec, &ru->ru_utime.tv_usec);
247 err |= __put_user (r->ru_stime.tv_sec, &ru->ru_stime.tv_sec);
248 err |= __put_user (r->ru_stime.tv_usec, &ru->ru_stime.tv_usec);
249 err |= __put_user (r->ru_maxrss, &ru->ru_maxrss);
250 err |= __put_user (r->ru_ixrss, &ru->ru_ixrss);
251 err |= __put_user (r->ru_idrss, &ru->ru_idrss);
252 err |= __put_user (r->ru_isrss, &ru->ru_isrss);
253 err |= __put_user (r->ru_minflt, &ru->ru_minflt);
254 err |= __put_user (r->ru_majflt, &ru->ru_majflt);
255 err |= __put_user (r->ru_nswap, &ru->ru_nswap);
256 err |= __put_user (r->ru_inblock, &ru->ru_inblock);
257 err |= __put_user (r->ru_oublock, &ru->ru_oublock);
258 err |= __put_user (r->ru_msgsnd, &ru->ru_msgsnd);
259 err |= __put_user (r->ru_msgrcv, &ru->ru_msgrcv);
260 err |= __put_user (r->ru_nsignals, &ru->ru_nsignals);
261 err |= __put_user (r->ru_nvcsw, &ru->ru_nvcsw);
262 err |= __put_user (r->ru_nivcsw, &ru->ru_nivcsw);
263
264 return err;
265} 222}
266 223
267asmlinkage int 224asmlinkage long
268sys32_wait4(compat_pid_t pid, unsigned int * stat_addr, int options, 225sysn32_waitid(int which, compat_pid_t pid,
269 struct rusage32 * ru) 226 siginfo_t __user *uinfo, int options,
227 struct compat_rusage __user *uru)
270{ 228{
271 if (!ru) 229 struct rusage ru;
272 return sys_wait4(pid, stat_addr, options, NULL); 230 long ret;
273 else { 231 mm_segment_t old_fs = get_fs();
274 struct rusage r;
275 int ret;
276 unsigned int status;
277 mm_segment_t old_fs = get_fs();
278 232
279 set_fs(KERNEL_DS); 233 set_fs (KERNEL_DS);
280 ret = sys_wait4(pid, stat_addr ? &status : NULL, options, &r); 234 ret = sys_waitid(which, pid, uinfo, options,
281 set_fs(old_fs); 235 uru ? (struct rusage __user *) &ru : NULL);
282 if (put_rusage (ru, &r)) return -EFAULT; 236 set_fs (old_fs);
283 if (stat_addr && put_user (status, stat_addr)) 237
284 return -EFAULT; 238 if (ret < 0 || uinfo->si_signo == 0)
285 return ret; 239 return ret;
286 }
287}
288 240
289asmlinkage int 241 if (uru)
290sys32_waitpid(compat_pid_t pid, unsigned int *stat_addr, int options) 242 ret = put_compat_rusage(&ru, uru);
291{ 243 return ret;
292 return sys32_wait4(pid, stat_addr, options, NULL);
293} 244}
294 245
295struct sysinfo32 { 246struct sysinfo32 {
@@ -1467,3 +1418,80 @@ asmlinkage long sys32_socketcall(int call, unsigned int *args32)
1467 } 1418 }
1468 return err; 1419 return err;
1469} 1420}
1421
1422struct sigevent32 {
1423 u32 sigev_value;
1424 u32 sigev_signo;
1425 u32 sigev_notify;
1426 u32 payload[(64 / 4) - 3];
1427};
1428
1429extern asmlinkage long
1430sys_timer_create(clockid_t which_clock,
1431 struct sigevent __user *timer_event_spec,
1432 timer_t __user * created_timer_id);
1433
1434long
1435sys32_timer_create(u32 clock, struct sigevent32 __user *se32, timer_t __user *timer_id)
1436{
1437 struct sigevent __user *p = NULL;
1438 if (se32) {
1439 struct sigevent se;
1440 p = compat_alloc_user_space(sizeof(struct sigevent));
1441 memset(&se, 0, sizeof(struct sigevent));
1442 if (get_user(se.sigev_value.sival_int, &se32->sigev_value) ||
1443 __get_user(se.sigev_signo, &se32->sigev_signo) ||
1444 __get_user(se.sigev_notify, &se32->sigev_notify) ||
1445 __copy_from_user(&se._sigev_un._pad, &se32->payload,
1446 sizeof(se32->payload)) ||
1447 copy_to_user(p, &se, sizeof(se)))
1448 return -EFAULT;
1449 }
1450 return sys_timer_create(clock, p, timer_id);
1451}
1452
1453asmlinkage long
1454sysn32_rt_sigtimedwait(const sigset_t __user *uthese,
1455 siginfo_t __user *uinfo,
1456 const struct compat_timespec __user *uts32,
1457 size_t sigsetsize)
1458{
1459 struct timespec __user *uts = NULL;
1460
1461 if (uts32) {
1462 struct timespec ts;
1463 uts = compat_alloc_user_space(sizeof(struct timespec));
1464 if (get_user(ts.tv_sec, &uts32->tv_sec) ||
1465 get_user(ts.tv_nsec, &uts32->tv_nsec) ||
1466 copy_to_user (uts, &ts, sizeof (ts)))
1467 return -EFAULT;
1468 }
1469 return sys_rt_sigtimedwait(uthese, uinfo, uts, sigsetsize);
1470}
1471
1472save_static_function(sys32_clone);
1473__attribute_used__ noinline static int
1474_sys32_clone(nabi_no_regargs struct pt_regs regs)
1475{
1476 unsigned long clone_flags;
1477 unsigned long newsp;
1478 int __user *parent_tidptr, *child_tidptr;
1479
1480 clone_flags = regs.regs[4];
1481 newsp = regs.regs[5];
1482 if (!newsp)
1483 newsp = regs.regs[29];
1484 parent_tidptr = (int *) regs.regs[6];
1485
1486 /* Use __dummy4 instead of getting it off the stack, so that
1487 syscall() works. */
1488 child_tidptr = (int __user *) __dummy4;
1489 return do_fork(clone_flags, newsp, &regs, 0,
1490 parent_tidptr, child_tidptr);
1491}
1492
1493extern asmlinkage void sys_set_thread_area(u32 addr);
1494asmlinkage void sys32_set_thread_area(u32 addr)
1495{
1496 sys_set_thread_area(AA(addr));
1497}
diff --git a/arch/mips/kernel/module-elf32.c b/arch/mips/kernel/module-elf32.c
deleted file mode 100644
index ffd216d6d6dc..000000000000
--- a/arch/mips/kernel/module-elf32.c
+++ /dev/null
@@ -1,250 +0,0 @@
1/*
2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation; either version 2 of the License, or
5 * (at your option) any later version.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 * You should have received a copy of the GNU General Public License
13 * along with this program; if not, write to the Free Software
14 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15 *
16 * Copyright (C) 2001 Rusty Russell.
17 * Copyright (C) 2003, 2004 Ralf Baechle (ralf@linux-mips.org)
18 */
19
20#undef DEBUG
21
22#include <linux/moduleloader.h>
23#include <linux/elf.h>
24#include <linux/vmalloc.h>
25#include <linux/slab.h>
26#include <linux/fs.h>
27#include <linux/string.h>
28#include <linux/kernel.h>
29
30struct mips_hi16 {
31 struct mips_hi16 *next;
32 Elf32_Addr *addr;
33 Elf32_Addr value;
34};
35
36static struct mips_hi16 *mips_hi16_list;
37
38void *module_alloc(unsigned long size)
39{
40 if (size == 0)
41 return NULL;
42 return vmalloc(size);
43}
44
45
46/* Free memory returned from module_alloc */
47void module_free(struct module *mod, void *module_region)
48{
49 vfree(module_region);
50 /* FIXME: If module_region == mod->init_region, trim exception
51 table entries. */
52}
53
54int module_frob_arch_sections(Elf_Ehdr *hdr,
55 Elf_Shdr *sechdrs,
56 char *secstrings,
57 struct module *mod)
58{
59 return 0;
60}
61
62static int apply_r_mips_none(struct module *me, uint32_t *location,
63 Elf32_Addr v)
64{
65 return 0;
66}
67
68static int apply_r_mips_32(struct module *me, uint32_t *location,
69 Elf32_Addr v)
70{
71 *location += v;
72
73 return 0;
74}
75
76static int apply_r_mips_26(struct module *me, uint32_t *location,
77 Elf32_Addr v)
78{
79 if (v % 4) {
80 printk(KERN_ERR "module %s: dangerous relocation\n", me->name);
81 return -ENOEXEC;
82 }
83
84 if ((v & 0xf0000000) != (((unsigned long)location + 4) & 0xf0000000)) {
85 printk(KERN_ERR
86 "module %s: relocation overflow\n",
87 me->name);
88 return -ENOEXEC;
89 }
90
91 *location = (*location & ~0x03ffffff) |
92 ((*location + (v >> 2)) & 0x03ffffff);
93
94 return 0;
95}
96
97static int apply_r_mips_hi16(struct module *me, uint32_t *location,
98 Elf32_Addr v)
99{
100 struct mips_hi16 *n;
101
102 /*
103 * We cannot relocate this one now because we don't know the value of
104 * the carry we need to add. Save the information, and let LO16 do the
105 * actual relocation.
106 */
107 n = kmalloc(sizeof *n, GFP_KERNEL);
108 if (!n)
109 return -ENOMEM;
110
111 n->addr = location;
112 n->value = v;
113 n->next = mips_hi16_list;
114 mips_hi16_list = n;
115
116 return 0;
117}
118
119static int apply_r_mips_lo16(struct module *me, uint32_t *location,
120 Elf32_Addr v)
121{
122 unsigned long insnlo = *location;
123 Elf32_Addr val, vallo;
124
125 /* Sign extend the addend we extract from the lo insn. */
126 vallo = ((insnlo & 0xffff) ^ 0x8000) - 0x8000;
127
128 if (mips_hi16_list != NULL) {
129 struct mips_hi16 *l;
130
131 l = mips_hi16_list;
132 while (l != NULL) {
133 struct mips_hi16 *next;
134 unsigned long insn;
135
136 /*
137 * The value for the HI16 had best be the same.
138 */
139 if (v != l->value)
140 goto out_danger;
141
142 /*
143 * Do the HI16 relocation. Note that we actually don't
144 * need to know anything about the LO16 itself, except
145 * where to find the low 16 bits of the addend needed
146 * by the LO16.
147 */
148 insn = *l->addr;
149 val = ((insn & 0xffff) << 16) + vallo;
150 val += v;
151
152 /*
153 * Account for the sign extension that will happen in
154 * the low bits.
155 */
156 val = ((val >> 16) + ((val & 0x8000) != 0)) & 0xffff;
157
158 insn = (insn & ~0xffff) | val;
159 *l->addr = insn;
160
161 next = l->next;
162 kfree(l);
163 l = next;
164 }
165
166 mips_hi16_list = NULL;
167 }
168
169 /*
170 * Ok, we're done with the HI16 relocs. Now deal with the LO16.
171 */
172 val = v + vallo;
173 insnlo = (insnlo & ~0xffff) | (val & 0xffff);
174 *location = insnlo;
175
176 return 0;
177
178out_danger:
179 printk(KERN_ERR "module %s: dangerous " "relocation\n", me->name);
180
181 return -ENOEXEC;
182}
183
184static int (*reloc_handlers[]) (struct module *me, uint32_t *location,
185 Elf32_Addr v) = {
186 [R_MIPS_NONE] = apply_r_mips_none,
187 [R_MIPS_32] = apply_r_mips_32,
188 [R_MIPS_26] = apply_r_mips_26,
189 [R_MIPS_HI16] = apply_r_mips_hi16,
190 [R_MIPS_LO16] = apply_r_mips_lo16
191};
192
193int apply_relocate(Elf32_Shdr *sechdrs,
194 const char *strtab,
195 unsigned int symindex,
196 unsigned int relsec,
197 struct module *me)
198{
199 Elf32_Rel *rel = (void *) sechdrs[relsec].sh_addr;
200 Elf32_Sym *sym;
201 uint32_t *location;
202 unsigned int i;
203 Elf32_Addr v;
204 int res;
205
206 pr_debug("Applying relocate section %u to %u\n", relsec,
207 sechdrs[relsec].sh_info);
208
209 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) {
210 Elf32_Word r_info = rel[i].r_info;
211
212 /* This is where to make the change */
213 location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr
214 + rel[i].r_offset;
215 /* This is the symbol it is referring to */
216 sym = (Elf32_Sym *)sechdrs[symindex].sh_addr
217 + ELF32_R_SYM(r_info);
218 if (!sym->st_value) {
219 printk(KERN_WARNING "%s: Unknown symbol %s\n",
220 me->name, strtab + sym->st_name);
221 return -ENOENT;
222 }
223
224 v = sym->st_value;
225
226 res = reloc_handlers[ELF32_R_TYPE(r_info)](me, location, v);
227 if (res)
228 return res;
229 }
230
231 return 0;
232}
233
234int apply_relocate_add(Elf32_Shdr *sechdrs,
235 const char *strtab,
236 unsigned int symindex,
237 unsigned int relsec,
238 struct module *me)
239{
240 /*
241 * Current binutils always generate .rela relocations. Keep smiling
242 * if it's empty, abort otherwise.
243 */
244 if (!sechdrs[relsec].sh_size)
245 return 0;
246
247 printk(KERN_ERR "module %s: ADD RELOCATION unsupported\n",
248 me->name);
249 return -ENOEXEC;
250}
diff --git a/arch/mips/kernel/module-elf64.c b/arch/mips/kernel/module-elf64.c
deleted file mode 100644
index e804792ee1ee..000000000000
--- a/arch/mips/kernel/module-elf64.c
+++ /dev/null
@@ -1,274 +0,0 @@
1/*
2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation; either version 2 of the License, or
5 * (at your option) any later version.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 * You should have received a copy of the GNU General Public License
13 * along with this program; if not, write to the Free Software
14 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15 *
16 * Copyright (C) 2001 Rusty Russell.
17 * Copyright (C) 2003, 2004 Ralf Baechle (ralf@linux-mips.org)
18 */
19
20#undef DEBUG
21
22#include <linux/moduleloader.h>
23#include <linux/elf.h>
24#include <linux/vmalloc.h>
25#include <linux/slab.h>
26#include <linux/fs.h>
27#include <linux/string.h>
28#include <linux/kernel.h>
29
30struct mips_hi16 {
31 struct mips_hi16 *next;
32 Elf32_Addr *addr;
33 Elf64_Addr value;
34};
35
36static struct mips_hi16 *mips_hi16_list;
37
38void *module_alloc(unsigned long size)
39{
40 if (size == 0)
41 return NULL;
42 return vmalloc(size);
43}
44
45
46/* Free memory returned from module_alloc */
47void module_free(struct module *mod, void *module_region)
48{
49 vfree(module_region);
50 /* FIXME: If module_region == mod->init_region, trim exception
51 table entries. */
52}
53
54int module_frob_arch_sections(Elf_Ehdr *hdr,
55 Elf_Shdr *sechdrs,
56 char *secstrings,
57 struct module *mod)
58{
59 return 0;
60}
61
62int apply_relocate(Elf64_Shdr *sechdrs,
63 const char *strtab,
64 unsigned int symindex,
65 unsigned int relsec,
66 struct module *me)
67{
68 /*
69 * We don't want to deal with REL relocations - RELA is so much saner.
70 */
71 if (!sechdrs[relsec].sh_size)
72 return 0;
73
74 printk(KERN_ERR "module %s: REL relocation unsupported\n",
75 me->name);
76 return -ENOEXEC;
77}
78
79static int apply_r_mips_none(struct module *me, uint32_t *location,
80 Elf64_Addr v)
81{
82 return 0;
83}
84
85static int apply_r_mips_32(struct module *me, uint32_t *location,
86 Elf64_Addr v)
87{
88 *location = v;
89
90 return 0;
91}
92
93static int apply_r_mips_26(struct module *me, uint32_t *location,
94 Elf64_Addr v)
95{
96 if (v % 4) {
97 printk(KERN_ERR "module %s: dangerous relocation\n", me->name);
98 return -ENOEXEC;
99 }
100
101 if ((v & 0xf0000000) != (((unsigned long)location + 4) & 0xf0000000)) {
102 printk(KERN_ERR
103 "module %s: relocation overflow\n",
104 me->name);
105 return -ENOEXEC;
106 }
107
108 *location = (*location & ~0x03ffffff) | ((v >> 2) & 0x03ffffff);
109
110 return 0;
111}
112
113static int apply_r_mips_hi16(struct module *me, uint32_t *location,
114 Elf64_Addr v)
115{
116 struct mips_hi16 *n;
117
118 /*
119 * We cannot relocate this one now because we don't know the value of
120 * the carry we need to add. Save the information, and let LO16 do the
121 * actual relocation.
122 */
123 n = kmalloc(sizeof *n, GFP_KERNEL);
124 if (!n)
125 return -ENOMEM;
126
127 n->addr = location;
128 n->value = v;
129 n->next = mips_hi16_list;
130 mips_hi16_list = n;
131
132 return 0;
133}
134
135static int apply_r_mips_lo16(struct module *me, uint32_t *location,
136 Elf64_Addr v)
137{
138 unsigned long insnlo = *location;
139 Elf32_Addr val, vallo;
140
141 /* Sign extend the addend we extract from the lo insn. */
142 vallo = ((insnlo & 0xffff) ^ 0x8000) - 0x8000;
143
144 if (mips_hi16_list != NULL) {
145 struct mips_hi16 *l;
146
147 l = mips_hi16_list;
148 while (l != NULL) {
149 struct mips_hi16 *next;
150 unsigned long insn;
151
152 /*
153 * The value for the HI16 had best be the same.
154 */
155 if (v != l->value)
156 goto out_danger;
157
158 /*
159 * Do the HI16 relocation. Note that we actually don't
160 * need to know anything about the LO16 itself, except
161 * where to find the low 16 bits of the addend needed
162 * by the LO16.
163 */
164 insn = *l->addr;
165 val = ((insn & 0xffff) << 16) + vallo;
166 val += v;
167
168 /*
169 * Account for the sign extension that will happen in
170 * the low bits.
171 */
172 val = ((val >> 16) + ((val & 0x8000) != 0)) & 0xffff;
173
174 insn = (insn & ~0xffff) | val;
175 *l->addr = insn;
176
177 next = l->next;
178 kfree(l);
179 l = next;
180 }
181
182 mips_hi16_list = NULL;
183 }
184
185 /*
186 * Ok, we're done with the HI16 relocs. Now deal with the LO16.
187 */
188 insnlo = (insnlo & ~0xffff) | (v & 0xffff);
189 *location = insnlo;
190
191 return 0;
192
193out_danger:
194 printk(KERN_ERR "module %s: dangerous " "relocation\n", me->name);
195
196 return -ENOEXEC;
197}
198
199static int apply_r_mips_64(struct module *me, uint32_t *location,
200 Elf64_Addr v)
201{
202 *(uint64_t *) location = v;
203
204 return 0;
205}
206
207
208static int apply_r_mips_higher(struct module *me, uint32_t *location,
209 Elf64_Addr v)
210{
211 *location = (*location & 0xffff0000) |
212 ((((long long) v + 0x80008000LL) >> 32) & 0xffff);
213
214 return 0;
215}
216
217static int apply_r_mips_highest(struct module *me, uint32_t *location,
218 Elf64_Addr v)
219{
220 *location = (*location & 0xffff0000) |
221 ((((long long) v + 0x800080008000LL) >> 48) & 0xffff);
222
223 return 0;
224}
225
226static int (*reloc_handlers[]) (struct module *me, uint32_t *location,
227 Elf64_Addr v) = {
228 [R_MIPS_NONE] = apply_r_mips_none,
229 [R_MIPS_32] = apply_r_mips_32,
230 [R_MIPS_26] = apply_r_mips_26,
231 [R_MIPS_HI16] = apply_r_mips_hi16,
232 [R_MIPS_LO16] = apply_r_mips_lo16,
233 [R_MIPS_64] = apply_r_mips_64,
234 [R_MIPS_HIGHER] = apply_r_mips_higher,
235 [R_MIPS_HIGHEST] = apply_r_mips_highest
236};
237
238int apply_relocate_add(Elf64_Shdr *sechdrs,
239 const char *strtab,
240 unsigned int symindex,
241 unsigned int relsec,
242 struct module *me)
243{
244 Elf64_Mips_Rela *rel = (void *) sechdrs[relsec].sh_addr;
245 Elf64_Sym *sym;
246 uint32_t *location;
247 unsigned int i;
248 Elf64_Addr v;
249 int res;
250
251 pr_debug("Applying relocate section %u to %u\n", relsec,
252 sechdrs[relsec].sh_info);
253
254 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) {
255 /* This is where to make the change */
256 location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr
257 + rel[i].r_offset;
258 /* This is the symbol it is referring to */
259 sym = (Elf64_Sym *)sechdrs[symindex].sh_addr + rel[i].r_sym;
260 if (!sym->st_value) {
261 printk(KERN_WARNING "%s: Unknown symbol %s\n",
262 me->name, strtab + sym->st_name);
263 return -ENOENT;
264 }
265
266 v = sym->st_value;
267
268 res = reloc_handlers[rel[i].r_type](me, location, v);
269 if (res)
270 return res;
271 }
272
273 return 0;
274}
diff --git a/arch/mips/kernel/module.c b/arch/mips/kernel/module.c
index 458af3c7a639..e54a7f442f8a 100644
--- a/arch/mips/kernel/module.c
+++ b/arch/mips/kernel/module.c
@@ -1,9 +1,345 @@
1/*
2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation; either version 2 of the License, or
5 * (at your option) any later version.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 * You should have received a copy of the GNU General Public License
13 * along with this program; if not, write to the Free Software
14 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15 *
16 * Copyright (C) 2001 Rusty Russell.
17 * Copyright (C) 2003, 2004 Ralf Baechle (ralf@linux-mips.org)
18 * Copyright (C) 2005 Thiemo Seufer
19 */
20
21#undef DEBUG
22
23#include <linux/moduleloader.h>
24#include <linux/elf.h>
25#include <linux/vmalloc.h>
26#include <linux/slab.h>
27#include <linux/fs.h>
28#include <linux/string.h>
29#include <linux/kernel.h>
1#include <linux/module.h> 30#include <linux/module.h>
2#include <linux/spinlock.h> 31#include <linux/spinlock.h>
3 32
33struct mips_hi16 {
34 struct mips_hi16 *next;
35 Elf_Addr *addr;
36 Elf_Addr value;
37};
38
39static struct mips_hi16 *mips_hi16_list;
40
4static LIST_HEAD(dbe_list); 41static LIST_HEAD(dbe_list);
5static DEFINE_SPINLOCK(dbe_lock); 42static DEFINE_SPINLOCK(dbe_lock);
6 43
44void *module_alloc(unsigned long size)
45{
46 if (size == 0)
47 return NULL;
48 return vmalloc(size);
49}
50
51/* Free memory returned from module_alloc */
52void module_free(struct module *mod, void *module_region)
53{
54 vfree(module_region);
55 /* FIXME: If module_region == mod->init_region, trim exception
56 table entries. */
57}
58
59int module_frob_arch_sections(Elf_Ehdr *hdr, Elf_Shdr *sechdrs,
60 char *secstrings, struct module *mod)
61{
62 return 0;
63}
64
65static int apply_r_mips_none(struct module *me, u32 *location, Elf_Addr v)
66{
67 return 0;
68}
69
70static int apply_r_mips_32_rel(struct module *me, u32 *location, Elf_Addr v)
71{
72 *location += v;
73
74 return 0;
75}
76
77static int apply_r_mips_32_rela(struct module *me, u32 *location, Elf_Addr v)
78{
79 *location = v;
80
81 return 0;
82}
83
84static int apply_r_mips_26_rel(struct module *me, u32 *location, Elf_Addr v)
85{
86 if (v % 4) {
87 printk(KERN_ERR "module %s: dangerous relocation\n", me->name);
88 return -ENOEXEC;
89 }
90
91 if ((v & 0xf0000000) != (((unsigned long)location + 4) & 0xf0000000)) {
92 printk(KERN_ERR
93 "module %s: relocation overflow\n",
94 me->name);
95 return -ENOEXEC;
96 }
97
98 *location = (*location & ~0x03ffffff) |
99 ((*location + (v >> 2)) & 0x03ffffff);
100
101 return 0;
102}
103
104static int apply_r_mips_26_rela(struct module *me, u32 *location, Elf_Addr v)
105{
106 if (v % 4) {
107 printk(KERN_ERR "module %s: dangerous relocation\n", me->name);
108 return -ENOEXEC;
109 }
110
111 if ((v & 0xf0000000) != (((unsigned long)location + 4) & 0xf0000000)) {
112 printk(KERN_ERR
113 "module %s: relocation overflow\n",
114 me->name);
115 return -ENOEXEC;
116 }
117
118 *location = (*location & ~0x03ffffff) | ((v >> 2) & 0x03ffffff);
119
120 return 0;
121}
122
123static int apply_r_mips_hi16_rel(struct module *me, u32 *location, Elf_Addr v)
124{
125 struct mips_hi16 *n;
126
127 /*
128 * We cannot relocate this one now because we don't know the value of
129 * the carry we need to add. Save the information, and let LO16 do the
130 * actual relocation.
131 */
132 n = kmalloc(sizeof *n, GFP_KERNEL);
133 if (!n)
134 return -ENOMEM;
135
136 n->addr = (Elf_Addr *)location;
137 n->value = v;
138 n->next = mips_hi16_list;
139 mips_hi16_list = n;
140
141 return 0;
142}
143
144static int apply_r_mips_hi16_rela(struct module *me, u32 *location, Elf_Addr v)
145{
146 *location = (*location & 0xffff0000) |
147 ((((long long) v + 0x8000LL) >> 16) & 0xffff);
148
149 return 0;
150}
151
152static int apply_r_mips_lo16_rel(struct module *me, u32 *location, Elf_Addr v)
153{
154 unsigned long insnlo = *location;
155 Elf_Addr val, vallo;
156
157 /* Sign extend the addend we extract from the lo insn. */
158 vallo = ((insnlo & 0xffff) ^ 0x8000) - 0x8000;
159
160 if (mips_hi16_list != NULL) {
161 struct mips_hi16 *l;
162
163 l = mips_hi16_list;
164 while (l != NULL) {
165 struct mips_hi16 *next;
166 unsigned long insn;
167
168 /*
169 * The value for the HI16 had best be the same.
170 */
171 if (v != l->value)
172 goto out_danger;
173
174 /*
175 * Do the HI16 relocation. Note that we actually don't
176 * need to know anything about the LO16 itself, except
177 * where to find the low 16 bits of the addend needed
178 * by the LO16.
179 */
180 insn = *l->addr;
181 val = ((insn & 0xffff) << 16) + vallo;
182 val += v;
183
184 /*
185 * Account for the sign extension that will happen in
186 * the low bits.
187 */
188 val = ((val >> 16) + ((val & 0x8000) != 0)) & 0xffff;
189
190 insn = (insn & ~0xffff) | val;
191 *l->addr = insn;
192
193 next = l->next;
194 kfree(l);
195 l = next;
196 }
197
198 mips_hi16_list = NULL;
199 }
200
201 /*
202 * Ok, we're done with the HI16 relocs. Now deal with the LO16.
203 */
204 val = v + vallo;
205 insnlo = (insnlo & ~0xffff) | (val & 0xffff);
206 *location = insnlo;
207
208 return 0;
209
210out_danger:
211 printk(KERN_ERR "module %s: dangerous " "relocation\n", me->name);
212
213 return -ENOEXEC;
214}
215
216static int apply_r_mips_lo16_rela(struct module *me, u32 *location, Elf_Addr v)
217{
218 *location = (*location & 0xffff0000) | (v & 0xffff);
219
220 return 0;
221}
222
223static int apply_r_mips_64_rela(struct module *me, u32 *location, Elf_Addr v)
224{
225 *(Elf_Addr *)location = v;
226
227 return 0;
228}
229
230static int apply_r_mips_higher_rela(struct module *me, u32 *location,
231 Elf_Addr v)
232{
233 *location = (*location & 0xffff0000) |
234 ((((long long) v + 0x80008000LL) >> 32) & 0xffff);
235
236 return 0;
237}
238
239static int apply_r_mips_highest_rela(struct module *me, u32 *location,
240 Elf_Addr v)
241{
242 *location = (*location & 0xffff0000) |
243 ((((long long) v + 0x800080008000LL) >> 48) & 0xffff);
244
245 return 0;
246}
247
248static int (*reloc_handlers_rel[]) (struct module *me, u32 *location,
249 Elf_Addr v) = {
250 [R_MIPS_NONE] = apply_r_mips_none,
251 [R_MIPS_32] = apply_r_mips_32_rel,
252 [R_MIPS_26] = apply_r_mips_26_rel,
253 [R_MIPS_HI16] = apply_r_mips_hi16_rel,
254 [R_MIPS_LO16] = apply_r_mips_lo16_rel
255};
256
257static int (*reloc_handlers_rela[]) (struct module *me, u32 *location,
258 Elf_Addr v) = {
259 [R_MIPS_NONE] = apply_r_mips_none,
260 [R_MIPS_32] = apply_r_mips_32_rela,
261 [R_MIPS_26] = apply_r_mips_26_rela,
262 [R_MIPS_HI16] = apply_r_mips_hi16_rela,
263 [R_MIPS_LO16] = apply_r_mips_lo16_rela,
264 [R_MIPS_64] = apply_r_mips_64_rela,
265 [R_MIPS_HIGHER] = apply_r_mips_higher_rela,
266 [R_MIPS_HIGHEST] = apply_r_mips_highest_rela
267};
268
269int apply_relocate(Elf_Shdr *sechdrs, const char *strtab,
270 unsigned int symindex, unsigned int relsec,
271 struct module *me)
272{
273 Elf_Mips_Rel *rel = (void *) sechdrs[relsec].sh_addr;
274 Elf_Sym *sym;
275 u32 *location;
276 unsigned int i;
277 Elf_Addr v;
278 int res;
279
280 pr_debug("Applying relocate section %u to %u\n", relsec,
281 sechdrs[relsec].sh_info);
282
283 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) {
284 /* This is where to make the change */
285 location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr
286 + rel[i].r_offset;
287 /* This is the symbol it is referring to */
288 sym = (Elf_Sym *)sechdrs[symindex].sh_addr
289 + ELF_MIPS_R_SYM(rel[i]);
290 if (!sym->st_value) {
291 printk(KERN_WARNING "%s: Unknown symbol %s\n",
292 me->name, strtab + sym->st_name);
293 return -ENOENT;
294 }
295
296 v = sym->st_value;
297
298 res = reloc_handlers_rel[ELF_MIPS_R_TYPE(rel[i])](me, location, v);
299 if (res)
300 return res;
301 }
302
303 return 0;
304}
305
306int apply_relocate_add(Elf_Shdr *sechdrs, const char *strtab,
307 unsigned int symindex, unsigned int relsec,
308 struct module *me)
309{
310 Elf_Mips_Rela *rel = (void *) sechdrs[relsec].sh_addr;
311 Elf_Sym *sym;
312 u32 *location;
313 unsigned int i;
314 Elf_Addr v;
315 int res;
316
317 pr_debug("Applying relocate section %u to %u\n", relsec,
318 sechdrs[relsec].sh_info);
319
320 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) {
321 /* This is where to make the change */
322 location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr
323 + rel[i].r_offset;
324 /* This is the symbol it is referring to */
325 sym = (Elf_Sym *)sechdrs[symindex].sh_addr
326 + ELF_MIPS_R_SYM(rel[i]);
327 if (!sym->st_value) {
328 printk(KERN_WARNING "%s: Unknown symbol %s\n",
329 me->name, strtab + sym->st_name);
330 return -ENOENT;
331 }
332
333 v = sym->st_value + rel[i].r_addend;
334
335 res = reloc_handlers_rela[ELF_MIPS_R_TYPE(rel[i])](me, location, v);
336 if (res)
337 return res;
338 }
339
340 return 0;
341}
342
7/* Given an address, look for it in the module exception tables. */ 343/* Given an address, look for it in the module exception tables. */
8const struct exception_table_entry *search_module_dbetables(unsigned long addr) 344const struct exception_table_entry *search_module_dbetables(unsigned long addr)
9{ 345{
diff --git a/arch/mips/kernel/proc.c b/arch/mips/kernel/proc.c
index 0f159f30e894..86fe15b273cd 100644
--- a/arch/mips/kernel/proc.c
+++ b/arch/mips/kernel/proc.c
@@ -2,7 +2,8 @@
2 * linux/arch/mips/kernel/proc.c 2 * linux/arch/mips/kernel/proc.c
3 * 3 *
4 * Copyright (C) 1995, 1996, 2001 Ralf Baechle 4 * Copyright (C) 1995, 1996, 2001 Ralf Baechle
5 * Copyright (C) 2001 MIPS Technologies, Inc. 5 * Copyright (C) 2001, 2004 MIPS Technologies, Inc.
6 * Copyright (C) 2004 Maciej W. Rozycki
6 */ 7 */
7#include <linux/config.h> 8#include <linux/config.h>
8#include <linux/delay.h> 9#include <linux/delay.h>
@@ -19,63 +20,69 @@
19unsigned int vced_count, vcei_count; 20unsigned int vced_count, vcei_count;
20 21
21static const char *cpu_name[] = { 22static const char *cpu_name[] = {
22 [CPU_UNKNOWN] "unknown", 23 [CPU_UNKNOWN] = "unknown",
23 [CPU_R2000] "R2000", 24 [CPU_R2000] = "R2000",
24 [CPU_R3000] "R3000", 25 [CPU_R3000] = "R3000",
25 [CPU_R3000A] "R3000A", 26 [CPU_R3000A] = "R3000A",
26 [CPU_R3041] "R3041", 27 [CPU_R3041] = "R3041",
27 [CPU_R3051] "R3051", 28 [CPU_R3051] = "R3051",
28 [CPU_R3052] "R3052", 29 [CPU_R3052] = "R3052",
29 [CPU_R3081] "R3081", 30 [CPU_R3081] = "R3081",
30 [CPU_R3081E] "R3081E", 31 [CPU_R3081E] = "R3081E",
31 [CPU_R4000PC] "R4000PC", 32 [CPU_R4000PC] = "R4000PC",
32 [CPU_R4000SC] "R4000SC", 33 [CPU_R4000SC] = "R4000SC",
33 [CPU_R4000MC] "R4000MC", 34 [CPU_R4000MC] = "R4000MC",
34 [CPU_R4200] "R4200", 35 [CPU_R4200] = "R4200",
35 [CPU_R4400PC] "R4400PC", 36 [CPU_R4400PC] = "R4400PC",
36 [CPU_R4400SC] "R4400SC", 37 [CPU_R4400SC] = "R4400SC",
37 [CPU_R4400MC] "R4400MC", 38 [CPU_R4400MC] = "R4400MC",
38 [CPU_R4600] "R4600", 39 [CPU_R4600] = "R4600",
39 [CPU_R6000] "R6000", 40 [CPU_R6000] = "R6000",
40 [CPU_R6000A] "R6000A", 41 [CPU_R6000A] = "R6000A",
41 [CPU_R8000] "R8000", 42 [CPU_R8000] = "R8000",
42 [CPU_R10000] "R10000", 43 [CPU_R10000] = "R10000",
43 [CPU_R12000] "R12000", 44 [CPU_R12000] = "R12000",
44 [CPU_R4300] "R4300", 45 [CPU_R4300] = "R4300",
45 [CPU_R4650] "R4650", 46 [CPU_R4650] = "R4650",
46 [CPU_R4700] "R4700", 47 [CPU_R4700] = "R4700",
47 [CPU_R5000] "R5000", 48 [CPU_R5000] = "R5000",
48 [CPU_R5000A] "R5000A", 49 [CPU_R5000A] = "R5000A",
49 [CPU_R4640] "R4640", 50 [CPU_R4640] = "R4640",
50 [CPU_NEVADA] "Nevada", 51 [CPU_NEVADA] = "Nevada",
51 [CPU_RM7000] "RM7000", 52 [CPU_RM7000] = "RM7000",
52 [CPU_RM9000] "RM9000", 53 [CPU_RM9000] = "RM9000",
53 [CPU_R5432] "R5432", 54 [CPU_R5432] = "R5432",
54 [CPU_4KC] "MIPS 4Kc", 55 [CPU_4KC] = "MIPS 4Kc",
55 [CPU_5KC] "MIPS 5Kc", 56 [CPU_5KC] = "MIPS 5Kc",
56 [CPU_R4310] "R4310", 57 [CPU_R4310] = "R4310",
57 [CPU_SB1] "SiByte SB1", 58 [CPU_SB1] = "SiByte SB1",
58 [CPU_TX3912] "TX3912", 59 [CPU_SB1A] = "SiByte SB1A",
59 [CPU_TX3922] "TX3922", 60 [CPU_TX3912] = "TX3912",
60 [CPU_TX3927] "TX3927", 61 [CPU_TX3922] = "TX3922",
61 [CPU_AU1000] "Au1000", 62 [CPU_TX3927] = "TX3927",
62 [CPU_AU1500] "Au1500", 63 [CPU_AU1000] = "Au1000",
63 [CPU_4KEC] "MIPS 4KEc", 64 [CPU_AU1500] = "Au1500",
64 [CPU_4KSC] "MIPS 4KSc", 65 [CPU_AU1100] = "Au1100",
65 [CPU_VR41XX] "NEC Vr41xx", 66 [CPU_AU1550] = "Au1550",
66 [CPU_R5500] "R5500", 67 [CPU_AU1200] = "Au1200",
67 [CPU_TX49XX] "TX49xx", 68 [CPU_4KEC] = "MIPS 4KEc",
68 [CPU_20KC] "MIPS 20Kc", 69 [CPU_4KSC] = "MIPS 4KSc",
69 [CPU_24K] "MIPS 24K", 70 [CPU_VR41XX] = "NEC Vr41xx",
70 [CPU_25KF] "MIPS 25Kf", 71 [CPU_R5500] = "R5500",
71 [CPU_VR4111] "NEC VR4111", 72 [CPU_TX49XX] = "TX49xx",
72 [CPU_VR4121] "NEC VR4121", 73 [CPU_20KC] = "MIPS 20Kc",
73 [CPU_VR4122] "NEC VR4122", 74 [CPU_24K] = "MIPS 24K",
74 [CPU_VR4131] "NEC VR4131", 75 [CPU_25KF] = "MIPS 25Kf",
75 [CPU_VR4133] "NEC VR4133", 76 [CPU_34K] = "MIPS 34K",
76 [CPU_VR4181] "NEC VR4181", 77 [CPU_VR4111] = "NEC VR4111",
77 [CPU_VR4181A] "NEC VR4181A", 78 [CPU_VR4121] = "NEC VR4121",
78 [CPU_SR71000] "Sandcraft SR71000" 79 [CPU_VR4122] = "NEC VR4122",
80 [CPU_VR4131] = "NEC VR4131",
81 [CPU_VR4133] = "NEC VR4133",
82 [CPU_VR4181] = "NEC VR4181",
83 [CPU_VR4181A] = "NEC VR4181A",
84 [CPU_SR71000] = "Sandcraft SR71000",
85 [CPU_PR4450] = "Philips PR4450",
79}; 86};
80 87
81 88
@@ -105,8 +112,8 @@ static int show_cpuinfo(struct seq_file *m, void *v)
105 (version >> 4) & 0x0f, version & 0x0f, 112 (version >> 4) & 0x0f, version & 0x0f,
106 (fp_vers >> 4) & 0x0f, fp_vers & 0x0f); 113 (fp_vers >> 4) & 0x0f, fp_vers & 0x0f);
107 seq_printf(m, "BogoMIPS\t\t: %lu.%02lu\n", 114 seq_printf(m, "BogoMIPS\t\t: %lu.%02lu\n",
108 loops_per_jiffy / (500000/HZ), 115 cpu_data[n].udelay_val / (500000/HZ),
109 (loops_per_jiffy / (5000/HZ)) % 100); 116 (cpu_data[n].udelay_val / (5000/HZ)) % 100);
110 seq_printf(m, "wait instruction\t: %s\n", cpu_wait ? "yes" : "no"); 117 seq_printf(m, "wait instruction\t: %s\n", cpu_wait ? "yes" : "no");
111 seq_printf(m, "microsecond timers\t: %s\n", 118 seq_printf(m, "microsecond timers\t: %s\n",
112 cpu_has_counter ? "yes" : "no"); 119 cpu_has_counter ? "yes" : "no");
@@ -115,6 +122,14 @@ static int show_cpuinfo(struct seq_file *m, void *v)
115 cpu_has_divec ? "yes" : "no"); 122 cpu_has_divec ? "yes" : "no");
116 seq_printf(m, "hardware watchpoint\t: %s\n", 123 seq_printf(m, "hardware watchpoint\t: %s\n",
117 cpu_has_watch ? "yes" : "no"); 124 cpu_has_watch ? "yes" : "no");
125 seq_printf(m, "ASEs implemented\t:%s%s%s%s%s%s\n",
126 cpu_has_mips16 ? " mips16" : "",
127 cpu_has_mdmx ? " mdmx" : "",
128 cpu_has_mips3d ? " mips3d" : "",
129 cpu_has_smartmips ? " smartmips" : "",
130 cpu_has_dsp ? " dsp" : "",
131 cpu_has_mipsmt ? " mt" : ""
132 );
118 133
119 sprintf(fmt, "VCE%%c exceptions\t\t: %s\n", 134 sprintf(fmt, "VCE%%c exceptions\t\t: %s\n",
120 cpu_has_vce ? "%u" : "not available"); 135 cpu_has_vce ? "%u" : "not available");
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index e4f2f8011387..4fe3d5715c41 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -25,8 +25,10 @@
25#include <linux/init.h> 25#include <linux/init.h>
26#include <linux/completion.h> 26#include <linux/completion.h>
27 27
28#include <asm/abi.h>
28#include <asm/bootinfo.h> 29#include <asm/bootinfo.h>
29#include <asm/cpu.h> 30#include <asm/cpu.h>
31#include <asm/dsp.h>
30#include <asm/fpu.h> 32#include <asm/fpu.h>
31#include <asm/pgtable.h> 33#include <asm/pgtable.h>
32#include <asm/system.h> 34#include <asm/system.h>
@@ -39,14 +41,6 @@
39#include <asm/inst.h> 41#include <asm/inst.h>
40 42
41/* 43/*
42 * We use this if we don't have any better idle routine..
43 * (This to kill: kernel/platform.c.
44 */
45void default_idle (void)
46{
47}
48
49/*
50 * The idle thread. There's no useful work to be done, so just try to conserve 44 * The idle thread. There's no useful work to be done, so just try to conserve
51 * power and have a low exit latency (ie sit in a loop waiting for somebody to 45 * power and have a low exit latency (ie sit in a loop waiting for somebody to
52 * say that they'd like to reschedule) 46 * say that they'd like to reschedule)
@@ -62,6 +56,54 @@ ATTRIB_NORET void cpu_idle(void)
62 } 56 }
63} 57}
64 58
59extern int do_signal(sigset_t *oldset, struct pt_regs *regs);
60extern int do_signal32(sigset_t *oldset, struct pt_regs *regs);
61
62/*
63 * Native o32 and N64 ABI without DSP ASE
64 */
65extern int setup_frame(struct k_sigaction * ka, struct pt_regs *regs,
66 int signr, sigset_t *set);
67extern int setup_rt_frame(struct k_sigaction * ka, struct pt_regs *regs,
68 int signr, sigset_t *set, siginfo_t *info);
69
70struct mips_abi mips_abi = {
71 .do_signal = do_signal,
72#ifdef CONFIG_TRAD_SIGNALS
73 .setup_frame = setup_frame,
74#endif
75 .setup_rt_frame = setup_rt_frame
76};
77
78#ifdef CONFIG_MIPS32_O32
79/*
80 * o32 compatibility on 64-bit kernels, without DSP ASE
81 */
82extern int setup_frame_32(struct k_sigaction * ka, struct pt_regs *regs,
83 int signr, sigset_t *set);
84extern int setup_rt_frame_32(struct k_sigaction * ka, struct pt_regs *regs,
85 int signr, sigset_t *set, siginfo_t *info);
86
87struct mips_abi mips_abi_32 = {
88 .do_signal = do_signal32,
89 .setup_frame = setup_frame_32,
90 .setup_rt_frame = setup_rt_frame_32
91};
92#endif /* CONFIG_MIPS32_O32 */
93
94#ifdef CONFIG_MIPS32_N32
95/*
96 * N32 on 64-bit kernels, without DSP ASE
97 */
98extern int setup_rt_frame_n32(struct k_sigaction * ka, struct pt_regs *regs,
99 int signr, sigset_t *set, siginfo_t *info);
100
101struct mips_abi mips_abi_n32 = {
102 .do_signal = do_signal,
103 .setup_rt_frame = setup_rt_frame_n32
104};
105#endif /* CONFIG_MIPS32_N32 */
106
65asmlinkage void ret_from_fork(void); 107asmlinkage void ret_from_fork(void);
66 108
67void start_thread(struct pt_regs * regs, unsigned long pc, unsigned long sp) 109void start_thread(struct pt_regs * regs, unsigned long pc, unsigned long sp)
@@ -78,6 +120,8 @@ void start_thread(struct pt_regs * regs, unsigned long pc, unsigned long sp)
78 regs->cp0_status = status; 120 regs->cp0_status = status;
79 clear_used_math(); 121 clear_used_math();
80 lose_fpu(); 122 lose_fpu();
123 if (cpu_has_dsp)
124 __init_dsp();
81 regs->cp0_epc = pc; 125 regs->cp0_epc = pc;
82 regs->regs[29] = sp; 126 regs->regs[29] = sp;
83 current_thread_info()->addr_limit = USER_DS; 127 current_thread_info()->addr_limit = USER_DS;
@@ -97,14 +141,17 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
97 struct thread_info *ti = p->thread_info; 141 struct thread_info *ti = p->thread_info;
98 struct pt_regs *childregs; 142 struct pt_regs *childregs;
99 long childksp; 143 long childksp;
144 p->set_child_tid = p->clear_child_tid = NULL;
100 145
101 childksp = (unsigned long)ti + THREAD_SIZE - 32; 146 childksp = (unsigned long)ti + THREAD_SIZE - 32;
102 147
103 preempt_disable(); 148 preempt_disable();
104 149
105 if (is_fpu_owner()) { 150 if (is_fpu_owner())
106 save_fp(p); 151 save_fp(p);
107 } 152
153 if (cpu_has_dsp)
154 save_dsp(p);
108 155
109 preempt_enable(); 156 preempt_enable();
110 157
@@ -142,6 +189,9 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
142 childregs->cp0_status &= ~(ST0_CU2|ST0_CU1); 189 childregs->cp0_status &= ~(ST0_CU2|ST0_CU1);
143 clear_tsk_thread_flag(p, TIF_USEDFPU); 190 clear_tsk_thread_flag(p, TIF_USEDFPU);
144 191
192 if (clone_flags & CLONE_SETTLS)
193 ti->tp_value = regs->regs[7];
194
145 return 0; 195 return 0;
146} 196}
147 197
@@ -175,6 +225,14 @@ void dump_regs(elf_greg_t *gp, struct pt_regs *regs)
175#endif 225#endif
176} 226}
177 227
228int dump_task_regs (struct task_struct *tsk, elf_gregset_t *regs)
229{
230 struct thread_info *ti = tsk->thread_info;
231 long ksp = (unsigned long)ti + THREAD_SIZE - 32;
232 dump_regs(&(*regs)[0], (struct pt_regs *) ksp - 1);
233 return 1;
234}
235
178int dump_task_fpu (struct task_struct *t, elf_fpregset_t *fpr) 236int dump_task_fpu (struct task_struct *t, elf_fpregset_t *fpr)
179{ 237{
180 memcpy(fpr, &t->thread.fpu, sizeof(current->thread.fpu)); 238 memcpy(fpr, &t->thread.fpu, sizeof(current->thread.fpu));
@@ -211,22 +269,48 @@ long kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
211 return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL, NULL); 269 return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
212} 270}
213 271
214struct mips_frame_info { 272static struct mips_frame_info {
273 void *func;
274 int omit_fp; /* compiled without fno-omit-frame-pointer */
215 int frame_offset; 275 int frame_offset;
216 int pc_offset; 276 int pc_offset;
277} schedule_frame, mfinfo[] = {
278 { schedule, 0 }, /* must be first */
279 /* arch/mips/kernel/semaphore.c */
280 { __down, 1 },
281 { __down_interruptible, 1 },
282 /* kernel/sched.c */
283#ifdef CONFIG_PREEMPT
284 { preempt_schedule, 0 },
285#endif
286 { wait_for_completion, 0 },
287 { interruptible_sleep_on, 0 },
288 { interruptible_sleep_on_timeout, 0 },
289 { sleep_on, 0 },
290 { sleep_on_timeout, 0 },
291 { yield, 0 },
292 { io_schedule, 0 },
293 { io_schedule_timeout, 0 },
294#if defined(CONFIG_SMP) && defined(CONFIG_PREEMPT)
295 { __preempt_spin_lock, 0 },
296 { __preempt_write_lock, 0 },
297#endif
298 /* kernel/timer.c */
299 { schedule_timeout, 1 },
300/* { nanosleep_restart, 1 }, */
301 /* lib/rwsem-spinlock.c */
302 { __down_read, 1 },
303 { __down_write, 1 },
217}; 304};
218static struct mips_frame_info schedule_frame; 305
219static struct mips_frame_info schedule_timeout_frame;
220static struct mips_frame_info sleep_on_frame;
221static struct mips_frame_info sleep_on_timeout_frame;
222static struct mips_frame_info wait_for_completion_frame;
223static int mips_frame_info_initialized; 306static int mips_frame_info_initialized;
224static int __init get_frame_info(struct mips_frame_info *info, void *func) 307static int __init get_frame_info(struct mips_frame_info *info)
225{ 308{
226 int i; 309 int i;
310 void *func = info->func;
227 union mips_instruction *ip = (union mips_instruction *)func; 311 union mips_instruction *ip = (union mips_instruction *)func;
228 info->pc_offset = -1; 312 info->pc_offset = -1;
229 info->frame_offset = -1; 313 info->frame_offset = info->omit_fp ? 0 : -1;
230 for (i = 0; i < 128; i++, ip++) { 314 for (i = 0; i < 128; i++, ip++) {
231 /* if jal, jalr, jr, stop. */ 315 /* if jal, jalr, jr, stop. */
232 if (ip->j_format.opcode == jal_op || 316 if (ip->j_format.opcode == jal_op ||
@@ -247,14 +331,16 @@ static int __init get_frame_info(struct mips_frame_info *info, void *func)
247 /* sw / sd $ra, offset($sp) */ 331 /* sw / sd $ra, offset($sp) */
248 if (ip->i_format.rt == 31) { 332 if (ip->i_format.rt == 31) {
249 if (info->pc_offset != -1) 333 if (info->pc_offset != -1)
250 break; 334 continue;
251 info->pc_offset = 335 info->pc_offset =
252 ip->i_format.simmediate / sizeof(long); 336 ip->i_format.simmediate / sizeof(long);
253 } 337 }
254 /* sw / sd $s8, offset($sp) */ 338 /* sw / sd $s8, offset($sp) */
255 if (ip->i_format.rt == 30) { 339 if (ip->i_format.rt == 30) {
340//#if 0 /* gcc 3.4 does aggressive optimization... */
256 if (info->frame_offset != -1) 341 if (info->frame_offset != -1)
257 break; 342 continue;
343//#endif
258 info->frame_offset = 344 info->frame_offset =
259 ip->i_format.simmediate / sizeof(long); 345 ip->i_format.simmediate / sizeof(long);
260 } 346 }
@@ -272,13 +358,25 @@ static int __init get_frame_info(struct mips_frame_info *info, void *func)
272 358
273static int __init frame_info_init(void) 359static int __init frame_info_init(void)
274{ 360{
275 mips_frame_info_initialized = 361 int i, found;
276 !get_frame_info(&schedule_frame, schedule) && 362 for (i = 0; i < ARRAY_SIZE(mfinfo); i++)
277 !get_frame_info(&schedule_timeout_frame, schedule_timeout) && 363 if (get_frame_info(&mfinfo[i]))
278 !get_frame_info(&sleep_on_frame, sleep_on) && 364 return -1;
279 !get_frame_info(&sleep_on_timeout_frame, sleep_on_timeout) && 365 schedule_frame = mfinfo[0];
280 !get_frame_info(&wait_for_completion_frame, wait_for_completion); 366 /* bubble sort */
281 367 do {
368 struct mips_frame_info tmp;
369 found = 0;
370 for (i = 1; i < ARRAY_SIZE(mfinfo); i++) {
371 if (mfinfo[i-1].func > mfinfo[i].func) {
372 tmp = mfinfo[i];
373 mfinfo[i] = mfinfo[i-1];
374 mfinfo[i-1] = tmp;
375 found = 1;
376 }
377 }
378 } while (found);
379 mips_frame_info_initialized = 1;
282 return 0; 380 return 0;
283} 381}
284 382
@@ -303,60 +401,39 @@ unsigned long thread_saved_pc(struct task_struct *tsk)
303/* get_wchan - a maintenance nightmare^W^Wpain in the ass ... */ 401/* get_wchan - a maintenance nightmare^W^Wpain in the ass ... */
304unsigned long get_wchan(struct task_struct *p) 402unsigned long get_wchan(struct task_struct *p)
305{ 403{
404 unsigned long stack_page;
306 unsigned long frame, pc; 405 unsigned long frame, pc;
307 406
308 if (!p || p == current || p->state == TASK_RUNNING) 407 if (!p || p == current || p->state == TASK_RUNNING)
309 return 0; 408 return 0;
310 409
311 if (!mips_frame_info_initialized) 410 stack_page = (unsigned long)p->thread_info;
411 if (!stack_page || !mips_frame_info_initialized)
312 return 0; 412 return 0;
413
313 pc = thread_saved_pc(p); 414 pc = thread_saved_pc(p);
314 if (!in_sched_functions(pc)) 415 if (!in_sched_functions(pc))
315 goto out; 416 return pc;
316
317 if (pc >= (unsigned long) sleep_on_timeout)
318 goto schedule_timeout_caller;
319 if (pc >= (unsigned long) sleep_on)
320 goto schedule_caller;
321 if (pc >= (unsigned long) interruptible_sleep_on_timeout)
322 goto schedule_timeout_caller;
323 if (pc >= (unsigned long)interruptible_sleep_on)
324 goto schedule_caller;
325 if (pc >= (unsigned long)wait_for_completion)
326 goto schedule_caller;
327 goto schedule_timeout_caller;
328
329schedule_caller:
330 frame = ((unsigned long *)p->thread.reg30)[schedule_frame.frame_offset];
331 if (pc >= (unsigned long) sleep_on)
332 pc = ((unsigned long *)frame)[sleep_on_frame.pc_offset];
333 else
334 pc = ((unsigned long *)frame)[wait_for_completion_frame.pc_offset];
335 goto out;
336 417
337schedule_timeout_caller:
338 /*
339 * The schedule_timeout frame
340 */
341 frame = ((unsigned long *)p->thread.reg30)[schedule_frame.frame_offset]; 418 frame = ((unsigned long *)p->thread.reg30)[schedule_frame.frame_offset];
419 do {
420 int i;
342 421
343 /* 422 if (frame < stack_page || frame > stack_page + THREAD_SIZE - 32)
344 * frame now points to sleep_on_timeout's frame 423 return 0;
345 */
346 pc = ((unsigned long *)frame)[schedule_timeout_frame.pc_offset];
347
348 if (in_sched_functions(pc)) {
349 /* schedule_timeout called by [interruptible_]sleep_on_timeout */
350 frame = ((unsigned long *)frame)[schedule_timeout_frame.frame_offset];
351 pc = ((unsigned long *)frame)[sleep_on_timeout_frame.pc_offset];
352 }
353 424
354out: 425 for (i = ARRAY_SIZE(mfinfo) - 1; i >= 0; i--) {
426 if (pc >= (unsigned long) mfinfo[i].func)
427 break;
428 }
429 if (i < 0)
430 break;
355 431
356#ifdef CONFIG_64BIT 432 if (mfinfo[i].omit_fp)
357 if (current->thread.mflags & MF_32BIT_REGS) /* Kludge for 32-bit ps */ 433 break;
358 pc &= 0xffffffffUL; 434 pc = ((unsigned long *)frame)[mfinfo[i].pc_offset];
359#endif 435 frame = ((unsigned long *)frame)[mfinfo[i].frame_offset];
436 } while (in_sched_functions(pc));
360 437
361 return pc; 438 return pc;
362} 439}
diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c
index 0b571a5b4b83..f1b0f3e1f95b 100644
--- a/arch/mips/kernel/ptrace.c
+++ b/arch/mips/kernel/ptrace.c
@@ -28,14 +28,18 @@
28#include <linux/security.h> 28#include <linux/security.h>
29#include <linux/signal.h> 29#include <linux/signal.h>
30 30
31#include <asm/byteorder.h>
31#include <asm/cpu.h> 32#include <asm/cpu.h>
33#include <asm/dsp.h>
32#include <asm/fpu.h> 34#include <asm/fpu.h>
33#include <asm/mipsregs.h> 35#include <asm/mipsregs.h>
36#include <asm/mipsmtregs.h>
34#include <asm/pgtable.h> 37#include <asm/pgtable.h>
35#include <asm/page.h> 38#include <asm/page.h>
36#include <asm/system.h> 39#include <asm/system.h>
37#include <asm/uaccess.h> 40#include <asm/uaccess.h>
38#include <asm/bootinfo.h> 41#include <asm/bootinfo.h>
42#include <asm/reg.h>
39 43
40/* 44/*
41 * Called by kernel/ptrace.c when detaching.. 45 * Called by kernel/ptrace.c when detaching..
@@ -47,7 +51,130 @@ void ptrace_disable(struct task_struct *child)
47 /* Nothing to do.. */ 51 /* Nothing to do.. */
48} 52}
49 53
50asmlinkage int sys_ptrace(long request, long pid, long addr, long data) 54/*
55 * Read a general register set. We always use the 64-bit format, even
56 * for 32-bit kernels and for 32-bit processes on a 64-bit kernel.
57 * Registers are sign extended to fill the available space.
58 */
59int ptrace_getregs (struct task_struct *child, __s64 __user *data)
60{
61 struct pt_regs *regs;
62 int i;
63
64 if (!access_ok(VERIFY_WRITE, data, 38 * 8))
65 return -EIO;
66
67 regs = (struct pt_regs *) ((unsigned long) child->thread_info +
68 THREAD_SIZE - 32 - sizeof(struct pt_regs));
69
70 for (i = 0; i < 32; i++)
71 __put_user (regs->regs[i], data + i);
72 __put_user (regs->lo, data + EF_LO - EF_R0);
73 __put_user (regs->hi, data + EF_HI - EF_R0);
74 __put_user (regs->cp0_epc, data + EF_CP0_EPC - EF_R0);
75 __put_user (regs->cp0_badvaddr, data + EF_CP0_BADVADDR - EF_R0);
76 __put_user (regs->cp0_status, data + EF_CP0_STATUS - EF_R0);
77 __put_user (regs->cp0_cause, data + EF_CP0_CAUSE - EF_R0);
78
79 return 0;
80}
81
82/*
83 * Write a general register set. As for PTRACE_GETREGS, we always use
84 * the 64-bit format. On a 32-bit kernel only the lower order half
85 * (according to endianness) will be used.
86 */
87int ptrace_setregs (struct task_struct *child, __s64 __user *data)
88{
89 struct pt_regs *regs;
90 int i;
91
92 if (!access_ok(VERIFY_READ, data, 38 * 8))
93 return -EIO;
94
95 regs = (struct pt_regs *) ((unsigned long) child->thread_info +
96 THREAD_SIZE - 32 - sizeof(struct pt_regs));
97
98 for (i = 0; i < 32; i++)
99 __get_user (regs->regs[i], data + i);
100 __get_user (regs->lo, data + EF_LO - EF_R0);
101 __get_user (regs->hi, data + EF_HI - EF_R0);
102 __get_user (regs->cp0_epc, data + EF_CP0_EPC - EF_R0);
103
104 /* badvaddr, status, and cause may not be written. */
105
106 return 0;
107}
108
109int ptrace_getfpregs (struct task_struct *child, __u32 __user *data)
110{
111 int i;
112
113 if (!access_ok(VERIFY_WRITE, data, 33 * 8))
114 return -EIO;
115
116 if (tsk_used_math(child)) {
117 fpureg_t *fregs = get_fpu_regs(child);
118 for (i = 0; i < 32; i++)
119 __put_user (fregs[i], i + (__u64 __user *) data);
120 } else {
121 for (i = 0; i < 32; i++)
122 __put_user ((__u64) -1, i + (__u64 __user *) data);
123 }
124
125 if (cpu_has_fpu) {
126 unsigned int flags, tmp;
127
128 __put_user (child->thread.fpu.hard.fcr31, data + 64);
129
130 preempt_disable();
131 if (cpu_has_mipsmt) {
132 unsigned int vpflags = dvpe();
133 flags = read_c0_status();
134 __enable_fpu();
135 __asm__ __volatile__("cfc1\t%0,$0" : "=r" (tmp));
136 write_c0_status(flags);
137 evpe(vpflags);
138 } else {
139 flags = read_c0_status();
140 __enable_fpu();
141 __asm__ __volatile__("cfc1\t%0,$0" : "=r" (tmp));
142 write_c0_status(flags);
143 }
144 preempt_enable();
145 __put_user (tmp, data + 65);
146 } else {
147 __put_user (child->thread.fpu.soft.fcr31, data + 64);
148 __put_user ((__u32) 0, data + 65);
149 }
150
151 return 0;
152}
153
154int ptrace_setfpregs (struct task_struct *child, __u32 __user *data)
155{
156 fpureg_t *fregs;
157 int i;
158
159 if (!access_ok(VERIFY_READ, data, 33 * 8))
160 return -EIO;
161
162 fregs = get_fpu_regs(child);
163
164 for (i = 0; i < 32; i++)
165 __get_user (fregs[i], i + (__u64 __user *) data);
166
167 if (cpu_has_fpu)
168 __get_user (child->thread.fpu.hard.fcr31, data + 64);
169 else
170 __get_user (child->thread.fpu.soft.fcr31, data + 64);
171
172 /* FIR may not be written. */
173
174 return 0;
175}
176
177asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
51{ 178{
52 struct task_struct *child; 179 struct task_struct *child;
53 int ret; 180 int ret;
@@ -103,7 +230,7 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
103 ret = -EIO; 230 ret = -EIO;
104 if (copied != sizeof(tmp)) 231 if (copied != sizeof(tmp))
105 break; 232 break;
106 ret = put_user(tmp,(unsigned long *) data); 233 ret = put_user(tmp,(unsigned long __user *) data);
107 break; 234 break;
108 } 235 }
109 236
@@ -169,18 +296,53 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
169 if (!cpu_has_fpu) 296 if (!cpu_has_fpu)
170 break; 297 break;
171 298
172 flags = read_c0_status(); 299 preempt_disable();
173 __enable_fpu(); 300 if (cpu_has_mipsmt) {
174 __asm__ __volatile__("cfc1\t%0,$0": "=r" (tmp)); 301 unsigned int vpflags = dvpe();
175 write_c0_status(flags); 302 flags = read_c0_status();
303 __enable_fpu();
304 __asm__ __volatile__("cfc1\t%0,$0": "=r" (tmp));
305 write_c0_status(flags);
306 evpe(vpflags);
307 } else {
308 flags = read_c0_status();
309 __enable_fpu();
310 __asm__ __volatile__("cfc1\t%0,$0": "=r" (tmp));
311 write_c0_status(flags);
312 }
313 preempt_enable();
314 break;
315 }
316 case DSP_BASE ... DSP_BASE + 5: {
317 dspreg_t *dregs;
318
319 if (!cpu_has_dsp) {
320 tmp = 0;
321 ret = -EIO;
322 goto out_tsk;
323 }
324 if (child->thread.dsp.used_dsp) {
325 dregs = __get_dsp_regs(child);
326 tmp = (unsigned long) (dregs[addr - DSP_BASE]);
327 } else {
328 tmp = -1; /* DSP registers yet used */
329 }
176 break; 330 break;
177 } 331 }
332 case DSP_CONTROL:
333 if (!cpu_has_dsp) {
334 tmp = 0;
335 ret = -EIO;
336 goto out_tsk;
337 }
338 tmp = child->thread.dsp.dspcontrol;
339 break;
178 default: 340 default:
179 tmp = 0; 341 tmp = 0;
180 ret = -EIO; 342 ret = -EIO;
181 goto out_tsk; 343 goto out_tsk;
182 } 344 }
183 ret = put_user(tmp, (unsigned long *) data); 345 ret = put_user(tmp, (unsigned long __user *) data);
184 break; 346 break;
185 } 347 }
186 348
@@ -247,6 +409,25 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
247 else 409 else
248 child->thread.fpu.soft.fcr31 = data; 410 child->thread.fpu.soft.fcr31 = data;
249 break; 411 break;
412 case DSP_BASE ... DSP_BASE + 5: {
413 dspreg_t *dregs;
414
415 if (!cpu_has_dsp) {
416 ret = -EIO;
417 break;
418 }
419
420 dregs = __get_dsp_regs(child);
421 dregs[addr - DSP_BASE] = data;
422 break;
423 }
424 case DSP_CONTROL:
425 if (!cpu_has_dsp) {
426 ret = -EIO;
427 break;
428 }
429 child->thread.dsp.dspcontrol = data;
430 break;
250 default: 431 default:
251 /* The rest are not allowed. */ 432 /* The rest are not allowed. */
252 ret = -EIO; 433 ret = -EIO;
@@ -255,6 +436,22 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
255 break; 436 break;
256 } 437 }
257 438
439 case PTRACE_GETREGS:
440 ret = ptrace_getregs (child, (__u64 __user *) data);
441 break;
442
443 case PTRACE_SETREGS:
444 ret = ptrace_setregs (child, (__u64 __user *) data);
445 break;
446
447 case PTRACE_GETFPREGS:
448 ret = ptrace_getfpregs (child, (__u32 __user *) data);
449 break;
450
451 case PTRACE_SETFPREGS:
452 ret = ptrace_setfpregs (child, (__u32 __user *) data);
453 break;
454
258 case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */ 455 case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */
259 case PTRACE_CONT: { /* restart after signal. */ 456 case PTRACE_CONT: { /* restart after signal. */
260 ret = -EIO; 457 ret = -EIO;
@@ -289,6 +486,11 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
289 ret = ptrace_detach(child, data); 486 ret = ptrace_detach(child, data);
290 break; 487 break;
291 488
489 case PTRACE_GET_THREAD_AREA:
490 ret = put_user(child->thread_info->tp_value,
491 (unsigned long __user *) data);
492 break;
493
292 default: 494 default:
293 ret = ptrace_request(child, request, addr, data); 495 ret = ptrace_request(child, request, addr, data);
294 break; 496 break;
@@ -303,21 +505,14 @@ out:
303 505
304static inline int audit_arch(void) 506static inline int audit_arch(void)
305{ 507{
306#ifdef CONFIG_CPU_LITTLE_ENDIAN 508 int arch = EM_MIPS;
307#ifdef CONFIG_64BIT
308 if (!(current->thread.mflags & MF_32BIT_REGS))
309 return AUDIT_ARCH_MIPSEL64;
310#endif /* MIPS64 */
311 return AUDIT_ARCH_MIPSEL;
312
313#else /* big endian... */
314#ifdef CONFIG_64BIT 509#ifdef CONFIG_64BIT
315 if (!(current->thread.mflags & MF_32BIT_REGS)) 510 arch |= __AUDIT_ARCH_64BIT;
316 return AUDIT_ARCH_MIPS64; 511#endif
317#endif /* MIPS64 */ 512#if defined(__LITTLE_ENDIAN)
318 return AUDIT_ARCH_MIPS; 513 arch |= __AUDIT_ARCH_LE;
319 514#endif
320#endif /* endian */ 515 return arch;
321} 516}
322 517
323/* 518/*
@@ -327,12 +522,13 @@ static inline int audit_arch(void)
327asmlinkage void do_syscall_trace(struct pt_regs *regs, int entryexit) 522asmlinkage void do_syscall_trace(struct pt_regs *regs, int entryexit)
328{ 523{
329 if (unlikely(current->audit_context) && entryexit) 524 if (unlikely(current->audit_context) && entryexit)
330 audit_syscall_exit(current, AUDITSC_RESULT(regs->regs[2]), regs->regs[2]); 525 audit_syscall_exit(current, AUDITSC_RESULT(regs->regs[2]),
526 regs->regs[2]);
331 527
332 if (!test_thread_flag(TIF_SYSCALL_TRACE))
333 goto out;
334 if (!(current->ptrace & PT_PTRACED)) 528 if (!(current->ptrace & PT_PTRACED))
335 goto out; 529 goto out;
530 if (!test_thread_flag(TIF_SYSCALL_TRACE))
531 goto out;
336 532
337 /* The 0x80 provides a way for the tracing parent to distinguish 533 /* The 0x80 provides a way for the tracing parent to distinguish
338 between a syscall stop and SIGTRAP delivery */ 534 between a syscall stop and SIGTRAP delivery */
diff --git a/arch/mips/kernel/ptrace32.c b/arch/mips/kernel/ptrace32.c
index eee207969c21..9a9b04972132 100644
--- a/arch/mips/kernel/ptrace32.c
+++ b/arch/mips/kernel/ptrace32.c
@@ -24,17 +24,24 @@
24#include <linux/smp_lock.h> 24#include <linux/smp_lock.h>
25#include <linux/user.h> 25#include <linux/user.h>
26#include <linux/security.h> 26#include <linux/security.h>
27#include <linux/signal.h>
28 27
29#include <asm/cpu.h> 28#include <asm/cpu.h>
29#include <asm/dsp.h>
30#include <asm/fpu.h> 30#include <asm/fpu.h>
31#include <asm/mipsregs.h> 31#include <asm/mipsregs.h>
32#include <asm/mipsmtregs.h>
32#include <asm/pgtable.h> 33#include <asm/pgtable.h>
33#include <asm/page.h> 34#include <asm/page.h>
34#include <asm/system.h> 35#include <asm/system.h>
35#include <asm/uaccess.h> 36#include <asm/uaccess.h>
36#include <asm/bootinfo.h> 37#include <asm/bootinfo.h>
37 38
39int ptrace_getregs (struct task_struct *child, __s64 __user *data);
40int ptrace_setregs (struct task_struct *child, __s64 __user *data);
41
42int ptrace_getfpregs (struct task_struct *child, __u32 __user *data);
43int ptrace_setfpregs (struct task_struct *child, __u32 __user *data);
44
38/* 45/*
39 * Tracing a 32-bit process with a 64-bit strace and vice versa will not 46 * Tracing a 32-bit process with a 64-bit strace and vice versa will not
40 * work. I don't know how to fix this. 47 * work. I don't know how to fix this.
@@ -99,6 +106,35 @@ asmlinkage int sys32_ptrace(int request, int pid, int addr, int data)
99 break; 106 break;
100 } 107 }
101 108
109 /*
110 * Read 4 bytes of the other process' storage
111 * data is a pointer specifying where the user wants the
112 * 4 bytes copied into
113 * addr is a pointer in the user's storage that contains an 8 byte
114 * address in the other process of the 4 bytes that is to be read
115 * (this is run in a 32-bit process looking at a 64-bit process)
116 * when I and D space are separate, these will need to be fixed.
117 */
118 case PTRACE_PEEKTEXT_3264:
119 case PTRACE_PEEKDATA_3264: {
120 u32 tmp;
121 int copied;
122 u32 __user * addrOthers;
123
124 ret = -EIO;
125
126 /* Get the addr in the other process that we want to read */
127 if (get_user(addrOthers, (u32 __user * __user *) (unsigned long) addr) != 0)
128 break;
129
130 copied = access_process_vm(child, (u64)addrOthers, &tmp,
131 sizeof(tmp), 0);
132 if (copied != sizeof(tmp))
133 break;
134 ret = put_user(tmp, (u32 __user *) (unsigned long) data);
135 break;
136 }
137
102 /* Read the word at location addr in the USER area. */ 138 /* Read the word at location addr in the USER area. */
103 case PTRACE_PEEKUSR: { 139 case PTRACE_PEEKUSR: {
104 struct pt_regs *regs; 140 struct pt_regs *regs;
@@ -156,12 +192,44 @@ asmlinkage int sys32_ptrace(int request, int pid, int addr, int data)
156 if (!cpu_has_fpu) 192 if (!cpu_has_fpu)
157 break; 193 break;
158 194
159 flags = read_c0_status(); 195 preempt_disable();
160 __enable_fpu(); 196 if (cpu_has_mipsmt) {
161 __asm__ __volatile__("cfc1\t%0,$0": "=r" (tmp)); 197 unsigned int vpflags = dvpe();
162 write_c0_status(flags); 198 flags = read_c0_status();
199 __enable_fpu();
200 __asm__ __volatile__("cfc1\t%0,$0": "=r" (tmp));
201 write_c0_status(flags);
202 evpe(vpflags);
203 } else {
204 flags = read_c0_status();
205 __enable_fpu();
206 __asm__ __volatile__("cfc1\t%0,$0": "=r" (tmp));
207 write_c0_status(flags);
208 }
209 preempt_enable();
163 break; 210 break;
164 } 211 }
212 case DSP_BASE ... DSP_BASE + 5:
213 if (!cpu_has_dsp) {
214 tmp = 0;
215 ret = -EIO;
216 goto out_tsk;
217 }
218 if (child->thread.dsp.used_dsp) {
219 dspreg_t *dregs = __get_dsp_regs(child);
220 tmp = (unsigned long) (dregs[addr - DSP_BASE]);
221 } else {
222 tmp = -1; /* DSP registers yet used */
223 }
224 break;
225 case DSP_CONTROL:
226 if (!cpu_has_dsp) {
227 tmp = 0;
228 ret = -EIO;
229 goto out_tsk;
230 }
231 tmp = child->thread.dsp.dspcontrol;
232 break;
165 default: 233 default:
166 tmp = 0; 234 tmp = 0;
167 ret = -EIO; 235 ret = -EIO;
@@ -181,6 +249,31 @@ asmlinkage int sys32_ptrace(int request, int pid, int addr, int data)
181 ret = -EIO; 249 ret = -EIO;
182 break; 250 break;
183 251
252 /*
253 * Write 4 bytes into the other process' storage
254 * data is the 4 bytes that the user wants written
255 * addr is a pointer in the user's storage that contains an
256 * 8 byte address in the other process where the 4 bytes
257 * that is to be written
258 * (this is run in a 32-bit process looking at a 64-bit process)
259 * when I and D space are separate, these will need to be fixed.
260 */
261 case PTRACE_POKETEXT_3264:
262 case PTRACE_POKEDATA_3264: {
263 u32 __user * addrOthers;
264
265 /* Get the addr in the other process that we want to write into */
266 ret = -EIO;
267 if (get_user(addrOthers, (u32 __user * __user *) (unsigned long) addr) != 0)
268 break;
269 ret = 0;
270 if (access_process_vm(child, (u64)addrOthers, &data,
271 sizeof(data), 1) == sizeof(data))
272 break;
273 ret = -EIO;
274 break;
275 }
276
184 case PTRACE_POKEUSR: { 277 case PTRACE_POKEUSR: {
185 struct pt_regs *regs; 278 struct pt_regs *regs;
186 ret = 0; 279 ret = 0;
@@ -231,6 +324,22 @@ asmlinkage int sys32_ptrace(int request, int pid, int addr, int data)
231 else 324 else
232 child->thread.fpu.soft.fcr31 = data; 325 child->thread.fpu.soft.fcr31 = data;
233 break; 326 break;
327 case DSP_BASE ... DSP_BASE + 5:
328 if (!cpu_has_dsp) {
329 ret = -EIO;
330 break;
331 }
332
333 dspreg_t *dregs = __get_dsp_regs(child);
334 dregs[addr - DSP_BASE] = data;
335 break;
336 case DSP_CONTROL:
337 if (!cpu_has_dsp) {
338 ret = -EIO;
339 break;
340 }
341 child->thread.dsp.dspcontrol = data;
342 break;
234 default: 343 default:
235 /* The rest are not allowed. */ 344 /* The rest are not allowed. */
236 ret = -EIO; 345 ret = -EIO;
@@ -239,6 +348,22 @@ asmlinkage int sys32_ptrace(int request, int pid, int addr, int data)
239 break; 348 break;
240 } 349 }
241 350
351 case PTRACE_GETREGS:
352 ret = ptrace_getregs (child, (__u64 __user *) (__u64) data);
353 break;
354
355 case PTRACE_SETREGS:
356 ret = ptrace_setregs (child, (__u64 __user *) (__u64) data);
357 break;
358
359 case PTRACE_GETFPREGS:
360 ret = ptrace_getfpregs (child, (__u32 __user *) (__u64) data);
361 break;
362
363 case PTRACE_SETFPREGS:
364 ret = ptrace_setfpregs (child, (__u32 __user *) (__u64) data);
365 break;
366
242 case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */ 367 case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */
243 case PTRACE_CONT: { /* restart after signal. */ 368 case PTRACE_CONT: { /* restart after signal. */
244 ret = -EIO; 369 ret = -EIO;
@@ -269,10 +394,25 @@ asmlinkage int sys32_ptrace(int request, int pid, int addr, int data)
269 wake_up_process(child); 394 wake_up_process(child);
270 break; 395 break;
271 396
397 case PTRACE_GET_THREAD_AREA:
398 ret = put_user(child->thread_info->tp_value,
399 (unsigned int __user *) (unsigned long) data);
400 break;
401
272 case PTRACE_DETACH: /* detach a process that was attached. */ 402 case PTRACE_DETACH: /* detach a process that was attached. */
273 ret = ptrace_detach(child, data); 403 ret = ptrace_detach(child, data);
274 break; 404 break;
275 405
406 case PTRACE_GETEVENTMSG:
407 ret = put_user(child->ptrace_message,
408 (unsigned int __user *) (unsigned long) data);
409 break;
410
411 case PTRACE_GET_THREAD_AREA_3264:
412 ret = put_user(child->thread_info->tp_value,
413 (unsigned long __user *) (unsigned long) data);
414 break;
415
276 default: 416 default:
277 ret = ptrace_request(child, request, addr, data); 417 ret = ptrace_request(child, request, addr, data);
278 break; 418 break;
diff --git a/arch/mips/kernel/r4k_fpu.S b/arch/mips/kernel/r4k_fpu.S
index 1a14c6b18829..283a98508fc8 100644
--- a/arch/mips/kernel/r4k_fpu.S
+++ b/arch/mips/kernel/r4k_fpu.S
@@ -32,7 +32,7 @@
32 32
33 .set noreorder 33 .set noreorder
34 .set mips3 34 .set mips3
35 /* Save floating point context */ 35
36LEAF(_save_fp_context) 36LEAF(_save_fp_context)
37 cfc1 t1, fcr31 37 cfc1 t1, fcr31
38 38
@@ -74,9 +74,6 @@ LEAF(_save_fp_context)
74 EX sdc1 $f28, SC_FPREGS+224(a0) 74 EX sdc1 $f28, SC_FPREGS+224(a0)
75 EX sdc1 $f30, SC_FPREGS+240(a0) 75 EX sdc1 $f30, SC_FPREGS+240(a0)
76 EX sw t1, SC_FPC_CSR(a0) 76 EX sw t1, SC_FPC_CSR(a0)
77 cfc1 t0, $0 # implementation/version
78 EX sw t0, SC_FPC_EIR(a0)
79
80 jr ra 77 jr ra
81 li v0, 0 # success 78 li v0, 0 # success
82 END(_save_fp_context) 79 END(_save_fp_context)
diff --git a/arch/mips/kernel/rtlx.c b/arch/mips/kernel/rtlx.c
new file mode 100644
index 000000000000..8c81f3cb4e2d
--- /dev/null
+++ b/arch/mips/kernel/rtlx.c
@@ -0,0 +1,341 @@
1/*
2 * Copyright (C) 2005 MIPS Technologies, Inc. All rights reserved.
3 *
4 * This program is free software; you can distribute it and/or modify it
5 * under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * for more details.
12 *
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 *
17 */
18
19#include <linux/kernel.h>
20#include <linux/module.h>
21#include <linux/fs.h>
22#include <linux/init.h>
23#include <asm/uaccess.h>
24#include <linux/slab.h>
25#include <linux/list.h>
26#include <linux/vmalloc.h>
27#include <linux/elf.h>
28#include <linux/seq_file.h>
29#include <linux/syscalls.h>
30#include <linux/moduleloader.h>
31#include <linux/interrupt.h>
32#include <linux/poll.h>
33#include <linux/sched.h>
34#include <linux/wait.h>
35#include <asm/mipsmtregs.h>
36#include <asm/cacheflush.h>
37#include <asm/atomic.h>
38#include <asm/cpu.h>
39#include <asm/processor.h>
40#include <asm/system.h>
41#include <asm/rtlx.h>
42
43#define RTLX_MAJOR 64
44#define RTLX_TARG_VPE 1
45
46struct rtlx_info *rtlx;
47static int major;
48static char module_name[] = "rtlx";
49static inline int spacefree(int read, int write, int size);
50
51static struct chan_waitqueues {
52 wait_queue_head_t rt_queue;
53 wait_queue_head_t lx_queue;
54} channel_wqs[RTLX_CHANNELS];
55
56static struct irqaction irq;
57static int irq_num;
58
59extern void *vpe_get_shared(int index);
60
61static void rtlx_dispatch(struct pt_regs *regs)
62{
63 do_IRQ(MIPSCPU_INT_BASE + MIPS_CPU_RTLX_IRQ, regs);
64}
65
66irqreturn_t rtlx_interrupt(int irq, void *dev_id, struct pt_regs *regs)
67{
68 irqreturn_t r = IRQ_HANDLED;
69 int i;
70
71 for (i = 0; i < RTLX_CHANNELS; i++) {
72 struct rtlx_channel *chan = &rtlx->channel[i];
73
74 if (chan->lx_read != chan->lx_write)
75 wake_up_interruptible(&channel_wqs[i].lx_queue);
76 }
77
78 return r;
79}
80
81void dump_rtlx(void)
82{
83 int i;
84
85 printk("id 0x%lx state %d\n", rtlx->id, rtlx->state);
86
87 for (i = 0; i < RTLX_CHANNELS; i++) {
88 struct rtlx_channel *chan = &rtlx->channel[i];
89
90 printk(" rt_state %d lx_state %d buffer_size %d\n",
91 chan->rt_state, chan->lx_state, chan->buffer_size);
92
93 printk(" rt_read %d rt_write %d\n",
94 chan->rt_read, chan->rt_write);
95
96 printk(" lx_read %d lx_write %d\n",
97 chan->lx_read, chan->lx_write);
98
99 printk(" rt_buffer <%s>\n", chan->rt_buffer);
100 printk(" lx_buffer <%s>\n", chan->lx_buffer);
101 }
102}
103
104/* call when we have the address of the shared structure from the SP side. */
105static int rtlx_init(struct rtlx_info *rtlxi)
106{
107 int i;
108
109 if (rtlxi->id != RTLX_ID) {
110 printk(KERN_WARNING "no valid RTLX id at 0x%p\n", rtlxi);
111 return (-ENOEXEC);
112 }
113
114 /* initialise the wait queues */
115 for (i = 0; i < RTLX_CHANNELS; i++) {
116 init_waitqueue_head(&channel_wqs[i].rt_queue);
117 init_waitqueue_head(&channel_wqs[i].lx_queue);
118 }
119
120 /* set up for interrupt handling */
121 memset(&irq, 0, sizeof(struct irqaction));
122
123 if (cpu_has_vint) {
124 set_vi_handler(MIPS_CPU_RTLX_IRQ, rtlx_dispatch);
125 }
126
127 irq_num = MIPSCPU_INT_BASE + MIPS_CPU_RTLX_IRQ;
128 irq.handler = rtlx_interrupt;
129 irq.flags = SA_INTERRUPT;
130 irq.name = "RTLX";
131 irq.dev_id = rtlx;
132 setup_irq(irq_num, &irq);
133
134 rtlx = rtlxi;
135 return (0);
136}
137
138/* only allow one open process at a time to open each channel */
139static int rtlx_open(struct inode *inode, struct file *filp)
140{
141 int minor, ret;
142 struct rtlx_channel *chan;
143
144 /* assume only 1 device at the mo. */
145 minor = MINOR(inode->i_rdev);
146
147 if (rtlx == NULL) {
148 struct rtlx_info **p;
149 if( (p = vpe_get_shared(RTLX_TARG_VPE)) == NULL) {
150 printk(" vpe_get_shared is NULL. Has an SP program been loaded?\n");
151 return (-EFAULT);
152 }
153
154 if (*p == NULL) {
155 printk(" vpe_shared %p %p\n", p, *p);
156 return (-EFAULT);
157 }
158
159 if ((ret = rtlx_init(*p)) < 0)
160 return (ret);
161 }
162
163 chan = &rtlx->channel[minor];
164
165 /* already open? */
166 if (chan->lx_state == RTLX_STATE_OPENED)
167 return (-EBUSY);
168
169 chan->lx_state = RTLX_STATE_OPENED;
170 return (0);
171}
172
173static int rtlx_release(struct inode *inode, struct file *filp)
174{
175 int minor;
176
177 minor = MINOR(inode->i_rdev);
178 rtlx->channel[minor].lx_state = RTLX_STATE_UNUSED;
179 return (0);
180}
181
182static unsigned int rtlx_poll(struct file *file, poll_table * wait)
183{
184 int minor;
185 unsigned int mask = 0;
186 struct rtlx_channel *chan;
187
188 minor = MINOR(file->f_dentry->d_inode->i_rdev);
189 chan = &rtlx->channel[minor];
190
191 poll_wait(file, &channel_wqs[minor].rt_queue, wait);
192 poll_wait(file, &channel_wqs[minor].lx_queue, wait);
193
194 /* data available to read? */
195 if (chan->lx_read != chan->lx_write)
196 mask |= POLLIN | POLLRDNORM;
197
198 /* space to write */
199 if (spacefree(chan->rt_read, chan->rt_write, chan->buffer_size))
200 mask |= POLLOUT | POLLWRNORM;
201
202 return (mask);
203}
204
205static ssize_t rtlx_read(struct file *file, char __user * buffer, size_t count,
206 loff_t * ppos)
207{
208 size_t fl = 0L;
209 int minor;
210 struct rtlx_channel *lx;
211 DECLARE_WAITQUEUE(wait, current);
212
213 minor = MINOR(file->f_dentry->d_inode->i_rdev);
214 lx = &rtlx->channel[minor];
215
216 /* data available? */
217 if (lx->lx_write == lx->lx_read) {
218 if (file->f_flags & O_NONBLOCK)
219 return (0); // -EAGAIN makes cat whinge
220
221 /* go to sleep */
222 add_wait_queue(&channel_wqs[minor].lx_queue, &wait);
223 set_current_state(TASK_INTERRUPTIBLE);
224
225 while (lx->lx_write == lx->lx_read)
226 schedule();
227
228 set_current_state(TASK_RUNNING);
229 remove_wait_queue(&channel_wqs[minor].lx_queue, &wait);
230
231 /* back running */
232 }
233
234 /* find out how much in total */
235 count = min( count,
236 (size_t)(lx->lx_write + lx->buffer_size - lx->lx_read) % lx->buffer_size);
237
238 /* then how much from the read pointer onwards */
239 fl = min( count, (size_t)lx->buffer_size - lx->lx_read);
240
241 copy_to_user (buffer, &lx->lx_buffer[lx->lx_read], fl);
242
243 /* and if there is anything left at the beginning of the buffer */
244 if ( count - fl )
245 copy_to_user (buffer + fl, lx->lx_buffer, count - fl);
246
247 /* update the index */
248 lx->lx_read += count;
249 lx->lx_read %= lx->buffer_size;
250
251 return (count);
252}
253
254static inline int spacefree(int read, int write, int size)
255{
256 if (read == write) {
257 /* never fill the buffer completely, so indexes are always equal if empty
258 and only empty, or !equal if data available */
259 return (size - 1);
260 }
261
262 return ((read + size - write) % size) - 1;
263}
264
265static ssize_t rtlx_write(struct file *file, const char __user * buffer,
266 size_t count, loff_t * ppos)
267{
268 int minor;
269 struct rtlx_channel *rt;
270 size_t fl;
271 DECLARE_WAITQUEUE(wait, current);
272
273 minor = MINOR(file->f_dentry->d_inode->i_rdev);
274 rt = &rtlx->channel[minor];
275
276 /* any space left... */
277 if (!spacefree(rt->rt_read, rt->rt_write, rt->buffer_size)) {
278
279 if (file->f_flags & O_NONBLOCK)
280 return (-EAGAIN);
281
282 add_wait_queue(&channel_wqs[minor].rt_queue, &wait);
283 set_current_state(TASK_INTERRUPTIBLE);
284
285 while (!spacefree(rt->rt_read, rt->rt_write, rt->buffer_size))
286 schedule();
287
288 set_current_state(TASK_RUNNING);
289 remove_wait_queue(&channel_wqs[minor].rt_queue, &wait);
290 }
291
292 /* total number of bytes to copy */
293 count = min( count, (size_t)spacefree(rt->rt_read, rt->rt_write, rt->buffer_size) );
294
295 /* first bit from write pointer to the end of the buffer, or count */
296 fl = min(count, (size_t) rt->buffer_size - rt->rt_write);
297
298 copy_from_user(&rt->rt_buffer[rt->rt_write], buffer, fl);
299
300 /* if there's any left copy to the beginning of the buffer */
301 if( count - fl )
302 copy_from_user(rt->rt_buffer, buffer + fl, count - fl);
303
304 rt->rt_write += count;
305 rt->rt_write %= rt->buffer_size;
306
307 return(count);
308}
309
310static struct file_operations rtlx_fops = {
311 .owner = THIS_MODULE,
312 .open = rtlx_open,
313 .release = rtlx_release,
314 .write = rtlx_write,
315 .read = rtlx_read,
316 .poll = rtlx_poll
317};
318
319static int rtlx_module_init(void)
320{
321 if ((major = register_chrdev(RTLX_MAJOR, module_name, &rtlx_fops)) < 0) {
322 printk("rtlx_module_init: unable to register device\n");
323 return (-EBUSY);
324 }
325
326 if (major == 0)
327 major = RTLX_MAJOR;
328
329 return (0);
330}
331
332static void rtlx_module_exit(void)
333{
334 unregister_chrdev(major, module_name);
335}
336
337module_init(rtlx_module_init);
338module_exit(rtlx_module_exit);
339MODULE_DESCRIPTION("MIPS RTLX");
340MODULE_AUTHOR("Elizabeth Clarke, MIPS Technologies, Inc");
341MODULE_LICENSE("GPL");
diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S
index 17b5030fb6ea..4dd8e8b4fbc2 100644
--- a/arch/mips/kernel/scall32-o32.S
+++ b/arch/mips/kernel/scall32-o32.S
@@ -578,7 +578,7 @@ einval: li v0, -EINVAL
578 sys sys_fremovexattr 2 /* 4235 */ 578 sys sys_fremovexattr 2 /* 4235 */
579 sys sys_tkill 2 579 sys sys_tkill 2
580 sys sys_sendfile64 5 580 sys sys_sendfile64 5
581 sys sys_futex 2 581 sys sys_futex 6
582 sys sys_sched_setaffinity 3 582 sys sys_sched_setaffinity 3
583 sys sys_sched_getaffinity 3 /* 4240 */ 583 sys sys_sched_getaffinity 3 /* 4240 */
584 sys sys_io_setup 2 584 sys sys_io_setup 2
@@ -587,7 +587,7 @@ einval: li v0, -EINVAL
587 sys sys_io_submit 3 587 sys sys_io_submit 3
588 sys sys_io_cancel 3 /* 4245 */ 588 sys sys_io_cancel 3 /* 4245 */
589 sys sys_exit_group 1 589 sys sys_exit_group 1
590 sys sys_lookup_dcookie 3 590 sys sys_lookup_dcookie 4
591 sys sys_epoll_create 1 591 sys sys_epoll_create 1
592 sys sys_epoll_ctl 4 592 sys sys_epoll_ctl 4
593 sys sys_epoll_wait 3 /* 4250 */ 593 sys sys_epoll_wait 3 /* 4250 */
@@ -618,12 +618,15 @@ einval: li v0, -EINVAL
618 sys sys_mq_notify 2 /* 4275 */ 618 sys sys_mq_notify 2 /* 4275 */
619 sys sys_mq_getsetattr 3 619 sys sys_mq_getsetattr 3
620 sys sys_ni_syscall 0 /* sys_vserver */ 620 sys sys_ni_syscall 0 /* sys_vserver */
621 sys sys_waitid 4 621 sys sys_waitid 5
622 sys sys_ni_syscall 0 /* available, was setaltroot */ 622 sys sys_ni_syscall 0 /* available, was setaltroot */
623 sys sys_add_key 5 623 sys sys_add_key 5 /* 4280 */
624 sys sys_request_key 4 624 sys sys_request_key 4
625 sys sys_keyctl 5 625 sys sys_keyctl 5
626 626 sys sys_set_thread_area 1
627 sys sys_inotify_init 0
628 sys sys_inotify_add_watch 3 /* 4285 */
629 sys sys_inotify_rm_watch 2
627 .endm 630 .endm
628 631
629 /* We pre-compute the number of _instruction_ bytes needed to 632 /* We pre-compute the number of _instruction_ bytes needed to
diff --git a/arch/mips/kernel/scall64-64.S b/arch/mips/kernel/scall64-64.S
index ffb22a2068bf..9085838d6ce3 100644
--- a/arch/mips/kernel/scall64-64.S
+++ b/arch/mips/kernel/scall64-64.S
@@ -449,3 +449,7 @@ sys_call_table:
449 PTR sys_add_key 449 PTR sys_add_key
450 PTR sys_request_key /* 5240 */ 450 PTR sys_request_key /* 5240 */
451 PTR sys_keyctl 451 PTR sys_keyctl
452 PTR sys_set_thread_area
453 PTR sys_inotify_init
454 PTR sys_inotify_add_watch
455 PTR sys_inotify_rm_watch /* 5245 */
diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S
index e52049c87bc3..7e66eb823bf6 100644
--- a/arch/mips/kernel/scall64-n32.S
+++ b/arch/mips/kernel/scall64-n32.S
@@ -176,7 +176,7 @@ EXPORT(sysn32_call_table)
176 PTR sys_fork 176 PTR sys_fork
177 PTR sys32_execve 177 PTR sys32_execve
178 PTR sys_exit 178 PTR sys_exit
179 PTR sys32_wait4 179 PTR compat_sys_wait4
180 PTR sys_kill /* 6060 */ 180 PTR sys_kill /* 6060 */
181 PTR sys32_newuname 181 PTR sys32_newuname
182 PTR sys_semget 182 PTR sys_semget
@@ -216,7 +216,7 @@ EXPORT(sysn32_call_table)
216 PTR compat_sys_getrusage 216 PTR compat_sys_getrusage
217 PTR sys32_sysinfo 217 PTR sys32_sysinfo
218 PTR compat_sys_times 218 PTR compat_sys_times
219 PTR sys_ptrace 219 PTR sys32_ptrace
220 PTR sys_getuid /* 6100 */ 220 PTR sys_getuid /* 6100 */
221 PTR sys_syslog 221 PTR sys_syslog
222 PTR sys_getgid 222 PTR sys_getgid
@@ -243,14 +243,14 @@ EXPORT(sysn32_call_table)
243 PTR sys_capget 243 PTR sys_capget
244 PTR sys_capset 244 PTR sys_capset
245 PTR sys32_rt_sigpending /* 6125 */ 245 PTR sys32_rt_sigpending /* 6125 */
246 PTR compat_sys_rt_sigtimedwait 246 PTR sysn32_rt_sigtimedwait
247 PTR sys32_rt_sigqueueinfo 247 PTR sys_rt_sigqueueinfo
248 PTR sys32_rt_sigsuspend 248 PTR sys32_rt_sigsuspend
249 PTR sys32_sigaltstack 249 PTR sys32_sigaltstack
250 PTR compat_sys_utime /* 6130 */ 250 PTR compat_sys_utime /* 6130 */
251 PTR sys_mknod 251 PTR sys_mknod
252 PTR sys32_personality 252 PTR sys32_personality
253 PTR sys_ustat 253 PTR sys32_ustat
254 PTR compat_sys_statfs 254 PTR compat_sys_statfs
255 PTR compat_sys_fstatfs /* 6135 */ 255 PTR compat_sys_fstatfs /* 6135 */
256 PTR sys_sysfs 256 PTR sys_sysfs
@@ -329,7 +329,7 @@ EXPORT(sysn32_call_table)
329 PTR sys_epoll_wait 329 PTR sys_epoll_wait
330 PTR sys_remap_file_pages /* 6210 */ 330 PTR sys_remap_file_pages /* 6210 */
331 PTR sysn32_rt_sigreturn 331 PTR sysn32_rt_sigreturn
332 PTR sys_fcntl 332 PTR compat_sys_fcntl64
333 PTR sys_set_tid_address 333 PTR sys_set_tid_address
334 PTR sys_restart_syscall 334 PTR sys_restart_syscall
335 PTR sys_semtimedop /* 6215 */ 335 PTR sys_semtimedop /* 6215 */
@@ -337,15 +337,15 @@ EXPORT(sysn32_call_table)
337 PTR compat_sys_statfs64 337 PTR compat_sys_statfs64
338 PTR compat_sys_fstatfs64 338 PTR compat_sys_fstatfs64
339 PTR sys_sendfile64 339 PTR sys_sendfile64
340 PTR sys_timer_create /* 6220 */ 340 PTR sys32_timer_create /* 6220 */
341 PTR sys_timer_settime 341 PTR compat_sys_timer_settime
342 PTR sys_timer_gettime 342 PTR compat_sys_timer_gettime
343 PTR sys_timer_getoverrun 343 PTR sys_timer_getoverrun
344 PTR sys_timer_delete 344 PTR sys_timer_delete
345 PTR sys_clock_settime /* 6225 */ 345 PTR compat_sys_clock_settime /* 6225 */
346 PTR sys_clock_gettime 346 PTR compat_sys_clock_gettime
347 PTR sys_clock_getres 347 PTR compat_sys_clock_getres
348 PTR sys_clock_nanosleep 348 PTR compat_sys_clock_nanosleep
349 PTR sys_tgkill 349 PTR sys_tgkill
350 PTR compat_sys_utimes /* 6230 */ 350 PTR compat_sys_utimes /* 6230 */
351 PTR sys_ni_syscall /* sys_mbind */ 351 PTR sys_ni_syscall /* sys_mbind */
@@ -358,8 +358,12 @@ EXPORT(sysn32_call_table)
358 PTR compat_sys_mq_notify 358 PTR compat_sys_mq_notify
359 PTR compat_sys_mq_getsetattr 359 PTR compat_sys_mq_getsetattr
360 PTR sys_ni_syscall /* 6240, sys_vserver */ 360 PTR sys_ni_syscall /* 6240, sys_vserver */
361 PTR sys_waitid 361 PTR sysn32_waitid
362 PTR sys_ni_syscall /* available, was setaltroot */ 362 PTR sys_ni_syscall /* available, was setaltroot */
363 PTR sys_add_key 363 PTR sys_add_key
364 PTR sys_request_key 364 PTR sys_request_key
365 PTR sys_keyctl /* 6245 */ 365 PTR sys_keyctl /* 6245 */
366 PTR sys_set_thread_area
367 PTR sys_inotify_init
368 PTR sys_inotify_add_watch
369 PTR sys_inotify_rm_watch
diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S
index 739f3998d76b..5a16401e443a 100644
--- a/arch/mips/kernel/scall64-o32.S
+++ b/arch/mips/kernel/scall64-o32.S
@@ -316,13 +316,13 @@ sys_call_table:
316 PTR sys_vhangup 316 PTR sys_vhangup
317 PTR sys_ni_syscall /* was sys_idle */ 317 PTR sys_ni_syscall /* was sys_idle */
318 PTR sys_ni_syscall /* sys_vm86 */ 318 PTR sys_ni_syscall /* sys_vm86 */
319 PTR sys32_wait4 319 PTR compat_sys_wait4
320 PTR sys_swapoff /* 4115 */ 320 PTR sys_swapoff /* 4115 */
321 PTR sys32_sysinfo 321 PTR sys32_sysinfo
322 PTR sys32_ipc 322 PTR sys32_ipc
323 PTR sys_fsync 323 PTR sys_fsync
324 PTR sys32_sigreturn 324 PTR sys32_sigreturn
325 PTR sys_clone /* 4120 */ 325 PTR sys32_clone /* 4120 */
326 PTR sys_setdomainname 326 PTR sys_setdomainname
327 PTR sys32_newuname 327 PTR sys32_newuname
328 PTR sys_ni_syscall /* sys_modify_ldt */ 328 PTR sys_ni_syscall /* sys_modify_ldt */
@@ -391,7 +391,7 @@ sys_call_table:
391 PTR sys_getresuid 391 PTR sys_getresuid
392 PTR sys_ni_syscall /* was query_module */ 392 PTR sys_ni_syscall /* was query_module */
393 PTR sys_poll 393 PTR sys_poll
394 PTR sys_nfsservctl 394 PTR compat_sys_nfsservctl
395 PTR sys_setresgid /* 4190 */ 395 PTR sys_setresgid /* 4190 */
396 PTR sys_getresgid 396 PTR sys_getresgid
397 PTR sys_prctl 397 PTR sys_prctl
@@ -459,7 +459,7 @@ sys_call_table:
459 PTR sys_fadvise64_64 459 PTR sys_fadvise64_64
460 PTR compat_sys_statfs64 /* 4255 */ 460 PTR compat_sys_statfs64 /* 4255 */
461 PTR compat_sys_fstatfs64 461 PTR compat_sys_fstatfs64
462 PTR sys_timer_create 462 PTR sys32_timer_create
463 PTR compat_sys_timer_settime 463 PTR compat_sys_timer_settime
464 PTR compat_sys_timer_gettime 464 PTR compat_sys_timer_gettime
465 PTR sys_timer_getoverrun /* 4260 */ 465 PTR sys_timer_getoverrun /* 4260 */
@@ -480,9 +480,13 @@ sys_call_table:
480 PTR compat_sys_mq_notify /* 4275 */ 480 PTR compat_sys_mq_notify /* 4275 */
481 PTR compat_sys_mq_getsetattr 481 PTR compat_sys_mq_getsetattr
482 PTR sys_ni_syscall /* sys_vserver */ 482 PTR sys_ni_syscall /* sys_vserver */
483 PTR sys_waitid 483 PTR sys32_waitid
484 PTR sys_ni_syscall /* available, was setaltroot */ 484 PTR sys_ni_syscall /* available, was setaltroot */
485 PTR sys_add_key /* 4280 */ 485 PTR sys_add_key /* 4280 */
486 PTR sys_request_key 486 PTR sys_request_key
487 PTR sys_keyctl 487 PTR sys_keyctl
488 PTR sys_set_thread_area
489 PTR sys_inotify_init
490 PTR sys_inotify_add_watch /* 4285 */
491 PTR sys_inotify_rm_watch
488 .size sys_call_table,.-sys_call_table 492 .size sys_call_table,.-sys_call_table
diff --git a/arch/mips/kernel/semaphore.c b/arch/mips/kernel/semaphore.c
index 9c40fe5a8e8d..1265358cdca1 100644
--- a/arch/mips/kernel/semaphore.c
+++ b/arch/mips/kernel/semaphore.c
@@ -42,24 +42,28 @@ static inline int __sem_update_count(struct semaphore *sem, int incr)
42 42
43 if (cpu_has_llsc && R10000_LLSC_WAR) { 43 if (cpu_has_llsc && R10000_LLSC_WAR) {
44 __asm__ __volatile__( 44 __asm__ __volatile__(
45 "1: ll %0, %2 \n" 45 " .set mips3 \n"
46 "1: ll %0, %2 # __sem_update_count \n"
46 " sra %1, %0, 31 \n" 47 " sra %1, %0, 31 \n"
47 " not %1 \n" 48 " not %1 \n"
48 " and %1, %0, %1 \n" 49 " and %1, %0, %1 \n"
49 " add %1, %1, %3 \n" 50 " addu %1, %1, %3 \n"
50 " sc %1, %2 \n" 51 " sc %1, %2 \n"
51 " beqzl %1, 1b \n" 52 " beqzl %1, 1b \n"
53 " .set mips0 \n"
52 : "=&r" (old_count), "=&r" (tmp), "=m" (sem->count) 54 : "=&r" (old_count), "=&r" (tmp), "=m" (sem->count)
53 : "r" (incr), "m" (sem->count)); 55 : "r" (incr), "m" (sem->count));
54 } else if (cpu_has_llsc) { 56 } else if (cpu_has_llsc) {
55 __asm__ __volatile__( 57 __asm__ __volatile__(
56 "1: ll %0, %2 \n" 58 " .set mips3 \n"
59 "1: ll %0, %2 # __sem_update_count \n"
57 " sra %1, %0, 31 \n" 60 " sra %1, %0, 31 \n"
58 " not %1 \n" 61 " not %1 \n"
59 " and %1, %0, %1 \n" 62 " and %1, %0, %1 \n"
60 " add %1, %1, %3 \n" 63 " addu %1, %1, %3 \n"
61 " sc %1, %2 \n" 64 " sc %1, %2 \n"
62 " beqz %1, 1b \n" 65 " beqz %1, 1b \n"
66 " .set mips0 \n"
63 : "=&r" (old_count), "=&r" (tmp), "=m" (sem->count) 67 : "=&r" (old_count), "=&r" (tmp), "=m" (sem->count)
64 : "r" (incr), "m" (sem->count)); 68 : "r" (incr), "m" (sem->count));
65 } else { 69 } else {
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c
index 12b531c295c4..d86affa21278 100644
--- a/arch/mips/kernel/setup.c
+++ b/arch/mips/kernel/setup.c
@@ -37,12 +37,13 @@
37 37
38#include <asm/addrspace.h> 38#include <asm/addrspace.h>
39#include <asm/bootinfo.h> 39#include <asm/bootinfo.h>
40#include <asm/cache.h>
40#include <asm/cpu.h> 41#include <asm/cpu.h>
41#include <asm/sections.h> 42#include <asm/sections.h>
42#include <asm/setup.h> 43#include <asm/setup.h>
43#include <asm/system.h> 44#include <asm/system.h>
44 45
45struct cpuinfo_mips cpu_data[NR_CPUS]; 46struct cpuinfo_mips cpu_data[NR_CPUS] __read_mostly;
46 47
47EXPORT_SYMBOL(cpu_data); 48EXPORT_SYMBOL(cpu_data);
48 49
@@ -62,8 +63,8 @@ EXPORT_SYMBOL(PCI_DMA_BUS_IS_PHYS);
62 * 63 *
63 * These are initialized so they are in the .data section 64 * These are initialized so they are in the .data section
64 */ 65 */
65unsigned long mips_machtype = MACH_UNKNOWN; 66unsigned long mips_machtype __read_mostly = MACH_UNKNOWN;
66unsigned long mips_machgroup = MACH_GROUP_UNKNOWN; 67unsigned long mips_machgroup __read_mostly = MACH_GROUP_UNKNOWN;
67 68
68EXPORT_SYMBOL(mips_machtype); 69EXPORT_SYMBOL(mips_machtype);
69EXPORT_SYMBOL(mips_machgroup); 70EXPORT_SYMBOL(mips_machgroup);
@@ -77,7 +78,7 @@ static char command_line[CL_SIZE];
77 * mips_io_port_base is the begin of the address space to which x86 style 78 * mips_io_port_base is the begin of the address space to which x86 style
78 * I/O ports are mapped. 79 * I/O ports are mapped.
79 */ 80 */
80const unsigned long mips_io_port_base = -1; 81const unsigned long mips_io_port_base __read_mostly = -1;
81EXPORT_SYMBOL(mips_io_port_base); 82EXPORT_SYMBOL(mips_io_port_base);
82 83
83/* 84/*
@@ -510,31 +511,7 @@ static inline void resource_init(void)
510#undef MAXMEM 511#undef MAXMEM
511#undef MAXMEM_PFN 512#undef MAXMEM_PFN
512 513
513static int __initdata earlyinit_debug; 514extern void plat_setup(void);
514
515static int __init earlyinit_debug_setup(char *str)
516{
517 earlyinit_debug = 1;
518 return 1;
519}
520__setup("earlyinit_debug", earlyinit_debug_setup);
521
522extern initcall_t __earlyinitcall_start, __earlyinitcall_end;
523
524static void __init do_earlyinitcalls(void)
525{
526 initcall_t *call, *start, *end;
527
528 start = &__earlyinitcall_start;
529 end = &__earlyinitcall_end;
530
531 for (call = start; call < end; call++) {
532 if (earlyinit_debug)
533 printk("calling earlyinitcall 0x%p\n", *call);
534
535 (*call)();
536 }
537}
538 515
539void __init setup_arch(char **cmdline_p) 516void __init setup_arch(char **cmdline_p)
540{ 517{
@@ -551,7 +528,7 @@ void __init setup_arch(char **cmdline_p)
551#endif 528#endif
552 529
553 /* call board setup routine */ 530 /* call board setup routine */
554 do_earlyinitcalls(); 531 plat_setup();
555 532
556 strlcpy(command_line, arcs_cmdline, sizeof(command_line)); 533 strlcpy(command_line, arcs_cmdline, sizeof(command_line));
557 strlcpy(saved_command_line, command_line, COMMAND_LINE_SIZE); 534 strlcpy(saved_command_line, command_line, COMMAND_LINE_SIZE);
@@ -573,3 +550,12 @@ int __init fpu_disable(char *s)
573} 550}
574 551
575__setup("nofpu", fpu_disable); 552__setup("nofpu", fpu_disable);
553
554int __init dsp_disable(char *s)
555{
556 cpu_data[0].ases &= ~MIPS_ASE_DSP;
557
558 return 1;
559}
560
561__setup("nodsp", dsp_disable);
diff --git a/arch/mips/kernel/signal-common.h b/arch/mips/kernel/signal-common.h
index f9234df53253..0f66ae5838b9 100644
--- a/arch/mips/kernel/signal-common.h
+++ b/arch/mips/kernel/signal-common.h
@@ -8,13 +8,14 @@
8 * Copyright (C) 1999, 2000 Silicon Graphics, Inc. 8 * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
9 */ 9 */
10 10
11#include <linux/config.h>
12
11static inline int 13static inline int
12setup_sigcontext(struct pt_regs *regs, struct sigcontext *sc) 14setup_sigcontext(struct pt_regs *regs, struct sigcontext *sc)
13{ 15{
14 int err = 0; 16 int err = 0;
15 17
16 err |= __put_user(regs->cp0_epc, &sc->sc_pc); 18 err |= __put_user(regs->cp0_epc, &sc->sc_pc);
17 err |= __put_user(regs->cp0_status, &sc->sc_status);
18 19
19#define save_gp_reg(i) do { \ 20#define save_gp_reg(i) do { \
20 err |= __put_user(regs->regs[i], &sc->sc_regs[i]); \ 21 err |= __put_user(regs->regs[i], &sc->sc_regs[i]); \
@@ -30,10 +31,32 @@ setup_sigcontext(struct pt_regs *regs, struct sigcontext *sc)
30 save_gp_reg(31); 31 save_gp_reg(31);
31#undef save_gp_reg 32#undef save_gp_reg
32 33
34#ifdef CONFIG_32BIT
33 err |= __put_user(regs->hi, &sc->sc_mdhi); 35 err |= __put_user(regs->hi, &sc->sc_mdhi);
34 err |= __put_user(regs->lo, &sc->sc_mdlo); 36 err |= __put_user(regs->lo, &sc->sc_mdlo);
35 err |= __put_user(regs->cp0_cause, &sc->sc_cause); 37 if (cpu_has_dsp) {
36 err |= __put_user(regs->cp0_badvaddr, &sc->sc_badvaddr); 38 err |= __put_user(mfhi1(), &sc->sc_hi1);
39 err |= __put_user(mflo1(), &sc->sc_lo1);
40 err |= __put_user(mfhi2(), &sc->sc_hi2);
41 err |= __put_user(mflo2(), &sc->sc_lo2);
42 err |= __put_user(mfhi3(), &sc->sc_hi3);
43 err |= __put_user(mflo3(), &sc->sc_lo3);
44 err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp);
45 }
46#endif
47#ifdef CONFIG_64BIT
48 err |= __put_user(regs->hi, &sc->sc_hi[0]);
49 err |= __put_user(regs->lo, &sc->sc_lo[0]);
50 if (cpu_has_dsp) {
51 err |= __put_user(mfhi1(), &sc->sc_hi[1]);
52 err |= __put_user(mflo1(), &sc->sc_lo[1]);
53 err |= __put_user(mfhi2(), &sc->sc_hi[2]);
54 err |= __put_user(mflo2(), &sc->sc_lo[2]);
55 err |= __put_user(mfhi3(), &sc->sc_hi[3]);
56 err |= __put_user(mflo3(), &sc->sc_lo[3]);
57 err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp);
58 }
59#endif
37 60
38 err |= __put_user(!!used_math(), &sc->sc_used_math); 61 err |= __put_user(!!used_math(), &sc->sc_used_math);
39 62
@@ -61,15 +84,40 @@ out:
61static inline int 84static inline int
62restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc) 85restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc)
63{ 86{
64 int err = 0;
65 unsigned int used_math; 87 unsigned int used_math;
88 unsigned long treg;
89 int err = 0;
66 90
67 /* Always make any pending restarted system calls return -EINTR */ 91 /* Always make any pending restarted system calls return -EINTR */
68 current_thread_info()->restart_block.fn = do_no_restart_syscall; 92 current_thread_info()->restart_block.fn = do_no_restart_syscall;
69 93
70 err |= __get_user(regs->cp0_epc, &sc->sc_pc); 94 err |= __get_user(regs->cp0_epc, &sc->sc_pc);
95#ifdef CONFIG_32BIT
71 err |= __get_user(regs->hi, &sc->sc_mdhi); 96 err |= __get_user(regs->hi, &sc->sc_mdhi);
72 err |= __get_user(regs->lo, &sc->sc_mdlo); 97 err |= __get_user(regs->lo, &sc->sc_mdlo);
98 if (cpu_has_dsp) {
99 err |= __get_user(treg, &sc->sc_hi1); mthi1(treg);
100 err |= __get_user(treg, &sc->sc_lo1); mtlo1(treg);
101 err |= __get_user(treg, &sc->sc_hi2); mthi2(treg);
102 err |= __get_user(treg, &sc->sc_lo2); mtlo2(treg);
103 err |= __get_user(treg, &sc->sc_hi3); mthi3(treg);
104 err |= __get_user(treg, &sc->sc_lo3); mtlo3(treg);
105 err |= __get_user(treg, &sc->sc_dsp); wrdsp(treg, DSP_MASK);
106 }
107#endif
108#ifdef CONFIG_64BIT
109 err |= __get_user(regs->hi, &sc->sc_hi[0]);
110 err |= __get_user(regs->lo, &sc->sc_lo[0]);
111 if (cpu_has_dsp) {
112 err |= __get_user(treg, &sc->sc_hi[1]); mthi1(treg);
113 err |= __get_user(treg, &sc->sc_lo[1]); mthi1(treg);
114 err |= __get_user(treg, &sc->sc_hi[2]); mthi2(treg);
115 err |= __get_user(treg, &sc->sc_lo[2]); mthi2(treg);
116 err |= __get_user(treg, &sc->sc_hi[3]); mthi3(treg);
117 err |= __get_user(treg, &sc->sc_lo[3]); mthi3(treg);
118 err |= __get_user(treg, &sc->sc_dsp); wrdsp(treg, DSP_MASK);
119 }
120#endif
73 121
74#define restore_gp_reg(i) do { \ 122#define restore_gp_reg(i) do { \
75 err |= __get_user(regs->regs[i], &sc->sc_regs[i]); \ 123 err |= __get_user(regs->regs[i], &sc->sc_regs[i]); \
@@ -112,7 +160,7 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc)
112static inline void * 160static inline void *
113get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size) 161get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size)
114{ 162{
115 unsigned long sp, almask; 163 unsigned long sp;
116 164
117 /* Default to using normal stack */ 165 /* Default to using normal stack */
118 sp = regs->regs[29]; 166 sp = regs->regs[29];
@@ -128,10 +176,32 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size)
128 if ((ka->sa.sa_flags & SA_ONSTACK) && (sas_ss_flags (sp) == 0)) 176 if ((ka->sa.sa_flags & SA_ONSTACK) && (sas_ss_flags (sp) == 0))
129 sp = current->sas_ss_sp + current->sas_ss_size; 177 sp = current->sas_ss_sp + current->sas_ss_size;
130 178
131 if (PLAT_TRAMPOLINE_STUFF_LINE) 179 return (void *)((sp - frame_size) & (ICACHE_REFILLS_WORKAROUND_WAR ? 32 : ALMASK));
132 almask = ~(PLAT_TRAMPOLINE_STUFF_LINE - 1); 180}
133 else 181
134 almask = ALMASK; 182static inline int install_sigtramp(unsigned int __user *tramp,
183 unsigned int syscall)
184{
185 int err;
186
187 /*
188 * Set up the return code ...
189 *
190 * li v0, __NR__foo_sigreturn
191 * syscall
192 */
193
194 err = __put_user(0x24020000 + syscall, tramp + 0);
195 err |= __put_user(0x0000000c , tramp + 1);
196 if (ICACHE_REFILLS_WORKAROUND_WAR) {
197 err |= __put_user(0, tramp + 2);
198 err |= __put_user(0, tramp + 3);
199 err |= __put_user(0, tramp + 4);
200 err |= __put_user(0, tramp + 5);
201 err |= __put_user(0, tramp + 6);
202 err |= __put_user(0, tramp + 7);
203 }
204 flush_cache_sigtramp((unsigned long) tramp);
135 205
136 return (void *)((sp - frame_size) & almask); 206 return err;
137} 207}
diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c
index 0209c1dd1429..9202a17db8f7 100644
--- a/arch/mips/kernel/signal.c
+++ b/arch/mips/kernel/signal.c
@@ -8,6 +8,7 @@
8 * Copyright (C) 1999, 2000 Silicon Graphics, Inc. 8 * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
9 */ 9 */
10#include <linux/config.h> 10#include <linux/config.h>
11#include <linux/cache.h>
11#include <linux/sched.h> 12#include <linux/sched.h>
12#include <linux/mm.h> 13#include <linux/mm.h>
13#include <linux/personality.h> 14#include <linux/personality.h>
@@ -21,6 +22,7 @@
21#include <linux/unistd.h> 22#include <linux/unistd.h>
22#include <linux/compiler.h> 23#include <linux/compiler.h>
23 24
25#include <asm/abi.h>
24#include <asm/asm.h> 26#include <asm/asm.h>
25#include <linux/bitops.h> 27#include <linux/bitops.h>
26#include <asm/cacheflush.h> 28#include <asm/cacheflush.h>
@@ -29,6 +31,7 @@
29#include <asm/uaccess.h> 31#include <asm/uaccess.h>
30#include <asm/ucontext.h> 32#include <asm/ucontext.h>
31#include <asm/cpu-features.h> 33#include <asm/cpu-features.h>
34#include <asm/war.h>
32 35
33#include "signal-common.h" 36#include "signal-common.h"
34 37
@@ -36,7 +39,7 @@
36 39
37#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) 40#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
38 41
39static int do_signal(sigset_t *oldset, struct pt_regs *regs); 42int do_signal(sigset_t *oldset, struct pt_regs *regs);
40 43
41/* 44/*
42 * Atomically swap in the new signal mask, and wait for a signal. 45 * Atomically swap in the new signal mask, and wait for a signal.
@@ -47,9 +50,10 @@ save_static_function(sys_sigsuspend);
47__attribute_used__ noinline static int 50__attribute_used__ noinline static int
48_sys_sigsuspend(nabi_no_regargs struct pt_regs regs) 51_sys_sigsuspend(nabi_no_regargs struct pt_regs regs)
49{ 52{
50 sigset_t *uset, saveset, newset; 53 sigset_t saveset, newset;
54 sigset_t __user *uset;
51 55
52 uset = (sigset_t *) regs.regs[4]; 56 uset = (sigset_t __user *) regs.regs[4];
53 if (copy_from_user(&newset, uset, sizeof(sigset_t))) 57 if (copy_from_user(&newset, uset, sizeof(sigset_t)))
54 return -EFAULT; 58 return -EFAULT;
55 sigdelsetmask(&newset, ~_BLOCKABLE); 59 sigdelsetmask(&newset, ~_BLOCKABLE);
@@ -75,7 +79,8 @@ save_static_function(sys_rt_sigsuspend);
75__attribute_used__ noinline static int 79__attribute_used__ noinline static int
76_sys_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) 80_sys_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
77{ 81{
78 sigset_t *unewset, saveset, newset; 82 sigset_t saveset, newset;
83 sigset_t __user *unewset;
79 size_t sigsetsize; 84 size_t sigsetsize;
80 85
81 /* XXX Don't preclude handling different sized sigset_t's. */ 86 /* XXX Don't preclude handling different sized sigset_t's. */
@@ -83,7 +88,7 @@ _sys_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
83 if (sigsetsize != sizeof(sigset_t)) 88 if (sigsetsize != sizeof(sigset_t))
84 return -EINVAL; 89 return -EINVAL;
85 90
86 unewset = (sigset_t *) regs.regs[4]; 91 unewset = (sigset_t __user *) regs.regs[4];
87 if (copy_from_user(&newset, unewset, sizeof(newset))) 92 if (copy_from_user(&newset, unewset, sizeof(newset)))
88 return -EFAULT; 93 return -EFAULT;
89 sigdelsetmask(&newset, ~_BLOCKABLE); 94 sigdelsetmask(&newset, ~_BLOCKABLE);
@@ -147,33 +152,46 @@ asmlinkage int sys_sigaction(int sig, const struct sigaction *act,
147 152
148asmlinkage int sys_sigaltstack(nabi_no_regargs struct pt_regs regs) 153asmlinkage int sys_sigaltstack(nabi_no_regargs struct pt_regs regs)
149{ 154{
150 const stack_t *uss = (const stack_t *) regs.regs[4]; 155 const stack_t __user *uss = (const stack_t __user *) regs.regs[4];
151 stack_t *uoss = (stack_t *) regs.regs[5]; 156 stack_t __user *uoss = (stack_t __user *) regs.regs[5];
152 unsigned long usp = regs.regs[29]; 157 unsigned long usp = regs.regs[29];
153 158
154 return do_sigaltstack(uss, uoss, usp); 159 return do_sigaltstack(uss, uoss, usp);
155} 160}
156 161
157#if PLAT_TRAMPOLINE_STUFF_LINE 162/*
158#define __tramp __attribute__((aligned(PLAT_TRAMPOLINE_STUFF_LINE))) 163 * Horribly complicated - with the bloody RM9000 workarounds enabled
159#else 164 * the signal trampolines is moving to the end of the structure so we can
160#define __tramp 165 * increase the alignment without breaking software compatibility.
161#endif 166 */
162
163#ifdef CONFIG_TRAD_SIGNALS 167#ifdef CONFIG_TRAD_SIGNALS
164struct sigframe { 168struct sigframe {
165 u32 sf_ass[4]; /* argument save space for o32 */ 169 u32 sf_ass[4]; /* argument save space for o32 */
166 u32 sf_code[2] __tramp; /* signal trampoline */ 170#if ICACHE_REFILLS_WORKAROUND_WAR
167 struct sigcontext sf_sc __tramp; 171 u32 sf_pad[2];
172#else
173 u32 sf_code[2]; /* signal trampoline */
174#endif
175 struct sigcontext sf_sc;
168 sigset_t sf_mask; 176 sigset_t sf_mask;
177#if ICACHE_REFILLS_WORKAROUND_WAR
178 u32 sf_code[8] ____cacheline_aligned; /* signal trampoline */
179#endif
169}; 180};
170#endif 181#endif
171 182
172struct rt_sigframe { 183struct rt_sigframe {
173 u32 rs_ass[4]; /* argument save space for o32 */ 184 u32 rs_ass[4]; /* argument save space for o32 */
174 u32 rs_code[2] __tramp; /* signal trampoline */ 185#if ICACHE_REFILLS_WORKAROUND_WAR
175 struct siginfo rs_info __tramp; 186 u32 rs_pad[2];
187#else
188 u32 rs_code[2]; /* signal trampoline */
189#endif
190 struct siginfo rs_info;
176 struct ucontext rs_uc; 191 struct ucontext rs_uc;
192#if ICACHE_REFILLS_WORKAROUND_WAR
193 u32 rs_code[8] ____cacheline_aligned; /* signal trampoline */
194#endif
177}; 195};
178 196
179#ifdef CONFIG_TRAD_SIGNALS 197#ifdef CONFIG_TRAD_SIGNALS
@@ -214,7 +232,7 @@ _sys_sigreturn(nabi_no_regargs struct pt_regs regs)
214badframe: 232badframe:
215 force_sig(SIGSEGV, current); 233 force_sig(SIGSEGV, current);
216} 234}
217#endif 235#endif /* CONFIG_TRAD_SIGNALS */
218 236
219save_static_function(sys_rt_sigreturn); 237save_static_function(sys_rt_sigreturn);
220__attribute_used__ noinline static void 238__attribute_used__ noinline static void
@@ -260,7 +278,7 @@ badframe:
260} 278}
261 279
262#ifdef CONFIG_TRAD_SIGNALS 280#ifdef CONFIG_TRAD_SIGNALS
263static void inline setup_frame(struct k_sigaction * ka, struct pt_regs *regs, 281int setup_frame(struct k_sigaction * ka, struct pt_regs *regs,
264 int signr, sigset_t *set) 282 int signr, sigset_t *set)
265{ 283{
266 struct sigframe *frame; 284 struct sigframe *frame;
@@ -270,17 +288,7 @@ static void inline setup_frame(struct k_sigaction * ka, struct pt_regs *regs,
270 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 288 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
271 goto give_sigsegv; 289 goto give_sigsegv;
272 290
273 /* 291 install_sigtramp(frame->sf_code, __NR_sigreturn);
274 * Set up the return code ...
275 *
276 * li v0, __NR_sigreturn
277 * syscall
278 */
279 if (PLAT_TRAMPOLINE_STUFF_LINE)
280 __clear_user(frame->sf_code, PLAT_TRAMPOLINE_STUFF_LINE);
281 err |= __put_user(0x24020000 + __NR_sigreturn, frame->sf_code + 0);
282 err |= __put_user(0x0000000c , frame->sf_code + 1);
283 flush_cache_sigtramp((unsigned long) frame->sf_code);
284 292
285 err |= setup_sigcontext(regs, &frame->sf_sc); 293 err |= setup_sigcontext(regs, &frame->sf_sc);
286 err |= __copy_to_user(&frame->sf_mask, set, sizeof(*set)); 294 err |= __copy_to_user(&frame->sf_mask, set, sizeof(*set));
@@ -309,14 +317,15 @@ static void inline setup_frame(struct k_sigaction * ka, struct pt_regs *regs,
309 current->comm, current->pid, 317 current->comm, current->pid,
310 frame, regs->cp0_epc, frame->regs[31]); 318 frame, regs->cp0_epc, frame->regs[31]);
311#endif 319#endif
312 return; 320 return 1;
313 321
314give_sigsegv: 322give_sigsegv:
315 force_sigsegv(signr, current); 323 force_sigsegv(signr, current);
324 return 0;
316} 325}
317#endif 326#endif
318 327
319static void inline setup_rt_frame(struct k_sigaction * ka, struct pt_regs *regs, 328int setup_rt_frame(struct k_sigaction * ka, struct pt_regs *regs,
320 int signr, sigset_t *set, siginfo_t *info) 329 int signr, sigset_t *set, siginfo_t *info)
321{ 330{
322 struct rt_sigframe *frame; 331 struct rt_sigframe *frame;
@@ -326,17 +335,7 @@ static void inline setup_rt_frame(struct k_sigaction * ka, struct pt_regs *regs,
326 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 335 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
327 goto give_sigsegv; 336 goto give_sigsegv;
328 337
329 /* 338 install_sigtramp(frame->rs_code, __NR_rt_sigreturn);
330 * Set up the return code ...
331 *
332 * li v0, __NR_rt_sigreturn
333 * syscall
334 */
335 if (PLAT_TRAMPOLINE_STUFF_LINE)
336 __clear_user(frame->rs_code, PLAT_TRAMPOLINE_STUFF_LINE);
337 err |= __put_user(0x24020000 + __NR_rt_sigreturn, frame->rs_code + 0);
338 err |= __put_user(0x0000000c , frame->rs_code + 1);
339 flush_cache_sigtramp((unsigned long) frame->rs_code);
340 339
341 /* Create siginfo. */ 340 /* Create siginfo. */
342 err |= copy_siginfo_to_user(&frame->rs_info, info); 341 err |= copy_siginfo_to_user(&frame->rs_info, info);
@@ -378,18 +377,21 @@ static void inline setup_rt_frame(struct k_sigaction * ka, struct pt_regs *regs,
378 current->comm, current->pid, 377 current->comm, current->pid,
379 frame, regs->cp0_epc, regs->regs[31]); 378 frame, regs->cp0_epc, regs->regs[31]);
380#endif 379#endif
381 return; 380 return 1;
382 381
383give_sigsegv: 382give_sigsegv:
384 force_sigsegv(signr, current); 383 force_sigsegv(signr, current);
384 return 0;
385} 385}
386 386
387extern void setup_rt_frame_n32(struct k_sigaction * ka, 387extern void setup_rt_frame_n32(struct k_sigaction * ka,
388 struct pt_regs *regs, int signr, sigset_t *set, siginfo_t *info); 388 struct pt_regs *regs, int signr, sigset_t *set, siginfo_t *info);
389 389
390static inline void handle_signal(unsigned long sig, siginfo_t *info, 390static inline int handle_signal(unsigned long sig, siginfo_t *info,
391 struct k_sigaction *ka, sigset_t *oldset, struct pt_regs *regs) 391 struct k_sigaction *ka, sigset_t *oldset, struct pt_regs *regs)
392{ 392{
393 int ret;
394
393 switch(regs->regs[0]) { 395 switch(regs->regs[0]) {
394 case ERESTART_RESTARTBLOCK: 396 case ERESTART_RESTARTBLOCK:
395 case ERESTARTNOHAND: 397 case ERESTARTNOHAND:
@@ -408,22 +410,10 @@ static inline void handle_signal(unsigned long sig, siginfo_t *info,
408 410
409 regs->regs[0] = 0; /* Don't deal with this again. */ 411 regs->regs[0] = 0; /* Don't deal with this again. */
410 412
411#ifdef CONFIG_TRAD_SIGNALS 413 if (sig_uses_siginfo(ka))
412 if (ka->sa.sa_flags & SA_SIGINFO) { 414 ret = current->thread.abi->setup_rt_frame(ka, regs, sig, oldset, info);
413#else
414 if (1) {
415#endif
416#ifdef CONFIG_MIPS32_N32
417 if ((current->thread.mflags & MF_ABI_MASK) == MF_N32)
418 setup_rt_frame_n32 (ka, regs, sig, oldset, info);
419 else
420#endif
421 setup_rt_frame(ka, regs, sig, oldset, info);
422 }
423#ifdef CONFIG_TRAD_SIGNALS
424 else 415 else
425 setup_frame(ka, regs, sig, oldset); 416 ret = current->thread.abi->setup_frame(ka, regs, sig, oldset);
426#endif
427 417
428 spin_lock_irq(&current->sighand->siglock); 418 spin_lock_irq(&current->sighand->siglock);
429 sigorsets(&current->blocked,&current->blocked,&ka->sa.sa_mask); 419 sigorsets(&current->blocked,&current->blocked,&ka->sa.sa_mask);
@@ -431,23 +421,16 @@ static inline void handle_signal(unsigned long sig, siginfo_t *info,
431 sigaddset(&current->blocked,sig); 421 sigaddset(&current->blocked,sig);
432 recalc_sigpending(); 422 recalc_sigpending();
433 spin_unlock_irq(&current->sighand->siglock); 423 spin_unlock_irq(&current->sighand->siglock);
434}
435 424
436extern int do_signal32(sigset_t *oldset, struct pt_regs *regs); 425 return ret;
437extern int do_irix_signal(sigset_t *oldset, struct pt_regs *regs); 426}
438 427
439static int do_signal(sigset_t *oldset, struct pt_regs *regs) 428int do_signal(sigset_t *oldset, struct pt_regs *regs)
440{ 429{
441 struct k_sigaction ka; 430 struct k_sigaction ka;
442 siginfo_t info; 431 siginfo_t info;
443 int signr; 432 int signr;
444 433
445#ifdef CONFIG_BINFMT_ELF32
446 if ((current->thread.mflags & MF_ABI_MASK) == MF_O32) {
447 return do_signal32(oldset, regs);
448 }
449#endif
450
451 /* 434 /*
452 * We want the common case to go fast, which is why we may in certain 435 * We want the common case to go fast, which is why we may in certain
453 * cases get here from kernel mode. Just return without doing anything 436 * cases get here from kernel mode. Just return without doing anything
@@ -463,10 +446,8 @@ static int do_signal(sigset_t *oldset, struct pt_regs *regs)
463 oldset = &current->blocked; 446 oldset = &current->blocked;
464 447
465 signr = get_signal_to_deliver(&info, &ka, regs, NULL); 448 signr = get_signal_to_deliver(&info, &ka, regs, NULL);
466 if (signr > 0) { 449 if (signr > 0)
467 handle_signal(signr, &info, &ka, oldset, regs); 450 return handle_signal(signr, &info, &ka, oldset, regs);
468 return 1;
469 }
470 451
471no_signal: 452no_signal:
472 /* 453 /*
@@ -499,18 +480,6 @@ asmlinkage void do_notify_resume(struct pt_regs *regs, sigset_t *oldset,
499{ 480{
500 /* deal with pending signal delivery */ 481 /* deal with pending signal delivery */
501 if (thread_info_flags & _TIF_SIGPENDING) { 482 if (thread_info_flags & _TIF_SIGPENDING) {
502#ifdef CONFIG_BINFMT_ELF32 483 current->thread.abi->do_signal(oldset, regs);
503 if (likely((current->thread.mflags & MF_ABI_MASK) == MF_O32)) {
504 do_signal32(oldset, regs);
505 return;
506 }
507#endif
508#ifdef CONFIG_BINFMT_IRIX
509 if (unlikely(current->personality != PER_LINUX)) {
510 do_irix_signal(oldset, regs);
511 return;
512 }
513#endif
514 do_signal(oldset, regs);
515 } 484 }
516} 485}
diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c
index 8ddfbd8d425a..dbe821303125 100644
--- a/arch/mips/kernel/signal32.c
+++ b/arch/mips/kernel/signal32.c
@@ -7,6 +7,7 @@
7 * Copyright (C) 1994 - 2000 Ralf Baechle 7 * Copyright (C) 1994 - 2000 Ralf Baechle
8 * Copyright (C) 1999, 2000 Silicon Graphics, Inc. 8 * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
9 */ 9 */
10#include <linux/cache.h>
10#include <linux/sched.h> 11#include <linux/sched.h>
11#include <linux/mm.h> 12#include <linux/mm.h>
12#include <linux/smp.h> 13#include <linux/smp.h>
@@ -21,6 +22,7 @@
21#include <linux/suspend.h> 22#include <linux/suspend.h>
22#include <linux/compiler.h> 23#include <linux/compiler.h>
23 24
25#include <asm/abi.h>
24#include <asm/asm.h> 26#include <asm/asm.h>
25#include <linux/bitops.h> 27#include <linux/bitops.h>
26#include <asm/cacheflush.h> 28#include <asm/cacheflush.h>
@@ -29,6 +31,7 @@
29#include <asm/ucontext.h> 31#include <asm/ucontext.h>
30#include <asm/system.h> 32#include <asm/system.h>
31#include <asm/fpu.h> 33#include <asm/fpu.h>
34#include <asm/war.h>
32 35
33#define SI_PAD_SIZE32 ((SI_MAX_SIZE/sizeof(int)) - 3) 36#define SI_PAD_SIZE32 ((SI_MAX_SIZE/sizeof(int)) - 3)
34 37
@@ -76,8 +79,10 @@ typedef struct compat_siginfo {
76 79
77 /* POSIX.1b timers */ 80 /* POSIX.1b timers */
78 struct { 81 struct {
79 unsigned int _timer1; 82 timer_t _tid; /* timer id */
80 unsigned int _timer2; 83 int _overrun; /* overrun count */
84 compat_sigval_t _sigval;/* same as below */
85 int _sys_private; /* not to be passed to user */
81 } _timer; 86 } _timer;
82 87
83 /* POSIX.1b signals */ 88 /* POSIX.1b signals */
@@ -259,11 +264,12 @@ asmlinkage int sys32_sigaction(int sig, const struct sigaction32 *act,
259 264
260 if (act) { 265 if (act) {
261 old_sigset_t mask; 266 old_sigset_t mask;
267 s32 handler;
262 268
263 if (!access_ok(VERIFY_READ, act, sizeof(*act))) 269 if (!access_ok(VERIFY_READ, act, sizeof(*act)))
264 return -EFAULT; 270 return -EFAULT;
265 err |= __get_user((u32)(u64)new_ka.sa.sa_handler, 271 err |= __get_user(handler, &act->sa_handler);
266 &act->sa_handler); 272 new_ka.sa.sa_handler = (void*)(s64)handler;
267 err |= __get_user(new_ka.sa.sa_flags, &act->sa_flags); 273 err |= __get_user(new_ka.sa.sa_flags, &act->sa_flags);
268 err |= __get_user(mask, &act->sa_mask.sig[0]); 274 err |= __get_user(mask, &act->sa_mask.sig[0]);
269 if (err) 275 if (err)
@@ -331,8 +337,9 @@ asmlinkage int sys32_sigaltstack(nabi_no_regargs struct pt_regs regs)
331 337
332static int restore_sigcontext32(struct pt_regs *regs, struct sigcontext32 *sc) 338static int restore_sigcontext32(struct pt_regs *regs, struct sigcontext32 *sc)
333{ 339{
340 u32 used_math;
334 int err = 0; 341 int err = 0;
335 __u32 used_math; 342 s32 treg;
336 343
337 /* Always make any pending restarted system calls return -EINTR */ 344 /* Always make any pending restarted system calls return -EINTR */
338 current_thread_info()->restart_block.fn = do_no_restart_syscall; 345 current_thread_info()->restart_block.fn = do_no_restart_syscall;
@@ -340,6 +347,15 @@ static int restore_sigcontext32(struct pt_regs *regs, struct sigcontext32 *sc)
340 err |= __get_user(regs->cp0_epc, &sc->sc_pc); 347 err |= __get_user(regs->cp0_epc, &sc->sc_pc);
341 err |= __get_user(regs->hi, &sc->sc_mdhi); 348 err |= __get_user(regs->hi, &sc->sc_mdhi);
342 err |= __get_user(regs->lo, &sc->sc_mdlo); 349 err |= __get_user(regs->lo, &sc->sc_mdlo);
350 if (cpu_has_dsp) {
351 err |= __get_user(treg, &sc->sc_hi1); mthi1(treg);
352 err |= __get_user(treg, &sc->sc_lo1); mtlo1(treg);
353 err |= __get_user(treg, &sc->sc_hi2); mthi2(treg);
354 err |= __get_user(treg, &sc->sc_lo2); mtlo2(treg);
355 err |= __get_user(treg, &sc->sc_hi3); mthi3(treg);
356 err |= __get_user(treg, &sc->sc_lo3); mtlo3(treg);
357 err |= __get_user(treg, &sc->sc_dsp); wrdsp(treg, DSP_MASK);
358 }
343 359
344#define restore_gp_reg(i) do { \ 360#define restore_gp_reg(i) do { \
345 err |= __get_user(regs->regs[i], &sc->sc_regs[i]); \ 361 err |= __get_user(regs->regs[i], &sc->sc_regs[i]); \
@@ -378,16 +394,30 @@ static int restore_sigcontext32(struct pt_regs *regs, struct sigcontext32 *sc)
378 394
379struct sigframe { 395struct sigframe {
380 u32 sf_ass[4]; /* argument save space for o32 */ 396 u32 sf_ass[4]; /* argument save space for o32 */
397#if ICACHE_REFILLS_WORKAROUND_WAR
398 u32 sf_pad[2];
399#else
381 u32 sf_code[2]; /* signal trampoline */ 400 u32 sf_code[2]; /* signal trampoline */
401#endif
382 struct sigcontext32 sf_sc; 402 struct sigcontext32 sf_sc;
383 sigset_t sf_mask; 403 sigset_t sf_mask;
404#if ICACHE_REFILLS_WORKAROUND_WAR
405 u32 sf_code[8] ____cacheline_aligned; /* signal trampoline */
406#endif
384}; 407};
385 408
386struct rt_sigframe32 { 409struct rt_sigframe32 {
387 u32 rs_ass[4]; /* argument save space for o32 */ 410 u32 rs_ass[4]; /* argument save space for o32 */
411#if ICACHE_REFILLS_WORKAROUND_WAR
412 u32 rs_pad[2];
413#else
388 u32 rs_code[2]; /* signal trampoline */ 414 u32 rs_code[2]; /* signal trampoline */
415#endif
389 compat_siginfo_t rs_info; 416 compat_siginfo_t rs_info;
390 struct ucontext32 rs_uc; 417 struct ucontext32 rs_uc;
418#if ICACHE_REFILLS_WORKAROUND_WAR
419 u32 rs_code[8] __attribute__((aligned(32))); /* signal trampoline */
420#endif
391}; 421};
392 422
393int copy_siginfo_to_user32(compat_siginfo_t *to, siginfo_t *from) 423int copy_siginfo_to_user32(compat_siginfo_t *to, siginfo_t *from)
@@ -411,6 +441,11 @@ int copy_siginfo_to_user32(compat_siginfo_t *to, siginfo_t *from)
411 err |= __copy_to_user(&to->_sifields._pad, &from->_sifields._pad, SI_PAD_SIZE); 441 err |= __copy_to_user(&to->_sifields._pad, &from->_sifields._pad, SI_PAD_SIZE);
412 else { 442 else {
413 switch (from->si_code >> 16) { 443 switch (from->si_code >> 16) {
444 case __SI_TIMER >> 16:
445 err |= __put_user(from->si_tid, &to->si_tid);
446 err |= __put_user(from->si_overrun, &to->si_overrun);
447 err |= __put_user(from->si_int, &to->si_int);
448 break;
414 case __SI_CHLD >> 16: 449 case __SI_CHLD >> 16:
415 err |= __put_user(from->si_utime, &to->si_utime); 450 err |= __put_user(from->si_utime, &to->si_utime);
416 err |= __put_user(from->si_stime, &to->si_stime); 451 err |= __put_user(from->si_stime, &to->si_stime);
@@ -480,6 +515,7 @@ __attribute_used__ noinline static void
480_sys32_rt_sigreturn(nabi_no_regargs struct pt_regs regs) 515_sys32_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
481{ 516{
482 struct rt_sigframe32 *frame; 517 struct rt_sigframe32 *frame;
518 mm_segment_t old_fs;
483 sigset_t set; 519 sigset_t set;
484 stack_t st; 520 stack_t st;
485 s32 sp; 521 s32 sp;
@@ -510,7 +546,10 @@ _sys32_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
510 546
511 /* It is more difficult to avoid calling this function than to 547 /* It is more difficult to avoid calling this function than to
512 call it and ignore errors. */ 548 call it and ignore errors. */
549 old_fs = get_fs();
550 set_fs (KERNEL_DS);
513 do_sigaltstack(&st, NULL, regs.regs[29]); 551 do_sigaltstack(&st, NULL, regs.regs[29]);
552 set_fs (old_fs);
514 553
515 /* 554 /*
516 * Don't let your children do this ... 555 * Don't let your children do this ...
@@ -550,8 +589,15 @@ static inline int setup_sigcontext32(struct pt_regs *regs,
550 589
551 err |= __put_user(regs->hi, &sc->sc_mdhi); 590 err |= __put_user(regs->hi, &sc->sc_mdhi);
552 err |= __put_user(regs->lo, &sc->sc_mdlo); 591 err |= __put_user(regs->lo, &sc->sc_mdlo);
553 err |= __put_user(regs->cp0_cause, &sc->sc_cause); 592 if (cpu_has_dsp) {
554 err |= __put_user(regs->cp0_badvaddr, &sc->sc_badvaddr); 593 err |= __put_user(rddsp(DSP_MASK), &sc->sc_hi1);
594 err |= __put_user(mfhi1(), &sc->sc_hi1);
595 err |= __put_user(mflo1(), &sc->sc_lo1);
596 err |= __put_user(mfhi2(), &sc->sc_hi2);
597 err |= __put_user(mflo2(), &sc->sc_lo2);
598 err |= __put_user(mfhi3(), &sc->sc_hi3);
599 err |= __put_user(mflo3(), &sc->sc_lo3);
600 }
555 601
556 err |= __put_user(!!used_math(), &sc->sc_used_math); 602 err |= __put_user(!!used_math(), &sc->sc_used_math);
557 603
@@ -601,7 +647,7 @@ static inline void *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
601 return (void *)((sp - frame_size) & ALMASK); 647 return (void *)((sp - frame_size) & ALMASK);
602} 648}
603 649
604static inline void setup_frame(struct k_sigaction * ka, struct pt_regs *regs, 650void setup_frame_32(struct k_sigaction * ka, struct pt_regs *regs,
605 int signr, sigset_t *set) 651 int signr, sigset_t *set)
606{ 652{
607 struct sigframe *frame; 653 struct sigframe *frame;
@@ -654,9 +700,7 @@ give_sigsegv:
654 force_sigsegv(signr, current); 700 force_sigsegv(signr, current);
655} 701}
656 702
657static inline void setup_rt_frame(struct k_sigaction * ka, 703void setup_rt_frame_32(struct k_sigaction * ka, struct pt_regs *regs, int signr, sigset_t *set, siginfo_t *info)
658 struct pt_regs *regs, int signr,
659 sigset_t *set, siginfo_t *info)
660{ 704{
661 struct rt_sigframe32 *frame; 705 struct rt_sigframe32 *frame;
662 int err = 0; 706 int err = 0;
@@ -725,9 +769,11 @@ give_sigsegv:
725 force_sigsegv(signr, current); 769 force_sigsegv(signr, current);
726} 770}
727 771
728static inline void handle_signal(unsigned long sig, siginfo_t *info, 772static inline int handle_signal(unsigned long sig, siginfo_t *info,
729 struct k_sigaction *ka, sigset_t *oldset, struct pt_regs * regs) 773 struct k_sigaction *ka, sigset_t *oldset, struct pt_regs * regs)
730{ 774{
775 int ret;
776
731 switch (regs->regs[0]) { 777 switch (regs->regs[0]) {
732 case ERESTART_RESTARTBLOCK: 778 case ERESTART_RESTARTBLOCK:
733 case ERESTARTNOHAND: 779 case ERESTARTNOHAND:
@@ -747,9 +793,9 @@ static inline void handle_signal(unsigned long sig, siginfo_t *info,
747 regs->regs[0] = 0; /* Don't deal with this again. */ 793 regs->regs[0] = 0; /* Don't deal with this again. */
748 794
749 if (ka->sa.sa_flags & SA_SIGINFO) 795 if (ka->sa.sa_flags & SA_SIGINFO)
750 setup_rt_frame(ka, regs, sig, oldset, info); 796 ret = current->thread.abi->setup_rt_frame(ka, regs, sig, oldset, info);
751 else 797 else
752 setup_frame(ka, regs, sig, oldset); 798 ret = current->thread.abi->setup_frame(ka, regs, sig, oldset);
753 799
754 spin_lock_irq(&current->sighand->siglock); 800 spin_lock_irq(&current->sighand->siglock);
755 sigorsets(&current->blocked,&current->blocked,&ka->sa.sa_mask); 801 sigorsets(&current->blocked,&current->blocked,&ka->sa.sa_mask);
@@ -757,6 +803,8 @@ static inline void handle_signal(unsigned long sig, siginfo_t *info,
757 sigaddset(&current->blocked,sig); 803 sigaddset(&current->blocked,sig);
758 recalc_sigpending(); 804 recalc_sigpending();
759 spin_unlock_irq(&current->sighand->siglock); 805 spin_unlock_irq(&current->sighand->siglock);
806
807 return ret;
760} 808}
761 809
762int do_signal32(sigset_t *oldset, struct pt_regs *regs) 810int do_signal32(sigset_t *oldset, struct pt_regs *regs)
@@ -780,10 +828,8 @@ int do_signal32(sigset_t *oldset, struct pt_regs *regs)
780 oldset = &current->blocked; 828 oldset = &current->blocked;
781 829
782 signr = get_signal_to_deliver(&info, &ka, regs, NULL); 830 signr = get_signal_to_deliver(&info, &ka, regs, NULL);
783 if (signr > 0) { 831 if (signr > 0)
784 handle_signal(signr, &info, &ka, oldset, regs); 832 return handle_signal(signr, &info, &ka, oldset, regs);
785 return 1;
786 }
787 833
788no_signal: 834no_signal:
789 /* 835 /*
@@ -819,12 +865,13 @@ asmlinkage int sys32_rt_sigaction(int sig, const struct sigaction32 *act,
819 goto out; 865 goto out;
820 866
821 if (act) { 867 if (act) {
868 s32 handler;
822 int err = 0; 869 int err = 0;
823 870
824 if (!access_ok(VERIFY_READ, act, sizeof(*act))) 871 if (!access_ok(VERIFY_READ, act, sizeof(*act)))
825 return -EFAULT; 872 return -EFAULT;
826 err |= __get_user((u32)(u64)new_sa.sa.sa_handler, 873 err |= __get_user(handler, &act->sa_handler);
827 &act->sa_handler); 874 new_sa.sa.sa_handler = (void*)(s64)handler;
828 err |= __get_user(new_sa.sa.sa_flags, &act->sa_flags); 875 err |= __get_user(new_sa.sa.sa_flags, &act->sa_flags);
829 err |= get_sigset(&new_sa.sa.sa_mask, &act->sa_mask); 876 err |= get_sigset(&new_sa.sa.sa_mask, &act->sa_mask);
830 if (err) 877 if (err)
@@ -902,3 +949,30 @@ asmlinkage int sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t *uinfo)
902 set_fs (old_fs); 949 set_fs (old_fs);
903 return ret; 950 return ret;
904} 951}
952
953asmlinkage long
954sys32_waitid(int which, compat_pid_t pid,
955 compat_siginfo_t __user *uinfo, int options,
956 struct compat_rusage __user *uru)
957{
958 siginfo_t info;
959 struct rusage ru;
960 long ret;
961 mm_segment_t old_fs = get_fs();
962
963 info.si_signo = 0;
964 set_fs (KERNEL_DS);
965 ret = sys_waitid(which, pid, (siginfo_t __user *) &info, options,
966 uru ? (struct rusage __user *) &ru : NULL);
967 set_fs (old_fs);
968
969 if (ret < 0 || info.si_signo == 0)
970 return ret;
971
972 if (uru && (ret = put_compat_rusage(&ru, uru)))
973 return ret;
974
975 BUG_ON(info.si_code & __SI_MASK);
976 info.si_code |= __SI_CHLD;
977 return copy_siginfo_to_user32(uinfo, &info);
978}
diff --git a/arch/mips/kernel/signal_n32.c b/arch/mips/kernel/signal_n32.c
index 3544208d4b4b..ec61b2670ba6 100644
--- a/arch/mips/kernel/signal_n32.c
+++ b/arch/mips/kernel/signal_n32.c
@@ -15,6 +15,8 @@
15 * along with this program; if not, write to the Free Software 15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 */ 17 */
18#include <linux/cache.h>
19#include <linux/sched.h>
18#include <linux/sched.h> 20#include <linux/sched.h>
19#include <linux/mm.h> 21#include <linux/mm.h>
20#include <linux/smp.h> 22#include <linux/smp.h>
@@ -36,6 +38,7 @@
36#include <asm/system.h> 38#include <asm/system.h>
37#include <asm/fpu.h> 39#include <asm/fpu.h>
38#include <asm/cpu-features.h> 40#include <asm/cpu-features.h>
41#include <asm/war.h>
39 42
40#include "signal-common.h" 43#include "signal-common.h"
41 44
@@ -62,17 +65,18 @@ struct ucontextn32 {
62 sigset_t uc_sigmask; /* mask last for extensibility */ 65 sigset_t uc_sigmask; /* mask last for extensibility */
63}; 66};
64 67
65#if PLAT_TRAMPOLINE_STUFF_LINE
66#define __tramp __attribute__((aligned(PLAT_TRAMPOLINE_STUFF_LINE)))
67#else
68#define __tramp
69#endif
70
71struct rt_sigframe_n32 { 68struct rt_sigframe_n32 {
72 u32 rs_ass[4]; /* argument save space for o32 */ 69 u32 rs_ass[4]; /* argument save space for o32 */
73 u32 rs_code[2] __tramp; /* signal trampoline */ 70#if ICACHE_REFILLS_WORKAROUND_WAR
74 struct siginfo rs_info __tramp; 71 u32 rs_pad[2];
72#else
73 u32 rs_code[2]; /* signal trampoline */
74#endif
75 struct siginfo rs_info;
75 struct ucontextn32 rs_uc; 76 struct ucontextn32 rs_uc;
77#if ICACHE_REFILLS_WORKAROUND_WAR
78 u32 rs_code[8] ____cacheline_aligned; /* signal trampoline */
79#endif
76}; 80};
77 81
78save_static_function(sysn32_rt_sigreturn); 82save_static_function(sysn32_rt_sigreturn);
@@ -126,7 +130,7 @@ badframe:
126 force_sig(SIGSEGV, current); 130 force_sig(SIGSEGV, current);
127} 131}
128 132
129void setup_rt_frame_n32(struct k_sigaction * ka, 133int setup_rt_frame_n32(struct k_sigaction * ka,
130 struct pt_regs *regs, int signr, sigset_t *set, siginfo_t *info) 134 struct pt_regs *regs, int signr, sigset_t *set, siginfo_t *info)
131{ 135{
132 struct rt_sigframe_n32 *frame; 136 struct rt_sigframe_n32 *frame;
@@ -137,17 +141,7 @@ void setup_rt_frame_n32(struct k_sigaction * ka,
137 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 141 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
138 goto give_sigsegv; 142 goto give_sigsegv;
139 143
140 /* 144 install_sigtramp(frame->rs_code, __NR_N32_rt_sigreturn);
141 * Set up the return code ...
142 *
143 * li v0, __NR_rt_sigreturn
144 * syscall
145 */
146 if (PLAT_TRAMPOLINE_STUFF_LINE)
147 __clear_user(frame->rs_code, PLAT_TRAMPOLINE_STUFF_LINE);
148 err |= __put_user(0x24020000 + __NR_N32_rt_sigreturn, frame->rs_code + 0);
149 err |= __put_user(0x0000000c , frame->rs_code + 1);
150 flush_cache_sigtramp((unsigned long) frame->rs_code);
151 145
152 /* Create siginfo. */ 146 /* Create siginfo. */
153 err |= copy_siginfo_to_user(&frame->rs_info, info); 147 err |= copy_siginfo_to_user(&frame->rs_info, info);
@@ -190,8 +184,9 @@ void setup_rt_frame_n32(struct k_sigaction * ka,
190 current->comm, current->pid, 184 current->comm, current->pid,
191 frame, regs->cp0_epc, regs->regs[31]); 185 frame, regs->cp0_epc, regs->regs[31]);
192#endif 186#endif
193 return; 187 return 1;
194 188
195give_sigsegv: 189give_sigsegv:
196 force_sigsegv(signr, current); 190 force_sigsegv(signr, current);
191 return 0;
197} 192}
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
index af5cd3b8a396..fcacf1aae98a 100644
--- a/arch/mips/kernel/smp.c
+++ b/arch/mips/kernel/smp.c
@@ -50,7 +50,6 @@ static void smp_tune_scheduling (void)
50{ 50{
51 struct cache_desc *cd = &current_cpu_data.scache; 51 struct cache_desc *cd = &current_cpu_data.scache;
52 unsigned long cachesize; /* kB */ 52 unsigned long cachesize; /* kB */
53 unsigned long bandwidth = 350; /* MB/s */
54 unsigned long cpu_khz; 53 unsigned long cpu_khz;
55 54
56 /* 55 /*
@@ -121,7 +120,19 @@ struct call_data_struct *call_data;
121 * or are or have executed. 120 * or are or have executed.
122 * 121 *
123 * You must not call this function with disabled interrupts or from a 122 * You must not call this function with disabled interrupts or from a
124 * hardware interrupt handler or from a bottom half handler. 123 * hardware interrupt handler or from a bottom half handler:
124 *
125 * CPU A CPU B
126 * Disable interrupts
127 * smp_call_function()
128 * Take call_lock
129 * Send IPIs
130 * Wait for all cpus to acknowledge IPI
131 * CPU A has not responded, spin waiting
132 * for cpu A to respond, holding call_lock
133 * smp_call_function()
134 * Spin waiting for call_lock
135 * Deadlock Deadlock
125 */ 136 */
126int smp_call_function (void (*func) (void *info), void *info, int retry, 137int smp_call_function (void (*func) (void *info), void *info, int retry,
127 int wait) 138 int wait)
@@ -130,6 +141,11 @@ int smp_call_function (void (*func) (void *info), void *info, int retry,
130 int i, cpus = num_online_cpus() - 1; 141 int i, cpus = num_online_cpus() - 1;
131 int cpu = smp_processor_id(); 142 int cpu = smp_processor_id();
132 143
144 /*
145 * Can die spectacularly if this CPU isn't yet marked online
146 */
147 BUG_ON(!cpu_online(cpu));
148
133 if (!cpus) 149 if (!cpus)
134 return 0; 150 return 0;
135 151
@@ -214,7 +230,6 @@ void __init smp_cpus_done(unsigned int max_cpus)
214/* called from main before smp_init() */ 230/* called from main before smp_init() */
215void __init smp_prepare_cpus(unsigned int max_cpus) 231void __init smp_prepare_cpus(unsigned int max_cpus)
216{ 232{
217 cpu_data[0].udelay_val = loops_per_jiffy;
218 init_new_context(current, &init_mm); 233 init_new_context(current, &init_mm);
219 current_thread_info()->cpu = 0; 234 current_thread_info()->cpu = 0;
220 smp_tune_scheduling(); 235 smp_tune_scheduling();
@@ -236,23 +251,28 @@ void __devinit smp_prepare_boot_cpu(void)
236} 251}
237 252
238/* 253/*
239 * Startup the CPU with this logical number 254 * Called once for each "cpu_possible(cpu)". Needs to spin up the cpu
255 * and keep control until "cpu_online(cpu)" is set. Note: cpu is
256 * physical, not logical.
240 */ 257 */
241static int __init do_boot_cpu(int cpu) 258int __devinit __cpu_up(unsigned int cpu)
242{ 259{
243 struct task_struct *idle; 260 struct task_struct *idle;
244 261
245 /* 262 /*
263 * Processor goes to start_secondary(), sets online flag
246 * The following code is purely to make sure 264 * The following code is purely to make sure
247 * Linux can schedule processes on this slave. 265 * Linux can schedule processes on this slave.
248 */ 266 */
249 idle = fork_idle(cpu); 267 idle = fork_idle(cpu);
250 if (IS_ERR(idle)) 268 if (IS_ERR(idle))
251 panic("failed fork for CPU %d\n", cpu); 269 panic(KERN_ERR "Fork failed for CPU %d", cpu);
252 270
253 prom_boot_secondary(cpu, idle); 271 prom_boot_secondary(cpu, idle);
254 272
255 /* XXXKW timeout */ 273 /*
274 * Trust is futile. We should really have timeouts ...
275 */
256 while (!cpu_isset(cpu, cpu_callin_map)) 276 while (!cpu_isset(cpu, cpu_callin_map))
257 udelay(100); 277 udelay(100);
258 278
@@ -261,23 +281,6 @@ static int __init do_boot_cpu(int cpu)
261 return 0; 281 return 0;
262} 282}
263 283
264/*
265 * Called once for each "cpu_possible(cpu)". Needs to spin up the cpu
266 * and keep control until "cpu_online(cpu)" is set. Note: cpu is
267 * physical, not logical.
268 */
269int __devinit __cpu_up(unsigned int cpu)
270{
271 int ret;
272
273 /* Processor goes to start_secondary(), sets online flag */
274 ret = do_boot_cpu(cpu);
275 if (ret < 0)
276 return ret;
277
278 return 0;
279}
280
281/* Not really SMP stuff ... */ 284/* Not really SMP stuff ... */
282int setup_profiling_timer(unsigned int multiplier) 285int setup_profiling_timer(unsigned int multiplier)
283{ 286{
diff --git a/arch/mips/kernel/smp_mt.c b/arch/mips/kernel/smp_mt.c
new file mode 100644
index 000000000000..d429544ba4bc
--- /dev/null
+++ b/arch/mips/kernel/smp_mt.c
@@ -0,0 +1,366 @@
1/*
2 * Copyright (C) 2004, 2005 MIPS Technologies, Inc. All rights reserved.
3 *
4 * Elizabeth Clarke (beth@mips.com)
5 *
6 * This program is free software; you can distribute it and/or modify it
7 * under the terms of the GNU General Public License (Version 2) as
8 * published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
18 *
19 */
20#include <linux/kernel.h>
21#include <linux/sched.h>
22#include <linux/cpumask.h>
23#include <linux/interrupt.h>
24#include <linux/compiler.h>
25
26#include <asm/atomic.h>
27#include <asm/cpu.h>
28#include <asm/processor.h>
29#include <asm/system.h>
30#include <asm/hardirq.h>
31#include <asm/mmu_context.h>
32#include <asm/smp.h>
33#include <asm/time.h>
34#include <asm/mipsregs.h>
35#include <asm/mipsmtregs.h>
36#include <asm/cacheflush.h>
37#include <asm/mips-boards/maltaint.h>
38
39#define MIPS_CPU_IPI_RESCHED_IRQ 0
40#define MIPS_CPU_IPI_CALL_IRQ 1
41
42static int cpu_ipi_resched_irq, cpu_ipi_call_irq;
43
44#if 0
45static void dump_mtregisters(int vpe, int tc)
46{
47 printk("vpe %d tc %d\n", vpe, tc);
48
49 settc(tc);
50
51 printk(" c0 status 0x%lx\n", read_vpe_c0_status());
52 printk(" vpecontrol 0x%lx\n", read_vpe_c0_vpecontrol());
53 printk(" vpeconf0 0x%lx\n", read_vpe_c0_vpeconf0());
54 printk(" tcstatus 0x%lx\n", read_tc_c0_tcstatus());
55 printk(" tcrestart 0x%lx\n", read_tc_c0_tcrestart());
56 printk(" tcbind 0x%lx\n", read_tc_c0_tcbind());
57 printk(" tchalt 0x%lx\n", read_tc_c0_tchalt());
58}
59#endif
60
61void __init sanitize_tlb_entries(void)
62{
63 int i, tlbsiz;
64 unsigned long mvpconf0, ncpu;
65
66 if (!cpu_has_mipsmt)
67 return;
68
69 set_c0_mvpcontrol(MVPCONTROL_VPC);
70
71 /* Disable TLB sharing */
72 clear_c0_mvpcontrol(MVPCONTROL_STLB);
73
74 mvpconf0 = read_c0_mvpconf0();
75
76 printk(KERN_INFO "MVPConf0 0x%lx TLBS %lx PTLBE %ld\n", mvpconf0,
77 (mvpconf0 & MVPCONF0_TLBS) >> MVPCONF0_TLBS_SHIFT,
78 (mvpconf0 & MVPCONF0_PTLBE) >> MVPCONF0_PTLBE_SHIFT);
79
80 tlbsiz = (mvpconf0 & MVPCONF0_PTLBE) >> MVPCONF0_PTLBE_SHIFT;
81 ncpu = ((mvpconf0 & MVPCONF0_PVPE) >> MVPCONF0_PVPE_SHIFT) + 1;
82
83 printk(" tlbsiz %d ncpu %ld\n", tlbsiz, ncpu);
84
85 if (tlbsiz > 0) {
86 /* share them out across the vpe's */
87 tlbsiz /= ncpu;
88
89 printk(KERN_INFO "setting Config1.MMU_size to %d\n", tlbsiz);
90
91 for (i = 0; i < ncpu; i++) {
92 settc(i);
93
94 if (i == 0)
95 write_c0_config1((read_c0_config1() & ~(0x3f << 25)) | (tlbsiz << 25));
96 else
97 write_vpe_c0_config1((read_vpe_c0_config1() & ~(0x3f << 25)) |
98 (tlbsiz << 25));
99 }
100 }
101
102 clear_c0_mvpcontrol(MVPCONTROL_VPC);
103}
104
105#if 0
106/*
107 * Use c0_MVPConf0 to find out how many CPUs are available, setting up
108 * phys_cpu_present_map and the logical/physical mappings.
109 */
110void __init prom_build_cpu_map(void)
111{
112 int i, num, ncpus;
113
114 cpus_clear(phys_cpu_present_map);
115
116 /* assume we boot on cpu 0.... */
117 cpu_set(0, phys_cpu_present_map);
118 __cpu_number_map[0] = 0;
119 __cpu_logical_map[0] = 0;
120
121 if (cpu_has_mipsmt) {
122 ncpus = ((read_c0_mvpconf0() & (MVPCONF0_PVPE)) >> MVPCONF0_PVPE_SHIFT) + 1;
123 for (i=1, num=0; i< NR_CPUS && i<ncpus; i++) {
124 cpu_set(i, phys_cpu_present_map);
125 __cpu_number_map[i] = ++num;
126 __cpu_logical_map[num] = i;
127 }
128
129 printk(KERN_INFO "%i available secondary CPU(s)\n", num);
130 }
131}
132#endif
133
134static void ipi_resched_dispatch (struct pt_regs *regs)
135{
136 do_IRQ(MIPS_CPU_IPI_RESCHED_IRQ, regs);
137}
138
139static void ipi_call_dispatch (struct pt_regs *regs)
140{
141 do_IRQ(MIPS_CPU_IPI_CALL_IRQ, regs);
142}
143
144irqreturn_t ipi_resched_interrupt(int irq, void *dev_id, struct pt_regs *regs)
145{
146 return IRQ_HANDLED;
147}
148
149irqreturn_t ipi_call_interrupt(int irq, void *dev_id, struct pt_regs *regs)
150{
151 smp_call_function_interrupt();
152
153 return IRQ_HANDLED;
154}
155
156static struct irqaction irq_resched = {
157 .handler = ipi_resched_interrupt,
158 .flags = SA_INTERRUPT,
159 .name = "IPI_resched"
160};
161
162static struct irqaction irq_call = {
163 .handler = ipi_call_interrupt,
164 .flags = SA_INTERRUPT,
165 .name = "IPI_call"
166};
167
168/*
169 * Common setup before any secondaries are started
170 * Make sure all CPU's are in a sensible state before we boot any of the
171 * secondarys
172 */
173void prom_prepare_cpus(unsigned int max_cpus)
174{
175 unsigned long val;
176 int i, num;
177
178 if (!cpu_has_mipsmt)
179 return;
180
181 /* disable MT so we can configure */
182 dvpe();
183 dmt();
184
185 /* Put MVPE's into 'configuration state' */
186 set_c0_mvpcontrol(MVPCONTROL_VPC);
187
188 val = read_c0_mvpconf0();
189
190 /* we'll always have more TC's than VPE's, so loop setting everything
191 to a sensible state */
192 for (i = 0, num = 0; i <= ((val & MVPCONF0_PTC) >> MVPCONF0_PTC_SHIFT); i++) {
193 settc(i);
194
195 /* VPE's */
196 if (i <= ((val & MVPCONF0_PVPE) >> MVPCONF0_PVPE_SHIFT)) {
197
198 /* deactivate all but vpe0 */
199 if (i != 0) {
200 unsigned long tmp = read_vpe_c0_vpeconf0();
201
202 tmp &= ~VPECONF0_VPA;
203
204 /* master VPE */
205 tmp |= VPECONF0_MVP;
206 write_vpe_c0_vpeconf0(tmp);
207
208 /* Record this as available CPU */
209 if (i < max_cpus) {
210 cpu_set(i, phys_cpu_present_map);
211 __cpu_number_map[i] = ++num;
212 __cpu_logical_map[num] = i;
213 }
214 }
215
216 /* disable multi-threading with TC's */
217 write_vpe_c0_vpecontrol(read_vpe_c0_vpecontrol() & ~VPECONTROL_TE);
218
219 if (i != 0) {
220 write_vpe_c0_status((read_c0_status() & ~(ST0_IM | ST0_IE | ST0_KSU)) | ST0_CU0);
221 write_vpe_c0_cause(read_vpe_c0_cause() & ~CAUSEF_IP);
222
223 /* set config to be the same as vpe0, particularly kseg0 coherency alg */
224 write_vpe_c0_config( read_c0_config());
225 }
226
227 }
228
229 /* TC's */
230
231 if (i != 0) {
232 unsigned long tmp;
233
234 /* bind a TC to each VPE, May as well put all excess TC's
235 on the last VPE */
236 if ( i >= (((val & MVPCONF0_PVPE) >> MVPCONF0_PVPE_SHIFT)+1) )
237 write_tc_c0_tcbind(read_tc_c0_tcbind() | ((val & MVPCONF0_PVPE) >> MVPCONF0_PVPE_SHIFT) );
238 else {
239 write_tc_c0_tcbind( read_tc_c0_tcbind() | i);
240
241 /* and set XTC */
242 write_vpe_c0_vpeconf0( read_vpe_c0_vpeconf0() | (i << VPECONF0_XTC_SHIFT));
243 }
244
245 tmp = read_tc_c0_tcstatus();
246
247 /* mark not allocated and not dynamically allocatable */
248 tmp &= ~(TCSTATUS_A | TCSTATUS_DA);
249 tmp |= TCSTATUS_IXMT; /* interrupt exempt */
250 write_tc_c0_tcstatus(tmp);
251
252 write_tc_c0_tchalt(TCHALT_H);
253 }
254 }
255
256 /* Release config state */
257 clear_c0_mvpcontrol(MVPCONTROL_VPC);
258
259 /* We'll wait until starting the secondaries before starting MVPE */
260
261 printk(KERN_INFO "Detected %i available secondary CPU(s)\n", num);
262
263 /* set up ipi interrupts */
264 if (cpu_has_vint) {
265 set_vi_handler (MIPS_CPU_IPI_RESCHED_IRQ, ipi_resched_dispatch);
266 set_vi_handler (MIPS_CPU_IPI_CALL_IRQ, ipi_call_dispatch);
267 }
268
269 cpu_ipi_resched_irq = MIPSCPU_INT_BASE + MIPS_CPU_IPI_RESCHED_IRQ;
270 cpu_ipi_call_irq = MIPSCPU_INT_BASE + MIPS_CPU_IPI_CALL_IRQ;
271
272 setup_irq(cpu_ipi_resched_irq, &irq_resched);
273 setup_irq(cpu_ipi_call_irq, &irq_call);
274
275 /* need to mark IPI's as IRQ_PER_CPU */
276 irq_desc[cpu_ipi_resched_irq].status |= IRQ_PER_CPU;
277 irq_desc[cpu_ipi_call_irq].status |= IRQ_PER_CPU;
278}
279
280/*
281 * Setup the PC, SP, and GP of a secondary processor and start it
282 * running!
283 * smp_bootstrap is the place to resume from
284 * __KSTK_TOS(idle) is apparently the stack pointer
285 * (unsigned long)idle->thread_info the gp
286 * assumes a 1:1 mapping of TC => VPE
287 */
288void prom_boot_secondary(int cpu, struct task_struct *idle)
289{
290 dvpe();
291 set_c0_mvpcontrol(MVPCONTROL_VPC);
292
293 settc(cpu);
294
295 /* restart */
296 write_tc_c0_tcrestart((unsigned long)&smp_bootstrap);
297
298 /* enable the tc this vpe/cpu will be running */
299 write_tc_c0_tcstatus((read_tc_c0_tcstatus() & ~TCSTATUS_IXMT) | TCSTATUS_A);
300
301 write_tc_c0_tchalt(0);
302
303 /* enable the VPE */
304 write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() | VPECONF0_VPA);
305
306 /* stack pointer */
307 write_tc_gpr_sp( __KSTK_TOS(idle));
308
309 /* global pointer */
310 write_tc_gpr_gp((unsigned long)idle->thread_info);
311
312 flush_icache_range((unsigned long)idle->thread_info,
313 (unsigned long)idle->thread_info +
314 sizeof(struct thread_info));
315
316 /* finally out of configuration and into chaos */
317 clear_c0_mvpcontrol(MVPCONTROL_VPC);
318
319 evpe(EVPE_ENABLE);
320}
321
322void prom_init_secondary(void)
323{
324 write_c0_status((read_c0_status() & ~ST0_IM ) |
325 (STATUSF_IP0 | STATUSF_IP1 | STATUSF_IP7));
326}
327
328void prom_smp_finish(void)
329{
330 write_c0_compare(read_c0_count() + (8* mips_hpt_frequency/HZ));
331
332 local_irq_enable();
333}
334
335void prom_cpus_done(void)
336{
337}
338
339void core_send_ipi(int cpu, unsigned int action)
340{
341 int i;
342 unsigned long flags;
343 int vpflags;
344
345 local_irq_save (flags);
346
347 vpflags = dvpe(); /* cant access the other CPU's registers whilst MVPE enabled */
348
349 switch (action) {
350 case SMP_CALL_FUNCTION:
351 i = C_SW1;
352 break;
353
354 case SMP_RESCHEDULE_YOURSELF:
355 default:
356 i = C_SW0;
357 break;
358 }
359
360 /* 1:1 mapping of vpe and tc... */
361 settc(cpu);
362 write_vpe_c0_cause(read_vpe_c0_cause() | i);
363 evpe(vpflags);
364
365 local_irq_restore(flags);
366}
diff --git a/arch/mips/kernel/syscall.c b/arch/mips/kernel/syscall.c
index 21e3e13a4b44..ee98eeb65e85 100644
--- a/arch/mips/kernel/syscall.c
+++ b/arch/mips/kernel/syscall.c
@@ -7,6 +7,7 @@
7 * Copyright (C) 1999, 2000 Silicon Graphics, Inc. 7 * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
8 * Copyright (C) 2001 MIPS Technologies, Inc. 8 * Copyright (C) 2001 MIPS Technologies, Inc.
9 */ 9 */
10#include <linux/config.h>
10#include <linux/a.out.h> 11#include <linux/a.out.h>
11#include <linux/errno.h> 12#include <linux/errno.h>
12#include <linux/linkage.h> 13#include <linux/linkage.h>
@@ -26,6 +27,7 @@
26#include <linux/msg.h> 27#include <linux/msg.h>
27#include <linux/shm.h> 28#include <linux/shm.h>
28#include <linux/compiler.h> 29#include <linux/compiler.h>
30#include <linux/module.h>
29 31
30#include <asm/branch.h> 32#include <asm/branch.h>
31#include <asm/cachectl.h> 33#include <asm/cachectl.h>
@@ -56,6 +58,8 @@ out:
56 58
57unsigned long shm_align_mask = PAGE_SIZE - 1; /* Sane caches */ 59unsigned long shm_align_mask = PAGE_SIZE - 1; /* Sane caches */
58 60
61EXPORT_SYMBOL(shm_align_mask);
62
59#define COLOUR_ALIGN(addr,pgoff) \ 63#define COLOUR_ALIGN(addr,pgoff) \
60 ((((addr) + shm_align_mask) & ~shm_align_mask) + \ 64 ((((addr) + shm_align_mask) & ~shm_align_mask) + \
61 (((pgoff) << PAGE_SHIFT) & shm_align_mask)) 65 (((pgoff) << PAGE_SHIFT) & shm_align_mask))
@@ -173,14 +177,28 @@ _sys_clone(nabi_no_regargs struct pt_regs regs)
173{ 177{
174 unsigned long clone_flags; 178 unsigned long clone_flags;
175 unsigned long newsp; 179 unsigned long newsp;
176 int *parent_tidptr, *child_tidptr; 180 int __user *parent_tidptr, *child_tidptr;
177 181
178 clone_flags = regs.regs[4]; 182 clone_flags = regs.regs[4];
179 newsp = regs.regs[5]; 183 newsp = regs.regs[5];
180 if (!newsp) 184 if (!newsp)
181 newsp = regs.regs[29]; 185 newsp = regs.regs[29];
182 parent_tidptr = (int *) regs.regs[6]; 186 parent_tidptr = (int __user *) regs.regs[6];
183 child_tidptr = (int *) regs.regs[7]; 187#ifdef CONFIG_32BIT
188 /* We need to fetch the fifth argument off the stack. */
189 child_tidptr = NULL;
190 if (clone_flags & (CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID)) {
191 int __user *__user *usp = (int __user *__user *) regs.regs[29];
192 if (regs.regs[2] == __NR_syscall) {
193 if (get_user (child_tidptr, &usp[5]))
194 return -EFAULT;
195 }
196 else if (get_user (child_tidptr, &usp[4]))
197 return -EFAULT;
198 }
199#else
200 child_tidptr = (int __user *) regs.regs[8];
201#endif
184 return do_fork(clone_flags, newsp, &regs, 0, 202 return do_fork(clone_flags, newsp, &regs, 0,
185 parent_tidptr, child_tidptr); 203 parent_tidptr, child_tidptr);
186} 204}
@@ -242,6 +260,16 @@ asmlinkage int sys_olduname(struct oldold_utsname * name)
242 return error; 260 return error;
243} 261}
244 262
263void sys_set_thread_area(unsigned long addr)
264{
265 struct thread_info *ti = current->thread_info;
266
267 ti->tp_value = addr;
268
269 /* If some future MIPS implementation has this register in hardware,
270 * we will need to update it here (and in context switches). */
271}
272
245asmlinkage int _sys_sysmips(int cmd, long arg1, int arg2, int arg3) 273asmlinkage int _sys_sysmips(int cmd, long arg1, int arg2, int arg3)
246{ 274{
247 int tmp, len; 275 int tmp, len;
diff --git a/arch/mips/kernel/sysirix.c b/arch/mips/kernel/sysirix.c
index 7ae4af476974..52924f8ce23c 100644
--- a/arch/mips/kernel/sysirix.c
+++ b/arch/mips/kernel/sysirix.c
@@ -73,32 +73,30 @@ asmlinkage int irix_sysmp(struct pt_regs *regs)
73} 73}
74 74
75/* The prctl commands. */ 75/* The prctl commands. */
76#define PR_MAXPROCS 1 /* Tasks/user. */ 76#define PR_MAXPROCS 1 /* Tasks/user. */
77#define PR_ISBLOCKED 2 /* If blocked, return 1. */ 77#define PR_ISBLOCKED 2 /* If blocked, return 1. */
78#define PR_SETSTACKSIZE 3 /* Set largest task stack size. */ 78#define PR_SETSTACKSIZE 3 /* Set largest task stack size. */
79#define PR_GETSTACKSIZE 4 /* Get largest task stack size. */ 79#define PR_GETSTACKSIZE 4 /* Get largest task stack size. */
80#define PR_MAXPPROCS 5 /* Num parallel tasks. */ 80#define PR_MAXPPROCS 5 /* Num parallel tasks. */
81#define PR_UNBLKONEXEC 6 /* When task exec/exit's, unblock. */ 81#define PR_UNBLKONEXEC 6 /* When task exec/exit's, unblock. */
82#define PR_SETEXITSIG 8 /* When task exit's, set signal. */ 82#define PR_SETEXITSIG 8 /* When task exit's, set signal. */
83#define PR_RESIDENT 9 /* Make task unswappable. */ 83#define PR_RESIDENT 9 /* Make task unswappable. */
84#define PR_ATTACHADDR 10 /* (Re-)Connect a vma to a task. */ 84#define PR_ATTACHADDR 10 /* (Re-)Connect a vma to a task. */
85#define PR_DETACHADDR 11 /* Disconnect a vma from a task. */ 85#define PR_DETACHADDR 11 /* Disconnect a vma from a task. */
86#define PR_TERMCHILD 12 /* When parent sleeps with fishes, kill child. */ 86#define PR_TERMCHILD 12 /* Kill child if the parent dies. */
87#define PR_GETSHMASK 13 /* Get the sproc() share mask. */ 87#define PR_GETSHMASK 13 /* Get the sproc() share mask. */
88#define PR_GETNSHARE 14 /* Number of share group members. */ 88#define PR_GETNSHARE 14 /* Number of share group members. */
89#define PR_COREPID 15 /* Add task pid to name when it core. */ 89#define PR_COREPID 15 /* Add task pid to name when it core. */
90#define PR_ATTACHADDRPERM 16 /* (Re-)Connect vma, with specified prot. */ 90#define PR_ATTACHADDRPERM 16 /* (Re-)Connect vma, with specified prot. */
91#define PR_PTHREADEXIT 17 /* Kill a pthread without prejudice. */ 91#define PR_PTHREADEXIT 17 /* Kill a pthread, only for IRIX 6.[234] */
92 92
93asmlinkage int irix_prctl(struct pt_regs *regs) 93asmlinkage int irix_prctl(unsigned option, ...)
94{ 94{
95 unsigned long cmd; 95 va_list args;
96 int error = 0, base = 0; 96 int error = 0;
97 97
98 if (regs->regs[2] == 1000) 98 va_start(args, option);
99 base = 1; 99 switch (option) {
100 cmd = regs->regs[base + 4];
101 switch (cmd) {
102 case PR_MAXPROCS: 100 case PR_MAXPROCS:
103 printk("irix_prctl[%s:%d]: Wants PR_MAXPROCS\n", 101 printk("irix_prctl[%s:%d]: Wants PR_MAXPROCS\n",
104 current->comm, current->pid); 102 current->comm, current->pid);
@@ -111,7 +109,7 @@ asmlinkage int irix_prctl(struct pt_regs *regs)
111 printk("irix_prctl[%s:%d]: Wants PR_ISBLOCKED\n", 109 printk("irix_prctl[%s:%d]: Wants PR_ISBLOCKED\n",
112 current->comm, current->pid); 110 current->comm, current->pid);
113 read_lock(&tasklist_lock); 111 read_lock(&tasklist_lock);
114 task = find_task_by_pid(regs->regs[base + 5]); 112 task = find_task_by_pid(va_arg(args, pid_t));
115 error = -ESRCH; 113 error = -ESRCH;
116 if (error) 114 if (error)
117 error = (task->run_list.next != NULL); 115 error = (task->run_list.next != NULL);
@@ -121,7 +119,7 @@ asmlinkage int irix_prctl(struct pt_regs *regs)
121 } 119 }
122 120
123 case PR_SETSTACKSIZE: { 121 case PR_SETSTACKSIZE: {
124 long value = regs->regs[base + 5]; 122 long value = va_arg(args, long);
125 123
126 printk("irix_prctl[%s:%d]: Wants PR_SETSTACKSIZE<%08lx>\n", 124 printk("irix_prctl[%s:%d]: Wants PR_SETSTACKSIZE<%08lx>\n",
127 current->comm, current->pid, (unsigned long) value); 125 current->comm, current->pid, (unsigned long) value);
@@ -222,24 +220,20 @@ asmlinkage int irix_prctl(struct pt_regs *regs)
222 error = -EINVAL; 220 error = -EINVAL;
223 break; 221 break;
224 222
225 case PR_PTHREADEXIT:
226 printk("irix_prctl[%s:%d]: Wants PR_PTHREADEXIT\n",
227 current->comm, current->pid);
228 do_exit(regs->regs[base + 5]);
229
230 default: 223 default:
231 printk("irix_prctl[%s:%d]: Non-existant opcode %d\n", 224 printk("irix_prctl[%s:%d]: Non-existant opcode %d\n",
232 current->comm, current->pid, (int)cmd); 225 current->comm, current->pid, option);
233 error = -EINVAL; 226 error = -EINVAL;
234 break; 227 break;
235 } 228 }
229 va_end(args);
236 230
237 return error; 231 return error;
238} 232}
239 233
240#undef DEBUG_PROCGRPS 234#undef DEBUG_PROCGRPS
241 235
242extern unsigned long irix_mapelf(int fd, struct elf_phdr *user_phdrp, int cnt); 236extern unsigned long irix_mapelf(int fd, struct elf_phdr __user *user_phdrp, int cnt);
243extern int getrusage(struct task_struct *p, int who, struct rusage __user *ru); 237extern int getrusage(struct task_struct *p, int who, struct rusage __user *ru);
244extern char *prom_getenv(char *name); 238extern char *prom_getenv(char *name);
245extern long prom_setenv(char *name, char *value); 239extern long prom_setenv(char *name, char *value);
@@ -276,23 +270,19 @@ asmlinkage int irix_syssgi(struct pt_regs *regs)
276 cmd = regs->regs[base + 4]; 270 cmd = regs->regs[base + 4];
277 switch(cmd) { 271 switch(cmd) {
278 case SGI_SYSID: { 272 case SGI_SYSID: {
279 char *buf = (char *) regs->regs[base + 5]; 273 char __user *buf = (char __user *) regs->regs[base + 5];
280 274
281 /* XXX Use ethernet addr.... */ 275 /* XXX Use ethernet addr.... */
282 retval = clear_user(buf, 64); 276 retval = clear_user(buf, 64) ? -EFAULT : 0;
283 break; 277 break;
284 } 278 }
285#if 0 279#if 0
286 case SGI_RDNAME: { 280 case SGI_RDNAME: {
287 int pid = (int) regs->regs[base + 5]; 281 int pid = (int) regs->regs[base + 5];
288 char *buf = (char *) regs->regs[base + 6]; 282 char __user *buf = (char __user *) regs->regs[base + 6];
289 struct task_struct *p; 283 struct task_struct *p;
290 char tcomm[sizeof(current->comm)]; 284 char tcomm[sizeof(current->comm)];
291 285
292 if (!access_ok(VERIFY_WRITE, buf, sizeof(tcomm))) {
293 retval = -EFAULT;
294 break;
295 }
296 read_lock(&tasklist_lock); 286 read_lock(&tasklist_lock);
297 p = find_task_by_pid(pid); 287 p = find_task_by_pid(pid);
298 if (!p) { 288 if (!p) {
@@ -304,34 +294,28 @@ asmlinkage int irix_syssgi(struct pt_regs *regs)
304 read_unlock(&tasklist_lock); 294 read_unlock(&tasklist_lock);
305 295
306 /* XXX Need to check sizes. */ 296 /* XXX Need to check sizes. */
307 copy_to_user(buf, tcomm, sizeof(tcomm)); 297 retval = copy_to_user(buf, tcomm, sizeof(tcomm)) ? -EFAULT : 0;
308 retval = 0;
309 break; 298 break;
310 } 299 }
311 300
312 case SGI_GETNVRAM: { 301 case SGI_GETNVRAM: {
313 char *name = (char *) regs->regs[base+5]; 302 char __user *name = (char __user *) regs->regs[base+5];
314 char *buf = (char *) regs->regs[base+6]; 303 char __user *buf = (char __user *) regs->regs[base+6];
315 char *value; 304 char *value;
316 return -EINVAL; /* til I fix it */ 305 return -EINVAL; /* til I fix it */
317 if (!access_ok(VERIFY_WRITE, buf, 128)) {
318 retval = -EFAULT;
319 break;
320 }
321 value = prom_getenv(name); /* PROM lock? */ 306 value = prom_getenv(name); /* PROM lock? */
322 if (!value) { 307 if (!value) {
323 retval = -EINVAL; 308 retval = -EINVAL;
324 break; 309 break;
325 } 310 }
326 /* Do I strlen() for the length? */ 311 /* Do I strlen() for the length? */
327 copy_to_user(buf, value, 128); 312 retval = copy_to_user(buf, value, 128) ? -EFAULT : 0;
328 retval = 0;
329 break; 313 break;
330 } 314 }
331 315
332 case SGI_SETNVRAM: { 316 case SGI_SETNVRAM: {
333 char *name = (char *) regs->regs[base+5]; 317 char __user *name = (char __user *) regs->regs[base+5];
334 char *value = (char *) regs->regs[base+6]; 318 char __user *value = (char __user *) regs->regs[base+6];
335 return -EINVAL; /* til I fix it */ 319 return -EINVAL; /* til I fix it */
336 retval = prom_setenv(name, value); 320 retval = prom_setenv(name, value);
337 /* XXX make sure retval conforms to syssgi(2) */ 321 /* XXX make sure retval conforms to syssgi(2) */
@@ -407,16 +391,16 @@ asmlinkage int irix_syssgi(struct pt_regs *regs)
407 391
408 case SGI_SETGROUPS: 392 case SGI_SETGROUPS:
409 retval = sys_setgroups((int) regs->regs[base + 5], 393 retval = sys_setgroups((int) regs->regs[base + 5],
410 (gid_t *) regs->regs[base + 6]); 394 (gid_t __user *) regs->regs[base + 6]);
411 break; 395 break;
412 396
413 case SGI_GETGROUPS: 397 case SGI_GETGROUPS:
414 retval = sys_getgroups((int) regs->regs[base + 5], 398 retval = sys_getgroups((int) regs->regs[base + 5],
415 (gid_t *) regs->regs[base + 6]); 399 (gid_t __user *) regs->regs[base + 6]);
416 break; 400 break;
417 401
418 case SGI_RUSAGE: { 402 case SGI_RUSAGE: {
419 struct rusage *ru = (struct rusage *) regs->regs[base + 6]; 403 struct rusage __user *ru = (struct rusage __user *) regs->regs[base + 6];
420 404
421 switch((int) regs->regs[base + 5]) { 405 switch((int) regs->regs[base + 5]) {
422 case 0: 406 case 0:
@@ -453,7 +437,7 @@ asmlinkage int irix_syssgi(struct pt_regs *regs)
453 437
454 case SGI_ELFMAP: 438 case SGI_ELFMAP:
455 retval = irix_mapelf((int) regs->regs[base + 5], 439 retval = irix_mapelf((int) regs->regs[base + 5],
456 (struct elf_phdr *) regs->regs[base + 6], 440 (struct elf_phdr __user *) regs->regs[base + 6],
457 (int) regs->regs[base + 7]); 441 (int) regs->regs[base + 7]);
458 break; 442 break;
459 443
@@ -468,24 +452,24 @@ asmlinkage int irix_syssgi(struct pt_regs *regs)
468 452
469 case SGI_PHYSP: { 453 case SGI_PHYSP: {
470 unsigned long addr = regs->regs[base + 5]; 454 unsigned long addr = regs->regs[base + 5];
471 int *pageno = (int *) (regs->regs[base + 6]); 455 int __user *pageno = (int __user *) (regs->regs[base + 6]);
472 struct mm_struct *mm = current->mm; 456 struct mm_struct *mm = current->mm;
473 pgd_t *pgdp; 457 pgd_t *pgdp;
458 pud_t *pudp;
474 pmd_t *pmdp; 459 pmd_t *pmdp;
475 pte_t *ptep; 460 pte_t *ptep;
476 461
477 if (!access_ok(VERIFY_WRITE, pageno, sizeof(int)))
478 return -EFAULT;
479
480 down_read(&mm->mmap_sem); 462 down_read(&mm->mmap_sem);
481 pgdp = pgd_offset(mm, addr); 463 pgdp = pgd_offset(mm, addr);
482 pmdp = pmd_offset(pgdp, addr); 464 pudp = pud_offset(pgdp, addr);
465 pmdp = pmd_offset(pudp, addr);
483 ptep = pte_offset(pmdp, addr); 466 ptep = pte_offset(pmdp, addr);
484 retval = -EINVAL; 467 retval = -EINVAL;
485 if (ptep) { 468 if (ptep) {
486 pte_t pte = *ptep; 469 pte_t pte = *ptep;
487 470
488 if (pte_val(pte) & (_PAGE_VALID | _PAGE_PRESENT)) { 471 if (pte_val(pte) & (_PAGE_VALID | _PAGE_PRESENT)) {
472 /* b0rked on 64-bit */
489 retval = put_user((pte_val(pte) & PAGE_MASK) >> 473 retval = put_user((pte_val(pte) & PAGE_MASK) >>
490 PAGE_SHIFT, pageno); 474 PAGE_SHIFT, pageno);
491 } 475 }
@@ -496,7 +480,7 @@ asmlinkage int irix_syssgi(struct pt_regs *regs)
496 480
497 case SGI_INVENT: { 481 case SGI_INVENT: {
498 int arg1 = (int) regs->regs [base + 5]; 482 int arg1 = (int) regs->regs [base + 5];
499 void *buffer = (void *) regs->regs [base + 6]; 483 void __user *buffer = (void __user *) regs->regs [base + 6];
500 int count = (int) regs->regs [base + 7]; 484 int count = (int) regs->regs [base + 7];
501 485
502 switch (arg1) { 486 switch (arg1) {
@@ -692,8 +676,8 @@ asmlinkage int irix_pause(void)
692} 676}
693 677
694/* XXX need more than this... */ 678/* XXX need more than this... */
695asmlinkage int irix_mount(char *dev_name, char *dir_name, unsigned long flags, 679asmlinkage int irix_mount(char __user *dev_name, char __user *dir_name,
696 char *type, void *data, int datalen) 680 unsigned long flags, char __user *type, void __user *data, int datalen)
697{ 681{
698 printk("[%s:%d] irix_mount(%p,%p,%08lx,%p,%p,%d)\n", 682 printk("[%s:%d] irix_mount(%p,%p,%08lx,%p,%p,%d)\n",
699 current->comm, current->pid, 683 current->comm, current->pid,
@@ -708,8 +692,8 @@ struct irix_statfs {
708 char f_fname[6], f_fpack[6]; 692 char f_fname[6], f_fpack[6];
709}; 693};
710 694
711asmlinkage int irix_statfs(const char *path, struct irix_statfs *buf, 695asmlinkage int irix_statfs(const char __user *path,
712 int len, int fs_type) 696 struct irix_statfs __user *buf, int len, int fs_type)
713{ 697{
714 struct nameidata nd; 698 struct nameidata nd;
715 struct kstatfs kbuf; 699 struct kstatfs kbuf;
@@ -724,6 +708,7 @@ asmlinkage int irix_statfs(const char *path, struct irix_statfs *buf,
724 error = -EFAULT; 708 error = -EFAULT;
725 goto out; 709 goto out;
726 } 710 }
711
727 error = user_path_walk(path, &nd); 712 error = user_path_walk(path, &nd);
728 if (error) 713 if (error)
729 goto out; 714 goto out;
@@ -732,18 +717,17 @@ asmlinkage int irix_statfs(const char *path, struct irix_statfs *buf,
732 if (error) 717 if (error)
733 goto dput_and_out; 718 goto dput_and_out;
734 719
735 __put_user(kbuf.f_type, &buf->f_type); 720 error = __put_user(kbuf.f_type, &buf->f_type);
736 __put_user(kbuf.f_bsize, &buf->f_bsize); 721 error |= __put_user(kbuf.f_bsize, &buf->f_bsize);
737 __put_user(kbuf.f_frsize, &buf->f_frsize); 722 error |= __put_user(kbuf.f_frsize, &buf->f_frsize);
738 __put_user(kbuf.f_blocks, &buf->f_blocks); 723 error |= __put_user(kbuf.f_blocks, &buf->f_blocks);
739 __put_user(kbuf.f_bfree, &buf->f_bfree); 724 error |= __put_user(kbuf.f_bfree, &buf->f_bfree);
740 __put_user(kbuf.f_files, &buf->f_files); 725 error |= __put_user(kbuf.f_files, &buf->f_files);
741 __put_user(kbuf.f_ffree, &buf->f_ffree); 726 error |= __put_user(kbuf.f_ffree, &buf->f_ffree);
742 for (i = 0; i < 6; i++) { 727 for (i = 0; i < 6; i++) {
743 __put_user(0, &buf->f_fname[i]); 728 error |= __put_user(0, &buf->f_fname[i]);
744 __put_user(0, &buf->f_fpack[i]); 729 error |= __put_user(0, &buf->f_fpack[i]);
745 } 730 }
746 error = 0;
747 731
748dput_and_out: 732dput_and_out:
749 path_release(&nd); 733 path_release(&nd);
@@ -751,7 +735,7 @@ out:
751 return error; 735 return error;
752} 736}
753 737
754asmlinkage int irix_fstatfs(unsigned int fd, struct irix_statfs *buf) 738asmlinkage int irix_fstatfs(unsigned int fd, struct irix_statfs __user *buf)
755{ 739{
756 struct kstatfs kbuf; 740 struct kstatfs kbuf;
757 struct file *file; 741 struct file *file;
@@ -761,6 +745,7 @@ asmlinkage int irix_fstatfs(unsigned int fd, struct irix_statfs *buf)
761 error = -EFAULT; 745 error = -EFAULT;
762 goto out; 746 goto out;
763 } 747 }
748
764 if (!(file = fget(fd))) { 749 if (!(file = fget(fd))) {
765 error = -EBADF; 750 error = -EBADF;
766 goto out; 751 goto out;
@@ -770,16 +755,17 @@ asmlinkage int irix_fstatfs(unsigned int fd, struct irix_statfs *buf)
770 if (error) 755 if (error)
771 goto out_f; 756 goto out_f;
772 757
773 __put_user(kbuf.f_type, &buf->f_type); 758 error = __put_user(kbuf.f_type, &buf->f_type);
774 __put_user(kbuf.f_bsize, &buf->f_bsize); 759 error |= __put_user(kbuf.f_bsize, &buf->f_bsize);
775 __put_user(kbuf.f_frsize, &buf->f_frsize); 760 error |= __put_user(kbuf.f_frsize, &buf->f_frsize);
776 __put_user(kbuf.f_blocks, &buf->f_blocks); 761 error |= __put_user(kbuf.f_blocks, &buf->f_blocks);
777 __put_user(kbuf.f_bfree, &buf->f_bfree); 762 error |= __put_user(kbuf.f_bfree, &buf->f_bfree);
778 __put_user(kbuf.f_files, &buf->f_files); 763 error |= __put_user(kbuf.f_files, &buf->f_files);
779 __put_user(kbuf.f_ffree, &buf->f_ffree); 764 error |= __put_user(kbuf.f_ffree, &buf->f_ffree);
780 for(i = 0; i < 6; i++) { 765
781 __put_user(0, &buf->f_fname[i]); 766 for (i = 0; i < 6; i++) {
782 __put_user(0, &buf->f_fpack[i]); 767 error |= __put_user(0, &buf->f_fname[i]);
768 error |= __put_user(0, &buf->f_fpack[i]);
783 } 769 }
784 770
785out_f: 771out_f:
@@ -806,14 +792,15 @@ asmlinkage int irix_setpgrp(int flags)
806 return error; 792 return error;
807} 793}
808 794
809asmlinkage int irix_times(struct tms * tbuf) 795asmlinkage int irix_times(struct tms __user *tbuf)
810{ 796{
811 int err = 0; 797 int err = 0;
812 798
813 if (tbuf) { 799 if (tbuf) {
814 if (!access_ok(VERIFY_WRITE,tbuf,sizeof *tbuf)) 800 if (!access_ok(VERIFY_WRITE,tbuf,sizeof *tbuf))
815 return -EFAULT; 801 return -EFAULT;
816 err |= __put_user(current->utime, &tbuf->tms_utime); 802
803 err = __put_user(current->utime, &tbuf->tms_utime);
817 err |= __put_user(current->stime, &tbuf->tms_stime); 804 err |= __put_user(current->stime, &tbuf->tms_stime);
818 err |= __put_user(current->signal->cutime, &tbuf->tms_cutime); 805 err |= __put_user(current->signal->cutime, &tbuf->tms_cutime);
819 err |= __put_user(current->signal->cstime, &tbuf->tms_cstime); 806 err |= __put_user(current->signal->cstime, &tbuf->tms_cstime);
@@ -829,13 +816,13 @@ asmlinkage int irix_exec(struct pt_regs *regs)
829 816
830 if(regs->regs[2] == 1000) 817 if(regs->regs[2] == 1000)
831 base = 1; 818 base = 1;
832 filename = getname((char *) (long)regs->regs[base + 4]); 819 filename = getname((char __user *) (long)regs->regs[base + 4]);
833 error = PTR_ERR(filename); 820 error = PTR_ERR(filename);
834 if (IS_ERR(filename)) 821 if (IS_ERR(filename))
835 return error; 822 return error;
836 823
837 error = do_execve(filename, (char **) (long)regs->regs[base + 5], 824 error = do_execve(filename, (char __user * __user *) (long)regs->regs[base + 5],
838 (char **) 0, regs); 825 NULL, regs);
839 putname(filename); 826 putname(filename);
840 827
841 return error; 828 return error;
@@ -848,12 +835,12 @@ asmlinkage int irix_exece(struct pt_regs *regs)
848 835
849 if (regs->regs[2] == 1000) 836 if (regs->regs[2] == 1000)
850 base = 1; 837 base = 1;
851 filename = getname((char *) (long)regs->regs[base + 4]); 838 filename = getname((char __user *) (long)regs->regs[base + 4]);
852 error = PTR_ERR(filename); 839 error = PTR_ERR(filename);
853 if (IS_ERR(filename)) 840 if (IS_ERR(filename))
854 return error; 841 return error;
855 error = do_execve(filename, (char **) (long)regs->regs[base + 5], 842 error = do_execve(filename, (char __user * __user *) (long)regs->regs[base + 5],
856 (char **) (long)regs->regs[base + 6], regs); 843 (char __user * __user *) (long)regs->regs[base + 6], regs);
857 putname(filename); 844 putname(filename);
858 845
859 return error; 846 return error;
@@ -909,22 +896,17 @@ asmlinkage int irix_socket(int family, int type, int protocol)
909 return sys_socket(family, type, protocol); 896 return sys_socket(family, type, protocol);
910} 897}
911 898
912asmlinkage int irix_getdomainname(char *name, int len) 899asmlinkage int irix_getdomainname(char __user *name, int len)
913{ 900{
914 int error; 901 int err;
915
916 if (!access_ok(VERIFY_WRITE, name, len))
917 return -EFAULT;
918 902
919 down_read(&uts_sem); 903 down_read(&uts_sem);
920 if (len > __NEW_UTS_LEN) 904 if (len > __NEW_UTS_LEN)
921 len = __NEW_UTS_LEN; 905 len = __NEW_UTS_LEN;
922 error = 0; 906 err = copy_to_user(name, system_utsname.domainname, len) ? -EFAULT : 0;
923 if (copy_to_user(name, system_utsname.domainname, len))
924 error = -EFAULT;
925 up_read(&uts_sem); 907 up_read(&uts_sem);
926 908
927 return error; 909 return err;
928} 910}
929 911
930asmlinkage unsigned long irix_getpagesize(void) 912asmlinkage unsigned long irix_getpagesize(void)
@@ -940,12 +922,13 @@ asmlinkage int irix_msgsys(int opcode, unsigned long arg0, unsigned long arg1,
940 case 0: 922 case 0:
941 return sys_msgget((key_t) arg0, (int) arg1); 923 return sys_msgget((key_t) arg0, (int) arg1);
942 case 1: 924 case 1:
943 return sys_msgctl((int) arg0, (int) arg1, (struct msqid_ds *)arg2); 925 return sys_msgctl((int) arg0, (int) arg1,
926 (struct msqid_ds __user *)arg2);
944 case 2: 927 case 2:
945 return sys_msgrcv((int) arg0, (struct msgbuf *) arg1, 928 return sys_msgrcv((int) arg0, (struct msgbuf __user *) arg1,
946 (size_t) arg2, (long) arg3, (int) arg4); 929 (size_t) arg2, (long) arg3, (int) arg4);
947 case 3: 930 case 3:
948 return sys_msgsnd((int) arg0, (struct msgbuf *) arg1, 931 return sys_msgsnd((int) arg0, (struct msgbuf __user *) arg1,
949 (size_t) arg2, (int) arg3); 932 (size_t) arg2, (int) arg3);
950 default: 933 default:
951 return -EINVAL; 934 return -EINVAL;
@@ -957,12 +940,13 @@ asmlinkage int irix_shmsys(int opcode, unsigned long arg0, unsigned long arg1,
957{ 940{
958 switch (opcode) { 941 switch (opcode) {
959 case 0: 942 case 0:
960 return do_shmat((int) arg0, (char *)arg1, (int) arg2, 943 return do_shmat((int) arg0, (char __user *) arg1, (int) arg2,
961 (unsigned long *) arg3); 944 (unsigned long *) arg3);
962 case 1: 945 case 1:
963 return sys_shmctl((int)arg0, (int)arg1, (struct shmid_ds *)arg2); 946 return sys_shmctl((int)arg0, (int)arg1,
947 (struct shmid_ds __user *)arg2);
964 case 2: 948 case 2:
965 return sys_shmdt((char *)arg0); 949 return sys_shmdt((char __user *)arg0);
966 case 3: 950 case 3:
967 return sys_shmget((key_t) arg0, (int) arg1, (int) arg2); 951 return sys_shmget((key_t) arg0, (int) arg1, (int) arg2);
968 default: 952 default:
@@ -980,7 +964,7 @@ asmlinkage int irix_semsys(int opcode, unsigned long arg0, unsigned long arg1,
980 case 1: 964 case 1:
981 return sys_semget((key_t) arg0, (int) arg1, (int) arg2); 965 return sys_semget((key_t) arg0, (int) arg1, (int) arg2);
982 case 2: 966 case 2:
983 return sys_semop((int) arg0, (struct sembuf *)arg1, 967 return sys_semop((int) arg0, (struct sembuf __user *)arg1,
984 (unsigned int) arg2); 968 (unsigned int) arg2);
985 default: 969 default:
986 return -EINVAL; 970 return -EINVAL;
@@ -998,15 +982,16 @@ static inline loff_t llseek(struct file *file, loff_t offset, int origin)
998 lock_kernel(); 982 lock_kernel();
999 retval = fn(file, offset, origin); 983 retval = fn(file, offset, origin);
1000 unlock_kernel(); 984 unlock_kernel();
985
1001 return retval; 986 return retval;
1002} 987}
1003 988
1004asmlinkage int irix_lseek64(int fd, int _unused, int offhi, int offlow, 989asmlinkage int irix_lseek64(int fd, int _unused, int offhi, int offlow,
1005 int origin) 990 int origin)
1006{ 991{
1007 int retval;
1008 struct file * file; 992 struct file * file;
1009 loff_t offset; 993 loff_t offset;
994 int retval;
1010 995
1011 retval = -EBADF; 996 retval = -EBADF;
1012 file = fget(fd); 997 file = fget(fd);
@@ -1031,12 +1016,12 @@ asmlinkage int irix_sginap(int ticks)
1031 return 0; 1016 return 0;
1032} 1017}
1033 1018
1034asmlinkage int irix_sgikopt(char *istring, char *ostring, int len) 1019asmlinkage int irix_sgikopt(char __user *istring, char __user *ostring, int len)
1035{ 1020{
1036 return -EINVAL; 1021 return -EINVAL;
1037} 1022}
1038 1023
1039asmlinkage int irix_gettimeofday(struct timeval *tv) 1024asmlinkage int irix_gettimeofday(struct timeval __user *tv)
1040{ 1025{
1041 time_t sec; 1026 time_t sec;
1042 long nsec, seq; 1027 long nsec, seq;
@@ -1077,7 +1062,7 @@ asmlinkage unsigned long irix_mmap32(unsigned long addr, size_t len, int prot,
1077 1062
1078 if (max_size > file->f_dentry->d_inode->i_size) { 1063 if (max_size > file->f_dentry->d_inode->i_size) {
1079 old_pos = sys_lseek (fd, max_size - 1, 0); 1064 old_pos = sys_lseek (fd, max_size - 1, 0);
1080 sys_write (fd, "", 1); 1065 sys_write (fd, (void __user *) "", 1);
1081 sys_lseek (fd, old_pos, 0); 1066 sys_lseek (fd, old_pos, 0);
1082 } 1067 }
1083 } 1068 }
@@ -1102,7 +1087,7 @@ asmlinkage int irix_madvise(unsigned long addr, int len, int behavior)
1102 return -EINVAL; 1087 return -EINVAL;
1103} 1088}
1104 1089
1105asmlinkage int irix_pagelock(char *addr, int len, int op) 1090asmlinkage int irix_pagelock(char __user *addr, int len, int op)
1106{ 1091{
1107 printk("[%s:%d] Wheee.. irix_pagelock(%p,%d,%d)\n", 1092 printk("[%s:%d] Wheee.. irix_pagelock(%p,%d,%d)\n",
1108 current->comm, current->pid, addr, len, op); 1093 current->comm, current->pid, addr, len, op);
@@ -1142,7 +1127,7 @@ asmlinkage int irix_BSDsetpgrp(int pid, int pgrp)
1142 return error; 1127 return error;
1143} 1128}
1144 1129
1145asmlinkage int irix_systeminfo(int cmd, char *buf, int cnt) 1130asmlinkage int irix_systeminfo(int cmd, char __user *buf, int cnt)
1146{ 1131{
1147 printk("[%s:%d] Wheee.. irix_systeminfo(%d,%p,%d)\n", 1132 printk("[%s:%d] Wheee.. irix_systeminfo(%d,%p,%d)\n",
1148 current->comm, current->pid, cmd, buf, cnt); 1133 current->comm, current->pid, cmd, buf, cnt);
@@ -1158,14 +1143,14 @@ struct iuname {
1158 char _unused3[257], _unused4[257], _unused5[257]; 1143 char _unused3[257], _unused4[257], _unused5[257];
1159}; 1144};
1160 1145
1161asmlinkage int irix_uname(struct iuname *buf) 1146asmlinkage int irix_uname(struct iuname __user *buf)
1162{ 1147{
1163 down_read(&uts_sem); 1148 down_read(&uts_sem);
1164 if (copy_to_user(system_utsname.sysname, buf->sysname, 65) 1149 if (copy_from_user(system_utsname.sysname, buf->sysname, 65)
1165 || copy_to_user(system_utsname.nodename, buf->nodename, 65) 1150 || copy_from_user(system_utsname.nodename, buf->nodename, 65)
1166 || copy_to_user(system_utsname.release, buf->release, 65) 1151 || copy_from_user(system_utsname.release, buf->release, 65)
1167 || copy_to_user(system_utsname.version, buf->version, 65) 1152 || copy_from_user(system_utsname.version, buf->version, 65)
1168 || copy_to_user(system_utsname.machine, buf->machine, 65)) { 1153 || copy_from_user(system_utsname.machine, buf->machine, 65)) {
1169 return -EFAULT; 1154 return -EFAULT;
1170 } 1155 }
1171 up_read(&uts_sem); 1156 up_read(&uts_sem);
@@ -1175,7 +1160,7 @@ asmlinkage int irix_uname(struct iuname *buf)
1175 1160
1176#undef DEBUG_XSTAT 1161#undef DEBUG_XSTAT
1177 1162
1178static int irix_xstat32_xlate(struct kstat *stat, void *ubuf) 1163static int irix_xstat32_xlate(struct kstat *stat, void __user *ubuf)
1179{ 1164{
1180 struct xstat32 { 1165 struct xstat32 {
1181 u32 st_dev, st_pad1[3], st_ino, st_mode, st_nlink, st_uid, st_gid; 1166 u32 st_dev, st_pad1[3], st_ino, st_mode, st_nlink, st_uid, st_gid;
@@ -1215,7 +1200,7 @@ static int irix_xstat32_xlate(struct kstat *stat, void *ubuf)
1215 return copy_to_user(ubuf, &ub, sizeof(ub)) ? -EFAULT : 0; 1200 return copy_to_user(ubuf, &ub, sizeof(ub)) ? -EFAULT : 0;
1216} 1201}
1217 1202
1218static int irix_xstat64_xlate(struct kstat *stat, void *ubuf) 1203static int irix_xstat64_xlate(struct kstat *stat, void __user *ubuf)
1219{ 1204{
1220 struct xstat64 { 1205 struct xstat64 {
1221 u32 st_dev; s32 st_pad1[3]; 1206 u32 st_dev; s32 st_pad1[3];
@@ -1265,7 +1250,7 @@ static int irix_xstat64_xlate(struct kstat *stat, void *ubuf)
1265 return copy_to_user(ubuf, &ks, sizeof(ks)) ? -EFAULT : 0; 1250 return copy_to_user(ubuf, &ks, sizeof(ks)) ? -EFAULT : 0;
1266} 1251}
1267 1252
1268asmlinkage int irix_xstat(int version, char *filename, struct stat *statbuf) 1253asmlinkage int irix_xstat(int version, char __user *filename, struct stat __user *statbuf)
1269{ 1254{
1270 int retval; 1255 int retval;
1271 struct kstat stat; 1256 struct kstat stat;
@@ -1291,7 +1276,7 @@ asmlinkage int irix_xstat(int version, char *filename, struct stat *statbuf)
1291 return retval; 1276 return retval;
1292} 1277}
1293 1278
1294asmlinkage int irix_lxstat(int version, char *filename, struct stat *statbuf) 1279asmlinkage int irix_lxstat(int version, char __user *filename, struct stat __user *statbuf)
1295{ 1280{
1296 int error; 1281 int error;
1297 struct kstat stat; 1282 struct kstat stat;
@@ -1318,7 +1303,7 @@ asmlinkage int irix_lxstat(int version, char *filename, struct stat *statbuf)
1318 return error; 1303 return error;
1319} 1304}
1320 1305
1321asmlinkage int irix_fxstat(int version, int fd, struct stat *statbuf) 1306asmlinkage int irix_fxstat(int version, int fd, struct stat __user *statbuf)
1322{ 1307{
1323 int error; 1308 int error;
1324 struct kstat stat; 1309 struct kstat stat;
@@ -1344,7 +1329,7 @@ asmlinkage int irix_fxstat(int version, int fd, struct stat *statbuf)
1344 return error; 1329 return error;
1345} 1330}
1346 1331
1347asmlinkage int irix_xmknod(int ver, char *filename, int mode, unsigned dev) 1332asmlinkage int irix_xmknod(int ver, char __user *filename, int mode, unsigned dev)
1348{ 1333{
1349 int retval; 1334 int retval;
1350 printk("[%s:%d] Wheee.. irix_xmknod(%d,%s,%x,%x)\n", 1335 printk("[%s:%d] Wheee.. irix_xmknod(%d,%s,%x,%x)\n",
@@ -1364,7 +1349,7 @@ asmlinkage int irix_xmknod(int ver, char *filename, int mode, unsigned dev)
1364 return retval; 1349 return retval;
1365} 1350}
1366 1351
1367asmlinkage int irix_swapctl(int cmd, char *arg) 1352asmlinkage int irix_swapctl(int cmd, char __user *arg)
1368{ 1353{
1369 printk("[%s:%d] Wheee.. irix_swapctl(%d,%p)\n", 1354 printk("[%s:%d] Wheee.. irix_swapctl(%d,%p)\n",
1370 current->comm, current->pid, cmd, arg); 1355 current->comm, current->pid, cmd, arg);
@@ -1380,7 +1365,7 @@ struct irix_statvfs {
1380 char f_fstr[32]; u32 f_filler[16]; 1365 char f_fstr[32]; u32 f_filler[16];
1381}; 1366};
1382 1367
1383asmlinkage int irix_statvfs(char *fname, struct irix_statvfs *buf) 1368asmlinkage int irix_statvfs(char __user *fname, struct irix_statvfs __user *buf)
1384{ 1369{
1385 struct nameidata nd; 1370 struct nameidata nd;
1386 struct kstatfs kbuf; 1371 struct kstatfs kbuf;
@@ -1388,10 +1373,9 @@ asmlinkage int irix_statvfs(char *fname, struct irix_statvfs *buf)
1388 1373
1389 printk("[%s:%d] Wheee.. irix_statvfs(%s,%p)\n", 1374 printk("[%s:%d] Wheee.. irix_statvfs(%s,%p)\n",
1390 current->comm, current->pid, fname, buf); 1375 current->comm, current->pid, fname, buf);
1391 if (!access_ok(VERIFY_WRITE, buf, sizeof(struct irix_statvfs))) { 1376 if (!access_ok(VERIFY_WRITE, buf, sizeof(struct irix_statvfs)))
1392 error = -EFAULT; 1377 return -EFAULT;
1393 goto out; 1378
1394 }
1395 error = user_path_walk(fname, &nd); 1379 error = user_path_walk(fname, &nd);
1396 if (error) 1380 if (error)
1397 goto out; 1381 goto out;
@@ -1399,27 +1383,25 @@ asmlinkage int irix_statvfs(char *fname, struct irix_statvfs *buf)
1399 if (error) 1383 if (error)
1400 goto dput_and_out; 1384 goto dput_and_out;
1401 1385
1402 __put_user(kbuf.f_bsize, &buf->f_bsize); 1386 error |= __put_user(kbuf.f_bsize, &buf->f_bsize);
1403 __put_user(kbuf.f_frsize, &buf->f_frsize); 1387 error |= __put_user(kbuf.f_frsize, &buf->f_frsize);
1404 __put_user(kbuf.f_blocks, &buf->f_blocks); 1388 error |= __put_user(kbuf.f_blocks, &buf->f_blocks);
1405 __put_user(kbuf.f_bfree, &buf->f_bfree); 1389 error |= __put_user(kbuf.f_bfree, &buf->f_bfree);
1406 __put_user(kbuf.f_bfree, &buf->f_bavail); /* XXX hackety hack... */ 1390 error |= __put_user(kbuf.f_bfree, &buf->f_bavail); /* XXX hackety hack... */
1407 __put_user(kbuf.f_files, &buf->f_files); 1391 error |= __put_user(kbuf.f_files, &buf->f_files);
1408 __put_user(kbuf.f_ffree, &buf->f_ffree); 1392 error |= __put_user(kbuf.f_ffree, &buf->f_ffree);
1409 __put_user(kbuf.f_ffree, &buf->f_favail); /* XXX hackety hack... */ 1393 error |= __put_user(kbuf.f_ffree, &buf->f_favail); /* XXX hackety hack... */
1410#ifdef __MIPSEB__ 1394#ifdef __MIPSEB__
1411 __put_user(kbuf.f_fsid.val[1], &buf->f_fsid); 1395 error |= __put_user(kbuf.f_fsid.val[1], &buf->f_fsid);
1412#else 1396#else
1413 __put_user(kbuf.f_fsid.val[0], &buf->f_fsid); 1397 error |= __put_user(kbuf.f_fsid.val[0], &buf->f_fsid);
1414#endif 1398#endif
1415 for (i = 0; i < 16; i++) 1399 for (i = 0; i < 16; i++)
1416 __put_user(0, &buf->f_basetype[i]); 1400 error |= __put_user(0, &buf->f_basetype[i]);
1417 __put_user(0, &buf->f_flag); 1401 error |= __put_user(0, &buf->f_flag);
1418 __put_user(kbuf.f_namelen, &buf->f_namemax); 1402 error |= __put_user(kbuf.f_namelen, &buf->f_namemax);
1419 for (i = 0; i < 32; i++) 1403 for (i = 0; i < 32; i++)
1420 __put_user(0, &buf->f_fstr[i]); 1404 error |= __put_user(0, &buf->f_fstr[i]);
1421
1422 error = 0;
1423 1405
1424dput_and_out: 1406dput_and_out:
1425 path_release(&nd); 1407 path_release(&nd);
@@ -1427,7 +1409,7 @@ out:
1427 return error; 1409 return error;
1428} 1410}
1429 1411
1430asmlinkage int irix_fstatvfs(int fd, struct irix_statvfs *buf) 1412asmlinkage int irix_fstatvfs(int fd, struct irix_statvfs __user *buf)
1431{ 1413{
1432 struct kstatfs kbuf; 1414 struct kstatfs kbuf;
1433 struct file *file; 1415 struct file *file;
@@ -1436,10 +1418,9 @@ asmlinkage int irix_fstatvfs(int fd, struct irix_statvfs *buf)
1436 printk("[%s:%d] Wheee.. irix_fstatvfs(%d,%p)\n", 1418 printk("[%s:%d] Wheee.. irix_fstatvfs(%d,%p)\n",
1437 current->comm, current->pid, fd, buf); 1419 current->comm, current->pid, fd, buf);
1438 1420
1439 if (!access_ok(VERIFY_WRITE, buf, sizeof(struct irix_statvfs))) { 1421 if (!access_ok(VERIFY_WRITE, buf, sizeof(struct irix_statvfs)))
1440 error = -EFAULT; 1422 return -EFAULT;
1441 goto out; 1423
1442 }
1443 if (!(file = fget(fd))) { 1424 if (!(file = fget(fd))) {
1444 error = -EBADF; 1425 error = -EBADF;
1445 goto out; 1426 goto out;
@@ -1448,24 +1429,24 @@ asmlinkage int irix_fstatvfs(int fd, struct irix_statvfs *buf)
1448 if (error) 1429 if (error)
1449 goto out_f; 1430 goto out_f;
1450 1431
1451 __put_user(kbuf.f_bsize, &buf->f_bsize); 1432 error = __put_user(kbuf.f_bsize, &buf->f_bsize);
1452 __put_user(kbuf.f_frsize, &buf->f_frsize); 1433 error |= __put_user(kbuf.f_frsize, &buf->f_frsize);
1453 __put_user(kbuf.f_blocks, &buf->f_blocks); 1434 error |= __put_user(kbuf.f_blocks, &buf->f_blocks);
1454 __put_user(kbuf.f_bfree, &buf->f_bfree); 1435 error |= __put_user(kbuf.f_bfree, &buf->f_bfree);
1455 __put_user(kbuf.f_bfree, &buf->f_bavail); /* XXX hackety hack... */ 1436 error |= __put_user(kbuf.f_bfree, &buf->f_bavail); /* XXX hackety hack... */
1456 __put_user(kbuf.f_files, &buf->f_files); 1437 error |= __put_user(kbuf.f_files, &buf->f_files);
1457 __put_user(kbuf.f_ffree, &buf->f_ffree); 1438 error |= __put_user(kbuf.f_ffree, &buf->f_ffree);
1458 __put_user(kbuf.f_ffree, &buf->f_favail); /* XXX hackety hack... */ 1439 error |= __put_user(kbuf.f_ffree, &buf->f_favail); /* XXX hackety hack... */
1459#ifdef __MIPSEB__ 1440#ifdef __MIPSEB__
1460 __put_user(kbuf.f_fsid.val[1], &buf->f_fsid); 1441 error |= __put_user(kbuf.f_fsid.val[1], &buf->f_fsid);
1461#else 1442#else
1462 __put_user(kbuf.f_fsid.val[0], &buf->f_fsid); 1443 error |= __put_user(kbuf.f_fsid.val[0], &buf->f_fsid);
1463#endif 1444#endif
1464 for(i = 0; i < 16; i++) 1445 for(i = 0; i < 16; i++)
1465 __put_user(0, &buf->f_basetype[i]); 1446 error |= __put_user(0, &buf->f_basetype[i]);
1466 __put_user(0, &buf->f_flag); 1447 error |= __put_user(0, &buf->f_flag);
1467 __put_user(kbuf.f_namelen, &buf->f_namemax); 1448 error |= __put_user(kbuf.f_namelen, &buf->f_namemax);
1468 __clear_user(&buf->f_fstr, sizeof(buf->f_fstr)); 1449 error |= __clear_user(&buf->f_fstr, sizeof(buf->f_fstr)) ? -EFAULT : 0;
1469 1450
1470out_f: 1451out_f:
1471 fput(file); 1452 fput(file);
@@ -1489,7 +1470,7 @@ asmlinkage int irix_sigqueue(int pid, int sig, int code, int val)
1489 return -EINVAL; 1470 return -EINVAL;
1490} 1471}
1491 1472
1492asmlinkage int irix_truncate64(char *name, int pad, int size1, int size2) 1473asmlinkage int irix_truncate64(char __user *name, int pad, int size1, int size2)
1493{ 1474{
1494 int retval; 1475 int retval;
1495 1476
@@ -1522,6 +1503,7 @@ asmlinkage int irix_mmap64(struct pt_regs *regs)
1522 int len, prot, flags, fd, off1, off2, error, base = 0; 1503 int len, prot, flags, fd, off1, off2, error, base = 0;
1523 unsigned long addr, pgoff, *sp; 1504 unsigned long addr, pgoff, *sp;
1524 struct file *file = NULL; 1505 struct file *file = NULL;
1506 int err;
1525 1507
1526 if (regs->regs[2] == 1000) 1508 if (regs->regs[2] == 1000)
1527 base = 1; 1509 base = 1;
@@ -1531,36 +1513,31 @@ asmlinkage int irix_mmap64(struct pt_regs *regs)
1531 prot = regs->regs[base + 6]; 1513 prot = regs->regs[base + 6];
1532 if (!base) { 1514 if (!base) {
1533 flags = regs->regs[base + 7]; 1515 flags = regs->regs[base + 7];
1534 if (!access_ok(VERIFY_READ, sp, (4 * sizeof(unsigned long)))) { 1516 if (!access_ok(VERIFY_READ, sp, (4 * sizeof(unsigned long))))
1535 error = -EFAULT; 1517 return -EFAULT;
1536 goto out;
1537 }
1538 fd = sp[0]; 1518 fd = sp[0];
1539 __get_user(off1, &sp[1]); 1519 err = __get_user(off1, &sp[1]);
1540 __get_user(off2, &sp[2]); 1520 err |= __get_user(off2, &sp[2]);
1541 } else { 1521 } else {
1542 if (!access_ok(VERIFY_READ, sp, (5 * sizeof(unsigned long)))) { 1522 if (!access_ok(VERIFY_READ, sp, (5 * sizeof(unsigned long))))
1543 error = -EFAULT; 1523 return -EFAULT;
1544 goto out; 1524 err = __get_user(flags, &sp[0]);
1545 } 1525 err |= __get_user(fd, &sp[1]);
1546 __get_user(flags, &sp[0]); 1526 err |= __get_user(off1, &sp[2]);
1547 __get_user(fd, &sp[1]); 1527 err |= __get_user(off2, &sp[3]);
1548 __get_user(off1, &sp[2]);
1549 __get_user(off2, &sp[3]);
1550 } 1528 }
1551 1529
1552 if (off1 & PAGE_MASK) { 1530 if (err)
1553 error = -EOVERFLOW; 1531 return err;
1554 goto out; 1532
1555 } 1533 if (off1 & PAGE_MASK)
1534 return -EOVERFLOW;
1556 1535
1557 pgoff = (off1 << (32 - PAGE_SHIFT)) | (off2 >> PAGE_SHIFT); 1536 pgoff = (off1 << (32 - PAGE_SHIFT)) | (off2 >> PAGE_SHIFT);
1558 1537
1559 if (!(flags & MAP_ANONYMOUS)) { 1538 if (!(flags & MAP_ANONYMOUS)) {
1560 if (!(file = fget(fd))) { 1539 if (!(file = fget(fd)))
1561 error = -EBADF; 1540 return -EBADF;
1562 goto out;
1563 }
1564 1541
1565 /* Ok, bad taste hack follows, try to think in something else 1542 /* Ok, bad taste hack follows, try to think in something else
1566 when reading this */ 1543 when reading this */
@@ -1570,7 +1547,7 @@ asmlinkage int irix_mmap64(struct pt_regs *regs)
1570 1547
1571 if (max_size > file->f_dentry->d_inode->i_size) { 1548 if (max_size > file->f_dentry->d_inode->i_size) {
1572 old_pos = sys_lseek (fd, max_size - 1, 0); 1549 old_pos = sys_lseek (fd, max_size - 1, 0);
1573 sys_write (fd, "", 1); 1550 sys_write (fd, (void __user *) "", 1);
1574 sys_lseek (fd, old_pos, 0); 1551 sys_lseek (fd, old_pos, 0);
1575 } 1552 }
1576 } 1553 }
@@ -1585,7 +1562,6 @@ asmlinkage int irix_mmap64(struct pt_regs *regs)
1585 if (file) 1562 if (file)
1586 fput(file); 1563 fput(file);
1587 1564
1588out:
1589 return error; 1565 return error;
1590} 1566}
1591 1567
@@ -1597,7 +1573,7 @@ asmlinkage int irix_dmi(struct pt_regs *regs)
1597 return -EINVAL; 1573 return -EINVAL;
1598} 1574}
1599 1575
1600asmlinkage int irix_pread(int fd, char *buf, int cnt, int off64, 1576asmlinkage int irix_pread(int fd, char __user *buf, int cnt, int off64,
1601 int off1, int off2) 1577 int off1, int off2)
1602{ 1578{
1603 printk("[%s:%d] Wheee.. irix_pread(%d,%p,%d,%d,%d,%d)\n", 1579 printk("[%s:%d] Wheee.. irix_pread(%d,%p,%d,%d,%d,%d)\n",
@@ -1606,7 +1582,7 @@ asmlinkage int irix_pread(int fd, char *buf, int cnt, int off64,
1606 return -EINVAL; 1582 return -EINVAL;
1607} 1583}
1608 1584
1609asmlinkage int irix_pwrite(int fd, char *buf, int cnt, int off64, 1585asmlinkage int irix_pwrite(int fd, char __user *buf, int cnt, int off64,
1610 int off1, int off2) 1586 int off1, int off2)
1611{ 1587{
1612 printk("[%s:%d] Wheee.. irix_pwrite(%d,%p,%d,%d,%d,%d)\n", 1588 printk("[%s:%d] Wheee.. irix_pwrite(%d,%p,%d,%d,%d,%d)\n",
@@ -1638,7 +1614,7 @@ struct irix_statvfs64 {
1638 u32 f_filler[16]; 1614 u32 f_filler[16];
1639}; 1615};
1640 1616
1641asmlinkage int irix_statvfs64(char *fname, struct irix_statvfs64 *buf) 1617asmlinkage int irix_statvfs64(char __user *fname, struct irix_statvfs64 __user *buf)
1642{ 1618{
1643 struct nameidata nd; 1619 struct nameidata nd;
1644 struct kstatfs kbuf; 1620 struct kstatfs kbuf;
@@ -1650,6 +1626,7 @@ asmlinkage int irix_statvfs64(char *fname, struct irix_statvfs64 *buf)
1650 error = -EFAULT; 1626 error = -EFAULT;
1651 goto out; 1627 goto out;
1652 } 1628 }
1629
1653 error = user_path_walk(fname, &nd); 1630 error = user_path_walk(fname, &nd);
1654 if (error) 1631 if (error)
1655 goto out; 1632 goto out;
@@ -1657,27 +1634,25 @@ asmlinkage int irix_statvfs64(char *fname, struct irix_statvfs64 *buf)
1657 if (error) 1634 if (error)
1658 goto dput_and_out; 1635 goto dput_and_out;
1659 1636
1660 __put_user(kbuf.f_bsize, &buf->f_bsize); 1637 error = __put_user(kbuf.f_bsize, &buf->f_bsize);
1661 __put_user(kbuf.f_frsize, &buf->f_frsize); 1638 error |= __put_user(kbuf.f_frsize, &buf->f_frsize);
1662 __put_user(kbuf.f_blocks, &buf->f_blocks); 1639 error |= __put_user(kbuf.f_blocks, &buf->f_blocks);
1663 __put_user(kbuf.f_bfree, &buf->f_bfree); 1640 error |= __put_user(kbuf.f_bfree, &buf->f_bfree);
1664 __put_user(kbuf.f_bfree, &buf->f_bavail); /* XXX hackety hack... */ 1641 error |= __put_user(kbuf.f_bfree, &buf->f_bavail); /* XXX hackety hack... */
1665 __put_user(kbuf.f_files, &buf->f_files); 1642 error |= __put_user(kbuf.f_files, &buf->f_files);
1666 __put_user(kbuf.f_ffree, &buf->f_ffree); 1643 error |= __put_user(kbuf.f_ffree, &buf->f_ffree);
1667 __put_user(kbuf.f_ffree, &buf->f_favail); /* XXX hackety hack... */ 1644 error |= __put_user(kbuf.f_ffree, &buf->f_favail); /* XXX hackety hack... */
1668#ifdef __MIPSEB__ 1645#ifdef __MIPSEB__
1669 __put_user(kbuf.f_fsid.val[1], &buf->f_fsid); 1646 error |= __put_user(kbuf.f_fsid.val[1], &buf->f_fsid);
1670#else 1647#else
1671 __put_user(kbuf.f_fsid.val[0], &buf->f_fsid); 1648 error |= __put_user(kbuf.f_fsid.val[0], &buf->f_fsid);
1672#endif 1649#endif
1673 for(i = 0; i < 16; i++) 1650 for(i = 0; i < 16; i++)
1674 __put_user(0, &buf->f_basetype[i]); 1651 error |= __put_user(0, &buf->f_basetype[i]);
1675 __put_user(0, &buf->f_flag); 1652 error |= __put_user(0, &buf->f_flag);
1676 __put_user(kbuf.f_namelen, &buf->f_namemax); 1653 error |= __put_user(kbuf.f_namelen, &buf->f_namemax);
1677 for(i = 0; i < 32; i++) 1654 for(i = 0; i < 32; i++)
1678 __put_user(0, &buf->f_fstr[i]); 1655 error |= __put_user(0, &buf->f_fstr[i]);
1679
1680 error = 0;
1681 1656
1682dput_and_out: 1657dput_and_out:
1683 path_release(&nd); 1658 path_release(&nd);
@@ -1685,7 +1660,7 @@ out:
1685 return error; 1660 return error;
1686} 1661}
1687 1662
1688asmlinkage int irix_fstatvfs64(int fd, struct irix_statvfs *buf) 1663asmlinkage int irix_fstatvfs64(int fd, struct irix_statvfs __user *buf)
1689{ 1664{
1690 struct kstatfs kbuf; 1665 struct kstatfs kbuf;
1691 struct file *file; 1666 struct file *file;
@@ -1706,24 +1681,24 @@ asmlinkage int irix_fstatvfs64(int fd, struct irix_statvfs *buf)
1706 if (error) 1681 if (error)
1707 goto out_f; 1682 goto out_f;
1708 1683
1709 __put_user(kbuf.f_bsize, &buf->f_bsize); 1684 error = __put_user(kbuf.f_bsize, &buf->f_bsize);
1710 __put_user(kbuf.f_frsize, &buf->f_frsize); 1685 error |= __put_user(kbuf.f_frsize, &buf->f_frsize);
1711 __put_user(kbuf.f_blocks, &buf->f_blocks); 1686 error |= __put_user(kbuf.f_blocks, &buf->f_blocks);
1712 __put_user(kbuf.f_bfree, &buf->f_bfree); 1687 error |= __put_user(kbuf.f_bfree, &buf->f_bfree);
1713 __put_user(kbuf.f_bfree, &buf->f_bavail); /* XXX hackety hack... */ 1688 error |= __put_user(kbuf.f_bfree, &buf->f_bavail); /* XXX hackety hack... */
1714 __put_user(kbuf.f_files, &buf->f_files); 1689 error |= __put_user(kbuf.f_files, &buf->f_files);
1715 __put_user(kbuf.f_ffree, &buf->f_ffree); 1690 error |= __put_user(kbuf.f_ffree, &buf->f_ffree);
1716 __put_user(kbuf.f_ffree, &buf->f_favail); /* XXX hackety hack... */ 1691 error |= __put_user(kbuf.f_ffree, &buf->f_favail); /* XXX hackety hack... */
1717#ifdef __MIPSEB__ 1692#ifdef __MIPSEB__
1718 __put_user(kbuf.f_fsid.val[1], &buf->f_fsid); 1693 error |= __put_user(kbuf.f_fsid.val[1], &buf->f_fsid);
1719#else 1694#else
1720 __put_user(kbuf.f_fsid.val[0], &buf->f_fsid); 1695 error |= __put_user(kbuf.f_fsid.val[0], &buf->f_fsid);
1721#endif 1696#endif
1722 for(i = 0; i < 16; i++) 1697 for(i = 0; i < 16; i++)
1723 __put_user(0, &buf->f_basetype[i]); 1698 error |= __put_user(0, &buf->f_basetype[i]);
1724 __put_user(0, &buf->f_flag); 1699 error |= __put_user(0, &buf->f_flag);
1725 __put_user(kbuf.f_namelen, &buf->f_namemax); 1700 error |= __put_user(kbuf.f_namelen, &buf->f_namemax);
1726 __clear_user(buf->f_fstr, sizeof(buf->f_fstr[i])); 1701 error |= __clear_user(buf->f_fstr, sizeof(buf->f_fstr[i])) ? -EFAULT : 0;
1727 1702
1728out_f: 1703out_f:
1729 fput(file); 1704 fput(file);
@@ -1731,9 +1706,9 @@ out:
1731 return error; 1706 return error;
1732} 1707}
1733 1708
1734asmlinkage int irix_getmountid(char *fname, unsigned long *midbuf) 1709asmlinkage int irix_getmountid(char __user *fname, unsigned long __user *midbuf)
1735{ 1710{
1736 int err = 0; 1711 int err;
1737 1712
1738 printk("[%s:%d] irix_getmountid(%s, %p)\n", 1713 printk("[%s:%d] irix_getmountid(%s, %p)\n",
1739 current->comm, current->pid, fname, midbuf); 1714 current->comm, current->pid, fname, midbuf);
@@ -1746,7 +1721,7 @@ asmlinkage int irix_getmountid(char *fname, unsigned long *midbuf)
1746 * fsid of the filesystem to try and make the right decision, but 1721 * fsid of the filesystem to try and make the right decision, but
1747 * we don't have this so for now. XXX 1722 * we don't have this so for now. XXX
1748 */ 1723 */
1749 err |= __put_user(0, &midbuf[0]); 1724 err = __put_user(0, &midbuf[0]);
1750 err |= __put_user(0, &midbuf[1]); 1725 err |= __put_user(0, &midbuf[1]);
1751 err |= __put_user(0, &midbuf[2]); 1726 err |= __put_user(0, &midbuf[2]);
1752 err |= __put_user(0, &midbuf[3]); 1727 err |= __put_user(0, &midbuf[3]);
@@ -1773,8 +1748,8 @@ struct irix_dirent32 {
1773}; 1748};
1774 1749
1775struct irix_dirent32_callback { 1750struct irix_dirent32_callback {
1776 struct irix_dirent32 *current_dir; 1751 struct irix_dirent32 __user *current_dir;
1777 struct irix_dirent32 *previous; 1752 struct irix_dirent32 __user *previous;
1778 int count; 1753 int count;
1779 int error; 1754 int error;
1780}; 1755};
@@ -1782,13 +1757,13 @@ struct irix_dirent32_callback {
1782#define NAME_OFFSET32(de) ((int) ((de)->d_name - (char *) (de))) 1757#define NAME_OFFSET32(de) ((int) ((de)->d_name - (char *) (de)))
1783#define ROUND_UP32(x) (((x)+sizeof(u32)-1) & ~(sizeof(u32)-1)) 1758#define ROUND_UP32(x) (((x)+sizeof(u32)-1) & ~(sizeof(u32)-1))
1784 1759
1785static int irix_filldir32(void *__buf, const char *name, int namlen, 1760static int irix_filldir32(void *__buf, const char *name,
1786 loff_t offset, ino_t ino, unsigned int d_type) 1761 int namlen, loff_t offset, ino_t ino, unsigned int d_type)
1787{ 1762{
1788 struct irix_dirent32 *dirent; 1763 struct irix_dirent32 __user *dirent;
1789 struct irix_dirent32_callback *buf = 1764 struct irix_dirent32_callback *buf = __buf;
1790 (struct irix_dirent32_callback *)__buf;
1791 unsigned short reclen = ROUND_UP32(NAME_OFFSET32(dirent) + namlen + 1); 1765 unsigned short reclen = ROUND_UP32(NAME_OFFSET32(dirent) + namlen + 1);
1766 int err = 0;
1792 1767
1793#ifdef DEBUG_GETDENTS 1768#ifdef DEBUG_GETDENTS
1794 printk("\nirix_filldir32[reclen<%d>namlen<%d>count<%d>]", 1769 printk("\nirix_filldir32[reclen<%d>namlen<%d>count<%d>]",
@@ -1799,25 +1774,26 @@ static int irix_filldir32(void *__buf, const char *name, int namlen,
1799 return -EINVAL; 1774 return -EINVAL;
1800 dirent = buf->previous; 1775 dirent = buf->previous;
1801 if (dirent) 1776 if (dirent)
1802 __put_user(offset, &dirent->d_off); 1777 err = __put_user(offset, &dirent->d_off);
1803 dirent = buf->current_dir; 1778 dirent = buf->current_dir;
1804 buf->previous = dirent; 1779 err |= __put_user(dirent, &buf->previous);
1805 __put_user(ino, &dirent->d_ino); 1780 err |= __put_user(ino, &dirent->d_ino);
1806 __put_user(reclen, &dirent->d_reclen); 1781 err |= __put_user(reclen, &dirent->d_reclen);
1807 copy_to_user(dirent->d_name, name, namlen); 1782 err |= copy_to_user((char __user *)dirent->d_name, name, namlen) ? -EFAULT : 0;
1808 __put_user(0, &dirent->d_name[namlen]); 1783 err |= __put_user(0, &dirent->d_name[namlen]);
1809 ((char *) dirent) += reclen; 1784 dirent = (struct irix_dirent32 __user *) ((char __user *) dirent + reclen);
1785
1810 buf->current_dir = dirent; 1786 buf->current_dir = dirent;
1811 buf->count -= reclen; 1787 buf->count -= reclen;
1812 1788
1813 return 0; 1789 return err;
1814} 1790}
1815 1791
1816asmlinkage int irix_ngetdents(unsigned int fd, void * dirent, 1792asmlinkage int irix_ngetdents(unsigned int fd, void __user * dirent,
1817 unsigned int count, int *eob) 1793 unsigned int count, int __user *eob)
1818{ 1794{
1819 struct file *file; 1795 struct file *file;
1820 struct irix_dirent32 *lastdirent; 1796 struct irix_dirent32 __user *lastdirent;
1821 struct irix_dirent32_callback buf; 1797 struct irix_dirent32_callback buf;
1822 int error; 1798 int error;
1823 1799
@@ -1830,7 +1806,7 @@ asmlinkage int irix_ngetdents(unsigned int fd, void * dirent,
1830 if (!file) 1806 if (!file)
1831 goto out; 1807 goto out;
1832 1808
1833 buf.current_dir = (struct irix_dirent32 *) dirent; 1809 buf.current_dir = (struct irix_dirent32 __user *) dirent;
1834 buf.previous = NULL; 1810 buf.previous = NULL;
1835 buf.count = count; 1811 buf.count = count;
1836 buf.error = 0; 1812 buf.error = 0;
@@ -1870,8 +1846,8 @@ struct irix_dirent64 {
1870}; 1846};
1871 1847
1872struct irix_dirent64_callback { 1848struct irix_dirent64_callback {
1873 struct irix_dirent64 *curr; 1849 struct irix_dirent64 __user *curr;
1874 struct irix_dirent64 *previous; 1850 struct irix_dirent64 __user *previous;
1875 int count; 1851 int count;
1876 int error; 1852 int error;
1877}; 1853};
@@ -1879,37 +1855,44 @@ struct irix_dirent64_callback {
1879#define NAME_OFFSET64(de) ((int) ((de)->d_name - (char *) (de))) 1855#define NAME_OFFSET64(de) ((int) ((de)->d_name - (char *) (de)))
1880#define ROUND_UP64(x) (((x)+sizeof(u64)-1) & ~(sizeof(u64)-1)) 1856#define ROUND_UP64(x) (((x)+sizeof(u64)-1) & ~(sizeof(u64)-1))
1881 1857
1882static int irix_filldir64(void * __buf, const char * name, int namlen, 1858static int irix_filldir64(void *__buf, const char *name,
1883 loff_t offset, ino_t ino, unsigned int d_type) 1859 int namlen, loff_t offset, ino_t ino, unsigned int d_type)
1884{ 1860{
1885 struct irix_dirent64 *dirent; 1861 struct irix_dirent64 __user *dirent;
1886 struct irix_dirent64_callback * buf = 1862 struct irix_dirent64_callback * buf = __buf;
1887 (struct irix_dirent64_callback *) __buf;
1888 unsigned short reclen = ROUND_UP64(NAME_OFFSET64(dirent) + namlen + 1); 1863 unsigned short reclen = ROUND_UP64(NAME_OFFSET64(dirent) + namlen + 1);
1864 int err = 0;
1889 1865
1890 buf->error = -EINVAL; /* only used if we fail.. */ 1866 if (!access_ok(VERIFY_WRITE, buf, sizeof(*buf)))
1867 return -EFAULT;
1868
1869 if (__put_user(-EINVAL, &buf->error)) /* only used if we fail.. */
1870 return -EFAULT;
1891 if (reclen > buf->count) 1871 if (reclen > buf->count)
1892 return -EINVAL; 1872 return -EINVAL;
1893 dirent = buf->previous; 1873 dirent = buf->previous;
1894 if (dirent) 1874 if (dirent)
1895 __put_user(offset, &dirent->d_off); 1875 err = __put_user(offset, &dirent->d_off);
1896 dirent = buf->curr; 1876 dirent = buf->curr;
1897 buf->previous = dirent; 1877 buf->previous = dirent;
1898 __put_user(ino, &dirent->d_ino); 1878 err |= __put_user(ino, &dirent->d_ino);
1899 __put_user(reclen, &dirent->d_reclen); 1879 err |= __put_user(reclen, &dirent->d_reclen);
1900 __copy_to_user(dirent->d_name, name, namlen); 1880 err |= __copy_to_user((char __user *)dirent->d_name, name, namlen)
1901 __put_user(0, &dirent->d_name[namlen]); 1881 ? -EFAULT : 0;
1902 ((char *) dirent) += reclen; 1882 err |= __put_user(0, &dirent->d_name[namlen]);
1883
1884 dirent = (struct irix_dirent64 __user *) ((char __user *) dirent + reclen);
1885
1903 buf->curr = dirent; 1886 buf->curr = dirent;
1904 buf->count -= reclen; 1887 buf->count -= reclen;
1905 1888
1906 return 0; 1889 return err;
1907} 1890}
1908 1891
1909asmlinkage int irix_getdents64(int fd, void *dirent, int cnt) 1892asmlinkage int irix_getdents64(int fd, void __user *dirent, int cnt)
1910{ 1893{
1911 struct file *file; 1894 struct file *file;
1912 struct irix_dirent64 *lastdirent; 1895 struct irix_dirent64 __user *lastdirent;
1913 struct irix_dirent64_callback buf; 1896 struct irix_dirent64_callback buf;
1914 int error; 1897 int error;
1915 1898
@@ -1929,7 +1912,7 @@ asmlinkage int irix_getdents64(int fd, void *dirent, int cnt)
1929 if (cnt < (sizeof(struct irix_dirent64) + 255)) 1912 if (cnt < (sizeof(struct irix_dirent64) + 255))
1930 goto out_f; 1913 goto out_f;
1931 1914
1932 buf.curr = (struct irix_dirent64 *) dirent; 1915 buf.curr = (struct irix_dirent64 __user *) dirent;
1933 buf.previous = NULL; 1916 buf.previous = NULL;
1934 buf.count = cnt; 1917 buf.count = cnt;
1935 buf.error = 0; 1918 buf.error = 0;
@@ -1941,7 +1924,8 @@ asmlinkage int irix_getdents64(int fd, void *dirent, int cnt)
1941 error = buf.error; 1924 error = buf.error;
1942 goto out_f; 1925 goto out_f;
1943 } 1926 }
1944 lastdirent->d_off = (u64) file->f_pos; 1927 if (put_user(file->f_pos, &lastdirent->d_off))
1928 return -EFAULT;
1945#ifdef DEBUG_GETDENTS 1929#ifdef DEBUG_GETDENTS
1946 printk("returning %d\n", cnt - buf.count); 1930 printk("returning %d\n", cnt - buf.count);
1947#endif 1931#endif
@@ -1953,10 +1937,10 @@ out:
1953 return error; 1937 return error;
1954} 1938}
1955 1939
1956asmlinkage int irix_ngetdents64(int fd, void *dirent, int cnt, int *eob) 1940asmlinkage int irix_ngetdents64(int fd, void __user *dirent, int cnt, int *eob)
1957{ 1941{
1958 struct file *file; 1942 struct file *file;
1959 struct irix_dirent64 *lastdirent; 1943 struct irix_dirent64 __user *lastdirent;
1960 struct irix_dirent64_callback buf; 1944 struct irix_dirent64_callback buf;
1961 int error; 1945 int error;
1962 1946
@@ -1978,7 +1962,7 @@ asmlinkage int irix_ngetdents64(int fd, void *dirent, int cnt, int *eob)
1978 goto out_f; 1962 goto out_f;
1979 1963
1980 *eob = 0; 1964 *eob = 0;
1981 buf.curr = (struct irix_dirent64 *) dirent; 1965 buf.curr = (struct irix_dirent64 __user *) dirent;
1982 buf.previous = NULL; 1966 buf.previous = NULL;
1983 buf.count = cnt; 1967 buf.count = cnt;
1984 buf.error = 0; 1968 buf.error = 0;
@@ -1990,7 +1974,8 @@ asmlinkage int irix_ngetdents64(int fd, void *dirent, int cnt, int *eob)
1990 error = buf.error; 1974 error = buf.error;
1991 goto out_f; 1975 goto out_f;
1992 } 1976 }
1993 lastdirent->d_off = (u64) file->f_pos; 1977 if (put_user(file->f_pos, &lastdirent->d_off))
1978 return -EFAULT;
1994#ifdef DEBUG_GETDENTS 1979#ifdef DEBUG_GETDENTS
1995 printk("eob=%d returning %d\n", *eob, cnt - buf.count); 1980 printk("eob=%d returning %d\n", *eob, cnt - buf.count);
1996#endif 1981#endif
@@ -2053,14 +2038,14 @@ out:
2053 return retval; 2038 return retval;
2054} 2039}
2055 2040
2056asmlinkage int irix_utssys(char *inbuf, int arg, int type, char *outbuf) 2041asmlinkage int irix_utssys(char __user *inbuf, int arg, int type, char __user *outbuf)
2057{ 2042{
2058 int retval; 2043 int retval;
2059 2044
2060 switch(type) { 2045 switch(type) {
2061 case 0: 2046 case 0:
2062 /* uname() */ 2047 /* uname() */
2063 retval = irix_uname((struct iuname *)inbuf); 2048 retval = irix_uname((struct iuname __user *)inbuf);
2064 goto out; 2049 goto out;
2065 2050
2066 case 2: 2051 case 2:
diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c
index 0dd0df7a3b04..787ed541d442 100644
--- a/arch/mips/kernel/time.c
+++ b/arch/mips/kernel/time.c
@@ -11,6 +11,7 @@
11 * Free Software Foundation; either version 2 of the License, or (at your 11 * Free Software Foundation; either version 2 of the License, or (at your
12 * option) any later version. 12 * option) any later version.
13 */ 13 */
14#include <linux/config.h>
14#include <linux/types.h> 15#include <linux/types.h>
15#include <linux/kernel.h> 16#include <linux/kernel.h>
16#include <linux/init.h> 17#include <linux/init.h>
@@ -25,6 +26,7 @@
25#include <linux/module.h> 26#include <linux/module.h>
26 27
27#include <asm/bootinfo.h> 28#include <asm/bootinfo.h>
29#include <asm/cache.h>
28#include <asm/compiler.h> 30#include <asm/compiler.h>
29#include <asm/cpu.h> 31#include <asm/cpu.h>
30#include <asm/cpu-features.h> 32#include <asm/cpu-features.h>
@@ -43,10 +45,6 @@
43 45
44#define TICK_SIZE (tick_nsec / 1000) 46#define TICK_SIZE (tick_nsec / 1000)
45 47
46u64 jiffies_64 = INITIAL_JIFFIES;
47
48EXPORT_SYMBOL(jiffies_64);
49
50/* 48/*
51 * forward reference 49 * forward reference
52 */ 50 */
@@ -76,7 +74,7 @@ int (*rtc_set_mmss)(unsigned long);
76static unsigned int sll32_usecs_per_cycle; 74static unsigned int sll32_usecs_per_cycle;
77 75
78/* how many counter cycles in a jiffy */ 76/* how many counter cycles in a jiffy */
79static unsigned long cycles_per_jiffy; 77static unsigned long cycles_per_jiffy __read_mostly;
80 78
81/* Cycle counter value at the previous timer interrupt.. */ 79/* Cycle counter value at the previous timer interrupt.. */
82static unsigned int timerhi, timerlo; 80static unsigned int timerhi, timerlo;
@@ -98,7 +96,10 @@ static unsigned int null_hpt_read(void)
98 return 0; 96 return 0;
99} 97}
100 98
101static void null_hpt_init(unsigned int count) { /* nothing */ } 99static void null_hpt_init(unsigned int count)
100{
101 /* nothing */
102}
102 103
103 104
104/* 105/*
@@ -108,8 +109,10 @@ static void c0_timer_ack(void)
108{ 109{
109 unsigned int count; 110 unsigned int count;
110 111
112#ifndef CONFIG_SOC_PNX8550 /* pnx8550 resets to zero */
111 /* Ack this timer interrupt and set the next one. */ 113 /* Ack this timer interrupt and set the next one. */
112 expirelo += cycles_per_jiffy; 114 expirelo += cycles_per_jiffy;
115#endif
113 write_c0_compare(expirelo); 116 write_c0_compare(expirelo);
114 117
115 /* Check to see if we have missed any timer interrupts. */ 118 /* Check to see if we have missed any timer interrupts. */
@@ -224,7 +227,6 @@ int do_settimeofday(struct timespec *tv)
224 set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec); 227 set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec);
225 228
226 ntp_clear(); 229 ntp_clear();
227
228 write_sequnlock_irq(&xtime_lock); 230 write_sequnlock_irq(&xtime_lock);
229 clock_was_set(); 231 clock_was_set();
230 return 0; 232 return 0;
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index a53b1ed7b386..6f3ff9690686 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -9,7 +9,7 @@
9 * Copyright (C) 1999 Silicon Graphics, Inc. 9 * Copyright (C) 1999 Silicon Graphics, Inc.
10 * Kevin D. Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com 10 * Kevin D. Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com
11 * Copyright (C) 2000, 01 MIPS Technologies, Inc. 11 * Copyright (C) 2000, 01 MIPS Technologies, Inc.
12 * Copyright (C) 2002, 2003, 2004 Maciej W. Rozycki 12 * Copyright (C) 2002, 2003, 2004, 2005 Maciej W. Rozycki
13 */ 13 */
14#include <linux/config.h> 14#include <linux/config.h>
15#include <linux/init.h> 15#include <linux/init.h>
@@ -20,12 +20,16 @@
20#include <linux/smp_lock.h> 20#include <linux/smp_lock.h>
21#include <linux/spinlock.h> 21#include <linux/spinlock.h>
22#include <linux/kallsyms.h> 22#include <linux/kallsyms.h>
23#include <linux/bootmem.h>
23 24
24#include <asm/bootinfo.h> 25#include <asm/bootinfo.h>
25#include <asm/branch.h> 26#include <asm/branch.h>
26#include <asm/break.h> 27#include <asm/break.h>
27#include <asm/cpu.h> 28#include <asm/cpu.h>
29#include <asm/dsp.h>
28#include <asm/fpu.h> 30#include <asm/fpu.h>
31#include <asm/mipsregs.h>
32#include <asm/mipsmtregs.h>
29#include <asm/module.h> 33#include <asm/module.h>
30#include <asm/pgtable.h> 34#include <asm/pgtable.h>
31#include <asm/ptrace.h> 35#include <asm/ptrace.h>
@@ -54,14 +58,19 @@ extern asmlinkage void handle_tr(void);
54extern asmlinkage void handle_fpe(void); 58extern asmlinkage void handle_fpe(void);
55extern asmlinkage void handle_mdmx(void); 59extern asmlinkage void handle_mdmx(void);
56extern asmlinkage void handle_watch(void); 60extern asmlinkage void handle_watch(void);
61extern asmlinkage void handle_mt(void);
62extern asmlinkage void handle_dsp(void);
57extern asmlinkage void handle_mcheck(void); 63extern asmlinkage void handle_mcheck(void);
58extern asmlinkage void handle_reserved(void); 64extern asmlinkage void handle_reserved(void);
59 65
60extern int fpu_emulator_cop1Handler(int xcptno, struct pt_regs *xcp, 66extern int fpu_emulator_cop1Handler(struct pt_regs *xcp,
61 struct mips_fpu_soft_struct *ctx); 67 struct mips_fpu_soft_struct *ctx);
62 68
63void (*board_be_init)(void); 69void (*board_be_init)(void);
64int (*board_be_handler)(struct pt_regs *regs, int is_fixup); 70int (*board_be_handler)(struct pt_regs *regs, int is_fixup);
71void (*board_nmi_handler_setup)(void);
72void (*board_ejtag_handler_setup)(void);
73void (*board_bind_eic_interrupt)(int irq, int regset);
65 74
66/* 75/*
67 * These constant is for searching for possible module text segments. 76 * These constant is for searching for possible module text segments.
@@ -201,32 +210,47 @@ void show_regs(struct pt_regs *regs)
201 210
202 printk("Status: %08x ", (uint32_t) regs->cp0_status); 211 printk("Status: %08x ", (uint32_t) regs->cp0_status);
203 212
204 if (regs->cp0_status & ST0_KX) 213 if (current_cpu_data.isa_level == MIPS_CPU_ISA_I) {
205 printk("KX "); 214 if (regs->cp0_status & ST0_KUO)
206 if (regs->cp0_status & ST0_SX) 215 printk("KUo ");
207 printk("SX "); 216 if (regs->cp0_status & ST0_IEO)
208 if (regs->cp0_status & ST0_UX) 217 printk("IEo ");
209 printk("UX "); 218 if (regs->cp0_status & ST0_KUP)
210 switch (regs->cp0_status & ST0_KSU) { 219 printk("KUp ");
211 case KSU_USER: 220 if (regs->cp0_status & ST0_IEP)
212 printk("USER "); 221 printk("IEp ");
213 break; 222 if (regs->cp0_status & ST0_KUC)
214 case KSU_SUPERVISOR: 223 printk("KUc ");
215 printk("SUPERVISOR "); 224 if (regs->cp0_status & ST0_IEC)
216 break; 225 printk("IEc ");
217 case KSU_KERNEL: 226 } else {
218 printk("KERNEL "); 227 if (regs->cp0_status & ST0_KX)
219 break; 228 printk("KX ");
220 default: 229 if (regs->cp0_status & ST0_SX)
221 printk("BAD_MODE "); 230 printk("SX ");
222 break; 231 if (regs->cp0_status & ST0_UX)
232 printk("UX ");
233 switch (regs->cp0_status & ST0_KSU) {
234 case KSU_USER:
235 printk("USER ");
236 break;
237 case KSU_SUPERVISOR:
238 printk("SUPERVISOR ");
239 break;
240 case KSU_KERNEL:
241 printk("KERNEL ");
242 break;
243 default:
244 printk("BAD_MODE ");
245 break;
246 }
247 if (regs->cp0_status & ST0_ERL)
248 printk("ERL ");
249 if (regs->cp0_status & ST0_EXL)
250 printk("EXL ");
251 if (regs->cp0_status & ST0_IE)
252 printk("IE ");
223 } 253 }
224 if (regs->cp0_status & ST0_ERL)
225 printk("ERL ");
226 if (regs->cp0_status & ST0_EXL)
227 printk("EXL ");
228 if (regs->cp0_status & ST0_IE)
229 printk("IE ");
230 printk("\n"); 254 printk("\n");
231 255
232 printk("Cause : %08x\n", cause); 256 printk("Cause : %08x\n", cause);
@@ -252,29 +276,18 @@ void show_registers(struct pt_regs *regs)
252 276
253static DEFINE_SPINLOCK(die_lock); 277static DEFINE_SPINLOCK(die_lock);
254 278
255NORET_TYPE void __die(const char * str, struct pt_regs * regs, 279NORET_TYPE void ATTRIB_NORET die(const char * str, struct pt_regs * regs)
256 const char * file, const char * func, unsigned long line)
257{ 280{
258 static int die_counter; 281 static int die_counter;
259 282
260 console_verbose(); 283 console_verbose();
261 spin_lock_irq(&die_lock); 284 spin_lock_irq(&die_lock);
262 printk("%s", str); 285 printk("%s[#%d]:\n", str, ++die_counter);
263 if (file && func)
264 printk(" in %s:%s, line %ld", file, func, line);
265 printk("[#%d]:\n", ++die_counter);
266 show_registers(regs); 286 show_registers(regs);
267 spin_unlock_irq(&die_lock); 287 spin_unlock_irq(&die_lock);
268 do_exit(SIGSEGV); 288 do_exit(SIGSEGV);
269} 289}
270 290
271void __die_if_kernel(const char * str, struct pt_regs * regs,
272 const char * file, const char * func, unsigned long line)
273{
274 if (!user_mode(regs))
275 __die(str, regs, file, func, line);
276}
277
278extern const struct exception_table_entry __start___dbe_table[]; 291extern const struct exception_table_entry __start___dbe_table[];
279extern const struct exception_table_entry __stop___dbe_table[]; 292extern const struct exception_table_entry __stop___dbe_table[];
280 293
@@ -339,9 +352,9 @@ asmlinkage void do_be(struct pt_regs *regs)
339 352
340static inline int get_insn_opcode(struct pt_regs *regs, unsigned int *opcode) 353static inline int get_insn_opcode(struct pt_regs *regs, unsigned int *opcode)
341{ 354{
342 unsigned int *epc; 355 unsigned int __user *epc;
343 356
344 epc = (unsigned int *) regs->cp0_epc + 357 epc = (unsigned int __user *) regs->cp0_epc +
345 ((regs->cp0_cause & CAUSEF_BD) != 0); 358 ((regs->cp0_cause & CAUSEF_BD) != 0);
346 if (!get_user(*opcode, epc)) 359 if (!get_user(*opcode, epc))
347 return 0; 360 return 0;
@@ -360,6 +373,10 @@ static inline int get_insn_opcode(struct pt_regs *regs, unsigned int *opcode)
360#define OFFSET 0x0000ffff 373#define OFFSET 0x0000ffff
361#define LL 0xc0000000 374#define LL 0xc0000000
362#define SC 0xe0000000 375#define SC 0xe0000000
376#define SPEC3 0x7c000000
377#define RD 0x0000f800
378#define FUNC 0x0000003f
379#define RDHWR 0x0000003b
363 380
364/* 381/*
365 * The ll_bit is cleared by r*_switch.S 382 * The ll_bit is cleared by r*_switch.S
@@ -371,7 +388,7 @@ static struct task_struct *ll_task = NULL;
371 388
372static inline void simulate_ll(struct pt_regs *regs, unsigned int opcode) 389static inline void simulate_ll(struct pt_regs *regs, unsigned int opcode)
373{ 390{
374 unsigned long value, *vaddr; 391 unsigned long value, __user *vaddr;
375 long offset; 392 long offset;
376 int signal = 0; 393 int signal = 0;
377 394
@@ -385,7 +402,8 @@ static inline void simulate_ll(struct pt_regs *regs, unsigned int opcode)
385 offset <<= 16; 402 offset <<= 16;
386 offset >>= 16; 403 offset >>= 16;
387 404
388 vaddr = (unsigned long *)((long)(regs->regs[(opcode & BASE) >> 21]) + offset); 405 vaddr = (unsigned long __user *)
406 ((unsigned long)(regs->regs[(opcode & BASE) >> 21]) + offset);
389 407
390 if ((unsigned long)vaddr & 3) { 408 if ((unsigned long)vaddr & 3) {
391 signal = SIGBUS; 409 signal = SIGBUS;
@@ -407,9 +425,10 @@ static inline void simulate_ll(struct pt_regs *regs, unsigned int opcode)
407 425
408 preempt_enable(); 426 preempt_enable();
409 427
428 compute_return_epc(regs);
429
410 regs->regs[(opcode & RT) >> 16] = value; 430 regs->regs[(opcode & RT) >> 16] = value;
411 431
412 compute_return_epc(regs);
413 return; 432 return;
414 433
415sig: 434sig:
@@ -418,7 +437,8 @@ sig:
418 437
419static inline void simulate_sc(struct pt_regs *regs, unsigned int opcode) 438static inline void simulate_sc(struct pt_regs *regs, unsigned int opcode)
420{ 439{
421 unsigned long *vaddr, reg; 440 unsigned long __user *vaddr;
441 unsigned long reg;
422 long offset; 442 long offset;
423 int signal = 0; 443 int signal = 0;
424 444
@@ -432,7 +452,8 @@ static inline void simulate_sc(struct pt_regs *regs, unsigned int opcode)
432 offset <<= 16; 452 offset <<= 16;
433 offset >>= 16; 453 offset >>= 16;
434 454
435 vaddr = (unsigned long *)((long)(regs->regs[(opcode & BASE) >> 21]) + offset); 455 vaddr = (unsigned long __user *)
456 ((unsigned long)(regs->regs[(opcode & BASE) >> 21]) + offset);
436 reg = (opcode & RT) >> 16; 457 reg = (opcode & RT) >> 16;
437 458
438 if ((unsigned long)vaddr & 3) { 459 if ((unsigned long)vaddr & 3) {
@@ -443,9 +464,9 @@ static inline void simulate_sc(struct pt_regs *regs, unsigned int opcode)
443 preempt_disable(); 464 preempt_disable();
444 465
445 if (ll_bit == 0 || ll_task != current) { 466 if (ll_bit == 0 || ll_task != current) {
467 compute_return_epc(regs);
446 regs->regs[reg] = 0; 468 regs->regs[reg] = 0;
447 preempt_enable(); 469 preempt_enable();
448 compute_return_epc(regs);
449 return; 470 return;
450 } 471 }
451 472
@@ -456,9 +477,9 @@ static inline void simulate_sc(struct pt_regs *regs, unsigned int opcode)
456 goto sig; 477 goto sig;
457 } 478 }
458 479
480 compute_return_epc(regs);
459 regs->regs[reg] = 1; 481 regs->regs[reg] = 1;
460 482
461 compute_return_epc(regs);
462 return; 483 return;
463 484
464sig: 485sig:
@@ -491,6 +512,37 @@ static inline int simulate_llsc(struct pt_regs *regs)
491 return -EFAULT; /* Strange things going on ... */ 512 return -EFAULT; /* Strange things going on ... */
492} 513}
493 514
515/*
516 * Simulate trapping 'rdhwr' instructions to provide user accessible
517 * registers not implemented in hardware. The only current use of this
518 * is the thread area pointer.
519 */
520static inline int simulate_rdhwr(struct pt_regs *regs)
521{
522 struct thread_info *ti = current->thread_info;
523 unsigned int opcode;
524
525 if (unlikely(get_insn_opcode(regs, &opcode)))
526 return -EFAULT;
527
528 if (unlikely(compute_return_epc(regs)))
529 return -EFAULT;
530
531 if ((opcode & OPCODE) == SPEC3 && (opcode & FUNC) == RDHWR) {
532 int rd = (opcode & RD) >> 11;
533 int rt = (opcode & RT) >> 16;
534 switch (rd) {
535 case 29:
536 regs->regs[rt] = ti->tp_value;
537 break;
538 default:
539 return -EFAULT;
540 }
541 }
542
543 return 0;
544}
545
494asmlinkage void do_ov(struct pt_regs *regs) 546asmlinkage void do_ov(struct pt_regs *regs)
495{ 547{
496 siginfo_t info; 548 siginfo_t info;
@@ -498,7 +550,7 @@ asmlinkage void do_ov(struct pt_regs *regs)
498 info.si_code = FPE_INTOVF; 550 info.si_code = FPE_INTOVF;
499 info.si_signo = SIGFPE; 551 info.si_signo = SIGFPE;
500 info.si_errno = 0; 552 info.si_errno = 0;
501 info.si_addr = (void *)regs->cp0_epc; 553 info.si_addr = (void __user *) regs->cp0_epc;
502 force_sig_info(SIGFPE, &info, current); 554 force_sig_info(SIGFPE, &info, current);
503} 555}
504 556
@@ -512,6 +564,14 @@ asmlinkage void do_fpe(struct pt_regs *regs, unsigned long fcr31)
512 564
513 preempt_disable(); 565 preempt_disable();
514 566
567#ifdef CONFIG_PREEMPT
568 if (!is_fpu_owner()) {
569 /* We might lose fpu before disabling preempt... */
570 own_fpu();
571 BUG_ON(!used_math());
572 restore_fp(current);
573 }
574#endif
515 /* 575 /*
516 * Unimplemented operation exception. If we've got the full 576 * Unimplemented operation exception. If we've got the full
517 * software emulator on-board, let's use it... 577 * software emulator on-board, let's use it...
@@ -523,11 +583,18 @@ asmlinkage void do_fpe(struct pt_regs *regs, unsigned long fcr31)
523 * a bit extreme for what should be an infrequent event. 583 * a bit extreme for what should be an infrequent event.
524 */ 584 */
525 save_fp(current); 585 save_fp(current);
586 /* Ensure 'resume' not overwrite saved fp context again. */
587 lose_fpu();
588
589 preempt_enable();
526 590
527 /* Run the emulator */ 591 /* Run the emulator */
528 sig = fpu_emulator_cop1Handler (0, regs, 592 sig = fpu_emulator_cop1Handler (regs,
529 &current->thread.fpu.soft); 593 &current->thread.fpu.soft);
530 594
595 preempt_disable();
596
597 own_fpu(); /* Using the FPU again. */
531 /* 598 /*
532 * We can't allow the emulated instruction to leave any of 599 * We can't allow the emulated instruction to leave any of
533 * the cause bit set in $fcr31. 600 * the cause bit set in $fcr31.
@@ -584,7 +651,7 @@ asmlinkage void do_bp(struct pt_regs *regs)
584 info.si_code = FPE_INTOVF; 651 info.si_code = FPE_INTOVF;
585 info.si_signo = SIGFPE; 652 info.si_signo = SIGFPE;
586 info.si_errno = 0; 653 info.si_errno = 0;
587 info.si_addr = (void *)regs->cp0_epc; 654 info.si_addr = (void __user *) regs->cp0_epc;
588 force_sig_info(SIGFPE, &info, current); 655 force_sig_info(SIGFPE, &info, current);
589 break; 656 break;
590 default: 657 default:
@@ -621,7 +688,7 @@ asmlinkage void do_tr(struct pt_regs *regs)
621 info.si_code = FPE_INTOVF; 688 info.si_code = FPE_INTOVF;
622 info.si_signo = SIGFPE; 689 info.si_signo = SIGFPE;
623 info.si_errno = 0; 690 info.si_errno = 0;
624 info.si_addr = (void *)regs->cp0_epc; 691 info.si_addr = (void __user *) regs->cp0_epc;
625 force_sig_info(SIGFPE, &info, current); 692 force_sig_info(SIGFPE, &info, current);
626 break; 693 break;
627 default: 694 default:
@@ -637,6 +704,9 @@ asmlinkage void do_ri(struct pt_regs *regs)
637 if (!simulate_llsc(regs)) 704 if (!simulate_llsc(regs))
638 return; 705 return;
639 706
707 if (!simulate_rdhwr(regs))
708 return;
709
640 force_sig(SIGILL, current); 710 force_sig(SIGILL, current);
641} 711}
642 712
@@ -650,11 +720,13 @@ asmlinkage void do_cpu(struct pt_regs *regs)
650 720
651 switch (cpid) { 721 switch (cpid) {
652 case 0: 722 case 0:
653 if (cpu_has_llsc) 723 if (!cpu_has_llsc)
654 break; 724 if (!simulate_llsc(regs))
725 return;
655 726
656 if (!simulate_llsc(regs)) 727 if (!simulate_rdhwr(regs))
657 return; 728 return;
729
658 break; 730 break;
659 731
660 case 1: 732 case 1:
@@ -668,15 +740,15 @@ asmlinkage void do_cpu(struct pt_regs *regs)
668 set_used_math(); 740 set_used_math();
669 } 741 }
670 742
743 preempt_enable();
744
671 if (!cpu_has_fpu) { 745 if (!cpu_has_fpu) {
672 int sig = fpu_emulator_cop1Handler(0, regs, 746 int sig = fpu_emulator_cop1Handler(regs,
673 &current->thread.fpu.soft); 747 &current->thread.fpu.soft);
674 if (sig) 748 if (sig)
675 force_sig(sig, current); 749 force_sig(sig, current);
676 } 750 }
677 751
678 preempt_enable();
679
680 return; 752 return;
681 753
682 case 2: 754 case 2:
@@ -716,6 +788,22 @@ asmlinkage void do_mcheck(struct pt_regs *regs)
716 (regs->cp0_status & ST0_TS) ? "" : "not "); 788 (regs->cp0_status & ST0_TS) ? "" : "not ");
717} 789}
718 790
791asmlinkage void do_mt(struct pt_regs *regs)
792{
793 die_if_kernel("MIPS MT Thread exception in kernel", regs);
794
795 force_sig(SIGILL, current);
796}
797
798
799asmlinkage void do_dsp(struct pt_regs *regs)
800{
801 if (cpu_has_dsp)
802 panic("Unexpected DSP exception\n");
803
804 force_sig(SIGILL, current);
805}
806
719asmlinkage void do_reserved(struct pt_regs *regs) 807asmlinkage void do_reserved(struct pt_regs *regs)
720{ 808{
721 /* 809 /*
@@ -728,6 +816,12 @@ asmlinkage void do_reserved(struct pt_regs *regs)
728 (regs->cp0_cause & 0x7f) >> 2); 816 (regs->cp0_cause & 0x7f) >> 2);
729} 817}
730 818
819asmlinkage void do_default_vi(struct pt_regs *regs)
820{
821 show_regs(regs);
822 panic("Caught unexpected vectored interrupt.");
823}
824
731/* 825/*
732 * Some MIPS CPUs can enable/disable for cache parity detection, but do 826 * Some MIPS CPUs can enable/disable for cache parity detection, but do
733 * it different ways. 827 * it different ways.
@@ -736,16 +830,12 @@ static inline void parity_protection_init(void)
736{ 830{
737 switch (current_cpu_data.cputype) { 831 switch (current_cpu_data.cputype) {
738 case CPU_24K: 832 case CPU_24K:
739 /* 24K cache parity not currently implemented in FPGA */
740 printk(KERN_INFO "Disable cache parity protection for "
741 "MIPS 24K CPU.\n");
742 write_c0_ecc(read_c0_ecc() & ~0x80000000);
743 break;
744 case CPU_5KC: 833 case CPU_5KC:
745 /* Set the PE bit (bit 31) in the c0_ecc register. */ 834 write_c0_ecc(0x80000000);
746 printk(KERN_INFO "Enable cache parity protection for " 835 back_to_back_c0_hazard();
747 "MIPS 5KC/24K CPUs.\n"); 836 /* Set the PE bit (bit 31) in the c0_errctl register. */
748 write_c0_ecc(read_c0_ecc() | 0x80000000); 837 printk(KERN_INFO "Cache parity protection %sabled\n",
838 (read_c0_ecc() & 0x80000000) ? "en" : "dis");
749 break; 839 break;
750 case CPU_20KC: 840 case CPU_20KC:
751 case CPU_25KF: 841 case CPU_25KF:
@@ -783,7 +873,7 @@ asmlinkage void cache_parity_error(void)
783 reg_val & (1<<22) ? "E0 " : ""); 873 reg_val & (1<<22) ? "E0 " : "");
784 printk("IDX: 0x%08x\n", reg_val & ((1<<22)-1)); 874 printk("IDX: 0x%08x\n", reg_val & ((1<<22)-1));
785 875
786#if defined(CONFIG_CPU_MIPS32) || defined (CONFIG_CPU_MIPS64) 876#if defined(CONFIG_CPU_MIPS32) || defined(CONFIG_CPU_MIPS64)
787 if (reg_val & (1<<22)) 877 if (reg_val & (1<<22))
788 printk("DErrAddr0: 0x%0*lx\n", field, read_c0_derraddr0()); 878 printk("DErrAddr0: 0x%0*lx\n", field, read_c0_derraddr0());
789 879
@@ -840,7 +930,11 @@ void nmi_exception_handler(struct pt_regs *regs)
840 while(1) ; 930 while(1) ;
841} 931}
842 932
933#define VECTORSPACING 0x100 /* for EI/VI mode */
934
935unsigned long ebase;
843unsigned long exception_handlers[32]; 936unsigned long exception_handlers[32];
937unsigned long vi_handlers[64];
844 938
845/* 939/*
846 * As a side effect of the way this is implemented we're limited 940 * As a side effect of the way this is implemented we're limited
@@ -854,13 +948,156 @@ void *set_except_vector(int n, void *addr)
854 948
855 exception_handlers[n] = handler; 949 exception_handlers[n] = handler;
856 if (n == 0 && cpu_has_divec) { 950 if (n == 0 && cpu_has_divec) {
857 *(volatile u32 *)(CAC_BASE + 0x200) = 0x08000000 | 951 *(volatile u32 *)(ebase + 0x200) = 0x08000000 |
858 (0x03ffffff & (handler >> 2)); 952 (0x03ffffff & (handler >> 2));
859 flush_icache_range(CAC_BASE + 0x200, CAC_BASE + 0x204); 953 flush_icache_range(ebase + 0x200, ebase + 0x204);
860 } 954 }
861 return (void *)old_handler; 955 return (void *)old_handler;
862} 956}
863 957
958#ifdef CONFIG_CPU_MIPSR2
959/*
960 * Shadow register allocation
961 * FIXME: SMP...
962 */
963
964/* MIPSR2 shadow register sets */
965struct shadow_registers {
966 spinlock_t sr_lock; /* */
967 int sr_supported; /* Number of shadow register sets supported */
968 int sr_allocated; /* Bitmap of allocated shadow registers */
969} shadow_registers;
970
971void mips_srs_init(void)
972{
973#ifdef CONFIG_CPU_MIPSR2_SRS
974 shadow_registers.sr_supported = ((read_c0_srsctl() >> 26) & 0x0f) + 1;
975 printk ("%d MIPSR2 register sets available\n", shadow_registers.sr_supported);
976#else
977 shadow_registers.sr_supported = 1;
978#endif
979 shadow_registers.sr_allocated = 1; /* Set 0 used by kernel */
980 spin_lock_init(&shadow_registers.sr_lock);
981}
982
983int mips_srs_max(void)
984{
985 return shadow_registers.sr_supported;
986}
987
988int mips_srs_alloc (void)
989{
990 struct shadow_registers *sr = &shadow_registers;
991 unsigned long flags;
992 int set;
993
994 spin_lock_irqsave(&sr->sr_lock, flags);
995
996 for (set = 0; set < sr->sr_supported; set++) {
997 if ((sr->sr_allocated & (1 << set)) == 0) {
998 sr->sr_allocated |= 1 << set;
999 spin_unlock_irqrestore(&sr->sr_lock, flags);
1000 return set;
1001 }
1002 }
1003
1004 /* None available */
1005 spin_unlock_irqrestore(&sr->sr_lock, flags);
1006 return -1;
1007}
1008
1009void mips_srs_free (int set)
1010{
1011 struct shadow_registers *sr = &shadow_registers;
1012 unsigned long flags;
1013
1014 spin_lock_irqsave(&sr->sr_lock, flags);
1015 sr->sr_allocated &= ~(1 << set);
1016 spin_unlock_irqrestore(&sr->sr_lock, flags);
1017}
1018
1019void *set_vi_srs_handler (int n, void *addr, int srs)
1020{
1021 unsigned long handler;
1022 unsigned long old_handler = vi_handlers[n];
1023 u32 *w;
1024 unsigned char *b;
1025
1026 if (!cpu_has_veic && !cpu_has_vint)
1027 BUG();
1028
1029 if (addr == NULL) {
1030 handler = (unsigned long) do_default_vi;
1031 srs = 0;
1032 }
1033 else
1034 handler = (unsigned long) addr;
1035 vi_handlers[n] = (unsigned long) addr;
1036
1037 b = (unsigned char *)(ebase + 0x200 + n*VECTORSPACING);
1038
1039 if (srs >= mips_srs_max())
1040 panic("Shadow register set %d not supported", srs);
1041
1042 if (cpu_has_veic) {
1043 if (board_bind_eic_interrupt)
1044 board_bind_eic_interrupt (n, srs);
1045 }
1046 else if (cpu_has_vint) {
1047 /* SRSMap is only defined if shadow sets are implemented */
1048 if (mips_srs_max() > 1)
1049 change_c0_srsmap (0xf << n*4, srs << n*4);
1050 }
1051
1052 if (srs == 0) {
1053 /*
1054 * If no shadow set is selected then use the default handler
1055 * that does normal register saving and a standard interrupt exit
1056 */
1057
1058 extern char except_vec_vi, except_vec_vi_lui;
1059 extern char except_vec_vi_ori, except_vec_vi_end;
1060 const int handler_len = &except_vec_vi_end - &except_vec_vi;
1061 const int lui_offset = &except_vec_vi_lui - &except_vec_vi;
1062 const int ori_offset = &except_vec_vi_ori - &except_vec_vi;
1063
1064 if (handler_len > VECTORSPACING) {
1065 /*
1066 * Sigh... panicing won't help as the console
1067 * is probably not configured :(
1068 */
1069 panic ("VECTORSPACING too small");
1070 }
1071
1072 memcpy (b, &except_vec_vi, handler_len);
1073 w = (u32 *)(b + lui_offset);
1074 *w = (*w & 0xffff0000) | (((u32)handler >> 16) & 0xffff);
1075 w = (u32 *)(b + ori_offset);
1076 *w = (*w & 0xffff0000) | ((u32)handler & 0xffff);
1077 flush_icache_range((unsigned long)b, (unsigned long)(b+handler_len));
1078 }
1079 else {
1080 /*
1081 * In other cases jump directly to the interrupt handler
1082 *
1083 * It is the handlers responsibility to save registers if required
1084 * (eg hi/lo) and return from the exception using "eret"
1085 */
1086 w = (u32 *)b;
1087 *w++ = 0x08000000 | (((u32)handler >> 2) & 0x03fffff); /* j handler */
1088 *w = 0;
1089 flush_icache_range((unsigned long)b, (unsigned long)(b+8));
1090 }
1091
1092 return (void *)old_handler;
1093}
1094
1095void *set_vi_handler (int n, void *addr)
1096{
1097 return set_vi_srs_handler (n, addr, 0);
1098}
1099#endif
1100
864/* 1101/*
865 * This is used by native signal handling 1102 * This is used by native signal handling
866 */ 1103 */
@@ -912,6 +1149,7 @@ static inline void signal32_init(void)
912 1149
913extern void cpu_cache_init(void); 1150extern void cpu_cache_init(void);
914extern void tlb_init(void); 1151extern void tlb_init(void);
1152extern void flush_tlb_handlers(void);
915 1153
916void __init per_cpu_trap_init(void) 1154void __init per_cpu_trap_init(void)
917{ 1155{
@@ -929,15 +1167,32 @@ void __init per_cpu_trap_init(void)
929#endif 1167#endif
930 if (current_cpu_data.isa_level == MIPS_CPU_ISA_IV) 1168 if (current_cpu_data.isa_level == MIPS_CPU_ISA_IV)
931 status_set |= ST0_XX; 1169 status_set |= ST0_XX;
932 change_c0_status(ST0_CU|ST0_FR|ST0_BEV|ST0_TS|ST0_KX|ST0_SX|ST0_UX, 1170 change_c0_status(ST0_CU|ST0_MX|ST0_FR|ST0_BEV|ST0_TS|ST0_KX|ST0_SX|ST0_UX,
933 status_set); 1171 status_set);
934 1172
1173 if (cpu_has_dsp)
1174 set_c0_status(ST0_MX);
1175
1176#ifdef CONFIG_CPU_MIPSR2
1177 write_c0_hwrena (0x0000000f); /* Allow rdhwr to all registers */
1178#endif
1179
935 /* 1180 /*
936 * Some MIPS CPUs have a dedicated interrupt vector which reduces the 1181 * Interrupt handling.
937 * interrupt processing overhead. Use it where available.
938 */ 1182 */
939 if (cpu_has_divec) 1183 if (cpu_has_veic || cpu_has_vint) {
940 set_c0_cause(CAUSEF_IV); 1184 write_c0_ebase (ebase);
1185 /* Setting vector spacing enables EI/VI mode */
1186 change_c0_intctl (0x3e0, VECTORSPACING);
1187 }
1188 if (cpu_has_divec) {
1189 if (cpu_has_mipsmt) {
1190 unsigned int vpflags = dvpe();
1191 set_c0_cause(CAUSEF_IV);
1192 evpe(vpflags);
1193 } else
1194 set_c0_cause(CAUSEF_IV);
1195 }
941 1196
942 cpu_data[cpu].asid_cache = ASID_FIRST_VERSION; 1197 cpu_data[cpu].asid_cache = ASID_FIRST_VERSION;
943 TLBMISS_HANDLER_SETUP(); 1198 TLBMISS_HANDLER_SETUP();
@@ -951,13 +1206,41 @@ void __init per_cpu_trap_init(void)
951 tlb_init(); 1206 tlb_init();
952} 1207}
953 1208
1209/* Install CPU exception handler */
1210void __init set_handler (unsigned long offset, void *addr, unsigned long size)
1211{
1212 memcpy((void *)(ebase + offset), addr, size);
1213 flush_icache_range(ebase + offset, ebase + offset + size);
1214}
1215
1216/* Install uncached CPU exception handler */
1217void __init set_uncached_handler (unsigned long offset, void *addr, unsigned long size)
1218{
1219#ifdef CONFIG_32BIT
1220 unsigned long uncached_ebase = KSEG1ADDR(ebase);
1221#endif
1222#ifdef CONFIG_64BIT
1223 unsigned long uncached_ebase = TO_UNCAC(ebase);
1224#endif
1225
1226 memcpy((void *)(uncached_ebase + offset), addr, size);
1227}
1228
954void __init trap_init(void) 1229void __init trap_init(void)
955{ 1230{
956 extern char except_vec3_generic, except_vec3_r4000; 1231 extern char except_vec3_generic, except_vec3_r4000;
957 extern char except_vec_ejtag_debug;
958 extern char except_vec4; 1232 extern char except_vec4;
959 unsigned long i; 1233 unsigned long i;
960 1234
1235 if (cpu_has_veic || cpu_has_vint)
1236 ebase = (unsigned long) alloc_bootmem_low_pages (0x200 + VECTORSPACING*64);
1237 else
1238 ebase = CAC_BASE;
1239
1240#ifdef CONFIG_CPU_MIPSR2
1241 mips_srs_init();
1242#endif
1243
961 per_cpu_trap_init(); 1244 per_cpu_trap_init();
962 1245
963 /* 1246 /*
@@ -965,7 +1248,7 @@ void __init trap_init(void)
965 * This will be overriden later as suitable for a particular 1248 * This will be overriden later as suitable for a particular
966 * configuration. 1249 * configuration.
967 */ 1250 */
968 memcpy((void *)(CAC_BASE + 0x180), &except_vec3_generic, 0x80); 1251 set_handler(0x180, &except_vec3_generic, 0x80);
969 1252
970 /* 1253 /*
971 * Setup default vectors 1254 * Setup default vectors
@@ -977,8 +1260,8 @@ void __init trap_init(void)
977 * Copy the EJTAG debug exception vector handler code to it's final 1260 * Copy the EJTAG debug exception vector handler code to it's final
978 * destination. 1261 * destination.
979 */ 1262 */
980 if (cpu_has_ejtag) 1263 if (cpu_has_ejtag && board_ejtag_handler_setup)
981 memcpy((void *)(CAC_BASE + 0x300), &except_vec_ejtag_debug, 0x80); 1264 board_ejtag_handler_setup ();
982 1265
983 /* 1266 /*
984 * Only some CPUs have the watch exceptions. 1267 * Only some CPUs have the watch exceptions.
@@ -987,11 +1270,15 @@ void __init trap_init(void)
987 set_except_vector(23, handle_watch); 1270 set_except_vector(23, handle_watch);
988 1271
989 /* 1272 /*
990 * Some MIPS CPUs have a dedicated interrupt vector which reduces the 1273 * Initialise interrupt handlers
991 * interrupt processing overhead. Use it where available.
992 */ 1274 */
993 if (cpu_has_divec) 1275 if (cpu_has_veic || cpu_has_vint) {
994 memcpy((void *)(CAC_BASE + 0x200), &except_vec4, 0x8); 1276 int nvec = cpu_has_veic ? 64 : 8;
1277 for (i = 0; i < nvec; i++)
1278 set_vi_handler (i, NULL);
1279 }
1280 else if (cpu_has_divec)
1281 set_handler(0x200, &except_vec4, 0x8);
995 1282
996 /* 1283 /*
997 * Some CPUs can enable/disable for cache parity detection, but does 1284 * Some CPUs can enable/disable for cache parity detection, but does
@@ -1023,21 +1310,6 @@ void __init trap_init(void)
1023 set_except_vector(11, handle_cpu); 1310 set_except_vector(11, handle_cpu);
1024 set_except_vector(12, handle_ov); 1311 set_except_vector(12, handle_ov);
1025 set_except_vector(13, handle_tr); 1312 set_except_vector(13, handle_tr);
1026 set_except_vector(22, handle_mdmx);
1027
1028 if (cpu_has_fpu && !cpu_has_nofpuex)
1029 set_except_vector(15, handle_fpe);
1030
1031 if (cpu_has_mcheck)
1032 set_except_vector(24, handle_mcheck);
1033
1034 if (cpu_has_vce)
1035 /* Special exception: R4[04]00 uses also the divec space. */
1036 memcpy((void *)(CAC_BASE + 0x180), &except_vec3_r4000, 0x100);
1037 else if (cpu_has_4kex)
1038 memcpy((void *)(CAC_BASE + 0x180), &except_vec3_generic, 0x80);
1039 else
1040 memcpy((void *)(CAC_BASE + 0x080), &except_vec3_generic, 0x80);
1041 1313
1042 if (current_cpu_data.cputype == CPU_R6000 || 1314 if (current_cpu_data.cputype == CPU_R6000 ||
1043 current_cpu_data.cputype == CPU_R6000A) { 1315 current_cpu_data.cputype == CPU_R6000A) {
@@ -1053,10 +1325,37 @@ void __init trap_init(void)
1053 //set_except_vector(15, handle_ndc); 1325 //set_except_vector(15, handle_ndc);
1054 } 1326 }
1055 1327
1328
1329 if (board_nmi_handler_setup)
1330 board_nmi_handler_setup();
1331
1332 if (cpu_has_fpu && !cpu_has_nofpuex)
1333 set_except_vector(15, handle_fpe);
1334
1335 set_except_vector(22, handle_mdmx);
1336
1337 if (cpu_has_mcheck)
1338 set_except_vector(24, handle_mcheck);
1339
1340 if (cpu_has_mipsmt)
1341 set_except_vector(25, handle_mt);
1342
1343 if (cpu_has_dsp)
1344 set_except_vector(26, handle_dsp);
1345
1346 if (cpu_has_vce)
1347 /* Special exception: R4[04]00 uses also the divec space. */
1348 memcpy((void *)(CAC_BASE + 0x180), &except_vec3_r4000, 0x100);
1349 else if (cpu_has_4kex)
1350 memcpy((void *)(CAC_BASE + 0x180), &except_vec3_generic, 0x80);
1351 else
1352 memcpy((void *)(CAC_BASE + 0x080), &except_vec3_generic, 0x80);
1353
1056 signal_init(); 1354 signal_init();
1057#ifdef CONFIG_MIPS32_COMPAT 1355#ifdef CONFIG_MIPS32_COMPAT
1058 signal32_init(); 1356 signal32_init();
1059#endif 1357#endif
1060 1358
1061 flush_icache_range(CAC_BASE, CAC_BASE + 0x400); 1359 flush_icache_range(ebase, ebase + 0x400);
1360 flush_tlb_handlers();
1062} 1361}
diff --git a/arch/mips/kernel/unaligned.c b/arch/mips/kernel/unaligned.c
index 36c5212e0928..5b5a3736cbbc 100644
--- a/arch/mips/kernel/unaligned.c
+++ b/arch/mips/kernel/unaligned.c
@@ -94,7 +94,7 @@ unsigned long unaligned_instructions;
94#endif 94#endif
95 95
96static inline int emulate_load_store_insn(struct pt_regs *regs, 96static inline int emulate_load_store_insn(struct pt_regs *regs,
97 void *addr, unsigned long pc, 97 void __user *addr, unsigned int __user *pc,
98 unsigned long **regptr, unsigned long *newvalue) 98 unsigned long **regptr, unsigned long *newvalue)
99{ 99{
100 union mips_instruction insn; 100 union mips_instruction insn;
@@ -107,7 +107,7 @@ static inline int emulate_load_store_insn(struct pt_regs *regs,
107 /* 107 /*
108 * This load never faults. 108 * This load never faults.
109 */ 109 */
110 __get_user(insn.word, (unsigned int *)pc); 110 __get_user(insn.word, pc);
111 111
112 switch (insn.i_format.opcode) { 112 switch (insn.i_format.opcode) {
113 /* 113 /*
@@ -494,8 +494,8 @@ asmlinkage void do_ade(struct pt_regs *regs)
494{ 494{
495 unsigned long *regptr, newval; 495 unsigned long *regptr, newval;
496 extern int do_dsemulret(struct pt_regs *); 496 extern int do_dsemulret(struct pt_regs *);
497 unsigned int __user *pc;
497 mm_segment_t seg; 498 mm_segment_t seg;
498 unsigned long pc;
499 499
500 /* 500 /*
501 * Address errors may be deliberately induced by the FPU emulator to 501 * Address errors may be deliberately induced by the FPU emulator to
@@ -515,7 +515,7 @@ asmlinkage void do_ade(struct pt_regs *regs)
515 if ((regs->cp0_badvaddr == regs->cp0_epc) || (regs->cp0_epc & 0x1)) 515 if ((regs->cp0_badvaddr == regs->cp0_epc) || (regs->cp0_epc & 0x1))
516 goto sigbus; 516 goto sigbus;
517 517
518 pc = exception_epc(regs); 518 pc = (unsigned int __user *) exception_epc(regs);
519 if ((current->thread.mflags & MF_FIXADE) == 0) 519 if ((current->thread.mflags & MF_FIXADE) == 0)
520 goto sigbus; 520 goto sigbus;
521 521
@@ -526,7 +526,7 @@ asmlinkage void do_ade(struct pt_regs *regs)
526 seg = get_fs(); 526 seg = get_fs();
527 if (!user_mode(regs)) 527 if (!user_mode(regs))
528 set_fs(KERNEL_DS); 528 set_fs(KERNEL_DS);
529 if (!emulate_load_store_insn(regs, (void *)regs->cp0_badvaddr, pc, 529 if (!emulate_load_store_insn(regs, (void __user *)regs->cp0_badvaddr, pc,
530 &regptr, &newval)) { 530 &regptr, &newval)) {
531 compute_return_epc(regs); 531 compute_return_epc(regs);
532 /* 532 /*
diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S
index 482ac310c937..25cc856d8e7e 100644
--- a/arch/mips/kernel/vmlinux.lds.S
+++ b/arch/mips/kernel/vmlinux.lds.S
@@ -54,13 +54,6 @@ SECTIONS
54 54
55 *(.data) 55 *(.data)
56 56
57 /* Align the initial ramdisk image (INITRD) on page boundaries. */
58 . = ALIGN(4096);
59 __rd_start = .;
60 *(.initrd)
61 . = ALIGN(4096);
62 __rd_end = .;
63
64 CONSTRUCTORS 57 CONSTRUCTORS
65 } 58 }
66 _gp = . + 0x8000; 59 _gp = . + 0x8000;
@@ -96,12 +89,6 @@ SECTIONS
96 .init.setup : { *(.init.setup) } 89 .init.setup : { *(.init.setup) }
97 __setup_end = .; 90 __setup_end = .;
98 91
99 .early_initcall.init : {
100 __earlyinitcall_start = .;
101 *(.initcall.early1.init)
102 }
103 __earlyinitcall_end = .;
104
105 __initcall_start = .; 92 __initcall_start = .;
106 .initcall.init : { 93 .initcall.init : {
107 *(.initcall1.init) 94 *(.initcall1.init)
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c
new file mode 100644
index 000000000000..97fefcc9dbe7
--- /dev/null
+++ b/arch/mips/kernel/vpe.c
@@ -0,0 +1,1296 @@
1/*
2 * Copyright (C) 2004, 2005 MIPS Technologies, Inc. All rights reserved.
3 *
4 * This program is free software; you can distribute it and/or modify it
5 * under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * for more details.
12 *
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 *
17 */
18
19/*
20 * VPE support module
21 *
22 * Provides support for loading a MIPS SP program on VPE1.
23 * The SP enviroment is rather simple, no tlb's. It needs to be relocatable
24 * (or partially linked). You should initialise your stack in the startup
25 * code. This loader looks for the symbol __start and sets up
26 * execution to resume from there. The MIPS SDE kit contains suitable examples.
27 *
28 * To load and run, simply cat a SP 'program file' to /dev/vpe1.
29 * i.e cat spapp >/dev/vpe1.
30 *
31 * You'll need to have the following device files.
32 * mknod /dev/vpe0 c 63 0
33 * mknod /dev/vpe1 c 63 1
34 */
35#include <linux/config.h>
36#include <linux/kernel.h>
37#include <linux/module.h>
38#include <linux/fs.h>
39#include <linux/init.h>
40#include <asm/uaccess.h>
41#include <linux/slab.h>
42#include <linux/list.h>
43#include <linux/vmalloc.h>
44#include <linux/elf.h>
45#include <linux/seq_file.h>
46#include <linux/syscalls.h>
47#include <linux/moduleloader.h>
48#include <linux/interrupt.h>
49#include <linux/poll.h>
50#include <linux/bootmem.h>
51#include <asm/mipsregs.h>
52#include <asm/mipsmtregs.h>
53#include <asm/cacheflush.h>
54#include <asm/atomic.h>
55#include <asm/cpu.h>
56#include <asm/processor.h>
57#include <asm/system.h>
58
59typedef void *vpe_handle;
60
61// defined here because the kernel module loader doesn't have
62// anything to do with it.
63#define SHN_MIPS_SCOMMON 0xff03
64
65#ifndef ARCH_SHF_SMALL
66#define ARCH_SHF_SMALL 0
67#endif
68
69/* If this is set, the section belongs in the init part of the module */
70#define INIT_OFFSET_MASK (1UL << (BITS_PER_LONG-1))
71
72// temp number,
73#define VPE_MAJOR 63
74
75static char module_name[] = "vpe";
76static int major = 0;
77
78/* grab the likely amount of memory we will need. */
79#ifdef CONFIG_MIPS_VPE_LOADER_TOM
80#define P_SIZE (2 * 1024 * 1024)
81#else
82/* add an overhead to the max kmalloc size for non-striped symbols/etc */
83#define P_SIZE (256 * 1024)
84#endif
85
86#define MAX_VPES 16
87
88enum vpe_state {
89 VPE_STATE_UNUSED = 0,
90 VPE_STATE_INUSE,
91 VPE_STATE_RUNNING
92};
93
94enum tc_state {
95 TC_STATE_UNUSED = 0,
96 TC_STATE_INUSE,
97 TC_STATE_RUNNING,
98 TC_STATE_DYNAMIC
99};
100
101struct vpe;
102typedef struct tc {
103 enum tc_state state;
104 int index;
105
106 /* parent VPE */
107 struct vpe *pvpe;
108
109 /* The list of TC's with this VPE */
110 struct list_head tc;
111
112 /* The global list of tc's */
113 struct list_head list;
114} tc_t;
115
116typedef struct vpe {
117 enum vpe_state state;
118
119 /* (device) minor associated with this vpe */
120 int minor;
121
122 /* elfloader stuff */
123 void *load_addr;
124 u32 len;
125 char *pbuffer;
126 u32 plen;
127
128 unsigned long __start;
129
130 /* tc's associated with this vpe */
131 struct list_head tc;
132
133 /* The list of vpe's */
134 struct list_head list;
135
136 /* shared symbol address */
137 void *shared_ptr;
138} vpe_t;
139
140struct vpecontrol_ {
141 /* Virtual processing elements */
142 struct list_head vpe_list;
143
144 /* Thread contexts */
145 struct list_head tc_list;
146} vpecontrol;
147
148static void release_progmem(void *ptr);
149static void dump_vpe(vpe_t * v);
150extern void save_gp_address(unsigned int secbase, unsigned int rel);
151
152/* get the vpe associated with this minor */
153struct vpe *get_vpe(int minor)
154{
155 struct vpe *v;
156
157 list_for_each_entry(v, &vpecontrol.vpe_list, list) {
158 if (v->minor == minor)
159 return v;
160 }
161
162 printk(KERN_DEBUG "VPE: get_vpe minor %d not found\n", minor);
163 return NULL;
164}
165
166/* get the vpe associated with this minor */
167struct tc *get_tc(int index)
168{
169 struct tc *t;
170
171 list_for_each_entry(t, &vpecontrol.tc_list, list) {
172 if (t->index == index)
173 return t;
174 }
175
176 printk(KERN_DEBUG "VPE: get_tc index %d not found\n", index);
177
178 return NULL;
179}
180
181struct tc *get_tc_unused(void)
182{
183 struct tc *t;
184
185 list_for_each_entry(t, &vpecontrol.tc_list, list) {
186 if (t->state == TC_STATE_UNUSED)
187 return t;
188 }
189
190 printk(KERN_DEBUG "VPE: All TC's are in use\n");
191
192 return NULL;
193}
194
195/* allocate a vpe and associate it with this minor (or index) */
196struct vpe *alloc_vpe(int minor)
197{
198 struct vpe *v;
199
200 if ((v = kmalloc(sizeof(struct vpe), GFP_KERNEL)) == NULL) {
201 printk(KERN_WARNING "VPE: alloc_vpe no mem\n");
202 return NULL;
203 }
204
205 memset(v, 0, sizeof(struct vpe));
206
207 INIT_LIST_HEAD(&v->tc);
208 list_add_tail(&v->list, &vpecontrol.vpe_list);
209
210 v->minor = minor;
211 return v;
212}
213
214/* allocate a tc. At startup only tc0 is running, all other can be halted. */
215struct tc *alloc_tc(int index)
216{
217 struct tc *t;
218
219 if ((t = kmalloc(sizeof(struct tc), GFP_KERNEL)) == NULL) {
220 printk(KERN_WARNING "VPE: alloc_tc no mem\n");
221 return NULL;
222 }
223
224 memset(t, 0, sizeof(struct tc));
225
226 INIT_LIST_HEAD(&t->tc);
227 list_add_tail(&t->list, &vpecontrol.tc_list);
228
229 t->index = index;
230
231 return t;
232}
233
234/* clean up and free everything */
235void release_vpe(struct vpe *v)
236{
237 list_del(&v->list);
238 if (v->load_addr)
239 release_progmem(v);
240 kfree(v);
241}
242
243void dump_mtregs(void)
244{
245 unsigned long val;
246
247 val = read_c0_config3();
248 printk("config3 0x%lx MT %ld\n", val,
249 (val & CONFIG3_MT) >> CONFIG3_MT_SHIFT);
250
251 val = read_c0_mvpconf0();
252 printk("mvpconf0 0x%lx, PVPE %ld PTC %ld M %ld\n", val,
253 (val & MVPCONF0_PVPE) >> MVPCONF0_PVPE_SHIFT,
254 val & MVPCONF0_PTC, (val & MVPCONF0_M) >> MVPCONF0_M_SHIFT);
255
256 val = read_c0_mvpcontrol();
257 printk("MVPControl 0x%lx, STLB %ld VPC %ld EVP %ld\n", val,
258 (val & MVPCONTROL_STLB) >> MVPCONTROL_STLB_SHIFT,
259 (val & MVPCONTROL_VPC) >> MVPCONTROL_VPC_SHIFT,
260 (val & MVPCONTROL_EVP));
261
262 val = read_c0_vpeconf0();
263 printk("VPEConf0 0x%lx MVP %ld\n", val,
264 (val & VPECONF0_MVP) >> VPECONF0_MVP_SHIFT);
265}
266
267/* Find some VPE program space */
268static void *alloc_progmem(u32 len)
269{
270#ifdef CONFIG_MIPS_VPE_LOADER_TOM
271 /* this means you must tell linux to use less memory than you physically have */
272 return (void *)((max_pfn * PAGE_SIZE) + KSEG0);
273#else
274 // simple grab some mem for now
275 return kmalloc(len, GFP_KERNEL);
276#endif
277}
278
279static void release_progmem(void *ptr)
280{
281#ifndef CONFIG_MIPS_VPE_LOADER_TOM
282 kfree(ptr);
283#endif
284}
285
286/* Update size with this section: return offset. */
287static long get_offset(unsigned long *size, Elf_Shdr * sechdr)
288{
289 long ret;
290
291 ret = ALIGN(*size, sechdr->sh_addralign ? : 1);
292 *size = ret + sechdr->sh_size;
293 return ret;
294}
295
296/* Lay out the SHF_ALLOC sections in a way not dissimilar to how ld
297 might -- code, read-only data, read-write data, small data. Tally
298 sizes, and place the offsets into sh_entsize fields: high bit means it
299 belongs in init. */
300static void layout_sections(struct module *mod, const Elf_Ehdr * hdr,
301 Elf_Shdr * sechdrs, const char *secstrings)
302{
303 static unsigned long const masks[][2] = {
304 /* NOTE: all executable code must be the first section
305 * in this array; otherwise modify the text_size
306 * finder in the two loops below */
307 {SHF_EXECINSTR | SHF_ALLOC, ARCH_SHF_SMALL},
308 {SHF_ALLOC, SHF_WRITE | ARCH_SHF_SMALL},
309 {SHF_WRITE | SHF_ALLOC, ARCH_SHF_SMALL},
310 {ARCH_SHF_SMALL | SHF_ALLOC, 0}
311 };
312 unsigned int m, i;
313
314 for (i = 0; i < hdr->e_shnum; i++)
315 sechdrs[i].sh_entsize = ~0UL;
316
317 for (m = 0; m < ARRAY_SIZE(masks); ++m) {
318 for (i = 0; i < hdr->e_shnum; ++i) {
319 Elf_Shdr *s = &sechdrs[i];
320
321 // || strncmp(secstrings + s->sh_name, ".init", 5) == 0)
322 if ((s->sh_flags & masks[m][0]) != masks[m][0]
323 || (s->sh_flags & masks[m][1])
324 || s->sh_entsize != ~0UL)
325 continue;
326 s->sh_entsize = get_offset(&mod->core_size, s);
327 }
328
329 if (m == 0)
330 mod->core_text_size = mod->core_size;
331
332 }
333}
334
335
336/* from module-elf32.c, but subverted a little */
337
338struct mips_hi16 {
339 struct mips_hi16 *next;
340 Elf32_Addr *addr;
341 Elf32_Addr value;
342};
343
344static struct mips_hi16 *mips_hi16_list;
345static unsigned int gp_offs, gp_addr;
346
347static int apply_r_mips_none(struct module *me, uint32_t *location,
348 Elf32_Addr v)
349{
350 return 0;
351}
352
353static int apply_r_mips_gprel16(struct module *me, uint32_t *location,
354 Elf32_Addr v)
355{
356 int rel;
357
358 if( !(*location & 0xffff) ) {
359 rel = (int)v - gp_addr;
360 }
361 else {
362 /* .sbss + gp(relative) + offset */
363 /* kludge! */
364 rel = (int)(short)((int)v + gp_offs +
365 (int)(short)(*location & 0xffff) - gp_addr);
366 }
367
368 if( (rel > 32768) || (rel < -32768) ) {
369 printk(KERN_ERR
370 "apply_r_mips_gprel16: relative address out of range 0x%x %d\n",
371 rel, rel);
372 return -ENOEXEC;
373 }
374
375 *location = (*location & 0xffff0000) | (rel & 0xffff);
376
377 return 0;
378}
379
380static int apply_r_mips_pc16(struct module *me, uint32_t *location,
381 Elf32_Addr v)
382{
383 int rel;
384 rel = (((unsigned int)v - (unsigned int)location));
385 rel >>= 2; // because the offset is in _instructions_ not bytes.
386 rel -= 1; // and one instruction less due to the branch delay slot.
387
388 if( (rel > 32768) || (rel < -32768) ) {
389 printk(KERN_ERR
390 "apply_r_mips_pc16: relative address out of range 0x%x\n", rel);
391 return -ENOEXEC;
392 }
393
394 *location = (*location & 0xffff0000) | (rel & 0xffff);
395
396 return 0;
397}
398
399static int apply_r_mips_32(struct module *me, uint32_t *location,
400 Elf32_Addr v)
401{
402 *location += v;
403
404 return 0;
405}
406
407static int apply_r_mips_26(struct module *me, uint32_t *location,
408 Elf32_Addr v)
409{
410 if (v % 4) {
411 printk(KERN_ERR "module %s: dangerous relocation mod4\n", me->name);
412 return -ENOEXEC;
413 }
414
415/* Not desperately convinced this is a good check of an overflow condition
416 anyway. But it gets in the way of handling undefined weak symbols which
417 we want to set to zero.
418 if ((v & 0xf0000000) != (((unsigned long)location + 4) & 0xf0000000)) {
419 printk(KERN_ERR
420 "module %s: relocation overflow\n",
421 me->name);
422 return -ENOEXEC;
423 }
424*/
425
426 *location = (*location & ~0x03ffffff) |
427 ((*location + (v >> 2)) & 0x03ffffff);
428 return 0;
429}
430
431static int apply_r_mips_hi16(struct module *me, uint32_t *location,
432 Elf32_Addr v)
433{
434 struct mips_hi16 *n;
435
436 /*
437 * We cannot relocate this one now because we don't know the value of
438 * the carry we need to add. Save the information, and let LO16 do the
439 * actual relocation.
440 */
441 n = kmalloc(sizeof *n, GFP_KERNEL);
442 if (!n)
443 return -ENOMEM;
444
445 n->addr = location;
446 n->value = v;
447 n->next = mips_hi16_list;
448 mips_hi16_list = n;
449
450 return 0;
451}
452
453static int apply_r_mips_lo16(struct module *me, uint32_t *location,
454 Elf32_Addr v)
455{
456 unsigned long insnlo = *location;
457 Elf32_Addr val, vallo;
458
459 /* Sign extend the addend we extract from the lo insn. */
460 vallo = ((insnlo & 0xffff) ^ 0x8000) - 0x8000;
461
462 if (mips_hi16_list != NULL) {
463 struct mips_hi16 *l;
464
465 l = mips_hi16_list;
466 while (l != NULL) {
467 struct mips_hi16 *next;
468 unsigned long insn;
469
470 /*
471 * The value for the HI16 had best be the same.
472 */
473 if (v != l->value) {
474 printk("%d != %d\n", v, l->value);
475 goto out_danger;
476 }
477
478
479 /*
480 * Do the HI16 relocation. Note that we actually don't
481 * need to know anything about the LO16 itself, except
482 * where to find the low 16 bits of the addend needed
483 * by the LO16.
484 */
485 insn = *l->addr;
486 val = ((insn & 0xffff) << 16) + vallo;
487 val += v;
488
489 /*
490 * Account for the sign extension that will happen in
491 * the low bits.
492 */
493 val = ((val >> 16) + ((val & 0x8000) != 0)) & 0xffff;
494
495 insn = (insn & ~0xffff) | val;
496 *l->addr = insn;
497
498 next = l->next;
499 kfree(l);
500 l = next;
501 }
502
503 mips_hi16_list = NULL;
504 }
505
506 /*
507 * Ok, we're done with the HI16 relocs. Now deal with the LO16.
508 */
509 val = v + vallo;
510 insnlo = (insnlo & ~0xffff) | (val & 0xffff);
511 *location = insnlo;
512
513 return 0;
514
515out_danger:
516 printk(KERN_ERR "module %s: dangerous " "relocation\n", me->name);
517
518 return -ENOEXEC;
519}
520
521static int (*reloc_handlers[]) (struct module *me, uint32_t *location,
522 Elf32_Addr v) = {
523 [R_MIPS_NONE] = apply_r_mips_none,
524 [R_MIPS_32] = apply_r_mips_32,
525 [R_MIPS_26] = apply_r_mips_26,
526 [R_MIPS_HI16] = apply_r_mips_hi16,
527 [R_MIPS_LO16] = apply_r_mips_lo16,
528 [R_MIPS_GPREL16] = apply_r_mips_gprel16,
529 [R_MIPS_PC16] = apply_r_mips_pc16
530};
531
532
533int apply_relocations(Elf32_Shdr *sechdrs,
534 const char *strtab,
535 unsigned int symindex,
536 unsigned int relsec,
537 struct module *me)
538{
539 Elf32_Rel *rel = (void *) sechdrs[relsec].sh_addr;
540 Elf32_Sym *sym;
541 uint32_t *location;
542 unsigned int i;
543 Elf32_Addr v;
544 int res;
545
546 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) {
547 Elf32_Word r_info = rel[i].r_info;
548
549 /* This is where to make the change */
550 location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr
551 + rel[i].r_offset;
552 /* This is the symbol it is referring to */
553 sym = (Elf32_Sym *)sechdrs[symindex].sh_addr
554 + ELF32_R_SYM(r_info);
555
556 if (!sym->st_value) {
557 printk(KERN_DEBUG "%s: undefined weak symbol %s\n",
558 me->name, strtab + sym->st_name);
559 /* just print the warning, dont barf */
560 }
561
562 v = sym->st_value;
563
564 res = reloc_handlers[ELF32_R_TYPE(r_info)](me, location, v);
565 if( res ) {
566 printk(KERN_DEBUG
567 "relocation error 0x%x sym refer <%s> value 0x%x "
568 "type 0x%x r_info 0x%x\n",
569 (unsigned int)location, strtab + sym->st_name, v,
570 r_info, ELF32_R_TYPE(r_info));
571 }
572
573 if (res)
574 return res;
575 }
576
577 return 0;
578}
579
580void save_gp_address(unsigned int secbase, unsigned int rel)
581{
582 gp_addr = secbase + rel;
583 gp_offs = gp_addr - (secbase & 0xffff0000);
584}
585/* end module-elf32.c */
586
587
588
589/* Change all symbols so that sh_value encodes the pointer directly. */
590static int simplify_symbols(Elf_Shdr * sechdrs,
591 unsigned int symindex,
592 const char *strtab,
593 const char *secstrings,
594 unsigned int nsecs, struct module *mod)
595{
596 Elf_Sym *sym = (void *)sechdrs[symindex].sh_addr;
597 unsigned long secbase, bssbase = 0;
598 unsigned int i, n = sechdrs[symindex].sh_size / sizeof(Elf_Sym);
599 int ret = 0, size;
600
601 /* find the .bss section for COMMON symbols */
602 for (i = 0; i < nsecs; i++) {
603 if (strncmp(secstrings + sechdrs[i].sh_name, ".bss", 4) == 0)
604 bssbase = sechdrs[i].sh_addr;
605 }
606
607 for (i = 1; i < n; i++) {
608 switch (sym[i].st_shndx) {
609 case SHN_COMMON:
610 /* Allocate space for the symbol in the .bss section. st_value is currently size.
611 We want it to have the address of the symbol. */
612
613 size = sym[i].st_value;
614 sym[i].st_value = bssbase;
615
616 bssbase += size;
617 break;
618
619 case SHN_ABS:
620 /* Don't need to do anything */
621 break;
622
623 case SHN_UNDEF:
624 /* ret = -ENOENT; */
625 break;
626
627 case SHN_MIPS_SCOMMON:
628
629 printk(KERN_DEBUG
630 "simplify_symbols: ignoring SHN_MIPS_SCOMMON symbol <%s> st_shndx %d\n",
631 strtab + sym[i].st_name, sym[i].st_shndx);
632
633 // .sbss section
634 break;
635
636 default:
637 secbase = sechdrs[sym[i].st_shndx].sh_addr;
638
639 if (strncmp(strtab + sym[i].st_name, "_gp", 3) == 0) {
640 save_gp_address(secbase, sym[i].st_value);
641 }
642
643 sym[i].st_value += secbase;
644 break;
645 }
646
647 }
648
649 return ret;
650}
651
652#ifdef DEBUG_ELFLOADER
653static void dump_elfsymbols(Elf_Shdr * sechdrs, unsigned int symindex,
654 const char *strtab, struct module *mod)
655{
656 Elf_Sym *sym = (void *)sechdrs[symindex].sh_addr;
657 unsigned int i, n = sechdrs[symindex].sh_size / sizeof(Elf_Sym);
658
659 printk(KERN_DEBUG "dump_elfsymbols: n %d\n", n);
660 for (i = 1; i < n; i++) {
661 printk(KERN_DEBUG " i %d name <%s> 0x%x\n", i,
662 strtab + sym[i].st_name, sym[i].st_value);
663 }
664}
665#endif
666
667static void dump_tc(struct tc *t)
668{
669 printk(KERN_WARNING "VPE: TC index %d TCStatus 0x%lx halt 0x%lx\n",
670 t->index, read_tc_c0_tcstatus(), read_tc_c0_tchalt());
671 printk(KERN_WARNING "VPE: tcrestart 0x%lx\n", read_tc_c0_tcrestart());
672}
673
674static void dump_tclist(void)
675{
676 struct tc *t;
677
678 list_for_each_entry(t, &vpecontrol.tc_list, list) {
679 dump_tc(t);
680 }
681}
682
683/* We are prepared so configure and start the VPE... */
684int vpe_run(vpe_t * v)
685{
686 unsigned long val;
687 struct tc *t;
688
689 /* check we are the Master VPE */
690 val = read_c0_vpeconf0();
691 if (!(val & VPECONF0_MVP)) {
692 printk(KERN_WARNING
693 "VPE: only Master VPE's are allowed to configure MT\n");
694 return -1;
695 }
696
697 /* disable MT (using dvpe) */
698 dvpe();
699
700 /* Put MVPE's into 'configuration state' */
701 set_c0_mvpcontrol(MVPCONTROL_VPC);
702
703 if (!list_empty(&v->tc)) {
704 if ((t = list_entry(v->tc.next, struct tc, tc)) == NULL) {
705 printk(KERN_WARNING "VPE: TC %d is already in use.\n",
706 t->index);
707 return -ENOEXEC;
708 }
709 } else {
710 printk(KERN_WARNING "VPE: No TC's associated with VPE %d\n",
711 v->minor);
712 return -ENOEXEC;
713 }
714
715 settc(t->index);
716
717 val = read_vpe_c0_vpeconf0();
718
719 /* should check it is halted, and not activated */
720 if ((read_tc_c0_tcstatus() & TCSTATUS_A) || !(read_tc_c0_tchalt() & TCHALT_H)) {
721 printk(KERN_WARNING "VPE: TC %d is already doing something!\n",
722 t->index);
723
724 dump_tclist();
725 return -ENOEXEC;
726 }
727
728 /* Write the address we want it to start running from in the TCPC register. */
729 write_tc_c0_tcrestart((unsigned long)v->__start);
730
731 /* write the sivc_info address to tccontext */
732 write_tc_c0_tccontext((unsigned long)0);
733
734 /* Set up the XTC bit in vpeconf0 to point at our tc */
735 write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() | (t->index << VPECONF0_XTC_SHIFT));
736
737 /* mark the TC as activated, not interrupt exempt and not dynamically allocatable */
738 val = read_tc_c0_tcstatus();
739 val = (val & ~(TCSTATUS_DA | TCSTATUS_IXMT)) | TCSTATUS_A;
740 write_tc_c0_tcstatus(val);
741
742 write_tc_c0_tchalt(read_tc_c0_tchalt() & ~TCHALT_H);
743
744 /* set up VPE1 */
745 write_vpe_c0_vpecontrol(read_vpe_c0_vpecontrol() & ~VPECONTROL_TE); // no multiple TC's
746 write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() | VPECONF0_VPA); // enable this VPE
747
748 /*
749 * The sde-kit passes 'memsize' to __start in $a3, so set something
750 * here...
751 * Or set $a3 (register 7) to zero and define DFLT_STACK_SIZE and
752 * DFLT_HEAP_SIZE when you compile your program
753 */
754
755 mttgpr(7, 0);
756
757 /* set config to be the same as vpe0, particularly kseg0 coherency alg */
758 write_vpe_c0_config(read_c0_config());
759
760 /* clear out any left overs from a previous program */
761 write_vpe_c0_cause(0);
762
763 /* take system out of configuration state */
764 clear_c0_mvpcontrol(MVPCONTROL_VPC);
765
766 /* clear interrupts enabled IE, ERL, EXL, and KSU from c0 status */
767 write_vpe_c0_status(read_vpe_c0_status() & ~(ST0_ERL | ST0_KSU | ST0_IE | ST0_EXL));
768
769 /* set it running */
770 evpe(EVPE_ENABLE);
771
772 return 0;
773}
774
775static unsigned long find_vpe_symbols(vpe_t * v, Elf_Shdr * sechdrs,
776 unsigned int symindex, const char *strtab,
777 struct module *mod)
778{
779 Elf_Sym *sym = (void *)sechdrs[symindex].sh_addr;
780 unsigned int i, n = sechdrs[symindex].sh_size / sizeof(Elf_Sym);
781
782 for (i = 1; i < n; i++) {
783 if (strcmp(strtab + sym[i].st_name, "__start") == 0) {
784 v->__start = sym[i].st_value;
785 }
786
787 if (strcmp(strtab + sym[i].st_name, "vpe_shared") == 0) {
788 v->shared_ptr = (void *)sym[i].st_value;
789 }
790 }
791
792 return 0;
793}
794
795/* Allocates a VPE with some program code space(the load address), copies the contents
796 of the program (p)buffer performing relocatations/etc, free's it when finished.
797*/
798int vpe_elfload(vpe_t * v)
799{
800 Elf_Ehdr *hdr;
801 Elf_Shdr *sechdrs;
802 long err = 0;
803 char *secstrings, *strtab = NULL;
804 unsigned int len, i, symindex = 0, strindex = 0;
805
806 struct module mod; // so we can re-use the relocations code
807
808 memset(&mod, 0, sizeof(struct module));
809 strcpy(mod.name, "VPE dummy prog module");
810
811 hdr = (Elf_Ehdr *) v->pbuffer;
812 len = v->plen;
813
814 /* Sanity checks against insmoding binaries or wrong arch,
815 weird elf version */
816 if (memcmp(hdr->e_ident, ELFMAG, 4) != 0
817 || hdr->e_type != ET_REL || !elf_check_arch(hdr)
818 || hdr->e_shentsize != sizeof(*sechdrs)) {
819 printk(KERN_WARNING
820 "VPE program, wrong arch or weird elf version\n");
821
822 return -ENOEXEC;
823 }
824
825 if (len < hdr->e_shoff + hdr->e_shnum * sizeof(Elf_Shdr)) {
826 printk(KERN_ERR "VPE program length %u truncated\n", len);
827 return -ENOEXEC;
828 }
829
830 /* Convenience variables */
831 sechdrs = (void *)hdr + hdr->e_shoff;
832 secstrings = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;
833 sechdrs[0].sh_addr = 0;
834
835 /* And these should exist, but gcc whinges if we don't init them */
836 symindex = strindex = 0;
837
838 for (i = 1; i < hdr->e_shnum; i++) {
839
840 if (sechdrs[i].sh_type != SHT_NOBITS
841 && len < sechdrs[i].sh_offset + sechdrs[i].sh_size) {
842 printk(KERN_ERR "VPE program length %u truncated\n",
843 len);
844 return -ENOEXEC;
845 }
846
847 /* Mark all sections sh_addr with their address in the
848 temporary image. */
849 sechdrs[i].sh_addr = (size_t) hdr + sechdrs[i].sh_offset;
850
851 /* Internal symbols and strings. */
852 if (sechdrs[i].sh_type == SHT_SYMTAB) {
853 symindex = i;
854 strindex = sechdrs[i].sh_link;
855 strtab = (char *)hdr + sechdrs[strindex].sh_offset;
856 }
857 }
858
859 layout_sections(&mod, hdr, sechdrs, secstrings);
860
861 v->load_addr = alloc_progmem(mod.core_size);
862 memset(v->load_addr, 0, mod.core_size);
863
864 printk("VPE elf_loader: loading to %p\n", v->load_addr);
865
866 for (i = 0; i < hdr->e_shnum; i++) {
867 void *dest;
868
869 if (!(sechdrs[i].sh_flags & SHF_ALLOC))
870 continue;
871
872 dest = v->load_addr + sechdrs[i].sh_entsize;
873
874 if (sechdrs[i].sh_type != SHT_NOBITS)
875 memcpy(dest, (void *)sechdrs[i].sh_addr,
876 sechdrs[i].sh_size);
877 /* Update sh_addr to point to copy in image. */
878 sechdrs[i].sh_addr = (unsigned long)dest;
879 }
880
881 /* Fix up syms, so that st_value is a pointer to location. */
882 err =
883 simplify_symbols(sechdrs, symindex, strtab, secstrings,
884 hdr->e_shnum, &mod);
885 if (err < 0) {
886 printk(KERN_WARNING "VPE: unable to simplify symbols\n");
887 goto cleanup;
888 }
889
890 /* Now do relocations. */
891 for (i = 1; i < hdr->e_shnum; i++) {
892 const char *strtab = (char *)sechdrs[strindex].sh_addr;
893 unsigned int info = sechdrs[i].sh_info;
894
895 /* Not a valid relocation section? */
896 if (info >= hdr->e_shnum)
897 continue;
898
899 /* Don't bother with non-allocated sections */
900 if (!(sechdrs[info].sh_flags & SHF_ALLOC))
901 continue;
902
903 if (sechdrs[i].sh_type == SHT_REL)
904 err =
905 apply_relocations(sechdrs, strtab, symindex, i, &mod);
906 else if (sechdrs[i].sh_type == SHT_RELA)
907 err = apply_relocate_add(sechdrs, strtab, symindex, i,
908 &mod);
909 if (err < 0) {
910 printk(KERN_WARNING
911 "vpe_elfload: error in relocations err %ld\n",
912 err);
913 goto cleanup;
914 }
915 }
916
917 /* make sure it's physically written out */
918 flush_icache_range((unsigned long)v->load_addr,
919 (unsigned long)v->load_addr + v->len);
920
921 if ((find_vpe_symbols(v, sechdrs, symindex, strtab, &mod)) < 0) {
922
923 printk(KERN_WARNING
924 "VPE: program doesn't contain __start or vpe_shared symbols\n");
925 err = -ENOEXEC;
926 }
927
928 printk(" elf loaded\n");
929
930cleanup:
931 return err;
932}
933
934static void dump_vpe(vpe_t * v)
935{
936 struct tc *t;
937
938 printk(KERN_DEBUG "VPEControl 0x%lx\n", read_vpe_c0_vpecontrol());
939 printk(KERN_DEBUG "VPEConf0 0x%lx\n", read_vpe_c0_vpeconf0());
940
941 list_for_each_entry(t, &vpecontrol.tc_list, list) {
942 dump_tc(t);
943 }
944}
945
946/* checks for VPE is unused and gets ready to load program */
947static int vpe_open(struct inode *inode, struct file *filp)
948{
949 int minor;
950 vpe_t *v;
951
952 /* assume only 1 device at the mo. */
953 if ((minor = MINOR(inode->i_rdev)) != 1) {
954 printk(KERN_WARNING "VPE: only vpe1 is supported\n");
955 return -ENODEV;
956 }
957
958 if ((v = get_vpe(minor)) == NULL) {
959 printk(KERN_WARNING "VPE: unable to get vpe\n");
960 return -ENODEV;
961 }
962
963 if (v->state != VPE_STATE_UNUSED) {
964 unsigned long tmp;
965 struct tc *t;
966
967 printk(KERN_WARNING "VPE: device %d already in use\n", minor);
968
969 dvpe();
970 dump_vpe(v);
971
972 printk(KERN_WARNING "VPE: re-initialising %d\n", minor);
973
974 release_progmem(v->load_addr);
975
976 t = get_tc(minor);
977 settc(minor);
978 tmp = read_tc_c0_tcstatus();
979
980 /* mark not allocated and not dynamically allocatable */
981 tmp &= ~(TCSTATUS_A | TCSTATUS_DA);
982 tmp |= TCSTATUS_IXMT; /* interrupt exempt */
983 write_tc_c0_tcstatus(tmp);
984
985 write_tc_c0_tchalt(TCHALT_H);
986
987 }
988
989 // allocate it so when we get write ops we know it's expected.
990 v->state = VPE_STATE_INUSE;
991
992 /* this of-course trashes what was there before... */
993 v->pbuffer = vmalloc(P_SIZE);
994 v->plen = P_SIZE;
995 v->load_addr = NULL;
996 v->len = 0;
997
998 return 0;
999}
1000
1001static int vpe_release(struct inode *inode, struct file *filp)
1002{
1003 int minor, ret = 0;
1004 vpe_t *v;
1005 Elf_Ehdr *hdr;
1006
1007 minor = MINOR(inode->i_rdev);
1008 if ((v = get_vpe(minor)) == NULL)
1009 return -ENODEV;
1010
1011 // simple case of fire and forget, so tell the VPE to run...
1012
1013 hdr = (Elf_Ehdr *) v->pbuffer;
1014 if (memcmp(hdr->e_ident, ELFMAG, 4) == 0) {
1015 if (vpe_elfload(v) >= 0)
1016 vpe_run(v);
1017 else {
1018 printk(KERN_WARNING "VPE: ELF load failed.\n");
1019 ret = -ENOEXEC;
1020 }
1021 } else {
1022 printk(KERN_WARNING "VPE: only elf files are supported\n");
1023 ret = -ENOEXEC;
1024 }
1025
1026 // cleanup any temp buffers
1027 if (v->pbuffer)
1028 vfree(v->pbuffer);
1029 v->plen = 0;
1030 return ret;
1031}
1032
1033static ssize_t vpe_write(struct file *file, const char __user * buffer,
1034 size_t count, loff_t * ppos)
1035{
1036 int minor;
1037 size_t ret = count;
1038 vpe_t *v;
1039
1040 minor = MINOR(file->f_dentry->d_inode->i_rdev);
1041 if ((v = get_vpe(minor)) == NULL)
1042 return -ENODEV;
1043
1044 if (v->pbuffer == NULL) {
1045 printk(KERN_ERR "vpe_write: no pbuffer\n");
1046 return -ENOMEM;
1047 }
1048
1049 if ((count + v->len) > v->plen) {
1050 printk(KERN_WARNING
1051 "VPE Loader: elf size too big. Perhaps strip uneeded symbols\n");
1052 return -ENOMEM;
1053 }
1054
1055 count -= copy_from_user(v->pbuffer + v->len, buffer, count);
1056 if (!count) {
1057 printk("vpe_write: copy_to_user failed\n");
1058 return -EFAULT;
1059 }
1060
1061 v->len += count;
1062 return ret;
1063}
1064
1065static struct file_operations vpe_fops = {
1066 .owner = THIS_MODULE,
1067 .open = vpe_open,
1068 .release = vpe_release,
1069 .write = vpe_write
1070};
1071
1072/* module wrapper entry points */
1073/* give me a vpe */
1074vpe_handle vpe_alloc(void)
1075{
1076 int i;
1077 struct vpe *v;
1078
1079 /* find a vpe */
1080 for (i = 1; i < MAX_VPES; i++) {
1081 if ((v = get_vpe(i)) != NULL) {
1082 v->state = VPE_STATE_INUSE;
1083 return v;
1084 }
1085 }
1086 return NULL;
1087}
1088
1089EXPORT_SYMBOL(vpe_alloc);
1090
1091/* start running from here */
1092int vpe_start(vpe_handle vpe, unsigned long start)
1093{
1094 struct vpe *v = vpe;
1095
1096 v->__start = start;
1097 return vpe_run(v);
1098}
1099
1100EXPORT_SYMBOL(vpe_start);
1101
1102/* halt it for now */
1103int vpe_stop(vpe_handle vpe)
1104{
1105 struct vpe *v = vpe;
1106 struct tc *t;
1107 unsigned int evpe_flags;
1108
1109 evpe_flags = dvpe();
1110
1111 if ((t = list_entry(v->tc.next, struct tc, tc)) != NULL) {
1112
1113 settc(t->index);
1114 write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() & ~VPECONF0_VPA);
1115 }
1116
1117 evpe(evpe_flags);
1118
1119 return 0;
1120}
1121
1122EXPORT_SYMBOL(vpe_stop);
1123
1124/* I've done with it thank you */
1125int vpe_free(vpe_handle vpe)
1126{
1127 struct vpe *v = vpe;
1128 struct tc *t;
1129 unsigned int evpe_flags;
1130
1131 if ((t = list_entry(v->tc.next, struct tc, tc)) == NULL) {
1132 return -ENOEXEC;
1133 }
1134
1135 evpe_flags = dvpe();
1136
1137 /* Put MVPE's into 'configuration state' */
1138 set_c0_mvpcontrol(MVPCONTROL_VPC);
1139
1140 settc(t->index);
1141 write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() & ~VPECONF0_VPA);
1142
1143 /* mark the TC unallocated and halt'ed */
1144 write_tc_c0_tcstatus(read_tc_c0_tcstatus() & ~TCSTATUS_A);
1145 write_tc_c0_tchalt(TCHALT_H);
1146
1147 v->state = VPE_STATE_UNUSED;
1148
1149 clear_c0_mvpcontrol(MVPCONTROL_VPC);
1150 evpe(evpe_flags);
1151
1152 return 0;
1153}
1154
1155EXPORT_SYMBOL(vpe_free);
1156
1157void *vpe_get_shared(int index)
1158{
1159 struct vpe *v;
1160
1161 if ((v = get_vpe(index)) == NULL) {
1162 printk(KERN_WARNING "vpe: invalid vpe index %d\n", index);
1163 return NULL;
1164 }
1165
1166 return v->shared_ptr;
1167}
1168
1169EXPORT_SYMBOL(vpe_get_shared);
1170
1171static int __init vpe_module_init(void)
1172{
1173 struct vpe *v = NULL;
1174 struct tc *t;
1175 unsigned long val;
1176 int i;
1177
1178 if (!cpu_has_mipsmt) {
1179 printk("VPE loader: not a MIPS MT capable processor\n");
1180 return -ENODEV;
1181 }
1182
1183 if ((major = register_chrdev(VPE_MAJOR, module_name, &vpe_fops) < 0)) {
1184 printk("VPE loader: unable to register character device\n");
1185 return -EBUSY;
1186 }
1187
1188 if (major == 0)
1189 major = VPE_MAJOR;
1190
1191 dmt();
1192 dvpe();
1193
1194 /* Put MVPE's into 'configuration state' */
1195 set_c0_mvpcontrol(MVPCONTROL_VPC);
1196
1197 /* dump_mtregs(); */
1198
1199 INIT_LIST_HEAD(&vpecontrol.vpe_list);
1200 INIT_LIST_HEAD(&vpecontrol.tc_list);
1201
1202 val = read_c0_mvpconf0();
1203 for (i = 0; i < ((val & MVPCONF0_PTC) + 1); i++) {
1204 t = alloc_tc(i);
1205
1206 /* VPE's */
1207 if (i < ((val & MVPCONF0_PVPE) >> MVPCONF0_PVPE_SHIFT) + 1) {
1208 settc(i);
1209
1210 if ((v = alloc_vpe(i)) == NULL) {
1211 printk(KERN_WARNING "VPE: unable to allocate VPE\n");
1212 return -ENODEV;
1213 }
1214
1215 list_add(&t->tc, &v->tc); /* add the tc to the list of this vpe's tc's. */
1216
1217 /* deactivate all but vpe0 */
1218 if (i != 0) {
1219 unsigned long tmp = read_vpe_c0_vpeconf0();
1220
1221 tmp &= ~VPECONF0_VPA;
1222
1223 /* master VPE */
1224 tmp |= VPECONF0_MVP;
1225 write_vpe_c0_vpeconf0(tmp);
1226 }
1227
1228 /* disable multi-threading with TC's */
1229 write_vpe_c0_vpecontrol(read_vpe_c0_vpecontrol() & ~VPECONTROL_TE);
1230
1231 if (i != 0) {
1232 write_vpe_c0_status((read_c0_status() &
1233 ~(ST0_IM | ST0_IE | ST0_KSU))
1234 | ST0_CU0);
1235
1236 /* set config to be the same as vpe0, particularly kseg0 coherency alg */
1237 write_vpe_c0_config(read_c0_config());
1238 }
1239
1240 }
1241
1242 /* TC's */
1243 t->pvpe = v; /* set the parent vpe */
1244
1245 if (i != 0) {
1246 unsigned long tmp;
1247
1248 /* tc 0 will of course be running.... */
1249 if (i == 0)
1250 t->state = TC_STATE_RUNNING;
1251
1252 settc(i);
1253
1254 /* bind a TC to each VPE, May as well put all excess TC's
1255 on the last VPE */
1256 if (i >= (((val & MVPCONF0_PVPE) >> MVPCONF0_PVPE_SHIFT) + 1))
1257 write_tc_c0_tcbind(read_tc_c0_tcbind() |
1258 ((val & MVPCONF0_PVPE) >> MVPCONF0_PVPE_SHIFT));
1259 else
1260 write_tc_c0_tcbind(read_tc_c0_tcbind() | i);
1261
1262 tmp = read_tc_c0_tcstatus();
1263
1264 /* mark not allocated and not dynamically allocatable */
1265 tmp &= ~(TCSTATUS_A | TCSTATUS_DA);
1266 tmp |= TCSTATUS_IXMT; /* interrupt exempt */
1267 write_tc_c0_tcstatus(tmp);
1268
1269 write_tc_c0_tchalt(TCHALT_H);
1270 }
1271 }
1272
1273 /* release config state */
1274 clear_c0_mvpcontrol(MVPCONTROL_VPC);
1275
1276 return 0;
1277}
1278
1279static void __exit vpe_module_exit(void)
1280{
1281 struct vpe *v, *n;
1282
1283 list_for_each_entry_safe(v, n, &vpecontrol.vpe_list, list) {
1284 if (v->state != VPE_STATE_UNUSED) {
1285 release_vpe(v);
1286 }
1287 }
1288
1289 unregister_chrdev(major, module_name);
1290}
1291
1292module_init(vpe_module_init);
1293module_exit(vpe_module_exit);
1294MODULE_DESCRIPTION("MIPS VPE Loader");
1295MODULE_AUTHOR("Elizabeth Clarke, MIPS Technologies, Inc");
1296MODULE_LICENSE("GPL");
diff --git a/arch/mips/lasat/Kconfig b/arch/mips/lasat/Kconfig
new file mode 100644
index 000000000000..1d2ee8a9be13
--- /dev/null
+++ b/arch/mips/lasat/Kconfig
@@ -0,0 +1,15 @@
1config PICVUE
2 tristate "PICVUE LCD display driver"
3 depends on LASAT
4
5config PICVUE_PROC
6 tristate "PICVUE LCD display driver /proc interface"
7 depends on PICVUE
8
9config DS1603
10 bool "DS1603 RTC driver"
11 depends on LASAT
12
13config LASAT_SYSCTL
14 bool "LASAT sysctl interface"
15 depends on LASAT
diff --git a/arch/mips/lasat/interrupt.c b/arch/mips/lasat/interrupt.c
index c90da1639440..852a41901a5e 100644
--- a/arch/mips/lasat/interrupt.c
+++ b/arch/mips/lasat/interrupt.c
@@ -71,14 +71,13 @@ static void end_lasat_irq(unsigned int irq)
71} 71}
72 72
73static struct hw_interrupt_type lasat_irq_type = { 73static struct hw_interrupt_type lasat_irq_type = {
74 "Lasat", 74 .typename = "Lasat",
75 startup_lasat_irq, 75 .startup = startup_lasat_irq,
76 shutdown_lasat_irq, 76 .shutdown = shutdown_lasat_irq,
77 enable_lasat_irq, 77 .enable = enable_lasat_irq,
78 disable_lasat_irq, 78 .disable = disable_lasat_irq,
79 mask_and_ack_lasat_irq, 79 .ack = mask_and_ack_lasat_irq,
80 end_lasat_irq, 80 .end = end_lasat_irq,
81 NULL
82}; 81};
83 82
84static inline int ls1bit32(unsigned int x) 83static inline int ls1bit32(unsigned int x)
diff --git a/arch/mips/lasat/setup.c b/arch/mips/lasat/setup.c
index f2604fab9a99..dcd819d57dae 100644
--- a/arch/mips/lasat/setup.c
+++ b/arch/mips/lasat/setup.c
@@ -155,7 +155,7 @@ void __init serial_init(void)
155} 155}
156#endif 156#endif
157 157
158static int __init lasat_setup(void) 158void __init plat_setup(void)
159{ 159{
160 int i; 160 int i;
161 lasat_misc = &lasat_misc_info[mips_machtype]; 161 lasat_misc = &lasat_misc_info[mips_machtype];
@@ -185,8 +185,4 @@ static int __init lasat_setup(void)
185 change_c0_status(ST0_BEV,0); 185 change_c0_status(ST0_BEV,0);
186 186
187 prom_printf("Lasat specific initialization complete\n"); 187 prom_printf("Lasat specific initialization complete\n");
188
189 return 0;
190} 188}
191
192early_initcall(lasat_setup);
diff --git a/arch/mips/lib-32/dump_tlb.c b/arch/mips/lib-32/dump_tlb.c
index 019ac8f005d7..46519f4331eb 100644
--- a/arch/mips/lib-32/dump_tlb.c
+++ b/arch/mips/lib-32/dump_tlb.c
@@ -20,16 +20,25 @@
20static inline const char *msk2str(unsigned int mask) 20static inline const char *msk2str(unsigned int mask)
21{ 21{
22 switch (mask) { 22 switch (mask) {
23 case PM_4K: return "4kb"; 23 case PM_4K:
24 case PM_16K: return "16kb"; 24 return "4kb";
25 case PM_64K: return "64kb"; 25 case PM_16K:
26 case PM_256K: return "256kb"; 26 return "16kb";
27 case PM_64K:
28 return "64kb";
29 case PM_256K:
30 return "256kb";
27#ifndef CONFIG_CPU_VR41XX 31#ifndef CONFIG_CPU_VR41XX
28 case PM_1M: return "1Mb"; 32 case PM_1M:
29 case PM_4M: return "4Mb"; 33 return "1Mb";
30 case PM_16M: return "16Mb"; 34 case PM_4M:
31 case PM_64M: return "64Mb"; 35 return "4Mb";
32 case PM_256M: return "256Mb"; 36 case PM_16M:
37 return "16Mb";
38 case PM_64M:
39 return "64Mb";
40 case PM_256M:
41 return "256Mb";
33#endif 42#endif
34 } 43 }
35 44
@@ -47,7 +56,7 @@ void dump_tlb(int first, int last)
47 unsigned int pagemask, c0, c1, asid; 56 unsigned int pagemask, c0, c1, asid;
48 unsigned long long entrylo0, entrylo1; 57 unsigned long long entrylo0, entrylo1;
49 unsigned long entryhi; 58 unsigned long entryhi;
50 int i; 59 int i;
51 60
52 asid = read_c0_entryhi() & 0xff; 61 asid = read_c0_entryhi() & 0xff;
53 62
@@ -58,7 +67,7 @@ void dump_tlb(int first, int last)
58 tlb_read(); 67 tlb_read();
59 BARRIER(); 68 BARRIER();
60 pagemask = read_c0_pagemask(); 69 pagemask = read_c0_pagemask();
61 entryhi = read_c0_entryhi(); 70 entryhi = read_c0_entryhi();
62 entrylo0 = read_c0_entrylo0(); 71 entrylo0 = read_c0_entrylo0();
63 entrylo1 = read_c0_entrylo1(); 72 entrylo1 = read_c0_entrylo1();
64 73
@@ -78,13 +87,11 @@ void dump_tlb(int first, int last)
78 printk("\t\t\t[pa=%08Lx c=%d d=%d v=%d g=%Ld]\n", 87 printk("\t\t\t[pa=%08Lx c=%d d=%d v=%d g=%Ld]\n",
79 (entrylo0 << 6) & PAGE_MASK, c0, 88 (entrylo0 << 6) & PAGE_MASK, c0,
80 (entrylo0 & 4) ? 1 : 0, 89 (entrylo0 & 4) ? 1 : 0,
81 (entrylo0 & 2) ? 1 : 0, 90 (entrylo0 & 2) ? 1 : 0, (entrylo0 & 1));
82 (entrylo0 & 1));
83 printk("\t\t\t[pa=%08Lx c=%d d=%d v=%d g=%Ld]\n", 91 printk("\t\t\t[pa=%08Lx c=%d d=%d v=%d g=%Ld]\n",
84 (entrylo1 << 6) & PAGE_MASK, c1, 92 (entrylo1 << 6) & PAGE_MASK, c1,
85 (entrylo1 & 4) ? 1 : 0, 93 (entrylo1 & 4) ? 1 : 0,
86 (entrylo1 & 2) ? 1 : 0, 94 (entrylo1 & 2) ? 1 : 0, (entrylo1 & 1));
87 (entrylo1 & 1));
88 printk("\n"); 95 printk("\n");
89 } 96 }
90 } 97 }
@@ -99,7 +106,7 @@ void dump_tlb_all(void)
99 106
100void dump_tlb_wired(void) 107void dump_tlb_wired(void)
101{ 108{
102 int wired; 109 int wired;
103 110
104 wired = read_c0_wired(); 111 wired = read_c0_wired();
105 printk("Wired: %d", wired); 112 printk("Wired: %d", wired);
@@ -138,9 +145,10 @@ void dump_tlb_nonwired(void)
138 145
139void dump_list_process(struct task_struct *t, void *address) 146void dump_list_process(struct task_struct *t, void *address)
140{ 147{
141 pgd_t *page_dir, *pgd; 148 pgd_t *page_dir, *pgd;
142 pmd_t *pmd; 149 pud_t *pud;
143 pte_t *pte, page; 150 pmd_t *pmd;
151 pte_t *pte, page;
144 unsigned long addr, val; 152 unsigned long addr, val;
145 153
146 addr = (unsigned long) address; 154 addr = (unsigned long) address;
@@ -152,21 +160,27 @@ void dump_list_process(struct task_struct *t, void *address)
152 160
153 if (addr > KSEG0) 161 if (addr > KSEG0)
154 page_dir = pgd_offset_k(0); 162 page_dir = pgd_offset_k(0);
155 else 163 else if (t->mm) {
156 page_dir = pgd_offset(t->mm, 0); 164 page_dir = pgd_offset(t->mm, 0);
157 printk("page_dir == %08x\n", (unsigned int) page_dir); 165 printk("page_dir == %08x\n", (unsigned int) page_dir);
166 } else
167 printk("Current thread has no mm\n");
158 168
159 if (addr > KSEG0) 169 if (addr > KSEG0)
160 pgd = pgd_offset_k(addr); 170 pgd = pgd_offset_k(addr);
161 else 171 else if (t->mm) {
162 pgd = pgd_offset(t->mm, addr); 172 pgd = pgd_offset(t->mm, addr);
163 printk("pgd == %08x, ", (unsigned int) pgd); 173 printk("pgd == %08x, ", (unsigned int) pgd);
174 pud = pud_offset(pgd, addr);
175 printk("pud == %08x, ", (unsigned int) pud);
164 176
165 pmd = pmd_offset(pgd, addr); 177 pmd = pmd_offset(pud, addr);
166 printk("pmd == %08x, ", (unsigned int) pmd); 178 printk("pmd == %08x, ", (unsigned int) pmd);
167 179
168 pte = pte_offset(pmd, addr); 180 pte = pte_offset(pmd, addr);
169 printk("pte == %08x, ", (unsigned int) pte); 181 printk("pte == %08x, ", (unsigned int) pte);
182 } else
183 printk("Current thread has no mm\n");
170 184
171 page = *pte; 185 page = *pte;
172#ifdef CONFIG_64BIT_PHYS_ADDR 186#ifdef CONFIG_64BIT_PHYS_ADDR
@@ -176,14 +190,22 @@ void dump_list_process(struct task_struct *t, void *address)
176#endif 190#endif
177 191
178 val = pte_val(page); 192 val = pte_val(page);
179 if (val & _PAGE_PRESENT) printk("present "); 193 if (val & _PAGE_PRESENT)
180 if (val & _PAGE_READ) printk("read "); 194 printk("present ");
181 if (val & _PAGE_WRITE) printk("write "); 195 if (val & _PAGE_READ)
182 if (val & _PAGE_ACCESSED) printk("accessed "); 196 printk("read ");
183 if (val & _PAGE_MODIFIED) printk("modified "); 197 if (val & _PAGE_WRITE)
184 if (val & _PAGE_R4KBUG) printk("r4kbug "); 198 printk("write ");
185 if (val & _PAGE_GLOBAL) printk("global "); 199 if (val & _PAGE_ACCESSED)
186 if (val & _PAGE_VALID) printk("valid "); 200 printk("accessed ");
201 if (val & _PAGE_MODIFIED)
202 printk("modified ");
203 if (val & _PAGE_R4KBUG)
204 printk("r4kbug ");
205 if (val & _PAGE_GLOBAL)
206 printk("global ");
207 if (val & _PAGE_VALID)
208 printk("valid ");
187 printk("\n"); 209 printk("\n");
188} 210}
189 211
@@ -194,14 +216,16 @@ void dump_list_current(void *address)
194 216
195unsigned int vtop(void *address) 217unsigned int vtop(void *address)
196{ 218{
197 pgd_t *pgd; 219 pgd_t *pgd;
198 pmd_t *pmd; 220 pud_t *pud;
199 pte_t *pte; 221 pmd_t *pmd;
222 pte_t *pte;
200 unsigned int addr, paddr; 223 unsigned int addr, paddr;
201 224
202 addr = (unsigned long) address; 225 addr = (unsigned long) address;
203 pgd = pgd_offset(current->mm, addr); 226 pgd = pgd_offset(current->mm, addr);
204 pmd = pmd_offset(pgd, addr); 227 pud = pud_offset(pgd, addr);
228 pmd = pmd_offset(pud, addr);
205 pte = pte_offset(pmd, addr); 229 pte = pte_offset(pmd, addr);
206 paddr = (KSEG1 | (unsigned int) pte_val(*pte)) & PAGE_MASK; 230 paddr = (KSEG1 | (unsigned int) pte_val(*pte)) & PAGE_MASK;
207 paddr |= (addr & ~PAGE_MASK); 231 paddr |= (addr & ~PAGE_MASK);
@@ -214,9 +238,9 @@ void dump16(unsigned long *p)
214 int i; 238 int i;
215 239
216 for (i = 0; i < 8; i++) { 240 for (i = 0; i < 8; i++) {
217 printk("*%08lx == %08lx, ", (unsigned long)p, *p); 241 printk("*%08lx == %08lx, ", (unsigned long) p, *p);
218 p++; 242 p++;
219 printk("*%08lx == %08lx\n", (unsigned long)p, *p); 243 printk("*%08lx == %08lx\n", (unsigned long) p, *p);
220 p++; 244 p++;
221 } 245 }
222} 246}
diff --git a/arch/mips/lib-32/r3k_dump_tlb.c b/arch/mips/lib-32/r3k_dump_tlb.c
index a878224004e5..4f2cb74f0766 100644
--- a/arch/mips/lib-32/r3k_dump_tlb.c
+++ b/arch/mips/lib-32/r3k_dump_tlb.c
@@ -105,6 +105,7 @@ void dump_tlb_nonwired(void)
105void dump_list_process(struct task_struct *t, void *address) 105void dump_list_process(struct task_struct *t, void *address)
106{ 106{
107 pgd_t *page_dir, *pgd; 107 pgd_t *page_dir, *pgd;
108 pud_t *pud;
108 pmd_t *pmd; 109 pmd_t *pmd;
109 pte_t *pte, page; 110 pte_t *pte, page;
110 unsigned int addr; 111 unsigned int addr;
@@ -121,7 +122,10 @@ void dump_list_process(struct task_struct *t, void *address)
121 pgd = pgd_offset(t->mm, addr); 122 pgd = pgd_offset(t->mm, addr);
122 printk("pgd == %08x, ", (unsigned int) pgd); 123 printk("pgd == %08x, ", (unsigned int) pgd);
123 124
124 pmd = pmd_offset(pgd, addr); 125 pud = pud_offset(pgd, addr);
126 printk("pud == %08x, ", (unsigned int) pud);
127
128 pmd = pmd_offset(pud, addr);
125 printk("pmd == %08x, ", (unsigned int) pmd); 129 printk("pmd == %08x, ", (unsigned int) pmd);
126 130
127 pte = pte_offset(pmd, addr); 131 pte = pte_offset(pmd, addr);
@@ -149,13 +153,15 @@ void dump_list_current(void *address)
149unsigned int vtop(void *address) 153unsigned int vtop(void *address)
150{ 154{
151 pgd_t *pgd; 155 pgd_t *pgd;
156 pud_t *pud;
152 pmd_t *pmd; 157 pmd_t *pmd;
153 pte_t *pte; 158 pte_t *pte;
154 unsigned int addr, paddr; 159 unsigned int addr, paddr;
155 160
156 addr = (unsigned long) address; 161 addr = (unsigned long) address;
157 pgd = pgd_offset(current->mm, addr); 162 pgd = pgd_offset(current->mm, addr);
158 pmd = pmd_offset(pgd, addr); 163 pud = pud_offset(pgd, addr);
164 pmd = pmd_offset(pud, addr);
159 pte = pte_offset(pmd, addr); 165 pte = pte_offset(pmd, addr);
160 paddr = (KSEG1 | (unsigned int) pte_val(*pte)) & PAGE_MASK; 166 paddr = (KSEG1 | (unsigned int) pte_val(*pte)) & PAGE_MASK;
161 paddr |= (addr & ~PAGE_MASK); 167 paddr |= (addr & ~PAGE_MASK);
diff --git a/arch/mips/lib-64/dump_tlb.c b/arch/mips/lib-64/dump_tlb.c
index 42f88e055b4c..11a5f015f040 100644
--- a/arch/mips/lib-64/dump_tlb.c
+++ b/arch/mips/lib-64/dump_tlb.c
@@ -140,6 +140,7 @@ void dump_tlb_nonwired(void)
140void dump_list_process(struct task_struct *t, void *address) 140void dump_list_process(struct task_struct *t, void *address)
141{ 141{
142 pgd_t *page_dir, *pgd; 142 pgd_t *page_dir, *pgd;
143 pud_t *pud;
143 pmd_t *pmd; 144 pmd_t *pmd;
144 pte_t *pte, page; 145 pte_t *pte, page;
145 unsigned long addr, val; 146 unsigned long addr, val;
@@ -155,7 +156,10 @@ void dump_list_process(struct task_struct *t, void *address)
155 pgd = pgd_offset(t->mm, addr); 156 pgd = pgd_offset(t->mm, addr);
156 printk("pgd == %016lx\n", (unsigned long) pgd); 157 printk("pgd == %016lx\n", (unsigned long) pgd);
157 158
158 pmd = pmd_offset(pgd, addr); 159 pud = pud_offset(pgd, addr);
160 printk("pud == %016lx\n", (unsigned long) pud);
161
162 pmd = pmd_offset(pud, addr);
159 printk("pmd == %016lx\n", (unsigned long) pmd); 163 printk("pmd == %016lx\n", (unsigned long) pmd);
160 164
161 pte = pte_offset(pmd, addr); 165 pte = pte_offset(pmd, addr);
@@ -184,13 +188,15 @@ void dump_list_current(void *address)
184unsigned int vtop(void *address) 188unsigned int vtop(void *address)
185{ 189{
186 pgd_t *pgd; 190 pgd_t *pgd;
191 pud_t *pud;
187 pmd_t *pmd; 192 pmd_t *pmd;
188 pte_t *pte; 193 pte_t *pte;
189 unsigned int addr, paddr; 194 unsigned int addr, paddr;
190 195
191 addr = (unsigned long) address; 196 addr = (unsigned long) address;
192 pgd = pgd_offset(current->mm, addr); 197 pgd = pgd_offset(current->mm, addr);
193 pmd = pmd_offset(pgd, addr); 198 pud = pud_offset(pgd, addr);
199 pmd = pmd_offset(pud, addr);
194 pte = pte_offset(pmd, addr); 200 pte = pte_offset(pmd, addr);
195 paddr = (CKSEG1 | (unsigned int) pte_val(*pte)) & PAGE_MASK; 201 paddr = (CKSEG1 | (unsigned int) pte_val(*pte)) & PAGE_MASK;
196 paddr |= (addr & ~PAGE_MASK); 202 paddr |= (addr & ~PAGE_MASK);
diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile
index 037303412909..cf12caf80774 100644
--- a/arch/mips/lib/Makefile
+++ b/arch/mips/lib/Makefile
@@ -2,8 +2,8 @@
2# Makefile for MIPS-specific library files.. 2# Makefile for MIPS-specific library files..
3# 3#
4 4
5lib-y += csum_partial_copy.o memcpy.o promlib.o \ 5lib-y += csum_partial_copy.o memcpy.o promlib.o strlen_user.o strncpy_user.o \
6 strlen_user.o strncpy_user.o strnlen_user.o 6 strnlen_user.o uncached.o
7 7
8obj-y += iomap.o 8obj-y += iomap.o
9 9
diff --git a/arch/mips/lib/csum_partial_copy.c b/arch/mips/lib/csum_partial_copy.c
index ffed0a6a1c16..6e9f366f961d 100644
--- a/arch/mips/lib/csum_partial_copy.c
+++ b/arch/mips/lib/csum_partial_copy.c
@@ -16,8 +16,8 @@
16/* 16/*
17 * copy while checksumming, otherwise like csum_partial 17 * copy while checksumming, otherwise like csum_partial
18 */ 18 */
19unsigned int csum_partial_copy_nocheck(const unsigned char *src, unsigned char *dst, 19unsigned int csum_partial_copy_nocheck(const unsigned char *src,
20 int len, unsigned int sum) 20 unsigned char *dst, int len, unsigned int sum)
21{ 21{
22 /* 22 /*
23 * It's 2:30 am and I don't feel like doing it real ... 23 * It's 2:30 am and I don't feel like doing it real ...
@@ -33,8 +33,8 @@ unsigned int csum_partial_copy_nocheck(const unsigned char *src, unsigned char *
33 * Copy from userspace and compute checksum. If we catch an exception 33 * Copy from userspace and compute checksum. If we catch an exception
34 * then zero the rest of the buffer. 34 * then zero the rest of the buffer.
35 */ 35 */
36unsigned int csum_partial_copy_from_user (const unsigned char *src, unsigned char *dst, 36unsigned int csum_partial_copy_from_user (const unsigned char __user *src,
37 int len, unsigned int sum, int *err_ptr) 37 unsigned char *dst, int len, unsigned int sum, int *err_ptr)
38{ 38{
39 int missing; 39 int missing;
40 40
diff --git a/arch/mips/lib/memcpy.S b/arch/mips/lib/memcpy.S
index a78865f76547..7f9aafa4d80e 100644
--- a/arch/mips/lib/memcpy.S
+++ b/arch/mips/lib/memcpy.S
@@ -13,6 +13,21 @@
13 * Mnemonic names for arguments to memcpy/__copy_user 13 * Mnemonic names for arguments to memcpy/__copy_user
14 */ 14 */
15#include <linux/config.h> 15#include <linux/config.h>
16
17/*
18 * Hack to resolve longstanding prefetch issue
19 *
20 * Prefetching may be fatal on some systems if we're prefetching beyond the
21 * end of memory on some systems. It's also a seriously bad idea on non
22 * dma-coherent systems.
23 */
24#if !defined(CONFIG_DMA_COHERENT) || !defined(CONFIG_DMA_IP27)
25#undef CONFIG_CPU_HAS_PREFETCH
26#endif
27#ifdef CONFIG_MIPS_MALTA
28#undef CONFIG_CPU_HAS_PREFETCH
29#endif
30
16#include <asm/asm.h> 31#include <asm/asm.h>
17#include <asm/asm-offsets.h> 32#include <asm/asm-offsets.h>
18#include <asm/regdef.h> 33#include <asm/regdef.h>
diff --git a/arch/mips/lib/uncached.c b/arch/mips/lib/uncached.c
new file mode 100644
index 000000000000..98ce89f8068b
--- /dev/null
+++ b/arch/mips/lib/uncached.c
@@ -0,0 +1,76 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 2005 Thiemo Seufer
7 * Copyright (C) 2005 MIPS Technologies, Inc. All rights reserved.
8 * Author: Maciej W. Rozycki <macro@mips.com>
9 */
10
11#include <linux/init.h>
12
13#include <asm/addrspace.h>
14#include <asm/bug.h>
15
16#ifndef CKSEG2
17#define CKSEG2 CKSSEG
18#endif
19#ifndef TO_PHYS_MASK
20#define TO_PHYS_MASK -1
21#endif
22
23/*
24 * FUNC is executed in one of the uncached segments, depending on its
25 * original address as follows:
26 *
27 * 1. If the original address is in CKSEG0 or CKSEG1, then the uncached
28 * segment used is CKSEG1.
29 * 2. If the original address is in XKPHYS, then the uncached segment
30 * used is XKPHYS(2).
31 * 3. Otherwise it's a bug.
32 *
33 * The same remapping is done with the stack pointer. Stack handling
34 * works because we don't handle stack arguments or more complex return
35 * values, so we can avoid sharing the same stack area between a cached
36 * and the uncached mode.
37 */
38unsigned long __init run_uncached(void *func)
39{
40 register long sp __asm__("$sp");
41 register long ret __asm__("$2");
42 long lfunc = (long)func, ufunc;
43 long usp;
44
45 if (sp >= (long)CKSEG0 && sp < (long)CKSEG2)
46 usp = CKSEG1ADDR(sp);
47 else if ((long long)sp >= (long long)PHYS_TO_XKPHYS(0LL, 0) &&
48 (long long)sp < (long long)PHYS_TO_XKPHYS(8LL, 0))
49 usp = PHYS_TO_XKPHYS((long long)K_CALG_UNCACHED,
50 XKPHYS_TO_PHYS((long long)sp));
51 else {
52 BUG();
53 usp = sp;
54 }
55 if (lfunc >= (long)CKSEG0 && lfunc < (long)CKSEG2)
56 ufunc = CKSEG1ADDR(lfunc);
57 else if ((long long)lfunc >= (long long)PHYS_TO_XKPHYS(0LL, 0) &&
58 (long long)lfunc < (long long)PHYS_TO_XKPHYS(8LL, 0))
59 ufunc = PHYS_TO_XKPHYS((long long)K_CALG_UNCACHED,
60 XKPHYS_TO_PHYS((long long)lfunc));
61 else {
62 BUG();
63 ufunc = lfunc;
64 }
65
66 __asm__ __volatile__ (
67 " move $16, $sp\n"
68 " move $sp, %1\n"
69 " jalr %2\n"
70 " move $sp, $16"
71 : "=r" (ret)
72 : "r" (usp), "r" (ufunc)
73 : "$16", "$31");
74
75 return ret;
76}
diff --git a/arch/mips/math-emu/cp1emu.c b/arch/mips/math-emu/cp1emu.c
index 99c550632d44..aa5818a0d884 100644
--- a/arch/mips/math-emu/cp1emu.c
+++ b/arch/mips/math-emu/cp1emu.c
@@ -70,7 +70,7 @@ static int fpux_emu(struct pt_regs *,
70 70
71/* Further private data for which no space exists in mips_fpu_soft_struct */ 71/* Further private data for which no space exists in mips_fpu_soft_struct */
72 72
73struct mips_fpu_emulator_private fpuemuprivate; 73struct mips_fpu_emulator_stats fpuemustats;
74 74
75/* Control registers */ 75/* Control registers */
76 76
@@ -79,7 +79,17 @@ struct mips_fpu_emulator_private fpuemuprivate;
79 79
80/* Convert Mips rounding mode (0..3) to IEEE library modes. */ 80/* Convert Mips rounding mode (0..3) to IEEE library modes. */
81static const unsigned char ieee_rm[4] = { 81static const unsigned char ieee_rm[4] = {
82 IEEE754_RN, IEEE754_RZ, IEEE754_RU, IEEE754_RD 82 [FPU_CSR_RN] = IEEE754_RN,
83 [FPU_CSR_RZ] = IEEE754_RZ,
84 [FPU_CSR_RU] = IEEE754_RU,
85 [FPU_CSR_RD] = IEEE754_RD,
86};
87/* Convert IEEE library modes to Mips rounding mode (0..3). */
88static const unsigned char mips_rm[4] = {
89 [IEEE754_RN] = FPU_CSR_RN,
90 [IEEE754_RZ] = FPU_CSR_RZ,
91 [IEEE754_RD] = FPU_CSR_RD,
92 [IEEE754_RU] = FPU_CSR_RU,
83}; 93};
84 94
85#if __mips >= 4 95#if __mips >= 4
@@ -196,11 +206,11 @@ static int isBranchInstr(mips_instruction * i)
196static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx) 206static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx)
197{ 207{
198 mips_instruction ir; 208 mips_instruction ir;
199 vaddr_t emulpc, contpc; 209 void * emulpc, *contpc;
200 unsigned int cond; 210 unsigned int cond;
201 211
202 if (get_user(ir, (mips_instruction *) xcp->cp0_epc)) { 212 if (get_user(ir, (mips_instruction __user *) xcp->cp0_epc)) {
203 fpuemuprivate.stats.errors++; 213 fpuemustats.errors++;
204 return SIGBUS; 214 return SIGBUS;
205 } 215 }
206 216
@@ -221,41 +231,39 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx)
221 * Linux MIPS branch emulator operates on context, updating the 231 * Linux MIPS branch emulator operates on context, updating the
222 * cp0_epc. 232 * cp0_epc.
223 */ 233 */
224 emulpc = REG_TO_VA(xcp->cp0_epc + 4); /* Snapshot emulation target */ 234 emulpc = (void *) (xcp->cp0_epc + 4); /* Snapshot emulation target */
225 235
226 if (__compute_return_epc(xcp)) { 236 if (__compute_return_epc(xcp)) {
227#ifdef CP1DBG 237#ifdef CP1DBG
228 printk("failed to emulate branch at %p\n", 238 printk("failed to emulate branch at %p\n",
229 REG_TO_VA(xcp->cp0_epc)); 239 (void *) (xcp->cp0_epc));
230#endif 240#endif
231 return SIGILL; 241 return SIGILL;
232 } 242 }
233 if (get_user(ir, (mips_instruction *) emulpc)) { 243 if (get_user(ir, (mips_instruction __user *) emulpc)) {
234 fpuemuprivate.stats.errors++; 244 fpuemustats.errors++;
235 return SIGBUS; 245 return SIGBUS;
236 } 246 }
237 /* __compute_return_epc() will have updated cp0_epc */ 247 /* __compute_return_epc() will have updated cp0_epc */
238 contpc = REG_TO_VA xcp->cp0_epc; 248 contpc = (void *) xcp->cp0_epc;
239 /* In order not to confuse ptrace() et al, tweak context */ 249 /* In order not to confuse ptrace() et al, tweak context */
240 xcp->cp0_epc = VA_TO_REG emulpc - 4; 250 xcp->cp0_epc = (unsigned long) emulpc - 4;
241 } 251 } else {
242 else { 252 emulpc = (void *) xcp->cp0_epc;
243 emulpc = REG_TO_VA xcp->cp0_epc; 253 contpc = (void *) (xcp->cp0_epc + 4);
244 contpc = REG_TO_VA(xcp->cp0_epc + 4);
245 } 254 }
246 255
247 emul: 256 emul:
248 fpuemuprivate.stats.emulated++; 257 fpuemustats.emulated++;
249 switch (MIPSInst_OPCODE(ir)) { 258 switch (MIPSInst_OPCODE(ir)) {
250#ifndef SINGLE_ONLY_FPU
251 case ldc1_op:{ 259 case ldc1_op:{
252 u64 *va = REG_TO_VA(xcp->regs[MIPSInst_RS(ir)] + 260 u64 __user *va = (u64 __user *) (xcp->regs[MIPSInst_RS(ir)] +
253 MIPSInst_SIMM(ir)); 261 MIPSInst_SIMM(ir));
254 u64 val; 262 u64 val;
255 263
256 fpuemuprivate.stats.loads++; 264 fpuemustats.loads++;
257 if (get_user(val, va)) { 265 if (get_user(val, va)) {
258 fpuemuprivate.stats.errors++; 266 fpuemustats.errors++;
259 return SIGBUS; 267 return SIGBUS;
260 } 268 }
261 DITOREG(val, MIPSInst_RT(ir)); 269 DITOREG(val, MIPSInst_RT(ir));
@@ -263,55 +271,42 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx)
263 } 271 }
264 272
265 case sdc1_op:{ 273 case sdc1_op:{
266 u64 *va = REG_TO_VA(xcp->regs[MIPSInst_RS(ir)] + 274 u64 __user *va = (u64 __user *) (xcp->regs[MIPSInst_RS(ir)] +
267 MIPSInst_SIMM(ir)); 275 MIPSInst_SIMM(ir));
268 u64 val; 276 u64 val;
269 277
270 fpuemuprivate.stats.stores++; 278 fpuemustats.stores++;
271 DIFROMREG(val, MIPSInst_RT(ir)); 279 DIFROMREG(val, MIPSInst_RT(ir));
272 if (put_user(val, va)) { 280 if (put_user(val, va)) {
273 fpuemuprivate.stats.errors++; 281 fpuemustats.errors++;
274 return SIGBUS; 282 return SIGBUS;
275 } 283 }
276 break; 284 break;
277 } 285 }
278#endif
279 286
280 case lwc1_op:{ 287 case lwc1_op:{
281 u32 *va = REG_TO_VA(xcp->regs[MIPSInst_RS(ir)] + 288 u32 __user *va = (u32 __user *) (xcp->regs[MIPSInst_RS(ir)] +
282 MIPSInst_SIMM(ir)); 289 MIPSInst_SIMM(ir));
283 u32 val; 290 u32 val;
284 291
285 fpuemuprivate.stats.loads++; 292 fpuemustats.loads++;
286 if (get_user(val, va)) { 293 if (get_user(val, va)) {
287 fpuemuprivate.stats.errors++; 294 fpuemustats.errors++;
288 return SIGBUS; 295 return SIGBUS;
289 } 296 }
290#ifdef SINGLE_ONLY_FPU
291 if (MIPSInst_RT(ir) & 1) {
292 /* illegal register in single-float mode */
293 return SIGILL;
294 }
295#endif
296 SITOREG(val, MIPSInst_RT(ir)); 297 SITOREG(val, MIPSInst_RT(ir));
297 break; 298 break;
298 } 299 }
299 300
300 case swc1_op:{ 301 case swc1_op:{
301 u32 *va = REG_TO_VA(xcp->regs[MIPSInst_RS(ir)] + 302 u32 __user *va = (u32 __user *) (xcp->regs[MIPSInst_RS(ir)] +
302 MIPSInst_SIMM(ir)); 303 MIPSInst_SIMM(ir));
303 u32 val; 304 u32 val;
304 305
305 fpuemuprivate.stats.stores++; 306 fpuemustats.stores++;
306#ifdef SINGLE_ONLY_FPU
307 if (MIPSInst_RT(ir) & 1) {
308 /* illegal register in single-float mode */
309 return SIGILL;
310 }
311#endif
312 SIFROMREG(val, MIPSInst_RT(ir)); 307 SIFROMREG(val, MIPSInst_RT(ir));
313 if (put_user(val, va)) { 308 if (put_user(val, va)) {
314 fpuemuprivate.stats.errors++; 309 fpuemustats.errors++;
315 return SIGBUS; 310 return SIGBUS;
316 } 311 }
317 break; 312 break;
@@ -320,7 +315,7 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx)
320 case cop1_op: 315 case cop1_op:
321 switch (MIPSInst_RS(ir)) { 316 switch (MIPSInst_RS(ir)) {
322 317
323#if defined(__mips64) && !defined(SINGLE_ONLY_FPU) 318#if defined(__mips64)
324 case dmfc_op: 319 case dmfc_op:
325 /* copregister fs -> gpr[rt] */ 320 /* copregister fs -> gpr[rt] */
326 if (MIPSInst_RT(ir) != 0) { 321 if (MIPSInst_RT(ir) != 0) {
@@ -337,12 +332,6 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx)
337 332
338 case mfc_op: 333 case mfc_op:
339 /* copregister rd -> gpr[rt] */ 334 /* copregister rd -> gpr[rt] */
340#ifdef SINGLE_ONLY_FPU
341 if (MIPSInst_RD(ir) & 1) {
342 /* illegal register in single-float mode */
343 return SIGILL;
344 }
345#endif
346 if (MIPSInst_RT(ir) != 0) { 335 if (MIPSInst_RT(ir) != 0) {
347 SIFROMREG(xcp->regs[MIPSInst_RT(ir)], 336 SIFROMREG(xcp->regs[MIPSInst_RT(ir)],
348 MIPSInst_RD(ir)); 337 MIPSInst_RD(ir));
@@ -351,12 +340,6 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx)
351 340
352 case mtc_op: 341 case mtc_op:
353 /* copregister rd <- rt */ 342 /* copregister rd <- rt */
354#ifdef SINGLE_ONLY_FPU
355 if (MIPSInst_RD(ir) & 1) {
356 /* illegal register in single-float mode */
357 return SIGILL;
358 }
359#endif
360 SITOREG(xcp->regs[MIPSInst_RT(ir)], MIPSInst_RD(ir)); 343 SITOREG(xcp->regs[MIPSInst_RT(ir)], MIPSInst_RD(ir));
361 break; 344 break;
362 345
@@ -369,9 +352,10 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx)
369 } 352 }
370 if (MIPSInst_RD(ir) == FPCREG_CSR) { 353 if (MIPSInst_RD(ir) == FPCREG_CSR) {
371 value = ctx->fcr31; 354 value = ctx->fcr31;
355 value = (value & ~0x3) | mips_rm[value & 0x3];
372#ifdef CSRTRACE 356#ifdef CSRTRACE
373 printk("%p gpr[%d]<-csr=%08x\n", 357 printk("%p gpr[%d]<-csr=%08x\n",
374 REG_TO_VA(xcp->cp0_epc), 358 (void *) (xcp->cp0_epc),
375 MIPSInst_RT(ir), value); 359 MIPSInst_RT(ir), value);
376#endif 360#endif
377 } 361 }
@@ -398,14 +382,13 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx)
398 if (MIPSInst_RD(ir) == FPCREG_CSR) { 382 if (MIPSInst_RD(ir) == FPCREG_CSR) {
399#ifdef CSRTRACE 383#ifdef CSRTRACE
400 printk("%p gpr[%d]->csr=%08x\n", 384 printk("%p gpr[%d]->csr=%08x\n",
401 REG_TO_VA(xcp->cp0_epc), 385 (void *) (xcp->cp0_epc),
402 MIPSInst_RT(ir), value); 386 MIPSInst_RT(ir), value);
403#endif 387#endif
404 ctx->fcr31 = value; 388 value &= (FPU_CSR_FLUSH | FPU_CSR_ALL_E | FPU_CSR_ALL_S | 0x03);
405 /* copy new rounding mode and 389 ctx->fcr31 &= ~(FPU_CSR_FLUSH | FPU_CSR_ALL_E | FPU_CSR_ALL_S | 0x03);
406 flush bit to ieee library state! */ 390 /* convert to ieee library modes */
407 ieee754_csr.nod = (ctx->fcr31 & 0x1000000) != 0; 391 ctx->fcr31 |= (value & ~0x3) | ieee_rm[value & 0x3];
408 ieee754_csr.rm = ieee_rm[value & 0x3];
409 } 392 }
410 if ((ctx->fcr31 >> 5) & ctx->fcr31 & FPU_CSR_ALL_E) { 393 if ((ctx->fcr31 >> 5) & ctx->fcr31 & FPU_CSR_ALL_E) {
411 return SIGFPE; 394 return SIGFPE;
@@ -445,20 +428,20 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx)
445 * instruction 428 * instruction
446 */ 429 */
447 xcp->cp0_epc += 4; 430 xcp->cp0_epc += 4;
448 contpc = REG_TO_VA 431 contpc = (void *)
449 (xcp->cp0_epc + 432 (xcp->cp0_epc +
450 (MIPSInst_SIMM(ir) << 2)); 433 (MIPSInst_SIMM(ir) << 2));
451 434
452 if (get_user(ir, (mips_instruction *) 435 if (get_user(ir,
453 REG_TO_VA xcp->cp0_epc)) { 436 (mips_instruction __user *) xcp->cp0_epc)) {
454 fpuemuprivate.stats.errors++; 437 fpuemustats.errors++;
455 return SIGBUS; 438 return SIGBUS;
456 } 439 }
457 440
458 switch (MIPSInst_OPCODE(ir)) { 441 switch (MIPSInst_OPCODE(ir)) {
459 case lwc1_op: 442 case lwc1_op:
460 case swc1_op: 443 case swc1_op:
461#if (__mips >= 2 || __mips64) && !defined(SINGLE_ONLY_FPU) 444#if (__mips >= 2 || defined(__mips64))
462 case ldc1_op: 445 case ldc1_op:
463 case sdc1_op: 446 case sdc1_op:
464#endif 447#endif
@@ -480,7 +463,7 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx)
480 * Single step the non-cp1 463 * Single step the non-cp1
481 * instruction in the dslot 464 * instruction in the dslot
482 */ 465 */
483 return mips_dsemul(xcp, ir, VA_TO_REG contpc); 466 return mips_dsemul(xcp, ir, (unsigned long) contpc);
484 } 467 }
485 else { 468 else {
486 /* branch not taken */ 469 /* branch not taken */
@@ -539,8 +522,9 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx)
539 } 522 }
540 523
541 /* we did it !! */ 524 /* we did it !! */
542 xcp->cp0_epc = VA_TO_REG(contpc); 525 xcp->cp0_epc = (unsigned long) contpc;
543 xcp->cp0_cause &= ~CAUSEF_BD; 526 xcp->cp0_cause &= ~CAUSEF_BD;
527
544 return 0; 528 return 0;
545} 529}
546 530
@@ -570,7 +554,7 @@ static const unsigned char cmptab[8] = {
570static ieee754##p fpemu_##p##_##name (ieee754##p r, ieee754##p s, \ 554static ieee754##p fpemu_##p##_##name (ieee754##p r, ieee754##p s, \
571 ieee754##p t) \ 555 ieee754##p t) \
572{ \ 556{ \
573 struct ieee754_csr ieee754_csr_save; \ 557 struct _ieee754_csr ieee754_csr_save; \
574 s = f1 (s, t); \ 558 s = f1 (s, t); \
575 ieee754_csr_save = ieee754_csr; \ 559 ieee754_csr_save = ieee754_csr; \
576 s = f2 (s, r); \ 560 s = f2 (s, r); \
@@ -616,54 +600,38 @@ static int fpux_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
616{ 600{
617 unsigned rcsr = 0; /* resulting csr */ 601 unsigned rcsr = 0; /* resulting csr */
618 602
619 fpuemuprivate.stats.cp1xops++; 603 fpuemustats.cp1xops++;
620 604
621 switch (MIPSInst_FMA_FFMT(ir)) { 605 switch (MIPSInst_FMA_FFMT(ir)) {
622 case s_fmt:{ /* 0 */ 606 case s_fmt:{ /* 0 */
623 607
624 ieee754sp(*handler) (ieee754sp, ieee754sp, ieee754sp); 608 ieee754sp(*handler) (ieee754sp, ieee754sp, ieee754sp);
625 ieee754sp fd, fr, fs, ft; 609 ieee754sp fd, fr, fs, ft;
626 u32 *va; 610 u32 __user *va;
627 u32 val; 611 u32 val;
628 612
629 switch (MIPSInst_FUNC(ir)) { 613 switch (MIPSInst_FUNC(ir)) {
630 case lwxc1_op: 614 case lwxc1_op:
631 va = REG_TO_VA(xcp->regs[MIPSInst_FR(ir)] + 615 va = (void __user *) (xcp->regs[MIPSInst_FR(ir)] +
632 xcp->regs[MIPSInst_FT(ir)]); 616 xcp->regs[MIPSInst_FT(ir)]);
633 617
634 fpuemuprivate.stats.loads++; 618 fpuemustats.loads++;
635 if (get_user(val, va)) { 619 if (get_user(val, va)) {
636 fpuemuprivate.stats.errors++; 620 fpuemustats.errors++;
637 return SIGBUS; 621 return SIGBUS;
638 } 622 }
639#ifdef SINGLE_ONLY_FPU
640 if (MIPSInst_FD(ir) & 1) {
641 /* illegal register in single-float
642 * mode
643 */
644 return SIGILL;
645 }
646#endif
647 SITOREG(val, MIPSInst_FD(ir)); 623 SITOREG(val, MIPSInst_FD(ir));
648 break; 624 break;
649 625
650 case swxc1_op: 626 case swxc1_op:
651 va = REG_TO_VA(xcp->regs[MIPSInst_FR(ir)] + 627 va = (void __user *) (xcp->regs[MIPSInst_FR(ir)] +
652 xcp->regs[MIPSInst_FT(ir)]); 628 xcp->regs[MIPSInst_FT(ir)]);
653 629
654 fpuemuprivate.stats.stores++; 630 fpuemustats.stores++;
655#ifdef SINGLE_ONLY_FPU
656 if (MIPSInst_FS(ir) & 1) {
657 /* illegal register in single-float
658 * mode
659 */
660 return SIGILL;
661 }
662#endif
663 631
664 SIFROMREG(val, MIPSInst_FS(ir)); 632 SIFROMREG(val, MIPSInst_FS(ir));
665 if (put_user(val, va)) { 633 if (put_user(val, va)) {
666 fpuemuprivate.stats.errors++; 634 fpuemustats.errors++;
667 return SIGBUS; 635 return SIGBUS;
668 } 636 }
669 break; 637 break;
@@ -699,8 +667,6 @@ static int fpux_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
699 rcsr |= FPU_CSR_INV_X | FPU_CSR_INV_S; 667 rcsr |= FPU_CSR_INV_X | FPU_CSR_INV_S;
700 668
701 ctx->fcr31 = (ctx->fcr31 & ~FPU_CSR_ALL_X) | rcsr; 669 ctx->fcr31 = (ctx->fcr31 & ~FPU_CSR_ALL_X) | rcsr;
702 if (ieee754_csr.nod)
703 ctx->fcr31 |= 0x1000000;
704 if ((ctx->fcr31 >> 5) & ctx->fcr31 & FPU_CSR_ALL_E) { 670 if ((ctx->fcr31 >> 5) & ctx->fcr31 & FPU_CSR_ALL_E) {
705 /*printk ("SIGFPE: fpu csr = %08x\n", 671 /*printk ("SIGFPE: fpu csr = %08x\n",
706 ctx->fcr31); */ 672 ctx->fcr31); */
@@ -715,34 +681,33 @@ static int fpux_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
715 break; 681 break;
716 } 682 }
717 683
718#ifndef SINGLE_ONLY_FPU
719 case d_fmt:{ /* 1 */ 684 case d_fmt:{ /* 1 */
720 ieee754dp(*handler) (ieee754dp, ieee754dp, ieee754dp); 685 ieee754dp(*handler) (ieee754dp, ieee754dp, ieee754dp);
721 ieee754dp fd, fr, fs, ft; 686 ieee754dp fd, fr, fs, ft;
722 u64 *va; 687 u64 __user *va;
723 u64 val; 688 u64 val;
724 689
725 switch (MIPSInst_FUNC(ir)) { 690 switch (MIPSInst_FUNC(ir)) {
726 case ldxc1_op: 691 case ldxc1_op:
727 va = REG_TO_VA(xcp->regs[MIPSInst_FR(ir)] + 692 va = (void __user *) (xcp->regs[MIPSInst_FR(ir)] +
728 xcp->regs[MIPSInst_FT(ir)]); 693 xcp->regs[MIPSInst_FT(ir)]);
729 694
730 fpuemuprivate.stats.loads++; 695 fpuemustats.loads++;
731 if (get_user(val, va)) { 696 if (get_user(val, va)) {
732 fpuemuprivate.stats.errors++; 697 fpuemustats.errors++;
733 return SIGBUS; 698 return SIGBUS;
734 } 699 }
735 DITOREG(val, MIPSInst_FD(ir)); 700 DITOREG(val, MIPSInst_FD(ir));
736 break; 701 break;
737 702
738 case sdxc1_op: 703 case sdxc1_op:
739 va = REG_TO_VA(xcp->regs[MIPSInst_FR(ir)] + 704 va = (void __user *) (xcp->regs[MIPSInst_FR(ir)] +
740 xcp->regs[MIPSInst_FT(ir)]); 705 xcp->regs[MIPSInst_FT(ir)]);
741 706
742 fpuemuprivate.stats.stores++; 707 fpuemustats.stores++;
743 DIFROMREG(val, MIPSInst_FS(ir)); 708 DIFROMREG(val, MIPSInst_FS(ir));
744 if (put_user(val, va)) { 709 if (put_user(val, va)) {
745 fpuemuprivate.stats.errors++; 710 fpuemustats.errors++;
746 return SIGBUS; 711 return SIGBUS;
747 } 712 }
748 break; 713 break;
@@ -773,7 +738,6 @@ static int fpux_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
773 } 738 }
774 break; 739 break;
775 } 740 }
776#endif
777 741
778 case 0x7: /* 7 */ 742 case 0x7: /* 7 */
779 if (MIPSInst_FUNC(ir) != pfetch_op) { 743 if (MIPSInst_FUNC(ir) != pfetch_op) {
@@ -810,7 +774,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
810#endif 774#endif
811 } rv; /* resulting value */ 775 } rv; /* resulting value */
812 776
813 fpuemuprivate.stats.cp1ops++; 777 fpuemustats.cp1ops++;
814 switch (rfmt = (MIPSInst_FFMT(ir) & 0xf)) { 778 switch (rfmt = (MIPSInst_FFMT(ir) & 0xf)) {
815 case s_fmt:{ /* 0 */ 779 case s_fmt:{ /* 0 */
816 union { 780 union {
@@ -834,7 +798,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
834 goto scopbop; 798 goto scopbop;
835 799
836 /* unary ops */ 800 /* unary ops */
837#if __mips >= 2 || __mips64 801#if __mips >= 2 || defined(__mips64)
838 case fsqrt_op: 802 case fsqrt_op:
839 handler.u = ieee754sp_sqrt; 803 handler.u = ieee754sp_sqrt;
840 goto scopuop; 804 goto scopuop;
@@ -913,9 +877,6 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
913 case fcvts_op: 877 case fcvts_op:
914 return SIGILL; /* not defined */ 878 return SIGILL; /* not defined */
915 case fcvtd_op:{ 879 case fcvtd_op:{
916#ifdef SINGLE_ONLY_FPU
917 return SIGILL; /* not defined */
918#else
919 ieee754sp fs; 880 ieee754sp fs;
920 881
921 SPFROMREG(fs, MIPSInst_FS(ir)); 882 SPFROMREG(fs, MIPSInst_FS(ir));
@@ -923,7 +884,6 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
923 rfmt = d_fmt; 884 rfmt = d_fmt;
924 goto copcsr; 885 goto copcsr;
925 } 886 }
926#endif
927 case fcvtw_op:{ 887 case fcvtw_op:{
928 ieee754sp fs; 888 ieee754sp fs;
929 889
@@ -933,7 +893,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
933 goto copcsr; 893 goto copcsr;
934 } 894 }
935 895
936#if __mips >= 2 || __mips64 896#if __mips >= 2 || defined(__mips64)
937 case fround_op: 897 case fround_op:
938 case ftrunc_op: 898 case ftrunc_op:
939 case fceil_op: 899 case fceil_op:
@@ -950,7 +910,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
950 } 910 }
951#endif /* __mips >= 2 */ 911#endif /* __mips >= 2 */
952 912
953#if defined(__mips64) && !defined(SINGLE_ONLY_FPU) 913#if defined(__mips64)
954 case fcvtl_op:{ 914 case fcvtl_op:{
955 ieee754sp fs; 915 ieee754sp fs;
956 916
@@ -974,7 +934,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
974 rfmt = l_fmt; 934 rfmt = l_fmt;
975 goto copcsr; 935 goto copcsr;
976 } 936 }
977#endif /* __mips64 && !fpu(single) */ 937#endif /* defined(__mips64) */
978 938
979 default: 939 default:
980 if (MIPSInst_FUNC(ir) >= fcmp_op) { 940 if (MIPSInst_FUNC(ir) >= fcmp_op) {
@@ -1001,7 +961,6 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
1001 break; 961 break;
1002 } 962 }
1003 963
1004#ifndef SINGLE_ONLY_FPU
1005 case d_fmt:{ 964 case d_fmt:{
1006 union { 965 union {
1007 ieee754dp(*b) (ieee754dp, ieee754dp); 966 ieee754dp(*b) (ieee754dp, ieee754dp);
@@ -1024,7 +983,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
1024 goto dcopbop; 983 goto dcopbop;
1025 984
1026 /* unary ops */ 985 /* unary ops */
1027#if __mips >= 2 || __mips64 986#if __mips >= 2 || defined(__mips64)
1028 case fsqrt_op: 987 case fsqrt_op:
1029 handler.u = ieee754dp_sqrt; 988 handler.u = ieee754dp_sqrt;
1030 goto dcopuop; 989 goto dcopuop;
@@ -1108,7 +1067,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
1108 goto copcsr; 1067 goto copcsr;
1109 } 1068 }
1110 1069
1111#if __mips >= 2 || __mips64 1070#if __mips >= 2 || defined(__mips64)
1112 case fround_op: 1071 case fround_op:
1113 case ftrunc_op: 1072 case ftrunc_op:
1114 case fceil_op: 1073 case fceil_op:
@@ -1125,7 +1084,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
1125 } 1084 }
1126#endif 1085#endif
1127 1086
1128#if defined(__mips64) && !defined(SINGLE_ONLY_FPU) 1087#if defined(__mips64)
1129 case fcvtl_op:{ 1088 case fcvtl_op:{
1130 ieee754dp fs; 1089 ieee754dp fs;
1131 1090
@@ -1149,7 +1108,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
1149 rfmt = l_fmt; 1108 rfmt = l_fmt;
1150 goto copcsr; 1109 goto copcsr;
1151 } 1110 }
1152#endif /* __mips >= 3 && !fpu(single) */ 1111#endif /* __mips >= 3 */
1153 1112
1154 default: 1113 default:
1155 if (MIPSInst_FUNC(ir) >= fcmp_op) { 1114 if (MIPSInst_FUNC(ir) >= fcmp_op) {
@@ -1177,7 +1136,6 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
1177 } 1136 }
1178 break; 1137 break;
1179 } 1138 }
1180#endif /* ifndef SINGLE_ONLY_FPU */
1181 1139
1182 case w_fmt:{ 1140 case w_fmt:{
1183 ieee754sp fs; 1141 ieee754sp fs;
@@ -1189,21 +1147,19 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
1189 rv.s = ieee754sp_fint(fs.bits); 1147 rv.s = ieee754sp_fint(fs.bits);
1190 rfmt = s_fmt; 1148 rfmt = s_fmt;
1191 goto copcsr; 1149 goto copcsr;
1192#ifndef SINGLE_ONLY_FPU
1193 case fcvtd_op: 1150 case fcvtd_op:
1194 /* convert word to double precision real */ 1151 /* convert word to double precision real */
1195 SPFROMREG(fs, MIPSInst_FS(ir)); 1152 SPFROMREG(fs, MIPSInst_FS(ir));
1196 rv.d = ieee754dp_fint(fs.bits); 1153 rv.d = ieee754dp_fint(fs.bits);
1197 rfmt = d_fmt; 1154 rfmt = d_fmt;
1198 goto copcsr; 1155 goto copcsr;
1199#endif
1200 default: 1156 default:
1201 return SIGILL; 1157 return SIGILL;
1202 } 1158 }
1203 break; 1159 break;
1204 } 1160 }
1205 1161
1206#if defined(__mips64) && !defined(SINGLE_ONLY_FPU) 1162#if defined(__mips64)
1207 case l_fmt:{ 1163 case l_fmt:{
1208 switch (MIPSInst_FUNC(ir)) { 1164 switch (MIPSInst_FUNC(ir)) {
1209 case fcvts_op: 1165 case fcvts_op:
@@ -1256,18 +1212,16 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
1256 ctx->fcr31 &= ~cond; 1212 ctx->fcr31 &= ~cond;
1257 break; 1213 break;
1258 } 1214 }
1259#ifndef SINGLE_ONLY_FPU
1260 case d_fmt: 1215 case d_fmt:
1261 DPTOREG(rv.d, MIPSInst_FD(ir)); 1216 DPTOREG(rv.d, MIPSInst_FD(ir));
1262 break; 1217 break;
1263#endif
1264 case s_fmt: 1218 case s_fmt:
1265 SPTOREG(rv.s, MIPSInst_FD(ir)); 1219 SPTOREG(rv.s, MIPSInst_FD(ir));
1266 break; 1220 break;
1267 case w_fmt: 1221 case w_fmt:
1268 SITOREG(rv.w, MIPSInst_FD(ir)); 1222 SITOREG(rv.w, MIPSInst_FD(ir));
1269 break; 1223 break;
1270#if defined(__mips64) && !defined(SINGLE_ONLY_FPU) 1224#if defined(__mips64)
1271 case l_fmt: 1225 case l_fmt:
1272 DITOREG(rv.l, MIPSInst_FD(ir)); 1226 DITOREG(rv.l, MIPSInst_FD(ir));
1273 break; 1227 break;
@@ -1279,10 +1233,10 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx,
1279 return 0; 1233 return 0;
1280} 1234}
1281 1235
1282int fpu_emulator_cop1Handler(int xcptno, struct pt_regs *xcp, 1236int fpu_emulator_cop1Handler(struct pt_regs *xcp,
1283 struct mips_fpu_soft_struct *ctx) 1237 struct mips_fpu_soft_struct *ctx)
1284{ 1238{
1285 gpreg_t oldepc, prevepc; 1239 unsigned long oldepc, prevepc;
1286 mips_instruction insn; 1240 mips_instruction insn;
1287 int sig = 0; 1241 int sig = 0;
1288 1242
@@ -1290,19 +1244,24 @@ int fpu_emulator_cop1Handler(int xcptno, struct pt_regs *xcp,
1290 do { 1244 do {
1291 prevepc = xcp->cp0_epc; 1245 prevepc = xcp->cp0_epc;
1292 1246
1293 if (get_user(insn, (mips_instruction *) xcp->cp0_epc)) { 1247 if (get_user(insn, (mips_instruction __user *) xcp->cp0_epc)) {
1294 fpuemuprivate.stats.errors++; 1248 fpuemustats.errors++;
1295 return SIGBUS; 1249 return SIGBUS;
1296 } 1250 }
1297 if (insn == 0) 1251 if (insn == 0)
1298 xcp->cp0_epc += 4; /* skip nops */ 1252 xcp->cp0_epc += 4; /* skip nops */
1299 else { 1253 else {
1300 /* Update ieee754_csr. Only relevant if we have a 1254 /*
1301 h/w FPU */ 1255 * The 'ieee754_csr' is an alias of
1302 ieee754_csr.nod = (ctx->fcr31 & 0x1000000) != 0; 1256 * ctx->fcr31. No need to copy ctx->fcr31 to
1303 ieee754_csr.rm = ieee_rm[ctx->fcr31 & 0x3]; 1257 * ieee754_csr. But ieee754_csr.rm is ieee
1304 ieee754_csr.cx = (ctx->fcr31 >> 12) & 0x1f; 1258 * library modes. (not mips rounding mode)
1259 */
1260 /* convert to ieee library modes */
1261 ieee754_csr.rm = ieee_rm[ieee754_csr.rm];
1305 sig = cop1Emulate(xcp, ctx); 1262 sig = cop1Emulate(xcp, ctx);
1263 /* revert to mips rounding mode */
1264 ieee754_csr.rm = mips_rm[ieee754_csr.rm];
1306 } 1265 }
1307 1266
1308 if (cpu_has_fpu) 1267 if (cpu_has_fpu)
diff --git a/arch/mips/math-emu/dp_sqrt.c b/arch/mips/math-emu/dp_sqrt.c
index c35e871ae975..032328c49888 100644
--- a/arch/mips/math-emu/dp_sqrt.c
+++ b/arch/mips/math-emu/dp_sqrt.c
@@ -37,7 +37,7 @@ static const unsigned table[] = {
37 37
38ieee754dp ieee754dp_sqrt(ieee754dp x) 38ieee754dp ieee754dp_sqrt(ieee754dp x)
39{ 39{
40 struct ieee754_csr oldcsr; 40 struct _ieee754_csr oldcsr;
41 ieee754dp y, z, t; 41 ieee754dp y, z, t;
42 unsigned scalx, yh; 42 unsigned scalx, yh;
43 COMPXDP; 43 COMPXDP;
diff --git a/arch/mips/math-emu/dsemul.c b/arch/mips/math-emu/dsemul.c
index aa989c2246da..8079f3d1eca0 100644
--- a/arch/mips/math-emu/dsemul.c
+++ b/arch/mips/math-emu/dsemul.c
@@ -28,9 +28,6 @@
28#endif 28#endif
29#define __mips 4 29#define __mips 4
30 30
31extern struct mips_fpu_emulator_private fpuemuprivate;
32
33
34/* 31/*
35 * Emulate the arbritrary instruction ir at xcp->cp0_epc. Required when 32 * Emulate the arbritrary instruction ir at xcp->cp0_epc. Required when
36 * we have to emulate the instruction in a COP1 branch delay slot. Do 33 * we have to emulate the instruction in a COP1 branch delay slot. Do
@@ -52,10 +49,10 @@ struct emuframe {
52 mips_instruction emul; 49 mips_instruction emul;
53 mips_instruction badinst; 50 mips_instruction badinst;
54 mips_instruction cookie; 51 mips_instruction cookie;
55 gpreg_t epc; 52 unsigned long epc;
56}; 53};
57 54
58int mips_dsemul(struct pt_regs *regs, mips_instruction ir, gpreg_t cpc) 55int mips_dsemul(struct pt_regs *regs, mips_instruction ir, unsigned long cpc)
59{ 56{
60 extern asmlinkage void handle_dsemulret(void); 57 extern asmlinkage void handle_dsemulret(void);
61 mips_instruction *dsemul_insns; 58 mips_instruction *dsemul_insns;
@@ -91,7 +88,7 @@ int mips_dsemul(struct pt_regs *regs, mips_instruction ir, gpreg_t cpc)
91 */ 88 */
92 89
93 /* Ensure that the two instructions are in the same cache line */ 90 /* Ensure that the two instructions are in the same cache line */
94 dsemul_insns = (mips_instruction *) REG_TO_VA ((regs->regs[29] - sizeof(struct emuframe)) & ~0x7); 91 dsemul_insns = (mips_instruction *) ((regs->regs[29] - sizeof(struct emuframe)) & ~0x7);
95 fr = (struct emuframe *) dsemul_insns; 92 fr = (struct emuframe *) dsemul_insns;
96 93
97 /* Verify that the stack pointer is not competely insane */ 94 /* Verify that the stack pointer is not competely insane */
@@ -104,11 +101,11 @@ int mips_dsemul(struct pt_regs *regs, mips_instruction ir, gpreg_t cpc)
104 err |= __put_user(cpc, &fr->epc); 101 err |= __put_user(cpc, &fr->epc);
105 102
106 if (unlikely(err)) { 103 if (unlikely(err)) {
107 fpuemuprivate.stats.errors++; 104 fpuemustats.errors++;
108 return SIGBUS; 105 return SIGBUS;
109 } 106 }
110 107
111 regs->cp0_epc = VA_TO_REG & fr->emul; 108 regs->cp0_epc = (unsigned long) &fr->emul;
112 109
113 flush_cache_sigtramp((unsigned long)&fr->badinst); 110 flush_cache_sigtramp((unsigned long)&fr->badinst);
114 111
@@ -118,7 +115,7 @@ int mips_dsemul(struct pt_regs *regs, mips_instruction ir, gpreg_t cpc)
118int do_dsemulret(struct pt_regs *xcp) 115int do_dsemulret(struct pt_regs *xcp)
119{ 116{
120 struct emuframe *fr; 117 struct emuframe *fr;
121 gpreg_t epc; 118 unsigned long epc;
122 u32 insn, cookie; 119 u32 insn, cookie;
123 int err = 0; 120 int err = 0;
124 121
@@ -141,7 +138,7 @@ int do_dsemulret(struct pt_regs *xcp)
141 err |= __get_user(cookie, &fr->cookie); 138 err |= __get_user(cookie, &fr->cookie);
142 139
143 if (unlikely(err || (insn != BADINST) || (cookie != BD_COOKIE))) { 140 if (unlikely(err || (insn != BADINST) || (cookie != BD_COOKIE))) {
144 fpuemuprivate.stats.errors++; 141 fpuemustats.errors++;
145 return 0; 142 return 0;
146 } 143 }
147 144
diff --git a/arch/mips/math-emu/dsemul.h b/arch/mips/math-emu/dsemul.h
index dbd85f95268d..091f0e76730f 100644
--- a/arch/mips/math-emu/dsemul.h
+++ b/arch/mips/math-emu/dsemul.h
@@ -1,11 +1,5 @@
1typedef long gpreg_t; 1extern int mips_dsemul(struct pt_regs *regs, mips_instruction ir, unsigned long cpc);
2typedef void *vaddr_t; 2extern int do_dsemulret(struct pt_regs *xcp);
3
4#define REG_TO_VA (vaddr_t)
5#define VA_TO_REG (gpreg_t)
6
7int mips_dsemul(struct pt_regs *regs, mips_instruction ir, gpreg_t cpc);
8int do_dsemulret(struct pt_regs *xcp);
9 3
10/* Instruction which will always cause an address error */ 4/* Instruction which will always cause an address error */
11#define AdELOAD 0x8c000001 /* lw $0,1($0) */ 5#define AdELOAD 0x8c000001 /* lw $0,1($0) */
diff --git a/arch/mips/math-emu/ieee754.c b/arch/mips/math-emu/ieee754.c
index f0a364adbf34..a93c45dbdefd 100644
--- a/arch/mips/math-emu/ieee754.c
+++ b/arch/mips/math-emu/ieee754.c
@@ -31,6 +31,8 @@
31 31
32 32
33#include "ieee754int.h" 33#include "ieee754int.h"
34#include "ieee754sp.h"
35#include "ieee754dp.h"
34 36
35#define DP_EBIAS 1023 37#define DP_EBIAS 1023
36#define DP_EMIN (-1022) 38#define DP_EMIN (-1022)
@@ -40,20 +42,6 @@
40#define SP_EMIN (-126) 42#define SP_EMIN (-126)
41#define SP_EMAX 127 43#define SP_EMAX 127
42 44
43/* indexed by class */
44const char *const ieee754_cname[] = {
45 "Normal",
46 "Zero",
47 "Denormal",
48 "Infinity",
49 "QNaN",
50 "SNaN",
51};
52
53/* the control status register
54*/
55struct ieee754_csr ieee754_csr;
56
57/* special constants 45/* special constants
58*/ 46*/
59 47
diff --git a/arch/mips/math-emu/ieee754.h b/arch/mips/math-emu/ieee754.h
index b8772f46972d..171f177c0f88 100644
--- a/arch/mips/math-emu/ieee754.h
+++ b/arch/mips/math-emu/ieee754.h
@@ -1,13 +1,8 @@
1/* single and double precision fp ops
2 * missing extended precision.
3*/
4/* 1/*
5 * MIPS floating point support 2 * MIPS floating point support
6 * Copyright (C) 1994-2000 Algorithmics Ltd. 3 * Copyright (C) 1994-2000 Algorithmics Ltd.
7 * http://www.algor.co.uk 4 * http://www.algor.co.uk
8 * 5 *
9 * ########################################################################
10 *
11 * This program is free software; you can distribute it and/or modify it 6 * This program is free software; you can distribute it and/or modify it
12 * under the terms of the GNU General Public License (Version 2) as 7 * under the terms of the GNU General Public License (Version 2) as
13 * published by the Free Software Foundation. 8 * published by the Free Software Foundation.
@@ -21,20 +16,18 @@
21 * with this program; if not, write to the Free Software Foundation, Inc., 16 * with this program; if not, write to the Free Software Foundation, Inc.,
22 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. 17 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
23 * 18 *
24 * ########################################################################
25 */
26
27/**************************************************************************
28 * Nov 7, 2000 19 * Nov 7, 2000
29 * Modification to allow integration with Linux kernel 20 * Modification to allow integration with Linux kernel
30 * 21 *
31 * Kevin D. Kissell, kevink@mips.com and Carsten Langgard, carstenl@mips.com 22 * Kevin D. Kissell, kevink@mips.com and Carsten Langgard, carstenl@mips.com
32 * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved. 23 * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved.
33 *************************************************************************/ 24 */
25#ifndef __ARCH_MIPS_MATH_EMU_IEEE754_H
26#define __ARCH_MIPS_MATH_EMU_IEEE754_H
34 27
35#ifdef __KERNEL__ 28#include <asm/byteorder.h>
36/* Going from Algorithmics to Linux native environment, add this */
37#include <linux/types.h> 29#include <linux/types.h>
30#include <linux/sched.h>
38 31
39/* 32/*
40 * Not very pretty, but the Linux kernel's normal va_list definition 33 * Not very pretty, but the Linux kernel's normal va_list definition
@@ -44,18 +37,7 @@
44#include <stdarg.h> 37#include <stdarg.h>
45#endif 38#endif
46 39
47#else 40#ifdef __LITTLE_ENDIAN
48
49/* Note that __KERNEL__ is taken to mean Linux kernel */
50
51#if #system(OpenBSD)
52#include <machine/types.h>
53#endif
54#include <machine/endian.h>
55
56#endif /* __KERNEL__ */
57
58#if (defined(BYTE_ORDER) && BYTE_ORDER == LITTLE_ENDIAN) || defined(__MIPSEL__)
59struct ieee754dp_konst { 41struct ieee754dp_konst {
60 unsigned mantlo:32; 42 unsigned mantlo:32;
61 unsigned manthi:20; 43 unsigned manthi:20;
@@ -86,13 +68,14 @@ typedef union _ieee754sp {
86} ieee754sp; 68} ieee754sp;
87#endif 69#endif
88 70
89#if (defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN) || defined(__MIPSEB__) 71#ifdef __BIG_ENDIAN
90struct ieee754dp_konst { 72struct ieee754dp_konst {
91 unsigned sign:1; 73 unsigned sign:1;
92 unsigned bexp:11; 74 unsigned bexp:11;
93 unsigned manthi:20; 75 unsigned manthi:20;
94 unsigned mantlo:32; 76 unsigned mantlo:32;
95}; 77};
78
96typedef union _ieee754dp { 79typedef union _ieee754dp {
97 struct ieee754dp_konst oparts; 80 struct ieee754dp_konst oparts;
98 struct { 81 struct {
@@ -222,7 +205,6 @@ ieee754dp ieee754dp_sqrt(ieee754dp x);
222#define IEEE754_CLASS_INF 0x03 205#define IEEE754_CLASS_INF 0x03
223#define IEEE754_CLASS_SNAN 0x04 206#define IEEE754_CLASS_SNAN 0x04
224#define IEEE754_CLASS_QNAN 0x05 207#define IEEE754_CLASS_QNAN 0x05
225extern const char *const ieee754_cname[];
226 208
227/* exception numbers */ 209/* exception numbers */
228#define IEEE754_INEXACT 0x01 210#define IEEE754_INEXACT 0x01
@@ -251,93 +233,109 @@ extern const char *const ieee754_cname[];
251 233
252/* "normal" comparisons 234/* "normal" comparisons
253*/ 235*/
254static __inline int ieee754sp_eq(ieee754sp x, ieee754sp y) 236static inline int ieee754sp_eq(ieee754sp x, ieee754sp y)
255{ 237{
256 return ieee754sp_cmp(x, y, IEEE754_CEQ, 0); 238 return ieee754sp_cmp(x, y, IEEE754_CEQ, 0);
257} 239}
258 240
259static __inline int ieee754sp_ne(ieee754sp x, ieee754sp y) 241static inline int ieee754sp_ne(ieee754sp x, ieee754sp y)
260{ 242{
261 return ieee754sp_cmp(x, y, 243 return ieee754sp_cmp(x, y,
262 IEEE754_CLT | IEEE754_CGT | IEEE754_CUN, 0); 244 IEEE754_CLT | IEEE754_CGT | IEEE754_CUN, 0);
263} 245}
264 246
265static __inline int ieee754sp_lt(ieee754sp x, ieee754sp y) 247static inline int ieee754sp_lt(ieee754sp x, ieee754sp y)
266{ 248{
267 return ieee754sp_cmp(x, y, IEEE754_CLT, 0); 249 return ieee754sp_cmp(x, y, IEEE754_CLT, 0);
268} 250}
269 251
270static __inline int ieee754sp_le(ieee754sp x, ieee754sp y) 252static inline int ieee754sp_le(ieee754sp x, ieee754sp y)
271{ 253{
272 return ieee754sp_cmp(x, y, IEEE754_CLT | IEEE754_CEQ, 0); 254 return ieee754sp_cmp(x, y, IEEE754_CLT | IEEE754_CEQ, 0);
273} 255}
274 256
275static __inline int ieee754sp_gt(ieee754sp x, ieee754sp y) 257static inline int ieee754sp_gt(ieee754sp x, ieee754sp y)
276{ 258{
277 return ieee754sp_cmp(x, y, IEEE754_CGT, 0); 259 return ieee754sp_cmp(x, y, IEEE754_CGT, 0);
278} 260}
279 261
280 262
281static __inline int ieee754sp_ge(ieee754sp x, ieee754sp y) 263static inline int ieee754sp_ge(ieee754sp x, ieee754sp y)
282{ 264{
283 return ieee754sp_cmp(x, y, IEEE754_CGT | IEEE754_CEQ, 0); 265 return ieee754sp_cmp(x, y, IEEE754_CGT | IEEE754_CEQ, 0);
284} 266}
285 267
286static __inline int ieee754dp_eq(ieee754dp x, ieee754dp y) 268static inline int ieee754dp_eq(ieee754dp x, ieee754dp y)
287{ 269{
288 return ieee754dp_cmp(x, y, IEEE754_CEQ, 0); 270 return ieee754dp_cmp(x, y, IEEE754_CEQ, 0);
289} 271}
290 272
291static __inline int ieee754dp_ne(ieee754dp x, ieee754dp y) 273static inline int ieee754dp_ne(ieee754dp x, ieee754dp y)
292{ 274{
293 return ieee754dp_cmp(x, y, 275 return ieee754dp_cmp(x, y,
294 IEEE754_CLT | IEEE754_CGT | IEEE754_CUN, 0); 276 IEEE754_CLT | IEEE754_CGT | IEEE754_CUN, 0);
295} 277}
296 278
297static __inline int ieee754dp_lt(ieee754dp x, ieee754dp y) 279static inline int ieee754dp_lt(ieee754dp x, ieee754dp y)
298{ 280{
299 return ieee754dp_cmp(x, y, IEEE754_CLT, 0); 281 return ieee754dp_cmp(x, y, IEEE754_CLT, 0);
300} 282}
301 283
302static __inline int ieee754dp_le(ieee754dp x, ieee754dp y) 284static inline int ieee754dp_le(ieee754dp x, ieee754dp y)
303{ 285{
304 return ieee754dp_cmp(x, y, IEEE754_CLT | IEEE754_CEQ, 0); 286 return ieee754dp_cmp(x, y, IEEE754_CLT | IEEE754_CEQ, 0);
305} 287}
306 288
307static __inline int ieee754dp_gt(ieee754dp x, ieee754dp y) 289static inline int ieee754dp_gt(ieee754dp x, ieee754dp y)
308{ 290{
309 return ieee754dp_cmp(x, y, IEEE754_CGT, 0); 291 return ieee754dp_cmp(x, y, IEEE754_CGT, 0);
310} 292}
311 293
312static __inline int ieee754dp_ge(ieee754dp x, ieee754dp y) 294static inline int ieee754dp_ge(ieee754dp x, ieee754dp y)
313{ 295{
314 return ieee754dp_cmp(x, y, IEEE754_CGT | IEEE754_CEQ, 0); 296 return ieee754dp_cmp(x, y, IEEE754_CGT | IEEE754_CEQ, 0);
315} 297}
316 298
317 299
318/* like strtod 300/*
319*/ 301 * Like strtod
302 */
320ieee754dp ieee754dp_fstr(const char *s, char **endp); 303ieee754dp ieee754dp_fstr(const char *s, char **endp);
321char *ieee754dp_tstr(ieee754dp x, int prec, int fmt, int af); 304char *ieee754dp_tstr(ieee754dp x, int prec, int fmt, int af);
322 305
323 306
324/* the control status register 307/*
325*/ 308 * The control status register
326struct ieee754_csr { 309 */
327 unsigned pad:13; 310struct _ieee754_csr {
311#ifdef __BIG_ENDIAN
312 unsigned pad0:7;
328 unsigned nod:1; /* set 1 for no denormalised numbers */ 313 unsigned nod:1; /* set 1 for no denormalised numbers */
329 unsigned cx:5; /* exceptions this operation */ 314 unsigned c:1; /* condition */
315 unsigned pad1:5;
316 unsigned cx:6; /* exceptions this operation */
330 unsigned mx:5; /* exception enable mask */ 317 unsigned mx:5; /* exception enable mask */
331 unsigned sx:5; /* exceptions total */ 318 unsigned sx:5; /* exceptions total */
332 unsigned rm:2; /* current rounding mode */ 319 unsigned rm:2; /* current rounding mode */
320#endif
321#ifdef __LITTLE_ENDIAN
322 unsigned rm:2; /* current rounding mode */
323 unsigned sx:5; /* exceptions total */
324 unsigned mx:5; /* exception enable mask */
325 unsigned cx:6; /* exceptions this operation */
326 unsigned pad1:5;
327 unsigned c:1; /* condition */
328 unsigned nod:1; /* set 1 for no denormalised numbers */
329 unsigned pad0:7;
330#endif
333}; 331};
334extern struct ieee754_csr ieee754_csr; 332#define ieee754_csr (*(struct _ieee754_csr *)(&current->thread.fpu.soft.fcr31))
335 333
336static __inline unsigned ieee754_getrm(void) 334static inline unsigned ieee754_getrm(void)
337{ 335{
338 return (ieee754_csr.rm); 336 return (ieee754_csr.rm);
339} 337}
340static __inline unsigned ieee754_setrm(unsigned rm) 338static inline unsigned ieee754_setrm(unsigned rm)
341{ 339{
342 return (ieee754_csr.rm = rm); 340 return (ieee754_csr.rm = rm);
343} 341}
@@ -345,14 +343,14 @@ static __inline unsigned ieee754_setrm(unsigned rm)
345/* 343/*
346 * get current exceptions 344 * get current exceptions
347 */ 345 */
348static __inline unsigned ieee754_getcx(void) 346static inline unsigned ieee754_getcx(void)
349{ 347{
350 return (ieee754_csr.cx); 348 return (ieee754_csr.cx);
351} 349}
352 350
353/* test for current exception condition 351/* test for current exception condition
354 */ 352 */
355static __inline int ieee754_cxtest(unsigned n) 353static inline int ieee754_cxtest(unsigned n)
356{ 354{
357 return (ieee754_csr.cx & n); 355 return (ieee754_csr.cx & n);
358} 356}
@@ -360,21 +358,21 @@ static __inline int ieee754_cxtest(unsigned n)
360/* 358/*
361 * get sticky exceptions 359 * get sticky exceptions
362 */ 360 */
363static __inline unsigned ieee754_getsx(void) 361static inline unsigned ieee754_getsx(void)
364{ 362{
365 return (ieee754_csr.sx); 363 return (ieee754_csr.sx);
366} 364}
367 365
368/* clear sticky conditions 366/* clear sticky conditions
369*/ 367*/
370static __inline unsigned ieee754_clrsx(void) 368static inline unsigned ieee754_clrsx(void)
371{ 369{
372 return (ieee754_csr.sx = 0); 370 return (ieee754_csr.sx = 0);
373} 371}
374 372
375/* test for sticky exception condition 373/* test for sticky exception condition
376 */ 374 */
377static __inline int ieee754_sxtest(unsigned n) 375static inline int ieee754_sxtest(unsigned n)
378{ 376{
379 return (ieee754_csr.sx & n); 377 return (ieee754_csr.sx & n);
380} 378}
@@ -406,52 +404,34 @@ extern const struct ieee754sp_konst __ieee754sp_spcvals[];
406#define ieee754dp_spcvals ((const ieee754dp *)__ieee754dp_spcvals) 404#define ieee754dp_spcvals ((const ieee754dp *)__ieee754dp_spcvals)
407#define ieee754sp_spcvals ((const ieee754sp *)__ieee754sp_spcvals) 405#define ieee754sp_spcvals ((const ieee754sp *)__ieee754sp_spcvals)
408 406
409/* return infinity with given sign 407/*
410*/ 408 * Return infinity with given sign
411#define ieee754dp_inf(sn) \ 409 */
412 (ieee754dp_spcvals[IEEE754_SPCVAL_PINFINITY+(sn)]) 410#define ieee754dp_inf(sn) (ieee754dp_spcvals[IEEE754_SPCVAL_PINFINITY+(sn)])
413#define ieee754dp_zero(sn) \ 411#define ieee754dp_zero(sn) (ieee754dp_spcvals[IEEE754_SPCVAL_PZERO+(sn)])
414 (ieee754dp_spcvals[IEEE754_SPCVAL_PZERO+(sn)]) 412#define ieee754dp_one(sn) (ieee754dp_spcvals[IEEE754_SPCVAL_PONE+(sn)])
415#define ieee754dp_one(sn) \ 413#define ieee754dp_ten(sn) (ieee754dp_spcvals[IEEE754_SPCVAL_PTEN+(sn)])
416 (ieee754dp_spcvals[IEEE754_SPCVAL_PONE+(sn)]) 414#define ieee754dp_indef() (ieee754dp_spcvals[IEEE754_SPCVAL_INDEF])
417#define ieee754dp_ten(sn) \ 415#define ieee754dp_max(sn) (ieee754dp_spcvals[IEEE754_SPCVAL_PMAX+(sn)])
418 (ieee754dp_spcvals[IEEE754_SPCVAL_PTEN+(sn)]) 416#define ieee754dp_min(sn) (ieee754dp_spcvals[IEEE754_SPCVAL_PMIN+(sn)])
419#define ieee754dp_indef() \ 417#define ieee754dp_mind(sn) (ieee754dp_spcvals[IEEE754_SPCVAL_PMIND+(sn)])
420 (ieee754dp_spcvals[IEEE754_SPCVAL_INDEF]) 418#define ieee754dp_1e31() (ieee754dp_spcvals[IEEE754_SPCVAL_P1E31])
421#define ieee754dp_max(sn) \ 419#define ieee754dp_1e63() (ieee754dp_spcvals[IEEE754_SPCVAL_P1E63])
422 (ieee754dp_spcvals[IEEE754_SPCVAL_PMAX+(sn)]) 420
423#define ieee754dp_min(sn) \ 421#define ieee754sp_inf(sn) (ieee754sp_spcvals[IEEE754_SPCVAL_PINFINITY+(sn)])
424 (ieee754dp_spcvals[IEEE754_SPCVAL_PMIN+(sn)]) 422#define ieee754sp_zero(sn) (ieee754sp_spcvals[IEEE754_SPCVAL_PZERO+(sn)])
425#define ieee754dp_mind(sn) \ 423#define ieee754sp_one(sn) (ieee754sp_spcvals[IEEE754_SPCVAL_PONE+(sn)])
426 (ieee754dp_spcvals[IEEE754_SPCVAL_PMIND+(sn)]) 424#define ieee754sp_ten(sn) (ieee754sp_spcvals[IEEE754_SPCVAL_PTEN+(sn)])
427#define ieee754dp_1e31() \ 425#define ieee754sp_indef() (ieee754sp_spcvals[IEEE754_SPCVAL_INDEF])
428 (ieee754dp_spcvals[IEEE754_SPCVAL_P1E31]) 426#define ieee754sp_max(sn) (ieee754sp_spcvals[IEEE754_SPCVAL_PMAX+(sn)])
429#define ieee754dp_1e63() \ 427#define ieee754sp_min(sn) (ieee754sp_spcvals[IEEE754_SPCVAL_PMIN+(sn)])
430 (ieee754dp_spcvals[IEEE754_SPCVAL_P1E63]) 428#define ieee754sp_mind(sn) (ieee754sp_spcvals[IEEE754_SPCVAL_PMIND+(sn)])
431 429#define ieee754sp_1e31() (ieee754sp_spcvals[IEEE754_SPCVAL_P1E31])
432#define ieee754sp_inf(sn) \ 430#define ieee754sp_1e63() (ieee754sp_spcvals[IEEE754_SPCVAL_P1E63])
433 (ieee754sp_spcvals[IEEE754_SPCVAL_PINFINITY+(sn)]) 431
434#define ieee754sp_zero(sn) \ 432/*
435 (ieee754sp_spcvals[IEEE754_SPCVAL_PZERO+(sn)]) 433 * Indefinite integer value
436#define ieee754sp_one(sn) \ 434 */
437 (ieee754sp_spcvals[IEEE754_SPCVAL_PONE+(sn)])
438#define ieee754sp_ten(sn) \
439 (ieee754sp_spcvals[IEEE754_SPCVAL_PTEN+(sn)])
440#define ieee754sp_indef() \
441 (ieee754sp_spcvals[IEEE754_SPCVAL_INDEF])
442#define ieee754sp_max(sn) \
443 (ieee754sp_spcvals[IEEE754_SPCVAL_PMAX+(sn)])
444#define ieee754sp_min(sn) \
445 (ieee754sp_spcvals[IEEE754_SPCVAL_PMIN+(sn)])
446#define ieee754sp_mind(sn) \
447 (ieee754sp_spcvals[IEEE754_SPCVAL_PMIND+(sn)])
448#define ieee754sp_1e31() \
449 (ieee754sp_spcvals[IEEE754_SPCVAL_P1E31])
450#define ieee754sp_1e63() \
451 (ieee754sp_spcvals[IEEE754_SPCVAL_P1E63])
452
453/* indefinite integer value
454*/
455#define ieee754si_indef() INT_MAX 435#define ieee754si_indef() INT_MAX
456#ifdef LONG_LONG_MAX 436#ifdef LONG_LONG_MAX
457#define ieee754di_indef() LONG_LONG_MAX 437#define ieee754di_indef() LONG_LONG_MAX
@@ -487,3 +467,5 @@ extern void ieee754_xcpt(struct ieee754xctx *xcp);
487/* compat */ 467/* compat */
488#define ieee754dp_fix(x) ieee754dp_tint(x) 468#define ieee754dp_fix(x) ieee754dp_tint(x)
489#define ieee754sp_fix(x) ieee754sp_tint(x) 469#define ieee754sp_fix(x) ieee754sp_tint(x)
470
471#endif /* __ARCH_MIPS_MATH_EMU_IEEE754_H */
diff --git a/arch/mips/math-emu/kernel_linkage.c b/arch/mips/math-emu/kernel_linkage.c
index 4002f0cf79f3..d187ab71c2ff 100644
--- a/arch/mips/math-emu/kernel_linkage.c
+++ b/arch/mips/math-emu/kernel_linkage.c
@@ -27,8 +27,6 @@
27 27
28#include <asm/fpu_emulator.h> 28#include <asm/fpu_emulator.h>
29 29
30extern struct mips_fpu_emulator_private fpuemuprivate;
31
32#define SIGNALLING_NAN 0x7ff800007ff80000LL 30#define SIGNALLING_NAN 0x7ff800007ff80000LL
33 31
34void fpu_emulator_init_fpu(void) 32void fpu_emulator_init_fpu(void)
@@ -65,7 +63,6 @@ int fpu_emulator_save_context(struct sigcontext *sc)
65 &sc->sc_fpregs[i]); 63 &sc->sc_fpregs[i]);
66 } 64 }
67 err |= __put_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr); 65 err |= __put_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr);
68 err |= __put_user(fpuemuprivate.eir, &sc->sc_fpc_eir);
69 66
70 return err; 67 return err;
71} 68}
@@ -81,7 +78,6 @@ int fpu_emulator_restore_context(struct sigcontext *sc)
81 &sc->sc_fpregs[i]); 78 &sc->sc_fpregs[i]);
82 } 79 }
83 err |= __get_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr); 80 err |= __get_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr);
84 err |= __get_user(fpuemuprivate.eir, &sc->sc_fpc_eir);
85 81
86 return err; 82 return err;
87} 83}
@@ -102,7 +98,6 @@ int fpu_emulator_save_context32(struct sigcontext32 *sc)
102 &sc->sc_fpregs[i]); 98 &sc->sc_fpregs[i]);
103 } 99 }
104 err |= __put_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr); 100 err |= __put_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr);
105 err |= __put_user(fpuemuprivate.eir, &sc->sc_fpc_eir);
106 101
107 return err; 102 return err;
108} 103}
@@ -118,7 +113,6 @@ int fpu_emulator_restore_context32(struct sigcontext32 *sc)
118 &sc->sc_fpregs[i]); 113 &sc->sc_fpregs[i]);
119 } 114 }
120 err |= __get_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr); 115 err |= __get_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr);
121 err |= __get_user(fpuemuprivate.eir, &sc->sc_fpc_eir);
122 116
123 return err; 117 return err;
124} 118}
diff --git a/arch/mips/mips-boards/atlas/atlas_int.c b/arch/mips/mips-boards/atlas/atlas_int.c
index 19d4b0792460..bc0ebc69bfb3 100644
--- a/arch/mips/mips-boards/atlas/atlas_int.c
+++ b/arch/mips/mips-boards/atlas/atlas_int.c
@@ -76,14 +76,13 @@ static void end_atlas_irq(unsigned int irq)
76} 76}
77 77
78static struct hw_interrupt_type atlas_irq_type = { 78static struct hw_interrupt_type atlas_irq_type = {
79 "Atlas", 79 .typename = "Atlas",
80 startup_atlas_irq, 80 .startup = startup_atlas_irq,
81 shutdown_atlas_irq, 81 .shutdown = shutdown_atlas_irq,
82 enable_atlas_irq, 82 .enable = enable_atlas_irq,
83 disable_atlas_irq, 83 .disable = disable_atlas_irq,
84 mask_and_ack_atlas_irq, 84 .ack = mask_and_ack_atlas_irq,
85 end_atlas_irq, 85 .end = end_atlas_irq,
86 NULL
87}; 86};
88 87
89static inline int ls1bit32(unsigned int x) 88static inline int ls1bit32(unsigned int x)
diff --git a/arch/mips/mips-boards/atlas/atlas_setup.c b/arch/mips/mips-boards/atlas/atlas_setup.c
index 0a1dd9bbc02e..625843b30bed 100644
--- a/arch/mips/mips-boards/atlas/atlas_setup.c
+++ b/arch/mips/mips-boards/atlas/atlas_setup.c
@@ -50,8 +50,10 @@ const char *get_system_type(void)
50 return "MIPS Atlas"; 50 return "MIPS Atlas";
51} 51}
52 52
53static int __init atlas_setup(void) 53void __init plat_setup(void)
54{ 54{
55 mips_pcibios_init();
56
55 ioport_resource.end = 0x7fffffff; 57 ioport_resource.end = 0x7fffffff;
56 58
57 serial_init (); 59 serial_init ();
@@ -64,12 +66,8 @@ static int __init atlas_setup(void)
64 board_time_init = mips_time_init; 66 board_time_init = mips_time_init;
65 board_timer_setup = mips_timer_setup; 67 board_timer_setup = mips_timer_setup;
66 rtc_get_time = mips_rtc_get_time; 68 rtc_get_time = mips_rtc_get_time;
67
68 return 0;
69} 69}
70 70
71early_initcall(atlas_setup);
72
73static void __init serial_init(void) 71static void __init serial_init(void)
74{ 72{
75#ifdef CONFIG_SERIAL_8250 73#ifdef CONFIG_SERIAL_8250
diff --git a/arch/mips/mips-boards/generic/init.c b/arch/mips/mips-boards/generic/init.c
index 311155d1d3ed..eab5a705e989 100644
--- a/arch/mips/mips-boards/generic/init.c
+++ b/arch/mips/mips-boards/generic/init.c
@@ -1,6 +1,8 @@
1/* 1/*
2 * Carsten Langgaard, carstenl@mips.com 2 * Copyright (C) 1999, 2000, 2004, 2005 MIPS Technologies, Inc.
3 * Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved. 3 * All rights reserved.
4 * Authors: Carsten Langgaard <carstenl@mips.com>
5 * Maciej W. Rozycki <macro@mips.com>
4 * 6 *
5 * This program is free software; you can distribute it and/or modify it 7 * This program is free software; you can distribute it and/or modify it
6 * under the terms of the GNU General Public License (Version 2) as 8 * under the terms of the GNU General Public License (Version 2) as
@@ -22,18 +24,19 @@
22#include <linux/string.h> 24#include <linux/string.h>
23#include <linux/kernel.h> 25#include <linux/kernel.h>
24 26
25#include <asm/io.h>
26#include <asm/bootinfo.h> 27#include <asm/bootinfo.h>
28#include <asm/gt64120.h>
29#include <asm/io.h>
30#include <asm/system.h>
31#include <asm/cacheflush.h>
32#include <asm/traps.h>
33
27#include <asm/mips-boards/prom.h> 34#include <asm/mips-boards/prom.h>
28#include <asm/mips-boards/generic.h> 35#include <asm/mips-boards/generic.h>
29#ifdef CONFIG_MIPS_GT64120
30#include <asm/gt64120.h>
31#endif
32#include <asm/mips-boards/msc01_pci.h>
33#include <asm/mips-boards/bonito64.h> 36#include <asm/mips-boards/bonito64.h>
34#ifdef CONFIG_MIPS_MALTA 37#include <asm/mips-boards/msc01_pci.h>
38
35#include <asm/mips-boards/malta.h> 39#include <asm/mips-boards/malta.h>
36#endif
37 40
38#ifdef CONFIG_KGDB 41#ifdef CONFIG_KGDB
39extern int rs_kgdb_hook(int, int); 42extern int rs_kgdb_hook(int, int);
@@ -223,8 +226,34 @@ void __init kgdb_config (void)
223} 226}
224#endif 227#endif
225 228
229void __init mips_nmi_setup (void)
230{
231 void *base;
232 extern char except_vec_nmi;
233
234 base = cpu_has_veic ?
235 (void *)(CAC_BASE + 0xa80) :
236 (void *)(CAC_BASE + 0x380);
237 memcpy(base, &except_vec_nmi, 0x80);
238 flush_icache_range((unsigned long)base, (unsigned long)base + 0x80);
239}
240
241void __init mips_ejtag_setup (void)
242{
243 void *base;
244 extern char except_vec_ejtag_debug;
245
246 base = cpu_has_veic ?
247 (void *)(CAC_BASE + 0xa00) :
248 (void *)(CAC_BASE + 0x300);
249 memcpy(base, &except_vec_ejtag_debug, 0x80);
250 flush_icache_range((unsigned long)base, (unsigned long)base + 0x80);
251}
252
226void __init prom_init(void) 253void __init prom_init(void)
227{ 254{
255 u32 start, map, mask, data;
256
228 prom_argc = fw_arg0; 257 prom_argc = fw_arg0;
229 _prom_argv = (int *) fw_arg1; 258 _prom_argv = (int *) fw_arg1;
230 _prom_envp = (int *) fw_arg2; 259 _prom_envp = (int *) fw_arg2;
@@ -266,12 +295,15 @@ void __init prom_init(void)
266#else 295#else
267 GT_WRITE(GT_PCI0_CMD_OFS, 0); 296 GT_WRITE(GT_PCI0_CMD_OFS, 0);
268#endif 297#endif
298 /* Fix up PCI I/O mapping if necessary (for Atlas). */
299 start = GT_READ(GT_PCI0IOLD_OFS);
300 map = GT_READ(GT_PCI0IOREMAP_OFS);
301 if ((start & map) != 0) {
302 map &= ~start;
303 GT_WRITE(GT_PCI0IOREMAP_OFS, map);
304 }
269 305
270#ifdef CONFIG_MIPS_MALTA
271 set_io_port_base(MALTA_GT_PORT_BASE); 306 set_io_port_base(MALTA_GT_PORT_BASE);
272#else
273 set_io_port_base((unsigned long)ioremap(0, 0x20000000));
274#endif
275 break; 307 break;
276 308
277 case MIPS_REVISION_CORID_CORE_EMUL_BON: 309 case MIPS_REVISION_CORID_CORE_EMUL_BON:
@@ -300,18 +332,21 @@ void __init prom_init(void)
300 BONITO_BONGENCFG_BYTESWAP; 332 BONITO_BONGENCFG_BYTESWAP;
301#endif 333#endif
302 334
303#ifdef CONFIG_MIPS_MALTA
304 set_io_port_base(MALTA_BONITO_PORT_BASE); 335 set_io_port_base(MALTA_BONITO_PORT_BASE);
305#else
306 set_io_port_base((unsigned long)ioremap(0, 0x20000000));
307#endif
308 break; 336 break;
309 337
310 case MIPS_REVISION_CORID_CORE_MSC: 338 case MIPS_REVISION_CORID_CORE_MSC:
311 case MIPS_REVISION_CORID_CORE_FPGA2: 339 case MIPS_REVISION_CORID_CORE_FPGA2:
340 case MIPS_REVISION_CORID_CORE_FPGA3:
312 case MIPS_REVISION_CORID_CORE_EMUL_MSC: 341 case MIPS_REVISION_CORID_CORE_EMUL_MSC:
313 _pcictrl_msc = (unsigned long)ioremap(MIPS_MSC01_PCI_REG_BASE, 0x2000); 342 _pcictrl_msc = (unsigned long)ioremap(MIPS_MSC01_PCI_REG_BASE, 0x2000);
314 343
344 mb();
345 MSC_READ(MSC01_PCI_CFG, data);
346 MSC_WRITE(MSC01_PCI_CFG, data & ~MSC01_PCI_CFG_EN_BIT);
347 wmb();
348
349 /* Fix up lane swapping. */
315#ifdef CONFIG_CPU_LITTLE_ENDIAN 350#ifdef CONFIG_CPU_LITTLE_ENDIAN
316 MSC_WRITE(MSC01_PCI_SWAP, MSC01_PCI_SWAP_NOSWAP); 351 MSC_WRITE(MSC01_PCI_SWAP, MSC01_PCI_SWAP_NOSWAP);
317#else 352#else
@@ -320,12 +355,23 @@ void __init prom_init(void)
320 MSC01_PCI_SWAP_BYTESWAP << MSC01_PCI_SWAP_MEM_SHF | 355 MSC01_PCI_SWAP_BYTESWAP << MSC01_PCI_SWAP_MEM_SHF |
321 MSC01_PCI_SWAP_BYTESWAP << MSC01_PCI_SWAP_BAR0_SHF); 356 MSC01_PCI_SWAP_BYTESWAP << MSC01_PCI_SWAP_BAR0_SHF);
322#endif 357#endif
358 /* Fix up target memory mapping. */
359 MSC_READ(MSC01_PCI_BAR0, mask);
360 MSC_WRITE(MSC01_PCI_P2SCMSKL, mask & MSC01_PCI_BAR0_SIZE_MSK);
361
362 /* Don't handle target retries indefinitely. */
363 if ((data & MSC01_PCI_CFG_MAXRTRY_MSK) ==
364 MSC01_PCI_CFG_MAXRTRY_MSK)
365 data = (data & ~(MSC01_PCI_CFG_MAXRTRY_MSK <<
366 MSC01_PCI_CFG_MAXRTRY_SHF)) |
367 ((MSC01_PCI_CFG_MAXRTRY_MSK - 1) <<
368 MSC01_PCI_CFG_MAXRTRY_SHF);
369
370 wmb();
371 MSC_WRITE(MSC01_PCI_CFG, data);
372 mb();
323 373
324#ifdef CONFIG_MIPS_MALTA
325 set_io_port_base(MALTA_MSC_PORT_BASE); 374 set_io_port_base(MALTA_MSC_PORT_BASE);
326#else
327 set_io_port_base((unsigned long)ioremap(0, 0x20000000));
328#endif
329 break; 375 break;
330 376
331 default: 377 default:
@@ -334,6 +380,9 @@ void __init prom_init(void)
334 while(1); /* We die here... */ 380 while(1); /* We die here... */
335 } 381 }
336#endif 382#endif
383 board_nmi_handler_setup = mips_nmi_setup;
384 board_ejtag_handler_setup = mips_ejtag_setup;
385
337 prom_printf("\nLINUX started...\n"); 386 prom_printf("\nLINUX started...\n");
338 prom_init_cmdline(); 387 prom_init_cmdline();
339 prom_meminit(); 388 prom_meminit();
diff --git a/arch/mips/mips-boards/generic/memory.c b/arch/mips/mips-boards/generic/memory.c
index 5ae2b43e4c2e..2c8afd77a20b 100644
--- a/arch/mips/mips-boards/generic/memory.c
+++ b/arch/mips/mips-boards/generic/memory.c
@@ -22,6 +22,7 @@
22#include <linux/init.h> 22#include <linux/init.h>
23#include <linux/mm.h> 23#include <linux/mm.h>
24#include <linux/bootmem.h> 24#include <linux/bootmem.h>
25#include <linux/string.h>
25 26
26#include <asm/bootinfo.h> 27#include <asm/bootinfo.h>
27#include <asm/page.h> 28#include <asm/page.h>
@@ -55,18 +56,30 @@ struct prom_pmemblock * __init prom_getmdesc(void)
55{ 56{
56 char *memsize_str; 57 char *memsize_str;
57 unsigned int memsize; 58 unsigned int memsize;
59 char cmdline[CL_SIZE], *ptr;
58 60
59 memsize_str = prom_getenv("memsize"); 61 /* Check the command line first for a memsize directive */
60 if (!memsize_str) { 62 strcpy(cmdline, arcs_cmdline);
61 prom_printf("memsize not set in boot prom, set to default (32Mb)\n"); 63 ptr = strstr(cmdline, "memsize=");
62 memsize = 0x02000000; 64 if (ptr && (ptr != cmdline) && (*(ptr - 1) != ' '))
63 } else { 65 ptr = strstr(ptr, " memsize=");
66
67 if (ptr) {
68 memsize = memparse(ptr + 8, &ptr);
69 }
70 else {
71 /* otherwise look in the environment */
72 memsize_str = prom_getenv("memsize");
73 if (!memsize_str) {
74 prom_printf("memsize not set in boot prom, set to default (32Mb)\n");
75 memsize = 0x02000000;
76 } else {
64#ifdef DEBUG 77#ifdef DEBUG
65 prom_printf("prom_memsize = %s\n", memsize_str); 78 prom_printf("prom_memsize = %s\n", memsize_str);
66#endif 79#endif
67 memsize = simple_strtol(memsize_str, NULL, 0); 80 memsize = simple_strtol(memsize_str, NULL, 0);
81 }
68 } 82 }
69
70 memset(mdesc, 0, sizeof(mdesc)); 83 memset(mdesc, 0, sizeof(mdesc));
71 84
72 mdesc[0].type = yamon_dontuse; 85 mdesc[0].type = yamon_dontuse;
diff --git a/arch/mips/mips-boards/generic/mipsIRQ.S b/arch/mips/mips-boards/generic/mipsIRQ.S
index 131f49bccb20..a397ecb872d6 100644
--- a/arch/mips/mips-boards/generic/mipsIRQ.S
+++ b/arch/mips/mips-boards/generic/mipsIRQ.S
@@ -29,6 +29,20 @@
29#include <asm/regdef.h> 29#include <asm/regdef.h>
30#include <asm/stackframe.h> 30#include <asm/stackframe.h>
31 31
32#ifdef CONFIG_MIPS_ATLAS
33#include <asm/mips-boards/atlasint.h>
34#define CASCADE_IRQ MIPSCPU_INT_ATLAS
35#define CASCADE_DISPATCH atlas_hw0_irqdispatch
36#endif
37#ifdef CONFIG_MIPS_MALTA
38#include <asm/mips-boards/maltaint.h>
39#define CASCADE_IRQ MIPSCPU_INT_I8259A
40#define CASCADE_DISPATCH malta_hw0_irqdispatch
41#endif
42#ifdef CONFIG_MIPS_SEAD
43#include <asm/mips-boards/seadint.h>
44#endif
45
32/* A lot of complication here is taken away because: 46/* A lot of complication here is taken away because:
33 * 47 *
34 * 1) We handle one interrupt and return, sitting in a loop and moving across 48 * 1) We handle one interrupt and return, sitting in a loop and moving across
@@ -80,74 +94,62 @@
80 94
81 mfc0 s0, CP0_CAUSE # get irq bits 95 mfc0 s0, CP0_CAUSE # get irq bits
82 mfc0 s1, CP0_STATUS # get irq mask 96 mfc0 s1, CP0_STATUS # get irq mask
97 andi s0, ST0_IM # CAUSE.CE may be non-zero!
83 and s0, s1 98 and s0, s1
84 99
85 /* First we check for r4k counter/timer IRQ. */ 100#if defined(CONFIG_CPU_MIPS32) || defined(CONFIG_CPU_MIPS64)
86 andi a0, s0, CAUSEF_IP7 101 .set mips32
87 beq a0, zero, 1f 102 clz a0, s0
88 andi a0, s0, CAUSEF_IP2 # delay slot, check hw0 interrupt 103 .set mips0
104 negu a0
105 addu a0, 31-CAUSEB_IP
106 bltz a0, spurious
107#else
108 beqz s0, spurious
109 li a0, 7
89 110
90 /* Wheee, a timer interrupt. */ 111 and t0, s0, 0xf000
91 move a0, sp 112 sltiu t0, t0, 1
92 jal mips_timer_interrupt 113 sll t0, 2
93 nop 114 subu a0, t0
115 sll s0, t0
94 116
95 j ret_from_irq 117 and t0, s0, 0xc000
96 nop 118 sltiu t0, t0, 1
119 sll t0, 1
120 subu a0, t0
121 sll s0, t0
97 122
981: 123 and t0, s0, 0x8000
99#if defined(CONFIG_MIPS_SEAD) 124 sltiu t0, t0, 1
100 beq a0, zero, 1f 125 # sll t0, 0
101 andi a0, s0, CAUSEF_IP3 # delay slot, check hw1 interrupt 126 subu a0, t0
102#else 127 # sll s0, t0
103 beq a0, zero, 1f # delay slot, check hw3 interrupt
104 andi a0, s0, CAUSEF_IP5
105#endif 128#endif
106 129
107 /* Wheee, combined hardware level zero interrupt. */ 130#ifdef CASCADE_IRQ
108#if defined(CONFIG_MIPS_ATLAS) 131 li a1, CASCADE_IRQ
109 jal atlas_hw0_irqdispatch 132 bne a0, a1, 1f
110#elif defined(CONFIG_MIPS_MALTA) 133 addu a0, MIPSCPU_INT_BASE
111 jal malta_hw0_irqdispatch
112#elif defined(CONFIG_MIPS_SEAD)
113 jal sead_hw0_irqdispatch
114#else
115#error "MIPS board not supported\n"
116#endif
117 move a0, sp # delay slot
118 134
119 j ret_from_irq 135 jal CASCADE_DISPATCH
120 nop # delay slot 136 move a0, sp
121 137
1221:
123#if defined(CONFIG_MIPS_SEAD)
124 beq a0, zero, 1f
125 andi a0, s0, CAUSEF_IP5 # delay slot, check hw3 interrupt
126 jal sead_hw1_irqdispatch
127 move a0, sp # delay slot
128 j ret_from_irq
129 nop # delay slot
1301:
131#endif
132#if defined(CONFIG_MIPS_MALTA)
133 beq a0, zero, 1f # check hw3 (coreHI) interrupt
134 nop
135 jal corehi_irqdispatch
136 move a0, sp
137 j ret_from_irq 138 j ret_from_irq
138 nop 139 nop
1391: 1401:
141#else
142 addu a0, MIPSCPU_INT_BASE
140#endif 143#endif
141 /* 144
142 * Here by mistake? This is possible, what can happen is that by the 145 jal do_IRQ
143 * time we take the exception the IRQ pin goes low, so just leave if 146 move a1, sp
144 * this is the case.
145 */
146 move a1,s0
147 PRINT("Got interrupt: c0_cause = %08x\n")
148 mfc0 a1, CP0_EPC
149 PRINT("c0_epc = %08x\n")
150 147
151 j ret_from_irq 148 j ret_from_irq
152 nop 149 nop
150
151
152spurious:
153 j spurious_interrupt
154 nop
153 END(mipsIRQ) 155 END(mipsIRQ)
diff --git a/arch/mips/mips-boards/generic/pci.c b/arch/mips/mips-boards/generic/pci.c
index 92c34bda02ae..1f6f9df74ab2 100644
--- a/arch/mips/mips-boards/generic/pci.c
+++ b/arch/mips/mips-boards/generic/pci.c
@@ -1,6 +1,8 @@
1/* 1/*
2 * Carsten Langgaard, carstenl@mips.com 2 * Copyright (C) 1999, 2000, 2004, 2005 MIPS Technologies, Inc.
3 * Copyright (C) 1999, 2000 MIPS Technologies, Inc. All rights reserved. 3 * All rights reserved.
4 * Authors: Carsten Langgaard <carstenl@mips.com>
5 * Maciej W. Rozycki <macro@mips.com>
4 * 6 *
5 * Copyright (C) 2004 by Ralf Baechle (ralf@linux-mips.org) 7 * Copyright (C) 2004 by Ralf Baechle (ralf@linux-mips.org)
6 * 8 *
@@ -19,65 +21,46 @@
19 * 21 *
20 * MIPS boards specific PCI support. 22 * MIPS boards specific PCI support.
21 */ 23 */
22#include <linux/config.h>
23#include <linux/types.h> 24#include <linux/types.h>
24#include <linux/pci.h> 25#include <linux/pci.h>
25#include <linux/kernel.h> 26#include <linux/kernel.h>
26#include <linux/init.h> 27#include <linux/init.h>
27 28
28#include <asm/mips-boards/generic.h>
29#include <asm/gt64120.h> 29#include <asm/gt64120.h>
30
31#include <asm/mips-boards/generic.h>
30#include <asm/mips-boards/bonito64.h> 32#include <asm/mips-boards/bonito64.h>
31#include <asm/mips-boards/msc01_pci.h> 33#include <asm/mips-boards/msc01_pci.h>
32#ifdef CONFIG_MIPS_MALTA
33#include <asm/mips-boards/malta.h>
34#endif
35 34
36static struct resource bonito64_mem_resource = { 35static struct resource bonito64_mem_resource = {
37 .name = "Bonito PCI MEM", 36 .name = "Bonito PCI MEM",
38 .start = 0x10000000UL,
39 .end = 0x1bffffffUL,
40 .flags = IORESOURCE_MEM, 37 .flags = IORESOURCE_MEM,
41}; 38};
42 39
43static struct resource bonito64_io_resource = { 40static struct resource bonito64_io_resource = {
44 .name = "Bonito IO MEM", 41 .name = "Bonito PCI I/O",
45 .start = 0x00002000UL, /* avoid conflicts with YAMON allocated I/O addresses */ 42 .start = 0x00000000UL,
46 .end = 0x000fffffUL, 43 .end = 0x000fffffUL,
47 .flags = IORESOURCE_IO, 44 .flags = IORESOURCE_IO,
48}; 45};
49 46
50static struct resource gt64120_mem_resource = { 47static struct resource gt64120_mem_resource = {
51 .name = "GT64120 PCI MEM", 48 .name = "GT-64120 PCI MEM",
52 .start = 0x10000000UL,
53 .end = 0x1bdfffffUL,
54 .flags = IORESOURCE_MEM, 49 .flags = IORESOURCE_MEM,
55}; 50};
56 51
57static struct resource gt64120_io_resource = { 52static struct resource gt64120_io_resource = {
58 .name = "GT64120 IO MEM", 53 .name = "GT-64120 PCI I/O",
59#ifdef CONFIG_MIPS_ATLAS
60 .start = 0x18000000UL,
61 .end = 0x181fffffUL,
62#endif
63#ifdef CONFIG_MIPS_MALTA
64 .start = 0x00002000UL,
65 .end = 0x001fffffUL,
66#endif
67 .flags = IORESOURCE_IO, 54 .flags = IORESOURCE_IO,
68}; 55};
69 56
70static struct resource msc_mem_resource = { 57static struct resource msc_mem_resource = {
71 .name = "MSC PCI MEM", 58 .name = "MSC PCI MEM",
72 .start = 0x10000000UL,
73 .end = 0x1fffffffUL,
74 .flags = IORESOURCE_MEM, 59 .flags = IORESOURCE_MEM,
75}; 60};
76 61
77static struct resource msc_io_resource = { 62static struct resource msc_io_resource = {
78 .name = "MSC IO MEM", 63 .name = "MSC PCI I/O",
79 .start = 0x00002000UL,
80 .end = 0x007fffffUL,
81 .flags = IORESOURCE_IO, 64 .flags = IORESOURCE_IO,
82}; 65};
83 66
@@ -89,7 +72,6 @@ static struct pci_controller bonito64_controller = {
89 .pci_ops = &bonito64_pci_ops, 72 .pci_ops = &bonito64_pci_ops,
90 .io_resource = &bonito64_io_resource, 73 .io_resource = &bonito64_io_resource,
91 .mem_resource = &bonito64_mem_resource, 74 .mem_resource = &bonito64_mem_resource,
92 .mem_offset = 0x10000000UL,
93 .io_offset = 0x00000000UL, 75 .io_offset = 0x00000000UL,
94}; 76};
95 77
@@ -97,21 +79,18 @@ static struct pci_controller gt64120_controller = {
97 .pci_ops = &gt64120_pci_ops, 79 .pci_ops = &gt64120_pci_ops,
98 .io_resource = &gt64120_io_resource, 80 .io_resource = &gt64120_io_resource,
99 .mem_resource = &gt64120_mem_resource, 81 .mem_resource = &gt64120_mem_resource,
100 .mem_offset = 0x00000000UL,
101 .io_offset = 0x00000000UL,
102}; 82};
103 83
104static struct pci_controller msc_controller = { 84static struct pci_controller msc_controller = {
105 .pci_ops = &msc_pci_ops, 85 .pci_ops = &msc_pci_ops,
106 .io_resource = &msc_io_resource, 86 .io_resource = &msc_io_resource,
107 .mem_resource = &msc_mem_resource, 87 .mem_resource = &msc_mem_resource,
108 .mem_offset = 0x10000000UL,
109 .io_offset = 0x00000000UL,
110}; 88};
111 89
112static int __init pcibios_init(void) 90void __init mips_pcibios_init(void)
113{ 91{
114 struct pci_controller *controller; 92 struct pci_controller *controller;
93 unsigned long start, end, map, start1, end1, map1, map2, map3, mask;
115 94
116 switch (mips_revision_corid) { 95 switch (mips_revision_corid) {
117 case MIPS_REVISION_CORID_QED_RM5261: 96 case MIPS_REVISION_CORID_QED_RM5261:
@@ -130,34 +109,140 @@ static int __init pcibios_init(void)
130 (0 << GT_PCI0_CFGADDR_DEVNUM_SHF) | /* GT64120 dev */ 109 (0 << GT_PCI0_CFGADDR_DEVNUM_SHF) | /* GT64120 dev */
131 (0 << GT_PCI0_CFGADDR_FUNCTNUM_SHF) | /* Function 0*/ 110 (0 << GT_PCI0_CFGADDR_FUNCTNUM_SHF) | /* Function 0*/
132 ((0x20/4) << GT_PCI0_CFGADDR_REGNUM_SHF) | /* BAR 4*/ 111 ((0x20/4) << GT_PCI0_CFGADDR_REGNUM_SHF) | /* BAR 4*/
133 GT_PCI0_CFGADDR_CONFIGEN_BIT ); 112 GT_PCI0_CFGADDR_CONFIGEN_BIT);
134 113
135 /* Perform the write */ 114 /* Perform the write */
136 GT_WRITE(GT_PCI0_CFGDATA_OFS, CPHYSADDR(MIPS_GT_BASE)); 115 GT_WRITE(GT_PCI0_CFGDATA_OFS, CPHYSADDR(MIPS_GT_BASE));
137 116
117 /* Set up resource ranges from the controller's registers. */
118 start = GT_READ(GT_PCI0M0LD_OFS);
119 end = GT_READ(GT_PCI0M0HD_OFS);
120 map = GT_READ(GT_PCI0M0REMAP_OFS);
121 end = (end & GT_PCI_HD_MSK) | (start & ~GT_PCI_HD_MSK);
122 start1 = GT_READ(GT_PCI0M1LD_OFS);
123 end1 = GT_READ(GT_PCI0M1HD_OFS);
124 map1 = GT_READ(GT_PCI0M1REMAP_OFS);
125 end1 = (end1 & GT_PCI_HD_MSK) | (start1 & ~GT_PCI_HD_MSK);
126 /* Cannot support multiple windows, use the wider. */
127 if (end1 - start1 > end - start) {
128 start = start1;
129 end = end1;
130 map = map1;
131 }
132 mask = ~(start ^ end);
133 /* We don't support remapping with a discontiguous mask. */
134 BUG_ON((start & GT_PCI_HD_MSK) != (map & GT_PCI_HD_MSK) &&
135 mask != ~((mask & -mask) - 1));
136 gt64120_mem_resource.start = start;
137 gt64120_mem_resource.end = end;
138 gt64120_controller.mem_offset = (start & mask) - (map & mask);
139 /* Addresses are 36-bit, so do shifts in the destinations. */
140 gt64120_mem_resource.start <<= GT_PCI_DCRM_SHF;
141 gt64120_mem_resource.end <<= GT_PCI_DCRM_SHF;
142 gt64120_mem_resource.end |= (1 << GT_PCI_DCRM_SHF) - 1;
143 gt64120_controller.mem_offset <<= GT_PCI_DCRM_SHF;
144
145 start = GT_READ(GT_PCI0IOLD_OFS);
146 end = GT_READ(GT_PCI0IOHD_OFS);
147 map = GT_READ(GT_PCI0IOREMAP_OFS);
148 end = (end & GT_PCI_HD_MSK) | (start & ~GT_PCI_HD_MSK);
149 mask = ~(start ^ end);
150 /* We don't support remapping with a discontiguous mask. */
151 BUG_ON((start & GT_PCI_HD_MSK) != (map & GT_PCI_HD_MSK) &&
152 mask != ~((mask & -mask) - 1));
153 gt64120_io_resource.start = map & mask;
154 gt64120_io_resource.end = (map & mask) | ~mask;
155 gt64120_controller.io_offset = 0;
156 /* Addresses are 36-bit, so do shifts in the destinations. */
157 gt64120_io_resource.start <<= GT_PCI_DCRM_SHF;
158 gt64120_io_resource.end <<= GT_PCI_DCRM_SHF;
159 gt64120_io_resource.end |= (1 << GT_PCI_DCRM_SHF) - 1;
160
138 controller = &gt64120_controller; 161 controller = &gt64120_controller;
139 break; 162 break;
140 163
141 case MIPS_REVISION_CORID_BONITO64: 164 case MIPS_REVISION_CORID_BONITO64:
142 case MIPS_REVISION_CORID_CORE_20K: 165 case MIPS_REVISION_CORID_CORE_20K:
143 case MIPS_REVISION_CORID_CORE_EMUL_BON: 166 case MIPS_REVISION_CORID_CORE_EMUL_BON:
167 /* Set up resource ranges from the controller's registers. */
168 map = BONITO_PCIMAP;
169 map1 = (BONITO_PCIMAP & BONITO_PCIMAP_PCIMAP_LO0) >>
170 BONITO_PCIMAP_PCIMAP_LO0_SHIFT;
171 map2 = (BONITO_PCIMAP & BONITO_PCIMAP_PCIMAP_LO1) >>
172 BONITO_PCIMAP_PCIMAP_LO1_SHIFT;
173 map3 = (BONITO_PCIMAP & BONITO_PCIMAP_PCIMAP_LO2) >>
174 BONITO_PCIMAP_PCIMAP_LO2_SHIFT;
175 /* Combine as many adjacent windows as possible. */
176 map = map1;
177 start = BONITO_PCILO0_BASE;
178 end = 1;
179 if (map3 == map2 + 1) {
180 map = map2;
181 start = BONITO_PCILO1_BASE;
182 end++;
183 }
184 if (map2 == map1 + 1) {
185 map = map1;
186 start = BONITO_PCILO0_BASE;
187 end++;
188 }
189 bonito64_mem_resource.start = start;
190 bonito64_mem_resource.end = start +
191 BONITO_PCIMAP_WINBASE(end) - 1;
192 bonito64_controller.mem_offset = start -
193 BONITO_PCIMAP_WINBASE(map);
194
144 controller = &bonito64_controller; 195 controller = &bonito64_controller;
145 break; 196 break;
146 197
147 case MIPS_REVISION_CORID_CORE_MSC: 198 case MIPS_REVISION_CORID_CORE_MSC:
148 case MIPS_REVISION_CORID_CORE_FPGA2: 199 case MIPS_REVISION_CORID_CORE_FPGA2:
200 case MIPS_REVISION_CORID_CORE_FPGA3:
149 case MIPS_REVISION_CORID_CORE_EMUL_MSC: 201 case MIPS_REVISION_CORID_CORE_EMUL_MSC:
202 /* Set up resource ranges from the controller's registers. */
203 MSC_READ(MSC01_PCI_SC2PMBASL, start);
204 MSC_READ(MSC01_PCI_SC2PMMSKL, mask);
205 MSC_READ(MSC01_PCI_SC2PMMAPL, map);
206 msc_mem_resource.start = start & mask;
207 msc_mem_resource.end = (start & mask) | ~mask;
208 msc_controller.mem_offset = (start & mask) - (map & mask);
209
210 MSC_READ(MSC01_PCI_SC2PIOBASL, start);
211 MSC_READ(MSC01_PCI_SC2PIOMSKL, mask);
212 MSC_READ(MSC01_PCI_SC2PIOMAPL, map);
213 msc_io_resource.start = map & mask;
214 msc_io_resource.end = (map & mask) | ~mask;
215 msc_controller.io_offset = 0;
216 ioport_resource.end = ~mask;
217
218 /* If ranges overlap I/O takes precedence. */
219 start = start & mask;
220 end = start | ~mask;
221 if ((start >= msc_mem_resource.start &&
222 start <= msc_mem_resource.end) ||
223 (end >= msc_mem_resource.start &&
224 end <= msc_mem_resource.end)) {
225 /* Use the larger space. */
226 start = max(start, msc_mem_resource.start);
227 end = min(end, msc_mem_resource.end);
228 if (start - msc_mem_resource.start >=
229 msc_mem_resource.end - end)
230 msc_mem_resource.end = start - 1;
231 else
232 msc_mem_resource.start = end + 1;
233 }
234
150 controller = &msc_controller; 235 controller = &msc_controller;
151 break; 236 break;
152 default: 237 default:
153 return 1; 238 return;
154 } 239 }
155 240
241 if (controller->io_resource->start < 0x00001000UL) /* FIXME */
242 controller->io_resource->start = 0x00001000UL;
243
244 iomem_resource.end &= 0xfffffffffULL; /* 64 GB */
156 ioport_resource.end = controller->io_resource->end; 245 ioport_resource.end = controller->io_resource->end;
157 246
158 register_pci_controller (controller); 247 register_pci_controller (controller);
159
160 return 0;
161} 248}
162
163early_initcall(pcibios_init);
diff --git a/arch/mips/mips-boards/generic/time.c b/arch/mips/mips-boards/generic/time.c
index 16315444dd5a..72a12d931cba 100644
--- a/arch/mips/mips-boards/generic/time.c
+++ b/arch/mips/mips-boards/generic/time.c
@@ -31,22 +31,21 @@
31 31
32#include <asm/mipsregs.h> 32#include <asm/mipsregs.h>
33#include <asm/ptrace.h> 33#include <asm/ptrace.h>
34#include <asm/hardirq.h>
35#include <asm/irq.h>
34#include <asm/div64.h> 36#include <asm/div64.h>
35#include <asm/cpu.h> 37#include <asm/cpu.h>
36#include <asm/time.h> 38#include <asm/time.h>
37#include <asm/mc146818-time.h> 39#include <asm/mc146818-time.h>
40#include <asm/msc01_ic.h>
38 41
39#include <asm/mips-boards/generic.h> 42#include <asm/mips-boards/generic.h>
40#include <asm/mips-boards/prom.h> 43#include <asm/mips-boards/prom.h>
44#include <asm/mips-boards/maltaint.h>
45#include <asm/mc146818-time.h>
41 46
42unsigned long cpu_khz; 47unsigned long cpu_khz;
43 48
44#if defined(CONFIG_MIPS_SEAD)
45#define ALLINTS (IE_IRQ0 | IE_IRQ1 | IE_IRQ5)
46#else
47#define ALLINTS (IE_IRQ0 | IE_IRQ1 | IE_IRQ2 | IE_IRQ3 | IE_IRQ4 | IE_IRQ5)
48#endif
49
50#if defined(CONFIG_MIPS_ATLAS) 49#if defined(CONFIG_MIPS_ATLAS)
51static char display_string[] = " LINUX ON ATLAS "; 50static char display_string[] = " LINUX ON ATLAS ";
52#endif 51#endif
@@ -59,20 +58,61 @@ static char display_string[] = " LINUX ON SEAD ";
59static unsigned int display_count = 0; 58static unsigned int display_count = 0;
60#define MAX_DISPLAY_COUNT (sizeof(display_string) - 8) 59#define MAX_DISPLAY_COUNT (sizeof(display_string) - 8)
61 60
62#define MIPS_CPU_TIMER_IRQ (NR_IRQS-1)
63
64static unsigned int timer_tick_count=0; 61static unsigned int timer_tick_count=0;
62static int mips_cpu_timer_irq;
65 63
66void mips_timer_interrupt(struct pt_regs *regs) 64static inline void scroll_display_message(void)
67{ 65{
68 if ((timer_tick_count++ % HZ) == 0) { 66 if ((timer_tick_count++ % HZ) == 0) {
69 mips_display_message(&display_string[display_count++]); 67 mips_display_message(&display_string[display_count++]);
70 if (display_count == MAX_DISPLAY_COUNT) 68 if (display_count == MAX_DISPLAY_COUNT)
71 display_count = 0; 69 display_count = 0;
70 }
71}
72
73static void mips_timer_dispatch (struct pt_regs *regs)
74{
75 do_IRQ (mips_cpu_timer_irq, regs);
76}
72 77
78irqreturn_t mips_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
79{
80#ifdef CONFIG_SMP
81 int cpu = smp_processor_id();
82
83 if (cpu == 0) {
84 /*
85 * CPU 0 handles the global timer interrupt job and process accounting
86 * resets count/compare registers to trigger next timer int.
87 */
88 (void) timer_interrupt(irq, dev_id, regs);
89 scroll_display_message();
90 }
91 else {
92 /* Everyone else needs to reset the timer int here as
93 ll_local_timer_interrupt doesn't */
94 /*
95 * FIXME: need to cope with counter underflow.
96 * More support needs to be added to kernel/time for
97 * counter/timer interrupts on multiple CPU's
98 */
99 write_c0_compare (read_c0_count() + (mips_hpt_frequency/HZ));
100 /*
101 * other CPUs should do profiling and process accounting
102 */
103 local_timer_interrupt (irq, dev_id, regs);
73 } 104 }
74 105
75 ll_timer_interrupt(MIPS_CPU_TIMER_IRQ, regs); 106 return IRQ_HANDLED;
107#else
108 irqreturn_t r;
109
110 r = timer_interrupt(irq, dev_id, regs);
111
112 scroll_display_message();
113
114 return r;
115#endif
76} 116}
77 117
78/* 118/*
@@ -140,10 +180,8 @@ void __init mips_time_init(void)
140 180
141 local_irq_save(flags); 181 local_irq_save(flags);
142 182
143#if defined(CONFIG_MIPS_ATLAS) || defined(CONFIG_MIPS_MALTA)
144 /* Set Data mode - binary. */ 183 /* Set Data mode - binary. */
145 CMOS_WRITE(CMOS_READ(RTC_CONTROL) | RTC_DM_BINARY, RTC_CONTROL); 184 CMOS_WRITE(CMOS_READ(RTC_CONTROL) | RTC_DM_BINARY, RTC_CONTROL);
146#endif
147 185
148 est_freq = estimate_cpu_frequency (); 186 est_freq = estimate_cpu_frequency ();
149 187
@@ -157,11 +195,29 @@ void __init mips_time_init(void)
157 195
158void __init mips_timer_setup(struct irqaction *irq) 196void __init mips_timer_setup(struct irqaction *irq)
159{ 197{
198 if (cpu_has_veic) {
199 set_vi_handler (MSC01E_INT_CPUCTR, mips_timer_dispatch);
200 mips_cpu_timer_irq = MSC01E_INT_BASE + MSC01E_INT_CPUCTR;
201 }
202 else {
203 if (cpu_has_vint)
204 set_vi_handler (MIPSCPU_INT_CPUCTR, mips_timer_dispatch);
205 mips_cpu_timer_irq = MIPSCPU_INT_BASE + MIPSCPU_INT_CPUCTR;
206 }
207
208
160 /* we are using the cpu counter for timer interrupts */ 209 /* we are using the cpu counter for timer interrupts */
161 irq->handler = no_action; /* we use our own handler */ 210 irq->handler = mips_timer_interrupt; /* we use our own handler */
162 setup_irq(MIPS_CPU_TIMER_IRQ, irq); 211 setup_irq(mips_cpu_timer_irq, irq);
212
213#ifdef CONFIG_SMP
214 /* irq_desc(riptor) is a global resource, when the interrupt overlaps
215 on seperate cpu's the first one tries to handle the second interrupt.
216 The effect is that the int remains disabled on the second cpu.
217 Mark the interrupt with IRQ_PER_CPU to avoid any confusion */
218 irq_desc[mips_cpu_timer_irq].status |= IRQ_PER_CPU;
219#endif
163 220
164 /* to generate the first timer interrupt */ 221 /* to generate the first timer interrupt */
165 write_c0_compare (read_c0_count() + mips_hpt_frequency/HZ); 222 write_c0_compare (read_c0_count() + mips_hpt_frequency/HZ);
166 set_c0_status(ALLINTS);
167} 223}
diff --git a/arch/mips/mips-boards/malta/malta_int.c b/arch/mips/mips-boards/malta/malta_int.c
index dd2db35966bc..d06dc5ad6c9e 100644
--- a/arch/mips/mips-boards/malta/malta_int.c
+++ b/arch/mips/mips-boards/malta/malta_int.c
@@ -30,6 +30,7 @@
30#include <linux/random.h> 30#include <linux/random.h>
31 31
32#include <asm/i8259.h> 32#include <asm/i8259.h>
33#include <asm/irq_cpu.h>
33#include <asm/io.h> 34#include <asm/io.h>
34#include <asm/mips-boards/malta.h> 35#include <asm/mips-boards/malta.h>
35#include <asm/mips-boards/maltaint.h> 36#include <asm/mips-boards/maltaint.h>
@@ -37,8 +38,10 @@
37#include <asm/gt64120.h> 38#include <asm/gt64120.h>
38#include <asm/mips-boards/generic.h> 39#include <asm/mips-boards/generic.h>
39#include <asm/mips-boards/msc01_pci.h> 40#include <asm/mips-boards/msc01_pci.h>
41#include <asm/msc01_ic.h>
40 42
41extern asmlinkage void mipsIRQ(void); 43extern asmlinkage void mipsIRQ(void);
44extern void mips_timer_interrupt(void);
42 45
43static DEFINE_SPINLOCK(mips_irq_lock); 46static DEFINE_SPINLOCK(mips_irq_lock);
44 47
@@ -54,6 +57,7 @@ static inline int mips_pcibios_iack(void)
54 switch(mips_revision_corid) { 57 switch(mips_revision_corid) {
55 case MIPS_REVISION_CORID_CORE_MSC: 58 case MIPS_REVISION_CORID_CORE_MSC:
56 case MIPS_REVISION_CORID_CORE_FPGA2: 59 case MIPS_REVISION_CORID_CORE_FPGA2:
60 case MIPS_REVISION_CORID_CORE_FPGA3:
57 case MIPS_REVISION_CORID_CORE_EMUL_MSC: 61 case MIPS_REVISION_CORID_CORE_EMUL_MSC:
58 MSC_READ(MSC01_PCI_IACK, irq); 62 MSC_READ(MSC01_PCI_IACK, irq);
59 irq &= 0xff; 63 irq &= 0xff;
@@ -91,88 +95,86 @@ static inline int mips_pcibios_iack(void)
91 return irq; 95 return irq;
92} 96}
93 97
94static inline int get_int(int *irq) 98static inline int get_int(void)
95{ 99{
96 unsigned long flags; 100 unsigned long flags;
97 101 int irq;
98 spin_lock_irqsave(&mips_irq_lock, flags); 102 spin_lock_irqsave(&mips_irq_lock, flags);
99 103
100 *irq = mips_pcibios_iack(); 104 irq = mips_pcibios_iack();
101 105
102 /* 106 /*
103 * IRQ7 is used to detect spurious interrupts. 107 * The only way we can decide if an interrupt is spurious
104 * The interrupt acknowledge cycle returns IRQ7, if no 108 * is by checking the 8259 registers. This needs a spinlock
105 * interrupts is requested. 109 * on an SMP system, so leave it up to the generic code...
106 * We can differentiate between this situation and a
107 * "Normal" IRQ7 by reading the ISR.
108 */ 110 */
109 if (*irq == 7)
110 {
111 outb(PIIX4_OCW3_SEL | PIIX4_OCW3_ISR,
112 PIIX4_ICTLR1_OCW3);
113 if (!(inb(PIIX4_ICTLR1_OCW3) & (1 << 7))) {
114 spin_unlock_irqrestore(&mips_irq_lock, flags);
115 printk("We got a spurious interrupt from PIIX4.\n");
116 atomic_inc(&irq_err_count);
117 return -1; /* Spurious interrupt. */
118 }
119 }
120 111
121 spin_unlock_irqrestore(&mips_irq_lock, flags); 112 spin_unlock_irqrestore(&mips_irq_lock, flags);
122 113
123 return 0; 114 return irq;
124} 115}
125 116
126void malta_hw0_irqdispatch(struct pt_regs *regs) 117void malta_hw0_irqdispatch(struct pt_regs *regs)
127{ 118{
128 int irq; 119 int irq;
129 120
130 if (get_int(&irq)) 121 irq = get_int();
131 return; /* interrupt has already been cleared */ 122 if (irq < 0)
123 return; /* interrupt has already been cleared */
132 124
133 do_IRQ(irq, regs); 125 do_IRQ(MALTA_INT_BASE+irq, regs);
134} 126}
135 127
136void corehi_irqdispatch(struct pt_regs *regs) 128void corehi_irqdispatch(struct pt_regs *regs)
137{ 129{
138 unsigned int data,datahi; 130 unsigned int intrcause,datalo,datahi;
139 131 unsigned int pcimstat, intisr, inten, intpol, intedge, intsteer, pcicmd, pcibadaddr;
140 /* Mask out corehi interrupt. */
141 clear_c0_status(IE_IRQ3);
142 132
143 printk("CoreHI interrupt, shouldn't happen, so we die here!!!\n"); 133 printk("CoreHI interrupt, shouldn't happen, so we die here!!!\n");
144 printk("epc : %08lx\nStatus: %08lx\nCause : %08lx\nbadVaddr : %08lx\n" 134 printk("epc : %08lx\nStatus: %08lx\nCause : %08lx\nbadVaddr : %08lx\n"
145, regs->cp0_epc, regs->cp0_status, regs->cp0_cause, regs->cp0_badvaddr); 135, regs->cp0_epc, regs->cp0_status, regs->cp0_cause, regs->cp0_badvaddr);
136
137 /* Read all the registers and then print them as there is a
138 problem with interspersed printk's upsetting the Bonito controller.
139 Do it for the others too.
140 */
141
146 switch(mips_revision_corid) { 142 switch(mips_revision_corid) {
147 case MIPS_REVISION_CORID_CORE_MSC: 143 case MIPS_REVISION_CORID_CORE_MSC:
148 case MIPS_REVISION_CORID_CORE_FPGA2: 144 case MIPS_REVISION_CORID_CORE_FPGA2:
149 case MIPS_REVISION_CORID_CORE_EMUL_MSC: 145 case MIPS_REVISION_CORID_CORE_FPGA3:
146 case MIPS_REVISION_CORID_CORE_EMUL_MSC:
147 ll_msc_irq(regs);
150 break; 148 break;
151 case MIPS_REVISION_CORID_QED_RM5261: 149 case MIPS_REVISION_CORID_QED_RM5261:
152 case MIPS_REVISION_CORID_CORE_LV: 150 case MIPS_REVISION_CORID_CORE_LV:
153 case MIPS_REVISION_CORID_CORE_FPGA: 151 case MIPS_REVISION_CORID_CORE_FPGA:
154 case MIPS_REVISION_CORID_CORE_FPGAR2: 152 case MIPS_REVISION_CORID_CORE_FPGAR2:
155 data = GT_READ(GT_INTRCAUSE_OFS); 153 intrcause = GT_READ(GT_INTRCAUSE_OFS);
156 printk("GT_INTRCAUSE = %08x\n", data); 154 datalo = GT_READ(GT_CPUERR_ADDRLO_OFS);
157 data = GT_READ(GT_CPUERR_ADDRLO_OFS);
158 datahi = GT_READ(GT_CPUERR_ADDRHI_OFS); 155 datahi = GT_READ(GT_CPUERR_ADDRHI_OFS);
159 printk("GT_CPUERR_ADDR = %02x%08x\n", datahi, data); 156 printk("GT_INTRCAUSE = %08x\n", intrcause);
157 printk("GT_CPUERR_ADDR = %02x%08x\n", datahi, datalo);
160 break; 158 break;
161 case MIPS_REVISION_CORID_BONITO64: 159 case MIPS_REVISION_CORID_BONITO64:
162 case MIPS_REVISION_CORID_CORE_20K: 160 case MIPS_REVISION_CORID_CORE_20K:
163 case MIPS_REVISION_CORID_CORE_EMUL_BON: 161 case MIPS_REVISION_CORID_CORE_EMUL_BON:
164 data = BONITO_INTISR; 162 pcibadaddr = BONITO_PCIBADADDR;
165 printk("BONITO_INTISR = %08x\n", data); 163 pcimstat = BONITO_PCIMSTAT;
166 data = BONITO_INTEN; 164 intisr = BONITO_INTISR;
167 printk("BONITO_INTEN = %08x\n", data); 165 inten = BONITO_INTEN;
168 data = BONITO_INTPOL; 166 intpol = BONITO_INTPOL;
169 printk("BONITO_INTPOL = %08x\n", data); 167 intedge = BONITO_INTEDGE;
170 data = BONITO_INTEDGE; 168 intsteer = BONITO_INTSTEER;
171 printk("BONITO_INTEDGE = %08x\n", data); 169 pcicmd = BONITO_PCICMD;
172 data = BONITO_INTSTEER; 170 printk("BONITO_INTISR = %08x\n", intisr);
173 printk("BONITO_INTSTEER = %08x\n", data); 171 printk("BONITO_INTEN = %08x\n", inten);
174 data = BONITO_PCICMD; 172 printk("BONITO_INTPOL = %08x\n", intpol);
175 printk("BONITO_PCICMD = %08x\n", data); 173 printk("BONITO_INTEDGE = %08x\n", intedge);
174 printk("BONITO_INTSTEER = %08x\n", intsteer);
175 printk("BONITO_PCICMD = %08x\n", pcicmd);
176 printk("BONITO_PCIBADADDR = %08x\n", pcibadaddr);
177 printk("BONITO_PCIMSTAT = %08x\n", pcimstat);
176 break; 178 break;
177 } 179 }
178 180
@@ -180,8 +182,71 @@ void corehi_irqdispatch(struct pt_regs *regs)
180 die("CoreHi interrupt", regs); 182 die("CoreHi interrupt", regs);
181} 183}
182 184
185static struct irqaction i8259irq = {
186 .handler = no_action,
187 .name = "XT-PIC cascade"
188};
189
190static struct irqaction corehi_irqaction = {
191 .handler = no_action,
192 .name = "CoreHi"
193};
194
195msc_irqmap_t __initdata msc_irqmap[] = {
196 {MSC01C_INT_TMR, MSC01_IRQ_EDGE, 0},
197 {MSC01C_INT_PCI, MSC01_IRQ_LEVEL, 0},
198};
199int __initdata msc_nr_irqs = sizeof(msc_irqmap)/sizeof(msc_irqmap_t);
200
201msc_irqmap_t __initdata msc_eicirqmap[] = {
202 {MSC01E_INT_SW0, MSC01_IRQ_LEVEL, 0},
203 {MSC01E_INT_SW1, MSC01_IRQ_LEVEL, 0},
204 {MSC01E_INT_I8259A, MSC01_IRQ_LEVEL, 0},
205 {MSC01E_INT_SMI, MSC01_IRQ_LEVEL, 0},
206 {MSC01E_INT_COREHI, MSC01_IRQ_LEVEL, 0},
207 {MSC01E_INT_CORELO, MSC01_IRQ_LEVEL, 0},
208 {MSC01E_INT_TMR, MSC01_IRQ_EDGE, 0},
209 {MSC01E_INT_PCI, MSC01_IRQ_LEVEL, 0},
210 {MSC01E_INT_PERFCTR, MSC01_IRQ_LEVEL, 0},
211 {MSC01E_INT_CPUCTR, MSC01_IRQ_LEVEL, 0}
212};
213int __initdata msc_nr_eicirqs = sizeof(msc_eicirqmap)/sizeof(msc_irqmap_t);
214
183void __init arch_init_irq(void) 215void __init arch_init_irq(void)
184{ 216{
185 set_except_vector(0, mipsIRQ); 217 set_except_vector(0, mipsIRQ);
186 init_i8259_irqs(); 218 init_i8259_irqs();
219
220 if (!cpu_has_veic)
221 mips_cpu_irq_init (MIPSCPU_INT_BASE);
222
223 switch(mips_revision_corid) {
224 case MIPS_REVISION_CORID_CORE_MSC:
225 case MIPS_REVISION_CORID_CORE_FPGA2:
226 case MIPS_REVISION_CORID_CORE_FPGA3:
227 case MIPS_REVISION_CORID_CORE_EMUL_MSC:
228 if (cpu_has_veic)
229 init_msc_irqs (MSC01E_INT_BASE, msc_eicirqmap, msc_nr_eicirqs);
230 else
231 init_msc_irqs (MSC01C_INT_BASE, msc_irqmap, msc_nr_irqs);
232 }
233
234 if (cpu_has_veic) {
235 set_vi_handler (MSC01E_INT_I8259A, malta_hw0_irqdispatch);
236 set_vi_handler (MSC01E_INT_COREHI, corehi_irqdispatch);
237 setup_irq (MSC01E_INT_BASE+MSC01E_INT_I8259A, &i8259irq);
238 setup_irq (MSC01E_INT_BASE+MSC01E_INT_COREHI, &corehi_irqaction);
239 }
240 else if (cpu_has_vint) {
241 set_vi_handler (MIPSCPU_INT_I8259A, malta_hw0_irqdispatch);
242 set_vi_handler (MIPSCPU_INT_COREHI, corehi_irqdispatch);
243
244 setup_irq (MIPSCPU_INT_BASE+MIPSCPU_INT_I8259A, &i8259irq);
245 setup_irq (MIPSCPU_INT_BASE+MIPSCPU_INT_COREHI, &corehi_irqaction);
246 }
247 else {
248 set_except_vector(0, mipsIRQ);
249 setup_irq (MIPSCPU_INT_BASE+MIPSCPU_INT_I8259A, &i8259irq);
250 setup_irq (MIPSCPU_INT_BASE+MIPSCPU_INT_COREHI, &corehi_irqaction);
251 }
187} 252}
diff --git a/arch/mips/mips-boards/malta/malta_setup.c b/arch/mips/mips-boards/malta/malta_setup.c
index df6db6419ae9..2209e8a9de34 100644
--- a/arch/mips/mips-boards/malta/malta_setup.c
+++ b/arch/mips/mips-boards/malta/malta_setup.c
@@ -111,10 +111,12 @@ void __init fd_activate(void)
111} 111}
112#endif 112#endif
113 113
114static int __init malta_setup(void) 114void __init plat_setup(void)
115{ 115{
116 unsigned int i; 116 unsigned int i;
117 117
118 mips_pcibios_init();
119
118 /* Request I/O space for devices used on the Malta board. */ 120 /* Request I/O space for devices used on the Malta board. */
119 for (i = 0; i < ARRAY_SIZE(standard_io_resources); i++) 121 for (i = 0; i < ARRAY_SIZE(standard_io_resources); i++)
120 request_resource(&ioport_resource, standard_io_resources+i); 122 request_resource(&ioport_resource, standard_io_resources+i);
@@ -224,8 +226,4 @@ static int __init malta_setup(void)
224 board_time_init = mips_time_init; 226 board_time_init = mips_time_init;
225 board_timer_setup = mips_timer_setup; 227 board_timer_setup = mips_timer_setup;
226 rtc_get_time = mips_rtc_get_time; 228 rtc_get_time = mips_rtc_get_time;
227
228 return 0;
229} 229}
230
231early_initcall(malta_setup);
diff --git a/arch/mips/mips-boards/sead/sead_int.c b/arch/mips/mips-boards/sead/sead_int.c
index e5109657ed5a..e1dd7e009750 100644
--- a/arch/mips/mips-boards/sead/sead_int.c
+++ b/arch/mips/mips-boards/sead/sead_int.c
@@ -2,6 +2,7 @@
2 * Carsten Langgaard, carstenl@mips.com 2 * Carsten Langgaard, carstenl@mips.com
3 * Copyright (C) 2002 MIPS Technologies, Inc. All rights reserved. 3 * Copyright (C) 2002 MIPS Technologies, Inc. All rights reserved.
4 * Copyright (C) 2003 Ralf Baechle (ralf@linux-mips.org) 4 * Copyright (C) 2003 Ralf Baechle (ralf@linux-mips.org)
5 * Copyright (C) 2004 Maciej W. Rozycki
5 * 6 *
6 * This program is free software; you can distribute it and/or modify it 7 * This program is free software; you can distribute it and/or modify it
7 * under the terms of the GNU General Public License (Version 2) as 8 * under the terms of the GNU General Public License (Version 2) as
@@ -21,7 +22,9 @@
21 */ 22 */
22#include <linux/init.h> 23#include <linux/init.h>
23#include <linux/irq.h> 24#include <linux/irq.h>
24#include <linux/interrupt.h> 25
26#include <asm/irq_cpu.h>
27#include <asm/system.h>
25 28
26#include <asm/mips-boards/seadint.h> 29#include <asm/mips-boards/seadint.h>
27 30
@@ -39,13 +42,8 @@ asmlinkage void sead_hw1_irqdispatch(struct pt_regs *regs)
39 42
40void __init arch_init_irq(void) 43void __init arch_init_irq(void)
41{ 44{
42 /* 45 mips_cpu_irq_init(0);
43 * Mask out all interrupt
44 */
45 clear_c0_status(0x0000ff00);
46 46
47 /* Now safe to set the exception vector. */ 47 /* Now safe to set the exception vector. */
48 set_except_vector(0, mipsIRQ); 48 set_except_vector(0, mipsIRQ);
49
50 mips_cpu_irq_init(0);
51} 49}
diff --git a/arch/mips/mips-boards/sead/sead_setup.c b/arch/mips/mips-boards/sead/sead_setup.c
index 29892b88a4fc..de90bec5505e 100644
--- a/arch/mips/mips-boards/sead/sead_setup.c
+++ b/arch/mips/mips-boards/sead/sead_setup.c
@@ -57,8 +57,6 @@ static void __init sead_setup(void)
57 mips_reboot_setup(); 57 mips_reboot_setup();
58} 58}
59 59
60early_initcall(sead_setup);
61
62static void __init serial_init(void) 60static void __init serial_init(void)
63{ 61{
64#ifdef CONFIG_SERIAL_8250 62#ifdef CONFIG_SERIAL_8250
diff --git a/arch/mips/mips-boards/sim/Makefile b/arch/mips/mips-boards/sim/Makefile
new file mode 100644
index 000000000000..5b977de4ecff
--- /dev/null
+++ b/arch/mips/mips-boards/sim/Makefile
@@ -0,0 +1,20 @@
1#
2# Copyright (C) 2005 MIPS Technologies, Inc. All rights reserved.
3#
4# This program is free software; you can distribute it and/or modify it
5# under the terms of the GNU General Public License (Version 2) as
6# published by the Free Software Foundation.
7#
8# This program is distributed in the hope it will be useful, but WITHOUT
9# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11# for more details.
12#
13# You should have received a copy of the GNU General Public License along
14# with this program; if not, write to the Free Software Foundation, Inc.,
15# 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16#
17
18obj-y := sim_setup.o sim_mem.o sim_time.o sim_printf.o sim_int.o sim_irq.o \
19 sim_cmdline.o
20obj-$(CONFIG_SMP) += sim_smp.o
diff --git a/arch/mips/mips-boards/sim/cmdline.c b/arch/mips/mips-boards/sim/cmdline.c
new file mode 100644
index 000000000000..fef9fbd8e710
--- /dev/null
+++ b/arch/mips/mips-boards/sim/cmdline.c
@@ -0,0 +1,59 @@
1/*
2 * Carsten Langgaard, carstenl@mips.com
3 * Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved.
4 *
5 * This program is free software; you can distribute it and/or modify it
6 * under the terms of the GNU General Public License (Version 2) as
7 * published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * for more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
17 *
18 * Kernel command line creation using the prom monitor (YAMON) argc/argv.
19 */
20#include <linux/init.h>
21#include <linux/string.h>
22
23#include <asm/bootinfo.h>
24
25extern int prom_argc;
26extern int *_prom_argv;
27
28/*
29 * YAMON (32-bit PROM) pass arguments and environment as 32-bit pointer.
30 * This macro take care of sign extension.
31 */
32#define prom_argv(index) ((char *)(((int *)(int)_prom_argv)[(index)]))
33
34char arcs_cmdline[CL_SIZE];
35
36char * __init prom_getcmdline(void)
37{
38 return &(arcs_cmdline[0]);
39}
40
41
42void __init prom_init_cmdline(void)
43{
44 char *cp;
45 int actr;
46
47 actr = 1; /* Always ignore argv[0] */
48
49 cp = &(arcs_cmdline[0]);
50 while(actr < prom_argc) {
51 strcpy(cp, prom_argv(actr));
52 cp += strlen(prom_argv(actr));
53 *cp++ = ' ';
54 actr++;
55 }
56 if (cp != &(arcs_cmdline[0])) /* get rid of trailing space */
57 --cp;
58 *cp = '\0';
59}
diff --git a/arch/mips/mips-boards/sim/sim_IRQ.c b/arch/mips/mips-boards/sim/sim_IRQ.c
new file mode 100644
index 000000000000..9987a85aabeb
--- /dev/null
+++ b/arch/mips/mips-boards/sim/sim_IRQ.c
@@ -0,0 +1,148 @@
1/*
2 * Carsten Langgaard, carstenl@mips.com
3 * Copyright (C) 1999, 2000 MIPS Technologies, Inc. All rights reserved.
4 *
5 * This program is free software; you can distribute it and/or modify it
6 * under the terms of the GNU General Public License (Version 2) as
7 * published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * for more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
17 *
18 * Interrupt exception dispatch code.
19 */
20#include <linux/config.h>
21
22#include <asm/asm.h>
23#include <asm/mipsregs.h>
24#include <asm/regdef.h>
25#include <asm/stackframe.h>
26
27/* A lot of complication here is taken away because:
28 *
29 * 1) We handle one interrupt and return, sitting in a loop and moving across
30 * all the pending IRQ bits in the cause register is _NOT_ the answer, the
31 * common case is one pending IRQ so optimize in that direction.
32 *
33 * 2) We need not check against bits in the status register IRQ mask, that
34 * would make this routine slow as hell.
35 *
36 * 3) Linux only thinks in terms of all IRQs on or all IRQs off, nothing in
37 * between like BSD spl() brain-damage.
38 *
39 * Furthermore, the IRQs on the MIPS board look basically (barring software
40 * IRQs which we don't use at all and all external interrupt sources are
41 * combined together on hardware interrupt 0 (MIPS IRQ 2)) like:
42 *
43 * MIPS IRQ Source
44 * -------- ------
45 * 0 Software (ignored)
46 * 1 Software (ignored)
47 * 2 Combined hardware interrupt (hw0)
48 * 3 Hardware (ignored)
49 * 4 Hardware (ignored)
50 * 5 Hardware (ignored)
51 * 6 Hardware (ignored)
52 * 7 R4k timer (what we use)
53 *
54 * Note: On the SEAD board thing are a little bit different.
55 * Here IRQ 2 (hw0) is wired to the UART0 and IRQ 3 (hw1) is wired
56 * wired to UART1.
57 *
58 * We handle the IRQ according to _our_ priority which is:
59 *
60 * Highest ---- R4k Timer
61 * Lowest ---- Combined hardware interrupt
62 *
63 * then we just return, if multiple IRQs are pending then we will just take
64 * another exception, big deal.
65 */
66
67 .text
68 .set noreorder
69 .set noat
70 .align 5
71 NESTED(mipsIRQ, PT_SIZE, sp)
72 SAVE_ALL
73 CLI
74 .set at
75
76 mfc0 s0, CP0_CAUSE # get irq bits
77 mfc0 s1, CP0_STATUS # get irq mask
78 and s0, s1
79
80 /* First we check for r4k counter/timer IRQ. */
81 andi a0, s0, CAUSEF_IP7
82 beq a0, zero, 1f
83 andi a0, s0, CAUSEF_IP2 # delay slot, check hw0 interrupt
84
85 /* Wheee, a timer interrupt. */
86 move a0, sp
87 jal mips_timer_interrupt
88 nop
89
90 j ret_from_irq
91 nop
92
931:
94#if defined(CONFIG_MIPS_SEAD)
95 beq a0, zero, 1f
96 andi a0, s0, CAUSEF_IP3 # delay slot, check hw1 interrupt
97#else
98 beq a0, zero, 1f # delay slot, check hw3 interrupt
99 andi a0, s0, CAUSEF_IP5
100#endif
101
102 /* Wheee, combined hardware level zero interrupt. */
103#if defined(CONFIG_MIPS_ATLAS)
104 jal atlas_hw0_irqdispatch
105#elif defined(CONFIG_MIPS_MALTA)
106 jal malta_hw0_irqdispatch
107#elif defined(CONFIG_MIPS_SEAD)
108 jal sead_hw0_irqdispatch
109#else
110#error "MIPS board not supported\n"
111#endif
112 move a0, sp # delay slot
113
114 j ret_from_irq
115 nop # delay slot
116
1171:
118#if defined(CONFIG_MIPS_SEAD)
119 beq a0, zero, 1f
120 andi a0, s0, CAUSEF_IP5 # delay slot, check hw3 interrupt
121 jal sead_hw1_irqdispatch
122 move a0, sp # delay slot
123 j ret_from_irq
124 nop # delay slot
1251:
126#endif
127#if defined(CONFIG_MIPS_MALTA)
128 beq a0, zero, 1f # check hw3 (coreHI) interrupt
129 nop
130 jal corehi_irqdispatch
131 move a0, sp
132 j ret_from_irq
133 nop
1341:
135#endif
136 /*
137 * Here by mistake? This is possible, what can happen is that by the
138 * time we take the exception the IRQ pin goes low, so just leave if
139 * this is the case.
140 */
141 move a1,s0
142 PRINT("Got interrupt: c0_cause = %08x\n")
143 mfc0 a1, CP0_EPC
144 PRINT("c0_epc = %08x\n")
145
146 j ret_from_irq
147 nop
148 END(mipsIRQ)
diff --git a/arch/mips/mips-boards/sim/sim_cmdline.c b/arch/mips/mips-boards/sim/sim_cmdline.c
new file mode 100644
index 000000000000..9df37c6fca36
--- /dev/null
+++ b/arch/mips/mips-boards/sim/sim_cmdline.c
@@ -0,0 +1,33 @@
1/*
2 * Copyright (C) 2005 MIPS Technologies, Inc. All rights reserved.
3 *
4 * This program is free software; you can distribute it and/or modify it
5 * under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * for more details.
12 *
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 *
17 */
18#include <linux/init.h>
19#include <linux/string.h>
20#include <asm/bootinfo.h>
21
22extern char arcs_cmdline[];
23
24char * __init prom_getcmdline(void)
25{
26 return arcs_cmdline;
27}
28
29
30void __init prom_init_cmdline(void)
31{
32 /* nothing to do */
33}
diff --git a/arch/mips/mips-boards/sim/sim_int.c b/arch/mips/mips-boards/sim/sim_int.c
new file mode 100644
index 000000000000..a4d0a2c05031
--- /dev/null
+++ b/arch/mips/mips-boards/sim/sim_int.c
@@ -0,0 +1,41 @@
1/*
2 * Copyright (C) 1999, 2005 MIPS Technologies, Inc. All rights reserved.
3 *
4 * This program is free software; you can distribute it and/or modify it
5 * under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * for more details.
12 *
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 *
17 */
18#include <linux/init.h>
19#include <linux/sched.h>
20#include <linux/slab.h>
21#include <linux/interrupt.h>
22#include <linux/kernel_stat.h>
23#include <asm/mips-boards/simint.h>
24
25
26extern void mips_cpu_irq_init(int);
27
28extern asmlinkage void simIRQ(void);
29
30asmlinkage void sim_hw0_irqdispatch(struct pt_regs *regs)
31{
32 do_IRQ(2, regs);
33}
34
35void __init arch_init_irq(void)
36{
37 /* Now safe to set the exception vector. */
38 set_except_vector(0, simIRQ);
39
40 mips_cpu_irq_init(MIPSCPU_INT_BASE);
41}
diff --git a/arch/mips/mips-boards/sim/sim_irq.S b/arch/mips/mips-boards/sim/sim_irq.S
new file mode 100644
index 000000000000..835f0387fcd4
--- /dev/null
+++ b/arch/mips/mips-boards/sim/sim_irq.S
@@ -0,0 +1,99 @@
1/*
2 * Copyright (C) 1999, 2005 MIPS Technologies, Inc. All rights reserved.
3 *
4 * This program is free software; you can distribute it and/or modify it
5 * under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * for more details.
12 *
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 *
17 * Interrupt exception dispatch code.
18 *
19 */
20#include <linux/config.h>
21
22#include <asm/asm.h>
23#include <asm/mipsregs.h>
24#include <asm/regdef.h>
25#include <asm/stackframe.h>
26
27#include <asm/mips-boards/simint.h>
28
29
30 .text
31 .set noreorder
32 .set noat
33 .align 5
34 NESTED(simIRQ, PT_SIZE, sp)
35 SAVE_ALL
36 CLI
37 .set at
38
39 mfc0 s0, CP0_CAUSE # get irq bits
40 mfc0 s1, CP0_STATUS # get irq mask
41 andi s0, ST0_IM # CAUSE.CE may be non-zero!
42 and s0, s1
43
44#if defined(CONFIG_CPU_MIPS32) || defined(CONFIG_CPU_MIPS64)
45 .set mips32
46 clz a0, s0
47 .set mips0
48 negu a0
49 addu a0, 31-CAUSEB_IP
50 bltz a0, spurious
51#else
52 beqz s0, spurious
53 li a0, 7
54
55 and t0, s0, 0xf000
56 sltiu t0, t0, 1
57 sll t0, 2
58 subu a0, t0
59 sll s0, t0
60
61 and t0, s0, 0xc000
62 sltiu t0, t0, 1
63 sll t0, 1
64 subu a0, t0
65 sll s0, t0
66
67 and t0, s0, 0x8000
68 sltiu t0, t0, 1
69 # sll t0, 0
70 subu a0, t0
71 # sll s0, t0
72#endif
73
74#ifdef CASCADE_IRQ
75 li a1, CASCADE_IRQ
76 bne a0, a1, 1f
77 addu a0, MIPSCPU_INT_BASE
78
79 jal CASCADE_DISPATCH
80 move a0, sp
81
82 j ret_from_irq
83 nop
841:
85#else
86 addu a0, MIPSCPU_INT_BASE
87#endif
88
89 jal do_IRQ
90 move a1, sp
91
92 j ret_from_irq
93 nop
94
95
96spurious:
97 j spurious_interrupt
98 nop
99 END(simIRQ)
diff --git a/arch/mips/mips-boards/sim/sim_mem.c b/arch/mips/mips-boards/sim/sim_mem.c
new file mode 100644
index 000000000000..0dbd7435bb2a
--- /dev/null
+++ b/arch/mips/mips-boards/sim/sim_mem.c
@@ -0,0 +1,129 @@
1/*
2 * Copyright (C) 2005 MIPS Technologies, Inc. All rights reserved.
3 *
4 * This program is free software; you can distribute it and/or modify it
5 * under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * for more details.
12 *
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 *
17 */
18#include <linux/init.h>
19#include <linux/mm.h>
20#include <linux/bootmem.h>
21
22#include <asm/bootinfo.h>
23#include <asm/page.h>
24
25#include <asm/mips-boards/prom.h>
26
27/*#define DEBUG*/
28
29enum simmem_memtypes {
30 simmem_reserved = 0,
31 simmem_free,
32};
33struct prom_pmemblock mdesc[PROM_MAX_PMEMBLOCKS];
34
35#ifdef DEBUG
36static char *mtypes[3] = {
37 "SIM reserved memory",
38 "SIM free memory",
39};
40#endif
41
42/* References to section boundaries */
43extern char _end;
44
45#define PFN_ALIGN(x) (((unsigned long)(x) + (PAGE_SIZE - 1)) & PAGE_MASK)
46
47
48struct prom_pmemblock * __init prom_getmdesc(void)
49{
50 unsigned int memsize;
51
52 memsize = 0x02000000;
53 prom_printf("Setting default memory size 0x%08x\n", memsize);
54
55 memset(mdesc, 0, sizeof(mdesc));
56
57 mdesc[0].type = simmem_reserved;
58 mdesc[0].base = 0x00000000;
59 mdesc[0].size = 0x00001000;
60
61 mdesc[1].type = simmem_free;
62 mdesc[1].base = 0x00001000;
63 mdesc[1].size = 0x000ff000;
64
65 mdesc[2].type = simmem_reserved;
66 mdesc[2].base = 0x00100000;
67 mdesc[2].size = CPHYSADDR(PFN_ALIGN(&_end)) - mdesc[2].base;
68
69 mdesc[3].type = simmem_free;
70 mdesc[3].base = CPHYSADDR(PFN_ALIGN(&_end));
71 mdesc[3].size = memsize - mdesc[3].base;
72
73 return &mdesc[0];
74}
75
76static int __init prom_memtype_classify (unsigned int type)
77{
78 switch (type) {
79 case simmem_free:
80 return BOOT_MEM_RAM;
81 case simmem_reserved:
82 default:
83 return BOOT_MEM_RESERVED;
84 }
85}
86
87void __init prom_meminit(void)
88{
89 struct prom_pmemblock *p;
90
91 p = prom_getmdesc();
92
93 while (p->size) {
94 long type;
95 unsigned long base, size;
96
97 type = prom_memtype_classify (p->type);
98 base = p->base;
99 size = p->size;
100
101 add_memory_region(base, size, type);
102 p++;
103 }
104}
105
106unsigned long __init prom_free_prom_memory(void)
107{
108 int i;
109 unsigned long freed = 0;
110 unsigned long addr;
111
112 for (i = 0; i < boot_mem_map.nr_map; i++) {
113 if (boot_mem_map.map[i].type != BOOT_MEM_ROM_DATA)
114 continue;
115
116 addr = boot_mem_map.map[i].addr;
117 while (addr < boot_mem_map.map[i].addr
118 + boot_mem_map.map[i].size) {
119 ClearPageReserved(virt_to_page(__va(addr)));
120 set_page_count(virt_to_page(__va(addr)), 1);
121 free_page((unsigned long)__va(addr));
122 addr += PAGE_SIZE;
123 freed += PAGE_SIZE;
124 }
125 }
126 printk("Freeing prom memory: %ldkb freed\n", freed >> 10);
127
128 return freed;
129}
diff --git a/arch/mips/mips-boards/sim/sim_printf.c b/arch/mips/mips-boards/sim/sim_printf.c
new file mode 100644
index 000000000000..3ee5a0b501a6
--- /dev/null
+++ b/arch/mips/mips-boards/sim/sim_printf.c
@@ -0,0 +1,74 @@
1/*
2 * Carsten Langgaard, carstenl@mips.com
3 * Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved.
4 *
5 * This program is free software; you can distribute it and/or modify it
6 * under the terms of the GNU General Public License (Version 2) as
7 * published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * for more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
17 *
18 * Putting things on the screen/serial line using YAMONs facilities.
19 */
20#include <linux/init.h>
21#include <linux/kernel.h>
22#include <linux/serial_reg.h>
23#include <linux/spinlock.h>
24#include <asm/io.h>
25#include <asm/system.h>
26
27static inline unsigned int serial_in(int offset)
28{
29 return inb(0x3f8 + offset);
30}
31
32static inline void serial_out(int offset, int value)
33{
34 outb(value, 0x3f8 + offset);
35}
36
37int putPromChar(char c)
38{
39 while ((serial_in(UART_LSR) & UART_LSR_THRE) == 0)
40 ;
41
42 serial_out(UART_TX, c);
43
44 return 1;
45}
46
47char getPromChar(void)
48{
49 while (!(serial_in(UART_LSR) & 1))
50 ;
51
52 return serial_in(UART_RX);
53}
54
55void prom_printf(char *fmt, ...)
56{
57 va_list args;
58 int l;
59 char *p, *buf_end;
60 char buf[1024];
61
62 va_start(args, fmt);
63 l = vsprintf(buf, fmt, args); /* hopefully i < sizeof(buf) */
64 va_end(args);
65
66 buf_end = buf + l;
67
68 for (p = buf; p < buf_end; p++) {
69 /* Crude cr/nl handling is better than none */
70 if (*p == '\n')
71 putPromChar('\r');
72 putPromChar(*p);
73 }
74}
diff --git a/arch/mips/mips-boards/sim/sim_setup.c b/arch/mips/mips-boards/sim/sim_setup.c
new file mode 100644
index 000000000000..485d5a58d9cf
--- /dev/null
+++ b/arch/mips/mips-boards/sim/sim_setup.c
@@ -0,0 +1,101 @@
1/*
2 * Copyright (C) 2005 MIPS Technologies, Inc. All rights reserved.
3 *
4 * This program is free software; you can distribute it and/or modify it
5 * under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * for more details.
12 *
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 *
17 */
18
19#include <linux/config.h>
20#include <linux/init.h>
21#include <linux/string.h>
22#include <linux/kernel.h>
23#include <linux/ioport.h>
24#include <linux/tty.h>
25#include <linux/serial.h>
26#include <linux/serial_core.h>
27
28#include <asm/cpu.h>
29#include <asm/bootinfo.h>
30#include <asm/irq.h>
31#include <asm/mips-boards/generic.h>
32#include <asm/mips-boards/prom.h>
33#include <asm/serial.h>
34#include <asm/io.h>
35#include <asm/time.h>
36#include <asm/mips-boards/sim.h>
37#include <asm/mips-boards/simint.h>
38
39
40extern void sim_time_init(void);
41extern void sim_timer_setup(struct irqaction *irq);
42static void __init serial_init(void);
43unsigned int _isbonito = 0;
44
45extern void __init sanitize_tlb_entries(void);
46
47
48const char *get_system_type(void)
49{
50 return "MIPSsim";
51}
52
53void __init plat_setup(void)
54{
55 set_io_port_base(0xbfd00000);
56
57 serial_init();
58
59 board_time_init = sim_time_init;
60 board_timer_setup = sim_timer_setup;
61 prom_printf("Linux started...\n");
62
63#ifdef CONFIG_MT_SMP
64 sanitize_tlb_entries();
65#endif
66}
67
68void prom_init(void)
69{
70 set_io_port_base(0xbfd00000);
71
72 prom_printf("\nLINUX started...\n");
73 prom_init_cmdline();
74 prom_meminit();
75}
76
77
78static void __init serial_init(void)
79{
80#ifdef CONFIG_SERIAL_8250
81 struct uart_port s;
82
83 memset(&s, 0, sizeof(s));
84
85 s.iobase = 0x3f8;
86
87 /* hardware int 4 - the serial int, is CPU int 6
88 but poll for now */
89 s.irq = 0;
90 s.uartclk = BASE_BAUD * 16;
91 s.flags = ASYNC_BOOT_AUTOCONF | UPF_SKIP_TEST;
92 s.iotype = SERIAL_IO_PORT | ASYNC_SKIP_TEST;
93 s.regshift = 0;
94 s.timeout = 4;
95
96 if (early_serial_setup(&s) != 0) {
97 prom_printf(KERN_ERR "Serial setup failed!\n");
98 }
99
100#endif
101}
diff --git a/arch/mips/mips-boards/sim/sim_smp.c b/arch/mips/mips-boards/sim/sim_smp.c
new file mode 100644
index 000000000000..19824359f5de
--- /dev/null
+++ b/arch/mips/mips-boards/sim/sim_smp.c
@@ -0,0 +1,151 @@
1/*
2 * Copyright (C) 2005 MIPS Technologies, Inc. All rights reserved.
3 *
4 * This program is free software; you can distribute it and/or modify it
5 * under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * for more details.
12 *
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 *
17 */
18/*
19 * Simulator Platform-specific hooks for SMP operation
20 */
21#include <linux/config.h>
22#include <linux/kernel.h>
23#include <linux/sched.h>
24#include <linux/cpumask.h>
25#include <linux/interrupt.h>
26#include <asm/atomic.h>
27#include <asm/cpu.h>
28#include <asm/processor.h>
29#include <asm/system.h>
30#include <asm/hardirq.h>
31#include <asm/mmu_context.h>
32#include <asm/smp.h>
33#ifdef CONFIG_MIPS_MT_SMTC
34#include <asm/smtc_ipi.h>
35#endif /* CONFIG_MIPS_MT_SMTC */
36
37/* VPE/SMP Prototype implements platform interfaces directly */
38#if !defined(CONFIG_MIPS_MT_SMP)
39
40/*
41 * Cause the specified action to be performed on a targeted "CPU"
42 */
43
44void core_send_ipi(int cpu, unsigned int action)
45{
46#ifdef CONFIG_MIPS_MT_SMTC
47 void smtc_send_ipi(int, int, unsigned int);
48
49 smtc_send_ipi(cpu, LINUX_SMP_IPI, action);
50#endif /* CONFIG_MIPS_MT_SMTC */
51/* "CPU" may be TC of same VPE, VPE of same CPU, or different CPU */
52
53}
54
55/*
56 * Detect available CPUs/VPEs/TCs and populate phys_cpu_present_map
57 */
58
59void __init prom_build_cpu_map(void)
60{
61#ifdef CONFIG_MIPS_MT_SMTC
62 extern int mipsmt_build_cpu_map(int startslot);
63 int nextslot;
64
65 cpus_clear(phys_cpu_present_map);
66
67 /* Register the boot CPU */
68
69 smp_prepare_boot_cpu();
70
71 /*
72 * As of November, 2004, MIPSsim only simulates one core
73 * at a time. However, that core may be a MIPS MT core
74 * with multiple virtual processors and thread contexts.
75 */
76
77 if (read_c0_config3() & (1<<2)) {
78 nextslot = mipsmt_build_cpu_map(1);
79 }
80#endif /* CONFIG_MIPS_MT_SMTC */
81}
82
83/*
84 * Platform "CPU" startup hook
85 */
86
87void prom_boot_secondary(int cpu, struct task_struct *idle)
88{
89#ifdef CONFIG_MIPS_MT_SMTC
90 extern void smtc_boot_secondary(int cpu, struct task_struct *t);
91
92 smtc_boot_secondary(cpu, idle);
93#endif /* CONFIG_MIPS_MT_SMTC */
94}
95
96/*
97 * Post-config but pre-boot cleanup entry point
98 */
99
100void prom_init_secondary(void)
101{
102#ifdef CONFIG_MIPS_MT_SMTC
103 void smtc_init_secondary(void);
104
105 smtc_init_secondary();
106#endif /* CONFIG_MIPS_MT_SMTC */
107}
108
109/*
110 * Platform SMP pre-initialization
111 */
112
113void prom_prepare_cpus(unsigned int max_cpus)
114{
115#ifdef CONFIG_MIPS_MT_SMTC
116 void mipsmt_prepare_cpus(int c);
117 /*
118 * As noted above, we can assume a single CPU for now
119 * but it may be multithreaded.
120 */
121
122 if (read_c0_config3() & (1<<2)) {
123 mipsmt_prepare_cpus(max_cpus);
124 }
125#endif /* CONFIG_MIPS_MT_SMTC */
126}
127
128/*
129 * SMP initialization finalization entry point
130 */
131
132void prom_smp_finish(void)
133{
134#ifdef CONFIG_MIPS_MT_SMTC
135 void smtc_smp_finish(void);
136
137 smtc_smp_finish();
138#endif /* CONFIG_MIPS_MT_SMTC */
139}
140
141/*
142 * Hook for after all CPUs are online
143 */
144
145void prom_cpus_done(void)
146{
147#ifdef CONFIG_MIPS_MT_SMTC
148
149#endif /* CONFIG_MIPS_MT_SMTC */
150}
151#endif /* CONFIG_MIPS32R2_MT_SMP */
diff --git a/arch/mips/mips-boards/sim/sim_time.c b/arch/mips/mips-boards/sim/sim_time.c
new file mode 100644
index 000000000000..18b968c696d1
--- /dev/null
+++ b/arch/mips/mips-boards/sim/sim_time.c
@@ -0,0 +1,215 @@
1#include <linux/types.h>
2#include <linux/config.h>
3#include <linux/init.h>
4#include <linux/kernel_stat.h>
5#include <linux/sched.h>
6#include <linux/spinlock.h>
7
8#include <asm/mipsregs.h>
9#include <asm/ptrace.h>
10#include <asm/hardirq.h>
11#include <asm/div64.h>
12#include <asm/cpu.h>
13#include <asm/time.h>
14
15#include <linux/interrupt.h>
16#include <linux/mc146818rtc.h>
17#include <linux/timex.h>
18#include <asm/mipsregs.h>
19#include <asm/ptrace.h>
20#include <asm/hardirq.h>
21#include <asm/irq.h>
22#include <asm/div64.h>
23#include <asm/cpu.h>
24#include <asm/time.h>
25#include <asm/mc146818-time.h>
26#include <asm/msc01_ic.h>
27
28#include <asm/mips-boards/generic.h>
29#include <asm/mips-boards/prom.h>
30#include <asm/mips-boards/simint.h>
31#include <asm/mc146818-time.h>
32#include <asm/smp.h>
33
34
35unsigned long cpu_khz;
36
37extern asmlinkage void ll_local_timer_interrupt(int irq, struct pt_regs *regs);
38
39irqreturn_t sim_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
40{
41#ifdef CONFIG_SMP
42 int cpu = smp_processor_id();
43
44 /*
45 * CPU 0 handles the global timer interrupt job
46 * resets count/compare registers to trigger next timer int.
47 */
48#ifndef CONFIG_MIPS_MT_SMTC
49 if (cpu == 0) {
50 timer_interrupt(irq, dev_id, regs);
51 }
52 else {
53 /* Everyone else needs to reset the timer int here as
54 ll_local_timer_interrupt doesn't */
55 /*
56 * FIXME: need to cope with counter underflow.
57 * More support needs to be added to kernel/time for
58 * counter/timer interrupts on multiple CPU's
59 */
60 write_c0_compare (read_c0_count() + ( mips_hpt_frequency/HZ));
61 }
62#else /* SMTC */
63 /*
64 * In SMTC system, one Count/Compare set exists per VPE.
65 * Which TC within a VPE gets the interrupt is essentially
66 * random - we only know that it shouldn't be one with
67 * IXMT set. Whichever TC gets the interrupt needs to
68 * send special interprocessor interrupts to the other
69 * TCs to make sure that they schedule, etc.
70 *
71 * That code is specific to the SMTC kernel, not to
72 * the simulation platform, so it's invoked from
73 * the general MIPS timer_interrupt routine.
74 *
75 * We have a problem in that the interrupt vector code
76 * had to turn off the timer IM bit to avoid redundant
77 * entries, but we may never get to mips_cpu_irq_end
78 * to turn it back on again if the scheduler gets
79 * involved. So we clear the pending timer here,
80 * and re-enable the mask...
81 */
82
83 int vpflags = dvpe();
84 write_c0_compare (read_c0_count() - 1);
85 clear_c0_cause(0x100 << MIPSCPU_INT_CPUCTR);
86 set_c0_status(0x100 << MIPSCPU_INT_CPUCTR);
87 irq_enable_hazard();
88 evpe(vpflags);
89
90 if(cpu_data[cpu].vpe_id == 0) timer_interrupt(irq, dev_id, regs);
91 else write_c0_compare (read_c0_count() + ( mips_hpt_frequency/HZ));
92 smtc_timer_broadcast(cpu_data[cpu].vpe_id);
93
94#endif /* CONFIG_MIPS_MT_SMTC */
95
96 /*
97 * every CPU should do profiling and process accounting
98 */
99 local_timer_interrupt (irq, dev_id, regs);
100 return IRQ_HANDLED;
101#else
102 return timer_interrupt (irq, dev_id, regs);
103#endif
104}
105
106
107
108/*
109 * Estimate CPU frequency. Sets mips_counter_frequency as a side-effect
110 */
111static unsigned int __init estimate_cpu_frequency(void)
112{
113 unsigned int prid = read_c0_prid() & 0xffff00;
114 unsigned int count;
115
116#if 1
117 /*
118 * hardwire the board frequency to 12MHz.
119 */
120
121 if ((prid == (PRID_COMP_MIPS | PRID_IMP_20KC)) ||
122 (prid == (PRID_COMP_MIPS | PRID_IMP_25KF)))
123 count = 12000000;
124 else
125 count = 6000000;
126#else
127 unsigned int flags;
128
129 local_irq_save(flags);
130
131 /* Start counter exactly on falling edge of update flag */
132 while (CMOS_READ(RTC_REG_A) & RTC_UIP);
133 while (!(CMOS_READ(RTC_REG_A) & RTC_UIP));
134
135 /* Start r4k counter. */
136 write_c0_count(0);
137
138 /* Read counter exactly on falling edge of update flag */
139 while (CMOS_READ(RTC_REG_A) & RTC_UIP);
140 while (!(CMOS_READ(RTC_REG_A) & RTC_UIP));
141
142 count = read_c0_count();
143
144 /* restore interrupts */
145 local_irq_restore(flags);
146#endif
147
148 mips_hpt_frequency = count;
149
150 if ((prid != (PRID_COMP_MIPS | PRID_IMP_20KC)) &&
151 (prid != (PRID_COMP_MIPS | PRID_IMP_25KF)))
152 count *= 2;
153
154 count += 5000; /* round */
155 count -= count%10000;
156
157 return count;
158}
159
160void __init sim_time_init(void)
161{
162 unsigned int est_freq, flags;
163
164 local_irq_save(flags);
165
166
167 /* Set Data mode - binary. */
168 CMOS_WRITE(CMOS_READ(RTC_CONTROL) | RTC_DM_BINARY, RTC_CONTROL);
169
170
171 est_freq = estimate_cpu_frequency ();
172
173 printk("CPU frequency %d.%02d MHz\n", est_freq/1000000,
174 (est_freq%1000000)*100/1000000);
175
176 cpu_khz = est_freq / 1000;
177
178 local_irq_restore(flags);
179}
180
181static int mips_cpu_timer_irq;
182
183static void mips_timer_dispatch (struct pt_regs *regs)
184{
185 do_IRQ (mips_cpu_timer_irq, regs);
186}
187
188
189void __init sim_timer_setup(struct irqaction *irq)
190{
191 if (cpu_has_veic) {
192 set_vi_handler(MSC01E_INT_CPUCTR, mips_timer_dispatch);
193 mips_cpu_timer_irq = MSC01E_INT_BASE + MSC01E_INT_CPUCTR;
194 }
195 else {
196 if (cpu_has_vint)
197 set_vi_handler(MIPSCPU_INT_CPUCTR, mips_timer_dispatch);
198 mips_cpu_timer_irq = MIPSCPU_INT_BASE + MIPSCPU_INT_CPUCTR;
199 }
200
201 /* we are using the cpu counter for timer interrupts */
202 irq->handler = sim_timer_interrupt;
203 setup_irq(mips_cpu_timer_irq, irq);
204
205#ifdef CONFIG_SMP
206 /* irq_desc(riptor) is a global resource, when the interrupt overlaps
207 on seperate cpu's the first one tries to handle the second interrupt.
208 The effect is that the int remains disabled on the second cpu.
209 Mark the interrupt with IRQ_PER_CPU to avoid any confusion */
210 irq_desc[mips_cpu_timer_irq].status |= IRQ_PER_CPU;
211#endif
212
213 /* to generate the first timer interrupt */
214 write_c0_compare(read_c0_count() + (mips_hpt_frequency/HZ));
215}
diff --git a/arch/mips/mm/Makefile b/arch/mips/mm/Makefile
index b56a0abdc3d4..b0178da019f0 100644
--- a/arch/mips/mm/Makefile
+++ b/arch/mips/mm/Makefile
@@ -22,7 +22,7 @@ obj-$(CONFIG_CPU_R8000) += c-r4k.o cex-gen.o pg-r4k.o tlb-r8k.o
22obj-$(CONFIG_CPU_RM7000) += c-r4k.o cex-gen.o pg-r4k.o tlb-r4k.o 22obj-$(CONFIG_CPU_RM7000) += c-r4k.o cex-gen.o pg-r4k.o tlb-r4k.o
23obj-$(CONFIG_CPU_RM9000) += c-r4k.o cex-gen.o pg-r4k.o tlb-r4k.o 23obj-$(CONFIG_CPU_RM9000) += c-r4k.o cex-gen.o pg-r4k.o tlb-r4k.o
24obj-$(CONFIG_CPU_SB1) += c-sb1.o cerr-sb1.o cex-sb1.o pg-sb1.o \ 24obj-$(CONFIG_CPU_SB1) += c-sb1.o cerr-sb1.o cex-sb1.o pg-sb1.o \
25 tlb-sb1.o 25 tlb-r4k.o
26obj-$(CONFIG_CPU_TX39XX) += c-tx39.o pg-r4k.o tlb-r3k.o 26obj-$(CONFIG_CPU_TX39XX) += c-tx39.o pg-r4k.o tlb-r3k.o
27obj-$(CONFIG_CPU_TX49XX) += c-r4k.o cex-gen.o pg-r4k.o tlb-r4k.o 27obj-$(CONFIG_CPU_TX49XX) += c-r4k.o cex-gen.o pg-r4k.o tlb-r4k.o
28obj-$(CONFIG_CPU_VR41XX) += c-r4k.o cex-gen.o pg-r4k.o tlb-r4k.o 28obj-$(CONFIG_CPU_VR41XX) += c-r4k.o cex-gen.o pg-r4k.o tlb-r4k.o
diff --git a/arch/mips/mm/c-r3k.c b/arch/mips/mm/c-r3k.c
index c659f99eb39a..27f4fa25e8c9 100644
--- a/arch/mips/mm/c-r3k.c
+++ b/arch/mips/mm/c-r3k.c
@@ -221,12 +221,14 @@ static inline unsigned long get_phys_page (unsigned long addr,
221 struct mm_struct *mm) 221 struct mm_struct *mm)
222{ 222{
223 pgd_t *pgd; 223 pgd_t *pgd;
224 pud_t *pud;
224 pmd_t *pmd; 225 pmd_t *pmd;
225 pte_t *pte; 226 pte_t *pte;
226 unsigned long physpage; 227 unsigned long physpage;
227 228
228 pgd = pgd_offset(mm, addr); 229 pgd = pgd_offset(mm, addr);
229 pmd = pmd_offset(pgd, addr); 230 pud = pud_offset(pgd, addr);
231 pmd = pmd_offset(pud, addr);
230 pte = pte_offset(pmd, addr); 232 pte = pte_offset(pmd, addr);
231 233
232 if ((physpage = pte_val(*pte)) & _PAGE_VALID) 234 if ((physpage = pte_val(*pte)) & _PAGE_VALID)
@@ -317,7 +319,7 @@ static void r3k_dma_cache_wback_inv(unsigned long start, unsigned long size)
317 r3k_flush_dcache_range(start, start + size); 319 r3k_flush_dcache_range(start, start + size);
318} 320}
319 321
320void __init ld_mmu_r23000(void) 322void __init r3k_cache_init(void)
321{ 323{
322 extern void build_clear_page(void); 324 extern void build_clear_page(void);
323 extern void build_copy_page(void); 325 extern void build_copy_page(void);
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c
index 5ea84bc98c6a..38223b44d962 100644
--- a/arch/mips/mm/c-r4k.c
+++ b/arch/mips/mm/c-r4k.c
@@ -16,6 +16,7 @@
16 16
17#include <asm/bcache.h> 17#include <asm/bcache.h>
18#include <asm/bootinfo.h> 18#include <asm/bootinfo.h>
19#include <asm/cache.h>
19#include <asm/cacheops.h> 20#include <asm/cacheops.h>
20#include <asm/cpu.h> 21#include <asm/cpu.h>
21#include <asm/cpu-features.h> 22#include <asm/cpu-features.h>
@@ -26,8 +27,14 @@
26#include <asm/system.h> 27#include <asm/system.h>
27#include <asm/mmu_context.h> 28#include <asm/mmu_context.h>
28#include <asm/war.h> 29#include <asm/war.h>
30#include <asm/cacheflush.h> /* for run_uncached() */
29 31
30static unsigned long icache_size, dcache_size, scache_size; 32/*
33 * Must die.
34 */
35static unsigned long icache_size __read_mostly;
36static unsigned long dcache_size __read_mostly;
37static unsigned long scache_size __read_mostly;
31 38
32/* 39/*
33 * Dummy cache handling routines for machines without boardcaches 40 * Dummy cache handling routines for machines without boardcaches
@@ -43,8 +50,8 @@ static struct bcache_ops no_sc_ops = {
43 50
44struct bcache_ops *bcops = &no_sc_ops; 51struct bcache_ops *bcops = &no_sc_ops;
45 52
46#define cpu_is_r4600_v1_x() ((read_c0_prid() & 0xfffffff0) == 0x2010) 53#define cpu_is_r4600_v1_x() ((read_c0_prid() & 0xfffffff0) == 0x00002010)
47#define cpu_is_r4600_v2_x() ((read_c0_prid() & 0xfffffff0) == 0x2020) 54#define cpu_is_r4600_v2_x() ((read_c0_prid() & 0xfffffff0) == 0x00002020)
48 55
49#define R4600_HIT_CACHEOP_WAR_IMPL \ 56#define R4600_HIT_CACHEOP_WAR_IMPL \
50do { \ 57do { \
@@ -190,12 +197,12 @@ static inline void r4k_blast_icache_page_indexed_setup(void)
190 if (ic_lsize == 16) 197 if (ic_lsize == 16)
191 r4k_blast_icache_page_indexed = blast_icache16_page_indexed; 198 r4k_blast_icache_page_indexed = blast_icache16_page_indexed;
192 else if (ic_lsize == 32) { 199 else if (ic_lsize == 32) {
193 if (TX49XX_ICACHE_INDEX_INV_WAR) 200 if (R4600_V1_INDEX_ICACHEOP_WAR && cpu_is_r4600_v1_x())
194 r4k_blast_icache_page_indexed =
195 tx49_blast_icache32_page_indexed;
196 else if (R4600_V1_INDEX_ICACHEOP_WAR && cpu_is_r4600_v1_x())
197 r4k_blast_icache_page_indexed = 201 r4k_blast_icache_page_indexed =
198 blast_icache32_r4600_v1_page_indexed; 202 blast_icache32_r4600_v1_page_indexed;
203 else if (TX49XX_ICACHE_INDEX_INV_WAR)
204 r4k_blast_icache_page_indexed =
205 tx49_blast_icache32_page_indexed;
199 else 206 else
200 r4k_blast_icache_page_indexed = 207 r4k_blast_icache_page_indexed =
201 blast_icache32_page_indexed; 208 blast_icache32_page_indexed;
@@ -361,24 +368,33 @@ static void r4k_flush_cache_mm(struct mm_struct *mm)
361 368
362struct flush_cache_page_args { 369struct flush_cache_page_args {
363 struct vm_area_struct *vma; 370 struct vm_area_struct *vma;
364 unsigned long page; 371 unsigned long addr;
365}; 372};
366 373
367static inline void local_r4k_flush_cache_page(void *args) 374static inline void local_r4k_flush_cache_page(void *args)
368{ 375{
369 struct flush_cache_page_args *fcp_args = args; 376 struct flush_cache_page_args *fcp_args = args;
370 struct vm_area_struct *vma = fcp_args->vma; 377 struct vm_area_struct *vma = fcp_args->vma;
371 unsigned long page = fcp_args->page; 378 unsigned long addr = fcp_args->addr;
372 int exec = vma->vm_flags & VM_EXEC; 379 int exec = vma->vm_flags & VM_EXEC;
373 struct mm_struct *mm = vma->vm_mm; 380 struct mm_struct *mm = vma->vm_mm;
374 pgd_t *pgdp; 381 pgd_t *pgdp;
382 pud_t *pudp;
375 pmd_t *pmdp; 383 pmd_t *pmdp;
376 pte_t *ptep; 384 pte_t *ptep;
377 385
378 page &= PAGE_MASK; 386 /*
379 pgdp = pgd_offset(mm, page); 387 * If ownes no valid ASID yet, cannot possibly have gotten
380 pmdp = pmd_offset(pgdp, page); 388 * this page into the cache.
381 ptep = pte_offset(pmdp, page); 389 */
390 if (cpu_context(smp_processor_id(), mm) == 0)
391 return;
392
393 addr &= PAGE_MASK;
394 pgdp = pgd_offset(mm, addr);
395 pudp = pud_offset(pgdp, addr);
396 pmdp = pmd_offset(pudp, addr);
397 ptep = pte_offset(pmdp, addr);
382 398
383 /* 399 /*
384 * If the page isn't marked valid, the page cannot possibly be 400 * If the page isn't marked valid, the page cannot possibly be
@@ -395,12 +411,12 @@ static inline void local_r4k_flush_cache_page(void *args)
395 */ 411 */
396 if ((mm == current->active_mm) && (pte_val(*ptep) & _PAGE_VALID)) { 412 if ((mm == current->active_mm) && (pte_val(*ptep) & _PAGE_VALID)) {
397 if (cpu_has_dc_aliases || (exec && !cpu_has_ic_fills_f_dc)) { 413 if (cpu_has_dc_aliases || (exec && !cpu_has_ic_fills_f_dc)) {
398 r4k_blast_dcache_page(page); 414 r4k_blast_dcache_page(addr);
399 if (exec && !cpu_icache_snoops_remote_store) 415 if (exec && !cpu_icache_snoops_remote_store)
400 r4k_blast_scache_page(page); 416 r4k_blast_scache_page(addr);
401 } 417 }
402 if (exec) 418 if (exec)
403 r4k_blast_icache_page(page); 419 r4k_blast_icache_page(addr);
404 420
405 return; 421 return;
406 } 422 }
@@ -409,36 +425,30 @@ static inline void local_r4k_flush_cache_page(void *args)
409 * Do indexed flush, too much work to get the (possible) TLB refills 425 * Do indexed flush, too much work to get the (possible) TLB refills
410 * to work correctly. 426 * to work correctly.
411 */ 427 */
412 page = INDEX_BASE + (page & (dcache_size - 1)); 428 addr = INDEX_BASE + (addr & (dcache_size - 1));
413 if (cpu_has_dc_aliases || (exec && !cpu_has_ic_fills_f_dc)) { 429 if (cpu_has_dc_aliases || (exec && !cpu_has_ic_fills_f_dc)) {
414 r4k_blast_dcache_page_indexed(page); 430 r4k_blast_dcache_page_indexed(addr);
415 if (exec && !cpu_icache_snoops_remote_store) 431 if (exec && !cpu_icache_snoops_remote_store)
416 r4k_blast_scache_page_indexed(page); 432 r4k_blast_scache_page_indexed(addr);
417 } 433 }
418 if (exec) { 434 if (exec) {
419 if (cpu_has_vtag_icache) { 435 if (cpu_has_vtag_icache) {
420 int cpu = smp_processor_id(); 436 int cpu = smp_processor_id();
421 437
422 if (cpu_context(cpu, vma->vm_mm) != 0) 438 if (cpu_context(cpu, mm) != 0)
423 drop_mmu_context(vma->vm_mm, cpu); 439 drop_mmu_context(mm, cpu);
424 } else 440 } else
425 r4k_blast_icache_page_indexed(page); 441 r4k_blast_icache_page_indexed(addr);
426 } 442 }
427} 443}
428 444
429static void r4k_flush_cache_page(struct vm_area_struct *vma, unsigned long page, unsigned long pfn) 445static void r4k_flush_cache_page(struct vm_area_struct *vma,
446 unsigned long addr, unsigned long pfn)
430{ 447{
431 struct flush_cache_page_args args; 448 struct flush_cache_page_args args;
432 449
433 /*
434 * If ownes no valid ASID yet, cannot possibly have gotten
435 * this page into the cache.
436 */
437 if (cpu_context(smp_processor_id(), vma->vm_mm) == 0)
438 return;
439
440 args.vma = vma; 450 args.vma = vma;
441 args.page = page; 451 args.addr = addr;
442 452
443 on_each_cpu(local_r4k_flush_cache_page, &args, 1, 1); 453 on_each_cpu(local_r4k_flush_cache_page, &args, 1, 1);
444} 454}
@@ -454,16 +464,16 @@ static void r4k_flush_data_cache_page(unsigned long addr)
454} 464}
455 465
456struct flush_icache_range_args { 466struct flush_icache_range_args {
457 unsigned long start; 467 unsigned long __user start;
458 unsigned long end; 468 unsigned long __user end;
459}; 469};
460 470
461static inline void local_r4k_flush_icache_range(void *args) 471static inline void local_r4k_flush_icache_range(void *args)
462{ 472{
463 struct flush_icache_range_args *fir_args = args; 473 struct flush_icache_range_args *fir_args = args;
464 unsigned long dc_lsize = current_cpu_data.dcache.linesz; 474 unsigned long dc_lsize = cpu_dcache_line_size();
465 unsigned long ic_lsize = current_cpu_data.icache.linesz; 475 unsigned long ic_lsize = cpu_icache_line_size();
466 unsigned long sc_lsize = current_cpu_data.scache.linesz; 476 unsigned long sc_lsize = cpu_scache_line_size();
467 unsigned long start = fir_args->start; 477 unsigned long start = fir_args->start;
468 unsigned long end = fir_args->end; 478 unsigned long end = fir_args->end;
469 unsigned long addr, aend; 479 unsigned long addr, aend;
@@ -472,6 +482,7 @@ static inline void local_r4k_flush_icache_range(void *args)
472 if (end - start > dcache_size) { 482 if (end - start > dcache_size) {
473 r4k_blast_dcache(); 483 r4k_blast_dcache();
474 } else { 484 } else {
485 R4600_HIT_CACHEOP_WAR_IMPL;
475 addr = start & ~(dc_lsize - 1); 486 addr = start & ~(dc_lsize - 1);
476 aend = (end - 1) & ~(dc_lsize - 1); 487 aend = (end - 1) & ~(dc_lsize - 1);
477 488
@@ -492,7 +503,7 @@ static inline void local_r4k_flush_icache_range(void *args)
492 aend = (end - 1) & ~(sc_lsize - 1); 503 aend = (end - 1) & ~(sc_lsize - 1);
493 504
494 while (1) { 505 while (1) {
495 /* Hit_Writeback_Inv_D */ 506 /* Hit_Writeback_Inv_SD */
496 protected_writeback_scache_line(addr); 507 protected_writeback_scache_line(addr);
497 if (addr == aend) 508 if (addr == aend)
498 break; 509 break;
@@ -517,7 +528,8 @@ static inline void local_r4k_flush_icache_range(void *args)
517 } 528 }
518} 529}
519 530
520static void r4k_flush_icache_range(unsigned long start, unsigned long end) 531static void r4k_flush_icache_range(unsigned long __user start,
532 unsigned long __user end)
521{ 533{
522 struct flush_icache_range_args args; 534 struct flush_icache_range_args args;
523 535
@@ -525,6 +537,7 @@ static void r4k_flush_icache_range(unsigned long start, unsigned long end)
525 args.end = end; 537 args.end = end;
526 538
527 on_each_cpu(local_r4k_flush_icache_range, &args, 1, 1); 539 on_each_cpu(local_r4k_flush_icache_range, &args, 1, 1);
540 instruction_hazard();
528} 541}
529 542
530/* 543/*
@@ -613,7 +626,7 @@ static void r4k_dma_cache_wback_inv(unsigned long addr, unsigned long size)
613 BUG_ON(size == 0); 626 BUG_ON(size == 0);
614 627
615 if (cpu_has_subset_pcaches) { 628 if (cpu_has_subset_pcaches) {
616 unsigned long sc_lsize = current_cpu_data.scache.linesz; 629 unsigned long sc_lsize = cpu_scache_line_size();
617 630
618 if (size >= scache_size) { 631 if (size >= scache_size) {
619 r4k_blast_scache(); 632 r4k_blast_scache();
@@ -639,7 +652,7 @@ static void r4k_dma_cache_wback_inv(unsigned long addr, unsigned long size)
639 if (size >= dcache_size) { 652 if (size >= dcache_size) {
640 r4k_blast_dcache(); 653 r4k_blast_dcache();
641 } else { 654 } else {
642 unsigned long dc_lsize = current_cpu_data.dcache.linesz; 655 unsigned long dc_lsize = cpu_dcache_line_size();
643 656
644 R4600_HIT_CACHEOP_WAR_IMPL; 657 R4600_HIT_CACHEOP_WAR_IMPL;
645 a = addr & ~(dc_lsize - 1); 658 a = addr & ~(dc_lsize - 1);
@@ -663,7 +676,7 @@ static void r4k_dma_cache_inv(unsigned long addr, unsigned long size)
663 BUG_ON(size == 0); 676 BUG_ON(size == 0);
664 677
665 if (cpu_has_subset_pcaches) { 678 if (cpu_has_subset_pcaches) {
666 unsigned long sc_lsize = current_cpu_data.scache.linesz; 679 unsigned long sc_lsize = cpu_scache_line_size();
667 680
668 if (size >= scache_size) { 681 if (size >= scache_size) {
669 r4k_blast_scache(); 682 r4k_blast_scache();
@@ -684,7 +697,7 @@ static void r4k_dma_cache_inv(unsigned long addr, unsigned long size)
684 if (size >= dcache_size) { 697 if (size >= dcache_size) {
685 r4k_blast_dcache(); 698 r4k_blast_dcache();
686 } else { 699 } else {
687 unsigned long dc_lsize = current_cpu_data.dcache.linesz; 700 unsigned long dc_lsize = cpu_dcache_line_size();
688 701
689 R4600_HIT_CACHEOP_WAR_IMPL; 702 R4600_HIT_CACHEOP_WAR_IMPL;
690 a = addr & ~(dc_lsize - 1); 703 a = addr & ~(dc_lsize - 1);
@@ -708,9 +721,9 @@ static void r4k_dma_cache_inv(unsigned long addr, unsigned long size)
708 */ 721 */
709static void local_r4k_flush_cache_sigtramp(void * arg) 722static void local_r4k_flush_cache_sigtramp(void * arg)
710{ 723{
711 unsigned long ic_lsize = current_cpu_data.icache.linesz; 724 unsigned long ic_lsize = cpu_icache_line_size();
712 unsigned long dc_lsize = current_cpu_data.dcache.linesz; 725 unsigned long dc_lsize = cpu_dcache_line_size();
713 unsigned long sc_lsize = current_cpu_data.scache.linesz; 726 unsigned long sc_lsize = cpu_scache_line_size();
714 unsigned long addr = (unsigned long) arg; 727 unsigned long addr = (unsigned long) arg;
715 728
716 R4600_HIT_CACHEOP_WAR_IMPL; 729 R4600_HIT_CACHEOP_WAR_IMPL;
@@ -762,6 +775,7 @@ static inline void rm7k_erratum31(void)
762 775
763 for (addr = INDEX_BASE; addr <= INDEX_BASE + 4096; addr += ic_lsize) { 776 for (addr = INDEX_BASE; addr <= INDEX_BASE + 4096; addr += ic_lsize) {
764 __asm__ __volatile__ ( 777 __asm__ __volatile__ (
778 ".set push\n\t"
765 ".set noreorder\n\t" 779 ".set noreorder\n\t"
766 ".set mips3\n\t" 780 ".set mips3\n\t"
767 "cache\t%1, 0(%0)\n\t" 781 "cache\t%1, 0(%0)\n\t"
@@ -776,8 +790,7 @@ static inline void rm7k_erratum31(void)
776 "cache\t%1, 0x1000(%0)\n\t" 790 "cache\t%1, 0x1000(%0)\n\t"
777 "cache\t%1, 0x2000(%0)\n\t" 791 "cache\t%1, 0x2000(%0)\n\t"
778 "cache\t%1, 0x3000(%0)\n\t" 792 "cache\t%1, 0x3000(%0)\n\t"
779 ".set\tmips0\n\t" 793 ".set pop\n"
780 ".set\treorder\n\t"
781 : 794 :
782 : "r" (addr), "i" (Index_Store_Tag_I), "i" (Fill)); 795 : "r" (addr), "i" (Index_Store_Tag_I), "i" (Fill));
783 } 796 }
@@ -1011,9 +1024,19 @@ static void __init probe_pcache(void)
1011 * normally they'd suffer from aliases but magic in the hardware deals 1024 * normally they'd suffer from aliases but magic in the hardware deals
1012 * with that for us so we don't need to take care ourselves. 1025 * with that for us so we don't need to take care ourselves.
1013 */ 1026 */
1014 if (c->cputype != CPU_R10000 && c->cputype != CPU_R12000) 1027 switch (c->cputype) {
1015 if (c->dcache.waysize > PAGE_SIZE) 1028 case CPU_20KC:
1016 c->dcache.flags |= MIPS_CACHE_ALIASES; 1029 case CPU_25KF:
1030 case CPU_R10000:
1031 case CPU_R12000:
1032 case CPU_SB1:
1033 break;
1034 case CPU_24K:
1035 if (!(read_c0_config7() & (1 << 16)))
1036 default:
1037 if (c->dcache.waysize > PAGE_SIZE)
1038 c->dcache.flags |= MIPS_CACHE_ALIASES;
1039 }
1017 1040
1018 switch (c->cputype) { 1041 switch (c->cputype) {
1019 case CPU_20KC: 1042 case CPU_20KC:
@@ -1024,7 +1047,11 @@ static void __init probe_pcache(void)
1024 c->icache.flags |= MIPS_CACHE_VTAG; 1047 c->icache.flags |= MIPS_CACHE_VTAG;
1025 break; 1048 break;
1026 1049
1050 case CPU_AU1000:
1027 case CPU_AU1500: 1051 case CPU_AU1500:
1052 case CPU_AU1100:
1053 case CPU_AU1550:
1054 case CPU_AU1200:
1028 c->icache.flags |= MIPS_CACHE_IC_F_DC; 1055 c->icache.flags |= MIPS_CACHE_IC_F_DC;
1029 break; 1056 break;
1030 } 1057 }
@@ -1102,7 +1129,6 @@ static int __init probe_scache(void)
1102 return 1; 1129 return 1;
1103} 1130}
1104 1131
1105typedef int (*probe_func_t)(unsigned long);
1106extern int r5k_sc_init(void); 1132extern int r5k_sc_init(void);
1107extern int rm7k_sc_init(void); 1133extern int rm7k_sc_init(void);
1108 1134
@@ -1110,7 +1136,6 @@ static void __init setup_scache(void)
1110{ 1136{
1111 struct cpuinfo_mips *c = &current_cpu_data; 1137 struct cpuinfo_mips *c = &current_cpu_data;
1112 unsigned int config = read_c0_config(); 1138 unsigned int config = read_c0_config();
1113 probe_func_t probe_scache_kseg1;
1114 int sc_present = 0; 1139 int sc_present = 0;
1115 1140
1116 /* 1141 /*
@@ -1123,8 +1148,7 @@ static void __init setup_scache(void)
1123 case CPU_R4000MC: 1148 case CPU_R4000MC:
1124 case CPU_R4400SC: 1149 case CPU_R4400SC:
1125 case CPU_R4400MC: 1150 case CPU_R4400MC:
1126 probe_scache_kseg1 = (probe_func_t) (CKSEG1ADDR(&probe_scache)); 1151 sc_present = run_uncached(probe_scache);
1127 sc_present = probe_scache_kseg1(config);
1128 if (sc_present) 1152 if (sc_present)
1129 c->options |= MIPS_CPU_CACHE_CDEX_S; 1153 c->options |= MIPS_CPU_CACHE_CDEX_S;
1130 break; 1154 break;
@@ -1198,7 +1222,7 @@ static inline void coherency_setup(void)
1198 } 1222 }
1199} 1223}
1200 1224
1201void __init ld_mmu_r4xx0(void) 1225void __init r4k_cache_init(void)
1202{ 1226{
1203 extern void build_clear_page(void); 1227 extern void build_clear_page(void);
1204 extern void build_copy_page(void); 1228 extern void build_copy_page(void);
@@ -1206,15 +1230,11 @@ void __init ld_mmu_r4xx0(void)
1206 struct cpuinfo_mips *c = &current_cpu_data; 1230 struct cpuinfo_mips *c = &current_cpu_data;
1207 1231
1208 /* Default cache error handler for R4000 and R5000 family */ 1232 /* Default cache error handler for R4000 and R5000 family */
1209 memcpy((void *)(CAC_BASE + 0x100), &except_vec2_generic, 0x80); 1233 set_uncached_handler (0x100, &except_vec2_generic, 0x80);
1210 memcpy((void *)(UNCAC_BASE + 0x100), &except_vec2_generic, 0x80);
1211 1234
1212 probe_pcache(); 1235 probe_pcache();
1213 setup_scache(); 1236 setup_scache();
1214 1237
1215 if (c->dcache.sets * c->dcache.ways > PAGE_SIZE)
1216 c->dcache.flags |= MIPS_CACHE_ALIASES;
1217
1218 r4k_blast_dcache_page_setup(); 1238 r4k_blast_dcache_page_setup();
1219 r4k_blast_dcache_page_indexed_setup(); 1239 r4k_blast_dcache_page_indexed_setup();
1220 r4k_blast_dcache_setup(); 1240 r4k_blast_dcache_setup();
@@ -1252,9 +1272,8 @@ void __init ld_mmu_r4xx0(void)
1252 _dma_cache_inv = r4k_dma_cache_inv; 1272 _dma_cache_inv = r4k_dma_cache_inv;
1253#endif 1273#endif
1254 1274
1255 __flush_cache_all();
1256 coherency_setup();
1257
1258 build_clear_page(); 1275 build_clear_page();
1259 build_copy_page(); 1276 build_copy_page();
1277 local_r4k___flush_cache_all(NULL);
1278 coherency_setup();
1260} 1279}
diff --git a/arch/mips/mm/c-sb1.c b/arch/mips/mm/c-sb1.c
index 502f68c664b2..2f08b535f20e 100644
--- a/arch/mips/mm/c-sb1.c
+++ b/arch/mips/mm/c-sb1.c
@@ -235,7 +235,7 @@ static inline void __sb1_flush_icache_range(unsigned long start,
235/* 235/*
236 * Invalidate all caches on this CPU 236 * Invalidate all caches on this CPU
237 */ 237 */
238static void local_sb1___flush_cache_all(void) 238static void __attribute_used__ local_sb1___flush_cache_all(void)
239{ 239{
240 __sb1_writeback_inv_dcache_all(); 240 __sb1_writeback_inv_dcache_all();
241 __sb1_flush_icache_all(); 241 __sb1_flush_icache_all();
@@ -492,19 +492,17 @@ static __init void probe_cache_sizes(void)
492} 492}
493 493
494/* 494/*
495 * This is called from loadmmu.c. We have to set up all the 495 * This is called from cache.c. We have to set up all the
496 * memory management function pointers, as well as initialize 496 * memory management function pointers, as well as initialize
497 * the caches and tlbs 497 * the caches and tlbs
498 */ 498 */
499void ld_mmu_sb1(void) 499void sb1_cache_init(void)
500{ 500{
501 extern char except_vec2_sb1; 501 extern char except_vec2_sb1;
502 extern char handle_vec2_sb1; 502 extern char handle_vec2_sb1;
503 503
504 /* Special cache error handler for SB1 */ 504 /* Special cache error handler for SB1 */
505 memcpy((void *)(CAC_BASE + 0x100), &except_vec2_sb1, 0x80); 505 set_uncached_handler (0x100, &except_vec2_sb1, 0x80);
506 memcpy((void *)(UNCAC_BASE + 0x100), &except_vec2_sb1, 0x80);
507 memcpy((void *)CKSEG1ADDR(&handle_vec2_sb1), &handle_vec2_sb1, 0x80);
508 506
509 probe_cache_sizes(); 507 probe_cache_sizes();
510 508
diff --git a/arch/mips/mm/c-tx39.c b/arch/mips/mm/c-tx39.c
index ff5afab64b2f..0a97a9434eba 100644
--- a/arch/mips/mm/c-tx39.c
+++ b/arch/mips/mm/c-tx39.c
@@ -167,15 +167,16 @@ static void tx39_flush_cache_mm(struct mm_struct *mm)
167static void tx39_flush_cache_range(struct vm_area_struct *vma, 167static void tx39_flush_cache_range(struct vm_area_struct *vma,
168 unsigned long start, unsigned long end) 168 unsigned long start, unsigned long end)
169{ 169{
170 struct mm_struct *mm = vma->vm_mm; 170 int exec;
171 171
172 if (!cpu_has_dc_aliases) 172 if (!(cpu_context(smp_processor_id(), vma->vm_mm)))
173 return; 173 return;
174 174
175 if (cpu_context(smp_processor_id(), mm) != 0) { 175 exec = vma->vm_flags & VM_EXEC;
176 if (cpu_has_dc_aliases || exec)
176 tx39_blast_dcache(); 177 tx39_blast_dcache();
178 if (exec)
177 tx39_blast_icache(); 179 tx39_blast_icache();
178 }
179} 180}
180 181
181static void tx39_flush_cache_page(struct vm_area_struct *vma, unsigned long page, unsigned long pfn) 182static void tx39_flush_cache_page(struct vm_area_struct *vma, unsigned long page, unsigned long pfn)
@@ -183,6 +184,7 @@ static void tx39_flush_cache_page(struct vm_area_struct *vma, unsigned long page
183 int exec = vma->vm_flags & VM_EXEC; 184 int exec = vma->vm_flags & VM_EXEC;
184 struct mm_struct *mm = vma->vm_mm; 185 struct mm_struct *mm = vma->vm_mm;
185 pgd_t *pgdp; 186 pgd_t *pgdp;
187 pud_t *pudp;
186 pmd_t *pmdp; 188 pmd_t *pmdp;
187 pte_t *ptep; 189 pte_t *ptep;
188 190
@@ -195,7 +197,8 @@ static void tx39_flush_cache_page(struct vm_area_struct *vma, unsigned long page
195 197
196 page &= PAGE_MASK; 198 page &= PAGE_MASK;
197 pgdp = pgd_offset(mm, page); 199 pgdp = pgd_offset(mm, page);
198 pmdp = pmd_offset(pgdp, page); 200 pudp = pud_offset(pgdp, page);
201 pmdp = pmd_offset(pudp, page);
199 ptep = pte_offset(pmdp, page); 202 ptep = pte_offset(pmdp, page);
200 203
201 /* 204 /*
@@ -407,7 +410,7 @@ static __init void tx39_probe_cache(void)
407 } 410 }
408} 411}
409 412
410void __init ld_mmu_tx39(void) 413void __init tx39_cache_init(void)
411{ 414{
412 extern void build_clear_page(void); 415 extern void build_clear_page(void);
413 extern void build_copy_page(void); 416 extern void build_copy_page(void);
@@ -490,4 +493,5 @@ void __init ld_mmu_tx39(void)
490 493
491 build_clear_page(); 494 build_clear_page();
492 build_copy_page(); 495 build_copy_page();
496 tx39h_flush_icache_all();
493} 497}
diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c
index 1d95cdb77bed..314701a66b13 100644
--- a/arch/mips/mm/cache.c
+++ b/arch/mips/mm/cache.c
@@ -23,8 +23,10 @@ void (*__flush_cache_all)(void);
23void (*flush_cache_mm)(struct mm_struct *mm); 23void (*flush_cache_mm)(struct mm_struct *mm);
24void (*flush_cache_range)(struct vm_area_struct *vma, unsigned long start, 24void (*flush_cache_range)(struct vm_area_struct *vma, unsigned long start,
25 unsigned long end); 25 unsigned long end);
26void (*flush_cache_page)(struct vm_area_struct *vma, unsigned long page, unsigned long pfn); 26void (*flush_cache_page)(struct vm_area_struct *vma, unsigned long page,
27void (*flush_icache_range)(unsigned long start, unsigned long end); 27 unsigned long pfn);
28void (*flush_icache_range)(unsigned long __user start,
29 unsigned long __user end);
28void (*flush_icache_page)(struct vm_area_struct *vma, struct page *page); 30void (*flush_icache_page)(struct vm_area_struct *vma, struct page *page);
29 31
30/* MIPS specific cache operations */ 32/* MIPS specific cache operations */
@@ -32,6 +34,8 @@ void (*flush_cache_sigtramp)(unsigned long addr);
32void (*flush_data_cache_page)(unsigned long addr); 34void (*flush_data_cache_page)(unsigned long addr);
33void (*flush_icache_all)(void); 35void (*flush_icache_all)(void);
34 36
37EXPORT_SYMBOL(flush_data_cache_page);
38
35#ifdef CONFIG_DMA_NONCOHERENT 39#ifdef CONFIG_DMA_NONCOHERENT
36 40
37/* DMA cache operations. */ 41/* DMA cache operations. */
@@ -49,10 +53,12 @@ EXPORT_SYMBOL(_dma_cache_inv);
49 * We could optimize the case where the cache argument is not BCACHE but 53 * We could optimize the case where the cache argument is not BCACHE but
50 * that seems very atypical use ... 54 * that seems very atypical use ...
51 */ 55 */
52asmlinkage int sys_cacheflush(unsigned long addr, unsigned long int bytes, 56asmlinkage int sys_cacheflush(unsigned long __user addr,
53 unsigned int cache) 57 unsigned long bytes, unsigned int cache)
54{ 58{
55 if (!access_ok(VERIFY_WRITE, (void *) addr, bytes)) 59 if (bytes == 0)
60 return 0;
61 if (!access_ok(VERIFY_WRITE, (void __user *) addr, bytes))
56 return -EFAULT; 62 return -EFAULT;
57 63
58 flush_icache_range(addr, addr + bytes); 64 flush_icache_range(addr, addr + bytes);
@@ -100,58 +106,48 @@ void __update_cache(struct vm_area_struct *vma, unsigned long address,
100 } 106 }
101} 107}
102 108
103extern void ld_mmu_r23000(void); 109#define __weak __attribute__((weak))
104extern void ld_mmu_r4xx0(void); 110
105extern void ld_mmu_tx39(void); 111static char cache_panic[] __initdata = "Yeee, unsupported cache architecture.";
106extern void ld_mmu_r6000(void);
107extern void ld_mmu_tfp(void);
108extern void ld_mmu_andes(void);
109extern void ld_mmu_sb1(void);
110 112
111void __init cpu_cache_init(void) 113void __init cpu_cache_init(void)
112{ 114{
113 if (cpu_has_4ktlb) { 115 if (cpu_has_3k_cache) {
114#if defined(CONFIG_CPU_R4X00) || defined(CONFIG_CPU_VR41XX) || \ 116 extern void __weak r3k_cache_init(void);
115 defined(CONFIG_CPU_R4300) || defined(CONFIG_CPU_R5000) || \ 117
116 defined(CONFIG_CPU_NEVADA) || defined(CONFIG_CPU_R5432) || \ 118 r3k_cache_init();
117 defined(CONFIG_CPU_R5500) || defined(CONFIG_CPU_MIPS32) || \ 119 return;
118 defined(CONFIG_CPU_MIPS64) || defined(CONFIG_CPU_TX49XX) || \ 120 }
119 defined(CONFIG_CPU_RM7000) || defined(CONFIG_CPU_RM9000) 121 if (cpu_has_6k_cache) {
120 ld_mmu_r4xx0(); 122 extern void __weak r6k_cache_init(void);
121#endif 123
122 } else switch (current_cpu_data.cputype) { 124 r6k_cache_init();
123#ifdef CONFIG_CPU_R3000 125 return;
124 case CPU_R2000: 126 }
125 case CPU_R3000: 127 if (cpu_has_4k_cache) {
126 case CPU_R3000A: 128 extern void __weak r4k_cache_init(void);
127 case CPU_R3081E: 129
128 ld_mmu_r23000(); 130 r4k_cache_init();
129 break; 131 return;
130#endif
131#ifdef CONFIG_CPU_TX39XX
132 case CPU_TX3912:
133 case CPU_TX3922:
134 case CPU_TX3927:
135 ld_mmu_tx39();
136 break;
137#endif
138#ifdef CONFIG_CPU_R10000
139 case CPU_R10000:
140 case CPU_R12000:
141 ld_mmu_r4xx0();
142 break;
143#endif
144#ifdef CONFIG_CPU_SB1
145 case CPU_SB1:
146 ld_mmu_sb1();
147 break;
148#endif
149
150 case CPU_R8000:
151 panic("R8000 is unsupported");
152 break;
153
154 default:
155 panic("Yeee, unsupported cache architecture.");
156 } 132 }
133 if (cpu_has_8k_cache) {
134 extern void __weak r8k_cache_init(void);
135
136 r8k_cache_init();
137 return;
138 }
139 if (cpu_has_tx39_cache) {
140 extern void __weak tx39_cache_init(void);
141
142 tx39_cache_init();
143 return;
144 }
145 if (cpu_has_sb1_cache) {
146 extern void __weak sb1_cache_init(void);
147
148 sb1_cache_init();
149 return;
150 }
151
152 panic(cache_panic);
157} 153}
diff --git a/arch/mips/mm/cerr-sb1.c b/arch/mips/mm/cerr-sb1.c
index 7166ffe63502..1cf3c6006ccd 100644
--- a/arch/mips/mm/cerr-sb1.c
+++ b/arch/mips/mm/cerr-sb1.c
@@ -19,13 +19,19 @@
19#include <linux/sched.h> 19#include <linux/sched.h>
20#include <asm/mipsregs.h> 20#include <asm/mipsregs.h>
21#include <asm/sibyte/sb1250.h> 21#include <asm/sibyte/sb1250.h>
22#include <asm/sibyte/sb1250_regs.h>
22 23
23#ifndef CONFIG_SIBYTE_BUS_WATCHER 24#if !defined(CONFIG_SIBYTE_BUS_WATCHER) || defined(CONFIG_SIBYTE_BW_TRACE)
24#include <asm/io.h> 25#include <asm/io.h>
25#include <asm/sibyte/sb1250_regs.h>
26#include <asm/sibyte/sb1250_scd.h> 26#include <asm/sibyte/sb1250_scd.h>
27#endif 27#endif
28 28
29/*
30 * We'd like to dump the L2_ECC_TAG register on errors, but errata make
31 * that unsafe... So for now we don't. (BCM1250/BCM112x erratum SOC-48.)
32 */
33#undef DUMP_L2_ECC_TAG_ON_ERROR
34
29/* SB1 definitions */ 35/* SB1 definitions */
30 36
31/* XXX should come from config1 XXX */ 37/* XXX should come from config1 XXX */
@@ -139,12 +145,18 @@ static inline void breakout_cerrd(unsigned int val)
139static void check_bus_watcher(void) 145static void check_bus_watcher(void)
140{ 146{
141 uint32_t status, l2_err, memio_err; 147 uint32_t status, l2_err, memio_err;
148#ifdef DUMP_L2_ECC_TAG_ON_ERROR
149 uint64_t l2_tag;
150#endif
142 151
143 /* Destructive read, clears register and interrupt */ 152 /* Destructive read, clears register and interrupt */
144 status = csr_in32(IOADDR(A_SCD_BUS_ERR_STATUS)); 153 status = csr_in32(IOADDR(A_SCD_BUS_ERR_STATUS));
145 /* Bit 31 is always on, but there's no #define for that */ 154 /* Bit 31 is always on, but there's no #define for that */
146 if (status & ~(1UL << 31)) { 155 if (status & ~(1UL << 31)) {
147 l2_err = csr_in32(IOADDR(A_BUS_L2_ERRORS)); 156 l2_err = csr_in32(IOADDR(A_BUS_L2_ERRORS));
157#ifdef DUMP_L2_ECC_TAG_ON_ERROR
158 l2_tag = in64(IO_SPACE_BASE | A_L2_ECC_TAG);
159#endif
148 memio_err = csr_in32(IOADDR(A_BUS_MEM_IO_ERRORS)); 160 memio_err = csr_in32(IOADDR(A_BUS_MEM_IO_ERRORS));
149 prom_printf("Bus watcher error counters: %08x %08x\n", l2_err, memio_err); 161 prom_printf("Bus watcher error counters: %08x %08x\n", l2_err, memio_err);
150 prom_printf("\nLast recorded signature:\n"); 162 prom_printf("\nLast recorded signature:\n");
@@ -153,6 +165,9 @@ static void check_bus_watcher(void)
153 (int)(G_SCD_BERR_TID(status) >> 6), 165 (int)(G_SCD_BERR_TID(status) >> 6),
154 (int)G_SCD_BERR_RID(status), 166 (int)G_SCD_BERR_RID(status),
155 (int)G_SCD_BERR_DCODE(status)); 167 (int)G_SCD_BERR_DCODE(status));
168#ifdef DUMP_L2_ECC_TAG_ON_ERROR
169 prom_printf("Last L2 tag w/ bad ECC: %016llx\n", l2_tag);
170#endif
156 } else { 171 } else {
157 prom_printf("Bus watcher indicates no error\n"); 172 prom_printf("Bus watcher indicates no error\n");
158 } 173 }
@@ -166,6 +181,16 @@ asmlinkage void sb1_cache_error(void)
166 uint64_t cerr_dpa; 181 uint64_t cerr_dpa;
167 uint32_t errctl, cerr_i, cerr_d, dpalo, dpahi, eepc, res; 182 uint32_t errctl, cerr_i, cerr_d, dpalo, dpahi, eepc, res;
168 183
184#ifdef CONFIG_SIBYTE_BW_TRACE
185 /* Freeze the trace buffer now */
186#if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80)
187 csr_out32(M_BCM1480_SCD_TRACE_CFG_FREEZE, IO_SPACE_BASE | A_SCD_TRACE_CFG);
188#else
189 csr_out32(M_SCD_TRACE_CFG_FREEZE, IO_SPACE_BASE | A_SCD_TRACE_CFG);
190#endif
191 prom_printf("Trace buffer frozen\n");
192#endif
193
169 prom_printf("Cache error exception on CPU %x:\n", 194 prom_printf("Cache error exception on CPU %x:\n",
170 (read_c0_prid() >> 25) & 0x7); 195 (read_c0_prid() >> 25) & 0x7);
171 196
@@ -229,11 +254,19 @@ asmlinkage void sb1_cache_error(void)
229 254
230 check_bus_watcher(); 255 check_bus_watcher();
231 256
232 while (1);
233 /* 257 /*
234 * This tends to make things get really ugly; let's just stall instead. 258 * Calling panic() when a fatal cache error occurs scrambles the
235 * panic("Can't handle the cache error!"); 259 * state of the system (and the cache), making it difficult to
260 * investigate after the fact. However, if you just stall the CPU,
261 * the other CPU may keep on running, which is typically very
262 * undesirable.
236 */ 263 */
264#ifdef CONFIG_SB1_CERR_STALL
265 while (1)
266 ;
267#else
268 panic("unhandled cache error");
269#endif
237} 270}
238 271
239 272
@@ -434,7 +467,8 @@ static struct dc_state dc_states[] = {
434}; 467};
435 468
436#define DC_TAG_VALID(state) \ 469#define DC_TAG_VALID(state) \
437 (((state) == 0xf) || ((state) == 0x13) || ((state) == 0x19) || ((state == 0x16)) || ((state) == 0x1c)) 470 (((state) == 0x0) || ((state) == 0xf) || ((state) == 0x13) || \
471 ((state) == 0x19) || ((state) == 0x16) || ((state) == 0x1c))
438 472
439static char *dc_state_str(unsigned char state) 473static char *dc_state_str(unsigned char state)
440{ 474{
@@ -505,6 +539,7 @@ static uint32_t extract_dc(unsigned short addr, int data)
505 uint64_t datalo; 539 uint64_t datalo;
506 uint32_t datalohi, datalolo, datahi; 540 uint32_t datalohi, datalolo, datahi;
507 int offset; 541 int offset;
542 char bad_ecc = 0;
508 543
509 for (offset = 0; offset < 4; offset++) { 544 for (offset = 0; offset < 4; offset++) {
510 /* Index-load-data-D */ 545 /* Index-load-data-D */
@@ -525,8 +560,7 @@ static uint32_t extract_dc(unsigned short addr, int data)
525 ecc = dc_ecc(datalo); 560 ecc = dc_ecc(datalo);
526 if (ecc != datahi) { 561 if (ecc != datahi) {
527 int bits = 0; 562 int bits = 0;
528 prom_printf(" ** bad ECC (%02x %02x) ->", 563 bad_ecc |= 1 << (3-offset);
529 datahi, ecc);
530 ecc ^= datahi; 564 ecc ^= datahi;
531 while (ecc) { 565 while (ecc) {
532 if (ecc & 1) bits++; 566 if (ecc & 1) bits++;
@@ -537,6 +571,10 @@ static uint32_t extract_dc(unsigned short addr, int data)
537 prom_printf(" %02X-%016llX", datahi, datalo); 571 prom_printf(" %02X-%016llX", datahi, datalo);
538 } 572 }
539 prom_printf("\n"); 573 prom_printf("\n");
574 if (bad_ecc)
575 prom_printf(" dwords w/ bad ECC: %d %d %d %d\n",
576 !!(bad_ecc & 8), !!(bad_ecc & 4),
577 !!(bad_ecc & 2), !!(bad_ecc & 1));
540 } 578 }
541 } 579 }
542 return res; 580 return res;
diff --git a/arch/mips/mm/cex-sb1.S b/arch/mips/mm/cex-sb1.S
index 2c3a23aa88c3..0e71580774ff 100644
--- a/arch/mips/mm/cex-sb1.S
+++ b/arch/mips/mm/cex-sb1.S
@@ -64,6 +64,10 @@ LEAF(except_vec2_sb1)
64 sd k0,0x170($0) 64 sd k0,0x170($0)
65 sd k1,0x178($0) 65 sd k1,0x178($0)
66 66
67#if CONFIG_SB1_CEX_ALWAYS_FATAL
68 j handle_vec2_sb1
69 nop
70#else
67 /* 71 /*
68 * M_ERRCTL_RECOVERABLE is bit 31, which makes it easy to tell 72 * M_ERRCTL_RECOVERABLE is bit 31, which makes it easy to tell
69 * if we can fast-path out of here for a h/w-recovered error. 73 * if we can fast-path out of here for a h/w-recovered error.
@@ -134,6 +138,7 @@ unrecoverable:
134 /* Unrecoverable Icache or Dcache error; log it and/or fail */ 138 /* Unrecoverable Icache or Dcache error; log it and/or fail */
135 j handle_vec2_sb1 139 j handle_vec2_sb1
136 nop 140 nop
141#endif
137 142
138END(except_vec2_sb1) 143END(except_vec2_sb1)
139 144
diff --git a/arch/mips/mm/dma-coherent.c b/arch/mips/mm/dma-coherent.c
index 97a50d38c98f..f6b3c722230c 100644
--- a/arch/mips/mm/dma-coherent.c
+++ b/arch/mips/mm/dma-coherent.c
@@ -9,16 +9,16 @@
9 */ 9 */
10#include <linux/config.h> 10#include <linux/config.h>
11#include <linux/types.h> 11#include <linux/types.h>
12#include <linux/dma-mapping.h>
12#include <linux/mm.h> 13#include <linux/mm.h>
13#include <linux/module.h> 14#include <linux/module.h>
14#include <linux/string.h> 15#include <linux/string.h>
15#include <linux/pci.h>
16 16
17#include <asm/cache.h> 17#include <asm/cache.h>
18#include <asm/io.h> 18#include <asm/io.h>
19 19
20void *dma_alloc_noncoherent(struct device *dev, size_t size, 20void *dma_alloc_noncoherent(struct device *dev, size_t size,
21 dma_addr_t * dma_handle, int gfp) 21 dma_addr_t * dma_handle, gfp_t gfp)
22{ 22{
23 void *ret; 23 void *ret;
24 /* ignore region specifiers */ 24 /* ignore region specifiers */
@@ -39,7 +39,7 @@ void *dma_alloc_noncoherent(struct device *dev, size_t size,
39EXPORT_SYMBOL(dma_alloc_noncoherent); 39EXPORT_SYMBOL(dma_alloc_noncoherent);
40 40
41void *dma_alloc_coherent(struct device *dev, size_t size, 41void *dma_alloc_coherent(struct device *dev, size_t size,
42 dma_addr_t * dma_handle, int gfp) 42 dma_addr_t * dma_handle, gfp_t gfp)
43 __attribute__((alias("dma_alloc_noncoherent"))); 43 __attribute__((alias("dma_alloc_noncoherent")));
44 44
45EXPORT_SYMBOL(dma_alloc_coherent); 45EXPORT_SYMBOL(dma_alloc_coherent);
diff --git a/arch/mips/mm/dma-ip27.c b/arch/mips/mm/dma-ip27.c
index aa7c94b5d781..8da19fd22ac6 100644
--- a/arch/mips/mm/dma-ip27.c
+++ b/arch/mips/mm/dma-ip27.c
@@ -22,7 +22,7 @@
22 pdev_to_baddr(to_pci_dev(dev), (addr)) 22 pdev_to_baddr(to_pci_dev(dev), (addr))
23 23
24void *dma_alloc_noncoherent(struct device *dev, size_t size, 24void *dma_alloc_noncoherent(struct device *dev, size_t size,
25 dma_addr_t * dma_handle, int gfp) 25 dma_addr_t * dma_handle, gfp_t gfp)
26{ 26{
27 void *ret; 27 void *ret;
28 28
@@ -44,7 +44,7 @@ void *dma_alloc_noncoherent(struct device *dev, size_t size,
44EXPORT_SYMBOL(dma_alloc_noncoherent); 44EXPORT_SYMBOL(dma_alloc_noncoherent);
45 45
46void *dma_alloc_coherent(struct device *dev, size_t size, 46void *dma_alloc_coherent(struct device *dev, size_t size,
47 dma_addr_t * dma_handle, int gfp) 47 dma_addr_t * dma_handle, gfp_t gfp)
48 __attribute__((alias("dma_alloc_noncoherent"))); 48 __attribute__((alias("dma_alloc_noncoherent")));
49 49
50EXPORT_SYMBOL(dma_alloc_coherent); 50EXPORT_SYMBOL(dma_alloc_coherent);
diff --git a/arch/mips/mm/dma-ip32.c b/arch/mips/mm/dma-ip32.c
index 2cbe196c35fb..a7e3072ff78d 100644
--- a/arch/mips/mm/dma-ip32.c
+++ b/arch/mips/mm/dma-ip32.c
@@ -37,7 +37,7 @@
37#define RAM_OFFSET_MASK 0x3fffffff 37#define RAM_OFFSET_MASK 0x3fffffff
38 38
39void *dma_alloc_noncoherent(struct device *dev, size_t size, 39void *dma_alloc_noncoherent(struct device *dev, size_t size,
40 dma_addr_t * dma_handle, int gfp) 40 dma_addr_t * dma_handle, gfp_t gfp)
41{ 41{
42 void *ret; 42 void *ret;
43 /* ignore region specifiers */ 43 /* ignore region specifiers */
@@ -61,7 +61,7 @@ void *dma_alloc_noncoherent(struct device *dev, size_t size,
61EXPORT_SYMBOL(dma_alloc_noncoherent); 61EXPORT_SYMBOL(dma_alloc_noncoherent);
62 62
63void *dma_alloc_coherent(struct device *dev, size_t size, 63void *dma_alloc_coherent(struct device *dev, size_t size,
64 dma_addr_t * dma_handle, int gfp) 64 dma_addr_t * dma_handle, gfp_t gfp)
65{ 65{
66 void *ret; 66 void *ret;
67 67
diff --git a/arch/mips/mm/dma-noncoherent.c b/arch/mips/mm/dma-noncoherent.c
index 59e54f12212e..cd4ea8474f89 100644
--- a/arch/mips/mm/dma-noncoherent.c
+++ b/arch/mips/mm/dma-noncoherent.c
@@ -24,7 +24,7 @@
24 */ 24 */
25 25
26void *dma_alloc_noncoherent(struct device *dev, size_t size, 26void *dma_alloc_noncoherent(struct device *dev, size_t size,
27 dma_addr_t * dma_handle, int gfp) 27 dma_addr_t * dma_handle, gfp_t gfp)
28{ 28{
29 void *ret; 29 void *ret;
30 /* ignore region specifiers */ 30 /* ignore region specifiers */
@@ -45,7 +45,7 @@ void *dma_alloc_noncoherent(struct device *dev, size_t size,
45EXPORT_SYMBOL(dma_alloc_noncoherent); 45EXPORT_SYMBOL(dma_alloc_noncoherent);
46 46
47void *dma_alloc_coherent(struct device *dev, size_t size, 47void *dma_alloc_coherent(struct device *dev, size_t size,
48 dma_addr_t * dma_handle, int gfp) 48 dma_addr_t * dma_handle, gfp_t gfp)
49{ 49{
50 void *ret; 50 void *ret;
51 51
@@ -105,22 +105,7 @@ dma_addr_t dma_map_single(struct device *dev, void *ptr, size_t size,
105{ 105{
106 unsigned long addr = (unsigned long) ptr; 106 unsigned long addr = (unsigned long) ptr;
107 107
108 switch (direction) { 108 __dma_sync(addr, size, direction);
109 case DMA_TO_DEVICE:
110 dma_cache_wback(addr, size);
111 break;
112
113 case DMA_FROM_DEVICE:
114 dma_cache_inv(addr, size);
115 break;
116
117 case DMA_BIDIRECTIONAL:
118 dma_cache_wback_inv(addr, size);
119 break;
120
121 default:
122 BUG();
123 }
124 109
125 return virt_to_phys(ptr); 110 return virt_to_phys(ptr);
126} 111}
@@ -133,22 +118,7 @@ void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,
133 unsigned long addr; 118 unsigned long addr;
134 addr = dma_addr + PAGE_OFFSET; 119 addr = dma_addr + PAGE_OFFSET;
135 120
136 switch (direction) { 121 //__dma_sync(addr, size, direction);
137 case DMA_TO_DEVICE:
138 //dma_cache_wback(addr, size);
139 break;
140
141 case DMA_FROM_DEVICE:
142 //dma_cache_inv(addr, size);
143 break;
144
145 case DMA_BIDIRECTIONAL:
146 //dma_cache_wback_inv(addr, size);
147 break;
148
149 default:
150 BUG();
151 }
152} 122}
153 123
154EXPORT_SYMBOL(dma_unmap_single); 124EXPORT_SYMBOL(dma_unmap_single);
@@ -164,10 +134,11 @@ int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
164 unsigned long addr; 134 unsigned long addr;
165 135
166 addr = (unsigned long) page_address(sg->page); 136 addr = (unsigned long) page_address(sg->page);
167 if (addr) 137 if (addr) {
168 __dma_sync(addr + sg->offset, sg->length, direction); 138 __dma_sync(addr + sg->offset, sg->length, direction);
169 sg->dma_address = (dma_addr_t) 139 sg->dma_address = (dma_addr_t)page_to_phys(sg->page)
170 (page_to_phys(sg->page) + sg->offset); 140 + sg->offset;
141 }
171 } 142 }
172 143
173 return nents; 144 return nents;
@@ -218,9 +189,8 @@ void dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries,
218 189
219 for (i = 0; i < nhwentries; i++, sg++) { 190 for (i = 0; i < nhwentries; i++, sg++) {
220 addr = (unsigned long) page_address(sg->page); 191 addr = (unsigned long) page_address(sg->page);
221 if (!addr) 192 if (addr)
222 continue; 193 __dma_sync(addr + sg->offset, sg->length, direction);
223 dma_cache_wback_inv(addr + sg->offset, sg->length);
224 } 194 }
225} 195}
226 196
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
index ec8077c74e9c..2d9624fd10ec 100644
--- a/arch/mips/mm/fault.c
+++ b/arch/mips/mm/fault.c
@@ -25,6 +25,7 @@
25#include <asm/system.h> 25#include <asm/system.h>
26#include <asm/uaccess.h> 26#include <asm/uaccess.h>
27#include <asm/ptrace.h> 27#include <asm/ptrace.h>
28#include <asm/highmem.h> /* For VMALLOC_END */
28 29
29/* 30/*
30 * This routine handles page faults. It determines the address, 31 * This routine handles page faults. It determines the address,
@@ -57,7 +58,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long write,
57 * only copy the information from the master page table, 58 * only copy the information from the master page table,
58 * nothing more. 59 * nothing more.
59 */ 60 */
60 if (unlikely(address >= VMALLOC_START)) 61 if (unlikely(address >= VMALLOC_START && address <= VMALLOC_END))
61 goto vmalloc_fault; 62 goto vmalloc_fault;
62 63
63 /* 64 /*
@@ -140,7 +141,7 @@ bad_area_nosemaphore:
140 info.si_signo = SIGSEGV; 141 info.si_signo = SIGSEGV;
141 info.si_errno = 0; 142 info.si_errno = 0;
142 /* info.si_code has been set above */ 143 /* info.si_code has been set above */
143 info.si_addr = (void *) address; 144 info.si_addr = (void __user *) address;
144 force_sig_info(SIGSEGV, &info, tsk); 145 force_sig_info(SIGSEGV, &info, tsk);
145 return; 146 return;
146 } 147 }
@@ -196,7 +197,7 @@ do_sigbus:
196 info.si_signo = SIGBUS; 197 info.si_signo = SIGBUS;
197 info.si_errno = 0; 198 info.si_errno = 0;
198 info.si_code = BUS_ADRERR; 199 info.si_code = BUS_ADRERR;
199 info.si_addr = (void *) address; 200 info.si_addr = (void __user *) address;
200 force_sig_info(SIGBUS, &info, tsk); 201 force_sig_info(SIGBUS, &info, tsk);
201 202
202 return; 203 return;
@@ -212,6 +213,7 @@ vmalloc_fault:
212 */ 213 */
213 int offset = __pgd_offset(address); 214 int offset = __pgd_offset(address);
214 pgd_t *pgd, *pgd_k; 215 pgd_t *pgd, *pgd_k;
216 pud_t *pud, *pud_k;
215 pmd_t *pmd, *pmd_k; 217 pmd_t *pmd, *pmd_k;
216 pte_t *pte_k; 218 pte_t *pte_k;
217 219
@@ -222,8 +224,13 @@ vmalloc_fault:
222 goto no_context; 224 goto no_context;
223 set_pgd(pgd, *pgd_k); 225 set_pgd(pgd, *pgd_k);
224 226
225 pmd = pmd_offset(pgd, address); 227 pud = pud_offset(pgd, address);
226 pmd_k = pmd_offset(pgd_k, address); 228 pud_k = pud_offset(pgd_k, address);
229 if (!pud_present(*pud_k))
230 goto no_context;
231
232 pmd = pmd_offset(pud, address);
233 pmd_k = pmd_offset(pud_k, address);
227 if (!pmd_present(*pmd_k)) 234 if (!pmd_present(*pmd_k))
228 goto no_context; 235 goto no_context;
229 set_pmd(pmd, *pmd_k); 236 set_pmd(pmd, *pmd_k);
diff --git a/arch/mips/mm/highmem.c b/arch/mips/mm/highmem.c
index dd5e2e31885b..1f7b37b38f5c 100644
--- a/arch/mips/mm/highmem.c
+++ b/arch/mips/mm/highmem.c
@@ -83,6 +83,25 @@ void __kunmap_atomic(void *kvaddr, enum km_type type)
83 preempt_check_resched(); 83 preempt_check_resched();
84} 84}
85 85
86/*
87 * This is the same as kmap_atomic() but can map memory that doesn't
88 * have a struct page associated with it.
89 */
90void *kmap_atomic_pfn(unsigned long pfn, enum km_type type)
91{
92 enum fixed_addresses idx;
93 unsigned long vaddr;
94
95 inc_preempt_count();
96
97 idx = type + KM_TYPE_NR*smp_processor_id();
98 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
99 set_pte(kmap_pte-idx, pfn_pte(pfn, kmap_prot));
100 flush_tlb_one(vaddr);
101
102 return (void*) vaddr;
103}
104
86struct page *__kmap_atomic_to_page(void *ptr) 105struct page *__kmap_atomic_to_page(void *ptr)
87{ 106{
88 unsigned long idx, vaddr = (unsigned long)ptr; 107 unsigned long idx, vaddr = (unsigned long)ptr;
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c
index dc6830b10fab..f75ab748e8cd 100644
--- a/arch/mips/mm/init.c
+++ b/arch/mips/mm/init.c
@@ -83,7 +83,7 @@ pte_t *kmap_pte;
83pgprot_t kmap_prot; 83pgprot_t kmap_prot;
84 84
85#define kmap_get_fixmap_pte(vaddr) \ 85#define kmap_get_fixmap_pte(vaddr) \
86 pte_offset_kernel(pmd_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr)) 86 pte_offset_kernel(pmd_offset(pud_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr)), (vaddr))
87 87
88static void __init kmap_init(void) 88static void __init kmap_init(void)
89{ 89{
@@ -96,36 +96,42 @@ static void __init kmap_init(void)
96 kmap_prot = PAGE_KERNEL; 96 kmap_prot = PAGE_KERNEL;
97} 97}
98 98
99#ifdef CONFIG_64BIT 99#ifdef CONFIG_32BIT
100static void __init fixrange_init(unsigned long start, unsigned long end, 100void __init fixrange_init(unsigned long start, unsigned long end,
101 pgd_t *pgd_base) 101 pgd_t *pgd_base)
102{ 102{
103 pgd_t *pgd; 103 pgd_t *pgd;
104 pud_t *pud;
104 pmd_t *pmd; 105 pmd_t *pmd;
105 pte_t *pte; 106 pte_t *pte;
106 int i, j; 107 int i, j, k;
107 unsigned long vaddr; 108 unsigned long vaddr;
108 109
109 vaddr = start; 110 vaddr = start;
110 i = __pgd_offset(vaddr); 111 i = __pgd_offset(vaddr);
111 j = __pmd_offset(vaddr); 112 j = __pud_offset(vaddr);
113 k = __pmd_offset(vaddr);
112 pgd = pgd_base + i; 114 pgd = pgd_base + i;
113 115
114 for ( ; (i < PTRS_PER_PGD) && (vaddr != end); pgd++, i++) { 116 for ( ; (i < PTRS_PER_PGD) && (vaddr != end); pgd++, i++) {
115 pmd = (pmd_t *)pgd; 117 pud = (pud_t *)pgd;
116 for (; (j < PTRS_PER_PMD) && (vaddr != end); pmd++, j++) { 118 for ( ; (j < PTRS_PER_PUD) && (vaddr != end); pud++, j++) {
117 if (pmd_none(*pmd)) { 119 pmd = (pmd_t *)pud;
118 pte = (pte_t *) alloc_bootmem_low_pages(PAGE_SIZE); 120 for (; (k < PTRS_PER_PMD) && (vaddr != end); pmd++, k++) {
119 set_pmd(pmd, __pmd(pte)); 121 if (pmd_none(*pmd)) {
120 if (pte != pte_offset_kernel(pmd, 0)) 122 pte = (pte_t *) alloc_bootmem_low_pages(PAGE_SIZE);
121 BUG(); 123 set_pmd(pmd, __pmd(pte));
124 if (pte != pte_offset_kernel(pmd, 0))
125 BUG();
126 }
127 vaddr += PMD_SIZE;
122 } 128 }
123 vaddr += PMD_SIZE; 129 k = 0;
124 } 130 }
125 j = 0; 131 j = 0;
126 } 132 }
127} 133}
128#endif /* CONFIG_64BIT */ 134#endif /* CONFIG_32BIT */
129#endif /* CONFIG_HIGHMEM */ 135#endif /* CONFIG_HIGHMEM */
130 136
131#ifndef CONFIG_NEED_MULTIPLE_NODES 137#ifndef CONFIG_NEED_MULTIPLE_NODES
diff --git a/arch/mips/mm/ioremap.c b/arch/mips/mm/ioremap.c
index adf352273f63..3101d1db5592 100644
--- a/arch/mips/mm/ioremap.c
+++ b/arch/mips/mm/ioremap.c
@@ -55,7 +55,7 @@ static inline int remap_area_pmd(pmd_t * pmd, unsigned long address,
55 if (address >= end) 55 if (address >= end)
56 BUG(); 56 BUG();
57 do { 57 do {
58 pte_t * pte = pte_alloc_kernel(&init_mm, pmd, address); 58 pte_t * pte = pte_alloc_kernel(pmd, address);
59 if (!pte) 59 if (!pte)
60 return -ENOMEM; 60 return -ENOMEM;
61 remap_area_pte(pte, address, end - address, address + phys_addr, flags); 61 remap_area_pte(pte, address, end - address, address + phys_addr, flags);
@@ -77,11 +77,15 @@ static int remap_area_pages(unsigned long address, phys_t phys_addr,
77 flush_cache_all(); 77 flush_cache_all();
78 if (address >= end) 78 if (address >= end)
79 BUG(); 79 BUG();
80 spin_lock(&init_mm.page_table_lock);
81 do { 80 do {
81 pud_t *pud;
82 pmd_t *pmd; 82 pmd_t *pmd;
83 pmd = pmd_alloc(&init_mm, dir, address); 83
84 error = -ENOMEM; 84 error = -ENOMEM;
85 pud = pud_alloc(&init_mm, dir, address);
86 if (!pud)
87 break;
88 pmd = pmd_alloc(&init_mm, pud, address);
85 if (!pmd) 89 if (!pmd)
86 break; 90 break;
87 if (remap_area_pmd(pmd, address, end - address, 91 if (remap_area_pmd(pmd, address, end - address,
@@ -91,21 +95,11 @@ static int remap_area_pages(unsigned long address, phys_t phys_addr,
91 address = (address + PGDIR_SIZE) & PGDIR_MASK; 95 address = (address + PGDIR_SIZE) & PGDIR_MASK;
92 dir++; 96 dir++;
93 } while (address && (address < end)); 97 } while (address && (address < end));
94 spin_unlock(&init_mm.page_table_lock);
95 flush_tlb_all(); 98 flush_tlb_all();
96 return error; 99 return error;
97} 100}
98 101
99/* 102/*
100 * Allow physical addresses to be fixed up to help 36 bit peripherals.
101 */
102phys_t __attribute__ ((weak))
103fixup_bigphys_addr(phys_t phys_addr, phys_t size)
104{
105 return phys_addr;
106}
107
108/*
109 * Generic mapping function (not visible outside): 103 * Generic mapping function (not visible outside):
110 */ 104 */
111 105
@@ -121,7 +115,7 @@ fixup_bigphys_addr(phys_t phys_addr, phys_t size)
121 115
122#define IS_LOW512(addr) (!((phys_t)(addr) & (phys_t) ~0x1fffffffULL)) 116#define IS_LOW512(addr) (!((phys_t)(addr) & (phys_t) ~0x1fffffffULL))
123 117
124void * __ioremap(phys_t phys_addr, phys_t size, unsigned long flags) 118void __iomem * __ioremap(phys_t phys_addr, phys_t size, unsigned long flags)
125{ 119{
126 struct vm_struct * area; 120 struct vm_struct * area;
127 unsigned long offset; 121 unsigned long offset;
@@ -141,7 +135,7 @@ void * __ioremap(phys_t phys_addr, phys_t size, unsigned long flags)
141 */ 135 */
142 if (IS_LOW512(phys_addr) && IS_LOW512(last_addr) && 136 if (IS_LOW512(phys_addr) && IS_LOW512(last_addr) &&
143 flags == _CACHE_UNCACHED) 137 flags == _CACHE_UNCACHED)
144 return (void *) KSEG1ADDR(phys_addr); 138 return (void __iomem *) CKSEG1ADDR(phys_addr);
145 139
146 /* 140 /*
147 * Don't allow anybody to remap normal RAM that we're using.. 141 * Don't allow anybody to remap normal RAM that we're using..
@@ -177,10 +171,10 @@ void * __ioremap(phys_t phys_addr, phys_t size, unsigned long flags)
177 return NULL; 171 return NULL;
178 } 172 }
179 173
180 return (void *) (offset + (char *)addr); 174 return (void __iomem *) (offset + (char *)addr);
181} 175}
182 176
183#define IS_KSEG1(addr) (((unsigned long)(addr) & ~0x1fffffffUL) == KSEG1) 177#define IS_KSEG1(addr) (((unsigned long)(addr) & ~0x1fffffffUL) == CKSEG1)
184 178
185void __iounmap(volatile void __iomem *addr) 179void __iounmap(volatile void __iomem *addr)
186{ 180{
@@ -190,10 +184,8 @@ void __iounmap(volatile void __iomem *addr)
190 return; 184 return;
191 185
192 p = remove_vm_area((void *) (PAGE_MASK & (unsigned long __force) addr)); 186 p = remove_vm_area((void *) (PAGE_MASK & (unsigned long __force) addr));
193 if (!p) { 187 if (!p)
194 printk(KERN_ERR "iounmap: bad address %p\n", addr); 188 printk(KERN_ERR "iounmap: bad address %p\n", addr);
195 return;
196 }
197 189
198 kfree(p); 190 kfree(p);
199} 191}
diff --git a/arch/mips/mm/pg-r4k.c b/arch/mips/mm/pg-r4k.c
index 9f8b16541577..f51e180072e3 100644
--- a/arch/mips/mm/pg-r4k.c
+++ b/arch/mips/mm/pg-r4k.c
@@ -25,7 +25,10 @@
25#include <asm/cpu.h> 25#include <asm/cpu.h>
26#include <asm/war.h> 26#include <asm/war.h>
27 27
28#define half_scache_line_size() (cpu_scache_line_size() >> 1) 28#define half_scache_line_size() (cpu_scache_line_size() >> 1)
29#define cpu_is_r4600_v1_x() ((read_c0_prid() & 0xfffffff0) == 0x00002010)
30#define cpu_is_r4600_v2_x() ((read_c0_prid() & 0xfffffff0) == 0x00002020)
31
29 32
30/* 33/*
31 * Maximum sizes: 34 * Maximum sizes:
@@ -198,15 +201,15 @@ static inline void build_cdex_p(void)
198 if (store_offset & (cpu_dcache_line_size() - 1)) 201 if (store_offset & (cpu_dcache_line_size() - 1))
199 return; 202 return;
200 203
201 if (R4600_V1_HIT_CACHEOP_WAR && ((read_c0_prid() & 0xfff0) == 0x2010)) { 204 if (R4600_V1_HIT_CACHEOP_WAR && cpu_is_r4600_v1_x()) {
202 build_nop(); 205 build_nop();
203 build_nop(); 206 build_nop();
204 build_nop(); 207 build_nop();
205 build_nop(); 208 build_nop();
206 } 209 }
207 210
208 if (R4600_V2_HIT_CACHEOP_WAR && ((read_c0_prid() & 0xfff0) == 0x2020)) 211 if (R4600_V2_HIT_CACHEOP_WAR && cpu_is_r4600_v2_x())
209 build_insn_word(0x8c200000); /* lw $zero, ($at) */ 212 build_insn_word(0x3c01a000); /* lui $at, 0xa000 */
210 213
211 mi.c_format.opcode = cache_op; 214 mi.c_format.opcode = cache_op;
212 mi.c_format.rs = 4; /* $a0 */ 215 mi.c_format.rs = 4; /* $a0 */
@@ -361,7 +364,7 @@ void __init build_clear_page(void)
361 364
362 build_addiu_a2_a0(PAGE_SIZE - (cpu_has_prefetch ? pref_offset_clear : 0)); 365 build_addiu_a2_a0(PAGE_SIZE - (cpu_has_prefetch ? pref_offset_clear : 0));
363 366
364 if (R4600_V2_HIT_CACHEOP_WAR && ((read_c0_prid() & 0xfff0) == 0x2020)) 367 if (R4600_V2_HIT_CACHEOP_WAR && cpu_is_r4600_v2_x())
365 build_insn_word(0x3c01a000); /* lui $at, 0xa000 */ 368 build_insn_word(0x3c01a000); /* lui $at, 0xa000 */
366 369
367dest = label(); 370dest = label();
@@ -404,9 +407,6 @@ dest = label();
404 407
405 build_jr_ra(); 408 build_jr_ra();
406 409
407 flush_icache_range((unsigned long)&clear_page_array,
408 (unsigned long) epc);
409
410 BUG_ON(epc > clear_page_array + ARRAY_SIZE(clear_page_array)); 410 BUG_ON(epc > clear_page_array + ARRAY_SIZE(clear_page_array));
411} 411}
412 412
@@ -420,7 +420,7 @@ void __init build_copy_page(void)
420 420
421 build_addiu_a2_a0(PAGE_SIZE - (cpu_has_prefetch ? pref_offset_copy : 0)); 421 build_addiu_a2_a0(PAGE_SIZE - (cpu_has_prefetch ? pref_offset_copy : 0));
422 422
423 if (R4600_V2_HIT_CACHEOP_WAR && ((read_c0_prid() & 0xfff0) == 0x2020)) 423 if (R4600_V2_HIT_CACHEOP_WAR && cpu_is_r4600_v2_x())
424 build_insn_word(0x3c01a000); /* lui $at, 0xa000 */ 424 build_insn_word(0x3c01a000); /* lui $at, 0xa000 */
425 425
426dest = label(); 426dest = label();
@@ -482,8 +482,5 @@ dest = label();
482 482
483 build_jr_ra(); 483 build_jr_ra();
484 484
485 flush_icache_range((unsigned long)&copy_page_array,
486 (unsigned long) epc);
487
488 BUG_ON(epc > copy_page_array + ARRAY_SIZE(copy_page_array)); 485 BUG_ON(epc > copy_page_array + ARRAY_SIZE(copy_page_array));
489} 486}
diff --git a/arch/mips/mm/pg-sb1.c b/arch/mips/mm/pg-sb1.c
index 1b6df7133c1e..148c65b9cd8b 100644
--- a/arch/mips/mm/pg-sb1.c
+++ b/arch/mips/mm/pg-sb1.c
@@ -60,7 +60,8 @@ static inline void clear_page_cpu(void *page)
60 " .set noreorder \n" 60 " .set noreorder \n"
61#ifdef CONFIG_CPU_HAS_PREFETCH 61#ifdef CONFIG_CPU_HAS_PREFETCH
62 " daddiu %0, %0, 128 \n" 62 " daddiu %0, %0, 128 \n"
63 " pref " SB1_PREF_STORE_STREAMED_HINT ", -128(%0) \n" /* Prefetch the first 4 lines */ 63 " pref " SB1_PREF_STORE_STREAMED_HINT ", -128(%0) \n"
64 /* Prefetch the first 4 lines */
64 " pref " SB1_PREF_STORE_STREAMED_HINT ", -96(%0) \n" 65 " pref " SB1_PREF_STORE_STREAMED_HINT ", -96(%0) \n"
65 " pref " SB1_PREF_STORE_STREAMED_HINT ", -64(%0) \n" 66 " pref " SB1_PREF_STORE_STREAMED_HINT ", -64(%0) \n"
66 " pref " SB1_PREF_STORE_STREAMED_HINT ", -32(%0) \n" 67 " pref " SB1_PREF_STORE_STREAMED_HINT ", -32(%0) \n"
@@ -106,7 +107,8 @@ static inline void copy_page_cpu(void *to, void *from)
106#ifdef CONFIG_CPU_HAS_PREFETCH 107#ifdef CONFIG_CPU_HAS_PREFETCH
107 " daddiu %0, %0, 128 \n" 108 " daddiu %0, %0, 128 \n"
108 " daddiu %1, %1, 128 \n" 109 " daddiu %1, %1, 128 \n"
109 " pref " SB1_PREF_LOAD_STREAMED_HINT ", -128(%0)\n" /* Prefetch the first 4 lines */ 110 " pref " SB1_PREF_LOAD_STREAMED_HINT ", -128(%0)\n"
111 /* Prefetch the first 4 lines */
110 " pref " SB1_PREF_STORE_STREAMED_HINT ", -128(%1)\n" 112 " pref " SB1_PREF_STORE_STREAMED_HINT ", -128(%1)\n"
111 " pref " SB1_PREF_LOAD_STREAMED_HINT ", -96(%0)\n" 113 " pref " SB1_PREF_LOAD_STREAMED_HINT ", -96(%0)\n"
112 " pref " SB1_PREF_STORE_STREAMED_HINT ", -96(%1)\n" 114 " pref " SB1_PREF_STORE_STREAMED_HINT ", -96(%1)\n"
@@ -207,66 +209,73 @@ typedef struct dmadscr_s {
207 u64 pad_b; 209 u64 pad_b;
208} dmadscr_t; 210} dmadscr_t;
209 211
210static dmadscr_t page_descr[NR_CPUS] __attribute__((aligned(SMP_CACHE_BYTES))); 212static dmadscr_t page_descr[DM_NUM_CHANNELS]
213 __attribute__((aligned(SMP_CACHE_BYTES)));
211 214
212void sb1_dma_init(void) 215void sb1_dma_init(void)
213{ 216{
214 int cpu = smp_processor_id(); 217 int i;
215 u64 base_val = CPHYSADDR(&page_descr[cpu]) | V_DM_DSCR_BASE_RINGSZ(1);
216 218
217 bus_writeq(base_val, 219 for (i = 0; i < DM_NUM_CHANNELS; i++) {
218 (void *)IOADDR(A_DM_REGISTER(cpu, R_DM_DSCR_BASE))); 220 const u64 base_val = CPHYSADDR(&page_descr[i]) |
219 bus_writeq(base_val | M_DM_DSCR_BASE_RESET, 221 V_DM_DSCR_BASE_RINGSZ(1);
220 (void *)IOADDR(A_DM_REGISTER(cpu, R_DM_DSCR_BASE))); 222 volatile void *base_reg =
221 bus_writeq(base_val | M_DM_DSCR_BASE_ENABL, 223 IOADDR(A_DM_REGISTER(i, R_DM_DSCR_BASE));
222 (void *)IOADDR(A_DM_REGISTER(cpu, R_DM_DSCR_BASE))); 224
225 __raw_writeq(base_val, base_reg);
226 __raw_writeq(base_val | M_DM_DSCR_BASE_RESET, base_reg);
227 __raw_writeq(base_val | M_DM_DSCR_BASE_ENABL, base_reg);
228 }
223} 229}
224 230
225void clear_page(void *page) 231void clear_page(void *page)
226{ 232{
227 int cpu = smp_processor_id(); 233 u64 to_phys = CPHYSADDR(page);
234 unsigned int cpu = smp_processor_id();
228 235
229 /* if the page is above Kseg0, use old way */ 236 /* if the page is not in KSEG0, use old way */
230 if ((long)KSEGX(page) != (long)CKSEG0) 237 if ((long)KSEGX(page) != (long)CKSEG0)
231 return clear_page_cpu(page); 238 return clear_page_cpu(page);
232 239
233 page_descr[cpu].dscr_a = CPHYSADDR(page) | M_DM_DSCRA_ZERO_MEM | M_DM_DSCRA_L2C_DEST | M_DM_DSCRA_INTERRUPT; 240 page_descr[cpu].dscr_a = to_phys | M_DM_DSCRA_ZERO_MEM |
241 M_DM_DSCRA_L2C_DEST | M_DM_DSCRA_INTERRUPT;
234 page_descr[cpu].dscr_b = V_DM_DSCRB_SRC_LENGTH(PAGE_SIZE); 242 page_descr[cpu].dscr_b = V_DM_DSCRB_SRC_LENGTH(PAGE_SIZE);
235 bus_writeq(1, (void *)IOADDR(A_DM_REGISTER(cpu, R_DM_DSCR_COUNT))); 243 __raw_writeq(1, IOADDR(A_DM_REGISTER(cpu, R_DM_DSCR_COUNT)));
236 244
237 /* 245 /*
238 * Don't really want to do it this way, but there's no 246 * Don't really want to do it this way, but there's no
239 * reliable way to delay completion detection. 247 * reliable way to delay completion detection.
240 */ 248 */
241 while (!(bus_readq((void *)(IOADDR(A_DM_REGISTER(cpu, R_DM_DSCR_BASE_DEBUG)) & 249 while (!(__raw_readq(IOADDR(A_DM_REGISTER(cpu, R_DM_DSCR_BASE_DEBUG)))
242 M_DM_DSCR_BASE_INTERRUPT)))) 250 & M_DM_DSCR_BASE_INTERRUPT))
243 ; 251 ;
244 bus_readq((void *)IOADDR(A_DM_REGISTER(cpu, R_DM_DSCR_BASE))); 252 __raw_readq(IOADDR(A_DM_REGISTER(cpu, R_DM_DSCR_BASE)));
245} 253}
246 254
247void copy_page(void *to, void *from) 255void copy_page(void *to, void *from)
248{ 256{
249 unsigned long from_phys = CPHYSADDR(from); 257 u64 from_phys = CPHYSADDR(from);
250 unsigned long to_phys = CPHYSADDR(to); 258 u64 to_phys = CPHYSADDR(to);
251 int cpu = smp_processor_id(); 259 unsigned int cpu = smp_processor_id();
252 260
253 /* if either page is above Kseg0, use old way */ 261 /* if any page is not in KSEG0, use old way */
254 if ((long)KSEGX(to) != (long)CKSEG0 262 if ((long)KSEGX(to) != (long)CKSEG0
255 || (long)KSEGX(from) != (long)CKSEG0) 263 || (long)KSEGX(from) != (long)CKSEG0)
256 return copy_page_cpu(to, from); 264 return copy_page_cpu(to, from);
257 265
258 page_descr[cpu].dscr_a = CPHYSADDR(to_phys) | M_DM_DSCRA_L2C_DEST | M_DM_DSCRA_INTERRUPT; 266 page_descr[cpu].dscr_a = to_phys | M_DM_DSCRA_L2C_DEST |
259 page_descr[cpu].dscr_b = CPHYSADDR(from_phys) | V_DM_DSCRB_SRC_LENGTH(PAGE_SIZE); 267 M_DM_DSCRA_INTERRUPT;
260 bus_writeq(1, (void *)IOADDR(A_DM_REGISTER(cpu, R_DM_DSCR_COUNT))); 268 page_descr[cpu].dscr_b = from_phys | V_DM_DSCRB_SRC_LENGTH(PAGE_SIZE);
269 __raw_writeq(1, IOADDR(A_DM_REGISTER(cpu, R_DM_DSCR_COUNT)));
261 270
262 /* 271 /*
263 * Don't really want to do it this way, but there's no 272 * Don't really want to do it this way, but there's no
264 * reliable way to delay completion detection. 273 * reliable way to delay completion detection.
265 */ 274 */
266 while (!(bus_readq((void *)(IOADDR(A_DM_REGISTER(cpu, R_DM_DSCR_BASE_DEBUG)) & 275 while (!(__raw_readq(IOADDR(A_DM_REGISTER(cpu, R_DM_DSCR_BASE_DEBUG)))
267 M_DM_DSCR_BASE_INTERRUPT)))) 276 & M_DM_DSCR_BASE_INTERRUPT))
268 ; 277 ;
269 bus_readq((void *)IOADDR(A_DM_REGISTER(cpu, R_DM_DSCR_BASE))); 278 __raw_readq(IOADDR(A_DM_REGISTER(cpu, R_DM_DSCR_BASE)));
270} 279}
271 280
272#else /* !CONFIG_SIBYTE_DMA_PAGEOPS */ 281#else /* !CONFIG_SIBYTE_DMA_PAGEOPS */
diff --git a/arch/mips/mm/pgtable-32.c b/arch/mips/mm/pgtable-32.c
index 4f07f81e8500..4a3c4919e314 100644
--- a/arch/mips/mm/pgtable-32.c
+++ b/arch/mips/mm/pgtable-32.c
@@ -10,6 +10,7 @@
10#include <linux/mm.h> 10#include <linux/mm.h>
11#include <linux/bootmem.h> 11#include <linux/bootmem.h>
12#include <linux/highmem.h> 12#include <linux/highmem.h>
13#include <asm/fixmap.h>
13#include <asm/pgtable.h> 14#include <asm/pgtable.h>
14 15
15void pgd_init(unsigned long page) 16void pgd_init(unsigned long page)
@@ -29,42 +30,12 @@ void pgd_init(unsigned long page)
29 } 30 }
30} 31}
31 32
32#ifdef CONFIG_HIGHMEM
33static void __init fixrange_init (unsigned long start, unsigned long end,
34 pgd_t *pgd_base)
35{
36 pgd_t *pgd;
37 pmd_t *pmd;
38 pte_t *pte;
39 int i, j;
40 unsigned long vaddr;
41
42 vaddr = start;
43 i = __pgd_offset(vaddr);
44 j = __pmd_offset(vaddr);
45 pgd = pgd_base + i;
46
47 for ( ; (i < PTRS_PER_PGD) && (vaddr != end); pgd++, i++) {
48 pmd = (pmd_t *)pgd;
49 for (; (j < PTRS_PER_PMD) && (vaddr != end); pmd++, j++) {
50 if (pmd_none(*pmd)) {
51 pte = (pte_t *) alloc_bootmem_low_pages(PAGE_SIZE);
52 set_pmd(pmd, __pmd((unsigned long)pte));
53 if (pte != pte_offset_kernel(pmd, 0))
54 BUG();
55 }
56 vaddr += PMD_SIZE;
57 }
58 j = 0;
59 }
60}
61#endif
62
63void __init pagetable_init(void) 33void __init pagetable_init(void)
64{ 34{
65#ifdef CONFIG_HIGHMEM 35#ifdef CONFIG_HIGHMEM
66 unsigned long vaddr; 36 unsigned long vaddr;
67 pgd_t *pgd, *pgd_base; 37 pgd_t *pgd, *pgd_base;
38 pud_t *pud;
68 pmd_t *pmd; 39 pmd_t *pmd;
69 pte_t *pte; 40 pte_t *pte;
70#endif 41#endif
@@ -90,7 +61,8 @@ void __init pagetable_init(void)
90 fixrange_init(vaddr, vaddr + PAGE_SIZE*LAST_PKMAP, pgd_base); 61 fixrange_init(vaddr, vaddr + PAGE_SIZE*LAST_PKMAP, pgd_base);
91 62
92 pgd = swapper_pg_dir + __pgd_offset(vaddr); 63 pgd = swapper_pg_dir + __pgd_offset(vaddr);
93 pmd = pmd_offset(pgd, vaddr); 64 pud = pud_offset(pgd, vaddr);
65 pmd = pmd_offset(pud, vaddr);
94 pte = pte_offset_kernel(pmd, vaddr); 66 pte = pte_offset_kernel(pmd, vaddr);
95 pkmap_page_table = pte; 67 pkmap_page_table = pte;
96#endif 68#endif
diff --git a/arch/mips/mm/sc-rm7k.c b/arch/mips/mm/sc-rm7k.c
index 4e92f931aaba..9e8ff8badb19 100644
--- a/arch/mips/mm/sc-rm7k.c
+++ b/arch/mips/mm/sc-rm7k.c
@@ -15,6 +15,7 @@
15#include <asm/cacheops.h> 15#include <asm/cacheops.h>
16#include <asm/mipsregs.h> 16#include <asm/mipsregs.h>
17#include <asm/processor.h> 17#include <asm/processor.h>
18#include <asm/cacheflush.h> /* for run_uncached() */
18 19
19/* Primary cache parameters. */ 20/* Primary cache parameters. */
20#define sc_lsize 32 21#define sc_lsize 32
@@ -96,25 +97,13 @@ static void rm7k_sc_inv(unsigned long addr, unsigned long size)
96} 97}
97 98
98/* 99/*
99 * This function is executed in the uncached segment CKSEG1. 100 * This function is executed in uncached address space.
100 * It must not touch the stack, because the stack pointer still points
101 * into CKSEG0.
102 *
103 * Three options:
104 * - Write it in assembly and guarantee that we don't use the stack.
105 * - Disable caching for CKSEG0 before calling it.
106 * - Pray that GCC doesn't randomly start using the stack.
107 *
108 * This being Linux, we obviously take the least sane of those options -
109 * following DaveM's lead in c-r4k.c
110 *
111 * It seems we get our kicks from relying on unguaranteed behaviour in GCC
112 */ 101 */
113static __init void __rm7k_sc_enable(void) 102static __init void __rm7k_sc_enable(void)
114{ 103{
115 int i; 104 int i;
116 105
117 set_c0_config(1 << 3); /* CONF_SE */ 106 set_c0_config(RM7K_CONF_SE);
118 107
119 write_c0_taglo(0); 108 write_c0_taglo(0);
120 write_c0_taghi(0); 109 write_c0_taghi(0);
@@ -127,24 +116,22 @@ static __init void __rm7k_sc_enable(void)
127 ".set mips0\n\t" 116 ".set mips0\n\t"
128 ".set reorder" 117 ".set reorder"
129 : 118 :
130 : "r" (KSEG0ADDR(i)), "i" (Index_Store_Tag_SD)); 119 : "r" (CKSEG0ADDR(i)), "i" (Index_Store_Tag_SD));
131 } 120 }
132} 121}
133 122
134static __init void rm7k_sc_enable(void) 123static __init void rm7k_sc_enable(void)
135{ 124{
136 void (*func)(void) = (void *) KSEG1ADDR(&__rm7k_sc_enable); 125 if (read_c0_config() & RM7K_CONF_SE)
137
138 if (read_c0_config() & 0x08) /* CONF_SE */
139 return; 126 return;
140 127
141 printk(KERN_INFO "Enabling secondary cache..."); 128 printk(KERN_INFO "Enabling secondary cache...\n");
142 func(); 129 run_uncached(__rm7k_sc_enable);
143} 130}
144 131
145static void rm7k_sc_disable(void) 132static void rm7k_sc_disable(void)
146{ 133{
147 clear_c0_config(1<<3); /* CONF_SE */ 134 clear_c0_config(RM7K_CONF_SE);
148} 135}
149 136
150struct bcache_ops rm7k_sc_ops = { 137struct bcache_ops rm7k_sc_ops = {
@@ -158,19 +145,19 @@ void __init rm7k_sc_init(void)
158{ 145{
159 unsigned int config = read_c0_config(); 146 unsigned int config = read_c0_config();
160 147
161 if ((config >> 31) & 1) /* Bit 31 set -> no S-Cache */ 148 if ((config & RM7K_CONF_SC))
162 return; 149 return;
163 150
164 printk(KERN_INFO "Secondary cache size %dK, linesize %d bytes.\n", 151 printk(KERN_INFO "Secondary cache size %dK, linesize %d bytes.\n",
165 (scache_size >> 10), sc_lsize); 152 (scache_size >> 10), sc_lsize);
166 153
167 if (!((config >> 3) & 1)) /* CONF_SE */ 154 if (!(config & RM7K_CONF_SE))
168 rm7k_sc_enable(); 155 rm7k_sc_enable();
169 156
170 /* 157 /*
171 * While we're at it let's deal with the tertiary cache. 158 * While we're at it let's deal with the tertiary cache.
172 */ 159 */
173 if (!((config >> 17) & 1)) { 160 if (!(config & RM7K_CONF_TC)) {
174 161
175 /* 162 /*
176 * We can't enable the L3 cache yet. There may be board-specific 163 * We can't enable the L3 cache yet. There may be board-specific
@@ -183,9 +170,9 @@ void __init rm7k_sc_init(void)
183 * to probe it. 170 * to probe it.
184 */ 171 */
185 printk(KERN_INFO "Tertiary cache present, %s enabled\n", 172 printk(KERN_INFO "Tertiary cache present, %s enabled\n",
186 config&(1<<12) ? "already" : "not (yet)"); 173 (config & RM7K_CONF_TE) ? "already" : "not (yet)");
187 174
188 if ((config >> 12) & 1) 175 if ((config & RM7K_CONF_TE))
189 rm7k_tcache_enabled = 1; 176 rm7k_tcache_enabled = 1;
190 } 177 }
191 178
diff --git a/arch/mips/mm/tlb-andes.c b/arch/mips/mm/tlb-andes.c
index 167e08e9661a..3f422a849c41 100644
--- a/arch/mips/mm/tlb-andes.c
+++ b/arch/mips/mm/tlb-andes.c
@@ -195,6 +195,7 @@ void __update_tlb(struct vm_area_struct * vma, unsigned long address, pte_t pte)
195{ 195{
196 unsigned long flags; 196 unsigned long flags;
197 pgd_t *pgdp; 197 pgd_t *pgdp;
198 pud_t *pudp;
198 pmd_t *pmdp; 199 pmd_t *pmdp;
199 pte_t *ptep; 200 pte_t *ptep;
200 int idx, pid; 201 int idx, pid;
@@ -220,7 +221,8 @@ void __update_tlb(struct vm_area_struct * vma, unsigned long address, pte_t pte)
220 write_c0_entryhi(address | (pid)); 221 write_c0_entryhi(address | (pid));
221 pgdp = pgd_offset(vma->vm_mm, address); 222 pgdp = pgd_offset(vma->vm_mm, address);
222 tlb_probe(); 223 tlb_probe();
223 pmdp = pmd_offset(pgdp, address); 224 pudp = pud_offset(pgdp, address);
225 pmdp = pmd_offset(pudp, address);
224 idx = read_c0_index(); 226 idx = read_c0_index();
225 ptep = pte_offset_map(pmdp, address); 227 ptep = pte_offset_map(pmdp, address);
226 write_c0_entrylo0(pte_val(*ptep++) >> 6); 228 write_c0_entrylo0(pte_val(*ptep++) >> 6);
diff --git a/arch/mips/mm/tlb-r4k.c b/arch/mips/mm/tlb-r4k.c
index 59d38bc05b69..8297970f0bb1 100644
--- a/arch/mips/mm/tlb-r4k.c
+++ b/arch/mips/mm/tlb-r4k.c
@@ -21,6 +21,12 @@
21 21
22extern void build_tlb_refill_handler(void); 22extern void build_tlb_refill_handler(void);
23 23
24/*
25 * Make sure all entries differ. If they're not different
26 * MIPS32 will take revenge ...
27 */
28#define UNIQUE_ENTRYHI(idx) (CKSEG0 + ((idx) << (PAGE_SHIFT + 1)))
29
24/* CP0 hazard avoidance. */ 30/* CP0 hazard avoidance. */
25#define BARRIER __asm__ __volatile__(".set noreorder\n\t" \ 31#define BARRIER __asm__ __volatile__(".set noreorder\n\t" \
26 "nop; nop; nop; nop; nop; nop;\n\t" \ 32 "nop; nop; nop; nop; nop; nop;\n\t" \
@@ -42,11 +48,8 @@ void local_flush_tlb_all(void)
42 48
43 /* Blast 'em all away. */ 49 /* Blast 'em all away. */
44 while (entry < current_cpu_data.tlbsize) { 50 while (entry < current_cpu_data.tlbsize) {
45 /* 51 /* Make sure all entries differ. */
46 * Make sure all entries differ. If they're not different 52 write_c0_entryhi(UNIQUE_ENTRYHI(entry));
47 * MIPS32 will take revenge ...
48 */
49 write_c0_entryhi(CKSEG0 + (entry << (PAGE_SHIFT + 1)));
50 write_c0_index(entry); 53 write_c0_index(entry);
51 mtc0_tlbw_hazard(); 54 mtc0_tlbw_hazard();
52 tlb_write_indexed(); 55 tlb_write_indexed();
@@ -57,12 +60,21 @@ void local_flush_tlb_all(void)
57 local_irq_restore(flags); 60 local_irq_restore(flags);
58} 61}
59 62
63/* All entries common to a mm share an asid. To effectively flush
64 these entries, we just bump the asid. */
60void local_flush_tlb_mm(struct mm_struct *mm) 65void local_flush_tlb_mm(struct mm_struct *mm)
61{ 66{
62 int cpu = smp_processor_id(); 67 int cpu;
68
69 preempt_disable();
63 70
64 if (cpu_context(cpu, mm) != 0) 71 cpu = smp_processor_id();
65 drop_mmu_context(mm,cpu); 72
73 if (cpu_context(cpu, mm) != 0) {
74 drop_mmu_context(mm, cpu);
75 }
76
77 preempt_enable();
66} 78}
67 79
68void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start, 80void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
@@ -75,9 +87,9 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
75 unsigned long flags; 87 unsigned long flags;
76 int size; 88 int size;
77 89
78 local_irq_save(flags);
79 size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT; 90 size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
80 size = (size + 1) >> 1; 91 size = (size + 1) >> 1;
92 local_irq_save(flags);
81 if (size <= current_cpu_data.tlbsize/2) { 93 if (size <= current_cpu_data.tlbsize/2) {
82 int oldpid = read_c0_entryhi(); 94 int oldpid = read_c0_entryhi();
83 int newpid = cpu_asid(cpu, mm); 95 int newpid = cpu_asid(cpu, mm);
@@ -99,8 +111,7 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
99 if (idx < 0) 111 if (idx < 0)
100 continue; 112 continue;
101 /* Make sure all entries differ. */ 113 /* Make sure all entries differ. */
102 write_c0_entryhi(CKSEG0 + 114 write_c0_entryhi(UNIQUE_ENTRYHI(idx));
103 (idx << (PAGE_SHIFT + 1)));
104 mtc0_tlbw_hazard(); 115 mtc0_tlbw_hazard();
105 tlb_write_indexed(); 116 tlb_write_indexed();
106 } 117 }
@@ -118,9 +129,9 @@ void local_flush_tlb_kernel_range(unsigned long start, unsigned long end)
118 unsigned long flags; 129 unsigned long flags;
119 int size; 130 int size;
120 131
121 local_irq_save(flags);
122 size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT; 132 size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
123 size = (size + 1) >> 1; 133 size = (size + 1) >> 1;
134 local_irq_save(flags);
124 if (size <= current_cpu_data.tlbsize / 2) { 135 if (size <= current_cpu_data.tlbsize / 2) {
125 int pid = read_c0_entryhi(); 136 int pid = read_c0_entryhi();
126 137
@@ -142,7 +153,7 @@ void local_flush_tlb_kernel_range(unsigned long start, unsigned long end)
142 if (idx < 0) 153 if (idx < 0)
143 continue; 154 continue;
144 /* Make sure all entries differ. */ 155 /* Make sure all entries differ. */
145 write_c0_entryhi(CKSEG0 + (idx << (PAGE_SHIFT + 1))); 156 write_c0_entryhi(UNIQUE_ENTRYHI(idx));
146 mtc0_tlbw_hazard(); 157 mtc0_tlbw_hazard();
147 tlb_write_indexed(); 158 tlb_write_indexed();
148 } 159 }
@@ -176,7 +187,7 @@ void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
176 if (idx < 0) 187 if (idx < 0)
177 goto finish; 188 goto finish;
178 /* Make sure all entries differ. */ 189 /* Make sure all entries differ. */
179 write_c0_entryhi(CKSEG0 + (idx << (PAGE_SHIFT + 1))); 190 write_c0_entryhi(UNIQUE_ENTRYHI(idx));
180 mtc0_tlbw_hazard(); 191 mtc0_tlbw_hazard();
181 tlb_write_indexed(); 192 tlb_write_indexed();
182 tlbw_use_hazard(); 193 tlbw_use_hazard();
@@ -197,8 +208,8 @@ void local_flush_tlb_one(unsigned long page)
197 int oldpid, idx; 208 int oldpid, idx;
198 209
199 local_irq_save(flags); 210 local_irq_save(flags);
200 page &= (PAGE_MASK << 1);
201 oldpid = read_c0_entryhi(); 211 oldpid = read_c0_entryhi();
212 page &= (PAGE_MASK << 1);
202 write_c0_entryhi(page); 213 write_c0_entryhi(page);
203 mtc0_tlbw_hazard(); 214 mtc0_tlbw_hazard();
204 tlb_probe(); 215 tlb_probe();
@@ -208,7 +219,7 @@ void local_flush_tlb_one(unsigned long page)
208 write_c0_entrylo1(0); 219 write_c0_entrylo1(0);
209 if (idx >= 0) { 220 if (idx >= 0) {
210 /* Make sure all entries differ. */ 221 /* Make sure all entries differ. */
211 write_c0_entryhi(CKSEG0 + (idx << (PAGE_SHIFT + 1))); 222 write_c0_entryhi(UNIQUE_ENTRYHI(idx));
212 mtc0_tlbw_hazard(); 223 mtc0_tlbw_hazard();
213 tlb_write_indexed(); 224 tlb_write_indexed();
214 tlbw_use_hazard(); 225 tlbw_use_hazard();
@@ -227,6 +238,7 @@ void __update_tlb(struct vm_area_struct * vma, unsigned long address, pte_t pte)
227{ 238{
228 unsigned long flags; 239 unsigned long flags;
229 pgd_t *pgdp; 240 pgd_t *pgdp;
241 pud_t *pudp;
230 pmd_t *pmdp; 242 pmd_t *pmdp;
231 pte_t *ptep; 243 pte_t *ptep;
232 int idx, pid; 244 int idx, pid;
@@ -237,35 +249,34 @@ void __update_tlb(struct vm_area_struct * vma, unsigned long address, pte_t pte)
237 if (current->active_mm != vma->vm_mm) 249 if (current->active_mm != vma->vm_mm)
238 return; 250 return;
239 251
240 pid = read_c0_entryhi() & ASID_MASK;
241
242 local_irq_save(flags); 252 local_irq_save(flags);
253
254 pid = read_c0_entryhi() & ASID_MASK;
243 address &= (PAGE_MASK << 1); 255 address &= (PAGE_MASK << 1);
244 write_c0_entryhi(address | pid); 256 write_c0_entryhi(address | pid);
245 pgdp = pgd_offset(vma->vm_mm, address); 257 pgdp = pgd_offset(vma->vm_mm, address);
246 mtc0_tlbw_hazard(); 258 mtc0_tlbw_hazard();
247 tlb_probe(); 259 tlb_probe();
248 BARRIER; 260 BARRIER;
249 pmdp = pmd_offset(pgdp, address); 261 pudp = pud_offset(pgdp, address);
262 pmdp = pmd_offset(pudp, address);
250 idx = read_c0_index(); 263 idx = read_c0_index();
251 ptep = pte_offset_map(pmdp, address); 264 ptep = pte_offset_map(pmdp, address);
252 265
253 #if defined(CONFIG_64BIT_PHYS_ADDR) && defined(CONFIG_CPU_MIPS32) 266#if defined(CONFIG_64BIT_PHYS_ADDR) && defined(CONFIG_CPU_MIPS32_R1)
254 write_c0_entrylo0(ptep->pte_high); 267 write_c0_entrylo0(ptep->pte_high);
255 ptep++; 268 ptep++;
256 write_c0_entrylo1(ptep->pte_high); 269 write_c0_entrylo1(ptep->pte_high);
257#else 270#else
258 write_c0_entrylo0(pte_val(*ptep++) >> 6); 271 write_c0_entrylo0(pte_val(*ptep++) >> 6);
259 write_c0_entrylo1(pte_val(*ptep) >> 6); 272 write_c0_entrylo1(pte_val(*ptep) >> 6);
260#endif 273#endif
261 write_c0_entryhi(address | pid);
262 mtc0_tlbw_hazard(); 274 mtc0_tlbw_hazard();
263 if (idx < 0) 275 if (idx < 0)
264 tlb_write_random(); 276 tlb_write_random();
265 else 277 else
266 tlb_write_indexed(); 278 tlb_write_indexed();
267 tlbw_use_hazard(); 279 tlbw_use_hazard();
268 write_c0_entryhi(pid);
269 local_irq_restore(flags); 280 local_irq_restore(flags);
270} 281}
271 282
@@ -357,7 +368,8 @@ __init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,
357 old_pagemask = read_c0_pagemask(); 368 old_pagemask = read_c0_pagemask();
358 wired = read_c0_wired(); 369 wired = read_c0_wired();
359 if (--temp_tlb_entry < wired) { 370 if (--temp_tlb_entry < wired) {
360 printk(KERN_WARNING "No TLB space left for add_temporary_entry\n"); 371 printk(KERN_WARNING
372 "No TLB space left for add_temporary_entry\n");
361 ret = -ENOSPC; 373 ret = -ENOSPC;
362 goto out; 374 goto out;
363 } 375 }
@@ -388,7 +400,7 @@ static void __init probe_tlb(unsigned long config)
388 * is not supported, we assume R4k style. Cpu probing already figured 400 * is not supported, we assume R4k style. Cpu probing already figured
389 * out the number of tlb entries. 401 * out the number of tlb entries.
390 */ 402 */
391 if ((c->processor_id & 0xff0000) == PRID_COMP_LEGACY) 403 if ((c->processor_id & 0xff0000) == PRID_COMP_LEGACY)
392 return; 404 return;
393 405
394 reg = read_c0_config1(); 406 reg = read_c0_config1();
diff --git a/arch/mips/mm/tlb-sb1.c b/arch/mips/mm/tlb-sb1.c
deleted file mode 100644
index 6256cafcf3a2..000000000000
--- a/arch/mips/mm/tlb-sb1.c
+++ /dev/null
@@ -1,376 +0,0 @@
1/*
2 * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
3 * Copyright (C) 1997, 2001 Ralf Baechle (ralf@gnu.org)
4 * Copyright (C) 2000, 2001, 2002, 2003 Broadcom Corporation
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 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 */
20#include <linux/init.h>
21#include <asm/mmu_context.h>
22#include <asm/bootinfo.h>
23#include <asm/cpu.h>
24
25extern void build_tlb_refill_handler(void);
26
27#define UNIQUE_ENTRYHI(idx) (CKSEG0 + ((idx) << (PAGE_SHIFT + 1)))
28
29/* Dump the current entry* and pagemask registers */
30static inline void dump_cur_tlb_regs(void)
31{
32 unsigned int entryhihi, entryhilo, entrylo0hi, entrylo0lo, entrylo1hi;
33 unsigned int entrylo1lo, pagemask;
34
35 __asm__ __volatile__ (
36 ".set push \n"
37 ".set noreorder \n"
38 ".set mips64 \n"
39 ".set noat \n"
40 " tlbr \n"
41 " dmfc0 $1, $10 \n"
42 " dsrl32 %0, $1, 0 \n"
43 " sll %1, $1, 0 \n"
44 " dmfc0 $1, $2 \n"
45 " dsrl32 %2, $1, 0 \n"
46 " sll %3, $1, 0 \n"
47 " dmfc0 $1, $3 \n"
48 " dsrl32 %4, $1, 0 \n"
49 " sll %5, $1, 0 \n"
50 " mfc0 %6, $5 \n"
51 ".set pop \n"
52 : "=r" (entryhihi), "=r" (entryhilo),
53 "=r" (entrylo0hi), "=r" (entrylo0lo),
54 "=r" (entrylo1hi), "=r" (entrylo1lo),
55 "=r" (pagemask));
56
57 printk("%08X%08X %08X%08X %08X%08X %08X",
58 entryhihi, entryhilo,
59 entrylo0hi, entrylo0lo,
60 entrylo1hi, entrylo1lo,
61 pagemask);
62}
63
64void sb1_dump_tlb(void)
65{
66 unsigned long old_ctx;
67 unsigned long flags;
68 int entry;
69 local_irq_save(flags);
70 old_ctx = read_c0_entryhi();
71 printk("Current TLB registers state:\n"
72 " EntryHi EntryLo0 EntryLo1 PageMask Index\n"
73 "--------------------------------------------------------------------\n");
74 dump_cur_tlb_regs();
75 printk(" %08X\n", read_c0_index());
76 printk("\n\nFull TLB Dump:\n"
77 "Idx EntryHi EntryLo0 EntryLo1 PageMask\n"
78 "--------------------------------------------------------------\n");
79 for (entry = 0; entry < current_cpu_data.tlbsize; entry++) {
80 write_c0_index(entry);
81 printk("\n%02i ", entry);
82 dump_cur_tlb_regs();
83 }
84 printk("\n");
85 write_c0_entryhi(old_ctx);
86 local_irq_restore(flags);
87}
88
89void local_flush_tlb_all(void)
90{
91 unsigned long flags;
92 unsigned long old_ctx;
93 int entry;
94
95 local_irq_save(flags);
96 /* Save old context and create impossible VPN2 value */
97 old_ctx = read_c0_entryhi() & ASID_MASK;
98 write_c0_entrylo0(0);
99 write_c0_entrylo1(0);
100
101 entry = read_c0_wired();
102 while (entry < current_cpu_data.tlbsize) {
103 write_c0_entryhi(UNIQUE_ENTRYHI(entry));
104 write_c0_index(entry);
105 tlb_write_indexed();
106 entry++;
107 }
108 write_c0_entryhi(old_ctx);
109 local_irq_restore(flags);
110}
111
112
113/*
114 * Use a bogus region of memory (starting at 0) to sanitize the TLB's.
115 * Use increments of the maximum page size (16MB), and check for duplicate
116 * entries before doing a given write. Then, when we're safe from collisions
117 * with the firmware, go back and give all the entries invalid addresses with
118 * the normal flush routine. Wired entries will be killed as well!
119 */
120static void __init sb1_sanitize_tlb(void)
121{
122 int entry;
123 long addr = 0;
124
125 long inc = 1<<24; /* 16MB */
126 /* Save old context and create impossible VPN2 value */
127 write_c0_entrylo0(0);
128 write_c0_entrylo1(0);
129 for (entry = 0; entry < current_cpu_data.tlbsize; entry++) {
130 do {
131 addr += inc;
132 write_c0_entryhi(addr);
133 tlb_probe();
134 } while ((int)(read_c0_index()) >= 0);
135 write_c0_index(entry);
136 tlb_write_indexed();
137 }
138 /* Now that we know we're safe from collisions, we can safely flush
139 the TLB with the "normal" routine. */
140 local_flush_tlb_all();
141}
142
143void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
144 unsigned long end)
145{
146 struct mm_struct *mm = vma->vm_mm;
147 unsigned long flags;
148 int cpu;
149
150 local_irq_save(flags);
151 cpu = smp_processor_id();
152 if (cpu_context(cpu, mm) != 0) {
153 int size;
154 size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
155 size = (size + 1) >> 1;
156 if (size <= (current_cpu_data.tlbsize/2)) {
157 int oldpid = read_c0_entryhi() & ASID_MASK;
158 int newpid = cpu_asid(cpu, mm);
159
160 start &= (PAGE_MASK << 1);
161 end += ((PAGE_SIZE << 1) - 1);
162 end &= (PAGE_MASK << 1);
163 while (start < end) {
164 int idx;
165
166 write_c0_entryhi(start | newpid);
167 start += (PAGE_SIZE << 1);
168 tlb_probe();
169 idx = read_c0_index();
170 write_c0_entrylo0(0);
171 write_c0_entrylo1(0);
172 write_c0_entryhi(UNIQUE_ENTRYHI(idx));
173 if (idx < 0)
174 continue;
175 tlb_write_indexed();
176 }
177 write_c0_entryhi(oldpid);
178 } else {
179 drop_mmu_context(mm, cpu);
180 }
181 }
182 local_irq_restore(flags);
183}
184
185void local_flush_tlb_kernel_range(unsigned long start, unsigned long end)
186{
187 unsigned long flags;
188 int size;
189
190 size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
191 size = (size + 1) >> 1;
192
193 local_irq_save(flags);
194 if (size <= (current_cpu_data.tlbsize/2)) {
195 int pid = read_c0_entryhi();
196
197 start &= (PAGE_MASK << 1);
198 end += ((PAGE_SIZE << 1) - 1);
199 end &= (PAGE_MASK << 1);
200
201 while (start < end) {
202 int idx;
203
204 write_c0_entryhi(start);
205 start += (PAGE_SIZE << 1);
206 tlb_probe();
207 idx = read_c0_index();
208 write_c0_entrylo0(0);
209 write_c0_entrylo1(0);
210 write_c0_entryhi(UNIQUE_ENTRYHI(idx));
211 if (idx < 0)
212 continue;
213 tlb_write_indexed();
214 }
215 write_c0_entryhi(pid);
216 } else {
217 local_flush_tlb_all();
218 }
219 local_irq_restore(flags);
220}
221
222void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
223{
224 unsigned long flags;
225 int cpu = smp_processor_id();
226
227 local_irq_save(flags);
228 if (cpu_context(cpu, vma->vm_mm) != 0) {
229 int oldpid, newpid, idx;
230 newpid = cpu_asid(cpu, vma->vm_mm);
231 page &= (PAGE_MASK << 1);
232 oldpid = read_c0_entryhi() & ASID_MASK;
233 write_c0_entryhi(page | newpid);
234 tlb_probe();
235 idx = read_c0_index();
236 write_c0_entrylo0(0);
237 write_c0_entrylo1(0);
238 if (idx < 0)
239 goto finish;
240 /* Make sure all entries differ. */
241 write_c0_entryhi(UNIQUE_ENTRYHI(idx));
242 tlb_write_indexed();
243 finish:
244 write_c0_entryhi(oldpid);
245 }
246 local_irq_restore(flags);
247}
248
249/*
250 * Remove one kernel space TLB entry. This entry is assumed to be marked
251 * global so we don't do the ASID thing.
252 */
253void local_flush_tlb_one(unsigned long page)
254{
255 unsigned long flags;
256 int oldpid, idx;
257
258 page &= (PAGE_MASK << 1);
259 oldpid = read_c0_entryhi() & ASID_MASK;
260
261 local_irq_save(flags);
262 write_c0_entryhi(page);
263 tlb_probe();
264 idx = read_c0_index();
265 if (idx >= 0) {
266 /* Make sure all entries differ. */
267 write_c0_entryhi(UNIQUE_ENTRYHI(idx));
268 write_c0_entrylo0(0);
269 write_c0_entrylo1(0);
270 tlb_write_indexed();
271 }
272
273 write_c0_entryhi(oldpid);
274 local_irq_restore(flags);
275}
276
277/* All entries common to a mm share an asid. To effectively flush
278 these entries, we just bump the asid. */
279void local_flush_tlb_mm(struct mm_struct *mm)
280{
281 int cpu;
282
283 preempt_disable();
284
285 cpu = smp_processor_id();
286
287 if (cpu_context(cpu, mm) != 0) {
288 drop_mmu_context(mm, cpu);
289 }
290
291 preempt_enable();
292}
293
294/* Stolen from mips32 routines */
295
296void __update_tlb(struct vm_area_struct *vma, unsigned long address, pte_t pte)
297{
298 unsigned long flags;
299 pgd_t *pgdp;
300 pmd_t *pmdp;
301 pte_t *ptep;
302 int idx, pid;
303
304 /*
305 * Handle debugger faulting in for debugee.
306 */
307 if (current->active_mm != vma->vm_mm)
308 return;
309
310 local_irq_save(flags);
311
312 pid = read_c0_entryhi() & ASID_MASK;
313 address &= (PAGE_MASK << 1);
314 write_c0_entryhi(address | (pid));
315 pgdp = pgd_offset(vma->vm_mm, address);
316 tlb_probe();
317 pmdp = pmd_offset(pgdp, address);
318 idx = read_c0_index();
319 ptep = pte_offset_map(pmdp, address);
320 write_c0_entrylo0(pte_val(*ptep++) >> 6);
321 write_c0_entrylo1(pte_val(*ptep) >> 6);
322 if (idx < 0) {
323 tlb_write_random();
324 } else {
325 tlb_write_indexed();
326 }
327 local_irq_restore(flags);
328}
329
330void __init add_wired_entry(unsigned long entrylo0, unsigned long entrylo1,
331 unsigned long entryhi, unsigned long pagemask)
332{
333 unsigned long flags;
334 unsigned long wired;
335 unsigned long old_pagemask;
336 unsigned long old_ctx;
337
338 local_irq_save(flags);
339 old_ctx = read_c0_entryhi() & 0xff;
340 old_pagemask = read_c0_pagemask();
341 wired = read_c0_wired();
342 write_c0_wired(wired + 1);
343 write_c0_index(wired);
344
345 write_c0_pagemask(pagemask);
346 write_c0_entryhi(entryhi);
347 write_c0_entrylo0(entrylo0);
348 write_c0_entrylo1(entrylo1);
349 tlb_write_indexed();
350
351 write_c0_entryhi(old_ctx);
352 write_c0_pagemask(old_pagemask);
353
354 local_flush_tlb_all();
355 local_irq_restore(flags);
356}
357
358/*
359 * This is called from loadmmu.c. We have to set up all the
360 * memory management function pointers, as well as initialize
361 * the caches and tlbs
362 */
363void tlb_init(void)
364{
365 write_c0_pagemask(PM_DEFAULT_MASK);
366 write_c0_wired(0);
367
368 /*
369 * We don't know what state the firmware left the TLB's in, so this is
370 * the ultra-conservative way to flush the TLB's and avoid machine
371 * check exceptions due to duplicate TLB entries
372 */
373 sb1_sanitize_tlb();
374
375 build_tlb_refill_handler();
376}
diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c
index 6569be3983c7..0f9485806bac 100644
--- a/arch/mips/mm/tlbex.c
+++ b/arch/mips/mm/tlbex.c
@@ -6,6 +6,7 @@
6 * Synthesize TLB refill handlers at runtime. 6 * Synthesize TLB refill handlers at runtime.
7 * 7 *
8 * Copyright (C) 2004,2005 by Thiemo Seufer 8 * Copyright (C) 2004,2005 by Thiemo Seufer
9 * Copyright (C) 2005 Maciej W. Rozycki
9 */ 10 */
10 11
11#include <stdarg.h> 12#include <stdarg.h>
@@ -91,7 +92,7 @@ enum opcode {
91 insn_addu, insn_addiu, insn_and, insn_andi, insn_beq, 92 insn_addu, insn_addiu, insn_and, insn_andi, insn_beq,
92 insn_beql, insn_bgez, insn_bgezl, insn_bltz, insn_bltzl, 93 insn_beql, insn_bgez, insn_bgezl, insn_bltz, insn_bltzl,
93 insn_bne, insn_daddu, insn_daddiu, insn_dmfc0, insn_dmtc0, 94 insn_bne, insn_daddu, insn_daddiu, insn_dmfc0, insn_dmtc0,
94 insn_dsll, insn_dsll32, insn_dsra, insn_dsrl, insn_dsrl32, 95 insn_dsll, insn_dsll32, insn_dsra, insn_dsrl,
95 insn_dsubu, insn_eret, insn_j, insn_jal, insn_jr, insn_ld, 96 insn_dsubu, insn_eret, insn_j, insn_jal, insn_jr, insn_ld,
96 insn_ll, insn_lld, insn_lui, insn_lw, insn_mfc0, insn_mtc0, 97 insn_ll, insn_lld, insn_lui, insn_lw, insn_mfc0, insn_mtc0,
97 insn_ori, insn_rfe, insn_sc, insn_scd, insn_sd, insn_sll, 98 insn_ori, insn_rfe, insn_sc, insn_scd, insn_sd, insn_sll,
@@ -134,7 +135,6 @@ static __initdata struct insn insn_table[] = {
134 { insn_dsll32, M(spec_op,0,0,0,0,dsll32_op), RT | RD | RE }, 135 { insn_dsll32, M(spec_op,0,0,0,0,dsll32_op), RT | RD | RE },
135 { insn_dsra, M(spec_op,0,0,0,0,dsra_op), RT | RD | RE }, 136 { insn_dsra, M(spec_op,0,0,0,0,dsra_op), RT | RD | RE },
136 { insn_dsrl, M(spec_op,0,0,0,0,dsrl_op), RT | RD | RE }, 137 { insn_dsrl, M(spec_op,0,0,0,0,dsrl_op), RT | RD | RE },
137 { insn_dsrl32, M(spec_op,0,0,0,0,dsrl32_op), RT | RD | RE },
138 { insn_dsubu, M(spec_op,0,0,0,0,dsubu_op), RS | RT | RD }, 138 { insn_dsubu, M(spec_op,0,0,0,0,dsubu_op), RS | RT | RD },
139 { insn_eret, M(cop0_op,cop_op,0,0,0,eret_op), 0 }, 139 { insn_eret, M(cop0_op,cop_op,0,0,0,eret_op), 0 },
140 { insn_j, M(j_op,0,0,0,0,0), JIMM }, 140 { insn_j, M(j_op,0,0,0,0,0), JIMM },
@@ -366,7 +366,6 @@ I_u2u1u3(_dsll);
366I_u2u1u3(_dsll32); 366I_u2u1u3(_dsll32);
367I_u2u1u3(_dsra); 367I_u2u1u3(_dsra);
368I_u2u1u3(_dsrl); 368I_u2u1u3(_dsrl);
369I_u2u1u3(_dsrl32);
370I_u3u1u2(_dsubu); 369I_u3u1u2(_dsubu);
371I_0(_eret); 370I_0(_eret);
372I_u1(_j); 371I_u1(_j);
@@ -412,7 +411,6 @@ enum label_id {
412 label_nopage_tlbm, 411 label_nopage_tlbm,
413 label_smp_pgtable_change, 412 label_smp_pgtable_change,
414 label_r3000_write_probe_fail, 413 label_r3000_write_probe_fail,
415 label_r3000_write_probe_ok
416}; 414};
417 415
418struct label { 416struct label {
@@ -445,7 +443,6 @@ L_LA(_nopage_tlbs)
445L_LA(_nopage_tlbm) 443L_LA(_nopage_tlbm)
446L_LA(_smp_pgtable_change) 444L_LA(_smp_pgtable_change)
447L_LA(_r3000_write_probe_fail) 445L_LA(_r3000_write_probe_fail)
448L_LA(_r3000_write_probe_ok)
449 446
450/* convenience macros for instructions */ 447/* convenience macros for instructions */
451#ifdef CONFIG_64BIT 448#ifdef CONFIG_64BIT
@@ -490,7 +487,7 @@ L_LA(_r3000_write_probe_ok)
490static __init int __attribute__((unused)) in_compat_space_p(long addr) 487static __init int __attribute__((unused)) in_compat_space_p(long addr)
491{ 488{
492 /* Is this address in 32bit compat space? */ 489 /* Is this address in 32bit compat space? */
493 return (((addr) & 0xffffffff00000000) == 0xffffffff00000000); 490 return (((addr) & 0xffffffff00000000L) == 0xffffffff00000000L);
494} 491}
495 492
496static __init int __attribute__((unused)) rel_highest(long val) 493static __init int __attribute__((unused)) rel_highest(long val)
@@ -734,7 +731,7 @@ static void __init build_r3000_tlb_refill_handler(void)
734 if (p > tlb_handler + 32) 731 if (p > tlb_handler + 32)
735 panic("TLB refill handler space exceeded"); 732 panic("TLB refill handler space exceeded");
736 733
737 printk("Synthesized TLB handler (%u instructions).\n", 734 printk("Synthesized TLB refill handler (%u instructions).\n",
738 (unsigned int)(p - tlb_handler)); 735 (unsigned int)(p - tlb_handler));
739#ifdef DEBUG_TLB 736#ifdef DEBUG_TLB
740 { 737 {
@@ -746,7 +743,6 @@ static void __init build_r3000_tlb_refill_handler(void)
746#endif 743#endif
747 744
748 memcpy((void *)CAC_BASE, tlb_handler, 0x80); 745 memcpy((void *)CAC_BASE, tlb_handler, 0x80);
749 flush_icache_range(CAC_BASE, CAC_BASE + 0x80);
750} 746}
751 747
752/* 748/*
@@ -783,6 +779,8 @@ static __initdata u32 final_handler[64];
783static __init void __attribute__((unused)) build_tlb_probe_entry(u32 **p) 779static __init void __attribute__((unused)) build_tlb_probe_entry(u32 **p)
784{ 780{
785 switch (current_cpu_data.cputype) { 781 switch (current_cpu_data.cputype) {
782 /* Found by experiment: R4600 v2.0 needs this, too. */
783 case CPU_R4600:
786 case CPU_R5000: 784 case CPU_R5000:
787 case CPU_R5000A: 785 case CPU_R5000A:
788 case CPU_NEVADA: 786 case CPU_NEVADA:
@@ -834,12 +832,20 @@ static __init void build_tlb_write_entry(u32 **p, struct label **l,
834 case CPU_R4700: 832 case CPU_R4700:
835 case CPU_R5000: 833 case CPU_R5000:
836 case CPU_R5000A: 834 case CPU_R5000A:
835 i_nop(p);
836 tlbw(p);
837 i_nop(p);
838 break;
839
840 case CPU_R4300:
837 case CPU_5KC: 841 case CPU_5KC:
838 case CPU_TX49XX: 842 case CPU_TX49XX:
839 case CPU_AU1000: 843 case CPU_AU1000:
840 case CPU_AU1100: 844 case CPU_AU1100:
841 case CPU_AU1500: 845 case CPU_AU1500:
842 case CPU_AU1550: 846 case CPU_AU1550:
847 case CPU_AU1200:
848 case CPU_PR4450:
843 i_nop(p); 849 i_nop(p);
844 tlbw(p); 850 tlbw(p);
845 break; 851 break;
@@ -848,6 +854,7 @@ static __init void build_tlb_write_entry(u32 **p, struct label **l,
848 case CPU_R12000: 854 case CPU_R12000:
849 case CPU_4KC: 855 case CPU_4KC:
850 case CPU_SB1: 856 case CPU_SB1:
857 case CPU_SB1A:
851 case CPU_4KSC: 858 case CPU_4KSC:
852 case CPU_20KC: 859 case CPU_20KC:
853 case CPU_25KF: 860 case CPU_25KF:
@@ -875,6 +882,7 @@ static __init void build_tlb_write_entry(u32 **p, struct label **l,
875 882
876 case CPU_4KEC: 883 case CPU_4KEC:
877 case CPU_24K: 884 case CPU_24K:
885 case CPU_34K:
878 i_ehb(p); 886 i_ehb(p);
879 tlbw(p); 887 tlbw(p);
880 break; 888 break;
@@ -911,6 +919,7 @@ static __init void build_tlb_write_entry(u32 **p, struct label **l,
911 919
912 case CPU_VR4131: 920 case CPU_VR4131:
913 case CPU_VR4133: 921 case CPU_VR4133:
922 case CPU_R5432:
914 i_nop(p); 923 i_nop(p);
915 i_nop(p); 924 i_nop(p);
916 tlbw(p); 925 tlbw(p);
@@ -942,34 +951,29 @@ build_get_pmde64(u32 **p, struct label **l, struct reloc **r,
942 /* No i_nop needed here, since the next insn doesn't touch TMP. */ 951 /* No i_nop needed here, since the next insn doesn't touch TMP. */
943 952
944#ifdef CONFIG_SMP 953#ifdef CONFIG_SMP
954# ifdef CONFIG_BUILD_ELF64
945 /* 955 /*
946 * 64 bit SMP has the lower part of &pgd_current[smp_processor_id()] 956 * 64 bit SMP running in XKPHYS has smp_processor_id() << 3
947 * stored in CONTEXT. 957 * stored in CONTEXT.
948 */ 958 */
949 if (in_compat_space_p(pgdc)) { 959 i_dmfc0(p, ptr, C0_CONTEXT);
950 i_dmfc0(p, ptr, C0_CONTEXT); 960 i_dsrl(p, ptr, ptr, 23);
951 i_dsra(p, ptr, ptr, 23); 961 i_LA_mostly(p, tmp, pgdc);
952 i_ld(p, ptr, 0, ptr); 962 i_daddu(p, ptr, ptr, tmp);
953 } else { 963 i_dmfc0(p, tmp, C0_BADVADDR);
954#ifdef CONFIG_BUILD_ELF64 964 i_ld(p, ptr, rel_lo(pgdc), ptr);
955 i_dmfc0(p, ptr, C0_CONTEXT); 965# else
956 i_dsrl(p, ptr, ptr, 23); 966 /*
957 i_dsll(p, ptr, ptr, 3); 967 * 64 bit SMP running in compat space has the lower part of
958 i_LA_mostly(p, tmp, pgdc); 968 * &pgd_current[smp_processor_id()] stored in CONTEXT.
959 i_daddu(p, ptr, ptr, tmp); 969 */
960 i_dmfc0(p, tmp, C0_BADVADDR); 970 if (!in_compat_space_p(pgdc))
961 i_ld(p, ptr, rel_lo(pgdc), ptr); 971 panic("Invalid page directory address!");
962#else 972
963 i_dmfc0(p, ptr, C0_CONTEXT); 973 i_dmfc0(p, ptr, C0_CONTEXT);
964 i_lui(p, tmp, rel_highest(pgdc)); 974 i_dsra(p, ptr, ptr, 23);
965 i_dsll(p, ptr, ptr, 9); 975 i_ld(p, ptr, 0, ptr);
966 i_daddiu(p, tmp, tmp, rel_higher(pgdc)); 976# endif
967 i_dsrl32(p, ptr, ptr, 0);
968 i_and(p, ptr, ptr, tmp);
969 i_dmfc0(p, tmp, C0_BADVADDR);
970 i_ld(p, ptr, 0, ptr);
971#endif
972 }
973#else 977#else
974 i_LA_mostly(p, ptr, pgdc); 978 i_LA_mostly(p, ptr, pgdc);
975 i_ld(p, ptr, rel_lo(pgdc), ptr); 979 i_ld(p, ptr, rel_lo(pgdc), ptr);
@@ -1026,7 +1030,6 @@ build_get_pgde32(u32 **p, unsigned int tmp, unsigned int ptr)
1026 i_mfc0(p, ptr, C0_CONTEXT); 1030 i_mfc0(p, ptr, C0_CONTEXT);
1027 i_LA_mostly(p, tmp, pgdc); 1031 i_LA_mostly(p, tmp, pgdc);
1028 i_srl(p, ptr, ptr, 23); 1032 i_srl(p, ptr, ptr, 23);
1029 i_sll(p, ptr, ptr, 2);
1030 i_addu(p, ptr, tmp, ptr); 1033 i_addu(p, ptr, tmp, ptr);
1031#else 1034#else
1032 i_LA_mostly(p, ptr, pgdc); 1035 i_LA_mostly(p, ptr, pgdc);
@@ -1245,13 +1248,19 @@ static void __init build_r4000_tlb_refill_handler(void)
1245 { 1248 {
1246 int i; 1249 int i;
1247 1250
1248 for (i = 0; i < 64; i++) 1251 f = final_handler;
1249 printk("%08x\n", final_handler[i]); 1252#ifdef CONFIG_64BIT
1253 if (final_len > 32)
1254 final_len = 64;
1255 else
1256 f = final_handler + 32;
1257#endif /* CONFIG_64BIT */
1258 for (i = 0; i < final_len; i++)
1259 printk("%08x\n", f[i]);
1250 } 1260 }
1251#endif 1261#endif
1252 1262
1253 memcpy((void *)CAC_BASE, final_handler, 0x100); 1263 memcpy((void *)CAC_BASE, final_handler, 0x100);
1254 flush_icache_range(CAC_BASE, CAC_BASE + 0x100);
1255} 1264}
1256 1265
1257/* 1266/*
@@ -1277,37 +1286,41 @@ u32 __tlb_handler_align handle_tlbs[FASTPATH_SIZE];
1277u32 __tlb_handler_align handle_tlbm[FASTPATH_SIZE]; 1286u32 __tlb_handler_align handle_tlbm[FASTPATH_SIZE];
1278 1287
1279static void __init 1288static void __init
1280iPTE_LW(u32 **p, struct label **l, unsigned int pte, int offset, 1289iPTE_LW(u32 **p, struct label **l, unsigned int pte, unsigned int ptr)
1281 unsigned int ptr)
1282{ 1290{
1283#ifdef CONFIG_SMP 1291#ifdef CONFIG_SMP
1284# ifdef CONFIG_64BIT_PHYS_ADDR 1292# ifdef CONFIG_64BIT_PHYS_ADDR
1285 if (cpu_has_64bits) 1293 if (cpu_has_64bits)
1286 i_lld(p, pte, offset, ptr); 1294 i_lld(p, pte, 0, ptr);
1287 else 1295 else
1288# endif 1296# endif
1289 i_LL(p, pte, offset, ptr); 1297 i_LL(p, pte, 0, ptr);
1290#else 1298#else
1291# ifdef CONFIG_64BIT_PHYS_ADDR 1299# ifdef CONFIG_64BIT_PHYS_ADDR
1292 if (cpu_has_64bits) 1300 if (cpu_has_64bits)
1293 i_ld(p, pte, offset, ptr); 1301 i_ld(p, pte, 0, ptr);
1294 else 1302 else
1295# endif 1303# endif
1296 i_LW(p, pte, offset, ptr); 1304 i_LW(p, pte, 0, ptr);
1297#endif 1305#endif
1298} 1306}
1299 1307
1300static void __init 1308static void __init
1301iPTE_SW(u32 **p, struct reloc **r, unsigned int pte, int offset, 1309iPTE_SW(u32 **p, struct reloc **r, unsigned int pte, unsigned int ptr,
1302 unsigned int ptr) 1310 unsigned int mode)
1303{ 1311{
1312#ifdef CONFIG_64BIT_PHYS_ADDR
1313 unsigned int hwmode = mode & (_PAGE_VALID | _PAGE_DIRTY);
1314#endif
1315
1316 i_ori(p, pte, pte, mode);
1304#ifdef CONFIG_SMP 1317#ifdef CONFIG_SMP
1305# ifdef CONFIG_64BIT_PHYS_ADDR 1318# ifdef CONFIG_64BIT_PHYS_ADDR
1306 if (cpu_has_64bits) 1319 if (cpu_has_64bits)
1307 i_scd(p, pte, offset, ptr); 1320 i_scd(p, pte, 0, ptr);
1308 else 1321 else
1309# endif 1322# endif
1310 i_SC(p, pte, offset, ptr); 1323 i_SC(p, pte, 0, ptr);
1311 1324
1312 if (r10000_llsc_war()) 1325 if (r10000_llsc_war())
1313 il_beqzl(p, r, pte, label_smp_pgtable_change); 1326 il_beqzl(p, r, pte, label_smp_pgtable_change);
@@ -1318,7 +1331,7 @@ iPTE_SW(u32 **p, struct reloc **r, unsigned int pte, int offset,
1318 if (!cpu_has_64bits) { 1331 if (!cpu_has_64bits) {
1319 /* no i_nop needed */ 1332 /* no i_nop needed */
1320 i_ll(p, pte, sizeof(pte_t) / 2, ptr); 1333 i_ll(p, pte, sizeof(pte_t) / 2, ptr);
1321 i_ori(p, pte, pte, _PAGE_VALID); 1334 i_ori(p, pte, pte, hwmode);
1322 i_sc(p, pte, sizeof(pte_t) / 2, ptr); 1335 i_sc(p, pte, sizeof(pte_t) / 2, ptr);
1323 il_beqz(p, r, pte, label_smp_pgtable_change); 1336 il_beqz(p, r, pte, label_smp_pgtable_change);
1324 /* no i_nop needed */ 1337 /* no i_nop needed */
@@ -1331,15 +1344,15 @@ iPTE_SW(u32 **p, struct reloc **r, unsigned int pte, int offset,
1331#else 1344#else
1332# ifdef CONFIG_64BIT_PHYS_ADDR 1345# ifdef CONFIG_64BIT_PHYS_ADDR
1333 if (cpu_has_64bits) 1346 if (cpu_has_64bits)
1334 i_sd(p, pte, offset, ptr); 1347 i_sd(p, pte, 0, ptr);
1335 else 1348 else
1336# endif 1349# endif
1337 i_SW(p, pte, offset, ptr); 1350 i_SW(p, pte, 0, ptr);
1338 1351
1339# ifdef CONFIG_64BIT_PHYS_ADDR 1352# ifdef CONFIG_64BIT_PHYS_ADDR
1340 if (!cpu_has_64bits) { 1353 if (!cpu_has_64bits) {
1341 i_lw(p, pte, sizeof(pte_t) / 2, ptr); 1354 i_lw(p, pte, sizeof(pte_t) / 2, ptr);
1342 i_ori(p, pte, pte, _PAGE_VALID); 1355 i_ori(p, pte, pte, hwmode);
1343 i_sw(p, pte, sizeof(pte_t) / 2, ptr); 1356 i_sw(p, pte, sizeof(pte_t) / 2, ptr);
1344 i_lw(p, pte, 0, ptr); 1357 i_lw(p, pte, 0, ptr);
1345 } 1358 }
@@ -1359,7 +1372,7 @@ build_pte_present(u32 **p, struct label **l, struct reloc **r,
1359 i_andi(p, pte, pte, _PAGE_PRESENT | _PAGE_READ); 1372 i_andi(p, pte, pte, _PAGE_PRESENT | _PAGE_READ);
1360 i_xori(p, pte, pte, _PAGE_PRESENT | _PAGE_READ); 1373 i_xori(p, pte, pte, _PAGE_PRESENT | _PAGE_READ);
1361 il_bnez(p, r, pte, lid); 1374 il_bnez(p, r, pte, lid);
1362 iPTE_LW(p, l, pte, 0, ptr); 1375 iPTE_LW(p, l, pte, ptr);
1363} 1376}
1364 1377
1365/* Make PTE valid, store result in PTR. */ 1378/* Make PTE valid, store result in PTR. */
@@ -1367,8 +1380,9 @@ static void __init
1367build_make_valid(u32 **p, struct reloc **r, unsigned int pte, 1380build_make_valid(u32 **p, struct reloc **r, unsigned int pte,
1368 unsigned int ptr) 1381 unsigned int ptr)
1369{ 1382{
1370 i_ori(p, pte, pte, _PAGE_VALID | _PAGE_ACCESSED); 1383 unsigned int mode = _PAGE_VALID | _PAGE_ACCESSED;
1371 iPTE_SW(p, r, pte, 0, ptr); 1384
1385 iPTE_SW(p, r, pte, ptr, mode);
1372} 1386}
1373 1387
1374/* 1388/*
@@ -1382,7 +1396,7 @@ build_pte_writable(u32 **p, struct label **l, struct reloc **r,
1382 i_andi(p, pte, pte, _PAGE_PRESENT | _PAGE_WRITE); 1396 i_andi(p, pte, pte, _PAGE_PRESENT | _PAGE_WRITE);
1383 i_xori(p, pte, pte, _PAGE_PRESENT | _PAGE_WRITE); 1397 i_xori(p, pte, pte, _PAGE_PRESENT | _PAGE_WRITE);
1384 il_bnez(p, r, pte, lid); 1398 il_bnez(p, r, pte, lid);
1385 iPTE_LW(p, l, pte, 0, ptr); 1399 iPTE_LW(p, l, pte, ptr);
1386} 1400}
1387 1401
1388/* Make PTE writable, update software status bits as well, then store 1402/* Make PTE writable, update software status bits as well, then store
@@ -1392,9 +1406,10 @@ static void __init
1392build_make_write(u32 **p, struct reloc **r, unsigned int pte, 1406build_make_write(u32 **p, struct reloc **r, unsigned int pte,
1393 unsigned int ptr) 1407 unsigned int ptr)
1394{ 1408{
1395 i_ori(p, pte, pte, 1409 unsigned int mode = (_PAGE_ACCESSED | _PAGE_MODIFIED | _PAGE_VALID
1396 _PAGE_ACCESSED | _PAGE_MODIFIED | _PAGE_VALID | _PAGE_DIRTY); 1410 | _PAGE_DIRTY);
1397 iPTE_SW(p, r, pte, 0, ptr); 1411
1412 iPTE_SW(p, r, pte, ptr, mode);
1398} 1413}
1399 1414
1400/* 1415/*
@@ -1407,41 +1422,48 @@ build_pte_modifiable(u32 **p, struct label **l, struct reloc **r,
1407{ 1422{
1408 i_andi(p, pte, pte, _PAGE_WRITE); 1423 i_andi(p, pte, pte, _PAGE_WRITE);
1409 il_beqz(p, r, pte, lid); 1424 il_beqz(p, r, pte, lid);
1410 iPTE_LW(p, l, pte, 0, ptr); 1425 iPTE_LW(p, l, pte, ptr);
1411} 1426}
1412 1427
1413/* 1428/*
1414 * R3000 style TLB load/store/modify handlers. 1429 * R3000 style TLB load/store/modify handlers.
1415 */ 1430 */
1416 1431
1417/* This places the pte in the page table at PTR into ENTRYLO0. */ 1432/*
1433 * This places the pte into ENTRYLO0 and writes it with tlbwi.
1434 * Then it returns.
1435 */
1418static void __init 1436static void __init
1419build_r3000_pte_reload(u32 **p, unsigned int ptr) 1437build_r3000_pte_reload_tlbwi(u32 **p, unsigned int pte, unsigned int tmp)
1420{ 1438{
1421 i_lw(p, ptr, 0, ptr); 1439 i_mtc0(p, pte, C0_ENTRYLO0); /* cp0 delay */
1422 i_nop(p); /* load delay */ 1440 i_mfc0(p, tmp, C0_EPC); /* cp0 delay */
1423 i_mtc0(p, ptr, C0_ENTRYLO0); 1441 i_tlbwi(p);
1424 i_nop(p); /* cp0 delay */ 1442 i_jr(p, tmp);
1443 i_rfe(p); /* branch delay */
1425} 1444}
1426 1445
1427/* 1446/*
1428 * The index register may have the probe fail bit set, 1447 * This places the pte into ENTRYLO0 and writes it with tlbwi
1429 * because we would trap on access kseg2, i.e. without refill. 1448 * or tlbwr as appropriate. This is because the index register
1449 * may have the probe fail bit set as a result of a trap on a
1450 * kseg2 access, i.e. without refill. Then it returns.
1430 */ 1451 */
1431static void __init 1452static void __init
1432build_r3000_tlb_write(u32 **p, struct label **l, struct reloc **r, 1453build_r3000_tlb_reload_write(u32 **p, struct label **l, struct reloc **r,
1433 unsigned int tmp) 1454 unsigned int pte, unsigned int tmp)
1434{ 1455{
1435 i_mfc0(p, tmp, C0_INDEX); 1456 i_mfc0(p, tmp, C0_INDEX);
1436 i_nop(p); /* cp0 delay */ 1457 i_mtc0(p, pte, C0_ENTRYLO0); /* cp0 delay */
1437 il_bltz(p, r, tmp, label_r3000_write_probe_fail); 1458 il_bltz(p, r, tmp, label_r3000_write_probe_fail); /* cp0 delay */
1438 i_nop(p); /* branch delay */ 1459 i_mfc0(p, tmp, C0_EPC); /* branch delay */
1439 i_tlbwi(p); 1460 i_tlbwi(p); /* cp0 delay */
1440 il_b(p, r, label_r3000_write_probe_ok); 1461 i_jr(p, tmp);
1441 i_nop(p); /* branch delay */ 1462 i_rfe(p); /* branch delay */
1442 l_r3000_write_probe_fail(l, *p); 1463 l_r3000_write_probe_fail(l, *p);
1443 i_tlbwr(p); 1464 i_tlbwr(p); /* cp0 delay */
1444 l_r3000_write_probe_ok(l, *p); 1465 i_jr(p, tmp);
1466 i_rfe(p); /* branch delay */
1445} 1467}
1446 1468
1447static void __init 1469static void __init
@@ -1461,17 +1483,7 @@ build_r3000_tlbchange_handler_head(u32 **p, unsigned int pte,
1461 i_andi(p, pte, pte, 0xffc); /* load delay */ 1483 i_andi(p, pte, pte, 0xffc); /* load delay */
1462 i_addu(p, ptr, ptr, pte); 1484 i_addu(p, ptr, ptr, pte);
1463 i_lw(p, pte, 0, ptr); 1485 i_lw(p, pte, 0, ptr);
1464 i_nop(p); /* load delay */ 1486 i_tlbp(p); /* load delay */
1465 i_tlbp(p);
1466}
1467
1468static void __init
1469build_r3000_tlbchange_handler_tail(u32 **p, unsigned int tmp)
1470{
1471 i_mfc0(p, tmp, C0_EPC);
1472 i_nop(p); /* cp0 delay */
1473 i_jr(p, tmp);
1474 i_rfe(p); /* branch delay */
1475} 1487}
1476 1488
1477static void __init build_r3000_tlb_load_handler(void) 1489static void __init build_r3000_tlb_load_handler(void)
@@ -1486,10 +1498,9 @@ static void __init build_r3000_tlb_load_handler(void)
1486 1498
1487 build_r3000_tlbchange_handler_head(&p, K0, K1); 1499 build_r3000_tlbchange_handler_head(&p, K0, K1);
1488 build_pte_present(&p, &l, &r, K0, K1, label_nopage_tlbl); 1500 build_pte_present(&p, &l, &r, K0, K1, label_nopage_tlbl);
1501 i_nop(&p); /* load delay */
1489 build_make_valid(&p, &r, K0, K1); 1502 build_make_valid(&p, &r, K0, K1);
1490 build_r3000_pte_reload(&p, K1); 1503 build_r3000_tlb_reload_write(&p, &l, &r, K0, K1);
1491 build_r3000_tlb_write(&p, &l, &r, K0);
1492 build_r3000_tlbchange_handler_tail(&p, K0);
1493 1504
1494 l_nopage_tlbl(&l, p); 1505 l_nopage_tlbl(&l, p);
1495 i_j(&p, (unsigned long)tlb_do_page_fault_0 & 0x0fffffff); 1506 i_j(&p, (unsigned long)tlb_do_page_fault_0 & 0x0fffffff);
@@ -1506,13 +1517,10 @@ static void __init build_r3000_tlb_load_handler(void)
1506 { 1517 {
1507 int i; 1518 int i;
1508 1519
1509 for (i = 0; i < FASTPATH_SIZE; i++) 1520 for (i = 0; i < (p - handle_tlbl); i++)
1510 printk("%08x\n", handle_tlbl[i]); 1521 printk("%08x\n", handle_tlbl[i]);
1511 } 1522 }
1512#endif 1523#endif
1513
1514 flush_icache_range((unsigned long)handle_tlbl,
1515 (unsigned long)handle_tlbl + FASTPATH_SIZE * sizeof(u32));
1516} 1524}
1517 1525
1518static void __init build_r3000_tlb_store_handler(void) 1526static void __init build_r3000_tlb_store_handler(void)
@@ -1527,10 +1535,9 @@ static void __init build_r3000_tlb_store_handler(void)
1527 1535
1528 build_r3000_tlbchange_handler_head(&p, K0, K1); 1536 build_r3000_tlbchange_handler_head(&p, K0, K1);
1529 build_pte_writable(&p, &l, &r, K0, K1, label_nopage_tlbs); 1537 build_pte_writable(&p, &l, &r, K0, K1, label_nopage_tlbs);
1538 i_nop(&p); /* load delay */
1530 build_make_write(&p, &r, K0, K1); 1539 build_make_write(&p, &r, K0, K1);
1531 build_r3000_pte_reload(&p, K1); 1540 build_r3000_tlb_reload_write(&p, &l, &r, K0, K1);
1532 build_r3000_tlb_write(&p, &l, &r, K0);
1533 build_r3000_tlbchange_handler_tail(&p, K0);
1534 1541
1535 l_nopage_tlbs(&l, p); 1542 l_nopage_tlbs(&l, p);
1536 i_j(&p, (unsigned long)tlb_do_page_fault_1 & 0x0fffffff); 1543 i_j(&p, (unsigned long)tlb_do_page_fault_1 & 0x0fffffff);
@@ -1547,13 +1554,10 @@ static void __init build_r3000_tlb_store_handler(void)
1547 { 1554 {
1548 int i; 1555 int i;
1549 1556
1550 for (i = 0; i < FASTPATH_SIZE; i++) 1557 for (i = 0; i < (p - handle_tlbs); i++)
1551 printk("%08x\n", handle_tlbs[i]); 1558 printk("%08x\n", handle_tlbs[i]);
1552 } 1559 }
1553#endif 1560#endif
1554
1555 flush_icache_range((unsigned long)handle_tlbs,
1556 (unsigned long)handle_tlbs + FASTPATH_SIZE * sizeof(u32));
1557} 1561}
1558 1562
1559static void __init build_r3000_tlb_modify_handler(void) 1563static void __init build_r3000_tlb_modify_handler(void)
@@ -1568,10 +1572,9 @@ static void __init build_r3000_tlb_modify_handler(void)
1568 1572
1569 build_r3000_tlbchange_handler_head(&p, K0, K1); 1573 build_r3000_tlbchange_handler_head(&p, K0, K1);
1570 build_pte_modifiable(&p, &l, &r, K0, K1, label_nopage_tlbm); 1574 build_pte_modifiable(&p, &l, &r, K0, K1, label_nopage_tlbm);
1575 i_nop(&p); /* load delay */
1571 build_make_write(&p, &r, K0, K1); 1576 build_make_write(&p, &r, K0, K1);
1572 build_r3000_pte_reload(&p, K1); 1577 build_r3000_pte_reload_tlbwi(&p, K0, K1);
1573 i_tlbwi(&p);
1574 build_r3000_tlbchange_handler_tail(&p, K0);
1575 1578
1576 l_nopage_tlbm(&l, p); 1579 l_nopage_tlbm(&l, p);
1577 i_j(&p, (unsigned long)tlb_do_page_fault_1 & 0x0fffffff); 1580 i_j(&p, (unsigned long)tlb_do_page_fault_1 & 0x0fffffff);
@@ -1588,13 +1591,10 @@ static void __init build_r3000_tlb_modify_handler(void)
1588 { 1591 {
1589 int i; 1592 int i;
1590 1593
1591 for (i = 0; i < FASTPATH_SIZE; i++) 1594 for (i = 0; i < (p - handle_tlbm); i++)
1592 printk("%08x\n", handle_tlbm[i]); 1595 printk("%08x\n", handle_tlbm[i]);
1593 } 1596 }
1594#endif 1597#endif
1595
1596 flush_icache_range((unsigned long)handle_tlbm,
1597 (unsigned long)handle_tlbm + FASTPATH_SIZE * sizeof(u32));
1598} 1598}
1599 1599
1600/* 1600/*
@@ -1620,7 +1620,7 @@ build_r4000_tlbchange_handler_head(u32 **p, struct label **l,
1620#ifdef CONFIG_SMP 1620#ifdef CONFIG_SMP
1621 l_smp_pgtable_change(l, *p); 1621 l_smp_pgtable_change(l, *p);
1622# endif 1622# endif
1623 iPTE_LW(p, l, pte, 0, ptr); /* get even pte */ 1623 iPTE_LW(p, l, pte, ptr); /* get even pte */
1624 build_tlb_probe_entry(p); 1624 build_tlb_probe_entry(p);
1625} 1625}
1626 1626
@@ -1680,13 +1680,10 @@ static void __init build_r4000_tlb_load_handler(void)
1680 { 1680 {
1681 int i; 1681 int i;
1682 1682
1683 for (i = 0; i < FASTPATH_SIZE; i++) 1683 for (i = 0; i < (p - handle_tlbl); i++)
1684 printk("%08x\n", handle_tlbl[i]); 1684 printk("%08x\n", handle_tlbl[i]);
1685 } 1685 }
1686#endif 1686#endif
1687
1688 flush_icache_range((unsigned long)handle_tlbl,
1689 (unsigned long)handle_tlbl + FASTPATH_SIZE * sizeof(u32));
1690} 1687}
1691 1688
1692static void __init build_r4000_tlb_store_handler(void) 1689static void __init build_r4000_tlb_store_handler(void)
@@ -1719,13 +1716,10 @@ static void __init build_r4000_tlb_store_handler(void)
1719 { 1716 {
1720 int i; 1717 int i;
1721 1718
1722 for (i = 0; i < FASTPATH_SIZE; i++) 1719 for (i = 0; i < (p - handle_tlbs); i++)
1723 printk("%08x\n", handle_tlbs[i]); 1720 printk("%08x\n", handle_tlbs[i]);
1724 } 1721 }
1725#endif 1722#endif
1726
1727 flush_icache_range((unsigned long)handle_tlbs,
1728 (unsigned long)handle_tlbs + FASTPATH_SIZE * sizeof(u32));
1729} 1723}
1730 1724
1731static void __init build_r4000_tlb_modify_handler(void) 1725static void __init build_r4000_tlb_modify_handler(void)
@@ -1759,13 +1753,10 @@ static void __init build_r4000_tlb_modify_handler(void)
1759 { 1753 {
1760 int i; 1754 int i;
1761 1755
1762 for (i = 0; i < FASTPATH_SIZE; i++) 1756 for (i = 0; i < (p - handle_tlbm); i++)
1763 printk("%08x\n", handle_tlbm[i]); 1757 printk("%08x\n", handle_tlbm[i]);
1764 } 1758 }
1765#endif 1759#endif
1766
1767 flush_icache_range((unsigned long)handle_tlbm,
1768 (unsigned long)handle_tlbm + FASTPATH_SIZE * sizeof(u32));
1769} 1760}
1770 1761
1771void __init build_tlb_refill_handler(void) 1762void __init build_tlb_refill_handler(void)
@@ -1813,3 +1804,13 @@ void __init build_tlb_refill_handler(void)
1813 } 1804 }
1814 } 1805 }
1815} 1806}
1807
1808void __init flush_tlb_handlers(void)
1809{
1810 flush_icache_range((unsigned long)handle_tlbl,
1811 (unsigned long)handle_tlbl + sizeof(handle_tlbl));
1812 flush_icache_range((unsigned long)handle_tlbs,
1813 (unsigned long)handle_tlbs + sizeof(handle_tlbs));
1814 flush_icache_range((unsigned long)handle_tlbm,
1815 (unsigned long)handle_tlbm + sizeof(handle_tlbm));
1816}
diff --git a/arch/mips/momentum/Kconfig b/arch/mips/momentum/Kconfig
new file mode 100644
index 000000000000..70a61cf7174d
--- /dev/null
+++ b/arch/mips/momentum/Kconfig
@@ -0,0 +1,6 @@
1config JAGUAR_DMALOW
2 bool "Low DMA Mode"
3 depends on MOMENCO_JAGUAR_ATX
4 help
5 Select to Y if jump JP5 is set on your board, N otherwise. Normally
6 the jumper is set, so if you feel unsafe, just say Y.
diff --git a/arch/mips/momentum/jaguar_atx/prom.c b/arch/mips/momentum/jaguar_atx/prom.c
index 14ae2e713585..aae7a802767a 100644
--- a/arch/mips/momentum/jaguar_atx/prom.c
+++ b/arch/mips/momentum/jaguar_atx/prom.c
@@ -236,8 +236,9 @@ void __init prom_init(void)
236#endif 236#endif
237} 237}
238 238
239void __init prom_free_prom_memory(void) 239unsigned long __init prom_free_prom_memory(void)
240{ 240{
241 return 0;
241} 242}
242 243
243void __init prom_fixup_mem_map(unsigned long start, unsigned long end) 244void __init prom_fixup_mem_map(unsigned long start, unsigned long end)
diff --git a/arch/mips/momentum/jaguar_atx/setup.c b/arch/mips/momentum/jaguar_atx/setup.c
index 90288cf2b1e0..768bf4406452 100644
--- a/arch/mips/momentum/jaguar_atx/setup.c
+++ b/arch/mips/momentum/jaguar_atx/setup.c
@@ -351,7 +351,7 @@ static __init int __init ja_pci_init(void)
351 351
352arch_initcall(ja_pci_init); 352arch_initcall(ja_pci_init);
353 353
354static int __init momenco_jaguar_atx_setup(void) 354void __init plat_setup(void)
355{ 355{
356 unsigned int tmpword; 356 unsigned int tmpword;
357 357
@@ -467,8 +467,4 @@ static int __init momenco_jaguar_atx_setup(void)
467 467
468 } 468 }
469#endif 469#endif
470
471 return 0;
472} 470}
473
474early_initcall(momenco_jaguar_atx_setup);
diff --git a/arch/mips/momentum/ocelot_3/prom.c b/arch/mips/momentum/ocelot_3/prom.c
index c4fa9c525faa..9803daa2a792 100644
--- a/arch/mips/momentum/ocelot_3/prom.c
+++ b/arch/mips/momentum/ocelot_3/prom.c
@@ -239,8 +239,9 @@ void __init prom_init(void)
239#endif 239#endif
240} 240}
241 241
242void __init prom_free_prom_memory(void) 242unsigned long __init prom_free_prom_memory(void)
243{ 243{
244 return 0;
244} 245}
245 246
246void __init prom_fixup_mem_map(unsigned long start, unsigned long end) 247void __init prom_fixup_mem_map(unsigned long start, unsigned long end)
diff --git a/arch/mips/momentum/ocelot_3/setup.c b/arch/mips/momentum/ocelot_3/setup.c
index ce2efcbab7aa..a7803e08f9db 100644
--- a/arch/mips/momentum/ocelot_3/setup.c
+++ b/arch/mips/momentum/ocelot_3/setup.c
@@ -307,7 +307,7 @@ static __init int __init ja_pci_init(void)
307 307
308arch_initcall(ja_pci_init); 308arch_initcall(ja_pci_init);
309 309
310static int __init momenco_ocelot_3_setup(void) 310void __init plat_setup(void)
311{ 311{
312 unsigned int tmpword; 312 unsigned int tmpword;
313 313
@@ -391,8 +391,4 @@ static int __init momenco_ocelot_3_setup(void)
391 391
392 /* Support for 128 MB memory */ 392 /* Support for 128 MB memory */
393 add_memory_region(0x0, 0x08000000, BOOT_MEM_RAM); 393 add_memory_region(0x0, 0x08000000, BOOT_MEM_RAM);
394
395 return 0;
396} 394}
397
398early_initcall(momenco_ocelot_3_setup);
diff --git a/arch/mips/momentum/ocelot_c/cpci-irq.c b/arch/mips/momentum/ocelot_c/cpci-irq.c
index dea48b3ad687..bd885785e2f9 100644
--- a/arch/mips/momentum/ocelot_c/cpci-irq.c
+++ b/arch/mips/momentum/ocelot_c/cpci-irq.c
@@ -129,14 +129,13 @@ void ll_cpci_irq(struct pt_regs *regs)
129#define shutdown_cpci_irq disable_cpci_irq 129#define shutdown_cpci_irq disable_cpci_irq
130 130
131struct hw_interrupt_type cpci_irq_type = { 131struct hw_interrupt_type cpci_irq_type = {
132 "CPCI/FPGA", 132 .typename = "CPCI/FPGA",
133 startup_cpci_irq, 133 .startup = startup_cpci_irq,
134 shutdown_cpci_irq, 134 .shutdown = shutdown_cpci_irq,
135 enable_cpci_irq, 135 .enable = enable_cpci_irq,
136 disable_cpci_irq, 136 .disable = disable_cpci_irq,
137 mask_and_ack_cpci_irq, 137 .ack = mask_and_ack_cpci_irq,
138 end_cpci_irq, 138 .end = end_cpci_irq,
139 NULL
140}; 139};
141 140
142void cpci_irq_init(void) 141void cpci_irq_init(void)
diff --git a/arch/mips/momentum/ocelot_c/setup.c b/arch/mips/momentum/ocelot_c/setup.c
index 844ddd06349b..ce70fc96f160 100644
--- a/arch/mips/momentum/ocelot_c/setup.c
+++ b/arch/mips/momentum/ocelot_c/setup.c
@@ -222,7 +222,7 @@ void momenco_time_init(void)
222 rtc_set_time = m48t37y_set_time; 222 rtc_set_time = m48t37y_set_time;
223} 223}
224 224
225static void __init momenco_ocelot_c_setup(void) 225void __init plat_setup(void)
226{ 226{
227 unsigned int tmpword; 227 unsigned int tmpword;
228 228
@@ -340,8 +340,6 @@ static void __init momenco_ocelot_c_setup(void)
340 } 340 }
341} 341}
342 342
343early_initcall(momenco_ocelot_c_setup);
344
345#ifndef CONFIG_64BIT 343#ifndef CONFIG_64BIT
346/* This needs to be one of the first initcalls, because no I/O port access 344/* This needs to be one of the first initcalls, because no I/O port access
347 can work before this */ 345 can work before this */
diff --git a/arch/mips/momentum/ocelot_c/uart-irq.c b/arch/mips/momentum/ocelot_c/uart-irq.c
index ebe1507b17df..755bde5146be 100644
--- a/arch/mips/momentum/ocelot_c/uart-irq.c
+++ b/arch/mips/momentum/ocelot_c/uart-irq.c
@@ -122,14 +122,13 @@ void ll_uart_irq(struct pt_regs *regs)
122#define shutdown_uart_irq disable_uart_irq 122#define shutdown_uart_irq disable_uart_irq
123 123
124struct hw_interrupt_type uart_irq_type = { 124struct hw_interrupt_type uart_irq_type = {
125 "UART/FPGA", 125 .typename = "UART/FPGA",
126 startup_uart_irq, 126 .startup = startup_uart_irq,
127 shutdown_uart_irq, 127 .shutdown = shutdown_uart_irq,
128 enable_uart_irq, 128 .enable = enable_uart_irq,
129 disable_uart_irq, 129 .disable = disable_uart_irq,
130 mask_and_ack_uart_irq, 130 .ack = mask_and_ack_uart_irq,
131 end_uart_irq, 131 .end = end_uart_irq,
132 NULL
133}; 132};
134 133
135void uart_irq_init(void) 134void uart_irq_init(void)
diff --git a/arch/mips/momentum/ocelot_g/setup.c b/arch/mips/momentum/ocelot_g/setup.c
index 38a78ab8c830..6336751391c3 100644
--- a/arch/mips/momentum/ocelot_g/setup.c
+++ b/arch/mips/momentum/ocelot_g/setup.c
@@ -160,7 +160,7 @@ static void __init setup_l3cache(unsigned long size)
160 printk("Done\n"); 160 printk("Done\n");
161} 161}
162 162
163static int __init momenco_ocelot_g_setup(void) 163void __init plat_setup(void)
164{ 164{
165 void (*l3func)(unsigned long) = (void *) KSEG1ADDR(setup_l3cache); 165 void (*l3func)(unsigned long) = (void *) KSEG1ADDR(setup_l3cache);
166 unsigned int tmpword; 166 unsigned int tmpword;
@@ -240,12 +240,8 @@ static int __init momenco_ocelot_g_setup(void)
240 240
241 /* FIXME: Fix up the DiskOnChip mapping */ 241 /* FIXME: Fix up the DiskOnChip mapping */
242 MV_WRITE(0x468, 0xfef73); 242 MV_WRITE(0x468, 0xfef73);
243
244 return 0;
245} 243}
246 244
247early_initcall(momenco_ocelot_g_setup);
248
249/* This needs to be one of the first initcalls, because no I/O port access 245/* This needs to be one of the first initcalls, because no I/O port access
250 can work before this */ 246 can work before this */
251 247
diff --git a/arch/mips/oprofile/Kconfig b/arch/mips/oprofile/Kconfig
index 19d37730b664..55feaf798596 100644
--- a/arch/mips/oprofile/Kconfig
+++ b/arch/mips/oprofile/Kconfig
@@ -11,7 +11,7 @@ config PROFILING
11 11
12config OPROFILE 12config OPROFILE
13 tristate "OProfile system profiling (EXPERIMENTAL)" 13 tristate "OProfile system profiling (EXPERIMENTAL)"
14 depends on PROFILING 14 depends on PROFILING && EXPERIMENTAL
15 help 15 help
16 OProfile is a profiling system capable of profiling the 16 OProfile is a profiling system capable of profiling the
17 whole system, include the kernel, kernel modules, libraries, 17 whole system, include the kernel, kernel modules, libraries,
diff --git a/arch/mips/oprofile/common.c b/arch/mips/oprofile/common.c
index ab65ce3d471a..dd2cc42f1b6d 100644
--- a/arch/mips/oprofile/common.c
+++ b/arch/mips/oprofile/common.c
@@ -3,7 +3,8 @@
3 * License. See the file "COPYING" in the main directory of this archive 3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details. 4 * for more details.
5 * 5 *
6 * Copyright (C) 2004 by Ralf Baechle 6 * Copyright (C) 2004, 2005 Ralf Baechle
7 * Copyright (C) 2005 MIPS Technologies, Inc.
7 */ 8 */
8#include <linux/errno.h> 9#include <linux/errno.h>
9#include <linux/init.h> 10#include <linux/init.h>
@@ -45,10 +46,10 @@ static int op_mips_create_files(struct super_block * sb, struct dentry * root)
45 oprofilefs_create_ulong(sb, dir, "enabled", &ctr[i].enabled); 46 oprofilefs_create_ulong(sb, dir, "enabled", &ctr[i].enabled);
46 oprofilefs_create_ulong(sb, dir, "event", &ctr[i].event); 47 oprofilefs_create_ulong(sb, dir, "event", &ctr[i].event);
47 oprofilefs_create_ulong(sb, dir, "count", &ctr[i].count); 48 oprofilefs_create_ulong(sb, dir, "count", &ctr[i].count);
48 /* Dummies. */
49 oprofilefs_create_ulong(sb, dir, "kernel", &ctr[i].kernel); 49 oprofilefs_create_ulong(sb, dir, "kernel", &ctr[i].kernel);
50 oprofilefs_create_ulong(sb, dir, "user", &ctr[i].user); 50 oprofilefs_create_ulong(sb, dir, "user", &ctr[i].user);
51 oprofilefs_create_ulong(sb, dir, "exl", &ctr[i].exl); 51 oprofilefs_create_ulong(sb, dir, "exl", &ctr[i].exl);
52 /* Dummy. */
52 oprofilefs_create_ulong(sb, dir, "unit_mask", &ctr[i].unit_mask); 53 oprofilefs_create_ulong(sb, dir, "unit_mask", &ctr[i].unit_mask);
53 } 54 }
54 55
@@ -68,9 +69,10 @@ static void op_mips_stop(void)
68 on_each_cpu(model->cpu_stop, NULL, 0, 1); 69 on_each_cpu(model->cpu_stop, NULL, 0, 1);
69} 70}
70 71
71void __init oprofile_arch_init(struct oprofile_operations *ops) 72int __init oprofile_arch_init(struct oprofile_operations *ops)
72{ 73{
73 struct op_mips_model *lmodel = NULL; 74 struct op_mips_model *lmodel = NULL;
75 int res;
74 76
75 switch (current_cpu_data.cputype) { 77 switch (current_cpu_data.cputype) {
76 case CPU_24K: 78 case CPU_24K:
@@ -83,21 +85,25 @@ void __init oprofile_arch_init(struct oprofile_operations *ops)
83 }; 85 };
84 86
85 if (!lmodel) 87 if (!lmodel)
86 return; 88 return -ENODEV;
87 89
88 if (lmodel->init()) 90 res = lmodel->init();
89 return; 91 if (res)
92 return res;
90 93
91 model = lmodel; 94 model = lmodel;
92 95
93 ops->create_files = op_mips_create_files; 96 ops->create_files = op_mips_create_files;
94 ops->setup = op_mips_setup; 97 ops->setup = op_mips_setup;
95 ops->start = op_mips_start; 98 //ops->shutdown = op_mips_shutdown;
96 ops->stop = op_mips_stop; 99 ops->start = op_mips_start;
97 ops->cpu_type = lmodel->cpu_type; 100 ops->stop = op_mips_stop;
101 ops->cpu_type = lmodel->cpu_type;
98 102
99 printk(KERN_INFO "oprofile: using %s performance monitoring.\n", 103 printk(KERN_INFO "oprofile: using %s performance monitoring.\n",
100 lmodel->cpu_type); 104 lmodel->cpu_type);
105
106 return 0;
101} 107}
102 108
103void oprofile_arch_exit(void) 109void oprofile_arch_exit(void)
diff --git a/arch/mips/oprofile/op_impl.h b/arch/mips/oprofile/op_impl.h
index 9f5cdff041be..f0121557047d 100644
--- a/arch/mips/oprofile/op_impl.h
+++ b/arch/mips/oprofile/op_impl.h
@@ -10,6 +10,11 @@
10#ifndef OP_IMPL_H 10#ifndef OP_IMPL_H
11#define OP_IMPL_H 1 11#define OP_IMPL_H 1
12 12
13struct pt_regs;
14
15extern void null_perf_irq(struct pt_regs *regs);
16extern void (*perf_irq)(struct pt_regs *regs);
17
13/* Per-counter configuration as set via oprofilefs. */ 18/* Per-counter configuration as set via oprofilefs. */
14struct op_counter_config { 19struct op_counter_config {
15 unsigned long enabled; 20 unsigned long enabled;
diff --git a/arch/mips/oprofile/op_model_mipsxx.c b/arch/mips/oprofile/op_model_mipsxx.c
new file mode 100644
index 000000000000..d36b64dfcb2f
--- /dev/null
+++ b/arch/mips/oprofile/op_model_mipsxx.c
@@ -0,0 +1,215 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 2004, 2005 by Ralf Baechle
7 * Copyright (C) 2005 by MIPS Technologies, Inc.
8 */
9#include <linux/oprofile.h>
10#include <linux/interrupt.h>
11#include <linux/smp.h>
12
13#include "op_impl.h"
14
15#define M_PERFCTL_EXL (1UL << 0)
16#define M_PERFCTL_KERNEL (1UL << 1)
17#define M_PERFCTL_SUPERVISOR (1UL << 2)
18#define M_PERFCTL_USER (1UL << 3)
19#define M_PERFCTL_INTERRUPT_ENABLE (1UL << 4)
20#define M_PERFCTL_EVENT(event) ((event) << 5)
21#define M_PERFCTL_WIDE (1UL << 30)
22#define M_PERFCTL_MORE (1UL << 31)
23
24#define M_COUNTER_OVERFLOW (1UL << 31)
25
26struct op_mips_model op_model_mipsxx;
27
28static struct mipsxx_register_config {
29 unsigned int control[4];
30 unsigned int counter[4];
31} reg;
32
33/* Compute all of the registers in preparation for enabling profiling. */
34
35static void mipsxx_reg_setup(struct op_counter_config *ctr)
36{
37 unsigned int counters = op_model_mipsxx.num_counters;
38 int i;
39
40 /* Compute the performance counter control word. */
41 /* For now count kernel and user mode */
42 for (i = 0; i < counters; i++) {
43 reg.control[i] = 0;
44 reg.counter[i] = 0;
45
46 if (!ctr[i].enabled)
47 continue;
48
49 reg.control[i] = M_PERFCTL_EVENT(ctr[i].event) |
50 M_PERFCTL_INTERRUPT_ENABLE;
51 if (ctr[i].kernel)
52 reg.control[i] |= M_PERFCTL_KERNEL;
53 if (ctr[i].user)
54 reg.control[i] |= M_PERFCTL_USER;
55 if (ctr[i].exl)
56 reg.control[i] |= M_PERFCTL_EXL;
57 reg.counter[i] = 0x80000000 - ctr[i].count;
58 }
59}
60
61/* Program all of the registers in preparation for enabling profiling. */
62
63static void mipsxx_cpu_setup (void *args)
64{
65 unsigned int counters = op_model_mipsxx.num_counters;
66
67 switch (counters) {
68 case 4:
69 write_c0_perfctrl3(0);
70 write_c0_perfcntr3(reg.counter[3]);
71 case 3:
72 write_c0_perfctrl2(0);
73 write_c0_perfcntr2(reg.counter[2]);
74 case 2:
75 write_c0_perfctrl1(0);
76 write_c0_perfcntr1(reg.counter[1]);
77 case 1:
78 write_c0_perfctrl0(0);
79 write_c0_perfcntr0(reg.counter[0]);
80 }
81}
82
83/* Start all counters on current CPU */
84static void mipsxx_cpu_start(void *args)
85{
86 unsigned int counters = op_model_mipsxx.num_counters;
87
88 switch (counters) {
89 case 4:
90 write_c0_perfctrl3(reg.control[3]);
91 case 3:
92 write_c0_perfctrl2(reg.control[2]);
93 case 2:
94 write_c0_perfctrl1(reg.control[1]);
95 case 1:
96 write_c0_perfctrl0(reg.control[0]);
97 }
98}
99
100/* Stop all counters on current CPU */
101static void mipsxx_cpu_stop(void *args)
102{
103 unsigned int counters = op_model_mipsxx.num_counters;
104
105 switch (counters) {
106 case 4:
107 write_c0_perfctrl3(0);
108 case 3:
109 write_c0_perfctrl2(0);
110 case 2:
111 write_c0_perfctrl1(0);
112 case 1:
113 write_c0_perfctrl0(0);
114 }
115}
116
117static void mipsxx_perfcount_handler(struct pt_regs *regs)
118{
119 unsigned int counters = op_model_mipsxx.num_counters;
120 unsigned int control;
121 unsigned int counter;
122
123 switch (counters) {
124#define HANDLE_COUNTER(n) \
125 case n + 1: \
126 control = read_c0_perfctrl ## n(); \
127 counter = read_c0_perfcntr ## n(); \
128 if ((control & M_PERFCTL_INTERRUPT_ENABLE) && \
129 (counter & M_COUNTER_OVERFLOW)) { \
130 oprofile_add_sample(regs, n); \
131 write_c0_perfcntr ## n(reg.counter[n]); \
132 }
133 HANDLE_COUNTER(3)
134 HANDLE_COUNTER(2)
135 HANDLE_COUNTER(1)
136 HANDLE_COUNTER(0)
137 }
138}
139
140#define M_CONFIG1_PC (1 << 4)
141
142static inline int n_counters(void)
143{
144 if (!(read_c0_config1() & M_CONFIG1_PC))
145 return 0;
146 if (!(read_c0_perfctrl0() & M_PERFCTL_MORE))
147 return 1;
148 if (!(read_c0_perfctrl1() & M_PERFCTL_MORE))
149 return 2;
150 if (!(read_c0_perfctrl2() & M_PERFCTL_MORE))
151 return 3;
152
153 return 4;
154}
155
156static inline void reset_counters(int counters)
157{
158 switch (counters) {
159 case 4:
160 write_c0_perfctrl3(0);
161 write_c0_perfcntr3(0);
162 case 3:
163 write_c0_perfctrl2(0);
164 write_c0_perfcntr2(0);
165 case 2:
166 write_c0_perfctrl1(0);
167 write_c0_perfcntr1(0);
168 case 1:
169 write_c0_perfctrl0(0);
170 write_c0_perfcntr0(0);
171 }
172}
173
174static int __init mipsxx_init(void)
175{
176 int counters;
177
178 counters = n_counters();
179 if (counters == 0)
180 return -ENODEV;
181
182 reset_counters(counters);
183
184 op_model_mipsxx.num_counters = counters;
185 switch (current_cpu_data.cputype) {
186 case CPU_24K:
187 op_model_mipsxx.cpu_type = "mips/24K";
188 break;
189
190 default:
191 printk(KERN_ERR "Profiling unsupported for this CPU\n");
192
193 return -ENODEV;
194 }
195
196 perf_irq = mipsxx_perfcount_handler;
197
198 return 0;
199}
200
201static void mipsxx_exit(void)
202{
203 reset_counters(op_model_mipsxx.num_counters);
204
205 perf_irq = null_perf_irq;
206}
207
208struct op_mips_model op_model_mipsxx = {
209 .reg_setup = mipsxx_reg_setup,
210 .cpu_setup = mipsxx_cpu_setup,
211 .init = mipsxx_init,
212 .exit = mipsxx_exit,
213 .cpu_start = mipsxx_cpu_start,
214 .cpu_stop = mipsxx_cpu_stop,
215};
diff --git a/arch/mips/oprofile/op_model_rm9000.c b/arch/mips/oprofile/op_model_rm9000.c
index bee47793cb1a..9b75e41c78ef 100644
--- a/arch/mips/oprofile/op_model_rm9000.c
+++ b/arch/mips/oprofile/op_model_rm9000.c
@@ -5,6 +5,7 @@
5 * 5 *
6 * Copyright (C) 2004 by Ralf Baechle 6 * Copyright (C) 2004 by Ralf Baechle
7 */ 7 */
8#include <linux/init.h>
8#include <linux/oprofile.h> 9#include <linux/oprofile.h>
9#include <linux/interrupt.h> 10#include <linux/interrupt.h>
10#include <linux/smp.h> 11#include <linux/smp.h>
@@ -114,7 +115,7 @@ static irqreturn_t rm9000_perfcount_handler(int irq, void * dev_id,
114 return IRQ_HANDLED; 115 return IRQ_HANDLED;
115} 116}
116 117
117static int rm9000_init(void) 118static int __init rm9000_init(void)
118{ 119{
119 return request_irq(rm9000_perfcount_irq, rm9000_perfcount_handler, 120 return request_irq(rm9000_perfcount_irq, rm9000_perfcount_handler,
120 0, "Perfcounter", NULL); 121 0, "Perfcounter", NULL);
diff --git a/arch/mips/pci/Makefile b/arch/mips/pci/Makefile
index 83d81c9cdc2b..7b7468304022 100644
--- a/arch/mips/pci/Makefile
+++ b/arch/mips/pci/Makefile
@@ -34,6 +34,7 @@ obj-$(CONFIG_MIPS_ITE8172) += fixup-ite8172g.o
34obj-$(CONFIG_MIPS_IVR) += fixup-ivr.o 34obj-$(CONFIG_MIPS_IVR) += fixup-ivr.o
35obj-$(CONFIG_SOC_AU1500) += fixup-au1000.o ops-au1000.o 35obj-$(CONFIG_SOC_AU1500) += fixup-au1000.o ops-au1000.o
36obj-$(CONFIG_SOC_AU1550) += fixup-au1000.o ops-au1000.o 36obj-$(CONFIG_SOC_AU1550) += fixup-au1000.o ops-au1000.o
37obj-$(CONFIG_SOC_PNX8550) += fixup-pnx8550.o ops-pnx8550.o
37obj-$(CONFIG_MIPS_MALTA) += fixup-malta.o 38obj-$(CONFIG_MIPS_MALTA) += fixup-malta.o
38obj-$(CONFIG_MOMENCO_JAGUAR_ATX)+= fixup-jaguar.o 39obj-$(CONFIG_MOMENCO_JAGUAR_ATX)+= fixup-jaguar.o
39obj-$(CONFIG_MOMENCO_OCELOT) += fixup-ocelot.o pci-ocelot.o 40obj-$(CONFIG_MOMENCO_OCELOT) += fixup-ocelot.o pci-ocelot.o
@@ -45,11 +46,13 @@ obj-$(CONFIG_PMC_YOSEMITE) += fixup-yosemite.o ops-titan.o ops-titan-ht.o \
45obj-$(CONFIG_SGI_IP27) += pci-ip27.o 46obj-$(CONFIG_SGI_IP27) += pci-ip27.o
46obj-$(CONFIG_SGI_IP32) += fixup-ip32.o ops-mace.o pci-ip32.o 47obj-$(CONFIG_SGI_IP32) += fixup-ip32.o ops-mace.o pci-ip32.o
47obj-$(CONFIG_SIBYTE_SB1250) += fixup-sb1250.o pci-sb1250.o 48obj-$(CONFIG_SIBYTE_SB1250) += fixup-sb1250.o pci-sb1250.o
49obj-$(CONFIG_SIBYTE_BCM1x80) += pci-bcm1480.o pci-bcm1480ht.o
48obj-$(CONFIG_SNI_RM200_PCI) += fixup-sni.o ops-sni.o 50obj-$(CONFIG_SNI_RM200_PCI) += fixup-sni.o ops-sni.o
49obj-$(CONFIG_TANBAC_TB0219) += fixup-tb0219.o 51obj-$(CONFIG_TANBAC_TB0219) += fixup-tb0219.o
50obj-$(CONFIG_TANBAC_TB0226) += fixup-tb0226.o 52obj-$(CONFIG_TANBAC_TB0226) += fixup-tb0226.o
51obj-$(CONFIG_TANBAC_TB0287) += fixup-tb0287.o 53obj-$(CONFIG_TANBAC_TB0287) += fixup-tb0287.o
52obj-$(CONFIG_TOSHIBA_JMR3927) += fixup-jmr3927.o pci-jmr3927.o 54obj-$(CONFIG_TOSHIBA_JMR3927) += fixup-jmr3927.o pci-jmr3927.o
53obj-$(CONFIG_TOSHIBA_RBTX4927) += fixup-rbtx4927.o ops-tx4927.o 55obj-$(CONFIG_TOSHIBA_RBTX4927) += fixup-rbtx4927.o ops-tx4927.o
56obj-$(CONFIG_TOSHIBA_RBTX4938) += fixup-tx4938.o ops-tx4938.o
54obj-$(CONFIG_VICTOR_MPC30X) += fixup-mpc30x.o 57obj-$(CONFIG_VICTOR_MPC30X) += fixup-mpc30x.o
55obj-$(CONFIG_ZAO_CAPCELLA) += fixup-capcella.o 58obj-$(CONFIG_ZAO_CAPCELLA) += fixup-capcella.o
diff --git a/arch/mips/pci/fixup-atlas.c b/arch/mips/pci/fixup-atlas.c
index 2406835833d6..87920b245931 100644
--- a/arch/mips/pci/fixup-atlas.c
+++ b/arch/mips/pci/fixup-atlas.c
@@ -1,14 +1,37 @@
1/*
2 * Copyright (C) 2003, 2004 Ralf Baechle (ralf@linux-mips.org)
3 * Copyright (C) 2005 MIPS Technologies, Inc. All rights reserved.
4 * Author: Maciej W. Rozycki <macro@mips.com>
5 *
6 * This program is free software; you can distribute it and/or modify it
7 * under the terms of the GNU General Public License (Version 2) as
8 * published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
18 */
1#include <linux/config.h> 19#include <linux/config.h>
2#include <linux/init.h> 20#include <linux/init.h>
3#include <linux/pci.h> 21#include <linux/pci.h>
22
4#include <asm/mips-boards/atlasint.h> 23#include <asm/mips-boards/atlasint.h>
5 24
6#define INTD ATLASINT_INTD 25#define PCIA ATLASINT_PCIA
7#define INTC ATLASINT_INTC 26#define PCIB ATLASINT_PCIB
8#define INTB ATLASINT_INTB 27#define PCIC ATLASINT_PCIC
28#define PCID ATLASINT_PCID
9#define INTA ATLASINT_INTA 29#define INTA ATLASINT_INTA
10#define SCSI ATLASINT_SCSI 30#define INTB ATLASINT_INTB
11#define ETH ATLASINT_ETH 31#define ETH ATLASINT_ETH
32#define INTC ATLASINT_INTC
33#define SCSI ATLASINT_SCSI
34#define INTD ATLASINT_INTD
12 35
13static char irq_tab[][5] __initdata = { 36static char irq_tab[][5] __initdata = {
14 /* INTA INTB INTC INTD */ 37 /* INTA INTB INTC INTD */
@@ -27,13 +50,13 @@ static char irq_tab[][5] __initdata = {
27 {0, 0, 0, 0, 0 }, /* 12: Unused */ 50 {0, 0, 0, 0, 0 }, /* 12: Unused */
28 {0, 0, 0, 0, 0 }, /* 13: Unused */ 51 {0, 0, 0, 0, 0 }, /* 13: Unused */
29 {0, 0, 0, 0, 0 }, /* 14: Unused */ 52 {0, 0, 0, 0, 0 }, /* 14: Unused */
30 {0, 0, 0, 0, 0 }, /* 15: Unused */ 53 {0, PCIA, PCIB, PCIC, PCID }, /* 15: cPCI (behind 21150) */
31 {0, SCSI, 0, 0, 0 }, /* 16: SYM53C810A SCSI */ 54 {0, SCSI, 0, 0, 0 }, /* 16: SYM53C810A SCSI */
32 {0, 0, 0, 0, 0 }, /* 17: Core */ 55 {0, 0, 0, 0, 0 }, /* 17: Core */
33 {0, INTA, INTB, INTC, INTD }, /* 18: PCI Slot 1 */ 56 {0, INTA, INTB, INTC, INTD }, /* 18: PCI Slot */
34 {0, ETH, 0, 0, 0 }, /* 19: SAA9730 Ethernet */ 57 {0, ETH, 0, 0, 0 }, /* 19: SAA9730 Eth. et al. */
35 {0, 0, 0, 0, 0 }, /* 20: PCI Slot 3 */ 58 {0, 0, 0, 0, 0 }, /* 20: Unused */
36 {0, 0, 0, 0, 0 } /* 21: PCI Slot 4 */ 59 {0, 0, 0, 0, 0 } /* 21: Unused */
37}; 60};
38 61
39int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin) 62int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
diff --git a/arch/mips/pci/fixup-au1000.c b/arch/mips/pci/fixup-au1000.c
index 39fe2b16fcec..c2f8304fe55b 100644
--- a/arch/mips/pci/fixup-au1000.c
+++ b/arch/mips/pci/fixup-au1000.c
@@ -26,7 +26,6 @@
26 * with this program; if not, write to the Free Software Foundation, Inc., 26 * with this program; if not, write to the Free Software Foundation, Inc.,
27 * 675 Mass Ave, Cambridge, MA 02139, USA. 27 * 675 Mass Ave, Cambridge, MA 02139, USA.
28 */ 28 */
29#include <linux/config.h>
30#include <linux/types.h> 29#include <linux/types.h>
31#include <linux/pci.h> 30#include <linux/pci.h>
32#include <linux/kernel.h> 31#include <linux/kernel.h>
@@ -34,82 +33,7 @@
34 33
35#include <asm/mach-au1x00/au1000.h> 34#include <asm/mach-au1x00/au1000.h>
36 35
37/* 36extern char irq_tab_alchemy[][5];
38 * Shortcut
39 */
40#ifdef CONFIG_SOC_AU1500
41#define INTA AU1000_PCI_INTA
42#define INTB AU1000_PCI_INTB
43#define INTC AU1000_PCI_INTC
44#define INTD AU1000_PCI_INTD
45#endif
46
47#ifdef CONFIG_SOC_AU1550
48#define INTA AU1550_PCI_INTA
49#define INTB AU1550_PCI_INTB
50#define INTC AU1550_PCI_INTC
51#define INTD AU1550_PCI_INTD
52#endif
53
54#define INTX 0xFF /* not valid */
55
56#ifdef CONFIG_MIPS_DB1500
57static char irq_tab_alchemy[][5] __initdata = {
58 [12] = { -1, INTA, INTX, INTX, INTX}, /* IDSEL 12 - HPT371 */
59 [13] = { -1, INTA, INTB, INTC, INTD}, /* IDSEL 13 - PCI slot */
60};
61#endif
62
63#ifdef CONFIG_MIPS_BOSPORUS
64static char irq_tab_alchemy[][5] __initdata = {
65 [11] = { -1, INTA, INTB, INTX, INTX}, /* IDSEL 11 - miniPCI */
66 [12] = { -1, INTA, INTX, INTX, INTX}, /* IDSEL 12 - SN1741 */
67 [13] = { -1, INTA, INTB, INTC, INTD}, /* IDSEL 13 - PCI slot */
68};
69#endif
70
71#ifdef CONFIG_MIPS_MIRAGE
72static char irq_tab_alchemy[][5] __initdata = {
73 [11] = { -1, INTD, INTX, INTX, INTX}, /* IDSEL 11 - SMI VGX */
74 [12] = { -1, INTX, INTX, INTC, INTX}, /* IDSEL 12 - PNX1300 */
75 [13] = { -1, INTA, INTB, INTX, INTX}, /* IDSEL 13 - miniPCI */
76};
77#endif
78
79#ifdef CONFIG_MIPS_DB1550
80static char irq_tab_alchemy[][5] __initdata = {
81 [11] = { -1, INTC, INTX, INTX, INTX}, /* IDSEL 11 - on-board HPT371 */
82 [12] = { -1, INTB, INTC, INTD, INTA}, /* IDSEL 12 - PCI slot 2 (left) */
83 [13] = { -1, INTA, INTB, INTC, INTD}, /* IDSEL 13 - PCI slot 1 (right) */
84};
85#endif
86
87#ifdef CONFIG_MIPS_PB1500
88static char irq_tab_alchemy[][5] __initdata = {
89 [12] = { -1, INTA, INTX, INTX, INTX}, /* IDSEL 12 - HPT370 */
90 [13] = { -1, INTA, INTB, INTC, INTD}, /* IDSEL 13 - PCI slot */
91};
92#endif
93
94#ifdef CONFIG_MIPS_PB1550
95static char irq_tab_alchemy[][5] __initdata = {
96 [12] = { -1, INTB, INTC, INTD, INTA}, /* IDSEL 12 - PCI slot 2 (left) */
97 [13] = { -1, INTA, INTB, INTC, INTD}, /* IDSEL 13 - PCI slot 1 (right) */
98};
99#endif
100
101#ifdef CONFIG_MIPS_MTX1
102static char irq_tab_alchemy[][5] __initdata = {
103 [0] = { -1, INTA, INTB, INTX, INTX}, /* IDSEL 00 - AdapterA-Slot0 (top) */
104 [1] = { -1, INTB, INTA, INTX, INTX}, /* IDSEL 01 - AdapterA-Slot1 (bottom) */
105 [2] = { -1, INTC, INTD, INTX, INTX}, /* IDSEL 02 - AdapterB-Slot0 (top) */
106 [3] = { -1, INTD, INTC, INTX, INTX}, /* IDSEL 03 - AdapterB-Slot1 (bottom) */
107 [4] = { -1, INTA, INTB, INTX, INTX}, /* IDSEL 04 - AdapterC-Slot0 (top) */
108 [5] = { -1, INTB, INTA, INTX, INTX}, /* IDSEL 05 - AdapterC-Slot1 (bottom) */
109 [6] = { -1, INTC, INTD, INTX, INTX}, /* IDSEL 06 - AdapterD-Slot0 (top) */
110 [7] = { -1, INTD, INTC, INTX, INTX}, /* IDSEL 07 - AdapterD-Slot1 (bottom) */
111};
112#endif
113 37
114int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin) 38int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
115{ 39{
diff --git a/arch/mips/pci/fixup-cobalt.c b/arch/mips/pci/fixup-cobalt.c
index 57e1ca2116bb..909292f50d06 100644
--- a/arch/mips/pci/fixup-cobalt.c
+++ b/arch/mips/pci/fixup-cobalt.c
@@ -21,6 +21,20 @@
21 21
22extern int cobalt_board_id; 22extern int cobalt_board_id;
23 23
24static void qube_raq_galileo_early_fixup(struct pci_dev *dev)
25{
26 if (dev->devfn == PCI_DEVFN(0, 0) &&
27 (dev->class >> 8) == PCI_CLASS_MEMORY_OTHER) {
28
29 dev->class = (PCI_CLASS_BRIDGE_HOST << 8) | (dev->class & 0xff);
30
31 printk(KERN_INFO "Galileo: fixed bridge class\n");
32 }
33}
34
35DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_MARVELL, PCI_DEVICE_ID_MARVELL_GT64111,
36 qube_raq_galileo_early_fixup);
37
24static void qube_raq_via_bmIDE_fixup(struct pci_dev *dev) 38static void qube_raq_via_bmIDE_fixup(struct pci_dev *dev)
25{ 39{
26 unsigned short cfgword; 40 unsigned short cfgword;
@@ -48,6 +62,9 @@ static void qube_raq_galileo_fixup(struct pci_dev *dev)
48{ 62{
49 unsigned short galileo_id; 63 unsigned short galileo_id;
50 64
65 if (dev->devfn != PCI_DEVFN(0, 0))
66 return;
67
51 /* Fix PCI latency-timer and cache-line-size values in Galileo 68 /* Fix PCI latency-timer and cache-line-size values in Galileo
52 * host bridge. 69 * host bridge.
53 */ 70 */
@@ -55,6 +72,13 @@ static void qube_raq_galileo_fixup(struct pci_dev *dev)
55 pci_write_config_byte(dev, PCI_CACHE_LINE_SIZE, 7); 72 pci_write_config_byte(dev, PCI_CACHE_LINE_SIZE, 7);
56 73
57 /* 74 /*
75 * The code described by the comment below has been removed
76 * as it causes bus mastering by the Ethernet controllers
77 * to break under any kind of network load. We always set
78 * the retry timeouts to their maximum.
79 *
80 * --x--x--x--x--x--x--x--x--x--x--x--x--x--x--x--x--x--x--x--x--
81 *
58 * On all machines prior to Q2, we had the STOP line disconnected 82 * On all machines prior to Q2, we had the STOP line disconnected
59 * from Galileo to VIA on PCI. The new Galileo does not function 83 * from Galileo to VIA on PCI. The new Galileo does not function
60 * correctly unless we have it connected. 84 * correctly unless we have it connected.
@@ -64,21 +88,43 @@ static void qube_raq_galileo_fixup(struct pci_dev *dev)
64 */ 88 */
65 pci_read_config_word(dev, PCI_REVISION_ID, &galileo_id); 89 pci_read_config_word(dev, PCI_REVISION_ID, &galileo_id);
66 galileo_id &= 0xff; /* mask off class info */ 90 galileo_id &= 0xff; /* mask off class info */
91
92 printk(KERN_INFO "Galileo: revision %u\n", galileo_id);
93
94#if 0
67 if (galileo_id >= 0x10) { 95 if (galileo_id >= 0x10) {
68 /* New Galileo, assumes PCI stop line to VIA is connected. */ 96 /* New Galileo, assumes PCI stop line to VIA is connected. */
69 GALILEO_OUTL(0x4020, GT_PCI0_TOR_OFS); 97 GALILEO_OUTL(0x4020, GT_PCI0_TOR_OFS);
70 } else if (galileo_id == 0x1 || galileo_id == 0x2) { 98 } else if (galileo_id == 0x1 || galileo_id == 0x2)
99#endif
100 {
71 signed int timeo; 101 signed int timeo;
72 /* XXX WE MUST DO THIS ELSE GALILEO LOCKS UP! -DaveM */ 102 /* XXX WE MUST DO THIS ELSE GALILEO LOCKS UP! -DaveM */
73 timeo = GALILEO_INL(GT_PCI0_TOR_OFS); 103 timeo = GALILEO_INL(GT_PCI0_TOR_OFS);
74 /* Old Galileo, assumes PCI STOP line to VIA is disconnected. */ 104 /* Old Galileo, assumes PCI STOP line to VIA is disconnected. */
75 GALILEO_OUTL(0xffff, GT_PCI0_TOR_OFS); 105 GALILEO_OUTL(
106 (0xff << 16) | /* retry count */
107 (0xff << 8) | /* timeout 1 */
108 0xff, /* timeout 0 */
109 GT_PCI0_TOR_OFS);
110
111 /* enable PCI retry exceeded interrupt */
112 GALILEO_OUTL(GALILEO_INTR_RETRY_CTR | GALILEO_INL(GT_INTRMASK_OFS), GT_INTRMASK_OFS);
76 } 113 }
77} 114}
78 115
79DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_GALILEO, PCI_ANY_ID, 116DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL, PCI_DEVICE_ID_MARVELL_GT64111,
80 qube_raq_galileo_fixup); 117 qube_raq_galileo_fixup);
81 118
119static char irq_tab_qube1[] __initdata = {
120 [COBALT_PCICONF_CPU] = 0,
121 [COBALT_PCICONF_ETH0] = COBALT_QUBE1_ETH0_IRQ,
122 [COBALT_PCICONF_RAQSCSI] = COBALT_SCSI_IRQ,
123 [COBALT_PCICONF_VIA] = 0,
124 [COBALT_PCICONF_PCISLOT] = COBALT_QUBE_SLOT_IRQ,
125 [COBALT_PCICONF_ETH1] = 0
126};
127
82static char irq_tab_cobalt[] __initdata = { 128static char irq_tab_cobalt[] __initdata = {
83 [COBALT_PCICONF_CPU] = 0, 129 [COBALT_PCICONF_CPU] = 0,
84 [COBALT_PCICONF_ETH0] = COBALT_ETH0_IRQ, 130 [COBALT_PCICONF_ETH0] = COBALT_ETH0_IRQ,
@@ -99,6 +145,9 @@ static char irq_tab_raq2[] __initdata = {
99 145
100int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin) 146int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
101{ 147{
148 if (cobalt_board_id < COBALT_BRD_ID_QUBE2)
149 return irq_tab_qube1[slot];
150
102 if (cobalt_board_id == COBALT_BRD_ID_RAQ2) 151 if (cobalt_board_id == COBALT_BRD_ID_RAQ2)
103 return irq_tab_raq2[slot]; 152 return irq_tab_raq2[slot];
104 153
diff --git a/arch/mips/pci/fixup-pnx8550.c b/arch/mips/pci/fixup-pnx8550.c
new file mode 100644
index 000000000000..4256b3b30b77
--- /dev/null
+++ b/arch/mips/pci/fixup-pnx8550.c
@@ -0,0 +1,57 @@
1/*
2 * Philips PNX8550 pci fixups.
3 *
4 * Copyright 2005 Embedded Alley Solutions, Inc
5 * source@embeddealley.com
6 *
7 * This program is free software; you can distribute it and/or modify it
8 * under the terms of the GNU General Public License (Version 2) as
9 * published by the Free Software Foundation.
10 *
11 * This program is distributed in the hope it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * for more details.
15 *
16 * You should have received a copy of the GNU General Public License along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
19 */
20#include <linux/types.h>
21#include <linux/pci.h>
22#include <linux/kernel.h>
23#include <linux/init.h>
24
25#include <asm/mach-pnx8550/pci.h>
26#include <asm/mach-pnx8550/int.h>
27
28
29#undef DEBUG
30#ifdef DEBUG
31#define DBG(x...) printk(x)
32#else
33#define DBG(x...)
34#endif
35
36extern char irq_tab_jbs[][5];
37
38void __init pcibios_fixup_resources(struct pci_dev *dev)
39{
40 /* no need to fixup IO resources */
41}
42
43void __init pcibios_fixup(void)
44{
45 /* nothing to do here */
46}
47
48int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
49{
50 return irq_tab_jbs[slot][pin];
51}
52
53/* Do platform specific device initialization at pci_enable_device() time */
54int pcibios_plat_dev_init(struct pci_dev *dev)
55{
56 return 0;
57}
diff --git a/arch/mips/pci/fixup-tx4938.c b/arch/mips/pci/fixup-tx4938.c
new file mode 100644
index 000000000000..f455520ada88
--- /dev/null
+++ b/arch/mips/pci/fixup-tx4938.c
@@ -0,0 +1,92 @@
1/*
2 * Toshiba rbtx4938 pci routines
3 * Copyright (C) 2000-2001 Toshiba Corporation
4 *
5 * 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
6 * terms of the GNU General Public License version 2. This program is
7 * licensed "as is" without any warranty of any kind, whether express
8 * or implied.
9 *
10 * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com)
11 */
12#include <linux/types.h>
13#include <linux/pci.h>
14#include <linux/kernel.h>
15#include <linux/init.h>
16
17#include <asm/tx4938/rbtx4938.h>
18
19extern struct pci_controller tx4938_pci_controller[];
20
21int pci_get_irq(struct pci_dev *dev, int pin)
22{
23 int irq = pin;
24 u8 slot = PCI_SLOT(dev->devfn);
25 struct pci_controller *controller = (struct pci_controller *)dev->sysdata;
26
27 if (controller == &tx4938_pci_controller[1]) {
28 /* TX4938 PCIC1 */
29 switch (slot) {
30 case TX4938_PCIC_IDSEL_AD_TO_SLOT(31):
31 if (tx4938_ccfgptr->pcfg & TX4938_PCFG_ETH0_SEL)
32 return RBTX4938_IRQ_IRC + TX4938_IR_ETH0;
33 break;
34 case TX4938_PCIC_IDSEL_AD_TO_SLOT(30):
35 if (tx4938_ccfgptr->pcfg & TX4938_PCFG_ETH1_SEL)
36 return RBTX4938_IRQ_IRC + TX4938_IR_ETH1;
37 break;
38 }
39 return 0;
40 }
41
42 /* IRQ rotation */
43 irq--; /* 0-3 */
44 if (dev->bus->parent == NULL &&
45 (slot == TX4938_PCIC_IDSEL_AD_TO_SLOT(23))) {
46 /* PCI CardSlot (IDSEL=A23) */
47 /* PCIA => PCIA (IDSEL=A23) */
48 irq = (irq + 0 + slot) % 4;
49 } else {
50 /* PCI Backplane */
51 irq = (irq + 33 - slot) % 4;
52 }
53 irq++; /* 1-4 */
54
55 switch (irq) {
56 case 1:
57 irq = RBTX4938_IRQ_IOC_PCIA;
58 break;
59 case 2:
60 irq = RBTX4938_IRQ_IOC_PCIB;
61 break;
62 case 3:
63 irq = RBTX4938_IRQ_IOC_PCIC;
64 break;
65 case 4:
66 irq = RBTX4938_IRQ_IOC_PCID;
67 break;
68 }
69 return irq;
70}
71
72int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
73{
74 unsigned char irq = 0;
75
76 irq = pci_get_irq(dev, pin);
77
78 printk(KERN_INFO "PCI: 0x%02x:0x%02x(0x%02x,0x%02x) IRQ=%d\n",
79 dev->bus->number, dev->devfn, PCI_SLOT(dev->devfn),
80 PCI_FUNC(dev->devfn), irq);
81
82 return irq;
83}
84
85/*
86 * Do platform specific device initialization at pci_enable_device() time
87 */
88int pcibios_plat_dev_init(struct pci_dev *dev)
89{
90 return 0;
91}
92
diff --git a/arch/mips/pci/ops-au1000.c b/arch/mips/pci/ops-au1000.c
index c1c91ca0f9c2..be1420126c42 100644
--- a/arch/mips/pci/ops-au1000.c
+++ b/arch/mips/pci/ops-au1000.c
@@ -50,11 +50,6 @@
50 50
51int (*board_pci_idsel)(unsigned int devsel, int assert); 51int (*board_pci_idsel)(unsigned int devsel, int assert);
52 52
53/* CP0 hazard avoidance. */
54#define BARRIER __asm__ __volatile__(".set noreorder\n\t" \
55 "nop; nop; nop; nop;\t" \
56 ".set reorder\n\t")
57
58void mod_wired_entry(int entry, unsigned long entrylo0, 53void mod_wired_entry(int entry, unsigned long entrylo0,
59 unsigned long entrylo1, unsigned long entryhi, 54 unsigned long entrylo1, unsigned long entryhi,
60 unsigned long pagemask) 55 unsigned long pagemask)
@@ -66,16 +61,12 @@ void mod_wired_entry(int entry, unsigned long entrylo0,
66 old_ctx = read_c0_entryhi() & 0xff; 61 old_ctx = read_c0_entryhi() & 0xff;
67 old_pagemask = read_c0_pagemask(); 62 old_pagemask = read_c0_pagemask();
68 write_c0_index(entry); 63 write_c0_index(entry);
69 BARRIER;
70 write_c0_pagemask(pagemask); 64 write_c0_pagemask(pagemask);
71 write_c0_entryhi(entryhi); 65 write_c0_entryhi(entryhi);
72 write_c0_entrylo0(entrylo0); 66 write_c0_entrylo0(entrylo0);
73 write_c0_entrylo1(entrylo1); 67 write_c0_entrylo1(entrylo1);
74 BARRIER;
75 tlb_write_indexed(); 68 tlb_write_indexed();
76 BARRIER;
77 write_c0_entryhi(old_ctx); 69 write_c0_entryhi(old_ctx);
78 BARRIER;
79 write_c0_pagemask(old_pagemask); 70 write_c0_pagemask(old_pagemask);
80} 71}
81 72
@@ -128,9 +119,8 @@ static int config_access(unsigned char access_type, struct pci_bus *bus,
128 last_entryLo0 = last_entryLo1 = 0xffffffff; 119 last_entryLo0 = last_entryLo1 = 0xffffffff;
129 } 120 }
130 121
131 /* Since the Au1xxx doesn't do the idsel timing exactly to spec, 122 /* Allow board vendors to implement their own off-chip idsel.
132 * many board vendors implement their own off-chip idsel, so call 123 * If it doesn't succeed, may as well bail out at this point.
133 * it now. If it doesn't succeed, may as well bail out at this point.
134 */ 124 */
135 if (board_pci_idsel) { 125 if (board_pci_idsel) {
136 if (board_pci_idsel(device, 1) == 0) { 126 if (board_pci_idsel(device, 1) == 0) {
diff --git a/arch/mips/pci/ops-bonito64.c b/arch/mips/pci/ops-bonito64.c
index 4b4e086a7eb1..dc35270b65a2 100644
--- a/arch/mips/pci/ops-bonito64.c
+++ b/arch/mips/pci/ops-bonito64.c
@@ -1,6 +1,8 @@
1/* 1/*
2 * Carsten Langgaard, carstenl@mips.com 2 * Copyright (C) 1999, 2000, 2004 MIPS Technologies, Inc.
3 * Copyright (C) 1999, 2000 MIPS Technologies, Inc. All rights reserved. 3 * All rights reserved.
4 * Authors: Carsten Langgaard <carstenl@mips.com>
5 * Maciej W. Rozycki <macro@mips.com>
4 * 6 *
5 * This program is free software; you can distribute it and/or modify it 7 * This program is free software; you can distribute it and/or modify it
6 * under the terms of the GNU General Public License (Version 2) as 8 * under the terms of the GNU General Public License (Version 2) as
@@ -17,7 +19,6 @@
17 * 19 *
18 * MIPS boards specific PCI support. 20 * MIPS boards specific PCI support.
19 */ 21 */
20#include <linux/config.h>
21#include <linux/types.h> 22#include <linux/types.h>
22#include <linux/pci.h> 23#include <linux/pci.h>
23#include <linux/kernel.h> 24#include <linux/kernel.h>
@@ -57,13 +58,6 @@ static int bonito64_pcibios_config_access(unsigned char access_type,
57 return -1; 58 return -1;
58 } 59 }
59 60
60#ifdef CONFIG_MIPS_BOARDS_GEN
61 if ((busnum == 0) && (PCI_SLOT(devfn) == 17)) {
62 /* MIPS Core boards have Bonito connected as device 17 */
63 return -1;
64 }
65#endif
66
67 /* Clear cause register bits */ 61 /* Clear cause register bits */
68 BONITO_PCICMD |= (BONITO_PCICMD_MABORT_CLR | 62 BONITO_PCICMD |= (BONITO_PCICMD_MABORT_CLR |
69 BONITO_PCICMD_MTABORT_CLR); 63 BONITO_PCICMD_MTABORT_CLR);
diff --git a/arch/mips/pci/ops-gt64111.c b/arch/mips/pci/ops-gt64111.c
index c5b0fc184c2a..c1807934768d 100644
--- a/arch/mips/pci/ops-gt64111.c
+++ b/arch/mips/pci/ops-gt64111.c
@@ -18,15 +18,15 @@
18#include <asm/cobalt/cobalt.h> 18#include <asm/cobalt/cobalt.h>
19 19
20/* 20/*
21 * Accessing device 31 hangs the GT64120. Not sure if this will also hang 21 * Device 31 on the GT64111 is used to generate PCI special
22 * the GT64111, let's be paranoid for now. 22 * cycles, so we shouldn't expected to find a device there ...
23 */ 23 */
24static inline int pci_range_ck(struct pci_bus *bus, unsigned int devfn) 24static inline int pci_range_ck(struct pci_bus *bus, unsigned int devfn)
25{ 25{
26 if (bus->number == 0 && devfn == PCI_DEVFN(31, 0)) 26 if (bus->number == 0 && PCI_SLOT(devfn) < 31)
27 return -1; 27 return 0;
28 28
29 return 0; 29 return -1;
30} 30}
31 31
32static int gt64111_pci_read_config(struct pci_bus *bus, unsigned int devfn, 32static int gt64111_pci_read_config(struct pci_bus *bus, unsigned int devfn,
diff --git a/arch/mips/pci/ops-gt64120.c b/arch/mips/pci/ops-gt64120.c
index 7b99dfa33dfc..6335844d607a 100644
--- a/arch/mips/pci/ops-gt64120.c
+++ b/arch/mips/pci/ops-gt64120.c
@@ -1,6 +1,8 @@
1/* 1/*
2 * Carsten Langgaard, carstenl@mips.com 2 * Copyright (C) 1999, 2000, 2004 MIPS Technologies, Inc.
3 * Copyright (C) 1999, 2000 MIPS Technologies, Inc. All rights reserved. 3 * All rights reserved.
4 * Authors: Carsten Langgaard <carstenl@mips.com>
5 * Maciej W. Rozycki <macro@mips.com>
4 * 6 *
5 * This program is free software; you can distribute it and/or modify it 7 * This program is free software; you can distribute it and/or modify it
6 * under the terms of the GNU General Public License (Version 2) as 8 * under the terms of the GNU General Public License (Version 2) as
@@ -43,10 +45,6 @@ static int gt64120_pcibios_config_access(unsigned char access_type,
43 unsigned char busnum = bus->number; 45 unsigned char busnum = bus->number;
44 u32 intr; 46 u32 intr;
45 47
46 if ((busnum == 0) && (PCI_SLOT(devfn) == 0))
47 /* Galileo itself is devfn 0, don't move it around */
48 return -1;
49
50 if ((busnum == 0) && (devfn >= PCI_DEVFN(31, 0))) 48 if ((busnum == 0) && (devfn >= PCI_DEVFN(31, 0)))
51 return -1; /* Because of a bug in the galileo (for slot 31). */ 49 return -1; /* Because of a bug in the galileo (for slot 31). */
52 50
diff --git a/arch/mips/pci/ops-msc.c b/arch/mips/pci/ops-msc.c
index 7bc099643a9d..5d9fbb0f4670 100644
--- a/arch/mips/pci/ops-msc.c
+++ b/arch/mips/pci/ops-msc.c
@@ -21,7 +21,6 @@
21 * MIPS boards specific PCI support. 21 * MIPS boards specific PCI support.
22 * 22 *
23 */ 23 */
24#include <linux/config.h>
25#include <linux/types.h> 24#include <linux/types.h>
26#include <linux/pci.h> 25#include <linux/pci.h>
27#include <linux/kernel.h> 26#include <linux/kernel.h>
@@ -49,34 +48,17 @@ static int msc_pcibios_config_access(unsigned char access_type,
49 struct pci_bus *bus, unsigned int devfn, int where, u32 * data) 48 struct pci_bus *bus, unsigned int devfn, int where, u32 * data)
50{ 49{
51 unsigned char busnum = bus->number; 50 unsigned char busnum = bus->number;
52 unsigned char type;
53 u32 intr; 51 u32 intr;
54 52
55#ifdef CONFIG_MIPS_BOARDS_GEN
56 if ((busnum == 0) && (PCI_SLOT(devfn) == 17)) {
57 /* MIPS Core boards have SOCit connected as device 17 */
58 return -1;
59 }
60#endif
61
62 /* Clear status register bits. */ 53 /* Clear status register bits. */
63 MSC_WRITE(MSC01_PCI_INTSTAT, 54 MSC_WRITE(MSC01_PCI_INTSTAT,
64 (MSC01_PCI_INTCFG_MA_BIT | MSC01_PCI_INTCFG_TA_BIT)); 55 (MSC01_PCI_INTCFG_MA_BIT | MSC01_PCI_INTCFG_TA_BIT));
65 56
66 /* Setup address */
67 if (busnum == 0)
68 type = 0; /* Type 0 */
69 else
70 type = 1; /* Type 1 */
71
72 MSC_WRITE(MSC01_PCI_CFGADDR, 57 MSC_WRITE(MSC01_PCI_CFGADDR,
73 ((busnum << MSC01_PCI_CFGADDR_BNUM_SHF) | 58 ((busnum << MSC01_PCI_CFGADDR_BNUM_SHF) |
74 (PCI_SLOT(devfn) << MSC01_PCI_CFGADDR_DNUM_SHF) 59 (PCI_SLOT(devfn) << MSC01_PCI_CFGADDR_DNUM_SHF) |
75 | (PCI_FUNC(devfn) << 60 (PCI_FUNC(devfn) << MSC01_PCI_CFGADDR_FNUM_SHF) |
76 MSC01_PCI_CFGADDR_FNUM_SHF) | ((where / 61 ((where / 4) << MSC01_PCI_CFGADDR_RNUM_SHF)));
77 4) <<
78 MSC01_PCI_CFGADDR_RNUM_SHF)
79 | (type)));
80 62
81 /* Perform access */ 63 /* Perform access */
82 if (access_type == PCI_ACCESS_WRITE) 64 if (access_type == PCI_ACCESS_WRITE)
@@ -86,15 +68,12 @@ static int msc_pcibios_config_access(unsigned char access_type,
86 68
87 /* Detect Master/Target abort */ 69 /* Detect Master/Target abort */
88 MSC_READ(MSC01_PCI_INTSTAT, intr); 70 MSC_READ(MSC01_PCI_INTSTAT, intr);
89 if (intr & (MSC01_PCI_INTCFG_MA_BIT | 71 if (intr & (MSC01_PCI_INTCFG_MA_BIT | MSC01_PCI_INTCFG_TA_BIT)) {
90 MSC01_PCI_INTCFG_TA_BIT)) {
91 /* Error occurred */ 72 /* Error occurred */
92 73
93 /* Clear bits */ 74 /* Clear bits */
94 MSC_READ(MSC01_PCI_INTSTAT, intr);
95 MSC_WRITE(MSC01_PCI_INTSTAT, 75 MSC_WRITE(MSC01_PCI_INTSTAT,
96 (MSC01_PCI_INTCFG_MA_BIT | 76 (MSC01_PCI_INTCFG_MA_BIT | MSC01_PCI_INTCFG_TA_BIT));
97 MSC01_PCI_INTCFG_TA_BIT));
98 77
99 return -1; 78 return -1;
100 } 79 }
diff --git a/arch/mips/pci/ops-nile4.c b/arch/mips/pci/ops-nile4.c
index a7169928b351..a8d38dc8c504 100644
--- a/arch/mips/pci/ops-nile4.c
+++ b/arch/mips/pci/ops-nile4.c
@@ -15,7 +15,7 @@
15 15
16volatile unsigned long *const vrc_pciregs = (void *) Vrc5074_BASE; 16volatile unsigned long *const vrc_pciregs = (void *) Vrc5074_BASE;
17 17
18static spinlock_t nile4_pci_lock; 18static DEFINE_SPINLOCK(nile4_pci_lock);
19 19
20static int nile4_pcibios_config_access(unsigned char access_type, 20static int nile4_pcibios_config_access(unsigned char access_type,
21 struct pci_bus *bus, unsigned int devfn, int where, u32 * val) 21 struct pci_bus *bus, unsigned int devfn, int where, u32 * val)
diff --git a/arch/mips/pci/ops-pnx8550.c b/arch/mips/pci/ops-pnx8550.c
new file mode 100644
index 000000000000..454b65cc3354
--- /dev/null
+++ b/arch/mips/pci/ops-pnx8550.c
@@ -0,0 +1,284 @@
1/*
2 *
3 * BRIEF MODULE DESCRIPTION
4 *
5 * 2.6 port, Embedded Alley Solutions, Inc
6 *
7 * Based on:
8 * Author: source@mvista.com
9 *
10 * This program is free software; you can distribute it and/or modify it
11 * under the terms of the GNU General Public License (Version 2) as
12 * published by the Free Software Foundation.
13 *
14 * This program is distributed in the hope it will be useful, but WITHOUT
15 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
17 * for more details.
18 *
19 * You should have received a copy of the GNU General Public License along
20 * with this program; if not, write to the Free Software Foundation, Inc.,
21 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
22 */
23#include <linux/types.h>
24#include <linux/pci.h>
25#include <linux/kernel.h>
26#include <linux/init.h>
27#include <linux/vmalloc.h>
28#include <linux/delay.h>
29
30#include <asm/mach-pnx8550/pci.h>
31#include <asm/mach-pnx8550/glb.h>
32#include <asm/debug.h>
33
34
35static inline void clear_status(void)
36{
37 unsigned long pci_stat;
38
39 pci_stat = inl(PCI_BASE | PCI_GPPM_STATUS);
40 outl(pci_stat, PCI_BASE | PCI_GPPM_ICLR);
41}
42
43static inline unsigned int
44calc_cfg_addr(struct pci_bus *bus, unsigned int devfn, int where)
45{
46 unsigned int addr;
47
48 addr = ((bus->number > 0) ? (((bus->number & 0xff) << PCI_CFG_BUS_SHIFT) | 1) : 0);
49 addr |= ((devfn & 0xff) << PCI_CFG_FUNC_SHIFT) | (where & 0xfc);
50
51 return addr;
52}
53
54static int
55config_access(unsigned int pci_cmd, struct pci_bus *bus, unsigned int devfn, int where, unsigned int pci_mode, unsigned int *val)
56{
57 unsigned int flags;
58 unsigned long loops = 0;
59 unsigned long ioaddr = calc_cfg_addr(bus, devfn, where);
60
61 local_irq_save(flags);
62 /*Clear pending interrupt status */
63 if (inl(PCI_BASE | PCI_GPPM_STATUS)) {
64 clear_status();
65 while (!(inl(PCI_BASE | PCI_GPPM_STATUS) == 0)) ;
66 }
67
68 outl(ioaddr, PCI_BASE | PCI_GPPM_ADDR);
69
70 if ((pci_cmd == PCI_CMD_IOW) || (pci_cmd == PCI_CMD_CONFIG_WRITE))
71 outl(*val, PCI_BASE | PCI_GPPM_WDAT);
72
73 outl(INIT_PCI_CYCLE | pci_cmd | (pci_mode & PCI_BYTE_ENABLE_MASK),
74 PCI_BASE | PCI_GPPM_CTRL);
75
76 loops =
77 ((loops_per_jiffy *
78 PCI_IO_JIFFIES_TIMEOUT) >> (PCI_IO_JIFFIES_SHIFT));
79 while (1) {
80 if (inl(PCI_BASE | PCI_GPPM_STATUS) & GPPM_DONE) {
81 if ((pci_cmd == PCI_CMD_IOR) ||
82 (pci_cmd == PCI_CMD_CONFIG_READ))
83 *val = inl(PCI_BASE | PCI_GPPM_RDAT);
84 clear_status();
85 local_irq_restore(flags);
86 return PCIBIOS_SUCCESSFUL;
87 } else if (inl(PCI_BASE | PCI_GPPM_STATUS) & GPPM_R_MABORT) {
88 break;
89 }
90
91 loops--;
92 if (loops == 0) {
93 printk("%s : Arbiter Locked.\n", __FUNCTION__);
94 }
95 }
96
97 clear_status();
98 if ((pci_cmd == PCI_CMD_IOR) || (pci_cmd == PCI_CMD_IOW)) {
99 printk("%s timeout (GPPM_CTRL=%X) ioaddr %lX pci_cmd %X\n",
100 __FUNCTION__, inl(PCI_BASE | PCI_GPPM_CTRL), ioaddr,
101 pci_cmd);
102 }
103
104 if ((pci_cmd == PCI_CMD_IOR) || (pci_cmd == PCI_CMD_CONFIG_READ))
105 *val = 0xffffffff;
106 local_irq_restore(flags);
107 return PCIBIOS_DEVICE_NOT_FOUND;
108}
109
110/*
111 * We can't address 8 and 16 bit words directly. Instead we have to
112 * read/write a 32bit word and mask/modify the data we actually want.
113 */
114static int
115read_config_byte(struct pci_bus *bus, unsigned int devfn, int where, u8 * val)
116{
117 unsigned int data = 0;
118 int err;
119
120 if (bus == 0)
121 return -1;
122
123 err = config_access(PCI_CMD_CONFIG_READ, bus, devfn, where, ~(1 << (where & 3)), &data);
124 switch (where & 0x03) {
125 case 0:
126 *val = (unsigned char)(data & 0x000000ff);
127 break;
128 case 1:
129 *val = (unsigned char)((data & 0x0000ff00) >> 8);
130 break;
131 case 2:
132 *val = (unsigned char)((data & 0x00ff0000) >> 16);
133 break;
134 case 3:
135 *val = (unsigned char)((data & 0xff000000) >> 24);
136 break;
137 }
138
139 return err;
140}
141
142static int
143read_config_word(struct pci_bus *bus, unsigned int devfn, int where, u16 * val)
144{
145 unsigned int data = 0;
146 int err;
147
148 if (bus == 0)
149 return -1;
150
151 if (where & 0x01)
152 return PCIBIOS_BAD_REGISTER_NUMBER;
153
154 err = config_access(PCI_CMD_CONFIG_READ, bus, devfn, where, ~(3 << (where & 3)), &data);
155 switch (where & 0x02) {
156 case 0:
157 *val = (unsigned short)(data & 0x0000ffff);
158 break;
159 case 2:
160 *val = (unsigned short)((data & 0xffff0000) >> 16);
161 break;
162 }
163
164 return err;
165}
166
167static int
168read_config_dword(struct pci_bus *bus, unsigned int devfn, int where, u32 * val)
169{
170 int err;
171 if (bus == 0)
172 return -1;
173
174 if (where & 0x03)
175 return PCIBIOS_BAD_REGISTER_NUMBER;
176
177 err = config_access(PCI_CMD_CONFIG_READ, bus, devfn, where, 0, val);
178
179 return err;
180}
181
182static int
183write_config_byte(struct pci_bus *bus, unsigned int devfn, int where, u8 val)
184{
185 unsigned int data = (unsigned int)val;
186 int err;
187
188 if (bus == 0)
189 return -1;
190
191 switch (where & 0x03) {
192 case 1:
193 data = (data << 8);
194 break;
195 case 2:
196 data = (data << 16);
197 break;
198 case 3:
199 data = (data << 24);
200 break;
201 default:
202 break;
203 }
204
205 err = config_access(PCI_CMD_CONFIG_READ, bus, devfn, where, ~(1 << (where & 3)), &data);
206
207 return err;
208}
209
210static int
211write_config_word(struct pci_bus *bus, unsigned int devfn, int where, u16 val)
212{
213 unsigned int data = (unsigned int)val;
214 int err;
215
216 if (bus == 0)
217 return -1;
218
219 if (where & 0x01)
220 return PCIBIOS_BAD_REGISTER_NUMBER;
221
222 switch (where & 0x02) {
223 case 2:
224 data = (data << 16);
225 break;
226 default:
227 break;
228 }
229 err = config_access(PCI_CMD_CONFIG_WRITE, bus, devfn, where, ~(3 << (where & 3)), &data);
230
231 return err;
232}
233
234static int
235write_config_dword(struct pci_bus *bus, unsigned int devfn, int where, u32 val)
236{
237 int err;
238 if (bus == 0)
239 return -1;
240
241 if (where & 0x03)
242 return PCIBIOS_BAD_REGISTER_NUMBER;
243
244 err = config_access(PCI_CMD_CONFIG_WRITE, bus, devfn, where, 0, &val);
245
246 return err;
247}
248
249static int config_read(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 * val)
250{
251 switch (size) {
252 case 1: {
253 u8 _val;
254 int rc = read_config_byte(bus, devfn, where, &_val);
255 *val = _val;
256 return rc;
257 }
258 case 2: {
259 u16 _val;
260 int rc = read_config_word(bus, devfn, where, &_val);
261 *val = _val;
262 return rc;
263 }
264 default:
265 return read_config_dword(bus, devfn, where, val);
266 }
267}
268
269static int config_write(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val)
270{
271 switch (size) {
272 case 1:
273 return write_config_byte(bus, devfn, where, (u8) val);
274 case 2:
275 return write_config_word(bus, devfn, where, (u16) val);
276 default:
277 return write_config_dword(bus, devfn, where, val);
278 }
279}
280
281struct pci_ops pnx8550_pci_ops = {
282 config_read,
283 config_write
284};
diff --git a/arch/mips/pci/ops-tx4938.c b/arch/mips/pci/ops-tx4938.c
new file mode 100644
index 000000000000..4c0dcfce5297
--- /dev/null
+++ b/arch/mips/pci/ops-tx4938.c
@@ -0,0 +1,198 @@
1/*
2 * Define the pci_ops for the Toshiba rbtx4938
3 * Copyright (C) 2000-2001 Toshiba Corporation
4 *
5 * 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
6 * terms of the GNU General Public License version 2. This program is
7 * licensed "as is" without any warranty of any kind, whether express
8 * or implied.
9 *
10 * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com)
11 */
12#include <linux/types.h>
13#include <linux/pci.h>
14#include <linux/kernel.h>
15#include <linux/init.h>
16
17#include <asm/addrspace.h>
18#include <asm/tx4938/rbtx4938.h>
19
20/* initialize in setup */
21struct resource pci_io_resource = {
22 .name = "pci IO space",
23 .start = 0,
24 .end = 0,
25 .flags = IORESOURCE_IO
26};
27
28/* initialize in setup */
29struct resource pci_mem_resource = {
30 .name = "pci memory space",
31 .start = 0,
32 .end = 0,
33 .flags = IORESOURCE_MEM
34};
35
36struct resource tx4938_pcic1_pci_io_resource = {
37 .name = "PCI1 IO",
38 .start = 0,
39 .end = 0,
40 .flags = IORESOURCE_IO
41};
42struct resource tx4938_pcic1_pci_mem_resource = {
43 .name = "PCI1 mem",
44 .start = 0,
45 .end = 0,
46 .flags = IORESOURCE_MEM
47};
48
49static int mkaddr(int bus, int dev_fn, int where, int *flagsp)
50{
51 if (bus > 0) {
52 /* Type 1 configuration */
53 tx4938_pcicptr->g2pcfgadrs = ((bus & 0xff) << 0x10) |
54 ((dev_fn & 0xff) << 0x08) | (where & 0xfc) | 1;
55 } else {
56 if (dev_fn >= PCI_DEVFN(TX4938_PCIC_MAX_DEVNU, 0))
57 return -1;
58
59 /* Type 0 configuration */
60 tx4938_pcicptr->g2pcfgadrs = ((bus & 0xff) << 0x10) |
61 ((dev_fn & 0xff) << 0x08) | (where & 0xfc);
62 }
63 /* clear M_ABORT and Disable M_ABORT Int. */
64 tx4938_pcicptr->pcistatus =
65 (tx4938_pcicptr->pcistatus & 0x0000ffff) |
66 (PCI_STATUS_REC_MASTER_ABORT << 16);
67 tx4938_pcicptr->pcimask &= ~PCI_STATUS_REC_MASTER_ABORT;
68
69 return 0;
70}
71
72static int check_abort(int flags)
73{
74 int code = PCIBIOS_SUCCESSFUL;
75 /* wait write cycle completion before checking error status */
76 while (tx4938_pcicptr->pcicstatus & TX4938_PCIC_PCICSTATUS_IWB)
77 ;
78 if (tx4938_pcicptr->pcistatus & (PCI_STATUS_REC_MASTER_ABORT << 16)) {
79 tx4938_pcicptr->pcistatus =
80 (tx4938_pcicptr->
81 pcistatus & 0x0000ffff) | (PCI_STATUS_REC_MASTER_ABORT
82 << 16);
83 tx4938_pcicptr->pcimask |= PCI_STATUS_REC_MASTER_ABORT;
84 code = PCIBIOS_DEVICE_NOT_FOUND;
85 }
86 return code;
87}
88
89static int tx4938_pcibios_read_config(struct pci_bus *bus, unsigned int devfn,
90 int where, int size, u32 * val)
91{
92 int flags, retval, dev, busno, func;
93
94 dev = PCI_SLOT(devfn);
95 func = PCI_FUNC(devfn);
96
97 /* check if the bus is top-level */
98 if (bus->parent != NULL)
99 busno = bus->number;
100 else {
101 busno = 0;
102 }
103
104 if (mkaddr(busno, devfn, where, &flags))
105 return -1;
106
107 switch (size) {
108 case 1:
109 *val = *(volatile u8 *) ((ulong) & tx4938_pcicptr->g2pcfgdata |
110#ifdef __BIG_ENDIAN
111 ((where & 3) ^ 3));
112#else
113 (where & 3));
114#endif
115 break;
116 case 2:
117 *val = *(volatile u16 *) ((ulong) & tx4938_pcicptr->g2pcfgdata |
118#ifdef __BIG_ENDIAN
119 ((where & 3) ^ 2));
120#else
121 (where & 3));
122#endif
123 break;
124 case 4:
125 *val = tx4938_pcicptr->g2pcfgdata;
126 break;
127 }
128
129 retval = check_abort(flags);
130 if (retval == PCIBIOS_DEVICE_NOT_FOUND)
131 *val = 0xffffffff;
132
133 return retval;
134}
135
136static int tx4938_pcibios_write_config(struct pci_bus *bus, unsigned int devfn, int where,
137 int size, u32 val)
138{
139 int flags, dev, busno, func;
140
141 busno = bus->number;
142 dev = PCI_SLOT(devfn);
143 func = PCI_FUNC(devfn);
144
145 /* check if the bus is top-level */
146 if (bus->parent != NULL) {
147 busno = bus->number;
148 } else {
149 busno = 0;
150 }
151
152 if (mkaddr(busno, devfn, where, &flags))
153 return -1;
154
155 switch (size) {
156 case 1:
157 *(volatile u8 *) ((ulong) & tx4938_pcicptr->g2pcfgdata |
158#ifdef __BIG_ENDIAN
159 ((where & 3) ^ 3)) = val;
160#else
161 (where & 3)) = val;
162#endif
163 break;
164 case 2:
165 *(volatile u16 *) ((ulong) & tx4938_pcicptr->g2pcfgdata |
166#ifdef __BIG_ENDIAN
167 ((where & 0x3) ^ 0x2)) = val;
168#else
169 (where & 3)) = val;
170#endif
171 break;
172 case 4:
173 tx4938_pcicptr->g2pcfgdata = val;
174 break;
175 }
176
177 return check_abort(flags);
178}
179
180struct pci_ops tx4938_pci_ops = {
181 tx4938_pcibios_read_config,
182 tx4938_pcibios_write_config
183};
184
185struct pci_controller tx4938_pci_controller[] = {
186 /* h/w only supports devices 0x00 to 0x14 */
187 {
188 .pci_ops = &tx4938_pci_ops,
189 .io_resource = &pci_io_resource,
190 .mem_resource = &pci_mem_resource,
191 },
192 /* h/w only supports devices 0x00 to 0x14 */
193 {
194 .pci_ops = &tx4938_pci_ops,
195 .io_resource = &tx4938_pcic1_pci_io_resource,
196 .mem_resource = &tx4938_pcic1_pci_mem_resource,
197 }
198};
diff --git a/arch/mips/pci/pci-bcm1480.c b/arch/mips/pci/pci-bcm1480.c
new file mode 100644
index 000000000000..f194b4e4f86a
--- /dev/null
+++ b/arch/mips/pci/pci-bcm1480.c
@@ -0,0 +1,265 @@
1/*
2 * Copyright (C) 2001,2002,2005 Broadcom Corporation
3 * Copyright (C) 2004 by Ralf Baechle (ralf@linux-mips.org)
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 */
19
20/*
21 * BCM1x80/1x55-specific PCI support
22 *
23 * This module provides the glue between Linux's PCI subsystem
24 * and the hardware. We basically provide glue for accessing
25 * configuration space, and set up the translation for I/O
26 * space accesses.
27 *
28 * To access configuration space, we use ioremap. In the 32-bit
29 * kernel, this consumes either 4 or 8 page table pages, and 16MB of
30 * kernel mapped memory. Hopefully neither of these should be a huge
31 * problem.
32 *
33 * XXX: AT THIS TIME, ONLY the NATIVE PCI-X INTERFACE IS SUPPORTED.
34 */
35#include <linux/config.h>
36#include <linux/types.h>
37#include <linux/pci.h>
38#include <linux/kernel.h>
39#include <linux/init.h>
40#include <linux/mm.h>
41#include <linux/console.h>
42#include <linux/tty.h>
43
44#include <asm/sibyte/bcm1480_regs.h>
45#include <asm/sibyte/bcm1480_scd.h>
46#include <asm/sibyte/board.h>
47#include <asm/io.h>
48
49/*
50 * Macros for calculating offsets into config space given a device
51 * structure or dev/fun/reg
52 */
53#define CFGOFFSET(bus,devfn,where) (((bus)<<16)+((devfn)<<8)+(where))
54#define CFGADDR(bus,devfn,where) CFGOFFSET((bus)->number,(devfn),where)
55
56static void *cfg_space;
57
58#define PCI_BUS_ENABLED 1
59#define PCI_DEVICE_MODE 2
60
61static int bcm1480_bus_status = 0;
62
63#define PCI_BRIDGE_DEVICE 0
64
65/*
66 * Read/write 32-bit values in config space.
67 */
68static inline u32 READCFG32(u32 addr)
69{
70 return *(u32 *)(cfg_space + (addr&~3));
71}
72
73static inline void WRITECFG32(u32 addr, u32 data)
74{
75 *(u32 *)(cfg_space + (addr & ~3)) = data;
76}
77
78int pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
79{
80 return dev->irq;
81}
82
83/* Do platform specific device initialization at pci_enable_device() time */
84int pcibios_plat_dev_init(struct pci_dev *dev)
85{
86 return 0;
87}
88
89/*
90 * Some checks before doing config cycles:
91 * In PCI Device Mode, hide everything on bus 0 except the LDT host
92 * bridge. Otherwise, access is controlled by bridge MasterEn bits.
93 */
94static int bcm1480_pci_can_access(struct pci_bus *bus, int devfn)
95{
96 u32 devno;
97
98 if (!(bcm1480_bus_status & (PCI_BUS_ENABLED | PCI_DEVICE_MODE)))
99 return 0;
100
101 if (bus->number == 0) {
102 devno = PCI_SLOT(devfn);
103 if (bcm1480_bus_status & PCI_DEVICE_MODE)
104 return 0;
105 else
106 return 1;
107 } else
108 return 1;
109}
110
111/*
112 * Read/write access functions for various sizes of values
113 * in config space. Return all 1's for disallowed accesses
114 * for a kludgy but adequate simulation of master aborts.
115 */
116
117static int bcm1480_pcibios_read(struct pci_bus *bus, unsigned int devfn,
118 int where, int size, u32 * val)
119{
120 u32 data = 0;
121
122 if ((size == 2) && (where & 1))
123 return PCIBIOS_BAD_REGISTER_NUMBER;
124 else if ((size == 4) && (where & 3))
125 return PCIBIOS_BAD_REGISTER_NUMBER;
126
127 if (bcm1480_pci_can_access(bus, devfn))
128 data = READCFG32(CFGADDR(bus, devfn, where));
129 else
130 data = 0xFFFFFFFF;
131
132 if (size == 1)
133 *val = (data >> ((where & 3) << 3)) & 0xff;
134 else if (size == 2)
135 *val = (data >> ((where & 3) << 3)) & 0xffff;
136 else
137 *val = data;
138
139 return PCIBIOS_SUCCESSFUL;
140}
141
142static int bcm1480_pcibios_write(struct pci_bus *bus, unsigned int devfn,
143 int where, int size, u32 val)
144{
145 u32 cfgaddr = CFGADDR(bus, devfn, where);
146 u32 data = 0;
147
148 if ((size == 2) && (where & 1))
149 return PCIBIOS_BAD_REGISTER_NUMBER;
150 else if ((size == 4) && (where & 3))
151 return PCIBIOS_BAD_REGISTER_NUMBER;
152
153 if (!bcm1480_pci_can_access(bus, devfn))
154 return PCIBIOS_BAD_REGISTER_NUMBER;
155
156 data = READCFG32(cfgaddr);
157
158 if (size == 1)
159 data = (data & ~(0xff << ((where & 3) << 3))) |
160 (val << ((where & 3) << 3));
161 else if (size == 2)
162 data = (data & ~(0xffff << ((where & 3) << 3))) |
163 (val << ((where & 3) << 3));
164 else
165 data = val;
166
167 WRITECFG32(cfgaddr, data);
168
169 return PCIBIOS_SUCCESSFUL;
170}
171
172struct pci_ops bcm1480_pci_ops = {
173 bcm1480_pcibios_read,
174 bcm1480_pcibios_write,
175};
176
177static struct resource bcm1480_mem_resource = {
178 .name = "BCM1480 PCI MEM",
179 .start = 0x30000000UL,
180 .end = 0x3fffffffUL,
181 .flags = IORESOURCE_MEM,
182};
183
184static struct resource bcm1480_io_resource = {
185 .name = "BCM1480 PCI I/O",
186 .start = 0x2c000000UL,
187 .end = 0x2dffffffUL,
188 .flags = IORESOURCE_IO,
189};
190
191struct pci_controller bcm1480_controller = {
192 .pci_ops = &bcm1480_pci_ops,
193 .mem_resource = &bcm1480_mem_resource,
194 .io_resource = &bcm1480_io_resource,
195};
196
197
198static int __init bcm1480_pcibios_init(void)
199{
200 uint32_t cmdreg;
201 uint64_t reg;
202 extern int pci_probe_only;
203
204 /* CFE will assign PCI resources */
205 pci_probe_only = 1;
206
207 /* Avoid ISA compat ranges. */
208 PCIBIOS_MIN_IO = 0x00008000UL;
209 PCIBIOS_MIN_MEM = 0x01000000UL;
210
211 /* Set I/O resource limits. - unlimited for now to accomodate HT */
212 ioport_resource.end = 0xffffffffUL;
213 iomem_resource.end = 0xffffffffUL;
214
215 cfg_space = ioremap(A_BCM1480_PHYS_PCI_CFG_MATCH_BITS, 16*1024*1024);
216
217 /*
218 * See if the PCI bus has been configured by the firmware.
219 */
220 reg = *((volatile uint64_t *) IOADDR(A_SCD_SYSTEM_CFG));
221 if (!(reg & M_BCM1480_SYS_PCI_HOST)) {
222 bcm1480_bus_status |= PCI_DEVICE_MODE;
223 } else {
224 cmdreg = READCFG32(CFGOFFSET(0, PCI_DEVFN(PCI_BRIDGE_DEVICE, 0),
225 PCI_COMMAND));
226 if (!(cmdreg & PCI_COMMAND_MASTER)) {
227 printk
228 ("PCI: Skipping PCI probe. Bus is not initialized.\n");
229 iounmap(cfg_space);
230 return 1; /* XXX */
231 }
232 bcm1480_bus_status |= PCI_BUS_ENABLED;
233 }
234
235 /* turn on ExpMemEn */
236 cmdreg = READCFG32(CFGOFFSET(0, PCI_DEVFN(PCI_BRIDGE_DEVICE, 0), 0x40));
237 printk("PCIFeatureCtrl = %x\n", cmdreg);
238 WRITECFG32(CFGOFFSET(0, PCI_DEVFN(PCI_BRIDGE_DEVICE, 0), 0x40),
239 cmdreg | 0x10);
240 cmdreg = READCFG32(CFGOFFSET(0, PCI_DEVFN(PCI_BRIDGE_DEVICE, 0), 0x40));
241 printk("PCIFeatureCtrl = %x\n", cmdreg);
242
243 /*
244 * Establish mappings in KSEG2 (kernel virtual) to PCI I/O
245 * space. Use "match bytes" policy to make everything look
246 * little-endian. So, you need to also set
247 * CONFIG_SWAP_IO_SPACE, but this is the combination that
248 * works correctly with most of Linux's drivers.
249 * XXX ehs: Should this happen in PCI Device mode?
250 */
251
252 set_io_port_base((unsigned long)
253 ioremap(A_BCM1480_PHYS_PCI_IO_MATCH_BYTES, 65536));
254 isa_slot_offset = (unsigned long)
255 ioremap(A_BCM1480_PHYS_PCI_MEM_MATCH_BYTES, 1024*1024);
256
257 register_pci_controller(&bcm1480_controller);
258
259#ifdef CONFIG_VGA_CONSOLE
260 take_over_console(&vga_con,0,MAX_NR_CONSOLES-1,1);
261#endif
262 return 0;
263}
264
265arch_initcall(bcm1480_pcibios_init);
diff --git a/arch/mips/pci/pci-bcm1480ht.c b/arch/mips/pci/pci-bcm1480ht.c
new file mode 100644
index 000000000000..aca4a2e7a1c6
--- /dev/null
+++ b/arch/mips/pci/pci-bcm1480ht.c
@@ -0,0 +1,224 @@
1/*
2 * Copyright (C) 2001,2002,2005 Broadcom Corporation
3 * Copyright (C) 2004 by Ralf Baechle (ralf@linux-mips.org)
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 */
19
20/*
21 * BCM1480/1455-specific HT support (looking like PCI)
22 *
23 * This module provides the glue between Linux's PCI subsystem
24 * and the hardware. We basically provide glue for accessing
25 * configuration space, and set up the translation for I/O
26 * space accesses.
27 *
28 * To access configuration space, we use ioremap. In the 32-bit
29 * kernel, this consumes either 4 or 8 page table pages, and 16MB of
30 * kernel mapped memory. Hopefully neither of these should be a huge
31 * problem.
32 *
33 */
34#include <linux/config.h>
35#include <linux/types.h>
36#include <linux/pci.h>
37#include <linux/kernel.h>
38#include <linux/init.h>
39#include <linux/mm.h>
40#include <linux/console.h>
41#include <linux/tty.h>
42
43#include <asm/sibyte/bcm1480_regs.h>
44#include <asm/sibyte/bcm1480_scd.h>
45#include <asm/sibyte/board.h>
46#include <asm/io.h>
47
48/*
49 * Macros for calculating offsets into config space given a device
50 * structure or dev/fun/reg
51 */
52#define CFGOFFSET(bus,devfn,where) (((bus)<<16)+((devfn)<<8)+(where))
53#define CFGADDR(bus,devfn,where) CFGOFFSET((bus)->number,(devfn),where)
54
55static void *ht_cfg_space;
56
57#define PCI_BUS_ENABLED 1
58#define PCI_DEVICE_MODE 2
59
60static int bcm1480ht_bus_status = 0;
61
62#define PCI_BRIDGE_DEVICE 0
63#define HT_BRIDGE_DEVICE 1
64
65/*
66 * HT's level-sensitive interrupts require EOI, which is generated
67 * through a 4MB memory-mapped region
68 */
69unsigned long ht_eoi_space;
70
71/*
72 * Read/write 32-bit values in config space.
73 */
74static inline u32 READCFG32(u32 addr)
75{
76 return *(u32 *)(ht_cfg_space + (addr&~3));
77}
78
79static inline void WRITECFG32(u32 addr, u32 data)
80{
81 *(u32 *)(ht_cfg_space + (addr & ~3)) = data;
82}
83
84/*
85 * Some checks before doing config cycles:
86 * In PCI Device Mode, hide everything on bus 0 except the LDT host
87 * bridge. Otherwise, access is controlled by bridge MasterEn bits.
88 */
89static int bcm1480ht_can_access(struct pci_bus *bus, int devfn)
90{
91 u32 devno;
92
93 if (!(bcm1480ht_bus_status & (PCI_BUS_ENABLED | PCI_DEVICE_MODE)))
94 return 0;
95
96 if (bus->number == 0) {
97 devno = PCI_SLOT(devfn);
98 if (bcm1480ht_bus_status & PCI_DEVICE_MODE)
99 return 0;
100 }
101 return 1;
102}
103
104/*
105 * Read/write access functions for various sizes of values
106 * in config space. Return all 1's for disallowed accesses
107 * for a kludgy but adequate simulation of master aborts.
108 */
109
110static int bcm1480ht_pcibios_read(struct pci_bus *bus, unsigned int devfn,
111 int where, int size, u32 * val)
112{
113 u32 data = 0;
114
115 if ((size == 2) && (where & 1))
116 return PCIBIOS_BAD_REGISTER_NUMBER;
117 else if ((size == 4) && (where & 3))
118 return PCIBIOS_BAD_REGISTER_NUMBER;
119
120 if (bcm1480ht_can_access(bus, devfn))
121 data = READCFG32(CFGADDR(bus, devfn, where));
122 else
123 data = 0xFFFFFFFF;
124
125 if (size == 1)
126 *val = (data >> ((where & 3) << 3)) & 0xff;
127 else if (size == 2)
128 *val = (data >> ((where & 3) << 3)) & 0xffff;
129 else
130 *val = data;
131
132 return PCIBIOS_SUCCESSFUL;
133}
134
135static int bcm1480ht_pcibios_write(struct pci_bus *bus, unsigned int devfn,
136 int where, int size, u32 val)
137{
138 u32 cfgaddr = CFGADDR(bus, devfn, where);
139 u32 data = 0;
140
141 if ((size == 2) && (where & 1))
142 return PCIBIOS_BAD_REGISTER_NUMBER;
143 else if ((size == 4) && (where & 3))
144 return PCIBIOS_BAD_REGISTER_NUMBER;
145
146 if (!bcm1480ht_can_access(bus, devfn))
147 return PCIBIOS_BAD_REGISTER_NUMBER;
148
149 data = READCFG32(cfgaddr);
150
151 if (size == 1)
152 data = (data & ~(0xff << ((where & 3) << 3))) |
153 (val << ((where & 3) << 3));
154 else if (size == 2)
155 data = (data & ~(0xffff << ((where & 3) << 3))) |
156 (val << ((where & 3) << 3));
157 else
158 data = val;
159
160 WRITECFG32(cfgaddr, data);
161
162 return PCIBIOS_SUCCESSFUL;
163}
164
165static int bcm1480ht_pcibios_get_busno(void)
166{
167 return 0;
168}
169
170struct pci_ops bcm1480ht_pci_ops = {
171 .read = bcm1480ht_pcibios_read,
172 .write = bcm1480ht_pcibios_write,
173};
174
175static struct resource bcm1480ht_mem_resource = {
176 .name = "BCM1480 HT MEM",
177 .start = 0x40000000UL,
178 .end = 0x5fffffffUL,
179 .flags = IORESOURCE_MEM,
180};
181
182static struct resource bcm1480ht_io_resource = {
183 .name = "BCM1480 HT I/O",
184 .start = 0x00000000UL,
185 .end = 0x01ffffffUL,
186 .flags = IORESOURCE_IO,
187};
188
189struct pci_controller bcm1480ht_controller = {
190 .pci_ops = &bcm1480ht_pci_ops,
191 .mem_resource = &bcm1480ht_mem_resource,
192 .io_resource = &bcm1480ht_io_resource,
193 .index = 1,
194 .get_busno = bcm1480ht_pcibios_get_busno,
195};
196
197static int __init bcm1480ht_pcibios_init(void)
198{
199 uint32_t cmdreg;
200
201 ht_cfg_space = ioremap(A_BCM1480_PHYS_HT_CFG_MATCH_BITS, 16*1024*1024);
202
203 /*
204 * See if the PCI bus has been configured by the firmware.
205 */
206 cmdreg = READCFG32(CFGOFFSET(0, PCI_DEVFN(PCI_BRIDGE_DEVICE, 0),
207 PCI_COMMAND));
208 if (!(cmdreg & PCI_COMMAND_MASTER)) {
209 printk("HT: Skipping HT probe. Bus is not initialized.\n");
210 iounmap(ht_cfg_space);
211 return 1; /* XXX */
212 }
213 bcm1480ht_bus_status |= PCI_BUS_ENABLED;
214
215 ht_eoi_space = (unsigned long)
216 ioremap(A_BCM1480_PHYS_HT_SPECIAL_MATCH_BYTES,
217 4 * 1024 * 1024);
218
219 register_pci_controller(&bcm1480ht_controller);
220
221 return 0;
222}
223
224arch_initcall(bcm1480ht_pcibios_init);
diff --git a/arch/mips/pci/pci-ip27.c b/arch/mips/pci/pci-ip27.c
index 068e0e508e15..efc96ce99eeb 100644
--- a/arch/mips/pci/pci-ip27.c
+++ b/arch/mips/pci/pci-ip27.c
@@ -485,5 +485,12 @@ static void __init pci_fixup_ioc3(struct pci_dev *d)
485 pci_disable_swapping(d); 485 pci_disable_swapping(d);
486} 486}
487 487
488int pcibus_to_node(struct pci_bus *bus)
489{
490 struct bridge_controller *bc = BRIDGE_CONTROLLER(bus);
491
492 return bc->nasid;
493}
494
488DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SGI, PCI_DEVICE_ID_SGI_IOC3, 495DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SGI, PCI_DEVICE_ID_SGI_IOC3,
489 pci_fixup_ioc3); 496 pci_fixup_ioc3);
diff --git a/arch/mips/pci/pci-ip32.c b/arch/mips/pci/pci-ip32.c
index 000dc6af6cd3..180af89bcb1e 100644
--- a/arch/mips/pci/pci-ip32.c
+++ b/arch/mips/pci/pci-ip32.c
@@ -136,7 +136,9 @@ static int __init mace_init(void)
136 BUG_ON(request_irq(MACE_PCI_BRIDGE_IRQ, macepci_error, 0, 136 BUG_ON(request_irq(MACE_PCI_BRIDGE_IRQ, macepci_error, 0,
137 "MACE PCI error", NULL)); 137 "MACE PCI error", NULL));
138 138
139 ioport_resource.end = mace_pci_io_resource.end; 139 iomem_resource = mace_pci_mem_resource;
140 ioport_resource = mace_pci_io_resource;
141
140 register_pci_controller(&mace_pci_controller); 142 register_pci_controller(&mace_pci_controller);
141 143
142 return 0; 144 return 0;
diff --git a/arch/mips/pci/pci-lasat.c b/arch/mips/pci/pci-lasat.c
index ae3cc4b254b5..88fb191ad2eb 100644
--- a/arch/mips/pci/pci-lasat.c
+++ b/arch/mips/pci/pci-lasat.c
@@ -7,12 +7,8 @@
7 */ 7 */
8#include <linux/kernel.h> 8#include <linux/kernel.h>
9#include <linux/init.h> 9#include <linux/init.h>
10#include <linux/interrupt.h>
11#include <linux/pci.h> 10#include <linux/pci.h>
12#include <linux/types.h> 11#include <linux/types.h>
13#include <linux/interrupt.h>
14#include <linux/pci.h>
15#include <linux/delay.h>
16#include <asm/bootinfo.h> 12#include <asm/bootinfo.h>
17 13
18extern struct pci_ops nile4_pci_ops; 14extern struct pci_ops nile4_pci_ops;
@@ -20,14 +16,14 @@ extern struct pci_ops gt64120_pci_ops;
20static struct resource lasat_pci_mem_resource = { 16static struct resource lasat_pci_mem_resource = {
21 .name = "LASAT PCI MEM", 17 .name = "LASAT PCI MEM",
22 .start = 0x18000000, 18 .start = 0x18000000,
23 .end = 0x19FFFFFF, 19 .end = 0x19ffffff,
24 .flags = IORESOURCE_MEM, 20 .flags = IORESOURCE_MEM,
25}; 21};
26 22
27static struct resource lasat_pci_io_resource = { 23static struct resource lasat_pci_io_resource = {
28 .name = "LASAT PCI IO", 24 .name = "LASAT PCI IO",
29 .start = 0x1a000000, 25 .start = 0x1a000000,
30 .end = 0x1bFFFFFF, 26 .end = 0x1bffffff,
31 .flags = IORESOURCE_IO, 27 .flags = IORESOURCE_IO,
32}; 28};
33 29
@@ -38,23 +34,25 @@ static struct pci_controller lasat_pci_controller = {
38 34
39static int __init lasat_pci_setup(void) 35static int __init lasat_pci_setup(void)
40{ 36{
41 printk("PCI: starting\n"); 37 printk("PCI: starting\n");
42 38
43 switch (mips_machtype) { 39 switch (mips_machtype) {
44 case MACH_LASAT_100: 40 case MACH_LASAT_100:
45 lasat_pci_controller.pci_ops = &gt64120_pci_ops; 41 lasat_pci_controller.pci_ops = &gt64120_pci_ops;
46 break; 42 break;
47 case MACH_LASAT_200: 43 case MACH_LASAT_200:
48 lasat_pci_controller.pci_ops = &nile4_pci_ops; 44 lasat_pci_controller.pci_ops = &nile4_pci_ops;
49 break; 45 break;
50 default: 46 default:
51 panic("pcibios_init: mips_machtype incorrect"); 47 panic("pcibios_init: mips_machtype incorrect");
52 } 48 }
53 49
54 register_pci_controller(&lasat_pci_controller); 50 register_pci_controller(&lasat_pci_controller);
55 return 0; 51
52 return 0;
56} 53}
57early_initcall(lasat_pci_setup); 54
55arch_initcall(lasat_pci_setup);
58 56
59#define LASATINT_ETH1 0 57#define LASATINT_ETH1 0
60#define LASATINT_ETH0 1 58#define LASATINT_ETH0 1
@@ -68,24 +66,22 @@ early_initcall(lasat_pci_setup);
68 66
69int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin) 67int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
70{ 68{
71 switch (slot) { 69 switch (slot) {
72 case 1: 70 case 1:
73 return LASATINT_PCIA; /* Expansion Module 0 */ 71 case 2:
74 case 2: 72 case 3:
75 return LASATINT_PCIB; /* Expansion Module 1 */ 73 return LASATINT_PCIA + (((slot-1) + (pin-1)) % 4);
76 case 3: 74 case 4:
77 return LASATINT_PCIC; /* Expansion Module 2 */ 75 return LASATINT_ETH1; /* Ethernet 1 (LAN 2) */
78 case 4: 76 case 5:
79 return LASATINT_ETH1; /* Ethernet 1 (LAN 2) */ 77 return LASATINT_ETH0; /* Ethernet 0 (LAN 1) */
80 case 5: 78 case 6:
81 return LASATINT_ETH0; /* Ethernet 0 (LAN 1) */ 79 return LASATINT_HDC; /* IDE controller */
82 case 6: 80 default:
83 return LASATINT_HDC; /* IDE controller */ 81 return 0xff; /* Illegal */
84 default: 82 }
85 return 0xff; /* Illegal */
86 }
87 83
88 return -1; 84 return -1;
89} 85}
90 86
91/* Do platform specific device initialization at pci_enable_device() time */ 87/* Do platform specific device initialization at pci_enable_device() time */
diff --git a/arch/mips/pci/pci.c b/arch/mips/pci/pci.c
index a8d499b0a36f..21402ffd7c98 100644
--- a/arch/mips/pci/pci.c
+++ b/arch/mips/pci/pci.c
@@ -127,15 +127,20 @@ static int __init pcibios_init(void)
127 if (!hose->iommu) 127 if (!hose->iommu)
128 PCI_DMA_BUS_IS_PHYS = 1; 128 PCI_DMA_BUS_IS_PHYS = 1;
129 129
130 if (hose->get_busno && pci_probe_only)
131 next_busno = (*hose->get_busno)();
132
130 bus = pci_scan_bus(next_busno, hose->pci_ops, hose); 133 bus = pci_scan_bus(next_busno, hose->pci_ops, hose);
131 hose->bus = bus; 134 hose->bus = bus;
132 hose->need_domain_info = need_domain_info; 135 hose->need_domain_info = need_domain_info;
133 next_busno = bus->subordinate + 1; 136 if (bus) {
134 /* Don't allow 8-bit bus number overflow inside the hose - 137 next_busno = bus->subordinate + 1;
135 reserve some space for bridges. */ 138 /* Don't allow 8-bit bus number overflow inside the hose -
136 if (next_busno > 224) { 139 reserve some space for bridges. */
137 next_busno = 0; 140 if (next_busno > 224) {
138 need_domain_info = 1; 141 next_busno = 0;
142 need_domain_info = 1;
143 }
139 } 144 }
140 continue; 145 continue;
141 146
@@ -164,7 +169,7 @@ static int pcibios_enable_resources(struct pci_dev *dev, int mask)
164 169
165 pci_read_config_word(dev, PCI_COMMAND, &cmd); 170 pci_read_config_word(dev, PCI_COMMAND, &cmd);
166 old_cmd = cmd; 171 old_cmd = cmd;
167 for(idx=0; idx<6; idx++) { 172 for (idx=0; idx < PCI_NUM_RESOURCES; idx++) {
168 /* Only set up the requested stuff */ 173 /* Only set up the requested stuff */
169 if (!(mask & (1<<idx))) 174 if (!(mask & (1<<idx)))
170 continue; 175 continue;
diff --git a/arch/mips/philips/pnx8550/common/Kconfig b/arch/mips/philips/pnx8550/common/Kconfig
new file mode 100644
index 000000000000..072572d173cc
--- /dev/null
+++ b/arch/mips/philips/pnx8550/common/Kconfig
@@ -0,0 +1 @@
# Place holder
diff --git a/arch/mips/philips/pnx8550/common/Makefile b/arch/mips/philips/pnx8550/common/Makefile
new file mode 100644
index 000000000000..6e38f3bc443c
--- /dev/null
+++ b/arch/mips/philips/pnx8550/common/Makefile
@@ -0,0 +1,27 @@
1#
2# Per Hallsmark, per.hallsmark@mvista.com
3#
4# ########################################################################
5#
6# This program is free software; you can distribute it and/or modify it
7# under the terms of the GNU General Public License (Version 2) as
8# published by the Free Software Foundation.
9#
10# This program is distributed in the hope it will be useful, but WITHOUT
11# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13# for more details.
14#
15# You should have received a copy of the GNU General Public License along
16# with this program; if not, write to the Free Software Foundation, Inc.,
17# 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
18#
19# #######################################################################
20#
21# Makefile for the PNX8550 specific kernel interface routines
22# under Linux.
23#
24
25obj-y := setup.o prom.o mipsIRQ.o int.o reset.o time.o proc.o platform.o
26obj-$(CONFIG_PCI) += pci.o
27obj-$(CONFIG_KGDB) += gdb_hook.o
diff --git a/arch/mips/philips/pnx8550/common/gdb_hook.c b/arch/mips/philips/pnx8550/common/gdb_hook.c
new file mode 100644
index 000000000000..ad4624f6d9bc
--- /dev/null
+++ b/arch/mips/philips/pnx8550/common/gdb_hook.c
@@ -0,0 +1,109 @@
1/*
2 * Carsten Langgaard, carstenl@mips.com
3 * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved.
4 *
5 * ########################################################################
6 *
7 * This program is free software; you can distribute it and/or modify it
8 * under the terms of the GNU General Public License (Version 2) as
9 * published by the Free Software Foundation.
10 *
11 * This program is distributed in the hope it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * for more details.
15 *
16 * You should have received a copy of the GNU General Public License along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
19 *
20 * ########################################################################
21 *
22 * This is the interface to the remote debugger stub.
23 *
24 */
25#include <linux/types.h>
26#include <linux/serial.h>
27#include <linux/serialP.h>
28#include <linux/serial_reg.h>
29#include <linux/serial_ip3106.h>
30
31#include <asm/serial.h>
32#include <asm/io.h>
33
34#include <uart.h>
35
36static struct serial_state rs_table[IP3106_NR_PORTS] = {
37};
38static struct async_struct kdb_port_info = {0};
39
40void rs_kgdb_hook(int tty_no)
41{
42 struct serial_state *ser = &rs_table[tty_no];
43
44 kdb_port_info.state = ser;
45 kdb_port_info.magic = SERIAL_MAGIC;
46 kdb_port_info.port = tty_no;
47 kdb_port_info.flags = ser->flags;
48
49 /*
50 * Clear all interrupts
51 */
52 /* Clear all the transmitter FIFO counters (pointer and status) */
53 ip3106_lcr(UART_BASE, tty_no) |= IP3106_UART_LCR_TX_RST;
54 /* Clear all the receiver FIFO counters (pointer and status) */
55 ip3106_lcr(UART_BASE, tty_no) |= IP3106_UART_LCR_RX_RST;
56 /* Clear all interrupts */
57 ip3106_iclr(UART_BASE, tty_no) = IP3106_UART_INT_ALLRX |
58 IP3106_UART_INT_ALLTX;
59
60 /*
61 * Now, initialize the UART
62 */
63 ip3106_lcr(UART_BASE, tty_no) = IP3106_UART_LCR_8BIT;
64 ip3106_baud(UART_BASE, tty_no) = 5; // 38400 Baud
65}
66
67int putDebugChar(char c)
68{
69 /* Wait until FIFO not full */
70 while (((ip3106_fifo(UART_BASE, kdb_port_info.port) & IP3106_UART_FIFO_TXFIFO) >> 16) >= 16)
71 ;
72 /* Send one char */
73 ip3106_fifo(UART_BASE, kdb_port_info.port) = c;
74
75 return 1;
76}
77
78char getDebugChar(void)
79{
80 char ch;
81
82 /* Wait until there is a char in the FIFO */
83 while (!((ip3106_fifo(UART_BASE, kdb_port_info.port) &
84 IP3106_UART_FIFO_RXFIFO) >> 8))
85 ;
86 /* Read one char */
87 ch = ip3106_fifo(UART_BASE, kdb_port_info.port) &
88 IP3106_UART_FIFO_RBRTHR;
89 /* Advance the RX FIFO read pointer */
90 ip3106_lcr(UART_BASE, kdb_port_info.port) |= IP3106_UART_LCR_RX_NEXT;
91 return (ch);
92}
93
94void rs_disable_debug_interrupts(void)
95{
96 ip3106_ien(UART_BASE, kdb_port_info.port) = 0; /* Disable all interrupts */
97}
98
99void rs_enable_debug_interrupts(void)
100{
101 /* Clear all the transmitter FIFO counters (pointer and status) */
102 ip3106_lcr(UART_BASE, kdb_port_info.port) |= IP3106_UART_LCR_TX_RST;
103 /* Clear all the receiver FIFO counters (pointer and status) */
104 ip3106_lcr(UART_BASE, kdb_port_info.port) |= IP3106_UART_LCR_RX_RST;
105 /* Clear all interrupts */
106 ip3106_iclr(UART_BASE, kdb_port_info.port) = IP3106_UART_INT_ALLRX |
107 IP3106_UART_INT_ALLTX;
108 ip3106_ien(UART_BASE, kdb_port_info.port) = IP3106_UART_INT_ALLRX; /* Enable RX interrupts */
109}
diff --git a/arch/mips/philips/pnx8550/common/int.c b/arch/mips/philips/pnx8550/common/int.c
new file mode 100644
index 000000000000..546144988bf5
--- /dev/null
+++ b/arch/mips/philips/pnx8550/common/int.c
@@ -0,0 +1,293 @@
1/*
2 *
3 * Copyright (C) 2005 Embedded Alley Solutions, Inc
4 * Ported to 2.6.
5 *
6 * Per Hallsmark, per.hallsmark@mvista.com
7 * Copyright (C) 2000, 2001 MIPS Technologies, Inc.
8 * Copyright (C) 2001 Ralf Baechle
9 *
10 * Cleaned up and bug fixing: Pete Popov, ppopov@embeddedalley.com
11 *
12 * This program is free software; you can distribute it and/or modify it
13 * under the terms of the GNU General Public License (Version 2) as
14 * published by the Free Software Foundation.
15 *
16 * This program is distributed in the hope it will be useful, but WITHOUT
17 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19 * for more details.
20 *
21 * You should have received a copy of the GNU General Public License along
22 * with this program; if not, write to the Free Software Foundation, Inc.,
23 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
24 *
25 */
26#include <linux/config.h>
27#include <linux/init.h>
28#include <linux/irq.h>
29#include <linux/sched.h>
30#include <linux/slab.h>
31#include <linux/interrupt.h>
32#include <linux/kernel_stat.h>
33#include <linux/random.h>
34#include <linux/module.h>
35
36#include <asm/io.h>
37#include <asm/gdb-stub.h>
38#include <int.h>
39#include <uart.h>
40
41extern asmlinkage void cp0_irqdispatch(void);
42
43static DEFINE_SPINLOCK(irq_lock);
44
45/* default prio for interrupts */
46/* first one is a no-no so therefore always prio 0 (disabled) */
47static char gic_prio[PNX8550_INT_GIC_TOTINT] = {
48 0, 1, 1, 1, 1, 15, 1, 1, 1, 1, // 0 - 9
49 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 10 - 19
50 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 20 - 29
51 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 30 - 39
52 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 40 - 49
53 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, // 50 - 59
54 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 60 - 69
55 1 // 70
56};
57
58void hw0_irqdispatch(int irq, struct pt_regs *regs)
59{
60 /* find out which interrupt */
61 irq = PNX8550_GIC_VECTOR_0 >> 3;
62
63 if (irq == 0) {
64 printk("hw0_irqdispatch: irq 0, spurious interrupt?\n");
65 return;
66 }
67 do_IRQ(PNX8550_INT_GIC_MIN + irq, regs);
68}
69
70
71void timer_irqdispatch(int irq, struct pt_regs *regs)
72{
73 irq = (0x01c0 & read_c0_config7()) >> 6;
74
75 if (irq == 0) {
76 printk("timer_irqdispatch: irq 0, spurious interrupt?\n");
77 return;
78 }
79
80 if (irq & 0x1) {
81 do_IRQ(PNX8550_INT_TIMER1, regs);
82 }
83 if (irq & 0x2) {
84 do_IRQ(PNX8550_INT_TIMER2, regs);
85 }
86 if (irq & 0x4) {
87 do_IRQ(PNX8550_INT_TIMER3, regs);
88 }
89}
90
91static inline void modify_cp0_intmask(unsigned clr_mask, unsigned set_mask)
92{
93 unsigned long status = read_c0_status();
94
95 status &= ~((clr_mask & 0xFF) << 8);
96 status |= (set_mask & 0xFF) << 8;
97
98 write_c0_status(status);
99}
100
101static inline void mask_gic_int(unsigned int irq_nr)
102{
103 /* interrupt disabled, bit 26(WE_ENABLE)=1 and bit 16(enable)=0 */
104 PNX8550_GIC_REQ(irq_nr) = 1<<28; /* set priority to 0 */
105}
106
107static inline void unmask_gic_int(unsigned int irq_nr)
108{
109 /* set prio mask to lower four bits and enable interrupt */
110 PNX8550_GIC_REQ(irq_nr) = (1<<26 | 1<<16) | (1<<28) | gic_prio[irq_nr];
111}
112
113static inline void mask_irq(unsigned int irq_nr)
114{
115 if ((PNX8550_INT_CP0_MIN <= irq_nr) && (irq_nr <= PNX8550_INT_CP0_MAX)) {
116 modify_cp0_intmask(1 << irq_nr, 0);
117 } else if ((PNX8550_INT_GIC_MIN <= irq_nr) &&
118 (irq_nr <= PNX8550_INT_GIC_MAX)) {
119 mask_gic_int(irq_nr - PNX8550_INT_GIC_MIN);
120 } else if ((PNX8550_INT_TIMER_MIN <= irq_nr) &&
121 (irq_nr <= PNX8550_INT_TIMER_MAX)) {
122 modify_cp0_intmask(1 << 7, 0);
123 } else {
124 printk("mask_irq: irq %d doesn't exist!\n", irq_nr);
125 }
126}
127
128static inline void unmask_irq(unsigned int irq_nr)
129{
130 if ((PNX8550_INT_CP0_MIN <= irq_nr) && (irq_nr <= PNX8550_INT_CP0_MAX)) {
131 modify_cp0_intmask(0, 1 << irq_nr);
132 } else if ((PNX8550_INT_GIC_MIN <= irq_nr) &&
133 (irq_nr <= PNX8550_INT_GIC_MAX)) {
134 unmask_gic_int(irq_nr - PNX8550_INT_GIC_MIN);
135 } else if ((PNX8550_INT_TIMER_MIN <= irq_nr) &&
136 (irq_nr <= PNX8550_INT_TIMER_MAX)) {
137 modify_cp0_intmask(0, 1 << 7);
138 } else {
139 printk("mask_irq: irq %d doesn't exist!\n", irq_nr);
140 }
141}
142
143#define pnx8550_disable pnx8550_ack
144static void pnx8550_ack(unsigned int irq)
145{
146 unsigned long flags;
147
148 spin_lock_irqsave(&irq_lock, flags);
149 mask_irq(irq);
150 spin_unlock_irqrestore(&irq_lock, flags);
151}
152
153#define pnx8550_enable pnx8550_unmask
154static void pnx8550_unmask(unsigned int irq)
155{
156 unsigned long flags;
157
158 spin_lock_irqsave(&irq_lock, flags);
159 unmask_irq(irq);
160 spin_unlock_irqrestore(&irq_lock, flags);
161}
162
163static unsigned int startup_irq(unsigned int irq_nr)
164{
165 pnx8550_unmask(irq_nr);
166 return 0;
167}
168
169static void shutdown_irq(unsigned int irq_nr)
170{
171 pnx8550_ack(irq_nr);
172 return;
173}
174
175int pnx8550_set_gic_priority(int irq, int priority)
176{
177 int gic_irq = irq-PNX8550_INT_GIC_MIN;
178 int prev_priority = PNX8550_GIC_REQ(gic_irq) & 0xf;
179
180 gic_prio[gic_irq] = priority;
181 PNX8550_GIC_REQ(gic_irq) |= (0x10000000 | gic_prio[gic_irq]);
182
183 return prev_priority;
184}
185
186static inline void mask_and_ack_level_irq(unsigned int irq)
187{
188 pnx8550_disable(irq);
189 return;
190}
191
192static void end_irq(unsigned int irq)
193{
194 if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS))) {
195 pnx8550_enable(irq);
196 }
197}
198
199static struct hw_interrupt_type level_irq_type = {
200 .typename = "PNX Level IRQ",
201 .startup = startup_irq,
202 .shutdown = shutdown_irq,
203 .enable = pnx8550_enable,
204 .disable = pnx8550_disable,
205 .ack = mask_and_ack_level_irq,
206 .end = end_irq,
207};
208
209static struct irqaction gic_action = {
210 .handler = no_action,
211 .flags = SA_INTERRUPT,
212 .name = "GIC",
213};
214
215static struct irqaction timer_action = {
216 .handler = no_action,
217 .flags = SA_INTERRUPT,
218 .name = "Timer",
219};
220
221void __init arch_init_irq(void)
222{
223 int i;
224 int configPR;
225
226 /* init of cp0 interrupts */
227 set_except_vector(0, cp0_irqdispatch);
228
229 for (i = 0; i < PNX8550_INT_CP0_TOTINT; i++) {
230 irq_desc[i].handler = &level_irq_type;
231 pnx8550_ack(i); /* mask the irq just in case */
232 }
233
234 /* init of GIC/IPC interrupts */
235 /* should be done before cp0 since cp0 init enables the GIC int */
236 for (i = PNX8550_INT_GIC_MIN; i <= PNX8550_INT_GIC_MAX; i++) {
237 int gic_int_line = i - PNX8550_INT_GIC_MIN;
238 if (gic_int_line == 0 )
239 continue; // don't fiddle with int 0
240 /*
241 * enable change of TARGET, ENABLE and ACTIVE_LOW bits
242 * set TARGET 0 to route through hw0 interrupt
243 * set ACTIVE_LOW 0 active high (correct?)
244 *
245 * We really should setup an interrupt description table
246 * to do this nicely.
247 * Note, PCI INTA is active low on the bus, but inverted
248 * in the GIC, so to us it's active high.
249 */
250#ifdef CONFIG_PNX8550_V2PCI
251 if (gic_int_line == (PNX8550_INT_GPIO0 - PNX8550_INT_GIC_MIN)) {
252 /* PCI INT through gpio 8, which is setup in
253 * pnx8550_setup.c and routed to GPIO
254 * Interrupt Level 0 (GPIO Connection 58).
255 * Set it active low. */
256
257 PNX8550_GIC_REQ(gic_int_line) = 0x1E020000;
258 } else
259#endif
260 {
261 PNX8550_GIC_REQ(i - PNX8550_INT_GIC_MIN) = 0x1E000000;
262 }
263
264 /* mask/priority is still 0 so we will not get any
265 * interrupts until it is unmasked */
266
267 irq_desc[i].handler = &level_irq_type;
268 }
269
270 /* Priority level 0 */
271 PNX8550_GIC_PRIMASK_0 = PNX8550_GIC_PRIMASK_1 = 0;
272
273 /* Set int vector table address */
274 PNX8550_GIC_VECTOR_0 = PNX8550_GIC_VECTOR_1 = 0;
275
276 irq_desc[MIPS_CPU_GIC_IRQ].handler = &level_irq_type;
277 setup_irq(MIPS_CPU_GIC_IRQ, &gic_action);
278
279 /* init of Timer interrupts */
280 for (i = PNX8550_INT_TIMER_MIN; i <= PNX8550_INT_TIMER_MAX; i++) {
281 irq_desc[i].handler = &level_irq_type;
282 }
283
284 /* Stop Timer 1-3 */
285 configPR = read_c0_config7();
286 configPR |= 0x00000038;
287 write_c0_config7(configPR);
288
289 irq_desc[MIPS_CPU_TIMER_IRQ].handler = &level_irq_type;
290 setup_irq(MIPS_CPU_TIMER_IRQ, &timer_action);
291}
292
293EXPORT_SYMBOL(pnx8550_set_gic_priority);
diff --git a/arch/mips/philips/pnx8550/common/mipsIRQ.S b/arch/mips/philips/pnx8550/common/mipsIRQ.S
new file mode 100644
index 000000000000..338bffda3fab
--- /dev/null
+++ b/arch/mips/philips/pnx8550/common/mipsIRQ.S
@@ -0,0 +1,76 @@
1/*
2 * Copyright (c) 2002 Philips, Inc. All rights.
3 * Copyright (c) 2002 Red Hat, Inc. All rights.
4 *
5 * This software may be freely redistributed under the terms of the
6 * GNU General Public License.
7 *
8 * You should have received a copy of the GNU General Public License
9 * along with this program; if not, write to the Free Software
10 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
11 *
12 * Based upon arch/mips/galileo-boards/ev64240/int-handler.S
13 *
14 */
15#include <asm/asm.h>
16#include <asm/mipsregs.h>
17#include <asm/addrspace.h>
18#include <asm/regdef.h>
19#include <asm/stackframe.h>
20
21/*
22 * cp0_irqdispatch
23 *
24 * Code to handle in-core interrupt exception.
25 */
26
27 .align 5
28 .set reorder
29 .set noat
30 NESTED(cp0_irqdispatch, PT_SIZE, sp)
31 SAVE_ALL
32 CLI
33 .set at
34 mfc0 t0,CP0_CAUSE
35 mfc0 t2,CP0_STATUS
36
37 and t0,t2
38
39 andi t1,t0,STATUSF_IP2 /* int0 hardware line */
40 bnez t1,ll_hw0_irq
41 nop
42
43 andi t1,t0,STATUSF_IP7 /* int5 hardware line */
44 bnez t1,ll_timer_irq
45 nop
46
47 /* wrong alarm or masked ... */
48
49 j spurious_interrupt
50 nop
51 END(cp0_irqdispatch)
52
53 .align 5
54 .set reorder
55ll_hw0_irq:
56 li a0,2
57 move a1,sp
58 jal hw0_irqdispatch
59 nop
60 j ret_from_irq
61 nop
62
63 .align 5
64 .set reorder
65ll_timer_irq:
66 mfc0 t3,CP0_CONFIG,7
67 andi t4,t3,0x01c0
68 beqz t4,ll_timer_out
69 nop
70 li a0,7
71 move a1,sp
72 jal timer_irqdispatch
73 nop
74
75ll_timer_out: j ret_from_irq
76 nop
diff --git a/arch/mips/philips/pnx8550/common/pci.c b/arch/mips/philips/pnx8550/common/pci.c
new file mode 100644
index 000000000000..baa6905f649f
--- /dev/null
+++ b/arch/mips/philips/pnx8550/common/pci.c
@@ -0,0 +1,133 @@
1/*
2 *
3 * BRIEF MODULE DESCRIPTION
4 *
5 * Author: source@mvista.com
6 *
7 * This program is free software; you can distribute it and/or modify it
8 * under the terms of the GNU General Public License (Version 2) as
9 * published by the Free Software Foundation.
10 *
11 * This program is distributed in the hope it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * for more details.
15 *
16 * You should have received a copy of the GNU General Public License along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
19 */
20#include <linux/types.h>
21#include <linux/pci.h>
22#include <linux/kernel.h>
23#include <linux/init.h>
24
25#include <pci.h>
26#include <glb.h>
27#include <nand.h>
28
29static struct resource pci_io_resource = {
30 "pci IO space",
31 (u32)(PNX8550_PCIIO + 0x1000), /* reserve regacy I/O space */
32 (u32)(PNX8550_PCIIO + PNX8550_PCIIO_SIZE),
33 IORESOURCE_IO
34};
35
36static struct resource pci_mem_resource = {
37 "pci memory space",
38 (u32)(PNX8550_PCIMEM),
39 (u32)(PNX8550_PCIMEM + PNX8550_PCIMEM_SIZE - 1),
40 IORESOURCE_MEM
41};
42
43extern struct pci_ops pnx8550_pci_ops;
44
45static struct pci_controller pnx8550_controller = {
46 .pci_ops = &pnx8550_pci_ops,
47 .io_resource = &pci_io_resource,
48 .mem_resource = &pci_mem_resource,
49};
50
51/* Return the total size of DRAM-memory, (RANK0 + RANK1) */
52static inline unsigned long get_system_mem_size(void)
53{
54 /* Read IP2031_RANK0_ADDR_LO */
55 unsigned long dram_r0_lo = inl(PCI_BASE | 0x65010);
56 /* Read IP2031_RANK1_ADDR_HI */
57 unsigned long dram_r1_hi = inl(PCI_BASE | 0x65018);
58
59 return dram_r1_hi - dram_r0_lo + 1;
60}
61
62static int __init pnx8550_pci_setup(void)
63{
64 int pci_mem_code;
65 int mem_size = get_system_mem_size() >> 20;
66
67 /* Clear the Global 2 Register, PCI Inta Output Enable Registers
68 Bit 1:Enable DAC Powerdown
69 -> 0:DACs are enabled and are working normally
70 1:DACs are powerdown
71 Bit 0:Enable of PCI inta output
72 -> 0 = Disable PCI inta output
73 1 = Enable PCI inta output
74 */
75 PNX8550_GLB2_ENAB_INTA_O = 0;
76
77 /* Calc the PCI mem size code */
78 if (mem_size >= 128)
79 pci_mem_code = SIZE_128M;
80 else if (mem_size >= 64)
81 pci_mem_code = SIZE_64M;
82 else if (mem_size >= 32)
83 pci_mem_code = SIZE_32M;
84 else
85 pci_mem_code = SIZE_16M;
86
87 /* Set PCI_XIO registers */
88 outl(pci_mem_resource.start, PCI_BASE | PCI_BASE1_LO);
89 outl(pci_mem_resource.end + 1, PCI_BASE | PCI_BASE1_HI);
90 outl(pci_io_resource.start, PCI_BASE | PCI_BASE2_LO);
91 outl(pci_io_resource.end, PCI_BASE | PCI_BASE2_HI);
92
93 /* Send memory transaction via PCI_BASE2 */
94 outl(0x00000001, PCI_BASE | PCI_IO);
95
96 /* Unlock the setup register */
97 outl(0xca, PCI_BASE | PCI_UNLOCKREG);
98
99 /*
100 * BAR0 of PNX8550 (pci base 10) must be zero in order for ide
101 * to work, and in order for bus_to_baddr to work without any
102 * hacks.
103 */
104 outl(0x00000000, PCI_BASE | PCI_BASE10);
105
106 /*
107 *These two bars are set by default or the boot code.
108 * However, it's safer to set them here so we're not boot
109 * code dependent.
110 */
111 outl(0x1be00000, PCI_BASE | PCI_BASE14); /* PNX MMIO */
112 outl(PNX8550_NAND_BASE_ADDR, PCI_BASE | PCI_BASE18); /* XIO */
113
114 outl(PCI_EN_TA |
115 PCI_EN_PCI2MMI |
116 PCI_EN_XIO |
117 PCI_SETUP_BASE18_SIZE(SIZE_32M) |
118 PCI_SETUP_BASE18_EN |
119 PCI_SETUP_BASE14_EN |
120 PCI_SETUP_BASE10_PREF |
121 PCI_SETUP_BASE10_SIZE(pci_mem_code) |
122 PCI_SETUP_CFGMANAGE_EN |
123 PCI_SETUP_PCIARB_EN,
124 PCI_BASE |
125 PCI_SETUP); /* PCI_SETUP */
126 outl(0x00000000, PCI_BASE | PCI_CTRL); /* PCI_CONTROL */
127
128 register_pci_controller(&pnx8550_controller);
129
130 return 0;
131}
132
133arch_initcall(pnx8550_pci_setup);
diff --git a/arch/mips/philips/pnx8550/common/platform.c b/arch/mips/philips/pnx8550/common/platform.c
new file mode 100644
index 000000000000..8aa9bd65b45e
--- /dev/null
+++ b/arch/mips/philips/pnx8550/common/platform.c
@@ -0,0 +1,135 @@
1/*
2 * Platform device support for Philips PNX8550 SoCs
3 *
4 * Copyright 2005, Embedded Alley Solutions, Inc
5 *
6 * Based on arch/mips/au1000/common/platform.c
7 * Platform device support for Au1x00 SoCs.
8 *
9 * Copyright 2004, Matt Porter <mporter@kernel.crashing.org>
10 *
11 * This file is licensed under the terms of the GNU General Public
12 * License version 2. This program is licensed "as is" without any
13 * warranty of any kind, whether express or implied.
14 */
15#include <linux/device.h>
16#include <linux/kernel.h>
17#include <linux/init.h>
18#include <linux/resource.h>
19#include <linux/serial.h>
20#include <linux/serial_ip3106.h>
21
22#include <int.h>
23#include <usb.h>
24#include <uart.h>
25
26extern struct uart_ops ip3106_pops;
27
28static struct resource pnx8550_usb_ohci_resources[] = {
29 [0] = {
30 .start = PNX8550_USB_OHCI_OP_BASE,
31 .end = PNX8550_USB_OHCI_OP_BASE +
32 PNX8550_USB_OHCI_OP_LEN,
33 .flags = IORESOURCE_MEM,
34 },
35 [1] = {
36 .start = PNX8550_INT_USB,
37 .end = PNX8550_INT_USB,
38 .flags = IORESOURCE_IRQ,
39 },
40};
41
42static struct resource pnx8550_uart_resources[] = {
43 [0] = {
44 .start = PNX8550_UART_PORT0,
45 .end = PNX8550_UART_PORT0 + 0xfff,
46 .flags = IORESOURCE_MEM,
47 },
48 [1] = {
49 .start = PNX8550_UART_INT(0),
50 .end = PNX8550_UART_INT(0),
51 .flags = IORESOURCE_IRQ,
52 },
53 [2] = {
54 .start = PNX8550_UART_PORT1,
55 .end = PNX8550_UART_PORT1 + 0xfff,
56 .flags = IORESOURCE_MEM,
57 },
58 [3] = {
59 .start = PNX8550_UART_INT(1),
60 .end = PNX8550_UART_INT(1),
61 .flags = IORESOURCE_IRQ,
62 },
63};
64
65struct ip3106_port ip3106_ports[] = {
66 [0] = {
67 .port = {
68 .type = PORT_IP3106,
69 .iotype = SERIAL_IO_MEM,
70 .membase = (void __iomem *)PNX8550_UART_PORT0,
71 .mapbase = PNX8550_UART_PORT0,
72 .irq = PNX8550_UART_INT(0),
73 .uartclk = 3692300,
74 .fifosize = 16,
75 .ops = &ip3106_pops,
76 .flags = ASYNC_BOOT_AUTOCONF,
77 .line = 0,
78 },
79 },
80 [1] = {
81 .port = {
82 .type = PORT_IP3106,
83 .iotype = SERIAL_IO_MEM,
84 .membase = (void __iomem *)PNX8550_UART_PORT1,
85 .mapbase = PNX8550_UART_PORT1,
86 .irq = PNX8550_UART_INT(1),
87 .uartclk = 3692300,
88 .fifosize = 16,
89 .ops = &ip3106_pops,
90 .flags = ASYNC_BOOT_AUTOCONF,
91 .line = 1,
92 },
93 },
94};
95
96/* The dmamask must be set for OHCI to work */
97static u64 ohci_dmamask = ~(u32)0;
98
99static u64 uart_dmamask = ~(u32)0;
100
101static struct platform_device pnx8550_usb_ohci_device = {
102 .name = "pnx8550-ohci",
103 .id = -1,
104 .dev = {
105 .dma_mask = &ohci_dmamask,
106 .coherent_dma_mask = 0xffffffff,
107 },
108 .num_resources = ARRAY_SIZE(pnx8550_usb_ohci_resources),
109 .resource = pnx8550_usb_ohci_resources,
110};
111
112static struct platform_device pnx8550_uart_device = {
113 .name = "ip3106-uart",
114 .id = -1,
115 .dev = {
116 .dma_mask = &uart_dmamask,
117 .coherent_dma_mask = 0xffffffff,
118 .platform_data = ip3106_ports,
119 },
120 .num_resources = ARRAY_SIZE(pnx8550_uart_resources),
121 .resource = pnx8550_uart_resources,
122};
123
124static struct platform_device *pnx8550_platform_devices[] __initdata = {
125 &pnx8550_usb_ohci_device,
126 &pnx8550_uart_device,
127};
128
129int pnx8550_platform_init(void)
130{
131 return platform_add_devices(pnx8550_platform_devices,
132 ARRAY_SIZE(pnx8550_platform_devices));
133}
134
135arch_initcall(pnx8550_platform_init);
diff --git a/arch/mips/philips/pnx8550/common/proc.c b/arch/mips/philips/pnx8550/common/proc.c
new file mode 100644
index 000000000000..72a016767e09
--- /dev/null
+++ b/arch/mips/philips/pnx8550/common/proc.c
@@ -0,0 +1,113 @@
1/*
2 * This program is free software; you can distribute it and/or modify it
3 * under the terms of the GNU General Public License (Version 2) as
4 * published by the Free Software Foundation.
5 *
6 * This program is distributed in the hope it will be useful, but WITHOUT
7 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
8 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
9 * for more details.
10 *
11 * You should have received a copy of the GNU General Public License along
12 * with this program; if not, write to the Free Software Foundation, Inc.,
13 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
14 */
15#include <linux/init.h>
16#include <linux/proc_fs.h>
17#include <linux/irq.h>
18#include <linux/sched.h>
19#include <linux/slab.h>
20#include <linux/interrupt.h>
21#include <linux/kernel_stat.h>
22#include <linux/random.h>
23
24#include <asm/io.h>
25#include <asm/gdb-stub.h>
26#include <int.h>
27#include <uart.h>
28
29
30static int pnx8550_timers_read (char* page, char** start, off_t offset, int count, int* eof, void* data)
31{
32 int len = 0;
33 int configPR = read_c0_config7();
34
35 if (offset==0) {
36 len += sprintf(&page[len],"Timer: count, compare, tc, status\n");
37 len += sprintf(&page[len]," 1: %11i, %8i, %1i, %s\n",
38 read_c0_count(), read_c0_compare(),
39 (configPR>>6)&0x1, ((configPR>>3)&0x1)? "off":"on");
40 len += sprintf(&page[len]," 2: %11i, %8i, %1i, %s\n",
41 read_c0_count2(), read_c0_compare2(),
42 (configPR>>7)&0x1, ((configPR>>4)&0x1)? "off":"on");
43 len += sprintf(&page[len]," 3: %11i, %8i, %1i, %s\n",
44 read_c0_count3(), read_c0_compare3(),
45 (configPR>>8)&0x1, ((configPR>>5)&0x1)? "off":"on");
46 }
47
48 return len;
49}
50
51static int pnx8550_registers_read (char* page, char** start, off_t offset, int count, int* eof, void* data)
52{
53 int len = 0;
54
55 if (offset==0) {
56 len += sprintf(&page[len],"config1: %#10.8x\n",read_c0_config1());
57 len += sprintf(&page[len],"config2: %#10.8x\n",read_c0_config2());
58 len += sprintf(&page[len],"config3: %#10.8x\n",read_c0_config3());
59 len += sprintf(&page[len],"configPR: %#10.8x\n",read_c0_config7());
60 len += sprintf(&page[len],"status: %#10.8x\n",read_c0_status());
61 len += sprintf(&page[len],"cause: %#10.8x\n",read_c0_cause());
62 len += sprintf(&page[len],"count: %#10.8x\n",read_c0_count());
63 len += sprintf(&page[len],"count_2: %#10.8x\n",read_c0_count2());
64 len += sprintf(&page[len],"count_3: %#10.8x\n",read_c0_count3());
65 len += sprintf(&page[len],"compare: %#10.8x\n",read_c0_compare());
66 len += sprintf(&page[len],"compare_2: %#10.8x\n",read_c0_compare2());
67 len += sprintf(&page[len],"compare_3: %#10.8x\n",read_c0_compare3());
68 }
69
70 return len;
71}
72
73static struct proc_dir_entry* pnx8550_dir = NULL;
74static struct proc_dir_entry* pnx8550_timers = NULL;
75static struct proc_dir_entry* pnx8550_registers = NULL;
76
77static int pnx8550_proc_init( void )
78{
79
80 // Create /proc/pnx8550
81 pnx8550_dir = create_proc_entry("pnx8550", S_IFDIR|S_IRUGO, NULL);
82 if (pnx8550_dir){
83 pnx8550_dir->nlink = 1;
84 }
85 else {
86 printk(KERN_ERR "Can't create pnx8550 proc dir\n");
87 return -1;
88 }
89
90 // Create /proc/pnx8550/timers
91 pnx8550_timers = create_proc_entry("timers", S_IFREG|S_IRUGO, pnx8550_dir );
92 if (pnx8550_timers){
93 pnx8550_timers->nlink = 1;
94 pnx8550_timers->read_proc = pnx8550_timers_read;
95 }
96 else {
97 printk(KERN_ERR "Can't create pnx8550 timers proc file\n");
98 }
99
100 // Create /proc/pnx8550/registers
101 pnx8550_registers = create_proc_entry("registers", S_IFREG|S_IRUGO, pnx8550_dir );
102 if (pnx8550_registers){
103 pnx8550_registers->nlink = 1;
104 pnx8550_registers->read_proc = pnx8550_registers_read;
105 }
106 else {
107 printk(KERN_ERR "Can't create pnx8550 registers proc file\n");
108 }
109
110 return 0;
111}
112
113__initcall(pnx8550_proc_init);
diff --git a/arch/mips/philips/pnx8550/common/prom.c b/arch/mips/philips/pnx8550/common/prom.c
new file mode 100644
index 000000000000..70aac9759412
--- /dev/null
+++ b/arch/mips/philips/pnx8550/common/prom.c
@@ -0,0 +1,138 @@
1/*
2 *
3 * Per Hallsmark, per.hallsmark@mvista.com
4 *
5 * Based on jmr3927/common/prom.c
6 *
7 * 2004 (c) MontaVista Software, Inc. This file is licensed under the
8 * terms of the GNU General Public License version 2. This program is
9 * licensed "as is" without any warranty of any kind, whether express
10 * or implied.
11 */
12#include <linux/module.h>
13#include <linux/kernel.h>
14#include <linux/init.h>
15#include <linux/string.h>
16#include <linux/serial_ip3106.h>
17
18#include <asm/bootinfo.h>
19#include <uart.h>
20
21/* #define DEBUG_CMDLINE */
22
23extern int prom_argc;
24extern char **prom_argv, **prom_envp;
25
26typedef struct
27{
28 char *name;
29/* char *val; */
30}t_env_var;
31
32
33char * prom_getcmdline(void)
34{
35 return &(arcs_cmdline[0]);
36}
37
38void prom_init_cmdline(void)
39{
40 char *cp;
41 int actr;
42
43 actr = 1; /* Always ignore argv[0] */
44
45 cp = &(arcs_cmdline[0]);
46 while(actr < prom_argc) {
47 strcpy(cp, prom_argv[actr]);
48 cp += strlen(prom_argv[actr]);
49 *cp++ = ' ';
50 actr++;
51 }
52 if (cp != &(arcs_cmdline[0])) /* get rid of trailing space */
53 --cp;
54 *cp = '\0';
55}
56
57char *prom_getenv(char *envname)
58{
59 /*
60 * Return a pointer to the given environment variable.
61 * Environment variables are stored in the form of "memsize=64".
62 */
63
64 t_env_var *env = (t_env_var *)prom_envp;
65 int i;
66
67 i = strlen(envname);
68
69 while(env->name) {
70 if(strncmp(envname, env->name, i) == 0) {
71 return(env->name + strlen(envname) + 1);
72 }
73 env++;
74 }
75 return(NULL);
76}
77
78inline unsigned char str2hexnum(unsigned char c)
79{
80 if(c >= '0' && c <= '9')
81 return c - '0';
82 if(c >= 'a' && c <= 'f')
83 return c - 'a' + 10;
84 if(c >= 'A' && c <= 'F')
85 return c - 'A' + 10;
86 return 0; /* foo */
87}
88
89inline void str2eaddr(unsigned char *ea, unsigned char *str)
90{
91 int i;
92
93 for(i = 0; i < 6; i++) {
94 unsigned char num;
95
96 if((*str == '.') || (*str == ':'))
97 str++;
98 num = str2hexnum(*str++) << 4;
99 num |= (str2hexnum(*str++));
100 ea[i] = num;
101 }
102}
103
104int get_ethernet_addr(char *ethernet_addr)
105{
106 char *ethaddr_str;
107
108 ethaddr_str = prom_getenv("ethaddr");
109 if (!ethaddr_str) {
110 printk("ethaddr not set in boot prom\n");
111 return -1;
112 }
113 str2eaddr(ethernet_addr, ethaddr_str);
114 return 0;
115}
116
117unsigned long __init prom_free_prom_memory(void)
118{
119 return 0;
120}
121
122extern int pnx8550_console_port;
123
124/* used by prom_printf */
125void prom_putchar(char c)
126{
127 if (pnx8550_console_port != -1) {
128 /* Wait until FIFO not full */
129 while( ((ip3106_fifo(UART_BASE, pnx8550_console_port) & IP3106_UART_FIFO_TXFIFO) >> 16) >= 16)
130 ;
131 /* Send one char */
132 ip3106_fifo(UART_BASE, pnx8550_console_port) = c;
133 }
134}
135
136EXPORT_SYMBOL(prom_getcmdline);
137EXPORT_SYMBOL(get_ethernet_addr);
138EXPORT_SYMBOL(str2eaddr);
diff --git a/arch/mips/philips/pnx8550/common/reset.c b/arch/mips/philips/pnx8550/common/reset.c
new file mode 100644
index 000000000000..7b2cbc5b2c7c
--- /dev/null
+++ b/arch/mips/philips/pnx8550/common/reset.c
@@ -0,0 +1,49 @@
1/*.
2 *
3 * ########################################################################
4 *
5 * This program is free software; you can distribute it and/or modify it
6 * under the terms of the GNU General Public License (Version 2) as
7 * published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * for more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
17 *
18 * ########################################################################
19 *
20 * Reset the PNX8550 board.
21 *
22 */
23#include <linux/slab.h>
24#include <asm/reboot.h>
25#include <glb.h>
26
27void pnx8550_machine_restart(char *command)
28{
29 char head[] = "************* Machine restart *************";
30 char foot[] = "*******************************************";
31
32 printk("\n\n");
33 printk("%s\n", head);
34 if (command != NULL)
35 printk("* %s\n", command);
36 printk("%s\n", foot);
37
38 PNX8550_RST_CTL = PNX8550_RST_DO_SW_RST;
39}
40
41void pnx8550_machine_halt(void)
42{
43 printk("*** Machine halt. (Not implemented) ***\n");
44}
45
46void pnx8550_machine_power_off(void)
47{
48 printk("*** Machine power off. (Not implemented) ***\n");
49}
diff --git a/arch/mips/philips/pnx8550/common/setup.c b/arch/mips/philips/pnx8550/common/setup.c
new file mode 100644
index 000000000000..ee6bf72094f6
--- /dev/null
+++ b/arch/mips/philips/pnx8550/common/setup.c
@@ -0,0 +1,149 @@
1/*
2 *
3 * 2.6 port, Embedded Alley Solutions, Inc
4 *
5 * Based on Per Hallsmark, per.hallsmark@mvista.com
6 *
7 * This program is free software; you can distribute it and/or modify it
8 * under the terms of the GNU General Public License (Version 2) as
9 * published by the Free Software Foundation.
10 *
11 * This program is distributed in the hope it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * for more details.
15 *
16 * You should have received a copy of the GNU General Public License along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
19 */
20#include <linux/config.h>
21#include <linux/init.h>
22#include <linux/sched.h>
23#include <linux/ioport.h>
24#include <linux/mm.h>
25#include <linux/delay.h>
26#include <linux/interrupt.h>
27#include <linux/serial_ip3106.h>
28
29#include <asm/cpu.h>
30#include <asm/bootinfo.h>
31#include <asm/irq.h>
32#include <asm/mipsregs.h>
33#include <asm/reboot.h>
34#include <asm/pgtable.h>
35#include <asm/time.h>
36
37#include <glb.h>
38#include <int.h>
39#include <pci.h>
40#include <uart.h>
41#include <nand.h>
42
43extern void prom_printf(char *fmt, ...);
44
45extern void __init board_setup(void);
46extern void pnx8550_machine_restart(char *);
47extern void pnx8550_machine_halt(void);
48extern void pnx8550_machine_power_off(void);
49extern struct resource ioport_resource;
50extern struct resource iomem_resource;
51extern void (*board_time_init)(void);
52extern void pnx8550_time_init(void);
53extern void (*board_timer_setup)(struct irqaction *irq);
54extern void pnx8550_timer_setup(struct irqaction *irq);
55extern void rs_kgdb_hook(int tty_no);
56extern void prom_printf(char *fmt, ...);
57extern char *prom_getcmdline(void);
58
59struct resource standard_io_resources[] = {
60 {"dma1", 0x00, 0x1f, IORESOURCE_BUSY},
61 {"timer", 0x40, 0x5f, IORESOURCE_BUSY},
62 {"dma page reg", 0x80, 0x8f, IORESOURCE_BUSY},
63 {"dma2", 0xc0, 0xdf, IORESOURCE_BUSY},
64};
65
66#define STANDARD_IO_RESOURCES (sizeof(standard_io_resources)/sizeof(struct resource))
67
68extern struct resource pci_io_resource;
69extern struct resource pci_mem_resource;
70
71/* Return the total size of DRAM-memory, (RANK0 + RANK1) */
72unsigned long get_system_mem_size(void)
73{
74 /* Read IP2031_RANK0_ADDR_LO */
75 unsigned long dram_r0_lo = inl(PCI_BASE | 0x65010);
76 /* Read IP2031_RANK1_ADDR_HI */
77 unsigned long dram_r1_hi = inl(PCI_BASE | 0x65018);
78
79 return dram_r1_hi - dram_r0_lo + 1;
80}
81
82int pnx8550_console_port = -1;
83
84void __init plat_setup(void)
85{
86 int i;
87 char* argptr;
88
89 board_setup(); /* board specific setup */
90
91 _machine_restart = pnx8550_machine_restart;
92 _machine_halt = pnx8550_machine_halt;
93 _machine_power_off = pnx8550_machine_power_off;
94
95 board_time_init = pnx8550_time_init;
96 board_timer_setup = pnx8550_timer_setup;
97
98 /* Clear the Global 2 Register, PCI Inta Output Enable Registers
99 Bit 1:Enable DAC Powerdown
100 -> 0:DACs are enabled and are working normally
101 1:DACs are powerdown
102 Bit 0:Enable of PCI inta output
103 -> 0 = Disable PCI inta output
104 1 = Enable PCI inta output
105 */
106 PNX8550_GLB2_ENAB_INTA_O = 0;
107
108 /* IO/MEM resources. */
109 set_io_port_base(KSEG1);
110 ioport_resource.start = 0;
111 ioport_resource.end = ~0;
112 iomem_resource.start = 0;
113 iomem_resource.end = ~0;
114
115 /* Request I/O space for devices on this board */
116 for (i = 0; i < STANDARD_IO_RESOURCES; i++)
117 request_resource(&ioport_resource, standard_io_resources + i);
118
119 /* Place the Mode Control bit for GPIO pin 16 in primary function */
120 /* Pin 16 is used by UART1, UA1_TX */
121 outl((PNX8550_GPIO_MODE_PRIMOP << PNX8550_GPIO_MC_16_BIT) |
122 (PNX8550_GPIO_MODE_PRIMOP << PNX8550_GPIO_MC_17_BIT),
123 PNX8550_GPIO_MC1);
124
125 argptr = prom_getcmdline();
126 if ((argptr = strstr(argptr, "console=ttyS")) != NULL) {
127 argptr += strlen("console=ttyS");
128 pnx8550_console_port = *argptr == '0' ? 0 : 1;
129
130 /* We must initialize the UART (console) before prom_printf */
131 /* Set LCR to 8-bit and BAUD to 38400 (no 5) */
132 ip3106_lcr(UART_BASE, pnx8550_console_port) =
133 IP3106_UART_LCR_8BIT;
134 ip3106_baud(UART_BASE, pnx8550_console_port) = 5;
135 }
136
137#ifdef CONFIG_KGDB
138 argptr = prom_getcmdline();
139 if ((argptr = strstr(argptr, "kgdb=ttyS")) != NULL) {
140 int line;
141 argptr += strlen("kgdb=ttyS");
142 line = *argptr == '0' ? 0 : 1;
143 rs_kgdb_hook(line);
144 prom_printf("KGDB: Using ttyS%i for session, "
145 "please connect your debugger\n", line ? 1 : 0);
146 }
147#endif
148 return;
149}
diff --git a/arch/mips/philips/pnx8550/common/time.c b/arch/mips/philips/pnx8550/common/time.c
new file mode 100644
index 000000000000..70664ea96b92
--- /dev/null
+++ b/arch/mips/philips/pnx8550/common/time.c
@@ -0,0 +1,105 @@
1/*
2 * Copyright 2001, 2002, 2003 MontaVista Software Inc.
3 * Author: Jun Sun, jsun@mvista.com or jsun@junsun.net
4 *
5 * Common time service routines for MIPS machines. See
6 * Documents/MIPS/README.txt.
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by the
10 * Free Software Foundation; either version 2 of the License, or (at your
11 * option) any later version.
12 */
13#include <linux/types.h>
14#include <linux/kernel.h>
15#include <linux/init.h>
16#include <linux/sched.h>
17#include <linux/param.h>
18#include <linux/time.h>
19#include <linux/timer.h>
20#include <linux/smp.h>
21#include <linux/kernel_stat.h>
22#include <linux/spinlock.h>
23#include <linux/interrupt.h>
24#include <linux/module.h>
25
26#include <asm/bootinfo.h>
27#include <asm/cpu.h>
28#include <asm/time.h>
29#include <asm/hardirq.h>
30#include <asm/div64.h>
31#include <asm/debug.h>
32
33#include <int.h>
34#include <cm.h>
35
36extern unsigned int mips_hpt_frequency;
37
38/*
39 * pnx8550_time_init() - it does the following things:
40 *
41 * 1) board_time_init() -
42 * a) (optional) set up RTC routines,
43 * b) (optional) calibrate and set the mips_hpt_frequency
44 * (only needed if you intended to use fixed_rate_gettimeoffset
45 * or use cpu counter as timer interrupt source)
46 */
47
48void pnx8550_time_init(void)
49{
50 unsigned int n;
51 unsigned int m;
52 unsigned int p;
53 unsigned int pow2p;
54
55 /* PLL0 sets MIPS clock (PLL1 <=> TM1, PLL6 <=> TM2, PLL5 <=> mem) */
56 /* (but only if CLK_MIPS_CTL select value [bits 3:1] is 1: FIXME) */
57
58 n = (PNX8550_CM_PLL0_CTL & PNX8550_CM_PLL_N_MASK) >> 16;
59 m = (PNX8550_CM_PLL0_CTL & PNX8550_CM_PLL_M_MASK) >> 8;
60 p = (PNX8550_CM_PLL0_CTL & PNX8550_CM_PLL_P_MASK) >> 2;
61 pow2p = (1 << p);
62
63 db_assert(m != 0 && pow2p != 0);
64
65 /*
66 * Compute the frequency as in the PNX8550 User Manual 1.0, p.186
67 * (a.k.a. 8-10). Divide by HZ for a timer offset that results in
68 * HZ timer interrupts per second.
69 */
70 mips_hpt_frequency = 27UL * ((1000000UL * n)/(m * pow2p));
71}
72
73/*
74 * pnx8550_timer_setup() - it does the following things:
75 *
76 * 5) board_timer_setup() -
77 * a) (optional) over-write any choices made above by time_init().
78 * b) machine specific code should setup the timer irqaction.
79 * c) enable the timer interrupt
80 */
81
82void __init pnx8550_timer_setup(struct irqaction *irq)
83{
84 int configPR;
85
86 setup_irq(PNX8550_INT_TIMER1, irq);
87
88 /* Start timer1 */
89 configPR = read_c0_config7();
90 configPR &= ~0x00000008;
91 write_c0_config7(configPR);
92
93 /* Timer 2 stop */
94 configPR = read_c0_config7();
95 configPR |= 0x00000010;
96 write_c0_config7(configPR);
97
98 write_c0_count2(0);
99 write_c0_compare2(0xffffffff);
100
101 /* Timer 3 stop */
102 configPR = read_c0_config7();
103 configPR |= 0x00000020;
104 write_c0_config7(configPR);
105}
diff --git a/arch/mips/philips/pnx8550/jbs/Makefile b/arch/mips/philips/pnx8550/jbs/Makefile
new file mode 100644
index 000000000000..e8228dbca8f6
--- /dev/null
+++ b/arch/mips/philips/pnx8550/jbs/Makefile
@@ -0,0 +1,4 @@
1
2# Makefile for the Philips JBS Board.
3
4lib-y := init.o board_setup.o irqmap.o
diff --git a/arch/mips/philips/pnx8550/jbs/board_setup.c b/arch/mips/philips/pnx8550/jbs/board_setup.c
new file mode 100644
index 000000000000..f92826e0096d
--- /dev/null
+++ b/arch/mips/philips/pnx8550/jbs/board_setup.c
@@ -0,0 +1,65 @@
1/*
2 * JBS Specific board startup routines.
3 *
4 * Copyright 2005, Embedded Alley Solutions, Inc
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version.
10 *
11 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
12 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
13 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
14 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
15 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
17 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
18 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
19 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
20 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
21 *
22 * You should have received a copy of the GNU General Public License along
23 * with this program; if not, write to the Free Software Foundation, Inc.,
24 * 675 Mass Ave, Cambridge, MA 02139, USA.
25 */
26#include <linux/init.h>
27#include <linux/sched.h>
28#include <linux/ioport.h>
29#include <linux/mm.h>
30#include <linux/console.h>
31#include <linux/mc146818rtc.h>
32#include <linux/delay.h>
33
34#include <asm/cpu.h>
35#include <asm/bootinfo.h>
36#include <asm/irq.h>
37#include <asm/mipsregs.h>
38#include <asm/reboot.h>
39#include <asm/pgtable.h>
40
41#include <glb.h>
42
43/* CP0 hazard avoidance. */
44#define BARRIER __asm__ __volatile__(".set noreorder\n\t" \
45 "nop; nop; nop; nop; nop; nop;\n\t" \
46 ".set reorder\n\t")
47
48void __init board_setup(void)
49{
50 unsigned long config0, 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
61 configpr = read_c0_config7();
62 configpr |= (1<<19); /* enable tlb */
63 write_c0_config7(configpr);
64 BARRIER;
65}
diff --git a/arch/mips/philips/pnx8550/jbs/init.c b/arch/mips/philips/pnx8550/jbs/init.c
new file mode 100644
index 000000000000..85f449174bc3
--- /dev/null
+++ b/arch/mips/philips/pnx8550/jbs/init.c
@@ -0,0 +1,57 @@
1/*
2 *
3 * Copyright 2005 Embedded Alley Solutions, Inc
4 * source@embeddedalley.com
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version.
10 *
11 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
12 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
13 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
14 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
15 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
17 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
18 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
19 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
20 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
21 *
22 * You should have received a copy of the GNU General Public License along
23 * with this program; if not, write to the Free Software Foundation, Inc.,
24 * 675 Mass Ave, Cambridge, MA 02139, USA.
25 */
26
27#include <linux/init.h>
28#include <linux/mm.h>
29#include <linux/sched.h>
30#include <linux/bootmem.h>
31#include <asm/addrspace.h>
32#include <asm/bootinfo.h>
33#include <linux/string.h>
34#include <linux/kernel.h>
35
36int prom_argc;
37char **prom_argv, **prom_envp;
38extern void __init prom_init_cmdline(void);
39extern char *prom_getenv(char *envname);
40
41const char *get_system_type(void)
42{
43 return "Philips PNX8550/JBS";
44}
45
46void __init prom_init(void)
47{
48
49 unsigned long memsize;
50
51 mips_machgroup = MACH_GROUP_PHILIPS;
52 mips_machtype = MACH_PHILIPS_JBS;
53
54 //memsize = 0x02800000; /* Trimedia uses memory above */
55 memsize = 0x08000000; /* Trimedia uses memory above */
56 add_memory_region(0, memsize, BOOT_MEM_RAM);
57}
diff --git a/arch/mips/philips/pnx8550/jbs/irqmap.c b/arch/mips/philips/pnx8550/jbs/irqmap.c
new file mode 100644
index 000000000000..f78e0423dc98
--- /dev/null
+++ b/arch/mips/philips/pnx8550/jbs/irqmap.c
@@ -0,0 +1,36 @@
1/*
2 * Philips JBS board irqmap.
3 *
4 * Copyright 2005 Embedded Alley Solutions, Inc
5 * source@embeddealley.com
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation; either version 2 of the License, or (at your
10 * option) any later version.
11 *
12 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
13 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
15 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
16 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
18 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
19 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
20 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
21 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 *
23 * You should have received a copy of the GNU General Public License along
24 * with this program; if not, write to the Free Software Foundation, Inc.,
25 * 675 Mass Ave, Cambridge, MA 02139, USA.
26 */
27
28#include <linux/init.h>
29#include <int.h>
30
31char irq_tab_jbs[][5] __initdata = {
32 [8] = { -1, PNX8550_INT_PCI_INTA, 0xff, 0xff, 0xff},
33 [9] = { -1, PNX8550_INT_PCI_INTA, 0xff, 0xff, 0xff},
34 [17] = { -1, PNX8550_INT_PCI_INTA, 0xff, 0xff, 0xff},
35};
36
diff --git a/arch/mips/pmc-sierra/Kconfig b/arch/mips/pmc-sierra/Kconfig
new file mode 100644
index 000000000000..24d514c9dff9
--- /dev/null
+++ b/arch/mips/pmc-sierra/Kconfig
@@ -0,0 +1,3 @@
1config HYPERTRANSPORT
2 bool "Hypertransport Support for PMC-Sierra Yosemite"
3 depends on PMC_YOSEMITE
diff --git a/arch/mips/pmc-sierra/yosemite/atmel_read_eeprom.h b/arch/mips/pmc-sierra/yosemite/atmel_read_eeprom.h
index c19f01a32045..a31288335fba 100644
--- a/arch/mips/pmc-sierra/yosemite/atmel_read_eeprom.h
+++ b/arch/mips/pmc-sierra/yosemite/atmel_read_eeprom.h
@@ -34,7 +34,6 @@
34#include <linux/pci.h> 34#include <linux/pci.h>
35#include <linux/kernel.h> 35#include <linux/kernel.h>
36#include <linux/slab.h> 36#include <linux/slab.h>
37#include <linux/version.h>
38#include <asm/pci.h> 37#include <asm/pci.h>
39#include <asm/io.h> 38#include <asm/io.h>
40#include <linux/init.h> 39#include <linux/init.h>
diff --git a/arch/mips/pmc-sierra/yosemite/ht-irq.c b/arch/mips/pmc-sierra/yosemite/ht-irq.c
index d22c9ffe4914..5aec4057314e 100644
--- a/arch/mips/pmc-sierra/yosemite/ht-irq.c
+++ b/arch/mips/pmc-sierra/yosemite/ht-irq.c
@@ -26,7 +26,6 @@
26#include <linux/types.h> 26#include <linux/types.h>
27#include <linux/pci.h> 27#include <linux/pci.h>
28#include <linux/kernel.h> 28#include <linux/kernel.h>
29#include <linux/version.h>
30#include <linux/init.h> 29#include <linux/init.h>
31#include <asm/pci.h> 30#include <asm/pci.h>
32 31
diff --git a/arch/mips/pmc-sierra/yosemite/ht.c b/arch/mips/pmc-sierra/yosemite/ht.c
index dad228d3a220..54b65a80abf5 100644
--- a/arch/mips/pmc-sierra/yosemite/ht.c
+++ b/arch/mips/pmc-sierra/yosemite/ht.c
@@ -28,7 +28,6 @@
28#include <linux/pci.h> 28#include <linux/pci.h>
29#include <linux/kernel.h> 29#include <linux/kernel.h>
30#include <linux/slab.h> 30#include <linux/slab.h>
31#include <linux/version.h>
32#include <asm/pci.h> 31#include <asm/pci.h>
33#include <asm/io.h> 32#include <asm/io.h>
34 33
diff --git a/arch/mips/pmc-sierra/yosemite/prom.c b/arch/mips/pmc-sierra/yosemite/prom.c
index 1fb3e697948d..555bfacf7647 100644
--- a/arch/mips/pmc-sierra/yosemite/prom.c
+++ b/arch/mips/pmc-sierra/yosemite/prom.c
@@ -132,8 +132,9 @@ void __init prom_init(void)
132 prom_grab_secondary(); 132 prom_grab_secondary();
133} 133}
134 134
135void __init prom_free_prom_memory(void) 135unsigned long __init prom_free_prom_memory(void)
136{ 136{
137 return 0;
137} 138}
138 139
139void __init prom_fixup_mem_map(unsigned long start, unsigned long end) 140void __init prom_fixup_mem_map(unsigned long start, unsigned long end)
diff --git a/arch/mips/pmc-sierra/yosemite/setup.c b/arch/mips/pmc-sierra/yosemite/setup.c
index 7225bbf20ce4..bdc2ab55bed6 100644
--- a/arch/mips/pmc-sierra/yosemite/setup.c
+++ b/arch/mips/pmc-sierra/yosemite/setup.c
@@ -212,7 +212,7 @@ static void __init py_late_time_init(void)
212 py_rtc_setup(); 212 py_rtc_setup();
213} 213}
214 214
215static int __init pmc_yosemite_setup(void) 215void __init plat_setup(void)
216{ 216{
217 board_time_init = yosemite_time_init; 217 board_time_init = yosemite_time_init;
218 late_time_init = py_late_time_init; 218 late_time_init = py_late_time_init;
@@ -228,8 +228,4 @@ static int __init pmc_yosemite_setup(void)
228 OCD_WRITE(RM9000x2_OCD_HTBAR0, HYPERTRANSPORT_BAR0_ADDR); 228 OCD_WRITE(RM9000x2_OCD_HTBAR0, HYPERTRANSPORT_BAR0_ADDR);
229 OCD_WRITE(RM9000x2_OCD_HTMASK0, HYPERTRANSPORT_SIZE0); 229 OCD_WRITE(RM9000x2_OCD_HTMASK0, HYPERTRANSPORT_SIZE0);
230#endif 230#endif
231
232 return 0;
233} 231}
234
235early_initcall(pmc_yosemite_setup);
diff --git a/arch/mips/pmc-sierra/yosemite/smp.c b/arch/mips/pmc-sierra/yosemite/smp.c
index 1d3b0734c78c..0527170d6adb 100644
--- a/arch/mips/pmc-sierra/yosemite/smp.c
+++ b/arch/mips/pmc-sierra/yosemite/smp.c
@@ -9,7 +9,7 @@ extern void (*mips_hpt_init)(unsigned int);
9 9
10#define LAUNCHSTACK_SIZE 256 10#define LAUNCHSTACK_SIZE 256
11 11
12static spinlock_t launch_lock __initdata; 12static __initdata DEFINE_SPINLOCK(launch_lock);
13 13
14static unsigned long secondary_sp __initdata; 14static unsigned long secondary_sp __initdata;
15static unsigned long secondary_gp __initdata; 15static unsigned long secondary_gp __initdata;
diff --git a/arch/mips/qemu/q-setup.c b/arch/mips/qemu/q-setup.c
index 1a80eee8cd35..022eb1af6db1 100644
--- a/arch/mips/qemu/q-setup.c
+++ b/arch/mips/qemu/q-setup.c
@@ -4,6 +4,11 @@
4 4
5#define QEMU_PORT_BASE 0xb4000000 5#define QEMU_PORT_BASE 0xb4000000
6 6
7const char *get_system_type(void)
8{
9 return "Qemu";
10}
11
7static void __init qemu_timer_setup(struct irqaction *irq) 12static void __init qemu_timer_setup(struct irqaction *irq)
8{ 13{
9 /* set the clock to 100 Hz */ 14 /* set the clock to 100 Hz */
diff --git a/arch/mips/sgi-ip22/ip22-eisa.c b/arch/mips/sgi-ip22/ip22-eisa.c
index fa0e719c5bd1..b19820110aa3 100644
--- a/arch/mips/sgi-ip22/ip22-eisa.c
+++ b/arch/mips/sgi-ip22/ip22-eisa.c
@@ -29,6 +29,7 @@
29#include <linux/sched.h> 29#include <linux/sched.h>
30#include <linux/interrupt.h> 30#include <linux/interrupt.h>
31#include <linux/delay.h> 31#include <linux/delay.h>
32#include <asm/io.h>
32#include <asm/irq.h> 33#include <asm/irq.h>
33#include <asm/mipsregs.h> 34#include <asm/mipsregs.h>
34#include <asm/addrspace.h> 35#include <asm/addrspace.h>
@@ -37,42 +38,29 @@
37#include <asm/sgi/mc.h> 38#include <asm/sgi/mc.h>
38#include <asm/sgi/ip22.h> 39#include <asm/sgi/ip22.h>
39 40
40#define EISA_MAX_SLOTS 4 41/* I2 has four EISA slots. */
42#define IP22_EISA_MAX_SLOTS 4
41#define EISA_MAX_IRQ 16 43#define EISA_MAX_IRQ 16
42 44
43#define EISA_TO_PHYS(x) (0x00080000 | (x)) 45#define EIU_MODE_REG 0x0001ffc0
44#define EISA_TO_KSEG1(x) ((void *) KSEG1ADDR(EISA_TO_PHYS((x)))) 46#define EIU_STAT_REG 0x0001ffc4
45 47#define EIU_PREMPT_REG 0x0001ffc8
46#define EIU_MODE_REG 0x0009ffc0 48#define EIU_QUIET_REG 0x0001ffcc
47#define EIU_STAT_REG 0x0009ffc4 49#define EIU_INTRPT_ACK 0x00010004
48#define EIU_PREMPT_REG 0x0009ffc8 50
49#define EIU_QUIET_REG 0x0009ffcc 51static char __init *decode_eisa_sig(unsigned long addr)
50#define EIU_INTRPT_ACK 0x00090004
51
52#define EISA_DMA1_STATUS 8
53#define EISA_INT1_CTRL 0x20
54#define EISA_INT1_MASK 0x21
55#define EISA_INT2_CTRL 0xA0
56#define EISA_INT2_MASK 0xA1
57#define EISA_DMA2_STATUS 0xD0
58#define EISA_DMA2_WRITE_SINGLE 0xD4
59#define EISA_EXT_NMI_RESET_CTRL 0x461
60#define EISA_INT1_EDGE_LEVEL 0x4D0
61#define EISA_INT2_EDGE_LEVEL 0x4D1
62#define EISA_VENDOR_ID_OFFSET 0xC80
63
64#define EIU_WRITE_32(x,y) { *((u32 *) KSEG1ADDR(x)) = (u32) (y); mb(); }
65#define EIU_READ_8(x) *((u8 *) KSEG1ADDR(x))
66#define EISA_WRITE_8(x,y) { *((u8 *) EISA_TO_KSEG1(x)) = (u8) (y); mb(); }
67#define EISA_READ_8(x) *((u8 *) EISA_TO_KSEG1(x))
68
69static char *decode_eisa_sig(u8 * sig)
70{ 52{
71 static char sig_str[8]; 53 static char sig_str[EISA_SIG_LEN];
72 u16 rev; 54 u8 sig[4];
55 u16 rev;
56 int i;
57
58 for (i = 0; i < 4; i++) {
59 sig[i] = inb (addr + i);
73 60
74 if (sig[0] & 0x80) 61 if (!i && (sig[0] & 0x80))
75 return NULL; 62 return NULL;
63 }
76 64
77 sig_str[0] = ((sig[0] >> 2) & 0x1f) + ('A' - 1); 65 sig_str[0] = ((sig[0] >> 2) & 0x1f) + ('A' - 1);
78 sig_str[1] = (((sig[0] & 3) << 3) | (sig[1] >> 5)) + ('A' - 1); 66 sig_str[1] = (((sig[0] & 3) << 3) | (sig[1] >> 5)) + ('A' - 1);
@@ -83,23 +71,26 @@ static char *decode_eisa_sig(u8 * sig)
83 return sig_str; 71 return sig_str;
84} 72}
85 73
86static void ip22_eisa_intr(int irq, void *dev_id, struct pt_regs *regs) 74static irqreturn_t ip22_eisa_intr(int irq, void *dev_id, struct pt_regs *regs)
87{ 75{
88 u8 eisa_irq; 76 u8 eisa_irq;
89 u8 dma1, dma2; 77 u8 dma1, dma2;
90 78
91 eisa_irq = EIU_READ_8(EIU_INTRPT_ACK); 79 eisa_irq = inb(EIU_INTRPT_ACK);
92 dma1 = EISA_READ_8(EISA_DMA1_STATUS); 80 dma1 = inb(EISA_DMA1_STATUS);
93 dma2 = EISA_READ_8(EISA_DMA2_STATUS); 81 dma2 = inb(EISA_DMA2_STATUS);
94
95 if (eisa_irq >= EISA_MAX_IRQ) {
96 /* Oops, Bad Stuff Happened... */
97 printk(KERN_ERR "eisa_irq %d out of bound\n", eisa_irq);
98 82
99 EISA_WRITE_8(EISA_INT2_CTRL, 0x20); 83 if (eisa_irq < EISA_MAX_IRQ) {
100 EISA_WRITE_8(EISA_INT1_CTRL, 0x20);
101 } else
102 do_IRQ(eisa_irq, regs); 84 do_IRQ(eisa_irq, regs);
85 return IRQ_HANDLED;
86 }
87
88 /* Oops, Bad Stuff Happened... */
89 printk(KERN_ERR "eisa_irq %d out of bound\n", eisa_irq);
90
91 outb(0x20, EISA_INT2_CTRL);
92 outb(0x20, EISA_INT1_CTRL);
93 return IRQ_NONE;
103} 94}
104 95
105static void enable_eisa1_irq(unsigned int irq) 96static void enable_eisa1_irq(unsigned int irq)
@@ -109,9 +100,9 @@ static void enable_eisa1_irq(unsigned int irq)
109 100
110 local_irq_save(flags); 101 local_irq_save(flags);
111 102
112 mask = EISA_READ_8(EISA_INT1_MASK); 103 mask = inb(EISA_INT1_MASK);
113 mask &= ~((u8) (1 << irq)); 104 mask &= ~((u8) (1 << irq));
114 EISA_WRITE_8(EISA_INT1_MASK, mask); 105 outb(mask, EISA_INT1_MASK);
115 106
116 local_irq_restore(flags); 107 local_irq_restore(flags);
117} 108}
@@ -122,9 +113,9 @@ static unsigned int startup_eisa1_irq(unsigned int irq)
122 113
123 /* Only use edge interrupts for EISA */ 114 /* Only use edge interrupts for EISA */
124 115
125 edge = EISA_READ_8(EISA_INT1_EDGE_LEVEL); 116 edge = inb(EISA_INT1_EDGE_LEVEL);
126 edge &= ~((u8) (1 << irq)); 117 edge &= ~((u8) (1 << irq));
127 EISA_WRITE_8(EISA_INT1_EDGE_LEVEL, edge); 118 outb(edge, EISA_INT1_EDGE_LEVEL);
128 119
129 enable_eisa1_irq(irq); 120 enable_eisa1_irq(irq);
130 return 0; 121 return 0;
@@ -134,9 +125,9 @@ static void disable_eisa1_irq(unsigned int irq)
134{ 125{
135 u8 mask; 126 u8 mask;
136 127
137 mask = EISA_READ_8(EISA_INT1_MASK); 128 mask = inb(EISA_INT1_MASK);
138 mask |= ((u8) (1 << irq)); 129 mask |= ((u8) (1 << irq));
139 EISA_WRITE_8(EISA_INT1_MASK, mask); 130 outb(mask, EISA_INT1_MASK);
140} 131}
141 132
142#define shutdown_eisa1_irq disable_eisa1_irq 133#define shutdown_eisa1_irq disable_eisa1_irq
@@ -145,7 +136,7 @@ static void mask_and_ack_eisa1_irq(unsigned int irq)
145{ 136{
146 disable_eisa1_irq(irq); 137 disable_eisa1_irq(irq);
147 138
148 EISA_WRITE_8(EISA_INT1_CTRL, 0x20); 139 outb(0x20, EISA_INT1_CTRL);
149} 140}
150 141
151static void end_eisa1_irq(unsigned int irq) 142static void end_eisa1_irq(unsigned int irq)
@@ -171,9 +162,9 @@ static void enable_eisa2_irq(unsigned int irq)
171 162
172 local_irq_save(flags); 163 local_irq_save(flags);
173 164
174 mask = EISA_READ_8(EISA_INT2_MASK); 165 mask = inb(EISA_INT2_MASK);
175 mask &= ~((u8) (1 << (irq - 8))); 166 mask &= ~((u8) (1 << (irq - 8)));
176 EISA_WRITE_8(EISA_INT2_MASK, mask); 167 outb(mask, EISA_INT2_MASK);
177 168
178 local_irq_restore(flags); 169 local_irq_restore(flags);
179} 170}
@@ -184,9 +175,9 @@ static unsigned int startup_eisa2_irq(unsigned int irq)
184 175
185 /* Only use edge interrupts for EISA */ 176 /* Only use edge interrupts for EISA */
186 177
187 edge = EISA_READ_8(EISA_INT2_EDGE_LEVEL); 178 edge = inb(EISA_INT2_EDGE_LEVEL);
188 edge &= ~((u8) (1 << (irq - 8))); 179 edge &= ~((u8) (1 << (irq - 8)));
189 EISA_WRITE_8(EISA_INT2_EDGE_LEVEL, edge); 180 outb(edge, EISA_INT2_EDGE_LEVEL);
190 181
191 enable_eisa2_irq(irq); 182 enable_eisa2_irq(irq);
192 return 0; 183 return 0;
@@ -196,9 +187,9 @@ static void disable_eisa2_irq(unsigned int irq)
196{ 187{
197 u8 mask; 188 u8 mask;
198 189
199 mask = EISA_READ_8(EISA_INT2_MASK); 190 mask = inb(EISA_INT2_MASK);
200 mask |= ((u8) (1 << (irq - 8))); 191 mask |= ((u8) (1 << (irq - 8)));
201 EISA_WRITE_8(EISA_INT2_MASK, mask); 192 outb(mask, EISA_INT2_MASK);
202} 193}
203 194
204#define shutdown_eisa2_irq disable_eisa2_irq 195#define shutdown_eisa2_irq disable_eisa2_irq
@@ -207,8 +198,7 @@ static void mask_and_ack_eisa2_irq(unsigned int irq)
207{ 198{
208 disable_eisa2_irq(irq); 199 disable_eisa2_irq(irq);
209 200
210 EISA_WRITE_8(EISA_INT2_CTRL, 0x20); 201 outb(0x20, EISA_INT2_CTRL);
211 EISA_WRITE_8(EISA_INT1_CTRL, 0x20);
212} 202}
213 203
214static void end_eisa2_irq(unsigned int irq) 204static void end_eisa2_irq(unsigned int irq)
@@ -241,7 +231,6 @@ int __init ip22_eisa_init(void)
241{ 231{
242 int i, c; 232 int i, c;
243 char *str; 233 char *str;
244 u8 *slot_addr;
245 234
246 if (!(sgimc->systemid & SGIMC_SYSID_EPRESENT)) { 235 if (!(sgimc->systemid & SGIMC_SYSID_EPRESENT)) {
247 printk(KERN_INFO "EISA: bus not present.\n"); 236 printk(KERN_INFO "EISA: bus not present.\n");
@@ -249,11 +238,8 @@ int __init ip22_eisa_init(void)
249 } 238 }
250 239
251 printk(KERN_INFO "EISA: Probing bus...\n"); 240 printk(KERN_INFO "EISA: Probing bus...\n");
252 for (c = 0, i = 1; i <= EISA_MAX_SLOTS; i++) { 241 for (c = 0, i = 1; i <= IP22_EISA_MAX_SLOTS; i++) {
253 slot_addr = 242 if ((str = decode_eisa_sig(0x1000 * i + EISA_VENDOR_ID_OFFSET))) {
254 (u8 *) EISA_TO_KSEG1((0x1000 * i) +
255 EISA_VENDOR_ID_OFFSET);
256 if ((str = decode_eisa_sig(slot_addr))) {
257 printk(KERN_INFO "EISA: slot %d : %s detected.\n", 243 printk(KERN_INFO "EISA: slot %d : %s detected.\n",
258 i, str); 244 i, str);
259 c++; 245 c++;
@@ -268,25 +254,25 @@ int __init ip22_eisa_init(void)
268 Please wave your favorite dead chicken over the busses */ 254 Please wave your favorite dead chicken over the busses */
269 255
270 /* First say hello to the EIU */ 256 /* First say hello to the EIU */
271 EIU_WRITE_32(EIU_PREMPT_REG, 0x0000FFFF); 257 outl(0x0000FFFF, EIU_PREMPT_REG);
272 EIU_WRITE_32(EIU_QUIET_REG, 1); 258 outl(1, EIU_QUIET_REG);
273 EIU_WRITE_32(EIU_MODE_REG, 0x40f3c07F); 259 outl(0x40f3c07F, EIU_MODE_REG);
274 260
275 /* Now be nice to the EISA chipset */ 261 /* Now be nice to the EISA chipset */
276 EISA_WRITE_8(EISA_EXT_NMI_RESET_CTRL, 1); 262 outb(1, EISA_EXT_NMI_RESET_CTRL);
277 for (i = 0; i < 10000; i++); /* Wait long enough for the dust to settle */ 263 udelay(50); /* Wait long enough for the dust to settle */
278 EISA_WRITE_8(EISA_EXT_NMI_RESET_CTRL, 0); 264 outb(0, EISA_EXT_NMI_RESET_CTRL);
279 EISA_WRITE_8(EISA_INT1_CTRL, 0x11); 265 outb(0x11, EISA_INT1_CTRL);
280 EISA_WRITE_8(EISA_INT2_CTRL, 0x11); 266 outb(0x11, EISA_INT2_CTRL);
281 EISA_WRITE_8(EISA_INT1_MASK, 0); 267 outb(0, EISA_INT1_MASK);
282 EISA_WRITE_8(EISA_INT2_MASK, 8); 268 outb(8, EISA_INT2_MASK);
283 EISA_WRITE_8(EISA_INT1_MASK, 4); 269 outb(4, EISA_INT1_MASK);
284 EISA_WRITE_8(EISA_INT2_MASK, 2); 270 outb(2, EISA_INT2_MASK);
285 EISA_WRITE_8(EISA_INT1_MASK, 1); 271 outb(1, EISA_INT1_MASK);
286 EISA_WRITE_8(EISA_INT2_MASK, 1); 272 outb(1, EISA_INT2_MASK);
287 EISA_WRITE_8(EISA_INT1_MASK, 0xfb); 273 outb(0xfb, EISA_INT1_MASK);
288 EISA_WRITE_8(EISA_INT2_MASK, 0xff); 274 outb(0xff, EISA_INT2_MASK);
289 EISA_WRITE_8(EISA_DMA2_WRITE_SINGLE, 0); 275 outb(0, EISA_DMA2_WRITE_SINGLE);
290 276
291 for (i = SGINT_EISA; i < (SGINT_EISA + EISA_MAX_IRQ); i++) { 277 for (i = SGINT_EISA; i < (SGINT_EISA + EISA_MAX_IRQ); i++) {
292 irq_desc[i].status = IRQ_DISABLED; 278 irq_desc[i].status = IRQ_DISABLED;
diff --git a/arch/mips/sgi-ip22/ip22-setup.c b/arch/mips/sgi-ip22/ip22-setup.c
index 0e96a5d67993..5e59b4c8876b 100644
--- a/arch/mips/sgi-ip22/ip22-setup.c
+++ b/arch/mips/sgi-ip22/ip22-setup.c
@@ -53,7 +53,7 @@ EXPORT_SYMBOL(ip22_do_break);
53extern void ip22_be_init(void) __init; 53extern void ip22_be_init(void) __init;
54extern void ip22_time_init(void) __init; 54extern void ip22_time_init(void) __init;
55 55
56static int __init ip22_setup(void) 56void __init plat_setup(void)
57{ 57{
58 char *ctype; 58 char *ctype;
59 59
@@ -137,8 +137,4 @@ static int __init ip22_setup(void)
137 } 137 }
138 } 138 }
139#endif 139#endif
140
141 return 0;
142} 140}
143
144early_initcall(ip22_setup);
diff --git a/arch/mips/sgi-ip27/Kconfig b/arch/mips/sgi-ip27/Kconfig
new file mode 100644
index 000000000000..7b0bc4437243
--- /dev/null
+++ b/arch/mips/sgi-ip27/Kconfig
@@ -0,0 +1,54 @@
1#config SGI_SN0_XXL
2# bool "IP27 XXL"
3# depends on SGI_IP27
4# This options adds support for userspace processes upto 16TB size.
5# Normally the limit is just .5TB.
6
7config SGI_SN0_N_MODE
8 bool "IP27 N-Mode"
9 depends on SGI_IP27
10 help
11 The nodes of Origin 200, Origin 2000 and Onyx 2 systems can be
12 configured in either N-Modes which allows for more nodes or M-Mode
13 which allows for more memory. Your system is most probably
14 running in M-Mode, so you should say N here.
15
16config ARCH_DISCONTIGMEM_ENABLE
17 bool
18 default y if SGI_IP27
19 help
20 Say Y to upport efficient handling of discontiguous physical memory,
21 for architectures which are either NUMA (Non-Uniform Memory Access)
22 or have huge holes in the physical address space for other reasons.
23 See <file:Documentation/vm/numa> for more.
24
25config NUMA
26 bool "NUMA Support"
27 depends on SGI_IP27
28 help
29 Say Y to compile the kernel to support NUMA (Non-Uniform Memory
30 Access). This option is for configuring high-end multiprocessor
31 server machines. If in doubt, say N.
32
33config MAPPED_KERNEL
34 bool "Mapped kernel support"
35 depends on SGI_IP27
36 help
37 Change the way a Linux kernel is loaded into memory on a MIPS64
38 machine. This is required in order to support text replication and
39 NUMA. If you need to understand it, read the source code.
40
41config REPLICATE_KTEXT
42 bool "Kernel text replication support"
43 depends on SGI_IP27
44 help
45 Say Y here to enable replicating the kernel text across multiple
46 nodes in a NUMA cluster. This trades memory for speed.
47
48config REPLICATE_EXHANDLERS
49 bool "Exception handler replication support"
50 depends on SGI_IP27
51 help
52 Say Y here to enable replicating the kernel exception handlers
53 across multiple nodes in a NUMA cluster. This trades memory for
54 speed.
diff --git a/arch/mips/sgi-ip27/ip27-berr.c b/arch/mips/sgi-ip27/ip27-berr.c
index e1829a5d3b19..07631a97670b 100644
--- a/arch/mips/sgi-ip27/ip27-berr.c
+++ b/arch/mips/sgi-ip27/ip27-berr.c
@@ -10,6 +10,7 @@
10#include <linux/init.h> 10#include <linux/init.h>
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/module.h> 12#include <linux/module.h>
13#include <linux/signal.h> /* for SIGBUS */
13 14
14#include <asm/module.h> 15#include <asm/module.h>
15#include <asm/sn/addrs.h> 16#include <asm/sn/addrs.h>
diff --git a/arch/mips/sgi-ip27/ip27-console.c b/arch/mips/sgi-ip27/ip27-console.c
index d97f5b5ef844..3e1ac299b804 100644
--- a/arch/mips/sgi-ip27/ip27-console.c
+++ b/arch/mips/sgi-ip27/ip27-console.c
@@ -30,8 +30,10 @@
30static inline struct ioc3_uartregs *console_uart(void) 30static inline struct ioc3_uartregs *console_uart(void)
31{ 31{
32 struct ioc3 *ioc3; 32 struct ioc3 *ioc3;
33 nasid_t nasid;
33 34
34 ioc3 = (struct ioc3 *)KL_CONFIG_CH_CONS_INFO(get_nasid())->memory_base; 35 nasid = (master_nasid == INVALID_NASID) ? get_nasid() : master_nasid;
36 ioc3 = (struct ioc3 *)KL_CONFIG_CH_CONS_INFO(nasid)->memory_base;
35 37
36 return &ioc3->sregs.uarta; 38 return &ioc3->sregs.uarta;
37} 39}
diff --git a/arch/mips/sgi-ip27/ip27-init.c b/arch/mips/sgi-ip27/ip27-init.c
index 6dcee5c46c74..8651a0e75404 100644
--- a/arch/mips/sgi-ip27/ip27-init.c
+++ b/arch/mips/sgi-ip27/ip27-init.c
@@ -56,12 +56,12 @@ static void __init per_hub_init(cnodeid_t cnode)
56{ 56{
57 struct hub_data *hub = hub_data(cnode); 57 struct hub_data *hub = hub_data(cnode);
58 nasid_t nasid = COMPACT_TO_NASID_NODEID(cnode); 58 nasid_t nasid = COMPACT_TO_NASID_NODEID(cnode);
59 int i;
59 60
60 cpu_set(smp_processor_id(), hub->h_cpus); 61 cpu_set(smp_processor_id(), hub->h_cpus);
61 62
62 if (test_and_set_bit(cnode, hub_init_mask)) 63 if (test_and_set_bit(cnode, hub_init_mask))
63 return; 64 return;
64
65 /* 65 /*
66 * Set CRB timeout at 5ms, (< PI timeout of 10ms) 66 * Set CRB timeout at 5ms, (< PI timeout of 10ms)
67 */ 67 */
@@ -88,6 +88,24 @@ static void __init per_hub_init(cnodeid_t cnode)
88 __flush_cache_all(); 88 __flush_cache_all();
89 } 89 }
90#endif 90#endif
91
92 /*
93 * Some interrupts are reserved by hardware or by software convention.
94 * Mark these as reserved right away so they won't be used accidently
95 * later.
96 */
97 for (i = 0; i <= BASE_PCI_IRQ; i++) {
98 __set_bit(i, hub->irq_alloc_mask);
99 LOCAL_HUB_CLR_INTR(INT_PEND0_BASELVL + i);
100 }
101
102 __set_bit(IP_PEND0_6_63, hub->irq_alloc_mask);
103 LOCAL_HUB_S(PI_INT_PEND_MOD, IP_PEND0_6_63);
104
105 for (i = NI_BRDCAST_ERR_A; i <= MSC_PANIC_INTR; i++) {
106 __set_bit(i, hub->irq_alloc_mask);
107 LOCAL_HUB_CLR_INTR(INT_PEND1_BASELVL + i);
108 }
91} 109}
92 110
93void __init per_cpu_init(void) 111void __init per_cpu_init(void)
@@ -104,30 +122,12 @@ void __init per_cpu_init(void)
104 122
105 clear_c0_status(ST0_IM); 123 clear_c0_status(ST0_IM);
106 124
125 per_hub_init(cnode);
126
107 for (i = 0; i < LEVELS_PER_SLICE; i++) 127 for (i = 0; i < LEVELS_PER_SLICE; i++)
108 si->level_to_irq[i] = -1; 128 si->level_to_irq[i] = -1;
109 129
110 /* 130 /*
111 * Some interrupts are reserved by hardware or by software convention.
112 * Mark these as reserved right away so they won't be used accidently
113 * later.
114 */
115 for (i = 0; i <= BASE_PCI_IRQ; i++) {
116 __set_bit(i, si->irq_alloc_mask);
117 LOCAL_HUB_S(PI_INT_PEND_MOD, i);
118 }
119
120 __set_bit(IP_PEND0_6_63, si->irq_alloc_mask);
121 LOCAL_HUB_S(PI_INT_PEND_MOD, IP_PEND0_6_63);
122
123 for (i = NI_BRDCAST_ERR_A; i <= MSC_PANIC_INTR; i++) {
124 __set_bit(i, si->irq_alloc_mask + 1);
125 LOCAL_HUB_S(PI_INT_PEND_MOD, i);
126 }
127
128 LOCAL_HUB_L(PI_INT_PEND0);
129
130 /*
131 * We use this so we can find the local hub's data as fast as only 131 * We use this so we can find the local hub's data as fast as only
132 * possible. 132 * possible.
133 */ 133 */
@@ -140,8 +140,6 @@ void __init per_cpu_init(void)
140 install_cpu_nmi_handler(cputoslice(cpu)); 140 install_cpu_nmi_handler(cputoslice(cpu));
141 141
142 set_c0_status(SRB_DEV0 | SRB_DEV1); 142 set_c0_status(SRB_DEV0 | SRB_DEV1);
143
144 per_hub_init(cnode);
145} 143}
146 144
147/* 145/*
@@ -198,7 +196,7 @@ extern void ip27_setup_console(void);
198extern void ip27_time_init(void); 196extern void ip27_time_init(void);
199extern void ip27_reboot_setup(void); 197extern void ip27_reboot_setup(void);
200 198
201static int __init ip27_setup(void) 199void __init plat_setup(void)
202{ 200{
203 hubreg_t p, e, n_mode; 201 hubreg_t p, e, n_mode;
204 nasid_t nid; 202 nasid_t nid;
@@ -245,8 +243,4 @@ static int __init ip27_setup(void)
245 set_io_port_base(IO_BASE); 243 set_io_port_base(IO_BASE);
246 244
247 board_time_init = ip27_time_init; 245 board_time_init = ip27_time_init;
248
249 return 0;
250} 246}
251
252early_initcall(ip27_setup);
diff --git a/arch/mips/sgi-ip27/ip27-irq.c b/arch/mips/sgi-ip27/ip27-irq.c
index 61817a18aed2..73e5e52781d8 100644
--- a/arch/mips/sgi-ip27/ip27-irq.c
+++ b/arch/mips/sgi-ip27/ip27-irq.c
@@ -5,6 +5,9 @@
5 * Copyright (C) 1999, 2000 Silicon Graphics, Inc. 5 * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
6 * Copyright (C) 1999 - 2001 Kanoj Sarcar 6 * Copyright (C) 1999 - 2001 Kanoj Sarcar
7 */ 7 */
8
9#undef DEBUG
10
8#include <linux/config.h> 11#include <linux/config.h>
9#include <linux/init.h> 12#include <linux/init.h>
10#include <linux/irq.h> 13#include <linux/irq.h>
@@ -14,11 +17,11 @@
14#include <linux/types.h> 17#include <linux/types.h>
15#include <linux/interrupt.h> 18#include <linux/interrupt.h>
16#include <linux/ioport.h> 19#include <linux/ioport.h>
17#include <linux/irq.h>
18#include <linux/timex.h> 20#include <linux/timex.h>
19#include <linux/slab.h> 21#include <linux/slab.h>
20#include <linux/random.h> 22#include <linux/random.h>
21#include <linux/smp_lock.h> 23#include <linux/smp_lock.h>
24#include <linux/kernel.h>
22#include <linux/kernel_stat.h> 25#include <linux/kernel_stat.h>
23#include <linux/delay.h> 26#include <linux/delay.h>
24#include <linux/bitops.h> 27#include <linux/bitops.h>
@@ -37,13 +40,6 @@
37#include <asm/sn/hub.h> 40#include <asm/sn/hub.h>
38#include <asm/sn/intr.h> 41#include <asm/sn/intr.h>
39 42
40#undef DEBUG_IRQ
41#ifdef DEBUG_IRQ
42#define DBG(x...) printk(x)
43#else
44#define DBG(x...)
45#endif
46
47/* 43/*
48 * Linux has a controller-independent x86 interrupt architecture. 44 * Linux has a controller-independent x86 interrupt architecture.
49 * every controller has a 'controller-template', that is used 45 * every controller has a 'controller-template', that is used
@@ -74,14 +70,15 @@ extern int irq_to_slot[];
74 70
75static inline int alloc_level(int cpu, int irq) 71static inline int alloc_level(int cpu, int irq)
76{ 72{
73 struct hub_data *hub = hub_data(cpu_to_node(cpu));
77 struct slice_data *si = cpu_data[cpu].data; 74 struct slice_data *si = cpu_data[cpu].data;
78 int level; /* pre-allocated entries */ 75 int level;
79 76
80 level = find_first_zero_bit(si->irq_alloc_mask, LEVELS_PER_SLICE); 77 level = find_first_zero_bit(hub->irq_alloc_mask, LEVELS_PER_SLICE);
81 if (level >= LEVELS_PER_SLICE) 78 if (level >= LEVELS_PER_SLICE)
82 panic("Cpu %d flooded with devices\n", cpu); 79 panic("Cpu %d flooded with devices\n", cpu);
83 80
84 __set_bit(level, si->irq_alloc_mask); 81 __set_bit(level, hub->irq_alloc_mask);
85 si->level_to_irq[level] = irq; 82 si->level_to_irq[level] = irq;
86 83
87 return level; 84 return level;
@@ -216,9 +213,11 @@ static int intr_connect_level(int cpu, int bit)
216{ 213{
217 nasid_t nasid = COMPACT_TO_NASID_NODEID(cpu_to_node(cpu)); 214 nasid_t nasid = COMPACT_TO_NASID_NODEID(cpu_to_node(cpu));
218 struct slice_data *si = cpu_data[cpu].data; 215 struct slice_data *si = cpu_data[cpu].data;
216 unsigned long flags;
219 217
220 __set_bit(bit, si->irq_enable_mask); 218 set_bit(bit, si->irq_enable_mask);
221 219
220 local_irq_save(flags);
222 if (!cputoslice(cpu)) { 221 if (!cputoslice(cpu)) {
223 REMOTE_HUB_S(nasid, PI_INT_MASK0_A, si->irq_enable_mask[0]); 222 REMOTE_HUB_S(nasid, PI_INT_MASK0_A, si->irq_enable_mask[0]);
224 REMOTE_HUB_S(nasid, PI_INT_MASK1_A, si->irq_enable_mask[1]); 223 REMOTE_HUB_S(nasid, PI_INT_MASK1_A, si->irq_enable_mask[1]);
@@ -226,6 +225,7 @@ static int intr_connect_level(int cpu, int bit)
226 REMOTE_HUB_S(nasid, PI_INT_MASK0_B, si->irq_enable_mask[0]); 225 REMOTE_HUB_S(nasid, PI_INT_MASK0_B, si->irq_enable_mask[0]);
227 REMOTE_HUB_S(nasid, PI_INT_MASK1_B, si->irq_enable_mask[1]); 226 REMOTE_HUB_S(nasid, PI_INT_MASK1_B, si->irq_enable_mask[1]);
228 } 227 }
228 local_irq_restore(flags);
229 229
230 return 0; 230 return 0;
231} 231}
@@ -235,7 +235,7 @@ static int intr_disconnect_level(int cpu, int bit)
235 nasid_t nasid = COMPACT_TO_NASID_NODEID(cpu_to_node(cpu)); 235 nasid_t nasid = COMPACT_TO_NASID_NODEID(cpu_to_node(cpu));
236 struct slice_data *si = cpu_data[cpu].data; 236 struct slice_data *si = cpu_data[cpu].data;
237 237
238 __clear_bit(bit, si->irq_enable_mask); 238 clear_bit(bit, si->irq_enable_mask);
239 239
240 if (!cputoslice(cpu)) { 240 if (!cputoslice(cpu)) {
241 REMOTE_HUB_S(nasid, PI_INT_MASK0_A, si->irq_enable_mask[0]); 241 REMOTE_HUB_S(nasid, PI_INT_MASK0_A, si->irq_enable_mask[0]);
@@ -261,7 +261,7 @@ static unsigned int startup_bridge_irq(unsigned int irq)
261 bc = IRQ_TO_BRIDGE(irq); 261 bc = IRQ_TO_BRIDGE(irq);
262 bridge = bc->base; 262 bridge = bc->base;
263 263
264 DBG("bridge_startup(): irq= 0x%x pin=%d\n", irq, pin); 264 pr_debug("bridge_startup(): irq= 0x%x pin=%d\n", irq, pin);
265 /* 265 /*
266 * "map" irq to a swlevel greater than 6 since the first 6 bits 266 * "map" irq to a swlevel greater than 6 since the first 6 bits
267 * of INT_PEND0 are taken 267 * of INT_PEND0 are taken
@@ -298,12 +298,13 @@ static unsigned int startup_bridge_irq(unsigned int irq)
298static void shutdown_bridge_irq(unsigned int irq) 298static void shutdown_bridge_irq(unsigned int irq)
299{ 299{
300 struct bridge_controller *bc = IRQ_TO_BRIDGE(irq); 300 struct bridge_controller *bc = IRQ_TO_BRIDGE(irq);
301 struct hub_data *hub = hub_data(cpu_to_node(bc->irq_cpu));
301 bridge_t *bridge = bc->base; 302 bridge_t *bridge = bc->base;
302 struct slice_data *si = cpu_data[bc->irq_cpu].data; 303 struct slice_data *si = cpu_data[bc->irq_cpu].data;
303 int pin, swlevel; 304 int pin, swlevel;
304 cpuid_t cpu; 305 cpuid_t cpu;
305 306
306 DBG("bridge_shutdown: irq 0x%x\n", irq); 307 pr_debug("bridge_shutdown: irq 0x%x\n", irq);
307 pin = SLOT_FROM_PCI_IRQ(irq); 308 pin = SLOT_FROM_PCI_IRQ(irq);
308 309
309 /* 310 /*
@@ -313,7 +314,7 @@ static void shutdown_bridge_irq(unsigned int irq)
313 swlevel = find_level(&cpu, irq); 314 swlevel = find_level(&cpu, irq);
314 intr_disconnect_level(cpu, swlevel); 315 intr_disconnect_level(cpu, swlevel);
315 316
316 __clear_bit(swlevel, si->irq_alloc_mask); 317 __clear_bit(swlevel, hub->irq_alloc_mask);
317 si->level_to_irq[swlevel] = -1; 318 si->level_to_irq[swlevel] = -1;
318 319
319 bridge->b_int_enable &= ~(1 << pin); 320 bridge->b_int_enable &= ~(1 << pin);
@@ -433,25 +434,24 @@ void install_ipi(void)
433 int slice = LOCAL_HUB_L(PI_CPU_NUM); 434 int slice = LOCAL_HUB_L(PI_CPU_NUM);
434 int cpu = smp_processor_id(); 435 int cpu = smp_processor_id();
435 struct slice_data *si = cpu_data[cpu].data; 436 struct slice_data *si = cpu_data[cpu].data;
436 hubreg_t mask, set; 437 struct hub_data *hub = hub_data(cpu_to_node(cpu));
438 int resched, call;
439
440 resched = CPU_RESCHED_A_IRQ + slice;
441 __set_bit(resched, hub->irq_alloc_mask);
442 __set_bit(resched, si->irq_enable_mask);
443 LOCAL_HUB_CLR_INTR(resched);
444
445 call = CPU_CALL_A_IRQ + slice;
446 __set_bit(call, hub->irq_alloc_mask);
447 __set_bit(call, si->irq_enable_mask);
448 LOCAL_HUB_CLR_INTR(call);
437 449
438 if (slice == 0) { 450 if (slice == 0) {
439 LOCAL_HUB_CLR_INTR(CPU_RESCHED_A_IRQ); 451 LOCAL_HUB_S(PI_INT_MASK0_A, si->irq_enable_mask[0]);
440 LOCAL_HUB_CLR_INTR(CPU_CALL_A_IRQ); 452 LOCAL_HUB_S(PI_INT_MASK1_A, si->irq_enable_mask[1]);
441 mask = LOCAL_HUB_L(PI_INT_MASK0_A); /* Slice A */
442 set = (1UL << CPU_RESCHED_A_IRQ) | (1UL << CPU_CALL_A_IRQ);
443 mask |= set;
444 si->irq_enable_mask[0] |= set;
445 si->irq_alloc_mask[0] |= set;
446 LOCAL_HUB_S(PI_INT_MASK0_A, mask);
447 } else { 453 } else {
448 LOCAL_HUB_CLR_INTR(CPU_RESCHED_B_IRQ); 454 LOCAL_HUB_S(PI_INT_MASK0_B, si->irq_enable_mask[0]);
449 LOCAL_HUB_CLR_INTR(CPU_CALL_B_IRQ); 455 LOCAL_HUB_S(PI_INT_MASK1_B, si->irq_enable_mask[1]);
450 mask = LOCAL_HUB_L(PI_INT_MASK0_B); /* Slice B */
451 set = (1UL << CPU_RESCHED_B_IRQ) | (1UL << CPU_CALL_B_IRQ);
452 mask |= set;
453 si->irq_enable_mask[1] |= set;
454 si->irq_alloc_mask[1] |= set;
455 LOCAL_HUB_S(PI_INT_MASK0_B, mask);
456 } 456 }
457} 457}
diff --git a/arch/mips/sgi-ip27/ip27-smp.c b/arch/mips/sgi-ip27/ip27-smp.c
index 17f768cba94f..3a8291b7d26d 100644
--- a/arch/mips/sgi-ip27/ip27-smp.c
+++ b/arch/mips/sgi-ip27/ip27-smp.c
@@ -127,37 +127,28 @@ void cpu_node_probe(void)
127 printk("Discovered %d cpus on %d nodes\n", highest + 1, num_online_nodes()); 127 printk("Discovered %d cpus on %d nodes\n", highest + 1, num_online_nodes());
128} 128}
129 129
130static void intr_clear_bits(nasid_t nasid, volatile hubreg_t *pend, 130static __init void intr_clear_all(nasid_t nasid)
131 int base_level)
132{ 131{
133 volatile hubreg_t bits;
134 int i; 132 int i;
135 133
136 /* Check pending interrupts */
137 if ((bits = HUB_L(pend)) != 0)
138 for (i = 0; i < N_INTPEND_BITS; i++)
139 if (bits & (1 << i))
140 LOCAL_HUB_CLR_INTR(base_level + i);
141}
142
143static void intr_clear_all(nasid_t nasid)
144{
145 REMOTE_HUB_S(nasid, PI_INT_MASK0_A, 0); 134 REMOTE_HUB_S(nasid, PI_INT_MASK0_A, 0);
146 REMOTE_HUB_S(nasid, PI_INT_MASK0_B, 0); 135 REMOTE_HUB_S(nasid, PI_INT_MASK0_B, 0);
147 REMOTE_HUB_S(nasid, PI_INT_MASK1_A, 0); 136 REMOTE_HUB_S(nasid, PI_INT_MASK1_A, 0);
148 REMOTE_HUB_S(nasid, PI_INT_MASK1_B, 0); 137 REMOTE_HUB_S(nasid, PI_INT_MASK1_B, 0);
149 intr_clear_bits(nasid, REMOTE_HUB_ADDR(nasid, PI_INT_PEND0), 138
150 INT_PEND0_BASELVL); 139 for (i = 0; i < 128; i++)
151 intr_clear_bits(nasid, REMOTE_HUB_ADDR(nasid, PI_INT_PEND1), 140 REMOTE_HUB_CLR_INTR(nasid, i);
152 INT_PEND1_BASELVL);
153} 141}
154 142
155void __init prom_prepare_cpus(unsigned int max_cpus) 143void __init prom_prepare_cpus(unsigned int max_cpus)
156{ 144{
157 cnodeid_t cnode; 145 cnodeid_t cnode;
158 146
159 for_each_online_node(cnode) 147 for_each_online_node(cnode) {
148 if (cnode == 0)
149 continue;
160 intr_clear_all(COMPACT_TO_NASID_NODEID(cnode)); 150 intr_clear_all(COMPACT_TO_NASID_NODEID(cnode));
151 }
161 152
162 replicate_kernel_text(); 153 replicate_kernel_text();
163 154
diff --git a/arch/mips/sgi-ip32/ip32-irq.c b/arch/mips/sgi-ip32/ip32-irq.c
index fc3a8e90d763..2eb22d692ed9 100644
--- a/arch/mips/sgi-ip32/ip32-irq.c
+++ b/arch/mips/sgi-ip32/ip32-irq.c
@@ -163,14 +163,13 @@ static void end_cpu_irq(unsigned int irq)
163#define mask_and_ack_cpu_irq disable_cpu_irq 163#define mask_and_ack_cpu_irq disable_cpu_irq
164 164
165static struct hw_interrupt_type ip32_cpu_interrupt = { 165static struct hw_interrupt_type ip32_cpu_interrupt = {
166 "IP32 CPU", 166 .typename = "IP32 CPU",
167 startup_cpu_irq, 167 .startup = startup_cpu_irq,
168 shutdown_cpu_irq, 168 .shutdown = shutdown_cpu_irq,
169 enable_cpu_irq, 169 .enable = enable_cpu_irq,
170 disable_cpu_irq, 170 .disable = disable_cpu_irq,
171 mask_and_ack_cpu_irq, 171 .ack = mask_and_ack_cpu_irq,
172 end_cpu_irq, 172 .end = end_cpu_irq,
173 NULL
174}; 173};
175 174
176/* 175/*
@@ -234,14 +233,13 @@ static void end_crime_irq(unsigned int irq)
234#define shutdown_crime_irq disable_crime_irq 233#define shutdown_crime_irq disable_crime_irq
235 234
236static struct hw_interrupt_type ip32_crime_interrupt = { 235static struct hw_interrupt_type ip32_crime_interrupt = {
237 "IP32 CRIME", 236 .typename = "IP32 CRIME",
238 startup_crime_irq, 237 .startup = startup_crime_irq,
239 shutdown_crime_irq, 238 .shutdown = shutdown_crime_irq,
240 enable_crime_irq, 239 .enable = enable_crime_irq,
241 disable_crime_irq, 240 .disable = disable_crime_irq,
242 mask_and_ack_crime_irq, 241 .ack = mask_and_ack_crime_irq,
243 end_crime_irq, 242 .end = end_crime_irq,
244 NULL
245}; 243};
246 244
247/* 245/*
@@ -294,14 +292,13 @@ static void end_macepci_irq(unsigned int irq)
294#define mask_and_ack_macepci_irq disable_macepci_irq 292#define mask_and_ack_macepci_irq disable_macepci_irq
295 293
296static struct hw_interrupt_type ip32_macepci_interrupt = { 294static struct hw_interrupt_type ip32_macepci_interrupt = {
297 "IP32 MACE PCI", 295 .typename = "IP32 MACE PCI",
298 startup_macepci_irq, 296 .startup = startup_macepci_irq,
299 shutdown_macepci_irq, 297 .shutdown = shutdown_macepci_irq,
300 enable_macepci_irq, 298 .enable = enable_macepci_irq,
301 disable_macepci_irq, 299 .disable = disable_macepci_irq,
302 mask_and_ack_macepci_irq, 300 .ack = mask_and_ack_macepci_irq,
303 end_macepci_irq, 301 .end = end_macepci_irq,
304 NULL
305}; 302};
306 303
307/* This is used for MACE ISA interrupts. That means bits 4-6 in the 304/* This is used for MACE ISA interrupts. That means bits 4-6 in the
@@ -425,14 +422,13 @@ static void end_maceisa_irq(unsigned irq)
425#define shutdown_maceisa_irq disable_maceisa_irq 422#define shutdown_maceisa_irq disable_maceisa_irq
426 423
427static struct hw_interrupt_type ip32_maceisa_interrupt = { 424static struct hw_interrupt_type ip32_maceisa_interrupt = {
428 "IP32 MACE ISA", 425 .typename = "IP32 MACE ISA",
429 startup_maceisa_irq, 426 .startup = startup_maceisa_irq,
430 shutdown_maceisa_irq, 427 .shutdown = shutdown_maceisa_irq,
431 enable_maceisa_irq, 428 .enable = enable_maceisa_irq,
432 disable_maceisa_irq, 429 .disable = disable_maceisa_irq,
433 mask_and_ack_maceisa_irq, 430 .ack = mask_and_ack_maceisa_irq,
434 end_maceisa_irq, 431 .end = end_maceisa_irq,
435 NULL
436}; 432};
437 433
438/* This is used for regular non-ISA, non-PCI MACE interrupts. That means 434/* This is used for regular non-ISA, non-PCI MACE interrupts. That means
@@ -476,14 +472,13 @@ static void end_mace_irq(unsigned int irq)
476#define mask_and_ack_mace_irq disable_mace_irq 472#define mask_and_ack_mace_irq disable_mace_irq
477 473
478static struct hw_interrupt_type ip32_mace_interrupt = { 474static struct hw_interrupt_type ip32_mace_interrupt = {
479 "IP32 MACE", 475 .typename = "IP32 MACE",
480 startup_mace_irq, 476 .startup = startup_mace_irq,
481 shutdown_mace_irq, 477 .shutdown = shutdown_mace_irq,
482 enable_mace_irq, 478 .enable = enable_mace_irq,
483 disable_mace_irq, 479 .disable = disable_mace_irq,
484 mask_and_ack_mace_irq, 480 .ack = mask_and_ack_mace_irq,
485 end_mace_irq, 481 .end = end_mace_irq,
486 NULL
487}; 482};
488 483
489static void ip32_unknown_interrupt(struct pt_regs *regs) 484static void ip32_unknown_interrupt(struct pt_regs *regs)
diff --git a/arch/mips/sgi-ip32/ip32-memory.c b/arch/mips/sgi-ip32/ip32-memory.c
index fc76ca92bab9..d37d40a3cdae 100644
--- a/arch/mips/sgi-ip32/ip32-memory.c
+++ b/arch/mips/sgi-ip32/ip32-memory.c
@@ -36,8 +36,8 @@ void __init prom_meminit (void)
36 if (base + size > (256 << 20)) 36 if (base + size > (256 << 20))
37 base += CRIME_HI_MEM_BASE; 37 base += CRIME_HI_MEM_BASE;
38 38
39 printk("CRIME MC: bank %u base 0x%016lx size %luMB\n", 39 printk("CRIME MC: bank %u base 0x%016lx size %luMiB\n",
40 bank, base, size); 40 bank, base, size >> 20);
41 add_memory_region (base, size, BOOT_MEM_RAM); 41 add_memory_region (base, size, BOOT_MEM_RAM);
42 } 42 }
43} 43}
diff --git a/arch/mips/sgi-ip32/ip32-setup.c b/arch/mips/sgi-ip32/ip32-setup.c
index 8d270be58224..d10a269aeae1 100644
--- a/arch/mips/sgi-ip32/ip32-setup.c
+++ b/arch/mips/sgi-ip32/ip32-setup.c
@@ -92,7 +92,7 @@ void __init ip32_timer_setup(struct irqaction *irq)
92 setup_irq(IP32_R4K_TIMER_IRQ, irq); 92 setup_irq(IP32_R4K_TIMER_IRQ, irq);
93} 93}
94 94
95static int __init ip32_setup(void) 95void __init plat_setup(void)
96{ 96{
97 board_be_init = ip32_be_init; 97 board_be_init = ip32_be_init;
98 98
@@ -152,8 +152,4 @@ static int __init ip32_setup(void)
152 } 152 }
153 } 153 }
154#endif 154#endif
155
156 return 0;
157} 155}
158
159early_initcall(ip32_setup);
diff --git a/arch/mips/sibyte/Kconfig b/arch/mips/sibyte/Kconfig
new file mode 100644
index 000000000000..de46f62ac462
--- /dev/null
+++ b/arch/mips/sibyte/Kconfig
@@ -0,0 +1,161 @@
1config SIBYTE_SB1250
2 bool
3 select HW_HAS_PCI
4 select SIBYTE_HAS_LDT
5 select SIBYTE_SB1xxx_SOC
6
7config SIBYTE_BCM1120
8 bool
9 select SIBYTE_BCM112X
10 select SIBYTE_SB1xxx_SOC
11
12config SIBYTE_BCM1125
13 bool
14 select HW_HAS_PCI
15 select SIBYTE_BCM112X
16 select SIBYTE_SB1xxx_SOC
17
18config SIBYTE_BCM1125H
19 bool
20 select HW_HAS_PCI
21 select SIBYTE_BCM112X
22 select SIBYTE_HAS_LDT
23 select SIBYTE_SB1xxx_SOC
24
25config SIBYTE_BCM112X
26 bool
27 select SIBYTE_SB1xxx_SOC
28
29config SIBYTE_BCM1x80
30 bool
31 select HW_HAS_PCI
32 select SIBYTE_SB1xxx_SOC
33
34config SIBYTE_BCM1x55
35 bool
36 select HW_HAS_PCI
37 select SIBYTE_SB1xxx_SOC
38
39config SIBYTE_SB1xxx_SOC
40 bool
41 depends on EXPERIMENTAL
42 select DMA_COHERENT
43 select SIBYTE_CFE
44 select SWAP_IO_SPACE
45 select SYS_SUPPORTS_32BIT_KERNEL
46 select SYS_SUPPORTS_64BIT_KERNEL
47
48choice
49 prompt "SiByte SOC Stepping"
50 depends on SIBYTE_SB1xxx_SOC
51
52config CPU_SB1_PASS_1
53 bool "1250 Pass1"
54 depends on SIBYTE_SB1250
55 select CPU_HAS_PREFETCH
56
57config CPU_SB1_PASS_2_1250
58 bool "1250 An"
59 depends on SIBYTE_SB1250
60 select CPU_SB1_PASS_2
61 help
62 Also called BCM1250 Pass 2
63
64config CPU_SB1_PASS_2_2
65 bool "1250 Bn"
66 depends on SIBYTE_SB1250
67 select CPU_HAS_PREFETCH
68 help
69 Also called BCM1250 Pass 2.2
70
71config CPU_SB1_PASS_4
72 bool "1250 Cn"
73 depends on SIBYTE_SB1250
74 select CPU_HAS_PREFETCH
75 help
76 Also called BCM1250 Pass 3
77
78config CPU_SB1_PASS_2_112x
79 bool "112x Hybrid"
80 depends on SIBYTE_BCM112X
81 select CPU_SB1_PASS_2
82
83config CPU_SB1_PASS_3
84 bool "112x An"
85 depends on SIBYTE_BCM112X
86 select CPU_HAS_PREFETCH
87
88endchoice
89
90config CPU_SB1_PASS_2
91 bool
92
93config SIBYTE_HAS_LDT
94 bool
95 depends on PCI && (SIBYTE_SB1250 || SIBYTE_BCM1125H)
96 default y
97
98config SIMULATION
99 bool "Running under simulation"
100 depends on SIBYTE_SB1xxx_SOC
101 help
102 Build a kernel suitable for running under the GDB simulator.
103 Primarily adjusts the kernel's notion of time.
104
105config CONFIG_SB1_CEX_ALWAYS_FATAL
106 bool "All cache exceptions considered fatal (no recovery attempted)"
107 depends on SIBYTE_SB1xxx_SOC
108
109config CONFIG_SB1_CERR_STALL
110 bool "Stall (rather than panic) on fatal cache error"
111 depends on SIBYTE_SB1xxx_SOC
112
113config SIBYTE_CFE
114 bool "Booting from CFE"
115 depends on SIBYTE_SB1xxx_SOC
116 help
117 Make use of the CFE API for enumerating available memory,
118 controlling secondary CPUs, and possibly console output.
119
120config SIBYTE_CFE_CONSOLE
121 bool "Use firmware console"
122 depends on SIBYTE_CFE
123 help
124 Use the CFE API's console write routines during boot. Other console
125 options (VT console, sb1250 duart console, etc.) should not be
126 configured.
127
128config SIBYTE_STANDALONE
129 bool
130 depends on SIBYTE_SB1xxx_SOC && !SIBYTE_CFE
131 default y
132
133config SIBYTE_STANDALONE_RAM_SIZE
134 int "Memory size (in megabytes)"
135 depends on SIBYTE_STANDALONE
136 default "32"
137
138config SIBYTE_BUS_WATCHER
139 bool "Support for Bus Watcher statistics"
140 depends on SIBYTE_SB1xxx_SOC
141 help
142 Handle and keep statistics on the bus error interrupts (COR_ECC,
143 BAD_ECC, IO_BUS).
144
145config SIBYTE_BW_TRACE
146 bool "Capture bus trace before bus error"
147 depends on SIBYTE_BUS_WATCHER
148 help
149 Run a continuous bus trace, dumping the raw data as soon as
150 a ZBbus error is detected. Cannot work if ZBbus profiling
151 is turned on, and also will interfere with JTAG-based trace
152 buffer activity. Raw buffer data is dumped to console, and
153 must be processed off-line.
154
155config SIBYTE_SB1250_PROF
156 bool "Support for SB1/SOC profiling - SB1/SCD perf counters"
157 depends on SIBYTE_SB1xxx_SOC
158
159config SIBYTE_TBPROF
160 bool "Support for ZBbus profiling"
161 depends on SIBYTE_SB1xxx_SOC
diff --git a/arch/mips/sibyte/bcm1480/Makefile b/arch/mips/sibyte/bcm1480/Makefile
new file mode 100644
index 000000000000..538d5a51ae94
--- /dev/null
+++ b/arch/mips/sibyte/bcm1480/Makefile
@@ -0,0 +1,5 @@
1obj-y := setup.o irq.o irq_handler.o time.o
2
3obj-$(CONFIG_SMP) += smp.o
4
5EXTRA_AFLAGS := $(CFLAGS)
diff --git a/arch/mips/sibyte/bcm1480/irq.c b/arch/mips/sibyte/bcm1480/irq.c
new file mode 100644
index 000000000000..b2a1ba5d23df
--- /dev/null
+++ b/arch/mips/sibyte/bcm1480/irq.c
@@ -0,0 +1,476 @@
1/*
2 * Copyright (C) 2000,2001,2002,2003,2004 Broadcom Corporation
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 */
18#include <linux/config.h>
19#include <linux/kernel.h>
20#include <linux/init.h>
21#include <linux/linkage.h>
22#include <linux/interrupt.h>
23#include <linux/spinlock.h>
24#include <linux/mm.h>
25#include <linux/slab.h>
26#include <linux/kernel_stat.h>
27
28#include <asm/errno.h>
29#include <asm/signal.h>
30#include <asm/system.h>
31#include <asm/ptrace.h>
32#include <asm/io.h>
33
34#include <asm/sibyte/bcm1480_regs.h>
35#include <asm/sibyte/bcm1480_int.h>
36#include <asm/sibyte/bcm1480_scd.h>
37
38#include <asm/sibyte/sb1250_uart.h>
39#include <asm/sibyte/sb1250.h>
40
41/*
42 * These are the routines that handle all the low level interrupt stuff.
43 * Actions handled here are: initialization of the interrupt map, requesting of
44 * interrupt lines by handlers, dispatching if interrupts to handlers, probing
45 * for interrupt lines
46 */
47
48
49#define shutdown_bcm1480_irq disable_bcm1480_irq
50static void end_bcm1480_irq(unsigned int irq);
51static void enable_bcm1480_irq(unsigned int irq);
52static void disable_bcm1480_irq(unsigned int irq);
53static unsigned int startup_bcm1480_irq(unsigned int irq);
54static void ack_bcm1480_irq(unsigned int irq);
55#ifdef CONFIG_SMP
56static void bcm1480_set_affinity(unsigned int irq, cpumask_t mask);
57#endif
58
59#ifdef CONFIG_PCI
60extern unsigned long ht_eoi_space;
61#endif
62
63#ifdef CONFIG_KGDB
64#include <asm/gdb-stub.h>
65extern void breakpoint(void);
66static int kgdb_irq;
67#ifdef CONFIG_GDB_CONSOLE
68extern void register_gdb_console(void);
69#endif
70
71/* kgdb is on when configured. Pass "nokgdb" kernel arg to turn it off */
72static int kgdb_flag = 1;
73static int __init nokgdb(char *str)
74{
75 kgdb_flag = 0;
76 return 1;
77}
78__setup("nokgdb", nokgdb);
79
80/* Default to UART1 */
81int kgdb_port = 1;
82#ifdef CONFIG_SIBYTE_SB1250_DUART
83extern char sb1250_duart_present[];
84#endif
85#endif
86
87static struct hw_interrupt_type bcm1480_irq_type = {
88 .typename = "BCM1480-IMR",
89 .startup = startup_bcm1480_irq,
90 .shutdown = shutdown_bcm1480_irq,
91 .enable = enable_bcm1480_irq,
92 .disable = disable_bcm1480_irq,
93 .ack = ack_bcm1480_irq,
94 .end = end_bcm1480_irq,
95#ifdef CONFIG_SMP
96 .set_affinity = bcm1480_set_affinity
97#endif
98};
99
100/* Store the CPU id (not the logical number) */
101int bcm1480_irq_owner[BCM1480_NR_IRQS];
102
103DEFINE_SPINLOCK(bcm1480_imr_lock);
104
105void bcm1480_mask_irq(int cpu, int irq)
106{
107 unsigned long flags;
108 u64 cur_ints,hl_spacing;
109
110 spin_lock_irqsave(&bcm1480_imr_lock, flags);
111 hl_spacing = 0;
112 if ((irq >= BCM1480_NR_IRQS_HALF) && (irq <= BCM1480_NR_IRQS)) {
113 hl_spacing = BCM1480_IMR_HL_SPACING;
114 irq -= BCM1480_NR_IRQS_HALF;
115 }
116 cur_ints = ____raw_readq(IOADDR(A_BCM1480_IMR_MAPPER(cpu) + R_BCM1480_IMR_INTERRUPT_MASK_H + hl_spacing));
117 cur_ints |= (((u64) 1) << irq);
118 ____raw_writeq(cur_ints, IOADDR(A_BCM1480_IMR_MAPPER(cpu) + R_BCM1480_IMR_INTERRUPT_MASK_H + hl_spacing));
119 spin_unlock_irqrestore(&bcm1480_imr_lock, flags);
120}
121
122void bcm1480_unmask_irq(int cpu, int irq)
123{
124 unsigned long flags;
125 u64 cur_ints,hl_spacing;
126
127 spin_lock_irqsave(&bcm1480_imr_lock, flags);
128 hl_spacing = 0;
129 if ((irq >= BCM1480_NR_IRQS_HALF) && (irq <= BCM1480_NR_IRQS)) {
130 hl_spacing = BCM1480_IMR_HL_SPACING;
131 irq -= BCM1480_NR_IRQS_HALF;
132 }
133 cur_ints = ____raw_readq(IOADDR(A_BCM1480_IMR_MAPPER(cpu) + R_BCM1480_IMR_INTERRUPT_MASK_H + hl_spacing));
134 cur_ints &= ~(((u64) 1) << irq);
135 ____raw_writeq(cur_ints, IOADDR(A_BCM1480_IMR_MAPPER(cpu) + R_BCM1480_IMR_INTERRUPT_MASK_H + hl_spacing));
136 spin_unlock_irqrestore(&bcm1480_imr_lock, flags);
137}
138
139#ifdef CONFIG_SMP
140static void bcm1480_set_affinity(unsigned int irq, cpumask_t mask)
141{
142 int i = 0, old_cpu, cpu, int_on;
143 u64 cur_ints;
144 irq_desc_t *desc = irq_desc + irq;
145 unsigned long flags;
146 unsigned int irq_dirty;
147
148 i = first_cpu(mask);
149 if (next_cpu(i, mask) <= NR_CPUS) {
150 printk("attempted to set irq affinity for irq %d to multiple CPUs\n", irq);
151 return;
152 }
153
154 /* Convert logical CPU to physical CPU */
155 cpu = cpu_logical_map(i);
156
157 /* Protect against other affinity changers and IMR manipulation */
158 spin_lock_irqsave(&desc->lock, flags);
159 spin_lock(&bcm1480_imr_lock);
160
161 /* Swizzle each CPU's IMR (but leave the IP selection alone) */
162 old_cpu = bcm1480_irq_owner[irq];
163 irq_dirty = irq;
164 if ((irq_dirty >= BCM1480_NR_IRQS_HALF) && (irq_dirty <= BCM1480_NR_IRQS)) {
165 irq_dirty -= BCM1480_NR_IRQS_HALF;
166 }
167
168 int k;
169 for (k=0; k<2; k++) { /* Loop through high and low interrupt mask register */
170 cur_ints = ____raw_readq(IOADDR(A_BCM1480_IMR_MAPPER(old_cpu) + R_BCM1480_IMR_INTERRUPT_MASK_H + (k*BCM1480_IMR_HL_SPACING)));
171 int_on = !(cur_ints & (((u64) 1) << irq_dirty));
172 if (int_on) {
173 /* If it was on, mask it */
174 cur_ints |= (((u64) 1) << irq_dirty);
175 ____raw_writeq(cur_ints, IOADDR(A_BCM1480_IMR_MAPPER(old_cpu) + R_BCM1480_IMR_INTERRUPT_MASK_H + (k*BCM1480_IMR_HL_SPACING)));
176 }
177 bcm1480_irq_owner[irq] = cpu;
178 if (int_on) {
179 /* unmask for the new CPU */
180 cur_ints = ____raw_readq(IOADDR(A_BCM1480_IMR_MAPPER(cpu) + R_BCM1480_IMR_INTERRUPT_MASK_H + (k*BCM1480_IMR_HL_SPACING)));
181 cur_ints &= ~(((u64) 1) << irq_dirty);
182 ____raw_writeq(cur_ints, IOADDR(A_BCM1480_IMR_MAPPER(cpu) + R_BCM1480_IMR_INTERRUPT_MASK_H + (k*BCM1480_IMR_HL_SPACING)));
183 }
184 }
185 spin_unlock(&bcm1480_imr_lock);
186 spin_unlock_irqrestore(&desc->lock, flags);
187}
188#endif
189
190
191/* Defined in arch/mips/sibyte/bcm1480/irq_handler.S */
192extern void bcm1480_irq_handler(void);
193
194/*****************************************************************************/
195
196static unsigned int startup_bcm1480_irq(unsigned int irq)
197{
198 bcm1480_unmask_irq(bcm1480_irq_owner[irq], irq);
199
200 return 0; /* never anything pending */
201}
202
203
204static void disable_bcm1480_irq(unsigned int irq)
205{
206 bcm1480_mask_irq(bcm1480_irq_owner[irq], irq);
207}
208
209static void enable_bcm1480_irq(unsigned int irq)
210{
211 bcm1480_unmask_irq(bcm1480_irq_owner[irq], irq);
212}
213
214
215static void ack_bcm1480_irq(unsigned int irq)
216{
217 u64 pending;
218 unsigned int irq_dirty;
219
220 /*
221 * If the interrupt was an HT interrupt, now is the time to
222 * clear it. NOTE: we assume the HT bridge was set up to
223 * deliver the interrupts to all CPUs (which makes affinity
224 * changing easier for us)
225 */
226 irq_dirty = irq;
227 if ((irq_dirty >= BCM1480_NR_IRQS_HALF) && (irq_dirty <= BCM1480_NR_IRQS)) {
228 irq_dirty -= BCM1480_NR_IRQS_HALF;
229 }
230 int k;
231 for (k=0; k<2; k++) { /* Loop through high and low LDT interrupts */
232 pending = __raw_readq(IOADDR(A_BCM1480_IMR_REGISTER(bcm1480_irq_owner[irq],
233 R_BCM1480_IMR_LDT_INTERRUPT_H + (k*BCM1480_IMR_HL_SPACING))));
234 pending &= ((u64)1 << (irq_dirty));
235 if (pending) {
236#ifdef CONFIG_SMP
237 int i;
238 for (i=0; i<NR_CPUS; i++) {
239 /*
240 * Clear for all CPUs so an affinity switch
241 * doesn't find an old status
242 */
243 __raw_writeq(pending, IOADDR(A_BCM1480_IMR_REGISTER(cpu_logical_map(i),
244 R_BCM1480_IMR_LDT_INTERRUPT_CLR_H + (k*BCM1480_IMR_HL_SPACING))));
245 }
246#else
247 __raw_writeq(pending, IOADDR(A_BCM1480_IMR_REGISTER(0, R_BCM1480_IMR_LDT_INTERRUPT_CLR_H + (k*BCM1480_IMR_HL_SPACING))));
248#endif
249
250 /*
251 * Generate EOI. For Pass 1 parts, EOI is a nop. For
252 * Pass 2, the LDT world may be edge-triggered, but
253 * this EOI shouldn't hurt. If they are
254 * level-sensitive, the EOI is required.
255 */
256#ifdef CONFIG_PCI
257 if (ht_eoi_space)
258 *(uint32_t *)(ht_eoi_space+(irq<<16)+(7<<2)) = 0;
259#endif
260 }
261 }
262 bcm1480_mask_irq(bcm1480_irq_owner[irq], irq);
263}
264
265
266static void end_bcm1480_irq(unsigned int irq)
267{
268 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
269 bcm1480_unmask_irq(bcm1480_irq_owner[irq], irq);
270 }
271}
272
273
274void __init init_bcm1480_irqs(void)
275{
276 int i;
277
278 for (i = 0; i < NR_IRQS; i++) {
279 irq_desc[i].status = IRQ_DISABLED;
280 irq_desc[i].action = 0;
281 irq_desc[i].depth = 1;
282 if (i < BCM1480_NR_IRQS) {
283 irq_desc[i].handler = &bcm1480_irq_type;
284 bcm1480_irq_owner[i] = 0;
285 } else {
286 irq_desc[i].handler = &no_irq_type;
287 }
288 }
289}
290
291
292static irqreturn_t bcm1480_dummy_handler(int irq, void *dev_id,
293 struct pt_regs *regs)
294{
295 return IRQ_NONE;
296}
297
298static struct irqaction bcm1480_dummy_action = {
299 .handler = bcm1480_dummy_handler,
300 .flags = 0,
301 .mask = CPU_MASK_NONE,
302 .name = "bcm1480-private",
303 .next = NULL,
304 .dev_id = 0
305};
306
307int bcm1480_steal_irq(int irq)
308{
309 irq_desc_t *desc = irq_desc + irq;
310 unsigned long flags;
311 int retval = 0;
312
313 if (irq >= BCM1480_NR_IRQS)
314 return -EINVAL;
315
316 spin_lock_irqsave(&desc->lock,flags);
317 /* Don't allow sharing at all for these */
318 if (desc->action != NULL)
319 retval = -EBUSY;
320 else {
321 desc->action = &bcm1480_dummy_action;
322 desc->depth = 0;
323 }
324 spin_unlock_irqrestore(&desc->lock,flags);
325 return 0;
326}
327
328/*
329 * init_IRQ is called early in the boot sequence from init/main.c. It
330 * is responsible for setting up the interrupt mapper and installing the
331 * handler that will be responsible for dispatching interrupts to the
332 * "right" place.
333 */
334/*
335 * For now, map all interrupts to IP[2]. We could save
336 * some cycles by parceling out system interrupts to different
337 * IP lines, but keep it simple for bringup. We'll also direct
338 * all interrupts to a single CPU; we should probably route
339 * PCI and LDT to one cpu and everything else to the other
340 * to balance the load a bit.
341 *
342 * On the second cpu, everything is set to IP5, which is
343 * ignored, EXCEPT the mailbox interrupt. That one is
344 * set to IP[2] so it is handled. This is needed so we
345 * can do cross-cpu function calls, as requred by SMP
346 */
347
348#define IMR_IP2_VAL K_BCM1480_INT_MAP_I0
349#define IMR_IP3_VAL K_BCM1480_INT_MAP_I1
350#define IMR_IP4_VAL K_BCM1480_INT_MAP_I2
351#define IMR_IP5_VAL K_BCM1480_INT_MAP_I3
352#define IMR_IP6_VAL K_BCM1480_INT_MAP_I4
353
354void __init arch_init_irq(void)
355{
356
357 unsigned int i, cpu;
358 u64 tmp;
359 unsigned int imask = STATUSF_IP4 | STATUSF_IP3 | STATUSF_IP2 |
360 STATUSF_IP1 | STATUSF_IP0;
361
362 /* Default everything to IP2 */
363 /* Start with _high registers which has no bit 0 interrupt source */
364 for (i = 1; i < BCM1480_NR_IRQS_HALF; i++) { /* was I0 */
365 for (cpu = 0; cpu < 4; cpu++) {
366 __raw_writeq(IMR_IP2_VAL,
367 IOADDR(A_BCM1480_IMR_REGISTER(cpu,
368 R_BCM1480_IMR_INTERRUPT_MAP_BASE_H) + (i << 3)));
369 }
370 }
371
372 /* Now do _low registers */
373 for (i = 0; i < BCM1480_NR_IRQS_HALF; i++) {
374 for (cpu = 0; cpu < 4; cpu++) {
375 __raw_writeq(IMR_IP2_VAL,
376 IOADDR(A_BCM1480_IMR_REGISTER(cpu,
377 R_BCM1480_IMR_INTERRUPT_MAP_BASE_L) + (i << 3)));
378 }
379 }
380
381 init_bcm1480_irqs();
382
383 /*
384 * Map the high 16 bits of mailbox_0 registers to IP[3], for
385 * inter-cpu messages
386 */
387 /* Was I1 */
388 for (cpu = 0; cpu < 4; cpu++) {
389 __raw_writeq(IMR_IP3_VAL, IOADDR(A_BCM1480_IMR_REGISTER(cpu, R_BCM1480_IMR_INTERRUPT_MAP_BASE_H) +
390 (K_BCM1480_INT_MBOX_0_0 << 3)));
391 }
392
393
394 /* Clear the mailboxes. The firmware may leave them dirty */
395 for (cpu = 0; cpu < 4; cpu++) {
396 __raw_writeq(0xffffffffffffffffULL,
397 IOADDR(A_BCM1480_IMR_REGISTER(cpu, R_BCM1480_IMR_MAILBOX_0_CLR_CPU)));
398 __raw_writeq(0xffffffffffffffffULL,
399 IOADDR(A_BCM1480_IMR_REGISTER(cpu, R_BCM1480_IMR_MAILBOX_1_CLR_CPU)));
400 }
401
402
403 /* Mask everything except the high 16 bit of mailbox_0 registers for all cpus */
404 tmp = ~((u64) 0) ^ ( (((u64) 1) << K_BCM1480_INT_MBOX_0_0));
405 for (cpu = 0; cpu < 4; cpu++) {
406 __raw_writeq(tmp, IOADDR(A_BCM1480_IMR_REGISTER(cpu, R_BCM1480_IMR_INTERRUPT_MASK_H)));
407 }
408 tmp = ~((u64) 0);
409 for (cpu = 0; cpu < 4; cpu++) {
410 __raw_writeq(tmp, IOADDR(A_BCM1480_IMR_REGISTER(cpu, R_BCM1480_IMR_INTERRUPT_MASK_L)));
411 }
412
413 bcm1480_steal_irq(K_BCM1480_INT_MBOX_0_0);
414
415 /*
416 * Note that the timer interrupts are also mapped, but this is
417 * done in bcm1480_time_init(). Also, the profiling driver
418 * does its own management of IP7.
419 */
420
421#ifdef CONFIG_KGDB
422 imask |= STATUSF_IP6;
423#endif
424 /* Enable necessary IPs, disable the rest */
425 change_c0_status(ST0_IM, imask);
426 set_except_vector(0, bcm1480_irq_handler);
427
428#ifdef CONFIG_KGDB
429 if (kgdb_flag) {
430 kgdb_irq = K_BCM1480_INT_UART_0 + kgdb_port;
431
432#ifdef CONFIG_SIBYTE_SB1250_DUART
433 sb1250_duart_present[kgdb_port] = 0;
434#endif
435 /* Setup uart 1 settings, mapper */
436 /* QQQ FIXME */
437 __raw_writeq(M_DUART_IMR_BRK, IO_SPACE_BASE + A_DUART_IMRREG(kgdb_port));
438
439 bcm1480_steal_irq(kgdb_irq);
440 __raw_writeq(IMR_IP6_VAL,
441 IO_SPACE_BASE + A_BCM1480_IMR_REGISTER(0, R_BCM1480_IMR_INTERRUPT_MAP_BASE_H) +
442 (kgdb_irq<<3));
443 bcm1480_unmask_irq(0, kgdb_irq);
444
445#ifdef CONFIG_GDB_CONSOLE
446 register_gdb_console();
447#endif
448 prom_printf("Waiting for GDB on UART port %d\n", kgdb_port);
449 set_debug_traps();
450 breakpoint();
451 }
452#endif
453}
454
455#ifdef CONFIG_KGDB
456
457#include <linux/delay.h>
458
459#define duart_out(reg, val) csr_out32(val, IOADDR(A_DUART_CHANREG(kgdb_port,reg)))
460#define duart_in(reg) csr_in32(IOADDR(A_DUART_CHANREG(kgdb_port,reg)))
461
462void bcm1480_kgdb_interrupt(struct pt_regs *regs)
463{
464 /*
465 * Clear break-change status (allow some time for the remote
466 * host to stop the break, since we would see another
467 * interrupt on the end-of-break too)
468 */
469 kstat.irqs[smp_processor_id()][kgdb_irq]++;
470 mdelay(500);
471 duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT |
472 M_DUART_RX_EN | M_DUART_TX_EN);
473 set_async_breakpoint(&regs->cp0_epc);
474}
475
476#endif /* CONFIG_KGDB */
diff --git a/arch/mips/sibyte/bcm1480/irq_handler.S b/arch/mips/sibyte/bcm1480/irq_handler.S
new file mode 100644
index 000000000000..408db88d050f
--- /dev/null
+++ b/arch/mips/sibyte/bcm1480/irq_handler.S
@@ -0,0 +1,165 @@
1/*
2 * Copyright (C) 2000,2001,2002,2003,2004 Broadcom Corporation
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 */
18
19/*
20 * bcm1480_irq_handler() is the routine that is actually called when an
21 * interrupt occurs. It is installed as the exception vector handler in
22 * init_IRQ() in arch/mips/sibyte/bcm1480/irq.c
23 *
24 * In the handle we figure out which interrupts need handling, and use that
25 * to call the dispatcher, which will take care of actually calling
26 * registered handlers
27 *
28 * Note that we take care of all raised interrupts in one go at the handler.
29 * This is more BSDish than the Indy code, and also, IMHO, more sane.
30 */
31#include <linux/config.h>
32
33#include <asm/addrspace.h>
34#include <asm/asm.h>
35#include <asm/mipsregs.h>
36#include <asm/regdef.h>
37#include <asm/stackframe.h>
38#include <asm/sibyte/sb1250_defs.h>
39#include <asm/sibyte/bcm1480_regs.h>
40#include <asm/sibyte/bcm1480_int.h>
41
42/*
43 * What a pain. We have to be really careful saving the upper 32 bits of any
44 * register across function calls if we don't want them trashed--since were
45 * running in -o32, the calling routing never saves the full 64 bits of a
46 * register across a function call. Being the interrupt handler, we're
47 * guaranteed that interrupts are disabled during this code so we don't have
48 * to worry about random interrupts blasting the high 32 bits.
49 */
50
51 .text
52 .set push
53 .set noreorder
54 .set noat
55 .set mips64
56 #.set mips4
57 .align 5
58 NESTED(bcm1480_irq_handler, PT_SIZE, sp)
59 SAVE_ALL
60 CLI
61
62#ifdef CONFIG_SIBYTE_BCM1480_PROF
63 /* Set compare to count to silence count/compare timer interrupts */
64 mfc0 t1, CP0_COUNT
65 mtc0 t1, CP0_COMPARE /* pause to clear IP[7] bit of cause ? */
66#endif
67 /* Read cause */
68 mfc0 s0, CP0_CAUSE
69
70#ifdef CONFIG_SIBYTE_BCM1480_PROF
71 /* Cpu performance counter interrupt is routed to IP[7] */
72 andi t1, s0, CAUSEF_IP7
73 beqz t1, 0f
74 srl t1, s0, (CAUSEB_BD-2) /* Shift BD bit to bit 2 */
75 and t1, t1, 0x4 /* mask to get just BD bit */
76#ifdef CONFIG_MIPS64
77 dmfc0 a0, CP0_EPC
78 daddu a0, a0, t1 /* a0 = EPC + (BD ? 4 : 0) */
79#else
80 mfc0 a0, CP0_EPC
81 addu a0, a0, t1 /* a0 = EPC + (BD ? 4 : 0) */
82#endif
83 jal sbprof_cpu_intr
84 nop
85 j ret_from_irq
86 nop
870:
88#endif
89
90 /* Timer interrupt is routed to IP[4] */
91 andi t1, s0, CAUSEF_IP4
92 beqz t1, 1f
93 nop
94 jal bcm1480_timer_interrupt
95 move a0, sp /* Pass the registers along */
96 j ret_from_irq
97 nop /* delay slot */
981:
99
100#ifdef CONFIG_SMP
101 /* Mailbox interrupt is routed to IP[3] */
102 andi t1, s0, CAUSEF_IP3
103 beqz t1, 2f
104 nop
105 jal bcm1480_mailbox_interrupt
106 move a0, sp
107 j ret_from_irq
108 nop /* delay slot */
1092:
110#endif
111
112#ifdef CONFIG_KGDB
113 /* KGDB (uart 1) interrupt is routed to IP[6] */
114 andi t1, s0, CAUSEF_IP6
115 beqz t1, 3f
116 nop /* delay slot */
117 jal bcm1480_kgdb_interrupt
118 move a0, sp
119 j ret_from_irq
120 nop /* delay slot */
1213:
122#endif
123
124 and t1, s0, CAUSEF_IP2
125 beqz t1, 9f
126 nop
127
128 /*
129 * Default...we've hit an IP[2] interrupt, which means we've got
130 * to check the 1480 interrupt registers to figure out what to do
131 * Need to detect which CPU we're on, now that smp_affinity is
132 * supported.
133 */
134 PTR_LA v0, CKSEG1 + A_BCM1480_IMR_CPU0_BASE
135#ifdef CONFIG_SMP
136 lw t1, TI_CPU($28)
137 sll t1, t1, BCM1480_IMR_REGISTER_SPACING_SHIFT
138 addu v0, v0, t1
139#endif
140
141 /* Read IP[2] status (get both high and low halves of status) */
142 ld s0, R_BCM1480_IMR_INTERRUPT_STATUS_BASE_H(v0)
143 ld s1, R_BCM1480_IMR_INTERRUPT_STATUS_BASE_L(v0)
144
145 move s2, zero /* intr number */
146 li s3, 64
147
148 beqz s0, 9f /* No interrupts. Return. */
149 move a1, sp
150
151 xori s4, s0, 1 /* if s0 (_H) == 1, it's a low intr, so... */
152 movz s2, s3, s4 /* start the intr number at 64, and */
153 movz s0, s1, s4 /* look at the low status value. */
154
155 dclz s1, s0 /* Find the next interrupt. */
156 dsubu a0, zero, s1
157 daddiu a0, a0, 63
158 jal do_IRQ
159 daddu a0, a0, s2
160
1619: j ret_from_irq
162 nop
163
164 .set pop
165 END(bcm1480_irq_handler)
diff --git a/arch/mips/sibyte/bcm1480/setup.c b/arch/mips/sibyte/bcm1480/setup.c
new file mode 100644
index 000000000000..d90a0b87874c
--- /dev/null
+++ b/arch/mips/sibyte/bcm1480/setup.c
@@ -0,0 +1,136 @@
1/*
2 * Copyright (C) 2000,2001,2002,2003,2004 Broadcom Corporation
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 */
18#include <linux/config.h>
19#include <linux/kernel.h>
20#include <linux/reboot.h>
21#include <linux/string.h>
22
23#include <asm/bootinfo.h>
24#include <asm/mipsregs.h>
25#include <asm/io.h>
26#include <asm/sibyte/sb1250.h>
27
28#include <asm/sibyte/bcm1480_regs.h>
29#include <asm/sibyte/bcm1480_scd.h>
30#include <asm/sibyte/sb1250_scd.h>
31
32unsigned int sb1_pass;
33unsigned int soc_pass;
34unsigned int soc_type;
35unsigned int periph_rev;
36unsigned int zbbus_mhz;
37
38static unsigned int part_type;
39
40static char *soc_str;
41static char *pass_str;
42
43static inline int setup_bcm1x80_bcm1x55(void);
44
45/* Setup code likely to be common to all SiByte platforms */
46
47static inline int sys_rev_decode(void)
48{
49 int ret = 0;
50
51 switch (soc_type) {
52 case K_SYS_SOC_TYPE_BCM1x80:
53 if (part_type == K_SYS_PART_BCM1480)
54 soc_str = "BCM1480";
55 else if (part_type == K_SYS_PART_BCM1280)
56 soc_str = "BCM1280";
57 else
58 soc_str = "BCM1x80";
59 ret = setup_bcm1x80_bcm1x55();
60 break;
61
62 case K_SYS_SOC_TYPE_BCM1x55:
63 if (part_type == K_SYS_PART_BCM1455)
64 soc_str = "BCM1455";
65 else if (part_type == K_SYS_PART_BCM1255)
66 soc_str = "BCM1255";
67 else
68 soc_str = "BCM1x55";
69 ret = setup_bcm1x80_bcm1x55();
70 break;
71
72 default:
73 prom_printf("Unknown part type %x\n", part_type);
74 ret = 1;
75 break;
76 }
77 return ret;
78}
79
80static inline int setup_bcm1x80_bcm1x55(void)
81{
82 int ret = 0;
83
84 switch (soc_pass) {
85 case K_SYS_REVISION_BCM1480_S0:
86 periph_rev = 1;
87 pass_str = "S0 (pass1)";
88 break;
89 case K_SYS_REVISION_BCM1480_A1:
90 periph_rev = 1;
91 pass_str = "A1 (pass1)";
92 break;
93 case K_SYS_REVISION_BCM1480_A2:
94 periph_rev = 1;
95 pass_str = "A2 (pass1)";
96 break;
97 case K_SYS_REVISION_BCM1480_A3:
98 periph_rev = 1;
99 pass_str = "A3 (pass1)";
100 break;
101 case K_SYS_REVISION_BCM1480_B0:
102 periph_rev = 1;
103 pass_str = "B0 (pass2)";
104 break;
105 default:
106 prom_printf("Unknown %s rev %x\n", soc_str, soc_pass);
107 periph_rev = 1;
108 pass_str = "Unknown Revision";
109 break;
110 }
111 return ret;
112}
113
114void bcm1480_setup(void)
115{
116 uint64_t sys_rev;
117 int plldiv;
118
119 sb1_pass = read_c0_prid() & 0xff;
120 sys_rev = __raw_readq(IOADDR(A_SCD_SYSTEM_REVISION));
121 soc_type = SYS_SOC_TYPE(sys_rev);
122 part_type = G_SYS_PART(sys_rev);
123 soc_pass = G_SYS_REVISION(sys_rev);
124
125 if (sys_rev_decode()) {
126 prom_printf("Restart after failure to identify SiByte chip\n");
127 machine_restart(NULL);
128 }
129
130 plldiv = G_BCM1480_SYS_PLL_DIV(__raw_readq(IOADDR(A_SCD_SYSTEM_CFG)));
131 zbbus_mhz = ((plldiv >> 1) * 50) + ((plldiv & 1) * 25);
132
133 prom_printf("Broadcom SiByte %s %s @ %d MHz (SB-1A rev %d)\n",
134 soc_str, pass_str, zbbus_mhz * 2, sb1_pass);
135 prom_printf("Board type: %s\n", get_system_type());
136}
diff --git a/arch/mips/sibyte/bcm1480/smp.c b/arch/mips/sibyte/bcm1480/smp.c
new file mode 100644
index 000000000000..584a4b33faac
--- /dev/null
+++ b/arch/mips/sibyte/bcm1480/smp.c
@@ -0,0 +1,110 @@
1/*
2 * Copyright (C) 2001,2002,2004 Broadcom Corporation
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 */
18
19#include <linux/init.h>
20#include <linux/delay.h>
21#include <linux/smp.h>
22#include <linux/kernel_stat.h>
23
24#include <asm/mmu_context.h>
25#include <asm/io.h>
26#include <asm/sibyte/sb1250.h>
27#include <asm/sibyte/bcm1480_regs.h>
28#include <asm/sibyte/bcm1480_int.h>
29
30extern void smp_call_function_interrupt(void);
31
32/*
33 * These are routines for dealing with the bcm1480 smp capabilities
34 * independent of board/firmware
35 */
36
37static void *mailbox_0_set_regs[] = {
38 IOADDR(A_BCM1480_IMR_CPU0_BASE + R_BCM1480_IMR_MAILBOX_0_SET_CPU),
39 IOADDR(A_BCM1480_IMR_CPU1_BASE + R_BCM1480_IMR_MAILBOX_0_SET_CPU),
40 IOADDR(A_BCM1480_IMR_CPU2_BASE + R_BCM1480_IMR_MAILBOX_0_SET_CPU),
41 IOADDR(A_BCM1480_IMR_CPU3_BASE + R_BCM1480_IMR_MAILBOX_0_SET_CPU),
42};
43
44static void *mailbox_0_clear_regs[] = {
45 IOADDR(A_BCM1480_IMR_CPU0_BASE + R_BCM1480_IMR_MAILBOX_0_CLR_CPU),
46 IOADDR(A_BCM1480_IMR_CPU1_BASE + R_BCM1480_IMR_MAILBOX_0_CLR_CPU),
47 IOADDR(A_BCM1480_IMR_CPU2_BASE + R_BCM1480_IMR_MAILBOX_0_CLR_CPU),
48 IOADDR(A_BCM1480_IMR_CPU3_BASE + R_BCM1480_IMR_MAILBOX_0_CLR_CPU),
49};
50
51static void *mailbox_0_regs[] = {
52 IOADDR(A_BCM1480_IMR_CPU0_BASE + R_BCM1480_IMR_MAILBOX_0_CPU),
53 IOADDR(A_BCM1480_IMR_CPU1_BASE + R_BCM1480_IMR_MAILBOX_0_CPU),
54 IOADDR(A_BCM1480_IMR_CPU2_BASE + R_BCM1480_IMR_MAILBOX_0_CPU),
55 IOADDR(A_BCM1480_IMR_CPU3_BASE + R_BCM1480_IMR_MAILBOX_0_CPU),
56};
57
58/*
59 * SMP init and finish on secondary CPUs
60 */
61void bcm1480_smp_init(void)
62{
63 unsigned int imask = STATUSF_IP4 | STATUSF_IP3 | STATUSF_IP2 |
64 STATUSF_IP1 | STATUSF_IP0;
65
66 /* Set interrupt mask, but don't enable */
67 change_c0_status(ST0_IM, imask);
68}
69
70void bcm1480_smp_finish(void)
71{
72 extern void bcm1480_time_init(void);
73 bcm1480_time_init();
74 local_irq_enable();
75}
76
77/*
78 * These are routines for dealing with the sb1250 smp capabilities
79 * independent of board/firmware
80 */
81
82/*
83 * Simple enough; everything is set up, so just poke the appropriate mailbox
84 * register, and we should be set
85 */
86void core_send_ipi(int cpu, unsigned int action)
87{
88 __raw_writeq((((u64)action)<< 48), mailbox_0_set_regs[cpu]);
89}
90
91void bcm1480_mailbox_interrupt(struct pt_regs *regs)
92{
93 int cpu = smp_processor_id();
94 unsigned int action;
95
96 kstat_this_cpu.irqs[K_BCM1480_INT_MBOX_0_0]++;
97 /* Load the mailbox register to figure out what we're supposed to do */
98 action = (__raw_readq(mailbox_0_regs[cpu]) >> 48) & 0xffff;
99
100 /* Clear the mailbox to clear the interrupt */
101 __raw_writeq(((u64)action)<<48, mailbox_0_clear_regs[cpu]);
102
103 /*
104 * Nothing to do for SMP_RESCHEDULE_YOURSELF; returning from the
105 * interrupt will do the reschedule for us
106 */
107
108 if (action & SMP_CALL_FUNCTION)
109 smp_call_function_interrupt();
110}
diff --git a/arch/mips/sibyte/bcm1480/time.c b/arch/mips/sibyte/bcm1480/time.c
new file mode 100644
index 000000000000..e545752695a1
--- /dev/null
+++ b/arch/mips/sibyte/bcm1480/time.c
@@ -0,0 +1,138 @@
1/*
2 * Copyright (C) 2000,2001,2004 Broadcom Corporation
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 */
18
19/*
20 * These are routines to set up and handle interrupts from the
21 * bcm1480 general purpose timer 0. We're using the timer as a
22 * system clock, so we set it up to run at 100 Hz. On every
23 * interrupt, we update our idea of what the time of day is,
24 * then call do_timer() in the architecture-independent kernel
25 * code to do general bookkeeping (e.g. update jiffies, run
26 * bottom halves, etc.)
27 */
28#include <linux/config.h>
29#include <linux/interrupt.h>
30#include <linux/sched.h>
31#include <linux/spinlock.h>
32#include <linux/kernel_stat.h>
33
34#include <asm/irq.h>
35#include <asm/ptrace.h>
36#include <asm/addrspace.h>
37#include <asm/time.h>
38#include <asm/io.h>
39
40#include <asm/sibyte/bcm1480_regs.h>
41#include <asm/sibyte/sb1250_regs.h>
42#include <asm/sibyte/bcm1480_int.h>
43#include <asm/sibyte/bcm1480_scd.h>
44
45#include <asm/sibyte/sb1250.h>
46
47
48#define IMR_IP2_VAL K_BCM1480_INT_MAP_I0
49#define IMR_IP3_VAL K_BCM1480_INT_MAP_I1
50#define IMR_IP4_VAL K_BCM1480_INT_MAP_I2
51
52extern int bcm1480_steal_irq(int irq);
53
54void bcm1480_time_init(void)
55{
56 int cpu = smp_processor_id();
57 int irq = K_BCM1480_INT_TIMER_0+cpu;
58
59 /* Only have 4 general purpose timers */
60 if (cpu > 3) {
61 BUG();
62 }
63
64 if (!cpu) {
65 /* Use our own gettimeoffset() routine */
66 do_gettimeoffset = bcm1480_gettimeoffset;
67 }
68
69 bcm1480_mask_irq(cpu, irq);
70
71 /* Map the timer interrupt to ip[4] of this cpu */
72 __raw_writeq(IMR_IP4_VAL, IOADDR(A_BCM1480_IMR_REGISTER(cpu, R_BCM1480_IMR_INTERRUPT_MAP_BASE_H)
73 + (irq<<3)));
74
75 /* the general purpose timer ticks at 1 Mhz independent of the rest of the system */
76 /* Disable the timer and set up the count */
77 __raw_writeq(0, IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG)));
78 __raw_writeq(
79#ifndef CONFIG_SIMULATION
80 1000000/HZ
81#else
82 50000/HZ
83#endif
84 , IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_INIT)));
85
86 /* Set the timer running */
87 __raw_writeq(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS,
88 IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG)));
89
90 bcm1480_unmask_irq(cpu, irq);
91 bcm1480_steal_irq(irq);
92 /*
93 * This interrupt is "special" in that it doesn't use the request_irq
94 * way to hook the irq line. The timer interrupt is initialized early
95 * enough to make this a major pain, and it's also firing enough to
96 * warrant a bit of special case code. bcm1480_timer_interrupt is
97 * called directly from irq_handler.S when IP[4] is set during an
98 * interrupt
99 */
100}
101
102#include <asm/sibyte/sb1250.h>
103
104void bcm1480_timer_interrupt(struct pt_regs *regs)
105{
106 int cpu = smp_processor_id();
107 int irq = K_BCM1480_INT_TIMER_0+cpu;
108
109 /* Reset the timer */
110 __raw_writeq(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS,
111 IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG)));
112
113 /*
114 * CPU 0 handles the global timer interrupt job
115 */
116 if (cpu == 0) {
117 ll_timer_interrupt(irq, regs);
118 }
119
120 /*
121 * every CPU should do profiling and process accouting
122 */
123 ll_local_timer_interrupt(irq, regs);
124}
125
126/*
127 * We use our own do_gettimeoffset() instead of the generic one,
128 * because the generic one does not work for SMP case.
129 * In addition, since we use general timer 0 for system time,
130 * we can get accurate intra-jiffy offset without calibration.
131 */
132unsigned long bcm1480_gettimeoffset(void)
133{
134 unsigned long count =
135 __raw_readq(IOADDR(A_SCD_TIMER_REGISTER(0, R_SCD_TIMER_CNT)));
136
137 return 1000000/HZ - count;
138}
diff --git a/arch/mips/sibyte/cfe/smp.c b/arch/mips/sibyte/cfe/smp.c
index e44ce1a9eea9..e8485124b8fc 100644
--- a/arch/mips/sibyte/cfe/smp.c
+++ b/arch/mips/sibyte/cfe/smp.c
@@ -70,8 +70,15 @@ void prom_boot_secondary(int cpu, struct task_struct *idle)
70 */ 70 */
71void prom_init_secondary(void) 71void prom_init_secondary(void)
72{ 72{
73#if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80)
74 extern void bcm1480_smp_init(void);
75 bcm1480_smp_init();
76#elif defined(CONFIG_SIBYTE_SB1250)
73 extern void sb1250_smp_init(void); 77 extern void sb1250_smp_init(void);
74 sb1250_smp_init(); 78 sb1250_smp_init();
79#else
80#error invalid SMP configuration
81#endif
75} 82}
76 83
77/* 84/*
@@ -80,8 +87,15 @@ void prom_init_secondary(void)
80 */ 87 */
81void prom_smp_finish(void) 88void prom_smp_finish(void)
82{ 89{
90#if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80)
91 extern void bcm1480_smp_finish(void);
92 bcm1480_smp_finish();
93#elif defined(CONFIG_SIBYTE_SB1250)
83 extern void sb1250_smp_finish(void); 94 extern void sb1250_smp_finish(void);
84 sb1250_smp_finish(); 95 sb1250_smp_finish();
96#else
97#error invalid SMP configuration
98#endif
85} 99}
86 100
87/* 101/*
diff --git a/arch/mips/sibyte/sb1250/bcm1250_tbprof.c b/arch/mips/sibyte/sb1250/bcm1250_tbprof.c
index 7f813ae9eaff..992e0d8dbb67 100644
--- a/arch/mips/sibyte/sb1250/bcm1250_tbprof.c
+++ b/arch/mips/sibyte/sb1250/bcm1250_tbprof.c
@@ -28,6 +28,8 @@
28#include <linux/fs.h> 28#include <linux/fs.h>
29#include <linux/errno.h> 29#include <linux/errno.h>
30#include <linux/reboot.h> 30#include <linux/reboot.h>
31#include <linux/smp_lock.h>
32#include <linux/wait.h>
31#include <asm/uaccess.h> 33#include <asm/uaccess.h>
32#include <asm/io.h> 34#include <asm/io.h>
33#include <asm/sibyte/sb1250.h> 35#include <asm/sibyte/sb1250.h>
@@ -64,24 +66,25 @@ static void arm_tb(void)
64 u_int64_t tb_options = M_SCD_TRACE_CFG_FREEZE_FULL; 66 u_int64_t tb_options = M_SCD_TRACE_CFG_FREEZE_FULL;
65 /* Generate an SCD_PERFCNT interrupt in TB_PERIOD Zclks to 67 /* Generate an SCD_PERFCNT interrupt in TB_PERIOD Zclks to
66 trigger start of trace. XXX vary sampling period */ 68 trigger start of trace. XXX vary sampling period */
67 bus_writeq(0, IOADDR(A_SCD_PERF_CNT_1)); 69 __raw_writeq(0, IOADDR(A_SCD_PERF_CNT_1));
68 scdperfcnt = bus_readq(IOADDR(A_SCD_PERF_CNT_CFG)); 70 scdperfcnt = __raw_readq(IOADDR(A_SCD_PERF_CNT_CFG));
69 /* Unfortunately, in Pass 2 we must clear all counters to knock down 71 /* Unfortunately, in Pass 2 we must clear all counters to knock down
70 a previous interrupt request. This means that bus profiling 72 a previous interrupt request. This means that bus profiling
71 requires ALL of the SCD perf counters. */ 73 requires ALL of the SCD perf counters. */
72 bus_writeq((scdperfcnt & ~M_SPC_CFG_SRC1) | // keep counters 0,2,3 as is 74 __raw_writeq((scdperfcnt & ~M_SPC_CFG_SRC1) |
73 M_SPC_CFG_ENABLE | // enable counting 75 // keep counters 0,2,3 as is
74 M_SPC_CFG_CLEAR | // clear all counters 76 M_SPC_CFG_ENABLE | // enable counting
75 V_SPC_CFG_SRC1(1), // counter 1 counts cycles 77 M_SPC_CFG_CLEAR | // clear all counters
76 IOADDR(A_SCD_PERF_CNT_CFG)); 78 V_SPC_CFG_SRC1(1), // counter 1 counts cycles
77 bus_writeq(next, IOADDR(A_SCD_PERF_CNT_1)); 79 IOADDR(A_SCD_PERF_CNT_CFG));
80 __raw_writeq(next, IOADDR(A_SCD_PERF_CNT_1));
78 /* Reset the trace buffer */ 81 /* Reset the trace buffer */
79 bus_writeq(M_SCD_TRACE_CFG_RESET, IOADDR(A_SCD_TRACE_CFG)); 82 __raw_writeq(M_SCD_TRACE_CFG_RESET, IOADDR(A_SCD_TRACE_CFG));
80#if 0 && defined(M_SCD_TRACE_CFG_FORCECNT) 83#if 0 && defined(M_SCD_TRACE_CFG_FORCECNT)
81 /* XXXKW may want to expose control to the data-collector */ 84 /* XXXKW may want to expose control to the data-collector */
82 tb_options |= M_SCD_TRACE_CFG_FORCECNT; 85 tb_options |= M_SCD_TRACE_CFG_FORCECNT;
83#endif 86#endif
84 bus_writeq(tb_options, IOADDR(A_SCD_TRACE_CFG)); 87 __raw_writeq(tb_options, IOADDR(A_SCD_TRACE_CFG));
85 sbp.tb_armed = 1; 88 sbp.tb_armed = 1;
86} 89}
87 90
@@ -93,23 +96,30 @@ static irqreturn_t sbprof_tb_intr(int irq, void *dev_id, struct pt_regs *regs)
93 /* XXX should use XKPHYS to make writes bypass L2 */ 96 /* XXX should use XKPHYS to make writes bypass L2 */
94 u_int64_t *p = sbp.sbprof_tbbuf[sbp.next_tb_sample++]; 97 u_int64_t *p = sbp.sbprof_tbbuf[sbp.next_tb_sample++];
95 /* Read out trace */ 98 /* Read out trace */
96 bus_writeq(M_SCD_TRACE_CFG_START_READ, IOADDR(A_SCD_TRACE_CFG)); 99 __raw_writeq(M_SCD_TRACE_CFG_START_READ,
100 IOADDR(A_SCD_TRACE_CFG));
97 __asm__ __volatile__ ("sync" : : : "memory"); 101 __asm__ __volatile__ ("sync" : : : "memory");
98 /* Loop runs backwards because bundles are read out in reverse order */ 102 /* Loop runs backwards because bundles are read out in reverse order */
99 for (i = 256 * 6; i > 0; i -= 6) { 103 for (i = 256 * 6; i > 0; i -= 6) {
100 // Subscripts decrease to put bundle in the order 104 // Subscripts decrease to put bundle in the order
101 // t0 lo, t0 hi, t1 lo, t1 hi, t2 lo, t2 hi 105 // t0 lo, t0 hi, t1 lo, t1 hi, t2 lo, t2 hi
102 p[i-1] = bus_readq(IOADDR(A_SCD_TRACE_READ)); // read t2 hi 106 p[i - 1] = __raw_readq(IOADDR(A_SCD_TRACE_READ));
103 p[i-2] = bus_readq(IOADDR(A_SCD_TRACE_READ)); // read t2 lo 107 // read t2 hi
104 p[i-3] = bus_readq(IOADDR(A_SCD_TRACE_READ)); // read t1 hi 108 p[i - 2] = __raw_readq(IOADDR(A_SCD_TRACE_READ));
105 p[i-4] = bus_readq(IOADDR(A_SCD_TRACE_READ)); // read t1 lo 109 // read t2 lo
106 p[i-5] = bus_readq(IOADDR(A_SCD_TRACE_READ)); // read t0 hi 110 p[i - 3] = __raw_readq(IOADDR(A_SCD_TRACE_READ));
107 p[i-6] = bus_readq(IOADDR(A_SCD_TRACE_READ)); // read t0 lo 111 // read t1 hi
112 p[i - 4] = __raw_readq(IOADDR(A_SCD_TRACE_READ));
113 // read t1 lo
114 p[i - 5] = __raw_readq(IOADDR(A_SCD_TRACE_READ));
115 // read t0 hi
116 p[i - 6] = __raw_readq(IOADDR(A_SCD_TRACE_READ));
117 // read t0 lo
108 } 118 }
109 if (!sbp.tb_enable) { 119 if (!sbp.tb_enable) {
110 DBG(printk(DEVNAME ": tb_intr shutdown\n")); 120 DBG(printk(DEVNAME ": tb_intr shutdown\n"));
111 bus_writeq(M_SCD_TRACE_CFG_RESET, 121 __raw_writeq(M_SCD_TRACE_CFG_RESET,
112 IOADDR(A_SCD_TRACE_CFG)); 122 IOADDR(A_SCD_TRACE_CFG));
113 sbp.tb_armed = 0; 123 sbp.tb_armed = 0;
114 wake_up(&sbp.tb_sync); 124 wake_up(&sbp.tb_sync);
115 } else { 125 } else {
@@ -118,7 +128,7 @@ static irqreturn_t sbprof_tb_intr(int irq, void *dev_id, struct pt_regs *regs)
118 } else { 128 } else {
119 /* No more trace buffer samples */ 129 /* No more trace buffer samples */
120 DBG(printk(DEVNAME ": tb_intr full\n")); 130 DBG(printk(DEVNAME ": tb_intr full\n"));
121 bus_writeq(M_SCD_TRACE_CFG_RESET, IOADDR(A_SCD_TRACE_CFG)); 131 __raw_writeq(M_SCD_TRACE_CFG_RESET, IOADDR(A_SCD_TRACE_CFG));
122 sbp.tb_armed = 0; 132 sbp.tb_armed = 0;
123 if (!sbp.tb_enable) { 133 if (!sbp.tb_enable) {
124 wake_up(&sbp.tb_sync); 134 wake_up(&sbp.tb_sync);
@@ -152,13 +162,11 @@ int sbprof_zbprof_start(struct file *filp)
152 return -EBUSY; 162 return -EBUSY;
153 } 163 }
154 /* Make sure there isn't a perf-cnt interrupt waiting */ 164 /* Make sure there isn't a perf-cnt interrupt waiting */
155 scdperfcnt = bus_readq(IOADDR(A_SCD_PERF_CNT_CFG)); 165 scdperfcnt = __raw_readq(IOADDR(A_SCD_PERF_CNT_CFG));
156 /* Disable and clear counters, override SRC_1 */ 166 /* Disable and clear counters, override SRC_1 */
157 bus_writeq((scdperfcnt & ~(M_SPC_CFG_SRC1 | M_SPC_CFG_ENABLE)) | 167 __raw_writeq((scdperfcnt & ~(M_SPC_CFG_SRC1 | M_SPC_CFG_ENABLE)) |
158 M_SPC_CFG_ENABLE | 168 M_SPC_CFG_ENABLE | M_SPC_CFG_CLEAR | V_SPC_CFG_SRC1(1),
159 M_SPC_CFG_CLEAR | 169 IOADDR(A_SCD_PERF_CNT_CFG));
160 V_SPC_CFG_SRC1(1),
161 IOADDR(A_SCD_PERF_CNT_CFG));
162 170
163 /* We grab this interrupt to prevent others from trying to use 171 /* We grab this interrupt to prevent others from trying to use
164 it, even though we don't want to service the interrupts 172 it, even though we don't want to service the interrupts
@@ -172,55 +180,55 @@ int sbprof_zbprof_start(struct file *filp)
172 /* I need the core to mask these, but the interrupt mapper to 180 /* I need the core to mask these, but the interrupt mapper to
173 pass them through. I am exploiting my knowledge that 181 pass them through. I am exploiting my knowledge that
174 cp0_status masks out IP[5]. krw */ 182 cp0_status masks out IP[5]. krw */
175 bus_writeq(K_INT_MAP_I3, 183 __raw_writeq(K_INT_MAP_I3,
176 IOADDR(A_IMR_REGISTER(0, R_IMR_INTERRUPT_MAP_BASE) + 184 IOADDR(A_IMR_REGISTER(0, R_IMR_INTERRUPT_MAP_BASE) +
177 (K_INT_PERF_CNT << 3))); 185 (K_INT_PERF_CNT << 3)));
178 186
179 /* Initialize address traps */ 187 /* Initialize address traps */
180 bus_writeq(0, IOADDR(A_ADDR_TRAP_UP_0)); 188 __raw_writeq(0, IOADDR(A_ADDR_TRAP_UP_0));
181 bus_writeq(0, IOADDR(A_ADDR_TRAP_UP_1)); 189 __raw_writeq(0, IOADDR(A_ADDR_TRAP_UP_1));
182 bus_writeq(0, IOADDR(A_ADDR_TRAP_UP_2)); 190 __raw_writeq(0, IOADDR(A_ADDR_TRAP_UP_2));
183 bus_writeq(0, IOADDR(A_ADDR_TRAP_UP_3)); 191 __raw_writeq(0, IOADDR(A_ADDR_TRAP_UP_3));
184 192
185 bus_writeq(0, IOADDR(A_ADDR_TRAP_DOWN_0)); 193 __raw_writeq(0, IOADDR(A_ADDR_TRAP_DOWN_0));
186 bus_writeq(0, IOADDR(A_ADDR_TRAP_DOWN_1)); 194 __raw_writeq(0, IOADDR(A_ADDR_TRAP_DOWN_1));
187 bus_writeq(0, IOADDR(A_ADDR_TRAP_DOWN_2)); 195 __raw_writeq(0, IOADDR(A_ADDR_TRAP_DOWN_2));
188 bus_writeq(0, IOADDR(A_ADDR_TRAP_DOWN_3)); 196 __raw_writeq(0, IOADDR(A_ADDR_TRAP_DOWN_3));
189 197
190 bus_writeq(0, IOADDR(A_ADDR_TRAP_CFG_0)); 198 __raw_writeq(0, IOADDR(A_ADDR_TRAP_CFG_0));
191 bus_writeq(0, IOADDR(A_ADDR_TRAP_CFG_1)); 199 __raw_writeq(0, IOADDR(A_ADDR_TRAP_CFG_1));
192 bus_writeq(0, IOADDR(A_ADDR_TRAP_CFG_2)); 200 __raw_writeq(0, IOADDR(A_ADDR_TRAP_CFG_2));
193 bus_writeq(0, IOADDR(A_ADDR_TRAP_CFG_3)); 201 __raw_writeq(0, IOADDR(A_ADDR_TRAP_CFG_3));
194 202
195 /* Initialize Trace Event 0-7 */ 203 /* Initialize Trace Event 0-7 */
196 // when interrupt 204 // when interrupt
197 bus_writeq(M_SCD_TREVT_INTERRUPT, IOADDR(A_SCD_TRACE_EVENT_0)); 205 __raw_writeq(M_SCD_TREVT_INTERRUPT, IOADDR(A_SCD_TRACE_EVENT_0));
198 bus_writeq(0, IOADDR(A_SCD_TRACE_EVENT_1)); 206 __raw_writeq(0, IOADDR(A_SCD_TRACE_EVENT_1));
199 bus_writeq(0, IOADDR(A_SCD_TRACE_EVENT_2)); 207 __raw_writeq(0, IOADDR(A_SCD_TRACE_EVENT_2));
200 bus_writeq(0, IOADDR(A_SCD_TRACE_EVENT_3)); 208 __raw_writeq(0, IOADDR(A_SCD_TRACE_EVENT_3));
201 bus_writeq(0, IOADDR(A_SCD_TRACE_EVENT_4)); 209 __raw_writeq(0, IOADDR(A_SCD_TRACE_EVENT_4));
202 bus_writeq(0, IOADDR(A_SCD_TRACE_EVENT_5)); 210 __raw_writeq(0, IOADDR(A_SCD_TRACE_EVENT_5));
203 bus_writeq(0, IOADDR(A_SCD_TRACE_EVENT_6)); 211 __raw_writeq(0, IOADDR(A_SCD_TRACE_EVENT_6));
204 bus_writeq(0, IOADDR(A_SCD_TRACE_EVENT_7)); 212 __raw_writeq(0, IOADDR(A_SCD_TRACE_EVENT_7));
205 213
206 /* Initialize Trace Sequence 0-7 */ 214 /* Initialize Trace Sequence 0-7 */
207 // Start on event 0 (interrupt) 215 // Start on event 0 (interrupt)
208 bus_writeq(V_SCD_TRSEQ_FUNC_START | 0x0fff, 216 __raw_writeq(V_SCD_TRSEQ_FUNC_START | 0x0fff,
209 IOADDR(A_SCD_TRACE_SEQUENCE_0)); 217 IOADDR(A_SCD_TRACE_SEQUENCE_0));
210 // dsamp when d used | asamp when a used 218 // dsamp when d used | asamp when a used
211 bus_writeq(M_SCD_TRSEQ_ASAMPLE | M_SCD_TRSEQ_DSAMPLE | 219 __raw_writeq(M_SCD_TRSEQ_ASAMPLE | M_SCD_TRSEQ_DSAMPLE |
212 K_SCD_TRSEQ_TRIGGER_ALL, 220 K_SCD_TRSEQ_TRIGGER_ALL,
213 IOADDR(A_SCD_TRACE_SEQUENCE_1)); 221 IOADDR(A_SCD_TRACE_SEQUENCE_1));
214 bus_writeq(0, IOADDR(A_SCD_TRACE_SEQUENCE_2)); 222 __raw_writeq(0, IOADDR(A_SCD_TRACE_SEQUENCE_2));
215 bus_writeq(0, IOADDR(A_SCD_TRACE_SEQUENCE_3)); 223 __raw_writeq(0, IOADDR(A_SCD_TRACE_SEQUENCE_3));
216 bus_writeq(0, IOADDR(A_SCD_TRACE_SEQUENCE_4)); 224 __raw_writeq(0, IOADDR(A_SCD_TRACE_SEQUENCE_4));
217 bus_writeq(0, IOADDR(A_SCD_TRACE_SEQUENCE_5)); 225 __raw_writeq(0, IOADDR(A_SCD_TRACE_SEQUENCE_5));
218 bus_writeq(0, IOADDR(A_SCD_TRACE_SEQUENCE_6)); 226 __raw_writeq(0, IOADDR(A_SCD_TRACE_SEQUENCE_6));
219 bus_writeq(0, IOADDR(A_SCD_TRACE_SEQUENCE_7)); 227 __raw_writeq(0, IOADDR(A_SCD_TRACE_SEQUENCE_7));
220 228
221 /* Now indicate the PERF_CNT interrupt as a trace-relevant interrupt */ 229 /* Now indicate the PERF_CNT interrupt as a trace-relevant interrupt */
222 bus_writeq((1ULL << K_INT_PERF_CNT), 230 __raw_writeq(1ULL << K_INT_PERF_CNT,
223 IOADDR(A_IMR_REGISTER(0, R_IMR_INTERRUPT_TRACE))); 231 IOADDR(A_IMR_REGISTER(0, R_IMR_INTERRUPT_TRACE)));
224 232
225 arm_tb(); 233 arm_tb();
226 234
@@ -231,6 +239,7 @@ int sbprof_zbprof_start(struct file *filp)
231 239
232int sbprof_zbprof_stop(void) 240int sbprof_zbprof_stop(void)
233{ 241{
242 DEFINE_WAIT(wait);
234 DBG(printk(DEVNAME ": stopping\n")); 243 DBG(printk(DEVNAME ": stopping\n"));
235 244
236 if (sbp.tb_enable) { 245 if (sbp.tb_enable) {
@@ -240,7 +249,9 @@ int sbprof_zbprof_stop(void)
240 this sleep happens. */ 249 this sleep happens. */
241 if (sbp.tb_armed) { 250 if (sbp.tb_armed) {
242 DBG(printk(DEVNAME ": wait for disarm\n")); 251 DBG(printk(DEVNAME ": wait for disarm\n"));
243 interruptible_sleep_on(&sbp.tb_sync); 252 prepare_to_wait(&sbp.tb_sync, &wait, TASK_INTERRUPTIBLE);
253 schedule();
254 finish_wait(&sbp.tb_sync, &wait);
244 DBG(printk(DEVNAME ": disarm complete\n")); 255 DBG(printk(DEVNAME ": disarm complete\n"));
245 } 256 }
246 free_irq(K_INT_TRACE_FREEZE, &sbp); 257 free_irq(K_INT_TRACE_FREEZE, &sbp);
@@ -333,13 +344,13 @@ static ssize_t sbprof_tb_read(struct file *filp, char *buf,
333 return count; 344 return count;
334} 345}
335 346
336static int sbprof_tb_ioctl(struct inode *inode, 347static long sbprof_tb_ioctl(struct file *filp,
337 struct file *filp, 348 unsigned int command,
338 unsigned int command, 349 unsigned long arg)
339 unsigned long arg)
340{ 350{
341 int error = 0; 351 int error = 0;
342 352
353 lock_kernel();
343 switch (command) { 354 switch (command) {
344 case SBPROF_ZBSTART: 355 case SBPROF_ZBSTART:
345 error = sbprof_zbprof_start(filp); 356 error = sbprof_zbprof_start(filp);
@@ -348,13 +359,17 @@ static int sbprof_tb_ioctl(struct inode *inode,
348 error = sbprof_zbprof_stop(); 359 error = sbprof_zbprof_stop();
349 break; 360 break;
350 case SBPROF_ZBWAITFULL: 361 case SBPROF_ZBWAITFULL:
351 interruptible_sleep_on(&sbp.tb_read); 362 DEFINE_WAIT(wait);
363 prepare_to_wait(&sbp.tb_read, &wait, TASK_INTERRUPTIBLE);
364 schedule();
365 finish_wait(&sbp.tb_read, &wait);
352 /* XXXKW check if interrupted? */ 366 /* XXXKW check if interrupted? */
353 return put_user(TB_FULL, (int *) arg); 367 return put_user(TB_FULL, (int *) arg);
354 default: 368 default:
355 error = -EINVAL; 369 error = -EINVAL;
356 break; 370 break;
357 } 371 }
372 unlock_kernel();
358 373
359 return error; 374 return error;
360} 375}
@@ -364,7 +379,8 @@ static struct file_operations sbprof_tb_fops = {
364 .open = sbprof_tb_open, 379 .open = sbprof_tb_open,
365 .release = sbprof_tb_release, 380 .release = sbprof_tb_release,
366 .read = sbprof_tb_read, 381 .read = sbprof_tb_read,
367 .ioctl = sbprof_tb_ioctl, 382 .unlocked_ioctl = sbprof_tb_ioctl,
383 .compat_ioctl = sbprof_tb_ioctl,
368 .mmap = NULL, 384 .mmap = NULL,
369}; 385};
370 386
diff --git a/arch/mips/sibyte/sb1250/bus_watcher.c b/arch/mips/sibyte/sb1250/bus_watcher.c
index 1a97e3127aeb..482dee054e68 100644
--- a/arch/mips/sibyte/sb1250/bus_watcher.c
+++ b/arch/mips/sibyte/sb1250/bus_watcher.c
@@ -189,7 +189,7 @@ static irqreturn_t sibyte_bw_int(int irq, void *data, struct pt_regs *regs)
189 189
190 for (i=0; i<256*6; i++) 190 for (i=0; i<256*6; i++)
191 printk("%016llx\n", 191 printk("%016llx\n",
192 (unsigned long long)bus_readq(IOADDR(A_SCD_TRACE_READ))); 192 (long long)__raw_readq(IOADDR(A_SCD_TRACE_READ)));
193 193
194 csr_out32(M_SCD_TRACE_CFG_RESET, IOADDR(A_SCD_TRACE_CFG)); 194 csr_out32(M_SCD_TRACE_CFG_RESET, IOADDR(A_SCD_TRACE_CFG));
195 csr_out32(M_SCD_TRACE_CFG_START, IOADDR(A_SCD_TRACE_CFG)); 195 csr_out32(M_SCD_TRACE_CFG_START, IOADDR(A_SCD_TRACE_CFG));
diff --git a/arch/mips/sibyte/sb1250/irq.c b/arch/mips/sibyte/sb1250/irq.c
index 2725b263cced..589537bfcc3d 100644
--- a/arch/mips/sibyte/sb1250/irq.c
+++ b/arch/mips/sibyte/sb1250/irq.c
@@ -53,7 +53,7 @@ static void disable_sb1250_irq(unsigned int irq);
53static unsigned int startup_sb1250_irq(unsigned int irq); 53static unsigned int startup_sb1250_irq(unsigned int irq);
54static void ack_sb1250_irq(unsigned int irq); 54static void ack_sb1250_irq(unsigned int irq);
55#ifdef CONFIG_SMP 55#ifdef CONFIG_SMP
56static void sb1250_set_affinity(unsigned int irq, unsigned long mask); 56static void sb1250_set_affinity(unsigned int irq, cpumask_t mask);
57#endif 57#endif
58 58
59#ifdef CONFIG_SIBYTE_HAS_LDT 59#ifdef CONFIG_SIBYTE_HAS_LDT
@@ -71,17 +71,15 @@ extern char sb1250_duart_present[];
71#endif 71#endif
72 72
73static struct hw_interrupt_type sb1250_irq_type = { 73static struct hw_interrupt_type sb1250_irq_type = {
74 "SB1250-IMR", 74 .typename = "SB1250-IMR",
75 startup_sb1250_irq, 75 .startup = startup_sb1250_irq,
76 shutdown_sb1250_irq, 76 .shutdown = shutdown_sb1250_irq,
77 enable_sb1250_irq, 77 .enable = enable_sb1250_irq,
78 disable_sb1250_irq, 78 .disable = disable_sb1250_irq,
79 ack_sb1250_irq, 79 .ack = ack_sb1250_irq,
80 end_sb1250_irq, 80 .end = end_sb1250_irq,
81#ifdef CONFIG_SMP 81#ifdef CONFIG_SMP
82 sb1250_set_affinity 82 .set_affinity = sb1250_set_affinity
83#else
84 NULL
85#endif 83#endif
86}; 84};
87 85
@@ -96,11 +94,11 @@ void sb1250_mask_irq(int cpu, int irq)
96 u64 cur_ints; 94 u64 cur_ints;
97 95
98 spin_lock_irqsave(&sb1250_imr_lock, flags); 96 spin_lock_irqsave(&sb1250_imr_lock, flags);
99 cur_ints = __bus_readq(IOADDR(A_IMR_MAPPER(cpu) + 97 cur_ints = ____raw_readq(IOADDR(A_IMR_MAPPER(cpu) +
100 R_IMR_INTERRUPT_MASK)); 98 R_IMR_INTERRUPT_MASK));
101 cur_ints |= (((u64) 1) << irq); 99 cur_ints |= (((u64) 1) << irq);
102 __bus_writeq(cur_ints, IOADDR(A_IMR_MAPPER(cpu) + 100 ____raw_writeq(cur_ints, IOADDR(A_IMR_MAPPER(cpu) +
103 R_IMR_INTERRUPT_MASK)); 101 R_IMR_INTERRUPT_MASK));
104 spin_unlock_irqrestore(&sb1250_imr_lock, flags); 102 spin_unlock_irqrestore(&sb1250_imr_lock, flags);
105} 103}
106 104
@@ -110,32 +108,25 @@ void sb1250_unmask_irq(int cpu, int irq)
110 u64 cur_ints; 108 u64 cur_ints;
111 109
112 spin_lock_irqsave(&sb1250_imr_lock, flags); 110 spin_lock_irqsave(&sb1250_imr_lock, flags);
113 cur_ints = __bus_readq(IOADDR(A_IMR_MAPPER(cpu) + 111 cur_ints = ____raw_readq(IOADDR(A_IMR_MAPPER(cpu) +
114 R_IMR_INTERRUPT_MASK)); 112 R_IMR_INTERRUPT_MASK));
115 cur_ints &= ~(((u64) 1) << irq); 113 cur_ints &= ~(((u64) 1) << irq);
116 __bus_writeq(cur_ints, IOADDR(A_IMR_MAPPER(cpu) + 114 ____raw_writeq(cur_ints, IOADDR(A_IMR_MAPPER(cpu) +
117 R_IMR_INTERRUPT_MASK)); 115 R_IMR_INTERRUPT_MASK));
118 spin_unlock_irqrestore(&sb1250_imr_lock, flags); 116 spin_unlock_irqrestore(&sb1250_imr_lock, flags);
119} 117}
120 118
121#ifdef CONFIG_SMP 119#ifdef CONFIG_SMP
122static void sb1250_set_affinity(unsigned int irq, unsigned long mask) 120static void sb1250_set_affinity(unsigned int irq, cpumask_t mask)
123{ 121{
124 int i = 0, old_cpu, cpu, int_on; 122 int i = 0, old_cpu, cpu, int_on;
125 u64 cur_ints; 123 u64 cur_ints;
126 irq_desc_t *desc = irq_desc + irq; 124 irq_desc_t *desc = irq_desc + irq;
127 unsigned long flags; 125 unsigned long flags;
128 126
129 while (mask) { 127 i = first_cpu(mask);
130 if (mask & 1) {
131 mask >>= 1;
132 break;
133 }
134 mask >>= 1;
135 i++;
136 }
137 128
138 if (mask) { 129 if (cpus_weight(mask) > 1) {
139 printk("attempted to set irq affinity for irq %d to multiple CPUs\n", irq); 130 printk("attempted to set irq affinity for irq %d to multiple CPUs\n", irq);
140 return; 131 return;
141 } 132 }
@@ -149,23 +140,23 @@ static void sb1250_set_affinity(unsigned int irq, unsigned long mask)
149 140
150 /* Swizzle each CPU's IMR (but leave the IP selection alone) */ 141 /* Swizzle each CPU's IMR (but leave the IP selection alone) */
151 old_cpu = sb1250_irq_owner[irq]; 142 old_cpu = sb1250_irq_owner[irq];
152 cur_ints = __bus_readq(IOADDR(A_IMR_MAPPER(old_cpu) + 143 cur_ints = ____raw_readq(IOADDR(A_IMR_MAPPER(old_cpu) +
153 R_IMR_INTERRUPT_MASK)); 144 R_IMR_INTERRUPT_MASK));
154 int_on = !(cur_ints & (((u64) 1) << irq)); 145 int_on = !(cur_ints & (((u64) 1) << irq));
155 if (int_on) { 146 if (int_on) {
156 /* If it was on, mask it */ 147 /* If it was on, mask it */
157 cur_ints |= (((u64) 1) << irq); 148 cur_ints |= (((u64) 1) << irq);
158 __bus_writeq(cur_ints, IOADDR(A_IMR_MAPPER(old_cpu) + 149 ____raw_writeq(cur_ints, IOADDR(A_IMR_MAPPER(old_cpu) +
159 R_IMR_INTERRUPT_MASK)); 150 R_IMR_INTERRUPT_MASK));
160 } 151 }
161 sb1250_irq_owner[irq] = cpu; 152 sb1250_irq_owner[irq] = cpu;
162 if (int_on) { 153 if (int_on) {
163 /* unmask for the new CPU */ 154 /* unmask for the new CPU */
164 cur_ints = __bus_readq(IOADDR(A_IMR_MAPPER(cpu) + 155 cur_ints = ____raw_readq(IOADDR(A_IMR_MAPPER(cpu) +
165 R_IMR_INTERRUPT_MASK)); 156 R_IMR_INTERRUPT_MASK));
166 cur_ints &= ~(((u64) 1) << irq); 157 cur_ints &= ~(((u64) 1) << irq);
167 __bus_writeq(cur_ints, IOADDR(A_IMR_MAPPER(cpu) + 158 ____raw_writeq(cur_ints, IOADDR(A_IMR_MAPPER(cpu) +
168 R_IMR_INTERRUPT_MASK)); 159 R_IMR_INTERRUPT_MASK));
169 } 160 }
170 spin_unlock(&sb1250_imr_lock); 161 spin_unlock(&sb1250_imr_lock);
171 spin_unlock_irqrestore(&desc->lock, flags); 162 spin_unlock_irqrestore(&desc->lock, flags);
@@ -208,8 +199,8 @@ static void ack_sb1250_irq(unsigned int irq)
208 * deliver the interrupts to all CPUs (which makes affinity 199 * deliver the interrupts to all CPUs (which makes affinity
209 * changing easier for us) 200 * changing easier for us)
210 */ 201 */
211 pending = bus_readq(IOADDR(A_IMR_REGISTER(sb1250_irq_owner[irq], 202 pending = __raw_readq(IOADDR(A_IMR_REGISTER(sb1250_irq_owner[irq],
212 R_IMR_LDT_INTERRUPT))); 203 R_IMR_LDT_INTERRUPT)));
213 pending &= ((u64)1 << (irq)); 204 pending &= ((u64)1 << (irq));
214 if (pending) { 205 if (pending) {
215 int i; 206 int i;
@@ -224,8 +215,8 @@ static void ack_sb1250_irq(unsigned int irq)
224 * Clear for all CPUs so an affinity switch 215 * Clear for all CPUs so an affinity switch
225 * doesn't find an old status 216 * doesn't find an old status
226 */ 217 */
227 bus_writeq(pending, 218 __raw_writeq(pending,
228 IOADDR(A_IMR_REGISTER(cpu, 219 IOADDR(A_IMR_REGISTER(cpu,
229 R_IMR_LDT_INTERRUPT_CLR))); 220 R_IMR_LDT_INTERRUPT_CLR)));
230 } 221 }
231 222
@@ -340,12 +331,14 @@ void __init arch_init_irq(void)
340 331
341 /* Default everything to IP2 */ 332 /* Default everything to IP2 */
342 for (i = 0; i < SB1250_NR_IRQS; i++) { /* was I0 */ 333 for (i = 0; i < SB1250_NR_IRQS; i++) { /* was I0 */
343 bus_writeq(IMR_IP2_VAL, 334 __raw_writeq(IMR_IP2_VAL,
344 IOADDR(A_IMR_REGISTER(0, R_IMR_INTERRUPT_MAP_BASE) + 335 IOADDR(A_IMR_REGISTER(0,
345 (i << 3))); 336 R_IMR_INTERRUPT_MAP_BASE) +
346 bus_writeq(IMR_IP2_VAL, 337 (i << 3)));
347 IOADDR(A_IMR_REGISTER(1, R_IMR_INTERRUPT_MAP_BASE) + 338 __raw_writeq(IMR_IP2_VAL,
348 (i << 3))); 339 IOADDR(A_IMR_REGISTER(1,
340 R_IMR_INTERRUPT_MAP_BASE) +
341 (i << 3)));
349 } 342 }
350 343
351 init_sb1250_irqs(); 344 init_sb1250_irqs();
@@ -355,23 +348,23 @@ void __init arch_init_irq(void)
355 * inter-cpu messages 348 * inter-cpu messages
356 */ 349 */
357 /* Was I1 */ 350 /* Was I1 */
358 bus_writeq(IMR_IP3_VAL, 351 __raw_writeq(IMR_IP3_VAL,
359 IOADDR(A_IMR_REGISTER(0, R_IMR_INTERRUPT_MAP_BASE) + 352 IOADDR(A_IMR_REGISTER(0, R_IMR_INTERRUPT_MAP_BASE) +
360 (K_INT_MBOX_0 << 3))); 353 (K_INT_MBOX_0 << 3)));
361 bus_writeq(IMR_IP3_VAL, 354 __raw_writeq(IMR_IP3_VAL,
362 IOADDR(A_IMR_REGISTER(1, R_IMR_INTERRUPT_MAP_BASE) + 355 IOADDR(A_IMR_REGISTER(1, R_IMR_INTERRUPT_MAP_BASE) +
363 (K_INT_MBOX_0 << 3))); 356 (K_INT_MBOX_0 << 3)));
364 357
365 /* Clear the mailboxes. The firmware may leave them dirty */ 358 /* Clear the mailboxes. The firmware may leave them dirty */
366 bus_writeq(0xffffffffffffffffULL, 359 __raw_writeq(0xffffffffffffffffULL,
367 IOADDR(A_IMR_REGISTER(0, R_IMR_MAILBOX_CLR_CPU))); 360 IOADDR(A_IMR_REGISTER(0, R_IMR_MAILBOX_CLR_CPU)));
368 bus_writeq(0xffffffffffffffffULL, 361 __raw_writeq(0xffffffffffffffffULL,
369 IOADDR(A_IMR_REGISTER(1, R_IMR_MAILBOX_CLR_CPU))); 362 IOADDR(A_IMR_REGISTER(1, R_IMR_MAILBOX_CLR_CPU)));
370 363
371 /* Mask everything except the mailbox registers for both cpus */ 364 /* Mask everything except the mailbox registers for both cpus */
372 tmp = ~((u64) 0) ^ (((u64) 1) << K_INT_MBOX_0); 365 tmp = ~((u64) 0) ^ (((u64) 1) << K_INT_MBOX_0);
373 bus_writeq(tmp, IOADDR(A_IMR_REGISTER(0, R_IMR_INTERRUPT_MASK))); 366 __raw_writeq(tmp, IOADDR(A_IMR_REGISTER(0, R_IMR_INTERRUPT_MASK)));
374 bus_writeq(tmp, IOADDR(A_IMR_REGISTER(1, R_IMR_INTERRUPT_MASK))); 367 __raw_writeq(tmp, IOADDR(A_IMR_REGISTER(1, R_IMR_INTERRUPT_MASK)));
375 368
376 sb1250_steal_irq(K_INT_MBOX_0); 369 sb1250_steal_irq(K_INT_MBOX_0);
377 370
@@ -396,12 +389,14 @@ void __init arch_init_irq(void)
396 sb1250_duart_present[kgdb_port] = 0; 389 sb1250_duart_present[kgdb_port] = 0;
397#endif 390#endif
398 /* Setup uart 1 settings, mapper */ 391 /* Setup uart 1 settings, mapper */
399 bus_writeq(M_DUART_IMR_BRK, IOADDR(A_DUART_IMRREG(kgdb_port))); 392 __raw_writeq(M_DUART_IMR_BRK,
393 IOADDR(A_DUART_IMRREG(kgdb_port)));
400 394
401 sb1250_steal_irq(kgdb_irq); 395 sb1250_steal_irq(kgdb_irq);
402 bus_writeq(IMR_IP6_VAL, 396 __raw_writeq(IMR_IP6_VAL,
403 IOADDR(A_IMR_REGISTER(0, R_IMR_INTERRUPT_MAP_BASE) + 397 IOADDR(A_IMR_REGISTER(0,
404 (kgdb_irq<<3))); 398 R_IMR_INTERRUPT_MAP_BASE) +
399 (kgdb_irq << 3)));
405 sb1250_unmask_irq(0, kgdb_irq); 400 sb1250_unmask_irq(0, kgdb_irq);
406 } 401 }
407#endif 402#endif
diff --git a/arch/mips/sibyte/sb1250/setup.c b/arch/mips/sibyte/sb1250/setup.c
index f8c605be96c7..df2e266c700c 100644
--- a/arch/mips/sibyte/sb1250/setup.c
+++ b/arch/mips/sibyte/sb1250/setup.c
@@ -153,7 +153,7 @@ void sb1250_setup(void)
153 int bad_config = 0; 153 int bad_config = 0;
154 154
155 sb1_pass = read_c0_prid() & 0xff; 155 sb1_pass = read_c0_prid() & 0xff;
156 sys_rev = bus_readq(IOADDR(A_SCD_SYSTEM_REVISION)); 156 sys_rev = __raw_readq(IOADDR(A_SCD_SYSTEM_REVISION));
157 soc_type = SYS_SOC_TYPE(sys_rev); 157 soc_type = SYS_SOC_TYPE(sys_rev);
158 soc_pass = G_SYS_REVISION(sys_rev); 158 soc_pass = G_SYS_REVISION(sys_rev);
159 159
@@ -162,7 +162,7 @@ void sb1250_setup(void)
162 machine_restart(NULL); 162 machine_restart(NULL);
163 } 163 }
164 164
165 plldiv = G_SYS_PLL_DIV(bus_readq(IOADDR(A_SCD_SYSTEM_CFG))); 165 plldiv = G_SYS_PLL_DIV(__raw_readq(IOADDR(A_SCD_SYSTEM_CFG)));
166 zbbus_mhz = ((plldiv >> 1) * 50) + ((plldiv & 1) * 25); 166 zbbus_mhz = ((plldiv >> 1) * 50) + ((plldiv & 1) * 25);
167 167
168 prom_printf("Broadcom SiByte %s %s @ %d MHz (SB1 rev %d)\n", 168 prom_printf("Broadcom SiByte %s %s @ %d MHz (SB1 rev %d)\n",
diff --git a/arch/mips/sibyte/sb1250/smp.c b/arch/mips/sibyte/sb1250/smp.c
index be91b3990952..f859db02d3c9 100644
--- a/arch/mips/sibyte/sb1250/smp.c
+++ b/arch/mips/sibyte/sb1250/smp.c
@@ -29,18 +29,18 @@
29#include <asm/sibyte/sb1250_int.h> 29#include <asm/sibyte/sb1250_int.h>
30 30
31static void *mailbox_set_regs[] = { 31static void *mailbox_set_regs[] = {
32 (void *)IOADDR(A_IMR_CPU0_BASE + R_IMR_MAILBOX_SET_CPU), 32 IOADDR(A_IMR_CPU0_BASE + R_IMR_MAILBOX_SET_CPU),
33 (void *)IOADDR(A_IMR_CPU1_BASE + R_IMR_MAILBOX_SET_CPU) 33 IOADDR(A_IMR_CPU1_BASE + R_IMR_MAILBOX_SET_CPU)
34}; 34};
35 35
36static void *mailbox_clear_regs[] = { 36static void *mailbox_clear_regs[] = {
37 (void *)IOADDR(A_IMR_CPU0_BASE + R_IMR_MAILBOX_CLR_CPU), 37 IOADDR(A_IMR_CPU0_BASE + R_IMR_MAILBOX_CLR_CPU),
38 (void *)IOADDR(A_IMR_CPU1_BASE + R_IMR_MAILBOX_CLR_CPU) 38 IOADDR(A_IMR_CPU1_BASE + R_IMR_MAILBOX_CLR_CPU)
39}; 39};
40 40
41static void *mailbox_regs[] = { 41static void *mailbox_regs[] = {
42 (void *)IOADDR(A_IMR_CPU0_BASE + R_IMR_MAILBOX_CPU), 42 IOADDR(A_IMR_CPU0_BASE + R_IMR_MAILBOX_CPU),
43 (void *)IOADDR(A_IMR_CPU1_BASE + R_IMR_MAILBOX_CPU) 43 IOADDR(A_IMR_CPU1_BASE + R_IMR_MAILBOX_CPU)
44}; 44};
45 45
46/* 46/*
@@ -73,7 +73,7 @@ void sb1250_smp_finish(void)
73 */ 73 */
74void core_send_ipi(int cpu, unsigned int action) 74void core_send_ipi(int cpu, unsigned int action)
75{ 75{
76 bus_writeq((((u64)action) << 48), mailbox_set_regs[cpu]); 76 __raw_writeq((((u64)action) << 48), mailbox_set_regs[cpu]);
77} 77}
78 78
79void sb1250_mailbox_interrupt(struct pt_regs *regs) 79void sb1250_mailbox_interrupt(struct pt_regs *regs)
@@ -83,10 +83,10 @@ void sb1250_mailbox_interrupt(struct pt_regs *regs)
83 83
84 kstat_this_cpu.irqs[K_INT_MBOX_0]++; 84 kstat_this_cpu.irqs[K_INT_MBOX_0]++;
85 /* Load the mailbox register to figure out what we're supposed to do */ 85 /* Load the mailbox register to figure out what we're supposed to do */
86 action = (__bus_readq(mailbox_regs[cpu]) >> 48) & 0xffff; 86 action = (____raw_readq(mailbox_regs[cpu]) >> 48) & 0xffff;
87 87
88 /* Clear the mailbox to clear the interrupt */ 88 /* Clear the mailbox to clear the interrupt */
89 __bus_writeq(((u64)action) << 48, mailbox_clear_regs[cpu]); 89 ____raw_writeq(((u64)action) << 48, mailbox_clear_regs[cpu]);
90 90
91 /* 91 /*
92 * Nothing to do for SMP_RESCHEDULE_YOURSELF; returning from the 92 * Nothing to do for SMP_RESCHEDULE_YOURSELF; returning from the
diff --git a/arch/mips/sibyte/sb1250/time.c b/arch/mips/sibyte/sb1250/time.c
index 8b4c848c907b..511c89d65f38 100644
--- a/arch/mips/sibyte/sb1250/time.c
+++ b/arch/mips/sibyte/sb1250/time.c
@@ -67,24 +67,24 @@ void sb1250_time_init(void)
67 sb1250_mask_irq(cpu, irq); 67 sb1250_mask_irq(cpu, irq);
68 68
69 /* Map the timer interrupt to ip[4] of this cpu */ 69 /* Map the timer interrupt to ip[4] of this cpu */
70 bus_writeq(IMR_IP4_VAL, 70 __raw_writeq(IMR_IP4_VAL,
71 IOADDR(A_IMR_REGISTER(cpu, R_IMR_INTERRUPT_MAP_BASE) + 71 IOADDR(A_IMR_REGISTER(cpu, R_IMR_INTERRUPT_MAP_BASE) +
72 (irq << 3))); 72 (irq << 3)));
73 73
74 /* the general purpose timer ticks at 1 Mhz independent if the rest of the system */ 74 /* the general purpose timer ticks at 1 Mhz independent if the rest of the system */
75 /* Disable the timer and set up the count */ 75 /* Disable the timer and set up the count */
76 bus_writeq(0, IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG))); 76 __raw_writeq(0, IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG)));
77#ifdef CONFIG_SIMULATION 77#ifdef CONFIG_SIMULATION
78 bus_writeq(50000 / HZ, 78 __raw_writeq(50000 / HZ,
79 IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_INIT))); 79 IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_INIT)));
80#else 80#else
81 bus_writeq(1000000/HZ, 81 __raw_writeq(1000000 / HZ,
82 IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_INIT))); 82 IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_INIT)));
83#endif 83#endif
84 84
85 /* Set the timer running */ 85 /* Set the timer running */
86 bus_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS, 86 __raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS,
87 IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG))); 87 IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG)));
88 88
89 sb1250_unmask_irq(cpu, irq); 89 sb1250_unmask_irq(cpu, irq);
90 sb1250_steal_irq(irq); 90 sb1250_steal_irq(irq);
@@ -100,25 +100,25 @@ void sb1250_time_init(void)
100 100
101void sb1250_timer_interrupt(struct pt_regs *regs) 101void sb1250_timer_interrupt(struct pt_regs *regs)
102{ 102{
103 extern asmlinkage void ll_local_timer_interrupt(int irq, struct pt_regs *regs);
104 int cpu = smp_processor_id(); 103 int cpu = smp_processor_id();
105 int irq = K_INT_TIMER_0 + cpu; 104 int irq = K_INT_TIMER_0 + cpu;
106 105
107 /* Reset the timer */ 106 /* Reset the timer */
108 __bus_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS, 107 ____raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS,
109 IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG))); 108 IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG)));
110 109
111 /*
112 * CPU 0 handles the global timer interrupt job
113 */
114 if (cpu == 0) { 110 if (cpu == 0) {
111 /*
112 * CPU 0 handles the global timer interrupt job
113 */
115 ll_timer_interrupt(irq, regs); 114 ll_timer_interrupt(irq, regs);
116 } 115 }
117 116 else {
118 /* 117 /*
119 * every CPU should do profiling and process accouting 118 * other CPUs should just do profiling and process accounting
120 */ 119 */
121 ll_local_timer_interrupt(irq, regs); 120 ll_local_timer_interrupt(irq, regs);
121 }
122} 122}
123 123
124/* 124/*
@@ -130,7 +130,7 @@ void sb1250_timer_interrupt(struct pt_regs *regs)
130unsigned long sb1250_gettimeoffset(void) 130unsigned long sb1250_gettimeoffset(void)
131{ 131{
132 unsigned long count = 132 unsigned long count =
133 bus_readq(IOADDR(A_SCD_TIMER_REGISTER(0, R_SCD_TIMER_CNT))); 133 __raw_readq(IOADDR(A_SCD_TIMER_REGISTER(0, R_SCD_TIMER_CNT)));
134 134
135 return 1000000/HZ - count; 135 return 1000000/HZ - count;
136 } 136 }
diff --git a/arch/mips/sibyte/swarm/rtc_m41t81.c b/arch/mips/sibyte/swarm/rtc_m41t81.c
index a686bb716ec6..5b4fc26c1b36 100644
--- a/arch/mips/sibyte/swarm/rtc_m41t81.c
+++ b/arch/mips/sibyte/swarm/rtc_m41t81.c
@@ -82,59 +82,60 @@
82#define M41T81REG_SQW 0x13 /* square wave register */ 82#define M41T81REG_SQW 0x13 /* square wave register */
83 83
84#define M41T81_CCR_ADDRESS 0x68 84#define M41T81_CCR_ADDRESS 0x68
85#define SMB_CSR(reg) ((u8 *) (IOADDR(A_SMB_REGISTER(1, reg)))) 85
86#define SMB_CSR(reg) IOADDR(A_SMB_REGISTER(1, reg))
86 87
87static int m41t81_read(uint8_t addr) 88static int m41t81_read(uint8_t addr)
88{ 89{
89 while (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY) 90 while (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY)
90 ; 91 ;
91 92
92 bus_writeq(addr & 0xff, SMB_CSR(R_SMB_CMD)); 93 __raw_writeq(addr & 0xff, SMB_CSR(R_SMB_CMD));
93 bus_writeq((V_SMB_ADDR(M41T81_CCR_ADDRESS) | V_SMB_TT_WR1BYTE), 94 __raw_writeq(V_SMB_ADDR(M41T81_CCR_ADDRESS) | V_SMB_TT_WR1BYTE,
94 SMB_CSR(R_SMB_START)); 95 SMB_CSR(R_SMB_START));
95 96
96 while (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY) 97 while (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY)
97 ; 98 ;
98 99
99 bus_writeq((V_SMB_ADDR(M41T81_CCR_ADDRESS) | V_SMB_TT_RD1BYTE), 100 __raw_writeq(V_SMB_ADDR(M41T81_CCR_ADDRESS) | V_SMB_TT_RD1BYTE,
100 SMB_CSR(R_SMB_START)); 101 SMB_CSR(R_SMB_START));
101 102
102 while (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY) 103 while (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY)
103 ; 104 ;
104 105
105 if (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_ERROR) { 106 if (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_ERROR) {
106 /* Clear error bit by writing a 1 */ 107 /* Clear error bit by writing a 1 */
107 bus_writeq(M_SMB_ERROR, SMB_CSR(R_SMB_STATUS)); 108 __raw_writeq(M_SMB_ERROR, SMB_CSR(R_SMB_STATUS));
108 return -1; 109 return -1;
109 } 110 }
110 111
111 return (bus_readq(SMB_CSR(R_SMB_DATA)) & 0xff); 112 return (__raw_readq(SMB_CSR(R_SMB_DATA)) & 0xff);
112} 113}
113 114
114static int m41t81_write(uint8_t addr, int b) 115static int m41t81_write(uint8_t addr, int b)
115{ 116{
116 while (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY) 117 while (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY)
117 ; 118 ;
118 119
119 bus_writeq((addr & 0xFF), SMB_CSR(R_SMB_CMD)); 120 __raw_writeq(addr & 0xff, SMB_CSR(R_SMB_CMD));
120 bus_writeq((b & 0xff), SMB_CSR(R_SMB_DATA)); 121 __raw_writeq(b & 0xff, SMB_CSR(R_SMB_DATA));
121 bus_writeq(V_SMB_ADDR(M41T81_CCR_ADDRESS) | V_SMB_TT_WR2BYTE, 122 __raw_writeq(V_SMB_ADDR(M41T81_CCR_ADDRESS) | V_SMB_TT_WR2BYTE,
122 SMB_CSR(R_SMB_START)); 123 SMB_CSR(R_SMB_START));
123 124
124 while (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY) 125 while (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY)
125 ; 126 ;
126 127
127 if (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_ERROR) { 128 if (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_ERROR) {
128 /* Clear error bit by writing a 1 */ 129 /* Clear error bit by writing a 1 */
129 bus_writeq(M_SMB_ERROR, SMB_CSR(R_SMB_STATUS)); 130 __raw_writeq(M_SMB_ERROR, SMB_CSR(R_SMB_STATUS));
130 return -1; 131 return -1;
131 } 132 }
132 133
133 /* read the same byte again to make sure it is written */ 134 /* read the same byte again to make sure it is written */
134 bus_writeq(V_SMB_ADDR(M41T81_CCR_ADDRESS) | V_SMB_TT_RD1BYTE, 135 __raw_writeq(V_SMB_ADDR(M41T81_CCR_ADDRESS) | V_SMB_TT_RD1BYTE,
135 SMB_CSR(R_SMB_START)); 136 SMB_CSR(R_SMB_START));
136 137
137 while (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY) 138 while (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY)
138 ; 139 ;
139 140
140 return 0; 141 return 0;
diff --git a/arch/mips/sibyte/swarm/rtc_xicor1241.c b/arch/mips/sibyte/swarm/rtc_xicor1241.c
index 981d21f16e64..d9ff9323f24e 100644
--- a/arch/mips/sibyte/swarm/rtc_xicor1241.c
+++ b/arch/mips/sibyte/swarm/rtc_xicor1241.c
@@ -57,52 +57,52 @@
57 57
58#define X1241_CCR_ADDRESS 0x6F 58#define X1241_CCR_ADDRESS 0x6F
59 59
60#define SMB_CSR(reg) ((u8 *) (IOADDR(A_SMB_REGISTER(1, reg)))) 60#define SMB_CSR(reg) IOADDR(A_SMB_REGISTER(1, reg))
61 61
62static int xicor_read(uint8_t addr) 62static int xicor_read(uint8_t addr)
63{ 63{
64 while (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY) 64 while (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY)
65 ; 65 ;
66 66
67 bus_writeq((addr >> 8) & 0x7, SMB_CSR(R_SMB_CMD)); 67 __raw_writeq((addr >> 8) & 0x7, SMB_CSR(R_SMB_CMD));
68 bus_writeq((addr & 0xff), SMB_CSR(R_SMB_DATA)); 68 __raw_writeq(addr & 0xff, SMB_CSR(R_SMB_DATA));
69 bus_writeq((V_SMB_ADDR(X1241_CCR_ADDRESS) | V_SMB_TT_WR2BYTE), 69 __raw_writeq(V_SMB_ADDR(X1241_CCR_ADDRESS) | V_SMB_TT_WR2BYTE,
70 SMB_CSR(R_SMB_START)); 70 SMB_CSR(R_SMB_START));
71 71
72 while (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY) 72 while (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY)
73 ; 73 ;
74 74
75 bus_writeq((V_SMB_ADDR(X1241_CCR_ADDRESS) | V_SMB_TT_RD1BYTE), 75 __raw_writeq(V_SMB_ADDR(X1241_CCR_ADDRESS) | V_SMB_TT_RD1BYTE,
76 SMB_CSR(R_SMB_START)); 76 SMB_CSR(R_SMB_START));
77 77
78 while (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY) 78 while (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY)
79 ; 79 ;
80 80
81 if (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_ERROR) { 81 if (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_ERROR) {
82 /* Clear error bit by writing a 1 */ 82 /* Clear error bit by writing a 1 */
83 bus_writeq(M_SMB_ERROR, SMB_CSR(R_SMB_STATUS)); 83 __raw_writeq(M_SMB_ERROR, SMB_CSR(R_SMB_STATUS));
84 return -1; 84 return -1;
85 } 85 }
86 86
87 return (bus_readq(SMB_CSR(R_SMB_DATA)) & 0xff); 87 return (__raw_readq(SMB_CSR(R_SMB_DATA)) & 0xff);
88} 88}
89 89
90static int xicor_write(uint8_t addr, int b) 90static int xicor_write(uint8_t addr, int b)
91{ 91{
92 while (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY) 92 while (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY)
93 ; 93 ;
94 94
95 bus_writeq(addr, SMB_CSR(R_SMB_CMD)); 95 __raw_writeq(addr, SMB_CSR(R_SMB_CMD));
96 bus_writeq((addr & 0xff) | ((b & 0xff) << 8), SMB_CSR(R_SMB_DATA)); 96 __raw_writeq((addr & 0xff) | ((b & 0xff) << 8), SMB_CSR(R_SMB_DATA));
97 bus_writeq(V_SMB_ADDR(X1241_CCR_ADDRESS) | V_SMB_TT_WR3BYTE, 97 __raw_writeq(V_SMB_ADDR(X1241_CCR_ADDRESS) | V_SMB_TT_WR3BYTE,
98 SMB_CSR(R_SMB_START)); 98 SMB_CSR(R_SMB_START));
99 99
100 while (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY) 100 while (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY)
101 ; 101 ;
102 102
103 if (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_ERROR) { 103 if (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_ERROR) {
104 /* Clear error bit by writing a 1 */ 104 /* Clear error bit by writing a 1 */
105 bus_writeq(M_SMB_ERROR, SMB_CSR(R_SMB_STATUS)); 105 __raw_writeq(M_SMB_ERROR, SMB_CSR(R_SMB_STATUS));
106 return -1; 106 return -1;
107 } else { 107 } else {
108 return 0; 108 return 0;
diff --git a/arch/mips/sibyte/swarm/setup.c b/arch/mips/sibyte/swarm/setup.c
index 4daeaa413def..b614ca0ddb69 100644
--- a/arch/mips/sibyte/swarm/setup.c
+++ b/arch/mips/sibyte/swarm/setup.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (C) 2000, 2001, 2002, 2003 Broadcom Corporation 2 * Copyright (C) 2000, 2001, 2002, 2003, 2004 Broadcom Corporation
3 * Copyright (C) 2004 by Ralf Baechle (ralf@linux-mips.org) 3 * Copyright (C) 2004 by Ralf Baechle (ralf@linux-mips.org)
4 * 4 *
5 * This program is free software; you can redistribute it and/or 5 * This program is free software; you can redistribute it and/or
@@ -39,11 +39,23 @@
39#include <asm/time.h> 39#include <asm/time.h>
40#include <asm/traps.h> 40#include <asm/traps.h>
41#include <asm/sibyte/sb1250.h> 41#include <asm/sibyte/sb1250.h>
42#if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80)
43#include <asm/sibyte/bcm1480_regs.h>
44#elif defined(CONFIG_SIBYTE_SB1250) || defined(CONFIG_SIBYTE_BCM112X)
42#include <asm/sibyte/sb1250_regs.h> 45#include <asm/sibyte/sb1250_regs.h>
46#else
47#error invalid SiByte board configuation
48#endif
43#include <asm/sibyte/sb1250_genbus.h> 49#include <asm/sibyte/sb1250_genbus.h>
44#include <asm/sibyte/board.h> 50#include <asm/sibyte/board.h>
45 51
52#if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80)
53extern void bcm1480_setup(void);
54#elif defined(CONFIG_SIBYTE_SB1250) || defined(CONFIG_SIBYTE_BCM112X)
46extern void sb1250_setup(void); 55extern void sb1250_setup(void);
56#else
57#error invalid SiByte board configuation
58#endif
47 59
48extern int xicor_probe(void); 60extern int xicor_probe(void);
49extern int xicor_set_time(unsigned long); 61extern int xicor_set_time(unsigned long);
@@ -66,27 +78,34 @@ void __init swarm_timer_setup(struct irqaction *irq)
66 */ 78 */
67 79
68 /* We only need to setup the generic timer */ 80 /* We only need to setup the generic timer */
69 sb1250_time_init(); 81#if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80)
82 bcm1480_time_init();
83#elif defined(CONFIG_SIBYTE_SB1250) || defined(CONFIG_SIBYTE_BCM112X)
84 sb1250_time_init();
85#else
86#error invalid SiByte board configuation
87#endif
70} 88}
71 89
72int swarm_be_handler(struct pt_regs *regs, int is_fixup) 90int swarm_be_handler(struct pt_regs *regs, int is_fixup)
73{ 91{
74 if (!is_fixup && (regs->cp0_cause & 4)) { 92 if (!is_fixup && (regs->cp0_cause & 4)) {
75 /* Data bus error - print PA */ 93 /* Data bus error - print PA */
76#ifdef CONFIG_64BIT 94 printk("DBE physical address: %010Lx\n",
77 printk("DBE physical address: %010lx\n",
78 __read_64bit_c0_register($26, 1)); 95 __read_64bit_c0_register($26, 1));
79#else
80 printk("DBE physical address: %010llx\n",
81 __read_64bit_c0_split($26, 1));
82#endif
83 } 96 }
84 return (is_fixup ? MIPS_BE_FIXUP : MIPS_BE_FATAL); 97 return (is_fixup ? MIPS_BE_FIXUP : MIPS_BE_FATAL);
85} 98}
86 99
87static int __init swarm_setup(void) 100void __init plat_setup(void)
88{ 101{
102#if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80)
103 bcm1480_setup();
104#elif defined(CONFIG_SIBYTE_SB1250) || defined(CONFIG_SIBYTE_BCM112X)
89 sb1250_setup(); 105 sb1250_setup();
106#else
107#error invalid SiByte board configuation
108#endif
90 109
91 panic_timeout = 5; /* For debug. */ 110 panic_timeout = 5; /* For debug. */
92 111
@@ -133,12 +152,8 @@ static int __init swarm_setup(void)
133 }; 152 };
134 /* XXXKW for CFE, get lines/cols from environment */ 153 /* XXXKW for CFE, get lines/cols from environment */
135#endif 154#endif
136
137 return 0;
138} 155}
139 156
140early_initcall(swarm_setup);
141
142#ifdef LEDS_PHYS 157#ifdef LEDS_PHYS
143 158
144#ifdef CONFIG_SIBYTE_CARMEL 159#ifdef CONFIG_SIBYTE_CARMEL
diff --git a/arch/mips/sibyte/swarm/time.c b/arch/mips/sibyte/swarm/time.c
index c1f1a9defeeb..97c73c793c35 100644
--- a/arch/mips/sibyte/swarm/time.c
+++ b/arch/mips/sibyte/swarm/time.c
@@ -79,48 +79,48 @@ static unsigned int usec_bias = 0;
79 79
80static int xicor_read(uint8_t addr) 80static int xicor_read(uint8_t addr)
81{ 81{
82 while (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY) 82 while (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY)
83 ; 83 ;
84 84
85 bus_writeq((addr >> 8) & 0x7, SMB_CSR(R_SMB_CMD)); 85 __raw_writeq((addr >> 8) & 0x7, SMB_CSR(R_SMB_CMD));
86 bus_writeq((addr & 0xff), SMB_CSR(R_SMB_DATA)); 86 __raw_writeq(addr & 0xff, SMB_CSR(R_SMB_DATA));
87 bus_writeq((V_SMB_ADDR(X1241_CCR_ADDRESS) | V_SMB_TT_WR2BYTE), 87 __raw_writeq(V_SMB_ADDR(X1241_CCR_ADDRESS) | V_SMB_TT_WR2BYTE,
88 SMB_CSR(R_SMB_START)); 88 SMB_CSR(R_SMB_START));
89 89
90 while (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY) 90 while (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY)
91 ; 91 ;
92 92
93 bus_writeq((V_SMB_ADDR(X1241_CCR_ADDRESS) | V_SMB_TT_RD1BYTE), 93 __raw_writeq(V_SMB_ADDR(X1241_CCR_ADDRESS) | V_SMB_TT_RD1BYTE,
94 SMB_CSR(R_SMB_START)); 94 SMB_CSR(R_SMB_START));
95 95
96 while (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY) 96 while (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY)
97 ; 97 ;
98 98
99 if (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_ERROR) { 99 if (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_ERROR) {
100 /* Clear error bit by writing a 1 */ 100 /* Clear error bit by writing a 1 */
101 bus_writeq(M_SMB_ERROR, SMB_CSR(R_SMB_STATUS)); 101 __raw_writeq(M_SMB_ERROR, SMB_CSR(R_SMB_STATUS));
102 return -1; 102 return -1;
103 } 103 }
104 104
105 return (bus_readq(SMB_CSR(R_SMB_DATA)) & 0xff); 105 return (__raw_readq(SMB_CSR(R_SMB_DATA)) & 0xff);
106} 106}
107 107
108static int xicor_write(uint8_t addr, int b) 108static int xicor_write(uint8_t addr, int b)
109{ 109{
110 while (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY) 110 while (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY)
111 ; 111 ;
112 112
113 bus_writeq(addr, SMB_CSR(R_SMB_CMD)); 113 __raw_writeq(addr, SMB_CSR(R_SMB_CMD));
114 bus_writeq((addr & 0xff) | ((b & 0xff) << 8), SMB_CSR(R_SMB_DATA)); 114 __raw_writeq((addr & 0xff) | ((b & 0xff) << 8), SMB_CSR(R_SMB_DATA));
115 bus_writeq(V_SMB_ADDR(X1241_CCR_ADDRESS) | V_SMB_TT_WR3BYTE, 115 __raw_writeq(V_SMB_ADDR(X1241_CCR_ADDRESS) | V_SMB_TT_WR3BYTE,
116 SMB_CSR(R_SMB_START)); 116 SMB_CSR(R_SMB_START));
117 117
118 while (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY) 118 while (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_BUSY)
119 ; 119 ;
120 120
121 if (bus_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_ERROR) { 121 if (__raw_readq(SMB_CSR(R_SMB_STATUS)) & M_SMB_ERROR) {
122 /* Clear error bit by writing a 1 */ 122 /* Clear error bit by writing a 1 */
123 bus_writeq(M_SMB_ERROR, SMB_CSR(R_SMB_STATUS)); 123 __raw_writeq(M_SMB_ERROR, SMB_CSR(R_SMB_STATUS));
124 return -1; 124 return -1;
125 } else { 125 } else {
126 return 0; 126 return 0;
@@ -228,8 +228,8 @@ void __init swarm_time_init(void)
228 /* Establish communication with the Xicor 1241 RTC */ 228 /* Establish communication with the Xicor 1241 RTC */
229 /* XXXKW how do I share the SMBus with the I2C subsystem? */ 229 /* XXXKW how do I share the SMBus with the I2C subsystem? */
230 230
231 bus_writeq(K_SMB_FREQ_400KHZ, SMB_CSR(R_SMB_FREQ)); 231 __raw_writeq(K_SMB_FREQ_400KHZ, SMB_CSR(R_SMB_FREQ));
232 bus_writeq(0, SMB_CSR(R_SMB_CONTROL)); 232 __raw_writeq(0, SMB_CSR(R_SMB_CONTROL));
233 233
234 if ((status = xicor_read(X1241REG_SR_RTCF)) < 0) { 234 if ((status = xicor_read(X1241REG_SR_RTCF)) < 0) {
235 printk("x1241: couldn't detect on SWARM SMBus 1\n"); 235 printk("x1241: couldn't detect on SWARM SMBus 1\n");
diff --git a/arch/mips/sni/irq.c b/arch/mips/sni/irq.c
index 141a310d74d8..952038aa4b90 100644
--- a/arch/mips/sni/irq.c
+++ b/arch/mips/sni/irq.c
@@ -58,14 +58,13 @@ static void end_pciasic_irq(unsigned int irq)
58} 58}
59 59
60static struct hw_interrupt_type pciasic_irq_type = { 60static struct hw_interrupt_type pciasic_irq_type = {
61 "ASIC-PCI", 61 .typename = "ASIC-PCI",
62 startup_pciasic_irq, 62 .startup = startup_pciasic_irq,
63 shutdown_pciasic_irq, 63 .shutdown = shutdown_pciasic_irq,
64 enable_pciasic_irq, 64 .enable = enable_pciasic_irq,
65 disable_pciasic_irq, 65 .disable = disable_pciasic_irq,
66 mask_and_ack_pciasic_irq, 66 .ack = mask_and_ack_pciasic_irq,
67 end_pciasic_irq, 67 .end = end_pciasic_irq,
68 NULL
69}; 68};
70 69
71/* 70/*
diff --git a/arch/mips/sni/setup.c b/arch/mips/sni/setup.c
index 1b3f8a0903e1..262c85680709 100644
--- a/arch/mips/sni/setup.c
+++ b/arch/mips/sni/setup.c
@@ -167,7 +167,7 @@ static inline void sni_pcimt_time_init(void)
167 rtc_set_time = mc146818_set_rtc_mmss; 167 rtc_set_time = mc146818_set_rtc_mmss;
168} 168}
169 169
170static int __init sni_rm200_pci_setup(void) 170void __init plat_setup(void)
171{ 171{
172 sni_pcimt_detect(); 172 sni_pcimt_detect();
173 sni_pcimt_sc_init(); 173 sni_pcimt_sc_init();
@@ -196,8 +196,4 @@ static int __init sni_rm200_pci_setup(void)
196#ifdef CONFIG_PCI 196#ifdef CONFIG_PCI
197 register_pci_controller(&sni_controller); 197 register_pci_controller(&sni_controller);
198#endif 198#endif
199
200 return 0;
201} 199}
202
203early_initcall(sni_rm200_pci_setup);
diff --git a/arch/mips/tx4927/Kconfig b/arch/mips/tx4927/Kconfig
new file mode 100644
index 000000000000..5fbbe12e0fc1
--- /dev/null
+++ b/arch/mips/tx4927/Kconfig
@@ -0,0 +1,3 @@
1config TOSHIBA_FPCIB0
2 bool "FPCIB0 Backplane Support"
3 depends on TOSHIBA_RBTX4927
diff --git a/arch/mips/tx4927/common/tx4927_setup.c b/arch/mips/tx4927/common/tx4927_setup.c
index 26d7c53612a8..77c3b66fb959 100644
--- a/arch/mips/tx4927/common/tx4927_setup.c
+++ b/arch/mips/tx4927/common/tx4927_setup.c
@@ -64,7 +64,7 @@ static void tx4927_write_buffer_flush(void)
64} 64}
65 65
66 66
67static void __init tx4927_setup(void) 67void __init plat_setup(void)
68{ 68{
69 board_time_init = tx4927_time_init; 69 board_time_init = tx4927_time_init;
70 board_timer_setup = tx4927_timer_setup; 70 board_timer_setup = tx4927_timer_setup;
@@ -76,12 +76,8 @@ static void __init tx4927_setup(void)
76 toshiba_rbtx4927_setup(); 76 toshiba_rbtx4927_setup();
77 } 77 }
78#endif 78#endif
79
80 return;
81} 79}
82 80
83early_initcall(tx4927_setup);
84
85void __init tx4927_time_init(void) 81void __init tx4927_time_init(void)
86{ 82{
87 83
diff --git a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
index fc0720599fd9..990fcb294bab 100644
--- a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
+++ b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
@@ -77,6 +77,11 @@
77#include <linux/hdreg.h> 77#include <linux/hdreg.h>
78#include <linux/ide.h> 78#include <linux/ide.h>
79#endif 79#endif
80#ifdef CONFIG_SERIAL_TXX9
81#include <linux/tty.h>
82#include <linux/serial.h>
83#include <linux/serial_core.h>
84#endif
80 85
81#undef TOSHIBA_RBTX4927_SETUP_DEBUG 86#undef TOSHIBA_RBTX4927_SETUP_DEBUG
82 87
@@ -920,12 +925,30 @@ void __init toshiba_rbtx4927_setup(void)
920 925
921#endif /* CONFIG_PCI */ 926#endif /* CONFIG_PCI */
922 927
928#ifdef CONFIG_SERIAL_TXX9
929 {
930 extern int early_serial_txx9_setup(struct uart_port *port);
931 int i;
932 struct uart_port req;
933 for(i = 0; i < 2; i++) {
934 memset(&req, 0, sizeof(req));
935 req.line = i;
936 req.iotype = UPIO_MEM;
937 req.membase = (char *)(0xff1ff300 + i * 0x100);
938 req.mapbase = 0xff1ff300 + i * 0x100;
939 req.irq = 32 + i;
940 req.flags |= UPF_BUGGY_UART /*HAVE_CTS_LINE*/;
941 req.uartclk = 50000000;
942 early_serial_txx9_setup(&req);
943 }
944 }
923#ifdef CONFIG_SERIAL_TXX9_CONSOLE 945#ifdef CONFIG_SERIAL_TXX9_CONSOLE
924 argptr = prom_getcmdline(); 946 argptr = prom_getcmdline();
925 if (strstr(argptr, "console=") == NULL) { 947 if (strstr(argptr, "console=") == NULL) {
926 strcat(argptr, " console=ttyS0,38400"); 948 strcat(argptr, " console=ttyS0,38400");
927 } 949 }
928#endif 950#endif
951#endif
929 952
930#ifdef CONFIG_ROOT_NFS 953#ifdef CONFIG_ROOT_NFS
931 argptr = prom_getcmdline(); 954 argptr = prom_getcmdline();
diff --git a/arch/mips/tx4938/Kconfig b/arch/mips/tx4938/Kconfig
new file mode 100644
index 000000000000..d90e9cd85138
--- /dev/null
+++ b/arch/mips/tx4938/Kconfig
@@ -0,0 +1,24 @@
1if TOSHIBA_RBTX4938
2
3comment "Multiplex Pin Select"
4choice
5 prompt "PIO[58:61]"
6 default TOSHIBA_RBTX4938_MPLEX_PIO58_61
7
8config TOSHIBA_RBTX4938_MPLEX_PIO58_61
9 bool "PIO"
10config TOSHIBA_RBTX4938_MPLEX_NAND
11 bool "NAND"
12config TOSHIBA_RBTX4938_MPLEX_ATA
13 bool "ATA"
14
15endchoice
16
17config TX4938_NAND_BOOT
18 depends on EXPERIMENTAL && TOSHIBA_RBTX4938_MPLEX_NAND
19 bool "NAND Boot Support (EXPERIMENTAL)"
20 help
21 This is only for Toshiba RBTX4938 reference board, which has NAND IPL.
22 Select this option if you need to use NAND boot.
23
24endif
diff --git a/arch/mips/tx4938/common/Makefile b/arch/mips/tx4938/common/Makefile
new file mode 100644
index 000000000000..74c95c5bcdbf
--- /dev/null
+++ b/arch/mips/tx4938/common/Makefile
@@ -0,0 +1,11 @@
1#
2# Makefile for common code for Toshiba TX4927 based systems
3#
4# Note! Dependencies are done automagically by 'make dep', which also
5# removes any old dependencies. DON'T put your own dependencies here
6# unless it's something special (ie not a .c file).
7#
8
9obj-y += prom.o setup.o irq.o irq_handler.o rtc_rx5c348.o
10obj-$(CONFIG_KGDB) += dbgio.o
11
diff --git a/arch/mips/tx4938/common/dbgio.c b/arch/mips/tx4938/common/dbgio.c
new file mode 100644
index 000000000000..bea59ff1842a
--- /dev/null
+++ b/arch/mips/tx4938/common/dbgio.c
@@ -0,0 +1,50 @@
1/*
2 * linux/arch/mips/tx4938/common/dbgio.c
3 *
4 * kgdb interface for gdb
5 *
6 * Author: MontaVista Software, Inc.
7 * source@mvista.com
8 *
9 * Copyright 2005 MontaVista Software Inc.
10 *
11 * This program is free software; you can redistribute it and/or modify it
12 * under the terms of the GNU General Public License as published by the
13 * Free Software Foundation; either version 2 of the License, or (at your
14 * option) any later version.
15 *
16 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
22 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
24 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
25 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 *
27 * You should have received a copy of the GNU General Public License along
28 * with this program; if not, write to the Free Software Foundation, Inc.,
29 * 675 Mass Ave, Cambridge, MA 02139, USA.
30 *
31 * Support for TX4938 in 2.6 - Hiroshi DOYU <Hiroshi_DOYU@montavista.co.jp>
32 */
33
34#include <asm/mipsregs.h>
35#include <asm/system.h>
36#include <asm/tx4938/tx4938_mips.h>
37
38extern u8 txx9_sio_kdbg_rd(void);
39extern int txx9_sio_kdbg_wr( u8 ch );
40
41u8 getDebugChar(void)
42{
43 return (txx9_sio_kdbg_rd());
44}
45
46int putDebugChar(u8 byte)
47{
48 return (txx9_sio_kdbg_wr(byte));
49}
50
diff --git a/arch/mips/tx4938/common/irq.c b/arch/mips/tx4938/common/irq.c
new file mode 100644
index 000000000000..4f90d7faf634
--- /dev/null
+++ b/arch/mips/tx4938/common/irq.c
@@ -0,0 +1,424 @@
1/*
2 * linux/arch/mps/tx4938/common/irq.c
3 *
4 * Common tx4938 irq handler
5 * Copyright (C) 2000-2001 Toshiba Corporation
6 *
7 * 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
8 * terms of the GNU General Public License version 2. This program is
9 * licensed "as is" without any warranty of any kind, whether express
10 * or implied.
11 *
12 * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com)
13 */
14#include <linux/errno.h>
15#include <linux/init.h>
16#include <linux/kernel_stat.h>
17#include <linux/module.h>
18#include <linux/signal.h>
19#include <linux/sched.h>
20#include <linux/types.h>
21#include <linux/interrupt.h>
22#include <linux/ioport.h>
23#include <linux/timex.h>
24#include <linux/slab.h>
25#include <linux/random.h>
26#include <linux/irq.h>
27#include <asm/bitops.h>
28#include <asm/bootinfo.h>
29#include <asm/io.h>
30#include <asm/irq.h>
31#include <asm/mipsregs.h>
32#include <asm/system.h>
33#include <asm/tx4938/rbtx4938.h>
34
35/**********************************************************************************/
36/* Forwad definitions for all pic's */
37/**********************************************************************************/
38
39static unsigned int tx4938_irq_cp0_startup(unsigned int irq);
40static void tx4938_irq_cp0_shutdown(unsigned int irq);
41static void tx4938_irq_cp0_enable(unsigned int irq);
42static void tx4938_irq_cp0_disable(unsigned int irq);
43static void tx4938_irq_cp0_mask_and_ack(unsigned int irq);
44static void tx4938_irq_cp0_end(unsigned int irq);
45
46static unsigned int tx4938_irq_pic_startup(unsigned int irq);
47static void tx4938_irq_pic_shutdown(unsigned int irq);
48static void tx4938_irq_pic_enable(unsigned int irq);
49static void tx4938_irq_pic_disable(unsigned int irq);
50static void tx4938_irq_pic_mask_and_ack(unsigned int irq);
51static void tx4938_irq_pic_end(unsigned int irq);
52
53/**********************************************************************************/
54/* Kernel structs for all pic's */
55/**********************************************************************************/
56DEFINE_SPINLOCK(tx4938_cp0_lock);
57DEFINE_SPINLOCK(tx4938_pic_lock);
58
59#define TX4938_CP0_NAME "TX4938-CP0"
60static struct hw_interrupt_type tx4938_irq_cp0_type = {
61 .typename = TX4938_CP0_NAME,
62 .startup = tx4938_irq_cp0_startup,
63 .shutdown = tx4938_irq_cp0_shutdown,
64 .enable = tx4938_irq_cp0_enable,
65 .disable = tx4938_irq_cp0_disable,
66 .ack = tx4938_irq_cp0_mask_and_ack,
67 .end = tx4938_irq_cp0_end,
68 .set_affinity = NULL
69};
70
71#define TX4938_PIC_NAME "TX4938-PIC"
72static struct hw_interrupt_type tx4938_irq_pic_type = {
73 .typename = TX4938_PIC_NAME,
74 .startup = tx4938_irq_pic_startup,
75 .shutdown = tx4938_irq_pic_shutdown,
76 .enable = tx4938_irq_pic_enable,
77 .disable = tx4938_irq_pic_disable,
78 .ack = tx4938_irq_pic_mask_and_ack,
79 .end = tx4938_irq_pic_end,
80 .set_affinity = NULL
81};
82
83static struct irqaction tx4938_irq_pic_action = {
84 .handler = no_action,
85 .flags = 0,
86 .mask = CPU_MASK_NONE,
87 .name = TX4938_PIC_NAME
88};
89
90/**********************************************************************************/
91/* Functions for cp0 */
92/**********************************************************************************/
93
94#define tx4938_irq_cp0_mask(irq) ( 1 << ( irq-TX4938_IRQ_CP0_BEG+8 ) )
95
96static void __init
97tx4938_irq_cp0_init(void)
98{
99 int i;
100
101 for (i = TX4938_IRQ_CP0_BEG; i <= TX4938_IRQ_CP0_END; i++) {
102 irq_desc[i].status = IRQ_DISABLED;
103 irq_desc[i].action = 0;
104 irq_desc[i].depth = 1;
105 irq_desc[i].handler = &tx4938_irq_cp0_type;
106 }
107
108 return;
109}
110
111static unsigned int
112tx4938_irq_cp0_startup(unsigned int irq)
113{
114 tx4938_irq_cp0_enable(irq);
115
116 return (0);
117}
118
119static void
120tx4938_irq_cp0_shutdown(unsigned int irq)
121{
122 tx4938_irq_cp0_disable(irq);
123}
124
125static void
126tx4938_irq_cp0_enable(unsigned int irq)
127{
128 unsigned long flags;
129
130 spin_lock_irqsave(&tx4938_cp0_lock, flags);
131
132 set_c0_status(tx4938_irq_cp0_mask(irq));
133
134 spin_unlock_irqrestore(&tx4938_cp0_lock, flags);
135}
136
137static void
138tx4938_irq_cp0_disable(unsigned int irq)
139{
140 unsigned long flags;
141
142 spin_lock_irqsave(&tx4938_cp0_lock, flags);
143
144 clear_c0_status(tx4938_irq_cp0_mask(irq));
145
146 spin_unlock_irqrestore(&tx4938_cp0_lock, flags);
147
148 return;
149}
150
151static void
152tx4938_irq_cp0_mask_and_ack(unsigned int irq)
153{
154 tx4938_irq_cp0_disable(irq);
155
156 return;
157}
158
159static void
160tx4938_irq_cp0_end(unsigned int irq)
161{
162 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
163 tx4938_irq_cp0_enable(irq);
164 }
165
166 return;
167}
168
169/**********************************************************************************/
170/* Functions for pic */
171/**********************************************************************************/
172
173u32
174tx4938_irq_pic_addr(int irq)
175{
176 /* MVMCP -- need to formulize this */
177 irq -= TX4938_IRQ_PIC_BEG;
178
179 switch (irq) {
180 case 17:
181 case 16:
182 case 1:
183 case 0:{
184 return (TX4938_MKA(TX4938_IRC_IRLVL0));
185 }
186 case 19:
187 case 18:
188 case 3:
189 case 2:{
190 return (TX4938_MKA(TX4938_IRC_IRLVL1));
191 }
192 case 21:
193 case 20:
194 case 5:
195 case 4:{
196 return (TX4938_MKA(TX4938_IRC_IRLVL2));
197 }
198 case 23:
199 case 22:
200 case 7:
201 case 6:{
202 return (TX4938_MKA(TX4938_IRC_IRLVL3));
203 }
204 case 25:
205 case 24:
206 case 9:
207 case 8:{
208 return (TX4938_MKA(TX4938_IRC_IRLVL4));
209 }
210 case 27:
211 case 26:
212 case 11:
213 case 10:{
214 return (TX4938_MKA(TX4938_IRC_IRLVL5));
215 }
216 case 29:
217 case 28:
218 case 13:
219 case 12:{
220 return (TX4938_MKA(TX4938_IRC_IRLVL6));
221 }
222 case 31:
223 case 30:
224 case 15:
225 case 14:{
226 return (TX4938_MKA(TX4938_IRC_IRLVL7));
227 }
228 }
229
230 return (0);
231}
232
233u32
234tx4938_irq_pic_mask(int irq)
235{
236 /* MVMCP -- need to formulize this */
237 irq -= TX4938_IRQ_PIC_BEG;
238
239 switch (irq) {
240 case 31:
241 case 29:
242 case 27:
243 case 25:
244 case 23:
245 case 21:
246 case 19:
247 case 17:{
248 return (0x07000000);
249 }
250 case 30:
251 case 28:
252 case 26:
253 case 24:
254 case 22:
255 case 20:
256 case 18:
257 case 16:{
258 return (0x00070000);
259 }
260 case 15:
261 case 13:
262 case 11:
263 case 9:
264 case 7:
265 case 5:
266 case 3:
267 case 1:{
268 return (0x00000700);
269 }
270 case 14:
271 case 12:
272 case 10:
273 case 8:
274 case 6:
275 case 4:
276 case 2:
277 case 0:{
278 return (0x00000007);
279 }
280 }
281 return (0x00000000);
282}
283
284static void
285tx4938_irq_pic_modify(unsigned pic_reg, unsigned clr_bits, unsigned set_bits)
286{
287 unsigned long val = 0;
288
289 val = TX4938_RD(pic_reg);
290 val &= (~clr_bits);
291 val |= (set_bits);
292 TX4938_WR(pic_reg, val);
293 mmiowb();
294 TX4938_RD(pic_reg);
295
296 return;
297}
298
299static void __init
300tx4938_irq_pic_init(void)
301{
302 unsigned long flags;
303 int i;
304
305 for (i = TX4938_IRQ_PIC_BEG; i <= TX4938_IRQ_PIC_END; i++) {
306 irq_desc[i].status = IRQ_DISABLED;
307 irq_desc[i].action = 0;
308 irq_desc[i].depth = 2;
309 irq_desc[i].handler = &tx4938_irq_pic_type;
310 }
311
312 setup_irq(TX4938_IRQ_NEST_PIC_ON_CP0, &tx4938_irq_pic_action);
313
314 spin_lock_irqsave(&tx4938_pic_lock, flags);
315
316 TX4938_WR(0xff1ff640, 0x6); /* irq level mask -- only accept hightest */
317 TX4938_WR(0xff1ff600, TX4938_RD(0xff1ff600) | 0x1); /* irq enable */
318
319 spin_unlock_irqrestore(&tx4938_pic_lock, flags);
320
321 return;
322}
323
324static unsigned int
325tx4938_irq_pic_startup(unsigned int irq)
326{
327 tx4938_irq_pic_enable(irq);
328
329 return (0);
330}
331
332static void
333tx4938_irq_pic_shutdown(unsigned int irq)
334{
335 tx4938_irq_pic_disable(irq);
336
337 return;
338}
339
340static void
341tx4938_irq_pic_enable(unsigned int irq)
342{
343 unsigned long flags;
344
345 spin_lock_irqsave(&tx4938_pic_lock, flags);
346
347 tx4938_irq_pic_modify(tx4938_irq_pic_addr(irq), 0,
348 tx4938_irq_pic_mask(irq));
349
350 spin_unlock_irqrestore(&tx4938_pic_lock, flags);
351
352 return;
353}
354
355static void
356tx4938_irq_pic_disable(unsigned int irq)
357{
358 unsigned long flags;
359
360 spin_lock_irqsave(&tx4938_pic_lock, flags);
361
362 tx4938_irq_pic_modify(tx4938_irq_pic_addr(irq),
363 tx4938_irq_pic_mask(irq), 0);
364
365 spin_unlock_irqrestore(&tx4938_pic_lock, flags);
366
367 return;
368}
369
370static void
371tx4938_irq_pic_mask_and_ack(unsigned int irq)
372{
373 tx4938_irq_pic_disable(irq);
374
375 return;
376}
377
378static void
379tx4938_irq_pic_end(unsigned int irq)
380{
381 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
382 tx4938_irq_pic_enable(irq);
383 }
384
385 return;
386}
387
388/**********************************************************************************/
389/* Main init functions */
390/**********************************************************************************/
391
392void __init
393tx4938_irq_init(void)
394{
395 extern asmlinkage void tx4938_irq_handler(void);
396
397 tx4938_irq_cp0_init();
398 tx4938_irq_pic_init();
399 set_except_vector(0, tx4938_irq_handler);
400
401 return;
402}
403
404int
405tx4938_irq_nested(void)
406{
407 int sw_irq = 0;
408 u32 level2;
409
410 level2 = TX4938_RD(0xff1ff6a0);
411 if ((level2 & 0x10000) == 0) {
412 level2 &= 0x1f;
413 sw_irq = TX4938_IRQ_PIC_BEG + level2;
414 if (sw_irq == 26) {
415 {
416 extern int toshiba_rbtx4938_irq_nested(int sw_irq);
417 sw_irq = toshiba_rbtx4938_irq_nested(sw_irq);
418 }
419 }
420 }
421
422 wbflush();
423 return (sw_irq);
424}
diff --git a/arch/mips/tx4938/common/irq_handler.S b/arch/mips/tx4938/common/irq_handler.S
new file mode 100644
index 000000000000..1b2f72bac42d
--- /dev/null
+++ b/arch/mips/tx4938/common/irq_handler.S
@@ -0,0 +1,84 @@
1/*
2 * linux/arch/mips/tx4938/common/handler.S
3 *
4 * Primary interrupt handler for tx4938 based systems
5 * Copyright (C) 2000-2001 Toshiba Corporation
6 *
7 * 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
8 * terms of the GNU General Public License version 2. This program is
9 * licensed "as is" without any warranty of any kind, whether express
10 * or implied.
11 *
12 * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com)
13 */
14#include <asm/asm.h>
15#include <asm/mipsregs.h>
16#include <asm/addrspace.h>
17#include <asm/regdef.h>
18#include <asm/stackframe.h>
19#include <asm/tx4938/rbtx4938.h>
20
21
22 .align 5
23 NESTED(tx4938_irq_handler, PT_SIZE, sp)
24 SAVE_ALL
25 CLI
26 .set at
27
28 mfc0 t0, CP0_CAUSE
29 mfc0 t1, CP0_STATUS
30 and t0, t1
31
32 andi t1, t0, STATUSF_IP7 /* cpu timer */
33 bnez t1, ll_ip7
34
35 /* IP6..IP3 multiplexed -- do not use */
36
37 andi t1, t0, STATUSF_IP2 /* tx4938 pic */
38 bnez t1, ll_ip2
39
40 andi t1, t0, STATUSF_IP1 /* user line 1 */
41 bnez t1, ll_ip1
42
43 andi t1, t0, STATUSF_IP0 /* user line 0 */
44 bnez t1, ll_ip0
45
46 .set reorder
47
48 nop
49 END(tx4938_irq_handler)
50
51 .align 5
52
53
54ll_ip7:
55 li a0, TX4938_IRQ_CPU_TIMER
56 move a1, sp
57 jal do_IRQ
58 j ret_from_irq
59
60
61ll_ip2:
62 jal tx4938_irq_nested
63 nop
64 beqz v0, goto_spurious_interrupt
65 nop
66 move a0, v0
67 move a1, sp
68 jal do_IRQ
69 j ret_from_irq
70
71goto_spurious_interrupt:
72 j ret_from_irq
73
74ll_ip1:
75 li a0, TX4938_IRQ_USER1
76 move a1, sp
77 jal do_IRQ
78 j ret_from_irq
79
80ll_ip0:
81 li a0, TX4938_IRQ_USER0
82 move a1, sp
83 jal do_IRQ
84 j ret_from_irq
diff --git a/arch/mips/tx4938/common/prom.c b/arch/mips/tx4938/common/prom.c
new file mode 100644
index 000000000000..3189a65f7d7e
--- /dev/null
+++ b/arch/mips/tx4938/common/prom.c
@@ -0,0 +1,129 @@
1/*
2 * linux/arch/mips/tx4938/common/prom.c
3 *
4 * common tx4938 memory interface
5 * Copyright (C) 2000-2001 Toshiba Corporation
6 *
7 * 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
8 * terms of the GNU General Public License version 2. This program is
9 * licensed "as is" without any warranty of any kind, whether express
10 * or implied.
11 *
12 * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com)
13 */
14
15#include <linux/init.h>
16#include <linux/mm.h>
17#include <linux/sched.h>
18#include <linux/bootmem.h>
19
20#include <asm/addrspace.h>
21#include <asm/bootinfo.h>
22#include <asm/tx4938/tx4938.h>
23
24static unsigned int __init
25tx4938_process_sdccr(u64 * addr)
26{
27 u64 val;
28 unsigned int sdccr_ce;
29 unsigned int sdccr_rs;
30 unsigned int sdccr_cs;
31 unsigned int sdccr_mw;
32 unsigned int rs = 0;
33 unsigned int cs = 0;
34 unsigned int mw = 0;
35 unsigned int bc = 4;
36 unsigned int msize = 0;
37
38 val = (*((vu64 *) (addr)));
39
40 /* MVMCP -- need #defs for these bits masks */
41 sdccr_ce = ((val & (1 << 10)) >> 10);
42 sdccr_rs = ((val & (3 << 5)) >> 5);
43 sdccr_cs = ((val & (7 << 2)) >> 2);
44 sdccr_mw = ((val & (1 << 0)) >> 0);
45
46 if (sdccr_ce) {
47 switch (sdccr_rs) {
48 case 0:{
49 rs = 2048;
50 break;
51 }
52 case 1:{
53 rs = 4096;
54 break;
55 }
56 case 2:{
57 rs = 8192;
58 break;
59 }
60 default:{
61 rs = 0;
62 break;
63 }
64 }
65 switch (sdccr_cs) {
66 case 0:{
67 cs = 256;
68 break;
69 }
70 case 1:{
71 cs = 512;
72 break;
73 }
74 case 2:{
75 cs = 1024;
76 break;
77 }
78 case 3:{
79 cs = 2048;
80 break;
81 }
82 case 4:{
83 cs = 4096;
84 break;
85 }
86 default:{
87 cs = 0;
88 break;
89 }
90 }
91 switch (sdccr_mw) {
92 case 0:{
93 mw = 8;
94 break;
95 } /* 8 bytes = 64 bits */
96 case 1:{
97 mw = 4;
98 break;
99 } /* 4 bytes = 32 bits */
100 }
101 }
102
103 /* bytes per chip MB per chip bank count */
104 msize = (((rs * cs * mw) / (1024 * 1024)) * (bc));
105
106 /* MVMCP -- bc hard coded to 4 from table 9.3.1 */
107 /* boad supports bc=2 but no way to detect */
108
109 return (msize);
110}
111
112unsigned int __init
113tx4938_get_mem_size(void)
114{
115 unsigned int c0;
116 unsigned int c1;
117 unsigned int c2;
118 unsigned int c3;
119 unsigned int total;
120
121 /* MVMCP -- need #defs for these registers */
122 c0 = tx4938_process_sdccr((u64 *) 0xff1f8000);
123 c1 = tx4938_process_sdccr((u64 *) 0xff1f8008);
124 c2 = tx4938_process_sdccr((u64 *) 0xff1f8010);
125 c3 = tx4938_process_sdccr((u64 *) 0xff1f8018);
126 total = c0 + c1 + c2 + c3;
127
128 return (total);
129}
diff --git a/arch/mips/tx4938/common/rtc_rx5c348.c b/arch/mips/tx4938/common/rtc_rx5c348.c
new file mode 100644
index 000000000000..d249edbb6af4
--- /dev/null
+++ b/arch/mips/tx4938/common/rtc_rx5c348.c
@@ -0,0 +1,202 @@
1/*
2 * RTC routines for RICOH Rx5C348 SPI chip.
3 * Copyright (C) 2000-2001 Toshiba Corporation
4 *
5 * 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
6 * terms of the GNU General Public License version 2. This program is
7 * licensed "as is" without any warranty of any kind, whether express
8 * or implied.
9 *
10 * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com)
11 */
12#include <linux/init.h>
13#include <linux/kernel.h>
14#include <linux/string.h>
15#include <linux/rtc.h>
16#include <linux/time.h>
17#include <asm/time.h>
18#include <asm/tx4938/spi.h>
19
20#define EPOCH 2000
21
22/* registers */
23#define Rx5C348_REG_SECOND 0
24#define Rx5C348_REG_MINUTE 1
25#define Rx5C348_REG_HOUR 2
26#define Rx5C348_REG_WEEK 3
27#define Rx5C348_REG_DAY 4
28#define Rx5C348_REG_MONTH 5
29#define Rx5C348_REG_YEAR 6
30#define Rx5C348_REG_ADJUST 7
31#define Rx5C348_REG_ALARM_W_MIN 8
32#define Rx5C348_REG_ALARM_W_HOUR 9
33#define Rx5C348_REG_ALARM_W_WEEK 10
34#define Rx5C348_REG_ALARM_D_MIN 11
35#define Rx5C348_REG_ALARM_D_HOUR 12
36#define Rx5C348_REG_CTL1 14
37#define Rx5C348_REG_CTL2 15
38
39/* register bits */
40#define Rx5C348_BIT_PM 0x20 /* REG_HOUR */
41#define Rx5C348_BIT_Y2K 0x80 /* REG_MONTH */
42#define Rx5C348_BIT_24H 0x20 /* REG_CTL1 */
43#define Rx5C348_BIT_XSTP 0x10 /* REG_CTL2 */
44
45/* commands */
46#define Rx5C348_CMD_W(addr) (((addr) << 4) | 0x08) /* single write */
47#define Rx5C348_CMD_R(addr) (((addr) << 4) | 0x0c) /* single read */
48#define Rx5C348_CMD_MW(addr) (((addr) << 4) | 0x00) /* burst write */
49#define Rx5C348_CMD_MR(addr) (((addr) << 4) | 0x04) /* burst read */
50
51static struct spi_dev_desc srtc_dev_desc = {
52 .baud = 1000000, /* 1.0Mbps @ Vdd 2.0V */
53 .tcss = 31,
54 .tcsh = 1,
55 .tcsr = 62,
56 /* 31us for Tcss (62us for Tcsr) is required for carry operation) */
57 .byteorder = 1, /* MSB-First */
58 .polarity = 0, /* High-Active */
59 .phase = 1, /* Shift-Then-Sample */
60
61};
62static int srtc_chipid;
63static int srtc_24h;
64
65static inline int
66spi_rtc_io(unsigned char *inbuf, unsigned char *outbuf, unsigned int count)
67{
68 unsigned char *inbufs[1], *outbufs[1];
69 unsigned int incounts[2], outcounts[2];
70 inbufs[0] = inbuf;
71 incounts[0] = count;
72 incounts[1] = 0;
73 outbufs[0] = outbuf;
74 outcounts[0] = count;
75 outcounts[1] = 0;
76 return txx9_spi_io(srtc_chipid, &srtc_dev_desc,
77 inbufs, incounts, outbufs, outcounts, 0);
78}
79
80/*
81 * Conversion between binary and BCD.
82 */
83#ifndef BCD_TO_BIN
84#define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10)
85#endif
86
87#ifndef BIN_TO_BCD
88#define BIN_TO_BCD(val) ((val)=(((val)/10)<<4) + (val)%10)
89#endif
90
91/* RTC-dependent code for time.c */
92
93static int
94rtc_rx5c348_set_time(unsigned long t)
95{
96 unsigned char inbuf[8];
97 struct rtc_time tm;
98 u8 year, month, day, hour, minute, second, century;
99
100 /* convert */
101 to_tm(t, &tm);
102
103 year = tm.tm_year % 100;
104 month = tm.tm_mon+1; /* tm_mon starts from 0 to 11 */
105 day = tm.tm_mday;
106 hour = tm.tm_hour;
107 minute = tm.tm_min;
108 second = tm.tm_sec;
109 century = tm.tm_year / 100;
110
111 inbuf[0] = Rx5C348_CMD_MW(Rx5C348_REG_SECOND);
112 BIN_TO_BCD(second);
113 inbuf[1] = second;
114 BIN_TO_BCD(minute);
115 inbuf[2] = minute;
116
117 if (srtc_24h) {
118 BIN_TO_BCD(hour);
119 inbuf[3] = hour;
120 } else {
121 /* hour 0 is AM12, noon is PM12 */
122 inbuf[3] = 0;
123 if (hour >= 12)
124 inbuf[3] = Rx5C348_BIT_PM;
125 hour = (hour + 11) % 12 + 1;
126 BIN_TO_BCD(hour);
127 inbuf[3] |= hour;
128 }
129 inbuf[4] = 0; /* ignore week */
130 BIN_TO_BCD(day);
131 inbuf[5] = day;
132 BIN_TO_BCD(month);
133 inbuf[6] = month;
134 if (century >= 20)
135 inbuf[6] |= Rx5C348_BIT_Y2K;
136 BIN_TO_BCD(year);
137 inbuf[7] = year;
138 /* write in one transfer to avoid data inconsistency */
139 return spi_rtc_io(inbuf, NULL, 8);
140}
141
142static unsigned long
143rtc_rx5c348_get_time(void)
144{
145 unsigned char inbuf[8], outbuf[8];
146 unsigned int year, month, day, hour, minute, second;
147
148 inbuf[0] = Rx5C348_CMD_MR(Rx5C348_REG_SECOND);
149 memset(inbuf + 1, 0, 7);
150 /* read in one transfer to avoid data inconsistency */
151 if (spi_rtc_io(inbuf, outbuf, 8))
152 return 0;
153 second = outbuf[1];
154 BCD_TO_BIN(second);
155 minute = outbuf[2];
156 BCD_TO_BIN(minute);
157 if (srtc_24h) {
158 hour = outbuf[3];
159 BCD_TO_BIN(hour);
160 } else {
161 hour = outbuf[3] & ~Rx5C348_BIT_PM;
162 BCD_TO_BIN(hour);
163 hour %= 12;
164 if (outbuf[3] & Rx5C348_BIT_PM)
165 hour += 12;
166 }
167 day = outbuf[5];
168 BCD_TO_BIN(day);
169 month = outbuf[6] & ~Rx5C348_BIT_Y2K;
170 BCD_TO_BIN(month);
171 year = outbuf[7];
172 BCD_TO_BIN(year);
173 year += EPOCH;
174
175 return mktime(year, month, day, hour, minute, second);
176}
177
178void __init
179rtc_rx5c348_init(int chipid)
180{
181 unsigned char inbuf[2], outbuf[2];
182 srtc_chipid = chipid;
183 /* turn on RTC if it is not on */
184 inbuf[0] = Rx5C348_CMD_R(Rx5C348_REG_CTL2);
185 inbuf[1] = 0;
186 spi_rtc_io(inbuf, outbuf, 2);
187 if (outbuf[1] & Rx5C348_BIT_XSTP) {
188 inbuf[0] = Rx5C348_CMD_W(Rx5C348_REG_CTL2);
189 inbuf[1] = 0;
190 spi_rtc_io(inbuf, NULL, 2);
191 }
192
193 inbuf[0] = Rx5C348_CMD_R(Rx5C348_REG_CTL1);
194 inbuf[1] = 0;
195 spi_rtc_io(inbuf, outbuf, 2);
196 if (outbuf[1] & Rx5C348_BIT_24H)
197 srtc_24h = 1;
198
199 /* set the function pointers */
200 rtc_get_time = rtc_rx5c348_get_time;
201 rtc_set_time = rtc_rx5c348_set_time;
202}
diff --git a/arch/mips/tx4938/common/setup.c b/arch/mips/tx4938/common/setup.c
new file mode 100644
index 000000000000..fc992953bf95
--- /dev/null
+++ b/arch/mips/tx4938/common/setup.c
@@ -0,0 +1,91 @@
1/*
2 * linux/arch/mips/tx4938/common/setup.c
3 *
4 * common tx4938 setup routines
5 *
6 * 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
7 * terms of the GNU General Public License version 2. This program is
8 * licensed "as is" without any warranty of any kind, whether express
9 * or implied.
10 *
11 * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com)
12 */
13
14#include <linux/errno.h>
15#include <linux/init.h>
16#include <linux/kernel_stat.h>
17#include <linux/module.h>
18#include <linux/signal.h>
19#include <linux/sched.h>
20#include <linux/types.h>
21#include <linux/interrupt.h>
22#include <linux/ioport.h>
23#include <linux/timex.h>
24#include <linux/slab.h>
25#include <linux/random.h>
26#include <linux/irq.h>
27#include <asm/bitops.h>
28#include <asm/bootinfo.h>
29#include <asm/io.h>
30#include <asm/irq.h>
31#include <asm/mipsregs.h>
32#include <asm/system.h>
33#include <asm/time.h>
34#include <asm/time.h>
35#include <asm/tx4938/rbtx4938.h>
36
37extern void toshiba_rbtx4938_setup(void);
38extern void rbtx4938_time_init(void);
39
40void __init tx4938_setup(void);
41void __init tx4938_time_init(void);
42void __init tx4938_timer_setup(struct irqaction *irq);
43void dump_cp0(char *key);
44
45void (*__wbflush) (void);
46
47static void
48tx4938_write_buffer_flush(void)
49{
50 mmiowb();
51
52 __asm__ __volatile__(
53 ".set push\n\t"
54 ".set noreorder\n\t"
55 "lw $0,%0\n\t"
56 "nop\n\t"
57 ".set pop"
58 : /* no output */
59 : "m" (*(int *)KSEG1)
60 : "memory");
61}
62
63void __init
64plat_setup(void)
65{
66 board_time_init = tx4938_time_init;
67 board_timer_setup = tx4938_timer_setup;
68 __wbflush = tx4938_write_buffer_flush;
69 toshiba_rbtx4938_setup();
70}
71
72void __init
73tx4938_time_init(void)
74{
75 rbtx4938_time_init();
76}
77
78void __init
79tx4938_timer_setup(struct irqaction *irq)
80{
81 u32 count;
82 u32 c1;
83 u32 c2;
84
85 setup_irq(TX4938_IRQ_CPU_TIMER, irq);
86
87 c1 = read_c0_count();
88 count = c1 + (mips_hpt_frequency / HZ);
89 write_c0_compare(count);
90 c2 = read_c0_count();
91}
diff --git a/arch/mips/tx4938/toshiba_rbtx4938/Makefile b/arch/mips/tx4938/toshiba_rbtx4938/Makefile
new file mode 100644
index 000000000000..226941279d75
--- /dev/null
+++ b/arch/mips/tx4938/toshiba_rbtx4938/Makefile
@@ -0,0 +1,9 @@
1#
2# Makefile for common code for Toshiba TX4927 based systems
3#
4# Note! Dependencies are done automagically by 'make dep', which also
5# removes any old dependencies. DON'T put your own dependencies here
6# unless it's something special (ie not a .c file).
7#
8
9obj-y += prom.o setup.o irq.o spi_eeprom.o spi_txx9.o
diff --git a/arch/mips/tx4938/toshiba_rbtx4938/irq.c b/arch/mips/tx4938/toshiba_rbtx4938/irq.c
new file mode 100644
index 000000000000..230f5a93c2e6
--- /dev/null
+++ b/arch/mips/tx4938/toshiba_rbtx4938/irq.c
@@ -0,0 +1,244 @@
1/*
2 * linux/arch/mips/tx4938/toshiba_rbtx4938/irq.c
3 *
4 * Toshiba RBTX4938 specific interrupt handlers
5 * Copyright (C) 2000-2001 Toshiba Corporation
6 *
7 * 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
8 * terms of the GNU General Public License version 2. This program is
9 * licensed "as is" without any warranty of any kind, whether express
10 * or implied.
11 *
12 * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com)
13 */
14
15/*
16IRQ Device
17
1816 TX4938-CP0/00 Software 0
1917 TX4938-CP0/01 Software 1
2018 TX4938-CP0/02 Cascade TX4938-CP0
2119 TX4938-CP0/03 Multiplexed -- do not use
2220 TX4938-CP0/04 Multiplexed -- do not use
2321 TX4938-CP0/05 Multiplexed -- do not use
2422 TX4938-CP0/06 Multiplexed -- do not use
2523 TX4938-CP0/07 CPU TIMER
26
2724 TX4938-PIC/00
2825 TX4938-PIC/01
2926 TX4938-PIC/02 Cascade RBTX4938-IOC
3027 TX4938-PIC/03 RBTX4938 RTL-8019AS Ethernet
3128 TX4938-PIC/04
3229 TX4938-PIC/05 TX4938 ETH1
3330 TX4938-PIC/06 TX4938 ETH0
3431 TX4938-PIC/07
3532 TX4938-PIC/08 TX4938 SIO 0
3633 TX4938-PIC/09 TX4938 SIO 1
3734 TX4938-PIC/10 TX4938 DMA0
3835 TX4938-PIC/11 TX4938 DMA1
3936 TX4938-PIC/12 TX4938 DMA2
4037 TX4938-PIC/13 TX4938 DMA3
4138 TX4938-PIC/14
4239 TX4938-PIC/15
4340 TX4938-PIC/16 TX4938 PCIC
4441 TX4938-PIC/17 TX4938 TMR0
4542 TX4938-PIC/18 TX4938 TMR1
4643 TX4938-PIC/19 TX4938 TMR2
4744 TX4938-PIC/20
4845 TX4938-PIC/21
4946 TX4938-PIC/22 TX4938 PCIERR
5047 TX4938-PIC/23
5148 TX4938-PIC/24
5249 TX4938-PIC/25
5350 TX4938-PIC/26
5451 TX4938-PIC/27
5552 TX4938-PIC/28
5653 TX4938-PIC/29
5754 TX4938-PIC/30
5855 TX4938-PIC/31 TX4938 SPI
59
6056 RBTX4938-IOC/00 PCI-D
6157 RBTX4938-IOC/01 PCI-C
6258 RBTX4938-IOC/02 PCI-B
6359 RBTX4938-IOC/03 PCI-A
6460 RBTX4938-IOC/04 RTC
6561 RBTX4938-IOC/05 ATA
6662 RBTX4938-IOC/06 MODEM
6763 RBTX4938-IOC/07 SWINT
68*/
69#include <linux/init.h>
70#include <linux/kernel.h>
71#include <linux/types.h>
72#include <linux/mm.h>
73#include <linux/swap.h>
74#include <linux/ioport.h>
75#include <linux/sched.h>
76#include <linux/interrupt.h>
77#include <linux/pci.h>
78#include <linux/timex.h>
79#include <asm/bootinfo.h>
80#include <asm/page.h>
81#include <asm/io.h>
82#include <asm/irq.h>
83#include <asm/processor.h>
84#include <asm/ptrace.h>
85#include <asm/reboot.h>
86#include <asm/time.h>
87#include <linux/version.h>
88#include <linux/bootmem.h>
89#include <asm/tx4938/rbtx4938.h>
90
91static unsigned int toshiba_rbtx4938_irq_ioc_startup(unsigned int irq);
92static void toshiba_rbtx4938_irq_ioc_shutdown(unsigned int irq);
93static void toshiba_rbtx4938_irq_ioc_enable(unsigned int irq);
94static void toshiba_rbtx4938_irq_ioc_disable(unsigned int irq);
95static void toshiba_rbtx4938_irq_ioc_mask_and_ack(unsigned int irq);
96static void toshiba_rbtx4938_irq_ioc_end(unsigned int irq);
97
98DEFINE_SPINLOCK(toshiba_rbtx4938_ioc_lock);
99
100#define TOSHIBA_RBTX4938_IOC_NAME "RBTX4938-IOC"
101static struct hw_interrupt_type toshiba_rbtx4938_irq_ioc_type = {
102 .typename = TOSHIBA_RBTX4938_IOC_NAME,
103 .startup = toshiba_rbtx4938_irq_ioc_startup,
104 .shutdown = toshiba_rbtx4938_irq_ioc_shutdown,
105 .enable = toshiba_rbtx4938_irq_ioc_enable,
106 .disable = toshiba_rbtx4938_irq_ioc_disable,
107 .ack = toshiba_rbtx4938_irq_ioc_mask_and_ack,
108 .end = toshiba_rbtx4938_irq_ioc_end,
109 .set_affinity = NULL
110};
111
112#define TOSHIBA_RBTX4938_IOC_INTR_ENAB 0xb7f02000
113#define TOSHIBA_RBTX4938_IOC_INTR_STAT 0xb7f0200a
114
115int
116toshiba_rbtx4938_irq_nested(int sw_irq)
117{
118 u8 level3;
119
120 level3 = reg_rd08(TOSHIBA_RBTX4938_IOC_INTR_STAT) & 0xff;
121 if (level3) {
122 /* must use fls so onboard ATA has priority */
123 sw_irq = TOSHIBA_RBTX4938_IRQ_IOC_BEG + fls(level3) - 1;
124 }
125
126 wbflush();
127 return sw_irq;
128}
129
130static struct irqaction toshiba_rbtx4938_irq_ioc_action = {
131 .handler = no_action,
132 .flags = 0,
133 .mask = CPU_MASK_NONE,
134 .name = TOSHIBA_RBTX4938_IOC_NAME,
135};
136
137/**********************************************************************************/
138/* Functions for ioc */
139/**********************************************************************************/
140static void __init
141toshiba_rbtx4938_irq_ioc_init(void)
142{
143 int i;
144
145 for (i = TOSHIBA_RBTX4938_IRQ_IOC_BEG;
146 i <= TOSHIBA_RBTX4938_IRQ_IOC_END; i++) {
147 irq_desc[i].status = IRQ_DISABLED;
148 irq_desc[i].action = 0;
149 irq_desc[i].depth = 3;
150 irq_desc[i].handler = &toshiba_rbtx4938_irq_ioc_type;
151 }
152
153 setup_irq(RBTX4938_IRQ_IOCINT,
154 &toshiba_rbtx4938_irq_ioc_action);
155}
156
157static unsigned int
158toshiba_rbtx4938_irq_ioc_startup(unsigned int irq)
159{
160 toshiba_rbtx4938_irq_ioc_enable(irq);
161
162 return 0;
163}
164
165static void
166toshiba_rbtx4938_irq_ioc_shutdown(unsigned int irq)
167{
168 toshiba_rbtx4938_irq_ioc_disable(irq);
169}
170
171static void
172toshiba_rbtx4938_irq_ioc_enable(unsigned int irq)
173{
174 unsigned long flags;
175 volatile unsigned char v;
176
177 spin_lock_irqsave(&toshiba_rbtx4938_ioc_lock, flags);
178
179 v = TX4938_RD08(TOSHIBA_RBTX4938_IOC_INTR_ENAB);
180 v |= (1 << (irq - TOSHIBA_RBTX4938_IRQ_IOC_BEG));
181 TX4938_WR08(TOSHIBA_RBTX4938_IOC_INTR_ENAB, v);
182 mmiowb();
183 TX4938_RD08(TOSHIBA_RBTX4938_IOC_INTR_ENAB);
184
185 spin_unlock_irqrestore(&toshiba_rbtx4938_ioc_lock, flags);
186}
187
188static void
189toshiba_rbtx4938_irq_ioc_disable(unsigned int irq)
190{
191 unsigned long flags;
192 volatile unsigned char v;
193
194 spin_lock_irqsave(&toshiba_rbtx4938_ioc_lock, flags);
195
196 v = TX4938_RD08(TOSHIBA_RBTX4938_IOC_INTR_ENAB);
197 v &= ~(1 << (irq - TOSHIBA_RBTX4938_IRQ_IOC_BEG));
198 TX4938_WR08(TOSHIBA_RBTX4938_IOC_INTR_ENAB, v);
199 mmiowb();
200 TX4938_RD08(TOSHIBA_RBTX4938_IOC_INTR_ENAB);
201
202 spin_unlock_irqrestore(&toshiba_rbtx4938_ioc_lock, flags);
203}
204
205static void
206toshiba_rbtx4938_irq_ioc_mask_and_ack(unsigned int irq)
207{
208 toshiba_rbtx4938_irq_ioc_disable(irq);
209}
210
211static void
212toshiba_rbtx4938_irq_ioc_end(unsigned int irq)
213{
214 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
215 toshiba_rbtx4938_irq_ioc_enable(irq);
216 }
217}
218
219extern void __init txx9_spi_irqinit(int irc_irq);
220
221void __init arch_init_irq(void)
222{
223 extern void tx4938_irq_init(void);
224
225 /* Now, interrupt control disabled, */
226 /* all IRC interrupts are masked, */
227 /* all IRC interrupt mode are Low Active. */
228
229 /* mask all IOC interrupts */
230 *rbtx4938_imask_ptr = 0;
231
232 /* clear SoftInt interrupts */
233 *rbtx4938_softint_ptr = 0;
234 tx4938_irq_init();
235 toshiba_rbtx4938_irq_ioc_init();
236 /* Onboard 10M Ether: High Active */
237 TX4938_WR(TX4938_MKA(TX4938_IRC_IRDM0), 0x00000040);
238
239 if (tx4938_ccfgptr->pcfg & TX4938_PCFG_SPI_SEL) {
240 txx9_spi_irqinit(RBTX4938_IRQ_IRC_SPI);
241 }
242
243 wbflush();
244}
diff --git a/arch/mips/tx4938/toshiba_rbtx4938/prom.c b/arch/mips/tx4938/toshiba_rbtx4938/prom.c
new file mode 100644
index 000000000000..7df8b32ba265
--- /dev/null
+++ b/arch/mips/tx4938/toshiba_rbtx4938/prom.c
@@ -0,0 +1,78 @@
1/*
2 * linux/arch/mips/tx4938/toshiba_rbtx4938/prom.c
3 *
4 * rbtx4938 specific prom routines
5 * Copyright (C) 2000-2001 Toshiba Corporation
6 *
7 * 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
8 * terms of the GNU General Public License version 2. This program is
9 * licensed "as is" without any warranty of any kind, whether express
10 * or implied.
11 *
12 * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com)
13 */
14
15#include <linux/config.h>
16#include <linux/init.h>
17#include <linux/mm.h>
18#include <linux/sched.h>
19#include <linux/bootmem.h>
20
21#include <asm/addrspace.h>
22#include <asm/bootinfo.h>
23#include <asm/tx4938/tx4938.h>
24
25void __init prom_init_cmdline(void)
26{
27 int argc = (int) fw_arg0;
28 char **argv = (char **) fw_arg1;
29 int i;
30
31 /* ignore all built-in args if any f/w args given */
32 if (argc > 1) {
33 *arcs_cmdline = '\0';
34 }
35
36 for (i = 1; i < argc; i++) {
37 if (i != 1) {
38 strcat(arcs_cmdline, " ");
39 }
40 strcat(arcs_cmdline, argv[i]);
41 }
42}
43
44void __init prom_init(void)
45{
46 extern int tx4938_get_mem_size(void);
47 int msize;
48#ifndef CONFIG_TX4938_NAND_BOOT
49 prom_init_cmdline();
50#endif
51 mips_machgroup = MACH_GROUP_TOSHIBA;
52 mips_machtype = MACH_TOSHIBA_RBTX4938;
53
54 msize = tx4938_get_mem_size();
55 add_memory_region(0, msize << 20, BOOT_MEM_RAM);
56
57 return;
58}
59
60unsigned long __init prom_free_prom_memory(void)
61{
62 return 0;
63}
64
65void __init prom_fixup_mem_map(unsigned long start, unsigned long end)
66{
67 return;
68}
69
70const char *get_system_type(void)
71{
72 return "Toshiba RBTX4938";
73}
74
75char * __init prom_getcmdline(void)
76{
77 return &(arcs_cmdline[0]);
78}
diff --git a/arch/mips/tx4938/toshiba_rbtx4938/setup.c b/arch/mips/tx4938/toshiba_rbtx4938/setup.c
new file mode 100644
index 000000000000..9f1dcc8ca5a3
--- /dev/null
+++ b/arch/mips/tx4938/toshiba_rbtx4938/setup.c
@@ -0,0 +1,1035 @@
1/*
2 * linux/arch/mips/tx4938/toshiba_rbtx4938/setup.c
3 *
4 * Setup pointers to hardware-dependent routines.
5 * Copyright (C) 2000-2001 Toshiba Corporation
6 *
7 * 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
8 * terms of the GNU General Public License version 2. This program is
9 * licensed "as is" without any warranty of any kind, whether express
10 * or implied.
11 *
12 * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com)
13 */
14#include <linux/config.h>
15#include <linux/init.h>
16#include <linux/types.h>
17#include <linux/ioport.h>
18#include <linux/proc_fs.h>
19#include <linux/delay.h>
20#include <linux/interrupt.h>
21#include <linux/console.h>
22#include <linux/pci.h>
23#include <asm/wbflush.h>
24#include <asm/reboot.h>
25#include <asm/irq.h>
26#include <asm/time.h>
27#include <asm/uaccess.h>
28#include <asm/io.h>
29#include <asm/bootinfo.h>
30#include <asm/tx4938/rbtx4938.h>
31#ifdef CONFIG_SERIAL_TXX9
32#include <linux/tty.h>
33#include <linux/serial.h>
34#include <linux/serial_core.h>
35#endif
36
37extern void rbtx4938_time_init(void) __init;
38extern char * __init prom_getcmdline(void);
39static inline void tx4938_report_pcic_status1(struct tx4938_pcic_reg *pcicptr);
40
41/* These functions are used for rebooting or halting the machine*/
42extern void rbtx4938_machine_restart(char *command);
43extern void rbtx4938_machine_halt(void);
44extern void rbtx4938_machine_power_off(void);
45
46/* clocks */
47unsigned int txx9_master_clock;
48unsigned int txx9_cpu_clock;
49unsigned int txx9_gbus_clock;
50
51unsigned long rbtx4938_ce_base[8];
52unsigned long rbtx4938_ce_size[8];
53int txboard_pci66_mode;
54static int tx4938_pcic_trdyto; /* default: disabled */
55static int tx4938_pcic_retryto; /* default: disabled */
56static int tx4938_ccfg_toeon = 1;
57
58struct tx4938_pcic_reg *pcicptrs[4] = {
59 tx4938_pcicptr /* default setting for TX4938 */
60};
61
62static struct {
63 unsigned long base;
64 unsigned long size;
65} phys_regions[16] __initdata;
66static int num_phys_regions __initdata;
67
68#define PHYS_REGION_MINSIZE 0x10000
69
70void rbtx4938_machine_halt(void)
71{
72 printk(KERN_NOTICE "System Halted\n");
73 local_irq_disable();
74
75 while (1)
76 __asm__(".set\tmips3\n\t"
77 "wait\n\t"
78 ".set\tmips0");
79}
80
81void rbtx4938_machine_power_off(void)
82{
83 rbtx4938_machine_halt();
84 /* no return */
85}
86
87void rbtx4938_machine_restart(char *command)
88{
89 local_irq_disable();
90
91 printk("Rebooting...");
92 *rbtx4938_softresetlock_ptr = 1;
93 *rbtx4938_sfvol_ptr = 1;
94 *rbtx4938_softreset_ptr = 1;
95 wbflush();
96
97 while(1);
98}
99
100void __init
101txboard_add_phys_region(unsigned long base, unsigned long size)
102{
103 if (num_phys_regions >= ARRAY_SIZE(phys_regions)) {
104 printk("phys_region overflow\n");
105 return;
106 }
107 phys_regions[num_phys_regions].base = base;
108 phys_regions[num_phys_regions].size = size;
109 num_phys_regions++;
110}
111unsigned long __init
112txboard_find_free_phys_region(unsigned long begin, unsigned long end,
113 unsigned long size)
114{
115 unsigned long base;
116 int i;
117
118 for (base = begin / size * size; base < end; base += size) {
119 for (i = 0; i < num_phys_regions; i++) {
120 if (phys_regions[i].size &&
121 base <= phys_regions[i].base + (phys_regions[i].size - 1) &&
122 base + (size - 1) >= phys_regions[i].base)
123 break;
124 }
125 if (i == num_phys_regions)
126 return base;
127 }
128 return 0;
129}
130unsigned long __init
131txboard_find_free_phys_region_shrink(unsigned long begin, unsigned long end,
132 unsigned long *size)
133{
134 unsigned long sz, base;
135 for (sz = *size; sz >= PHYS_REGION_MINSIZE; sz /= 2) {
136 base = txboard_find_free_phys_region(begin, end, sz);
137 if (base) {
138 *size = sz;
139 return base;
140 }
141 }
142 return 0;
143}
144unsigned long __init
145txboard_request_phys_region_range(unsigned long begin, unsigned long end,
146 unsigned long size)
147{
148 unsigned long base;
149 base = txboard_find_free_phys_region(begin, end, size);
150 if (base)
151 txboard_add_phys_region(base, size);
152 return base;
153}
154unsigned long __init
155txboard_request_phys_region(unsigned long size)
156{
157 unsigned long base;
158 unsigned long begin = 0, end = 0x20000000; /* search low 512MB */
159 base = txboard_find_free_phys_region(begin, end, size);
160 if (base)
161 txboard_add_phys_region(base, size);
162 return base;
163}
164unsigned long __init
165txboard_request_phys_region_shrink(unsigned long *size)
166{
167 unsigned long base;
168 unsigned long begin = 0, end = 0x20000000; /* search low 512MB */
169 base = txboard_find_free_phys_region_shrink(begin, end, size);
170 if (base)
171 txboard_add_phys_region(base, *size);
172 return base;
173}
174
175#ifdef CONFIG_PCI
176void __init
177tx4938_pcic_setup(struct tx4938_pcic_reg *pcicptr,
178 struct pci_controller *channel,
179 unsigned long pci_io_base,
180 int extarb)
181{
182 int i;
183
184 /* Disable All Initiator Space */
185 pcicptr->pciccfg &= ~(TX4938_PCIC_PCICCFG_G2PMEN(0)|
186 TX4938_PCIC_PCICCFG_G2PMEN(1)|
187 TX4938_PCIC_PCICCFG_G2PMEN(2)|
188 TX4938_PCIC_PCICCFG_G2PIOEN);
189
190 /* GB->PCI mappings */
191 pcicptr->g2piomask = (channel->io_resource->end - channel->io_resource->start) >> 4;
192 pcicptr->g2piogbase = pci_io_base |
193#ifdef __BIG_ENDIAN
194 TX4938_PCIC_G2PIOGBASE_ECHG
195#else
196 TX4938_PCIC_G2PIOGBASE_BSDIS
197#endif
198 ;
199 pcicptr->g2piopbase = 0;
200 for (i = 0; i < 3; i++) {
201 pcicptr->g2pmmask[i] = 0;
202 pcicptr->g2pmgbase[i] = 0;
203 pcicptr->g2pmpbase[i] = 0;
204 }
205 if (channel->mem_resource->end) {
206 pcicptr->g2pmmask[0] = (channel->mem_resource->end - channel->mem_resource->start) >> 4;
207 pcicptr->g2pmgbase[0] = channel->mem_resource->start |
208#ifdef __BIG_ENDIAN
209 TX4938_PCIC_G2PMnGBASE_ECHG
210#else
211 TX4938_PCIC_G2PMnGBASE_BSDIS
212#endif
213 ;
214 pcicptr->g2pmpbase[0] = channel->mem_resource->start;
215 }
216 /* PCI->GB mappings (I/O 256B) */
217 pcicptr->p2giopbase = 0; /* 256B */
218 pcicptr->p2giogbase = 0;
219 /* PCI->GB mappings (MEM 512MB (64MB on R1.x)) */
220 pcicptr->p2gm0plbase = 0;
221 pcicptr->p2gm0pubase = 0;
222 pcicptr->p2gmgbase[0] = 0 |
223 TX4938_PCIC_P2GMnGBASE_TMEMEN |
224#ifdef __BIG_ENDIAN
225 TX4938_PCIC_P2GMnGBASE_TECHG
226#else
227 TX4938_PCIC_P2GMnGBASE_TBSDIS
228#endif
229 ;
230 /* PCI->GB mappings (MEM 16MB) */
231 pcicptr->p2gm1plbase = 0xffffffff;
232 pcicptr->p2gm1pubase = 0xffffffff;
233 pcicptr->p2gmgbase[1] = 0;
234 /* PCI->GB mappings (MEM 1MB) */
235 pcicptr->p2gm2pbase = 0xffffffff; /* 1MB */
236 pcicptr->p2gmgbase[2] = 0;
237
238 pcicptr->pciccfg &= TX4938_PCIC_PCICCFG_GBWC_MASK;
239 /* Enable Initiator Memory Space */
240 if (channel->mem_resource->end)
241 pcicptr->pciccfg |= TX4938_PCIC_PCICCFG_G2PMEN(0);
242 /* Enable Initiator I/O Space */
243 if (channel->io_resource->end)
244 pcicptr->pciccfg |= TX4938_PCIC_PCICCFG_G2PIOEN;
245 /* Enable Initiator Config */
246 pcicptr->pciccfg |=
247 TX4938_PCIC_PCICCFG_ICAEN |
248 TX4938_PCIC_PCICCFG_TCAR;
249
250 /* Do not use MEMMUL, MEMINF: YMFPCI card causes M_ABORT. */
251 pcicptr->pcicfg1 = 0;
252
253 pcicptr->g2ptocnt &= ~0xffff;
254
255 if (tx4938_pcic_trdyto >= 0) {
256 pcicptr->g2ptocnt &= ~0xff;
257 pcicptr->g2ptocnt |= (tx4938_pcic_trdyto & 0xff);
258 }
259
260 if (tx4938_pcic_retryto >= 0) {
261 pcicptr->g2ptocnt &= ~0xff00;
262 pcicptr->g2ptocnt |= ((tx4938_pcic_retryto<<8) & 0xff00);
263 }
264
265 /* Clear All Local Bus Status */
266 pcicptr->pcicstatus = TX4938_PCIC_PCICSTATUS_ALL;
267 /* Enable All Local Bus Interrupts */
268 pcicptr->pcicmask = TX4938_PCIC_PCICSTATUS_ALL;
269 /* Clear All Initiator Status */
270 pcicptr->g2pstatus = TX4938_PCIC_G2PSTATUS_ALL;
271 /* Enable All Initiator Interrupts */
272 pcicptr->g2pmask = TX4938_PCIC_G2PSTATUS_ALL;
273 /* Clear All PCI Status Error */
274 pcicptr->pcistatus =
275 (pcicptr->pcistatus & 0x0000ffff) |
276 (TX4938_PCIC_PCISTATUS_ALL << 16);
277 /* Enable All PCI Status Error Interrupts */
278 pcicptr->pcimask = TX4938_PCIC_PCISTATUS_ALL;
279
280 if (!extarb) {
281 /* Reset Bus Arbiter */
282 pcicptr->pbacfg = TX4938_PCIC_PBACFG_RPBA;
283 pcicptr->pbabm = 0;
284 /* Enable Bus Arbiter */
285 pcicptr->pbacfg = TX4938_PCIC_PBACFG_PBAEN;
286 }
287
288 /* PCIC Int => IRC IRQ16 */
289 pcicptr->pcicfg2 =
290 (pcicptr->pcicfg2 & 0xffffff00) | TX4938_IR_PCIC;
291
292 pcicptr->pcistatus = PCI_COMMAND_MASTER |
293 PCI_COMMAND_MEMORY |
294 PCI_COMMAND_PARITY | PCI_COMMAND_SERR;
295}
296
297int __init
298tx4938_report_pciclk(void)
299{
300 unsigned long pcode = TX4938_REV_PCODE();
301 int pciclk = 0;
302 printk("TX%lx PCIC --%s PCICLK:",
303 pcode,
304 (tx4938_ccfgptr->ccfg & TX4938_CCFG_PCI66) ? " PCI66" : "");
305 if (tx4938_ccfgptr->pcfg & TX4938_PCFG_PCICLKEN_ALL) {
306
307 switch ((unsigned long)tx4938_ccfgptr->ccfg & TX4938_CCFG_PCIDIVMODE_MASK) {
308 case TX4938_CCFG_PCIDIVMODE_4:
309 pciclk = txx9_cpu_clock / 4; break;
310 case TX4938_CCFG_PCIDIVMODE_4_5:
311 pciclk = txx9_cpu_clock * 2 / 9; break;
312 case TX4938_CCFG_PCIDIVMODE_5:
313 pciclk = txx9_cpu_clock / 5; break;
314 case TX4938_CCFG_PCIDIVMODE_5_5:
315 pciclk = txx9_cpu_clock * 2 / 11; break;
316 case TX4938_CCFG_PCIDIVMODE_8:
317 pciclk = txx9_cpu_clock / 8; break;
318 case TX4938_CCFG_PCIDIVMODE_9:
319 pciclk = txx9_cpu_clock / 9; break;
320 case TX4938_CCFG_PCIDIVMODE_10:
321 pciclk = txx9_cpu_clock / 10; break;
322 case TX4938_CCFG_PCIDIVMODE_11:
323 pciclk = txx9_cpu_clock / 11; break;
324 }
325 printk("Internal(%dMHz)", pciclk / 1000000);
326 } else {
327 printk("External");
328 pciclk = -1;
329 }
330 printk("\n");
331 return pciclk;
332}
333
334void __init set_tx4938_pcicptr(int ch, struct tx4938_pcic_reg *pcicptr)
335{
336 pcicptrs[ch] = pcicptr;
337}
338
339struct tx4938_pcic_reg *get_tx4938_pcicptr(int ch)
340{
341 return pcicptrs[ch];
342}
343
344static struct pci_dev *fake_pci_dev(struct pci_controller *hose,
345 int top_bus, int busnr, int devfn)
346{
347 static struct pci_dev dev;
348 static struct pci_bus bus;
349
350 dev.sysdata = (void *)hose;
351 dev.devfn = devfn;
352 bus.number = busnr;
353 bus.ops = hose->pci_ops;
354 bus.parent = NULL;
355 dev.bus = &bus;
356
357 return &dev;
358}
359
360#define EARLY_PCI_OP(rw, size, type) \
361static int early_##rw##_config_##size(struct pci_controller *hose, \
362 int top_bus, int bus, int devfn, int offset, type value) \
363{ \
364 return pci_##rw##_config_##size( \
365 fake_pci_dev(hose, top_bus, bus, devfn), \
366 offset, value); \
367}
368
369EARLY_PCI_OP(read, word, u16 *)
370
371int txboard_pci66_check(struct pci_controller *hose, int top_bus, int current_bus)
372{
373 u32 pci_devfn;
374 unsigned short vid;
375 int devfn_start = 0;
376 int devfn_stop = 0xff;
377 int cap66 = -1;
378 u16 stat;
379
380 printk("PCI: Checking 66MHz capabilities...\n");
381
382 for (pci_devfn=devfn_start; pci_devfn<devfn_stop; pci_devfn++) {
383 early_read_config_word(hose, top_bus, current_bus, pci_devfn,
384 PCI_VENDOR_ID, &vid);
385
386 if (vid == 0xffff) continue;
387
388 /* check 66MHz capability */
389 if (cap66 < 0)
390 cap66 = 1;
391 if (cap66) {
392 early_read_config_word(hose, top_bus, current_bus, pci_devfn,
393 PCI_STATUS, &stat);
394 if (!(stat & PCI_STATUS_66MHZ)) {
395 printk(KERN_DEBUG "PCI: %02x:%02x not 66MHz capable.\n",
396 current_bus, pci_devfn);
397 cap66 = 0;
398 break;
399 }
400 }
401 }
402 return cap66 > 0;
403}
404
405int __init
406tx4938_pciclk66_setup(void)
407{
408 int pciclk;
409
410 /* Assert M66EN */
411 tx4938_ccfgptr->ccfg |= TX4938_CCFG_PCI66;
412 /* Double PCICLK (if possible) */
413 if (tx4938_ccfgptr->pcfg & TX4938_PCFG_PCICLKEN_ALL) {
414 unsigned int pcidivmode =
415 tx4938_ccfgptr->ccfg & TX4938_CCFG_PCIDIVMODE_MASK;
416 switch (pcidivmode) {
417 case TX4938_CCFG_PCIDIVMODE_8:
418 case TX4938_CCFG_PCIDIVMODE_4:
419 pcidivmode = TX4938_CCFG_PCIDIVMODE_4;
420 pciclk = txx9_cpu_clock / 4;
421 break;
422 case TX4938_CCFG_PCIDIVMODE_9:
423 case TX4938_CCFG_PCIDIVMODE_4_5:
424 pcidivmode = TX4938_CCFG_PCIDIVMODE_4_5;
425 pciclk = txx9_cpu_clock * 2 / 9;
426 break;
427 case TX4938_CCFG_PCIDIVMODE_10:
428 case TX4938_CCFG_PCIDIVMODE_5:
429 pcidivmode = TX4938_CCFG_PCIDIVMODE_5;
430 pciclk = txx9_cpu_clock / 5;
431 break;
432 case TX4938_CCFG_PCIDIVMODE_11:
433 case TX4938_CCFG_PCIDIVMODE_5_5:
434 default:
435 pcidivmode = TX4938_CCFG_PCIDIVMODE_5_5;
436 pciclk = txx9_cpu_clock * 2 / 11;
437 break;
438 }
439 tx4938_ccfgptr->ccfg =
440 (tx4938_ccfgptr->ccfg & ~TX4938_CCFG_PCIDIVMODE_MASK)
441 | pcidivmode;
442 printk(KERN_DEBUG "PCICLK: ccfg:%08lx\n",
443 (unsigned long)tx4938_ccfgptr->ccfg);
444 } else {
445 pciclk = -1;
446 }
447 return pciclk;
448}
449
450extern struct pci_controller tx4938_pci_controller[];
451static int __init tx4938_pcibios_init(void)
452{
453 unsigned long mem_base[2];
454 unsigned long mem_size[2] = {TX4938_PCIMEM_SIZE_0,TX4938_PCIMEM_SIZE_1}; /* MAX 128M,64K */
455 unsigned long io_base[2];
456 unsigned long io_size[2] = {TX4938_PCIIO_SIZE_0,TX4938_PCIIO_SIZE_1}; /* MAX 16M,64K */
457 /* TX4938 PCIC1: 64K MEM/IO is enough for ETH0,ETH1 */
458 int extarb = !(tx4938_ccfgptr->ccfg & TX4938_CCFG_PCIXARB);
459
460 PCIBIOS_MIN_IO = 0x00001000UL;
461 PCIBIOS_MIN_MEM = 0x01000000UL;
462
463 mem_base[0] = txboard_request_phys_region_shrink(&mem_size[0]);
464 io_base[0] = txboard_request_phys_region_shrink(&io_size[0]);
465
466 printk("TX4938 PCIC -- DID:%04x VID:%04x RID:%02x Arbiter:%s\n",
467 (unsigned short)(tx4938_pcicptr->pciid >> 16),
468 (unsigned short)(tx4938_pcicptr->pciid & 0xffff),
469 (unsigned short)(tx4938_pcicptr->pciccrev & 0xff),
470 extarb ? "External" : "Internal");
471
472 /* setup PCI area */
473 tx4938_pci_controller[0].io_resource->start = io_base[0];
474 tx4938_pci_controller[0].io_resource->end = (io_base[0] + io_size[0]) - 1;
475 tx4938_pci_controller[0].mem_resource->start = mem_base[0];
476 tx4938_pci_controller[0].mem_resource->end = mem_base[0] + mem_size[0] - 1;
477
478 set_tx4938_pcicptr(0, tx4938_pcicptr);
479
480 register_pci_controller(&tx4938_pci_controller[0]);
481
482 if (tx4938_ccfgptr->ccfg & TX4938_CCFG_PCI66) {
483 printk("TX4938_CCFG_PCI66 already configured\n");
484 txboard_pci66_mode = -1; /* already configured */
485 }
486
487 /* Reset PCI Bus */
488 *rbtx4938_pcireset_ptr = 0;
489 /* Reset PCIC */
490 tx4938_ccfgptr->clkctr |= TX4938_CLKCTR_PCIRST;
491 if (txboard_pci66_mode > 0)
492 tx4938_pciclk66_setup();
493 mdelay(10);
494 /* clear PCIC reset */
495 tx4938_ccfgptr->clkctr &= ~TX4938_CLKCTR_PCIRST;
496 *rbtx4938_pcireset_ptr = 1;
497 wbflush();
498 tx4938_report_pcic_status1(tx4938_pcicptr);
499
500 tx4938_report_pciclk();
501 tx4938_pcic_setup(tx4938_pcicptr, &tx4938_pci_controller[0], io_base[0], extarb);
502 if (txboard_pci66_mode == 0 &&
503 txboard_pci66_check(&tx4938_pci_controller[0], 0, 0)) {
504 /* Reset PCI Bus */
505 *rbtx4938_pcireset_ptr = 0;
506 /* Reset PCIC */
507 tx4938_ccfgptr->clkctr |= TX4938_CLKCTR_PCIRST;
508 tx4938_pciclk66_setup();
509 mdelay(10);
510 /* clear PCIC reset */
511 tx4938_ccfgptr->clkctr &= ~TX4938_CLKCTR_PCIRST;
512 *rbtx4938_pcireset_ptr = 1;
513 wbflush();
514 /* Reinitialize PCIC */
515 tx4938_report_pciclk();
516 tx4938_pcic_setup(tx4938_pcicptr, &tx4938_pci_controller[0], io_base[0], extarb);
517 }
518
519 mem_base[1] = txboard_request_phys_region_shrink(&mem_size[1]);
520 io_base[1] = txboard_request_phys_region_shrink(&io_size[1]);
521 /* Reset PCIC1 */
522 tx4938_ccfgptr->clkctr |= TX4938_CLKCTR_PCIC1RST;
523 /* PCI1DMD==0 => PCI1CLK==GBUSCLK/2 => PCI66 */
524 if (!(tx4938_ccfgptr->ccfg & TX4938_CCFG_PCI1DMD))
525 tx4938_ccfgptr->ccfg |= TX4938_CCFG_PCI1_66;
526 else
527 tx4938_ccfgptr->ccfg &= ~TX4938_CCFG_PCI1_66;
528 mdelay(10);
529 /* clear PCIC1 reset */
530 tx4938_ccfgptr->clkctr &= ~TX4938_CLKCTR_PCIC1RST;
531 tx4938_report_pcic_status1(tx4938_pcic1ptr);
532
533 printk("TX4938 PCIC1 -- DID:%04x VID:%04x RID:%02x",
534 (unsigned short)(tx4938_pcic1ptr->pciid >> 16),
535 (unsigned short)(tx4938_pcic1ptr->pciid & 0xffff),
536 (unsigned short)(tx4938_pcic1ptr->pciccrev & 0xff));
537 printk("%s PCICLK:%dMHz\n",
538 (tx4938_ccfgptr->ccfg & TX4938_CCFG_PCI1_66) ? " PCI66" : "",
539 txx9_gbus_clock /
540 ((tx4938_ccfgptr->ccfg & TX4938_CCFG_PCI1DMD) ? 4 : 2) /
541 1000000);
542
543 /* assumption: CPHYSADDR(mips_io_port_base) == io_base[0] */
544 tx4938_pci_controller[1].io_resource->start =
545 io_base[1] - io_base[0];
546 tx4938_pci_controller[1].io_resource->end =
547 io_base[1] - io_base[0] + io_size[1] - 1;
548 tx4938_pci_controller[1].mem_resource->start = mem_base[1];
549 tx4938_pci_controller[1].mem_resource->end =
550 mem_base[1] + mem_size[1] - 1;
551 set_tx4938_pcicptr(1, tx4938_pcic1ptr);
552
553 register_pci_controller(&tx4938_pci_controller[1]);
554
555 tx4938_pcic_setup(tx4938_pcic1ptr, &tx4938_pci_controller[1], io_base[1], extarb);
556
557 /* map ioport 0 to PCI I/O space address 0 */
558 set_io_port_base(KSEG1 + io_base[0]);
559
560 return 0;
561}
562
563arch_initcall(tx4938_pcibios_init);
564
565#endif /* CONFIG_PCI */
566
567/* SPI support */
568
569/* chip select for SPI devices */
570#define SEEPROM1_CS 7 /* PIO7 */
571#define SEEPROM2_CS 0 /* IOC */
572#define SEEPROM3_CS 1 /* IOC */
573#define SRTC_CS 2 /* IOC */
574
575static int rbtx4938_spi_cs_func(int chipid, int on)
576{
577 unsigned char bit;
578 switch (chipid) {
579 case RBTX4938_SEEPROM1_CHIPID:
580 if (on)
581 tx4938_pioptr->dout &= ~(1 << SEEPROM1_CS);
582 else
583 tx4938_pioptr->dout |= (1 << SEEPROM1_CS);
584 return 0;
585 break;
586 case RBTX4938_SEEPROM2_CHIPID:
587 bit = (1 << SEEPROM2_CS);
588 break;
589 case RBTX4938_SEEPROM3_CHIPID:
590 bit = (1 << SEEPROM3_CS);
591 break;
592 case RBTX4938_SRTC_CHIPID:
593 bit = (1 << SRTC_CS);
594 break;
595 default:
596 return -ENODEV;
597 }
598 /* bit1,2,4 are low active, bit3 is high active */
599 *rbtx4938_spics_ptr =
600 (*rbtx4938_spics_ptr & ~bit) |
601 ((on ? (bit ^ 0x0b) : ~(bit ^ 0x0b)) & bit);
602 return 0;
603}
604
605#ifdef CONFIG_PCI
606extern int spi_eeprom_read(int chipid, int address, unsigned char *buf, int len);
607
608int rbtx4938_get_tx4938_ethaddr(struct pci_dev *dev, unsigned char *addr)
609{
610 struct pci_controller *channel = (struct pci_controller *)dev->bus->sysdata;
611 static unsigned char dat[17];
612 static int read_dat = 0;
613 int ch = 0;
614
615 if (channel != &tx4938_pci_controller[1])
616 return -ENODEV;
617 /* TX4938 PCIC1 */
618 switch (PCI_SLOT(dev->devfn)) {
619 case TX4938_PCIC_IDSEL_AD_TO_SLOT(31):
620 ch = 0;
621 break;
622 case TX4938_PCIC_IDSEL_AD_TO_SLOT(30):
623 ch = 1;
624 break;
625 default:
626 return -ENODEV;
627 }
628 if (!read_dat) {
629 unsigned char sum;
630 int i;
631 read_dat = 1;
632 /* 0-3: "MAC\0", 4-9:eth0, 10-15:eth1, 16:sum */
633 if (spi_eeprom_read(RBTX4938_SEEPROM1_CHIPID,
634 0, dat, sizeof(dat))) {
635 printk(KERN_ERR "seeprom: read error.\n");
636 } else {
637 if (strcmp(dat, "MAC") != 0)
638 printk(KERN_WARNING "seeprom: bad signature.\n");
639 for (i = 0, sum = 0; i < sizeof(dat); i++)
640 sum += dat[i];
641 if (sum)
642 printk(KERN_WARNING "seeprom: bad checksum.\n");
643 }
644 }
645 memcpy(addr, &dat[4 + 6 * ch], 6);
646 return 0;
647}
648#endif /* CONFIG_PCI */
649
650extern void __init txx9_spi_init(unsigned long base, int (*cs_func)(int chipid, int on));
651static void __init rbtx4938_spi_setup(void)
652{
653 /* set SPI_SEL */
654 tx4938_ccfgptr->pcfg |= TX4938_PCFG_SPI_SEL;
655 /* chip selects for SPI devices */
656 tx4938_pioptr->dout |= (1 << SEEPROM1_CS);
657 tx4938_pioptr->dir |= (1 << SEEPROM1_CS);
658 txx9_spi_init(TX4938_SPI_REG, rbtx4938_spi_cs_func);
659}
660
661static struct resource rbtx4938_fpga_resource;
662
663static char pcode_str[8];
664static struct resource tx4938_reg_resource = {
665 pcode_str, TX4938_REG_BASE, TX4938_REG_BASE+TX4938_REG_SIZE, IORESOURCE_MEM
666};
667
668void __init tx4938_board_setup(void)
669{
670 int i;
671 unsigned long divmode;
672 int cpuclk = 0;
673 unsigned long pcode = TX4938_REV_PCODE();
674
675 ioport_resource.start = 0x1000;
676 ioport_resource.end = 0xffffffff;
677 iomem_resource.start = 0x1000;
678 iomem_resource.end = 0xffffffff; /* expand to 4GB */
679
680 sprintf(pcode_str, "TX%lx", pcode);
681 /* SDRAMC,EBUSC are configured by PROM */
682 for (i = 0; i < 8; i++) {
683 if (!(tx4938_ebuscptr->cr[i] & 0x8))
684 continue; /* disabled */
685 rbtx4938_ce_base[i] = (unsigned long)TX4938_EBUSC_BA(i);
686 txboard_add_phys_region(rbtx4938_ce_base[i], TX4938_EBUSC_SIZE(i));
687 }
688
689 /* clocks */
690 if (txx9_master_clock) {
691 /* calculate gbus_clock and cpu_clock from master_clock */
692 divmode = (unsigned long)tx4938_ccfgptr->ccfg & TX4938_CCFG_DIVMODE_MASK;
693 switch (divmode) {
694 case TX4938_CCFG_DIVMODE_8:
695 case TX4938_CCFG_DIVMODE_10:
696 case TX4938_CCFG_DIVMODE_12:
697 case TX4938_CCFG_DIVMODE_16:
698 case TX4938_CCFG_DIVMODE_18:
699 txx9_gbus_clock = txx9_master_clock * 4; break;
700 default:
701 txx9_gbus_clock = txx9_master_clock;
702 }
703 switch (divmode) {
704 case TX4938_CCFG_DIVMODE_2:
705 case TX4938_CCFG_DIVMODE_8:
706 cpuclk = txx9_gbus_clock * 2; break;
707 case TX4938_CCFG_DIVMODE_2_5:
708 case TX4938_CCFG_DIVMODE_10:
709 cpuclk = txx9_gbus_clock * 5 / 2; break;
710 case TX4938_CCFG_DIVMODE_3:
711 case TX4938_CCFG_DIVMODE_12:
712 cpuclk = txx9_gbus_clock * 3; break;
713 case TX4938_CCFG_DIVMODE_4:
714 case TX4938_CCFG_DIVMODE_16:
715 cpuclk = txx9_gbus_clock * 4; break;
716 case TX4938_CCFG_DIVMODE_4_5:
717 case TX4938_CCFG_DIVMODE_18:
718 cpuclk = txx9_gbus_clock * 9 / 2; break;
719 }
720 txx9_cpu_clock = cpuclk;
721 } else {
722 if (txx9_cpu_clock == 0) {
723 txx9_cpu_clock = 300000000; /* 300MHz */
724 }
725 /* calculate gbus_clock and master_clock from cpu_clock */
726 cpuclk = txx9_cpu_clock;
727 divmode = (unsigned long)tx4938_ccfgptr->ccfg & TX4938_CCFG_DIVMODE_MASK;
728 switch (divmode) {
729 case TX4938_CCFG_DIVMODE_2:
730 case TX4938_CCFG_DIVMODE_8:
731 txx9_gbus_clock = cpuclk / 2; break;
732 case TX4938_CCFG_DIVMODE_2_5:
733 case TX4938_CCFG_DIVMODE_10:
734 txx9_gbus_clock = cpuclk * 2 / 5; break;
735 case TX4938_CCFG_DIVMODE_3:
736 case TX4938_CCFG_DIVMODE_12:
737 txx9_gbus_clock = cpuclk / 3; break;
738 case TX4938_CCFG_DIVMODE_4:
739 case TX4938_CCFG_DIVMODE_16:
740 txx9_gbus_clock = cpuclk / 4; break;
741 case TX4938_CCFG_DIVMODE_4_5:
742 case TX4938_CCFG_DIVMODE_18:
743 txx9_gbus_clock = cpuclk * 2 / 9; break;
744 }
745 switch (divmode) {
746 case TX4938_CCFG_DIVMODE_8:
747 case TX4938_CCFG_DIVMODE_10:
748 case TX4938_CCFG_DIVMODE_12:
749 case TX4938_CCFG_DIVMODE_16:
750 case TX4938_CCFG_DIVMODE_18:
751 txx9_master_clock = txx9_gbus_clock / 4; break;
752 default:
753 txx9_master_clock = txx9_gbus_clock;
754 }
755 }
756 /* change default value to udelay/mdelay take reasonable time */
757 loops_per_jiffy = txx9_cpu_clock / HZ / 2;
758
759 /* CCFG */
760 /* clear WatchDogReset,BusErrorOnWrite flag (W1C) */
761 tx4938_ccfgptr->ccfg |= TX4938_CCFG_WDRST | TX4938_CCFG_BEOW;
762 /* clear PCIC1 reset */
763 if (tx4938_ccfgptr->clkctr & TX4938_CLKCTR_PCIC1RST)
764 tx4938_ccfgptr->clkctr &= ~TX4938_CLKCTR_PCIC1RST;
765
766 /* enable Timeout BusError */
767 if (tx4938_ccfg_toeon)
768 tx4938_ccfgptr->ccfg |= TX4938_CCFG_TOE;
769
770 /* DMA selection */
771 tx4938_ccfgptr->pcfg &= ~TX4938_PCFG_DMASEL_ALL;
772
773 /* Use external clock for external arbiter */
774 if (!(tx4938_ccfgptr->ccfg & TX4938_CCFG_PCIXARB))
775 tx4938_ccfgptr->pcfg &= ~TX4938_PCFG_PCICLKEN_ALL;
776
777 printk("%s -- %dMHz(M%dMHz) CRIR:%08lx CCFG:%Lx PCFG:%Lx\n",
778 pcode_str,
779 cpuclk / 1000000, txx9_master_clock / 1000000,
780 (unsigned long)tx4938_ccfgptr->crir,
781 tx4938_ccfgptr->ccfg,
782 tx4938_ccfgptr->pcfg);
783
784 printk("%s SDRAMC --", pcode_str);
785 for (i = 0; i < 4; i++) {
786 unsigned long long cr = tx4938_sdramcptr->cr[i];
787 unsigned long ram_base, ram_size;
788 if (!((unsigned long)cr & 0x00000400))
789 continue; /* disabled */
790 ram_base = (unsigned long)(cr >> 49) << 21;
791 ram_size = ((unsigned long)(cr >> 33) + 1) << 21;
792 if (ram_base >= 0x20000000)
793 continue; /* high memory (ignore) */
794 printk(" CR%d:%016Lx", i, cr);
795 txboard_add_phys_region(ram_base, ram_size);
796 }
797 printk(" TR:%09Lx\n", tx4938_sdramcptr->tr);
798
799 /* SRAM */
800 if (pcode == 0x4938 && tx4938_sramcptr->cr & 1) {
801 unsigned int size = 0x800;
802 unsigned long base =
803 (tx4938_sramcptr->cr >> (39-11)) & ~(size - 1);
804 txboard_add_phys_region(base, size);
805 }
806
807 /* IRC */
808 /* disable interrupt control */
809 tx4938_ircptr->cer = 0;
810
811 /* TMR */
812 /* disable all timers */
813 for (i = 0; i < TX4938_NR_TMR; i++) {
814 tx4938_tmrptr(i)->tcr = 0x00000020;
815 tx4938_tmrptr(i)->tisr = 0;
816 tx4938_tmrptr(i)->cpra = 0xffffffff;
817 tx4938_tmrptr(i)->itmr = 0;
818 tx4938_tmrptr(i)->ccdr = 0;
819 tx4938_tmrptr(i)->pgmr = 0;
820 }
821
822 /* enable DMA */
823 TX4938_WR64(0xff1fb150, TX4938_DMA_MCR_MSTEN);
824 TX4938_WR64(0xff1fb950, TX4938_DMA_MCR_MSTEN);
825
826 /* PIO */
827 tx4938_pioptr->maskcpu = 0;
828 tx4938_pioptr->maskext = 0;
829
830 /* TX4938 internal registers */
831 if (request_resource(&iomem_resource, &tx4938_reg_resource))
832 printk("request resource for internal registers failed\n");
833}
834
835#ifdef CONFIG_PCI
836static inline void tx4938_report_pcic_status1(struct tx4938_pcic_reg *pcicptr)
837{
838 unsigned short pcistatus = (unsigned short)(pcicptr->pcistatus >> 16);
839 unsigned long g2pstatus = pcicptr->g2pstatus;
840 unsigned long pcicstatus = pcicptr->pcicstatus;
841 static struct {
842 unsigned long flag;
843 const char *str;
844 } pcistat_tbl[] = {
845 { PCI_STATUS_DETECTED_PARITY, "DetectedParityError" },
846 { PCI_STATUS_SIG_SYSTEM_ERROR, "SignaledSystemError" },
847 { PCI_STATUS_REC_MASTER_ABORT, "ReceivedMasterAbort" },
848 { PCI_STATUS_REC_TARGET_ABORT, "ReceivedTargetAbort" },
849 { PCI_STATUS_SIG_TARGET_ABORT, "SignaledTargetAbort" },
850 { PCI_STATUS_PARITY, "MasterParityError" },
851 }, g2pstat_tbl[] = {
852 { TX4938_PCIC_G2PSTATUS_TTOE, "TIOE" },
853 { TX4938_PCIC_G2PSTATUS_RTOE, "RTOE" },
854 }, pcicstat_tbl[] = {
855 { TX4938_PCIC_PCICSTATUS_PME, "PME" },
856 { TX4938_PCIC_PCICSTATUS_TLB, "TLB" },
857 { TX4938_PCIC_PCICSTATUS_NIB, "NIB" },
858 { TX4938_PCIC_PCICSTATUS_ZIB, "ZIB" },
859 { TX4938_PCIC_PCICSTATUS_PERR, "PERR" },
860 { TX4938_PCIC_PCICSTATUS_SERR, "SERR" },
861 { TX4938_PCIC_PCICSTATUS_GBE, "GBE" },
862 { TX4938_PCIC_PCICSTATUS_IWB, "IWB" },
863 };
864 int i;
865
866 printk("pcistat:%04x(", pcistatus);
867 for (i = 0; i < ARRAY_SIZE(pcistat_tbl); i++)
868 if (pcistatus & pcistat_tbl[i].flag)
869 printk("%s ", pcistat_tbl[i].str);
870 printk("), g2pstatus:%08lx(", g2pstatus);
871 for (i = 0; i < ARRAY_SIZE(g2pstat_tbl); i++)
872 if (g2pstatus & g2pstat_tbl[i].flag)
873 printk("%s ", g2pstat_tbl[i].str);
874 printk("), pcicstatus:%08lx(", pcicstatus);
875 for (i = 0; i < ARRAY_SIZE(pcicstat_tbl); i++)
876 if (pcicstatus & pcicstat_tbl[i].flag)
877 printk("%s ", pcicstat_tbl[i].str);
878 printk(")\n");
879}
880
881void tx4938_report_pcic_status(void)
882{
883 int i;
884 struct tx4938_pcic_reg *pcicptr;
885 for (i = 0; (pcicptr = get_tx4938_pcicptr(i)) != NULL; i++)
886 tx4938_report_pcic_status1(pcicptr);
887}
888
889#endif /* CONFIG_PCI */
890
891/* We use onchip r4k counter or TMR timer as our system wide timer
892 * interrupt running at 100HZ. */
893
894extern void __init rtc_rx5c348_init(int chipid);
895void __init rbtx4938_time_init(void)
896{
897 rtc_rx5c348_init(RBTX4938_SRTC_CHIPID);
898 mips_hpt_frequency = txx9_cpu_clock / 2;
899}
900
901void __init toshiba_rbtx4938_setup(void)
902{
903 unsigned long long pcfg;
904 char *argptr;
905
906 iomem_resource.end = 0xffffffff; /* 4GB */
907
908 if (txx9_master_clock == 0)
909 txx9_master_clock = 25000000; /* 25MHz */
910 tx4938_board_setup();
911 /* setup irq stuff */
912 TX4938_WR(TX4938_MKA(TX4938_IRC_IRDM0), 0x00000000); /* irq trigger */
913 TX4938_WR(TX4938_MKA(TX4938_IRC_IRDM1), 0x00000000); /* irq trigger */
914 /* setup serial stuff */
915 TX4938_WR(0xff1ff314, 0x00000000); /* h/w flow control off */
916 TX4938_WR(0xff1ff414, 0x00000000); /* h/w flow control off */
917
918#ifndef CONFIG_PCI
919 set_io_port_base(RBTX4938_ETHER_BASE);
920#endif
921
922#ifdef CONFIG_SERIAL_TXX9
923 {
924 extern int early_serial_txx9_setup(struct uart_port *port);
925 int i;
926 struct uart_port req;
927 for(i = 0; i < 2; i++) {
928 memset(&req, 0, sizeof(req));
929 req.line = i;
930 req.iotype = UPIO_MEM;
931 req.membase = (char *)(0xff1ff300 + i * 0x100);
932 req.mapbase = 0xff1ff300 + i * 0x100;
933 req.irq = 32 + i;
934 req.flags |= UPF_BUGGY_UART /*HAVE_CTS_LINE*/;
935 req.uartclk = 50000000;
936 early_serial_txx9_setup(&req);
937 }
938 }
939#ifdef CONFIG_SERIAL_TXX9_CONSOLE
940 argptr = prom_getcmdline();
941 if (strstr(argptr, "console=") == NULL) {
942 strcat(argptr, " console=ttyS0,38400");
943 }
944#endif
945#endif
946
947#ifdef CONFIG_TOSHIBA_RBTX4938_MPLEX_PIO58_61
948 printk("PIOSEL: disabling both ata and nand selection\n");
949 local_irq_disable();
950 tx4938_ccfgptr->pcfg &= ~(TX4938_PCFG_NDF_SEL | TX4938_PCFG_ATA_SEL);
951#endif
952
953#ifdef CONFIG_TOSHIBA_RBTX4938_MPLEX_NAND
954 printk("PIOSEL: enabling nand selection\n");
955 tx4938_ccfgptr->pcfg |= TX4938_PCFG_NDF_SEL;
956 tx4938_ccfgptr->pcfg &= ~TX4938_PCFG_ATA_SEL;
957#endif
958
959#ifdef CONFIG_TOSHIBA_RBTX4938_MPLEX_ATA
960 printk("PIOSEL: enabling ata selection\n");
961 tx4938_ccfgptr->pcfg |= TX4938_PCFG_ATA_SEL;
962 tx4938_ccfgptr->pcfg &= ~TX4938_PCFG_NDF_SEL;
963#endif
964
965#ifdef CONFIG_IP_PNP
966 argptr = prom_getcmdline();
967 if (strstr(argptr, "ip=") == NULL) {
968 strcat(argptr, " ip=any");
969 }
970#endif
971
972
973#ifdef CONFIG_FB
974 {
975 conswitchp = &dummy_con;
976 }
977#endif
978
979 rbtx4938_spi_setup();
980 pcfg = tx4938_ccfgptr->pcfg; /* updated */
981 /* fixup piosel */
982 if ((pcfg & (TX4938_PCFG_ATA_SEL | TX4938_PCFG_NDF_SEL)) ==
983 TX4938_PCFG_ATA_SEL) {
984 *rbtx4938_piosel_ptr = (*rbtx4938_piosel_ptr & 0x03) | 0x04;
985 }
986 else if ((pcfg & (TX4938_PCFG_ATA_SEL | TX4938_PCFG_NDF_SEL)) ==
987 TX4938_PCFG_NDF_SEL) {
988 *rbtx4938_piosel_ptr = (*rbtx4938_piosel_ptr & 0x03) | 0x08;
989 }
990 else {
991 *rbtx4938_piosel_ptr &= ~(0x08 | 0x04);
992 }
993
994 rbtx4938_fpga_resource.name = "FPGA Registers";
995 rbtx4938_fpga_resource.start = CPHYSADDR(RBTX4938_FPGA_REG_ADDR);
996 rbtx4938_fpga_resource.end = CPHYSADDR(RBTX4938_FPGA_REG_ADDR) + 0xffff;
997 rbtx4938_fpga_resource.flags = IORESOURCE_MEM | IORESOURCE_BUSY;
998 if (request_resource(&iomem_resource, &rbtx4938_fpga_resource))
999 printk("request resource for fpga failed\n");
1000
1001 /* disable all OnBoard I/O interrupts */
1002 *rbtx4938_imask_ptr = 0;
1003
1004 _machine_restart = rbtx4938_machine_restart;
1005 _machine_halt = rbtx4938_machine_halt;
1006 _machine_power_off = rbtx4938_machine_power_off;
1007
1008 *rbtx4938_led_ptr = 0xff;
1009 printk("RBTX4938 --- FPGA(Rev %02x)", *rbtx4938_fpga_rev_ptr);
1010 printk(" DIPSW:%02x,%02x\n",
1011 *rbtx4938_dipsw_ptr, *rbtx4938_bdipsw_ptr);
1012}
1013
1014#ifdef CONFIG_PROC_FS
1015extern void spi_eeprom_proc_create(struct proc_dir_entry *dir, int chipid);
1016static int __init tx4938_spi_proc_setup(void)
1017{
1018 struct proc_dir_entry *tx4938_spi_eeprom_dir;
1019
1020 tx4938_spi_eeprom_dir = proc_mkdir("spi_eeprom", 0);
1021
1022 if (!tx4938_spi_eeprom_dir)
1023 return -ENOMEM;
1024
1025 /* don't allow user access to RBTX4938_SEEPROM1_CHIPID
1026 * as it contains eth0 and eth1 MAC addresses
1027 */
1028 spi_eeprom_proc_create(tx4938_spi_eeprom_dir, RBTX4938_SEEPROM2_CHIPID);
1029 spi_eeprom_proc_create(tx4938_spi_eeprom_dir, RBTX4938_SEEPROM3_CHIPID);
1030
1031 return 0;
1032}
1033
1034__initcall(tx4938_spi_proc_setup);
1035#endif
diff --git a/arch/mips/tx4938/toshiba_rbtx4938/spi_eeprom.c b/arch/mips/tx4938/toshiba_rbtx4938/spi_eeprom.c
new file mode 100644
index 000000000000..951a208ee9b3
--- /dev/null
+++ b/arch/mips/tx4938/toshiba_rbtx4938/spi_eeprom.c
@@ -0,0 +1,219 @@
1/*
2 * linux/arch/mips/tx4938/toshiba_rbtx4938/spi_eeprom.c
3 * Copyright (C) 2000-2001 Toshiba Corporation
4 *
5 * 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
6 * terms of the GNU General Public License version 2. This program is
7 * licensed "as is" without any warranty of any kind, whether express
8 * or implied.
9 *
10 * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com)
11 */
12#include <linux/config.h>
13#include <linux/init.h>
14#include <linux/delay.h>
15#include <linux/proc_fs.h>
16#include <linux/spinlock.h>
17#include <asm/tx4938/spi.h>
18#include <asm/tx4938/tx4938.h>
19
20/* ATMEL 250x0 instructions */
21#define ATMEL_WREN 0x06
22#define ATMEL_WRDI 0x04
23#define ATMEL_RDSR 0x05
24#define ATMEL_WRSR 0x01
25#define ATMEL_READ 0x03
26#define ATMEL_WRITE 0x02
27
28#define ATMEL_SR_BSY 0x01
29#define ATMEL_SR_WEN 0x02
30#define ATMEL_SR_BP0 0x04
31#define ATMEL_SR_BP1 0x08
32
33DEFINE_SPINLOCK(spi_eeprom_lock);
34
35static struct spi_dev_desc seeprom_dev_desc = {
36 .baud = 1500000, /* 1.5Mbps */
37 .tcss = 1,
38 .tcsh = 1,
39 .tcsr = 1,
40 .byteorder = 1, /* MSB-First */
41 .polarity = 0, /* High-Active */
42 .phase = 0, /* Sample-Then-Shift */
43
44};
45static inline int
46spi_eeprom_io(int chipid,
47 unsigned char **inbufs, unsigned int *incounts,
48 unsigned char **outbufs, unsigned int *outcounts)
49{
50 return txx9_spi_io(chipid, &seeprom_dev_desc,
51 inbufs, incounts, outbufs, outcounts, 0);
52}
53
54int spi_eeprom_write_enable(int chipid, int enable)
55{
56 unsigned char inbuf[1];
57 unsigned char *inbufs[1];
58 unsigned int incounts[2];
59 unsigned long flags;
60 int stat;
61 inbuf[0] = enable ? ATMEL_WREN : ATMEL_WRDI;
62 inbufs[0] = inbuf;
63 incounts[0] = sizeof(inbuf);
64 incounts[1] = 0;
65 spin_lock_irqsave(&spi_eeprom_lock, flags);
66 stat = spi_eeprom_io(chipid, inbufs, incounts, NULL, NULL);
67 spin_unlock_irqrestore(&spi_eeprom_lock, flags);
68 return stat;
69}
70
71static int spi_eeprom_read_status_nolock(int chipid)
72{
73 unsigned char inbuf[2], outbuf[2];
74 unsigned char *inbufs[1], *outbufs[1];
75 unsigned int incounts[2], outcounts[2];
76 int stat;
77 inbuf[0] = ATMEL_RDSR;
78 inbuf[1] = 0;
79 inbufs[0] = inbuf;
80 incounts[0] = sizeof(inbuf);
81 incounts[1] = 0;
82 outbufs[0] = outbuf;
83 outcounts[0] = sizeof(outbuf);
84 outcounts[1] = 0;
85 stat = spi_eeprom_io(chipid, inbufs, incounts, outbufs, outcounts);
86 if (stat < 0)
87 return stat;
88 return outbuf[1];
89}
90
91int spi_eeprom_read_status(int chipid)
92{
93 unsigned long flags;
94 int stat;
95 spin_lock_irqsave(&spi_eeprom_lock, flags);
96 stat = spi_eeprom_read_status_nolock(chipid);
97 spin_unlock_irqrestore(&spi_eeprom_lock, flags);
98 return stat;
99}
100
101int spi_eeprom_read(int chipid, int address, unsigned char *buf, int len)
102{
103 unsigned char inbuf[2];
104 unsigned char *inbufs[2], *outbufs[2];
105 unsigned int incounts[2], outcounts[3];
106 unsigned long flags;
107 int stat;
108 inbuf[0] = ATMEL_READ;
109 inbuf[1] = address;
110 inbufs[0] = inbuf;
111 inbufs[1] = NULL;
112 incounts[0] = sizeof(inbuf);
113 incounts[1] = 0;
114 outbufs[0] = NULL;
115 outbufs[1] = buf;
116 outcounts[0] = 2;
117 outcounts[1] = len;
118 outcounts[2] = 0;
119 spin_lock_irqsave(&spi_eeprom_lock, flags);
120 stat = spi_eeprom_io(chipid, inbufs, incounts, outbufs, outcounts);
121 spin_unlock_irqrestore(&spi_eeprom_lock, flags);
122 return stat;
123}
124
125int spi_eeprom_write(int chipid, int address, unsigned char *buf, int len)
126{
127 unsigned char inbuf[2];
128 unsigned char *inbufs[2];
129 unsigned int incounts[3];
130 unsigned long flags;
131 int i, stat;
132
133 if (address / 8 != (address + len - 1) / 8)
134 return -EINVAL;
135 stat = spi_eeprom_write_enable(chipid, 1);
136 if (stat < 0)
137 return stat;
138 stat = spi_eeprom_read_status(chipid);
139 if (stat < 0)
140 return stat;
141 if (!(stat & ATMEL_SR_WEN))
142 return -EPERM;
143
144 inbuf[0] = ATMEL_WRITE;
145 inbuf[1] = address;
146 inbufs[0] = inbuf;
147 inbufs[1] = buf;
148 incounts[0] = sizeof(inbuf);
149 incounts[1] = len;
150 incounts[2] = 0;
151 spin_lock_irqsave(&spi_eeprom_lock, flags);
152 stat = spi_eeprom_io(chipid, inbufs, incounts, NULL, NULL);
153 if (stat < 0)
154 goto unlock_return;
155
156 /* write start. max 10ms */
157 for (i = 10; i > 0; i--) {
158 int stat = spi_eeprom_read_status_nolock(chipid);
159 if (stat < 0)
160 goto unlock_return;
161 if (!(stat & ATMEL_SR_BSY))
162 break;
163 mdelay(1);
164 }
165 spin_unlock_irqrestore(&spi_eeprom_lock, flags);
166 if (i == 0)
167 return -EIO;
168 return len;
169 unlock_return:
170 spin_unlock_irqrestore(&spi_eeprom_lock, flags);
171 return stat;
172}
173
174#ifdef CONFIG_PROC_FS
175#define MAX_SIZE 0x80 /* for ATMEL 25010 */
176static int spi_eeprom_read_proc(char *page, char **start, off_t off,
177 int count, int *eof, void *data)
178{
179 unsigned int size = MAX_SIZE;
180 if (spi_eeprom_read((int)data, 0, (unsigned char *)page, size) < 0)
181 size = 0;
182 return size;
183}
184
185static int spi_eeprom_write_proc(struct file *file, const char *buffer,
186 unsigned long count, void *data)
187{
188 unsigned int size = MAX_SIZE;
189 int i;
190 if (file->f_pos >= size)
191 return -EIO;
192 if (file->f_pos + count > size)
193 count = size - file->f_pos;
194 for (i = 0; i < count; i += 8) {
195 int len = count - i < 8 ? count - i : 8;
196 if (spi_eeprom_write((int)data, file->f_pos,
197 (unsigned char *)buffer, len) < 0) {
198 count = -EIO;
199 break;
200 }
201 buffer += len;
202 file->f_pos += len;
203 }
204 return count;
205}
206
207__init void spi_eeprom_proc_create(struct proc_dir_entry *dir, int chipid)
208{
209 struct proc_dir_entry *entry;
210 char name[128];
211 sprintf(name, "seeprom-%d", chipid);
212 entry = create_proc_entry(name, 0600, dir);
213 if (entry) {
214 entry->read_proc = spi_eeprom_read_proc;
215 entry->write_proc = spi_eeprom_write_proc;
216 entry->data = (void *)chipid;
217 }
218}
219#endif /* CONFIG_PROC_FS */
diff --git a/arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c b/arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c
new file mode 100644
index 000000000000..fae3136f462d
--- /dev/null
+++ b/arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c
@@ -0,0 +1,159 @@
1/*
2 * linux/arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c
3 * Copyright (C) 2000-2001 Toshiba Corporation
4 *
5 * 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
6 * terms of the GNU General Public License version 2. This program is
7 * licensed "as is" without any warranty of any kind, whether express
8 * or implied.
9 *
10 * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com)
11 */
12#include <linux/init.h>
13#include <linux/delay.h>
14#include <linux/errno.h>
15#include <linux/interrupt.h>
16#include <linux/module.h>
17#include <linux/sched.h>
18#include <linux/spinlock.h>
19#include <linux/wait.h>
20#include <asm/tx4938/spi.h>
21#include <asm/tx4938/tx4938.h>
22
23static int (*txx9_spi_cs_func)(int chipid, int on);
24static DEFINE_SPINLOCK(txx9_spi_lock);
25
26extern unsigned int txx9_gbus_clock;
27
28#define SPI_FIFO_SIZE 4
29
30void __init txx9_spi_init(unsigned long base, int (*cs_func)(int chipid, int on))
31{
32 txx9_spi_cs_func = cs_func;
33 /* enter config mode */
34 tx4938_spiptr->mcr = TXx9_SPMCR_CONFIG | TXx9_SPMCR_BCLR;
35}
36
37static DECLARE_WAIT_QUEUE_HEAD(txx9_spi_wait);
38static void txx9_spi_interrupt(int irq, void *dev_id, struct pt_regs *regs)
39{
40 /* disable rx intr */
41 tx4938_spiptr->cr0 &= ~TXx9_SPCR0_RBSIE;
42 wake_up(&txx9_spi_wait);
43}
44static struct irqaction txx9_spi_action = {
45 txx9_spi_interrupt, 0, 0, "spi", NULL, NULL,
46};
47
48void __init txx9_spi_irqinit(int irc_irq)
49{
50 setup_irq(irc_irq, &txx9_spi_action);
51}
52
53int txx9_spi_io(int chipid, struct spi_dev_desc *desc,
54 unsigned char **inbufs, unsigned int *incounts,
55 unsigned char **outbufs, unsigned int *outcounts,
56 int cansleep)
57{
58 unsigned int incount, outcount;
59 unsigned char *inp, *outp;
60 int ret;
61 unsigned long flags;
62
63 spin_lock_irqsave(&txx9_spi_lock, flags);
64 if ((tx4938_spiptr->mcr & TXx9_SPMCR_OPMODE) == TXx9_SPMCR_ACTIVE) {
65 spin_unlock_irqrestore(&txx9_spi_lock, flags);
66 return -EBUSY;
67 }
68 /* enter config mode */
69 tx4938_spiptr->mcr = TXx9_SPMCR_CONFIG | TXx9_SPMCR_BCLR;
70 tx4938_spiptr->cr0 =
71 (desc->byteorder ? TXx9_SPCR0_SBOS : 0) |
72 (desc->polarity ? TXx9_SPCR0_SPOL : 0) |
73 (desc->phase ? TXx9_SPCR0_SPHA : 0) |
74 0x08;
75 tx4938_spiptr->cr1 =
76 (((TXX9_IMCLK + desc->baud) / (2 * desc->baud) - 1) << 8) |
77 0x08 /* 8 bit only */;
78 /* enter active mode */
79 tx4938_spiptr->mcr = TXx9_SPMCR_ACTIVE;
80 spin_unlock_irqrestore(&txx9_spi_lock, flags);
81
82 /* CS ON */
83 if ((ret = txx9_spi_cs_func(chipid, 1)) < 0) {
84 spin_unlock_irqrestore(&txx9_spi_lock, flags);
85 return ret;
86 }
87 udelay(desc->tcss);
88
89 /* do scatter IO */
90 inp = inbufs ? *inbufs : NULL;
91 outp = outbufs ? *outbufs : NULL;
92 incount = 0;
93 outcount = 0;
94 while (1) {
95 unsigned char data;
96 unsigned int count;
97 int i;
98 if (!incount) {
99 incount = incounts ? *incounts++ : 0;
100 inp = (incount && inbufs) ? *inbufs++ : NULL;
101 }
102 if (!outcount) {
103 outcount = outcounts ? *outcounts++ : 0;
104 outp = (outcount && outbufs) ? *outbufs++ : NULL;
105 }
106 if (!inp && !outp)
107 break;
108 count = SPI_FIFO_SIZE;
109 if (incount)
110 count = min(count, incount);
111 if (outcount)
112 count = min(count, outcount);
113
114 /* now tx must be idle... */
115 while (!(tx4938_spiptr->sr & TXx9_SPSR_SIDLE))
116 ;
117
118 tx4938_spiptr->cr0 =
119 (tx4938_spiptr->cr0 & ~TXx9_SPCR0_RXIFL_MASK) |
120 ((count - 1) << 12);
121 if (cansleep) {
122 /* enable rx intr */
123 tx4938_spiptr->cr0 |= TXx9_SPCR0_RBSIE;
124 }
125 /* send */
126 for (i = 0; i < count; i++)
127 tx4938_spiptr->dr = inp ? *inp++ : 0;
128 /* wait all rx data */
129 if (cansleep) {
130 wait_event(txx9_spi_wait,
131 tx4938_spiptr->sr & TXx9_SPSR_SRRDY);
132 } else {
133 while (!(tx4938_spiptr->sr & TXx9_SPSR_RBSI))
134 ;
135 }
136 /* receive */
137 for (i = 0; i < count; i++) {
138 data = tx4938_spiptr->dr;
139 if (outp)
140 *outp++ = data;
141 }
142 if (incount)
143 incount -= count;
144 if (outcount)
145 outcount -= count;
146 }
147
148 /* CS OFF */
149 udelay(desc->tcsh);
150 txx9_spi_cs_func(chipid, 0);
151 udelay(desc->tcsr);
152
153 spin_lock_irqsave(&txx9_spi_lock, flags);
154 /* enter config mode */
155 tx4938_spiptr->mcr = TXx9_SPMCR_CONFIG | TXx9_SPMCR_BCLR;
156 spin_unlock_irqrestore(&txx9_spi_lock, flags);
157
158 return 0;
159}
diff --git a/arch/mips/vr41xx/Kconfig b/arch/mips/vr41xx/Kconfig
new file mode 100644
index 000000000000..a7add16c9aa4
--- /dev/null
+++ b/arch/mips/vr41xx/Kconfig
@@ -0,0 +1,88 @@
1config CASIO_E55
2 bool "Support for CASIO CASSIOPEIA E-10/15/55/65"
3 depends on MACH_VR41XX
4 select DMA_NONCOHERENT
5 select IRQ_CPU
6 select ISA
7 select SYS_SUPPORTS_LITTLE_ENDIAN
8
9config IBM_WORKPAD
10 bool "Support for IBM WorkPad z50"
11 depends on MACH_VR41XX
12 select DMA_NONCOHERENT
13 select IRQ_CPU
14 select ISA
15 select SYS_SUPPORTS_LITTLE_ENDIAN
16
17config NEC_CMBVR4133
18 bool "Support for NEC CMB-VR4133"
19 depends on MACH_VR41XX
20 select CPU_VR41XX
21 select DMA_NONCOHERENT
22 select IRQ_CPU
23 select HW_HAS_PCI
24
25config ROCKHOPPER
26 bool "Support for Rockhopper baseboard"
27 depends on NEC_CMBVR4133
28 select I8259
29 select HAVE_STD_PC_SERIAL_PORT
30
31config TANBAC_TB022X
32 bool "Support for TANBAC VR4131 multichip module and TANBAC VR4131DIMM"
33 depends on MACH_VR41XX
34 select DMA_NONCOHERENT
35 select HW_HAS_PCI
36 select IRQ_CPU
37 select SYS_SUPPORTS_LITTLE_ENDIAN
38 help
39 The TANBAC VR4131 multichip module(TB0225) and
40 the TANBAC VR4131DIMM(TB0229) are MIPS-based platforms
41 manufactured by TANBAC.
42 Please refer to <http://www.tanbac.co.jp/>
43 about VR4131 multichip module and VR4131DIMM.
44
45config TANBAC_TB0226
46 bool "Support for TANBAC Mbase(TB0226)"
47 depends on TANBAC_TB022X
48 select GPIO_VR41XX
49 help
50 The TANBAC Mbase(TB0226) is a MIPS-based platform
51 manufactured by TANBAC.
52 Please refer to <http://www.tanbac.co.jp/> about Mbase.
53
54config TANBAC_TB0287
55 bool "Support for TANBAC Mini-ITX DIMM base(TB0287)"
56 depends on TANBAC_TB022X
57 help
58 The TANBAC Mini-ITX DIMM base(TB0287) is a MIPS-based platform
59 manufactured by TANBAC.
60 Please refer to <http://www.tanbac.co.jp/> about Mini-ITX DIMM base.
61
62config VICTOR_MPC30X
63 bool "Support for Victor MP-C303/304"
64 depends on MACH_VR41XX
65 select DMA_NONCOHERENT
66 select HW_HAS_PCI
67 select IRQ_CPU
68 select SYS_SUPPORTS_LITTLE_ENDIAN
69
70config ZAO_CAPCELLA
71 bool "Support for ZAO Networks Capcella"
72 depends on MACH_VR41XX
73 select DMA_NONCOHERENT
74 select HW_HAS_PCI
75 select IRQ_CPU
76 select SYS_SUPPORTS_LITTLE_ENDIAN
77
78config PCI_VR41XX
79 bool "Add PCI control unit support of NEC VR4100 series"
80 depends on MACH_VR41XX && HW_HAS_PCI
81 default y
82 select PCI
83
84config VRC4173
85 tristate "Add NEC VRC4173 companion chip support"
86 depends on MACH_VR41XX && PCI_VR41XX
87 help
88 The NEC VRC4173 is a companion chip for NEC VR4122/VR4131.
diff --git a/arch/mips/vr41xx/common/cmu.c b/arch/mips/vr41xx/common/cmu.c
index fcd3cb8cdd9d..d758e432961b 100644
--- a/arch/mips/vr41xx/common/cmu.c
+++ b/arch/mips/vr41xx/common/cmu.c
@@ -69,7 +69,7 @@
69 69
70static void __iomem *cmu_base; 70static void __iomem *cmu_base;
71static uint16_t cmuclkmsk, cmuclkmsk2; 71static uint16_t cmuclkmsk, cmuclkmsk2;
72static spinlock_t cmu_lock; 72static DEFINE_SPINLOCK(cmu_lock);
73 73
74#define cmu_read(offset) readw(cmu_base + (offset)) 74#define cmu_read(offset) readw(cmu_base + (offset))
75#define cmu_write(offset, value) writew((value), cmu_base + (offset)) 75#define cmu_write(offset, value) writew((value), cmu_base + (offset))
diff --git a/arch/mips/vr41xx/common/init.c b/arch/mips/vr41xx/common/init.c
index e03be896cbc4..578f6496ffd4 100644
--- a/arch/mips/vr41xx/common/init.c
+++ b/arch/mips/vr41xx/common/init.c
@@ -58,6 +58,14 @@ static void __init timer_init(void)
58 board_timer_setup = setup_timer_irq; 58 board_timer_setup = setup_timer_irq;
59} 59}
60 60
61void __init plat_setup(void)
62{
63 vr41xx_calculate_clock_frequency();
64
65 timer_init();
66 iomem_resource_init();
67}
68
61void __init prom_init(void) 69void __init prom_init(void)
62{ 70{
63 int argc, i; 71 int argc, i;
@@ -71,12 +79,6 @@ void __init prom_init(void)
71 if (i < (argc - 1)) 79 if (i < (argc - 1))
72 strcat(arcs_cmdline, " "); 80 strcat(arcs_cmdline, " ");
73 } 81 }
74
75 vr41xx_calculate_clock_frequency();
76
77 timer_init();
78
79 iomem_resource_init();
80} 82}
81 83
82unsigned long __init prom_free_prom_memory (void) 84unsigned long __init prom_free_prom_memory (void)
diff --git a/arch/mips/vr41xx/common/vrc4173.c b/arch/mips/vr41xx/common/vrc4173.c
index ba58764ef8ea..462a9af30eef 100644
--- a/arch/mips/vr41xx/common/vrc4173.c
+++ b/arch/mips/vr41xx/common/vrc4173.c
@@ -81,8 +81,8 @@ EXPORT_SYMBOL(vrc4173_io_offset);
81static int vrc4173_initialized; 81static int vrc4173_initialized;
82static uint16_t vrc4173_cmuclkmsk; 82static uint16_t vrc4173_cmuclkmsk;
83static uint16_t vrc4173_selectreg; 83static uint16_t vrc4173_selectreg;
84static spinlock_t vrc4173_cmu_lock; 84static DEFINE_SPINLOCK(vrc4173_cmu_lock);
85static spinlock_t vrc4173_giu_lock; 85static DEFINE_SPINLOCK(vrc4173_giu_lock);
86 86
87static inline void set_cmusrst(uint16_t val) 87static inline void set_cmusrst(uint16_t val)
88{ 88{
diff --git a/arch/mips/vr41xx/nec-cmbvr4133/setup.c b/arch/mips/vr41xx/nec-cmbvr4133/setup.c
index db686ce42e85..53272a5c3cbe 100644
--- a/arch/mips/vr41xx/nec-cmbvr4133/setup.c
+++ b/arch/mips/vr41xx/nec-cmbvr4133/setup.c
@@ -56,7 +56,7 @@ static struct mtd_partition cmbvr4133_mtd_parts[] = {
56 56
57extern void i8259_init(void); 57extern void i8259_init(void);
58 58
59static int __init nec_cmbvr4133_setup(void) 59static void __init nec_cmbvr4133_setup(void)
60{ 60{
61#ifdef CONFIG_ROCKHOPPER 61#ifdef CONFIG_ROCKHOPPER
62 extern void disable_pcnet(void); 62 extern void disable_pcnet(void);
@@ -90,7 +90,4 @@ static int __init nec_cmbvr4133_setup(void)
90#ifdef CONFIG_ROCKHOPPER 90#ifdef CONFIG_ROCKHOPPER
91 i8259_init(); 91 i8259_init();
92#endif 92#endif
93 return 0;
94} 93}
95
96early_initcall(nec_cmbvr4133_setup);
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index 0b07922a2ac6..874a283edb95 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -47,10 +47,10 @@ config PM
47 47
48config ISA_DMA_API 48config ISA_DMA_API
49 bool 49 bool
50 default y
51 50
52config ARCH_MAY_HAVE_PC_FDC 51config ARCH_MAY_HAVE_PC_FDC
53 bool 52 bool
53 depends on BROKEN
54 default y 54 default y
55 55
56source "init/Kconfig" 56source "init/Kconfig"
@@ -154,13 +154,14 @@ config HOTPLUG_CPU
154 154
155config ARCH_DISCONTIGMEM_ENABLE 155config ARCH_DISCONTIGMEM_ENABLE
156 bool "Discontiguous memory support (EXPERIMENTAL)" 156 bool "Discontiguous memory support (EXPERIMENTAL)"
157 depends on EXPERIMENTAL 157 depends on 64BIT && EXPERIMENTAL
158 help 158 help
159 Say Y to support efficient handling of discontiguous physical memory, 159 Say Y to support efficient handling of discontiguous physical memory,
160 for architectures which are either NUMA (Non-Uniform Memory Access) 160 for architectures which are either NUMA (Non-Uniform Memory Access)
161 or have huge holes in the physical address space for other reasons. 161 or have huge holes in the physical address space for other reasons.
162 See <file:Documentation/vm/numa> for more. 162 See <file:Documentation/vm/numa> for more.
163 163
164source "kernel/Kconfig.hz"
164source "mm/Kconfig" 165source "mm/Kconfig"
165 166
166config PREEMPT 167config PREEMPT
diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile
index 3b339b1cce13..9b7e42490dd1 100644
--- a/arch/parisc/Makefile
+++ b/arch/parisc/Makefile
@@ -20,7 +20,8 @@ NM = sh $(srctree)/arch/parisc/nm
20CHECKFLAGS += -D__hppa__=1 20CHECKFLAGS += -D__hppa__=1
21 21
22ifdef CONFIG_64BIT 22ifdef CONFIG_64BIT
23CROSS_COMPILE := hppa64-linux- 23CROSS_COMPILE := $(shell if [ -x /usr/bin/hppa64-linux-gnu-gcc ]; then \
24 echo hppa64-linux-gnu-; else echo hppa64-linux-; fi)
24UTS_MACHINE := parisc64 25UTS_MACHINE := parisc64
25CHECKFLAGS += -D__LP64__=1 -m64 26CHECKFLAGS += -D__LP64__=1 -m64
26else 27else
@@ -34,6 +35,14 @@ FINAL_LD=$(CROSS_COMPILE)ld --warn-common --warn-section-align
34 35
35OBJCOPY_FLAGS =-O binary -R .note -R .comment -S 36OBJCOPY_FLAGS =-O binary -R .note -R .comment -S
36 37
38GCC_VERSION := $(call cc-version)
39ifneq ($(shell if [ -z $(GCC_VERSION) ] ; then echo "bad"; fi ;),)
40$(error Sorry, couldn't find ($(cc-version)).)
41endif
42ifneq ($(shell if [ $(GCC_VERSION) -lt 0303 ] ; then echo "bad"; fi ;),)
43$(error Sorry, your compiler is too old ($(GCC_VERSION)). GCC v3.3 or above is required.)
44endif
45
37cflags-y := -pipe 46cflags-y := -pipe
38 47
39# These flags should be implied by an hppa-linux configuration, but they 48# These flags should be implied by an hppa-linux configuration, but they
@@ -43,7 +52,7 @@ cflags-y += -mno-space-regs -mfast-indirect-calls
43# Currently we save and restore fpregs on all kernel entry/interruption paths. 52# Currently we save and restore fpregs on all kernel entry/interruption paths.
44# If that gets optimized, we might need to disable the use of fpregs in the 53# If that gets optimized, we might need to disable the use of fpregs in the
45# kernel. 54# kernel.
46#cflags-y += -mdisable-fpregs 55cflags-y += -mdisable-fpregs
47 56
48# Without this, "ld -r" results in .text sections that are too big 57# Without this, "ld -r" results in .text sections that are too big
49# (> 0x40000) for branches to reach stubs. 58# (> 0x40000) for branches to reach stubs.
diff --git a/arch/parisc/configs/712_defconfig b/arch/parisc/configs/712_defconfig
index 6efaa9293eef..3e013f55df64 100644
--- a/arch/parisc/configs/712_defconfig
+++ b/arch/parisc/configs/712_defconfig
@@ -1,12 +1,16 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.10-pa5 3# Linux kernel version: 2.6.14-rc5-pa1
4# Wed Jan 5 13:20:32 2005 4# Fri Oct 21 23:04:34 2005
5# 5#
6CONFIG_PARISC=y 6CONFIG_PARISC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
8CONFIG_STACK_GROWSUP=y 8CONFIG_STACK_GROWSUP=y
9CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y
11CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_ARCH_MAY_HAVE_PC_FDC=y
10 14
11# 15#
12# Code maturity level options 16# Code maturity level options
@@ -15,35 +19,40 @@ CONFIG_EXPERIMENTAL=y
15# CONFIG_CLEAN_COMPILE is not set 19# CONFIG_CLEAN_COMPILE is not set
16CONFIG_BROKEN=y 20CONFIG_BROKEN=y
17CONFIG_BROKEN_ON_SMP=y 21CONFIG_BROKEN_ON_SMP=y
22CONFIG_INIT_ENV_ARG_LIMIT=32
18 23
19# 24#
20# General setup 25# General setup
21# 26#
22CONFIG_LOCALVERSION="" 27CONFIG_LOCALVERSION=""
28# CONFIG_LOCALVERSION_AUTO is not set
23CONFIG_SWAP=y 29CONFIG_SWAP=y
24CONFIG_SYSVIPC=y 30CONFIG_SYSVIPC=y
25CONFIG_POSIX_MQUEUE=y 31CONFIG_POSIX_MQUEUE=y
26# CONFIG_BSD_PROCESS_ACCT is not set 32# CONFIG_BSD_PROCESS_ACCT is not set
27CONFIG_SYSCTL=y 33CONFIG_SYSCTL=y
28# CONFIG_AUDIT is not set 34# CONFIG_AUDIT is not set
29CONFIG_LOG_BUF_SHIFT=16
30CONFIG_HOTPLUG=y 35CONFIG_HOTPLUG=y
31CONFIG_KOBJECT_UEVENT=y 36CONFIG_KOBJECT_UEVENT=y
32CONFIG_IKCONFIG=y 37CONFIG_IKCONFIG=y
33CONFIG_IKCONFIG_PROC=y 38CONFIG_IKCONFIG_PROC=y
39CONFIG_INITRAMFS_SOURCE=""
34# CONFIG_EMBEDDED is not set 40# CONFIG_EMBEDDED is not set
35CONFIG_KALLSYMS=y 41CONFIG_KALLSYMS=y
36CONFIG_KALLSYMS_ALL=y 42CONFIG_KALLSYMS_ALL=y
37# CONFIG_KALLSYMS_EXTRA_PASS is not set 43# CONFIG_KALLSYMS_EXTRA_PASS is not set
44CONFIG_PRINTK=y
45CONFIG_BUG=y
46CONFIG_BASE_FULL=y
38CONFIG_FUTEX=y 47CONFIG_FUTEX=y
39CONFIG_EPOLL=y 48CONFIG_EPOLL=y
40# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
41CONFIG_SHMEM=y 49CONFIG_SHMEM=y
42CONFIG_CC_ALIGN_FUNCTIONS=0 50CONFIG_CC_ALIGN_FUNCTIONS=0
43CONFIG_CC_ALIGN_LABELS=0 51CONFIG_CC_ALIGN_LABELS=0
44CONFIG_CC_ALIGN_LOOPS=0 52CONFIG_CC_ALIGN_LOOPS=0
45CONFIG_CC_ALIGN_JUMPS=0 53CONFIG_CC_ALIGN_JUMPS=0
46# CONFIG_TINY_SHMEM is not set 54# CONFIG_TINY_SHMEM is not set
55CONFIG_BASE_SMALL=0
47 56
48# 57#
49# Loadable module support 58# Loadable module support
@@ -65,9 +74,18 @@ CONFIG_PA7100LC=y
65# CONFIG_PA7300LC is not set 74# CONFIG_PA7300LC is not set
66# CONFIG_PA8X00 is not set 75# CONFIG_PA8X00 is not set
67CONFIG_PA11=y 76CONFIG_PA11=y
68# CONFIG_64BIT is not set
69# CONFIG_SMP is not set 77# CONFIG_SMP is not set
70# CONFIG_DISCONTIGMEM is not set 78# CONFIG_HZ_100 is not set
79CONFIG_HZ_250=y
80# CONFIG_HZ_1000 is not set
81CONFIG_HZ=250
82CONFIG_SELECT_MEMORY_MODEL=y
83CONFIG_FLATMEM_MANUAL=y
84# CONFIG_DISCONTIGMEM_MANUAL is not set
85# CONFIG_SPARSEMEM_MANUAL is not set
86CONFIG_FLATMEM=y
87CONFIG_FLAT_NODE_MEM_MAP=y
88# CONFIG_SPARSEMEM_STATIC is not set
71# CONFIG_PREEMPT is not set 89# CONFIG_PREEMPT is not set
72# CONFIG_HPUX is not set 90# CONFIG_HPUX is not set
73 91
@@ -81,8 +99,6 @@ CONFIG_GSC_LASI=y
81# CONFIG_GSC_WAX is not set 99# CONFIG_GSC_WAX is not set
82# CONFIG_EISA is not set 100# CONFIG_EISA is not set
83# CONFIG_PCI is not set 101# CONFIG_PCI is not set
84CONFIG_CHASSIS_LCD_LED=y
85# CONFIG_PDC_CHASSIS is not set
86 102
87# 103#
88# PCCARD (PCMCIA/CardBus) support 104# PCCARD (PCMCIA/CardBus) support
@@ -90,12 +106,15 @@ CONFIG_CHASSIS_LCD_LED=y
90# CONFIG_PCCARD is not set 106# CONFIG_PCCARD is not set
91 107
92# 108#
93# PC-card bridges 109# PCI Hotplug Support
94# 110#
95 111
96# 112#
97# PCI Hotplug Support 113# PA-RISC specific drivers
98# 114#
115CONFIG_CHASSIS_LCD_LED=y
116# CONFIG_PDC_CHASSIS is not set
117CONFIG_PDC_STABLE=y
99 118
100# 119#
101# Executable file formats 120# Executable file formats
@@ -104,137 +123,7 @@ CONFIG_BINFMT_ELF=y
104CONFIG_BINFMT_MISC=m 123CONFIG_BINFMT_MISC=m
105 124
106# 125#
107# Device Drivers 126# Networking
108#
109
110#
111# Generic Driver Options
112#
113# CONFIG_STANDALONE is not set
114# CONFIG_PREVENT_FIRMWARE_BUILD is not set
115CONFIG_FW_LOADER=y
116# CONFIG_DEBUG_DRIVER is not set
117
118#
119# Memory Technology Devices (MTD)
120#
121# CONFIG_MTD is not set
122
123#
124# Parallel port support
125#
126CONFIG_PARPORT=y
127CONFIG_PARPORT_PC=m
128CONFIG_PARPORT_PC_CML1=m
129# CONFIG_PARPORT_PC_FIFO is not set
130# CONFIG_PARPORT_PC_SUPERIO is not set
131CONFIG_PARPORT_GSC=y
132# CONFIG_PARPORT_OTHER is not set
133# CONFIG_PARPORT_1284 is not set
134
135#
136# Plug and Play support
137#
138
139#
140# Block devices
141#
142# CONFIG_BLK_DEV_FD is not set
143# CONFIG_PARIDE is not set
144CONFIG_BLK_DEV_LOOP=y
145CONFIG_BLK_DEV_CRYPTOLOOP=y
146# CONFIG_BLK_DEV_NBD is not set
147CONFIG_BLK_DEV_RAM=y
148CONFIG_BLK_DEV_RAM_COUNT=16
149CONFIG_BLK_DEV_RAM_SIZE=6144
150CONFIG_BLK_DEV_INITRD=y
151CONFIG_INITRAMFS_SOURCE=""
152# CONFIG_CDROM_PKTCDVD is not set
153
154#
155# IO Schedulers
156#
157CONFIG_IOSCHED_NOOP=y
158CONFIG_IOSCHED_AS=y
159CONFIG_IOSCHED_DEADLINE=y
160CONFIG_IOSCHED_CFQ=y
161
162#
163# ATA/ATAPI/MFM/RLL support
164#
165# CONFIG_IDE is not set
166
167#
168# SCSI device support
169#
170CONFIG_SCSI=y
171CONFIG_SCSI_PROC_FS=y
172
173#
174# SCSI support type (disk, tape, CD-ROM)
175#
176CONFIG_BLK_DEV_SD=y
177CONFIG_CHR_DEV_ST=y
178# CONFIG_CHR_DEV_OSST is not set
179CONFIG_BLK_DEV_SR=y
180# CONFIG_BLK_DEV_SR_VENDOR is not set
181CONFIG_CHR_DEV_SG=y
182
183#
184# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
185#
186# CONFIG_SCSI_MULTI_LUN is not set
187# CONFIG_SCSI_CONSTANTS is not set
188# CONFIG_SCSI_LOGGING is not set
189
190#
191# SCSI Transport Attributes
192#
193CONFIG_SCSI_SPI_ATTRS=y
194# CONFIG_SCSI_FC_ATTRS is not set
195
196#
197# SCSI low-level drivers
198#
199# CONFIG_SCSI_SATA is not set
200# CONFIG_SCSI_PPA is not set
201# CONFIG_SCSI_IMM is not set
202CONFIG_SCSI_LASI700=y
203CONFIG_53C700_MEM_MAPPED=y
204CONFIG_53C700_LE_ON_BE=y
205# CONFIG_SCSI_ZALON is not set
206CONFIG_SCSI_DEBUG=m
207
208#
209# Multi-device support (RAID and LVM)
210#
211CONFIG_MD=y
212CONFIG_BLK_DEV_MD=m
213CONFIG_MD_LINEAR=m
214CONFIG_MD_RAID0=m
215CONFIG_MD_RAID1=m
216# CONFIG_MD_RAID10 is not set
217# CONFIG_MD_RAID5 is not set
218# CONFIG_MD_RAID6 is not set
219# CONFIG_MD_MULTIPATH is not set
220# CONFIG_MD_FAULTY is not set
221# CONFIG_BLK_DEV_DM is not set
222
223#
224# Fusion MPT device support
225#
226
227#
228# IEEE 1394 (FireWire) support
229#
230# CONFIG_IEEE1394 is not set
231
232#
233# I2O device support
234#
235
236#
237# Networking support
238# 127#
239CONFIG_NET=y 128CONFIG_NET=y
240 129
@@ -243,12 +132,14 @@ CONFIG_NET=y
243# 132#
244CONFIG_PACKET=y 133CONFIG_PACKET=y
245CONFIG_PACKET_MMAP=y 134CONFIG_PACKET_MMAP=y
246CONFIG_NETLINK_DEV=y
247CONFIG_UNIX=y 135CONFIG_UNIX=y
136CONFIG_XFRM=y
137CONFIG_XFRM_USER=m
248CONFIG_NET_KEY=m 138CONFIG_NET_KEY=m
249CONFIG_INET=y 139CONFIG_INET=y
250CONFIG_IP_MULTICAST=y 140CONFIG_IP_MULTICAST=y
251# CONFIG_IP_ADVANCED_ROUTER is not set 141# CONFIG_IP_ADVANCED_ROUTER is not set
142CONFIG_IP_FIB_HASH=y
252CONFIG_IP_PNP=y 143CONFIG_IP_PNP=y
253CONFIG_IP_PNP_DHCP=y 144CONFIG_IP_PNP_DHCP=y
254CONFIG_IP_PNP_BOOTP=y 145CONFIG_IP_PNP_BOOTP=y
@@ -262,8 +153,10 @@ CONFIG_INET_AH=m
262CONFIG_INET_ESP=m 153CONFIG_INET_ESP=m
263# CONFIG_INET_IPCOMP is not set 154# CONFIG_INET_IPCOMP is not set
264CONFIG_INET_TUNNEL=m 155CONFIG_INET_TUNNEL=m
265CONFIG_IP_TCPDIAG=y 156CONFIG_INET_DIAG=m
266# CONFIG_IP_TCPDIAG_IPV6 is not set 157CONFIG_INET_TCP_DIAG=m
158# CONFIG_TCP_CONG_ADVANCED is not set
159CONFIG_TCP_CONG_BIC=y
267 160
268# 161#
269# IP: Virtual Server Configuration 162# IP: Virtual Server Configuration
@@ -272,6 +165,7 @@ CONFIG_IP_TCPDIAG=y
272# CONFIG_IPV6 is not set 165# CONFIG_IPV6 is not set
273CONFIG_NETFILTER=y 166CONFIG_NETFILTER=y
274# CONFIG_NETFILTER_DEBUG is not set 167# CONFIG_NETFILTER_DEBUG is not set
168# CONFIG_NETFILTER_NETLINK is not set
275 169
276# 170#
277# IP: Netfilter Configuration 171# IP: Netfilter Configuration
@@ -279,11 +173,14 @@ CONFIG_NETFILTER=y
279CONFIG_IP_NF_CONNTRACK=m 173CONFIG_IP_NF_CONNTRACK=m
280# CONFIG_IP_NF_CT_ACCT is not set 174# CONFIG_IP_NF_CT_ACCT is not set
281CONFIG_IP_NF_CONNTRACK_MARK=y 175CONFIG_IP_NF_CONNTRACK_MARK=y
176# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
282CONFIG_IP_NF_CT_PROTO_SCTP=m 177CONFIG_IP_NF_CT_PROTO_SCTP=m
283CONFIG_IP_NF_FTP=m 178CONFIG_IP_NF_FTP=m
284CONFIG_IP_NF_IRC=m 179CONFIG_IP_NF_IRC=m
180# CONFIG_IP_NF_NETBIOS_NS is not set
285CONFIG_IP_NF_TFTP=m 181CONFIG_IP_NF_TFTP=m
286CONFIG_IP_NF_AMANDA=m 182CONFIG_IP_NF_AMANDA=m
183# CONFIG_IP_NF_PPTP is not set
287CONFIG_IP_NF_QUEUE=m 184CONFIG_IP_NF_QUEUE=m
288CONFIG_IP_NF_IPTABLES=m 185CONFIG_IP_NF_IPTABLES=m
289CONFIG_IP_NF_MATCH_LIMIT=m 186CONFIG_IP_NF_MATCH_LIMIT=m
@@ -307,21 +204,23 @@ CONFIG_IP_NF_MATCH_OWNER=m
307# CONFIG_IP_NF_MATCH_ADDRTYPE is not set 204# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
308# CONFIG_IP_NF_MATCH_REALM is not set 205# CONFIG_IP_NF_MATCH_REALM is not set
309CONFIG_IP_NF_MATCH_SCTP=m 206CONFIG_IP_NF_MATCH_SCTP=m
207# CONFIG_IP_NF_MATCH_DCCP is not set
310CONFIG_IP_NF_MATCH_COMMENT=m 208CONFIG_IP_NF_MATCH_COMMENT=m
311CONFIG_IP_NF_MATCH_CONNMARK=m 209CONFIG_IP_NF_MATCH_CONNMARK=m
312CONFIG_IP_NF_MATCH_HASHLIMIT=m 210CONFIG_IP_NF_MATCH_HASHLIMIT=m
211# CONFIG_IP_NF_MATCH_STRING is not set
313CONFIG_IP_NF_FILTER=m 212CONFIG_IP_NF_FILTER=m
314CONFIG_IP_NF_TARGET_REJECT=m 213CONFIG_IP_NF_TARGET_REJECT=m
315CONFIG_IP_NF_TARGET_LOG=m 214CONFIG_IP_NF_TARGET_LOG=m
316CONFIG_IP_NF_TARGET_ULOG=m 215CONFIG_IP_NF_TARGET_ULOG=m
317CONFIG_IP_NF_TARGET_TCPMSS=m 216CONFIG_IP_NF_TARGET_TCPMSS=m
217# CONFIG_IP_NF_TARGET_NFQUEUE is not set
318CONFIG_IP_NF_NAT=m 218CONFIG_IP_NF_NAT=m
319CONFIG_IP_NF_NAT_NEEDED=y 219CONFIG_IP_NF_NAT_NEEDED=y
320CONFIG_IP_NF_TARGET_MASQUERADE=m 220CONFIG_IP_NF_TARGET_MASQUERADE=m
321CONFIG_IP_NF_TARGET_REDIRECT=m 221CONFIG_IP_NF_TARGET_REDIRECT=m
322CONFIG_IP_NF_TARGET_NETMAP=m 222CONFIG_IP_NF_TARGET_NETMAP=m
323CONFIG_IP_NF_TARGET_SAME=m 223CONFIG_IP_NF_TARGET_SAME=m
324# CONFIG_IP_NF_NAT_LOCAL is not set
325CONFIG_IP_NF_NAT_SNMP_BASIC=m 224CONFIG_IP_NF_NAT_SNMP_BASIC=m
326CONFIG_IP_NF_NAT_IRC=m 225CONFIG_IP_NF_NAT_IRC=m
327CONFIG_IP_NF_NAT_FTP=m 226CONFIG_IP_NF_NAT_FTP=m
@@ -333,6 +232,7 @@ CONFIG_IP_NF_TARGET_ECN=m
333CONFIG_IP_NF_TARGET_DSCP=m 232CONFIG_IP_NF_TARGET_DSCP=m
334CONFIG_IP_NF_TARGET_MARK=m 233CONFIG_IP_NF_TARGET_MARK=m
335CONFIG_IP_NF_TARGET_CLASSIFY=m 234CONFIG_IP_NF_TARGET_CLASSIFY=m
235# CONFIG_IP_NF_TARGET_TTL is not set
336CONFIG_IP_NF_TARGET_CONNMARK=m 236CONFIG_IP_NF_TARGET_CONNMARK=m
337CONFIG_IP_NF_TARGET_CLUSTERIP=m 237CONFIG_IP_NF_TARGET_CLUSTERIP=m
338CONFIG_IP_NF_RAW=m 238CONFIG_IP_NF_RAW=m
@@ -340,10 +240,11 @@ CONFIG_IP_NF_TARGET_NOTRACK=m
340CONFIG_IP_NF_ARPTABLES=m 240CONFIG_IP_NF_ARPTABLES=m
341CONFIG_IP_NF_ARPFILTER=m 241CONFIG_IP_NF_ARPFILTER=m
342CONFIG_IP_NF_ARP_MANGLE=m 242CONFIG_IP_NF_ARP_MANGLE=m
343# CONFIG_IP_NF_COMPAT_IPCHAINS is not set 243
344# CONFIG_IP_NF_COMPAT_IPFWADM is not set 244#
345CONFIG_XFRM=y 245# DCCP Configuration (EXPERIMENTAL)
346CONFIG_XFRM_USER=m 246#
247# CONFIG_IP_DCCP is not set
347 248
348# 249#
349# SCTP Configuration (EXPERIMENTAL) 250# SCTP Configuration (EXPERIMENTAL)
@@ -362,10 +263,6 @@ CONFIG_LLC2=m
362# CONFIG_NET_DIVERT is not set 263# CONFIG_NET_DIVERT is not set
363# CONFIG_ECONET is not set 264# CONFIG_ECONET is not set
364# CONFIG_WAN_ROUTER is not set 265# CONFIG_WAN_ROUTER is not set
365
366#
367# QoS and/or fair queueing
368#
369# CONFIG_NET_SCHED is not set 266# CONFIG_NET_SCHED is not set
370# CONFIG_NET_CLS_ROUTE is not set 267# CONFIG_NET_CLS_ROUTE is not set
371 268
@@ -373,17 +270,162 @@ CONFIG_LLC2=m
373# Network testing 270# Network testing
374# 271#
375CONFIG_NET_PKTGEN=m 272CONFIG_NET_PKTGEN=m
376# CONFIG_NETPOLL is not set
377# CONFIG_NET_POLL_CONTROLLER is not set
378# CONFIG_HAMRADIO is not set 273# CONFIG_HAMRADIO is not set
379# CONFIG_IRDA is not set 274# CONFIG_IRDA is not set
380# CONFIG_BT is not set 275# CONFIG_BT is not set
276# CONFIG_IEEE80211 is not set
277
278#
279# Device Drivers
280#
281
282#
283# Generic Driver Options
284#
285# CONFIG_STANDALONE is not set
286# CONFIG_PREVENT_FIRMWARE_BUILD is not set
287CONFIG_FW_LOADER=y
288# CONFIG_DEBUG_DRIVER is not set
289
290#
291# Connector - unified userspace <-> kernelspace linker
292#
293# CONFIG_CONNECTOR is not set
294
295#
296# Memory Technology Devices (MTD)
297#
298# CONFIG_MTD is not set
299
300#
301# Parallel port support
302#
303CONFIG_PARPORT=y
304CONFIG_PARPORT_PC=m
305# CONFIG_PARPORT_PC_FIFO is not set
306# CONFIG_PARPORT_PC_SUPERIO is not set
307CONFIG_PARPORT_GSC=y
308# CONFIG_PARPORT_1284 is not set
309
310#
311# Plug and Play support
312#
313
314#
315# Block devices
316#
317# CONFIG_BLK_DEV_FD is not set
318# CONFIG_PARIDE is not set
319# CONFIG_BLK_DEV_COW_COMMON is not set
320CONFIG_BLK_DEV_LOOP=y
321CONFIG_BLK_DEV_CRYPTOLOOP=y
322# CONFIG_BLK_DEV_NBD is not set
323CONFIG_BLK_DEV_RAM=y
324CONFIG_BLK_DEV_RAM_COUNT=16
325CONFIG_BLK_DEV_RAM_SIZE=6144
326CONFIG_BLK_DEV_INITRD=y
327# CONFIG_CDROM_PKTCDVD is not set
328
329#
330# IO Schedulers
331#
332CONFIG_IOSCHED_NOOP=y
333CONFIG_IOSCHED_AS=y
334CONFIG_IOSCHED_DEADLINE=y
335CONFIG_IOSCHED_CFQ=y
336CONFIG_ATA_OVER_ETH=m
337
338#
339# ATA/ATAPI/MFM/RLL support
340#
341# CONFIG_IDE is not set
342
343#
344# SCSI device support
345#
346# CONFIG_RAID_ATTRS is not set
347CONFIG_SCSI=y
348CONFIG_SCSI_PROC_FS=y
349
350#
351# SCSI support type (disk, tape, CD-ROM)
352#
353CONFIG_BLK_DEV_SD=y
354CONFIG_CHR_DEV_ST=y
355# CONFIG_CHR_DEV_OSST is not set
356CONFIG_BLK_DEV_SR=y
357# CONFIG_BLK_DEV_SR_VENDOR is not set
358CONFIG_CHR_DEV_SG=y
359# CONFIG_CHR_DEV_SCH is not set
360
361#
362# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
363#
364# CONFIG_SCSI_MULTI_LUN is not set
365# CONFIG_SCSI_CONSTANTS is not set
366# CONFIG_SCSI_LOGGING is not set
367
368#
369# SCSI Transport Attributes
370#
371CONFIG_SCSI_SPI_ATTRS=y
372# CONFIG_SCSI_FC_ATTRS is not set
373CONFIG_SCSI_ISCSI_ATTRS=m
374# CONFIG_SCSI_SAS_ATTRS is not set
375
376#
377# SCSI low-level drivers
378#
379# CONFIG_SCSI_SATA is not set
380# CONFIG_SCSI_PPA is not set
381# CONFIG_SCSI_IMM is not set
382CONFIG_SCSI_LASI700=y
383CONFIG_53C700_LE_ON_BE=y
384# CONFIG_SCSI_ZALON is not set
385CONFIG_SCSI_DEBUG=m
386
387#
388# Multi-device support (RAID and LVM)
389#
390CONFIG_MD=y
391CONFIG_BLK_DEV_MD=m
392CONFIG_MD_LINEAR=m
393CONFIG_MD_RAID0=m
394CONFIG_MD_RAID1=m
395# CONFIG_MD_RAID10 is not set
396# CONFIG_MD_RAID5 is not set
397# CONFIG_MD_RAID6 is not set
398# CONFIG_MD_MULTIPATH is not set
399# CONFIG_MD_FAULTY is not set
400# CONFIG_BLK_DEV_DM is not set
401
402#
403# Fusion MPT device support
404#
405# CONFIG_FUSION is not set
406
407#
408# IEEE 1394 (FireWire) support
409#
410# CONFIG_IEEE1394 is not set
411
412#
413# I2O device support
414#
415
416#
417# Network device support
418#
381CONFIG_NETDEVICES=y 419CONFIG_NETDEVICES=y
382CONFIG_DUMMY=m 420CONFIG_DUMMY=m
383CONFIG_BONDING=m 421CONFIG_BONDING=m
384# CONFIG_EQUALIZER is not set 422# CONFIG_EQUALIZER is not set
385CONFIG_TUN=m 423CONFIG_TUN=m
386# CONFIG_ETHERTAP is not set 424
425#
426# PHY device support
427#
428# CONFIG_PHYLIB is not set
387 429
388# 430#
389# Ethernet (10 or 100Mbit) 431# Ethernet (10 or 100Mbit)
@@ -391,6 +433,7 @@ CONFIG_TUN=m
391CONFIG_NET_ETHERNET=y 433CONFIG_NET_ETHERNET=y
392CONFIG_MII=m 434CONFIG_MII=m
393CONFIG_LASI_82596=y 435CONFIG_LASI_82596=y
436# CONFIG_NET_POCKET is not set
394 437
395# 438#
396# Ethernet (1000 Mbit) 439# Ethernet (1000 Mbit)
@@ -414,6 +457,7 @@ CONFIG_NET_RADIO=y
414# 457#
415# CONFIG_STRIP is not set 458# CONFIG_STRIP is not set
416# CONFIG_ATMEL is not set 459# CONFIG_ATMEL is not set
460# CONFIG_HOSTAP is not set
417 461
418# 462#
419# Wan interfaces 463# Wan interfaces
@@ -431,6 +475,8 @@ CONFIG_PPPOE=m
431# CONFIG_SLIP is not set 475# CONFIG_SLIP is not set
432# CONFIG_SHAPER is not set 476# CONFIG_SHAPER is not set
433# CONFIG_NETCONSOLE is not set 477# CONFIG_NETCONSOLE is not set
478# CONFIG_NETPOLL is not set
479# CONFIG_NET_POLL_CONTROLLER is not set
434 480
435# 481#
436# ISDN subsystem 482# ISDN subsystem
@@ -460,19 +506,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
460# CONFIG_INPUT_EVBUG is not set 506# CONFIG_INPUT_EVBUG is not set
461 507
462# 508#
463# Input I/O drivers
464#
465# CONFIG_GAMEPORT is not set
466CONFIG_SOUND_GAMEPORT=y
467CONFIG_SERIO=y
468CONFIG_SERIO_SERPORT=y
469# CONFIG_SERIO_PARKBD is not set
470CONFIG_SERIO_GSCPS2=y
471CONFIG_HP_SDC=y
472CONFIG_HIL_MLC=y
473# CONFIG_SERIO_RAW is not set
474
475#
476# Input Device Drivers 509# Input Device Drivers
477# 510#
478CONFIG_INPUT_KEYBOARD=y 511CONFIG_INPUT_KEYBOARD=y
@@ -483,6 +516,7 @@ CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y
483# CONFIG_KEYBOARD_LKKBD is not set 516# CONFIG_KEYBOARD_LKKBD is not set
484# CONFIG_KEYBOARD_XTKBD is not set 517# CONFIG_KEYBOARD_XTKBD is not set
485# CONFIG_KEYBOARD_NEWTON is not set 518# CONFIG_KEYBOARD_NEWTON is not set
519CONFIG_KEYBOARD_HIL_OLD=y
486# CONFIG_KEYBOARD_HIL is not set 520# CONFIG_KEYBOARD_HIL is not set
487CONFIG_INPUT_MOUSE=y 521CONFIG_INPUT_MOUSE=y
488CONFIG_MOUSE_PS2=y 522CONFIG_MOUSE_PS2=y
@@ -494,6 +528,19 @@ CONFIG_MOUSE_HIL=m
494# CONFIG_INPUT_MISC is not set 528# CONFIG_INPUT_MISC is not set
495 529
496# 530#
531# Hardware I/O ports
532#
533CONFIG_SERIO=y
534CONFIG_SERIO_SERPORT=y
535# CONFIG_SERIO_PARKBD is not set
536CONFIG_SERIO_GSCPS2=y
537CONFIG_HP_SDC=y
538CONFIG_HIL_MLC=y
539CONFIG_SERIO_LIBPS2=y
540# CONFIG_SERIO_RAW is not set
541# CONFIG_GAMEPORT is not set
542
543#
497# Character devices 544# Character devices
498# 545#
499CONFIG_VT=y 546CONFIG_VT=y
@@ -511,7 +558,6 @@ CONFIG_SERIAL_8250_EXTENDED=y
511CONFIG_SERIAL_8250_MANY_PORTS=y 558CONFIG_SERIAL_8250_MANY_PORTS=y
512CONFIG_SERIAL_8250_SHARE_IRQ=y 559CONFIG_SERIAL_8250_SHARE_IRQ=y
513# CONFIG_SERIAL_8250_DETECT_IRQ is not set 560# CONFIG_SERIAL_8250_DETECT_IRQ is not set
514# CONFIG_SERIAL_8250_MULTIPORT is not set
515# CONFIG_SERIAL_8250_RSA is not set 561# CONFIG_SERIAL_8250_RSA is not set
516 562
517# 563#
@@ -546,12 +592,14 @@ CONFIG_GEN_RTC_X=y
546# 592#
547# Ftape, the floppy tape device driver 593# Ftape, the floppy tape device driver
548# 594#
549# CONFIG_AGP is not set
550# CONFIG_DRM is not set
551CONFIG_RAW_DRIVER=y 595CONFIG_RAW_DRIVER=y
552CONFIG_MAX_RAW_DEVS=256 596CONFIG_MAX_RAW_DEVS=256
553 597
554# 598#
599# TPM devices
600#
601
602#
555# I2C support 603# I2C support
556# 604#
557# CONFIG_I2C is not set 605# CONFIG_I2C is not set
@@ -562,10 +610,20 @@ CONFIG_MAX_RAW_DEVS=256
562# CONFIG_W1 is not set 610# CONFIG_W1 is not set
563 611
564# 612#
613# Hardware Monitoring support
614#
615# CONFIG_HWMON is not set
616# CONFIG_HWMON_VID is not set
617
618#
565# Misc devices 619# Misc devices
566# 620#
567 621
568# 622#
623# Multimedia Capabilities Port drivers
624#
625
626#
569# Multimedia devices 627# Multimedia devices
570# 628#
571# CONFIG_VIDEO_DEV is not set 629# CONFIG_VIDEO_DEV is not set
@@ -579,28 +637,36 @@ CONFIG_MAX_RAW_DEVS=256
579# Graphics support 637# Graphics support
580# 638#
581CONFIG_FB=y 639CONFIG_FB=y
640CONFIG_FB_CFB_FILLRECT=y
641CONFIG_FB_CFB_COPYAREA=y
642CONFIG_FB_CFB_IMAGEBLIT=y
643CONFIG_FB_SOFT_CURSOR=y
644# CONFIG_FB_MACMODES is not set
582CONFIG_FB_MODE_HELPERS=y 645CONFIG_FB_MODE_HELPERS=y
583CONFIG_FB_TILEBLITTING=y 646CONFIG_FB_TILEBLITTING=y
584CONFIG_FB_STI=y 647CONFIG_FB_STI=y
648# CONFIG_FB_S1D13XXX is not set
585# CONFIG_FB_VIRTUAL is not set 649# CONFIG_FB_VIRTUAL is not set
586 650
587# 651#
588# Console display driver support 652# Console display driver support
589# 653#
590CONFIG_STI_CONSOLE=y 654CONFIG_DUMMY_CONSOLE=y
591CONFIG_DUMMY_CONSOLE_COLUMNS=128 655CONFIG_DUMMY_CONSOLE_COLUMNS=128
592CONFIG_DUMMY_CONSOLE_ROWS=48 656CONFIG_DUMMY_CONSOLE_ROWS=48
593CONFIG_DUMMY_CONSOLE=y
594CONFIG_FRAMEBUFFER_CONSOLE=y 657CONFIG_FRAMEBUFFER_CONSOLE=y
658CONFIG_STI_CONSOLE=y
595CONFIG_FONTS=y 659CONFIG_FONTS=y
596CONFIG_FONT_8x8=y 660CONFIG_FONT_8x8=y
597CONFIG_FONT_8x16=y 661CONFIG_FONT_8x16=y
598# CONFIG_FONT_6x11 is not set 662# CONFIG_FONT_6x11 is not set
663# CONFIG_FONT_7x14 is not set
599# CONFIG_FONT_PEARL_8x8 is not set 664# CONFIG_FONT_PEARL_8x8 is not set
600# CONFIG_FONT_ACORN_8x8 is not set 665# CONFIG_FONT_ACORN_8x8 is not set
601# CONFIG_FONT_MINI_4x6 is not set 666# CONFIG_FONT_MINI_4x6 is not set
602# CONFIG_FONT_SUN8x16 is not set 667# CONFIG_FONT_SUN8x16 is not set
603# CONFIG_FONT_SUN12x22 is not set 668# CONFIG_FONT_SUN12x22 is not set
669# CONFIG_FONT_10x18 is not set
604 670
605# 671#
606# Logo configuration 672# Logo configuration
@@ -610,6 +676,7 @@ CONFIG_LOGO=y
610# CONFIG_LOGO_LINUX_VGA16 is not set 676# CONFIG_LOGO_LINUX_VGA16 is not set
611# CONFIG_LOGO_LINUX_CLUT224 is not set 677# CONFIG_LOGO_LINUX_CLUT224 is not set
612CONFIG_LOGO_PARISC_CLUT224=y 678CONFIG_LOGO_PARISC_CLUT224=y
679# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
613 680
614# 681#
615# Sound 682# Sound
@@ -657,10 +724,6 @@ CONFIG_SND_HARMONY=y
657# CONFIG_USB_ARCH_HAS_OHCI is not set 724# CONFIG_USB_ARCH_HAS_OHCI is not set
658 725
659# 726#
660# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
661#
662
663#
664# USB Gadget Support 727# USB Gadget Support
665# 728#
666# CONFIG_USB_GADGET is not set 729# CONFIG_USB_GADGET is not set
@@ -671,10 +734,20 @@ CONFIG_SND_HARMONY=y
671# CONFIG_MMC is not set 734# CONFIG_MMC is not set
672 735
673# 736#
737# InfiniBand support
738#
739# CONFIG_INFINIBAND is not set
740
741#
742# SN Devices
743#
744
745#
674# File systems 746# File systems
675# 747#
676CONFIG_EXT2_FS=y 748CONFIG_EXT2_FS=y
677# CONFIG_EXT2_FS_XATTR is not set 749# CONFIG_EXT2_FS_XATTR is not set
750# CONFIG_EXT2_FS_XIP is not set
678CONFIG_EXT3_FS=y 751CONFIG_EXT3_FS=y
679# CONFIG_EXT3_FS_XATTR is not set 752# CONFIG_EXT3_FS_XATTR is not set
680CONFIG_JBD=y 753CONFIG_JBD=y
@@ -682,20 +755,24 @@ CONFIG_JBD=y
682# CONFIG_REISERFS_FS is not set 755# CONFIG_REISERFS_FS is not set
683CONFIG_JFS_FS=m 756CONFIG_JFS_FS=m
684# CONFIG_JFS_POSIX_ACL is not set 757# CONFIG_JFS_POSIX_ACL is not set
758# CONFIG_JFS_SECURITY is not set
685# CONFIG_JFS_DEBUG is not set 759# CONFIG_JFS_DEBUG is not set
686# CONFIG_JFS_STATISTICS is not set 760# CONFIG_JFS_STATISTICS is not set
687CONFIG_FS_POSIX_ACL=y 761CONFIG_FS_POSIX_ACL=y
688CONFIG_XFS_FS=m 762CONFIG_XFS_FS=m
689# CONFIG_XFS_RT is not set 763CONFIG_XFS_EXPORT=y
690# CONFIG_XFS_QUOTA is not set 764# CONFIG_XFS_QUOTA is not set
691# CONFIG_XFS_SECURITY is not set 765# CONFIG_XFS_SECURITY is not set
692# CONFIG_XFS_POSIX_ACL is not set 766# CONFIG_XFS_POSIX_ACL is not set
767# CONFIG_XFS_RT is not set
693# CONFIG_MINIX_FS is not set 768# CONFIG_MINIX_FS is not set
694# CONFIG_ROMFS_FS is not set 769# CONFIG_ROMFS_FS is not set
770CONFIG_INOTIFY=y
695# CONFIG_QUOTA is not set 771# CONFIG_QUOTA is not set
696CONFIG_DNOTIFY=y 772CONFIG_DNOTIFY=y
697# CONFIG_AUTOFS_FS is not set 773# CONFIG_AUTOFS_FS is not set
698CONFIG_AUTOFS4_FS=y 774CONFIG_AUTOFS4_FS=y
775# CONFIG_FUSE_FS is not set
699 776
700# 777#
701# CD-ROM/DVD Filesystems 778# CD-ROM/DVD Filesystems
@@ -722,14 +799,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
722CONFIG_PROC_FS=y 799CONFIG_PROC_FS=y
723CONFIG_PROC_KCORE=y 800CONFIG_PROC_KCORE=y
724CONFIG_SYSFS=y 801CONFIG_SYSFS=y
725# CONFIG_DEVFS_FS is not set
726# CONFIG_DEVPTS_FS_XATTR is not set
727CONFIG_TMPFS=y 802CONFIG_TMPFS=y
728CONFIG_TMPFS_XATTR=y
729# CONFIG_TMPFS_SECURITY is not set
730# CONFIG_HUGETLBFS is not set 803# CONFIG_HUGETLBFS is not set
731# CONFIG_HUGETLB_PAGE is not set 804# CONFIG_HUGETLB_PAGE is not set
732CONFIG_RAMFS=y 805CONFIG_RAMFS=y
806# CONFIG_RELAYFS_FS is not set
733 807
734# 808#
735# Miscellaneous filesystems 809# Miscellaneous filesystems
@@ -754,16 +828,19 @@ CONFIG_UFS_FS=m
754# 828#
755CONFIG_NFS_FS=y 829CONFIG_NFS_FS=y
756CONFIG_NFS_V3=y 830CONFIG_NFS_V3=y
831# CONFIG_NFS_V3_ACL is not set
757CONFIG_NFS_V4=y 832CONFIG_NFS_V4=y
758CONFIG_NFS_DIRECTIO=y 833CONFIG_NFS_DIRECTIO=y
759CONFIG_NFSD=m 834CONFIG_NFSD=m
760CONFIG_NFSD_V3=y 835CONFIG_NFSD_V3=y
836# CONFIG_NFSD_V3_ACL is not set
761CONFIG_NFSD_V4=y 837CONFIG_NFSD_V4=y
762CONFIG_NFSD_TCP=y 838CONFIG_NFSD_TCP=y
763CONFIG_ROOT_NFS=y 839CONFIG_ROOT_NFS=y
764CONFIG_LOCKD=y 840CONFIG_LOCKD=y
765CONFIG_LOCKD_V4=y 841CONFIG_LOCKD_V4=y
766CONFIG_EXPORTFS=m 842CONFIG_EXPORTFS=m
843CONFIG_NFS_COMMON=y
767CONFIG_SUNRPC=y 844CONFIG_SUNRPC=y
768CONFIG_SUNRPC_GSS=y 845CONFIG_SUNRPC_GSS=y
769CONFIG_RPCSEC_GSS_KRB5=y 846CONFIG_RPCSEC_GSS_KRB5=y
@@ -778,6 +855,7 @@ CONFIG_CIFS=m
778# CONFIG_NCP_FS is not set 855# CONFIG_NCP_FS is not set
779# CONFIG_CODA_FS is not set 856# CONFIG_CODA_FS is not set
780# CONFIG_AFS_FS is not set 857# CONFIG_AFS_FS is not set
858# CONFIG_9P_FS is not set
781 859
782# 860#
783# Partition Types 861# Partition Types
@@ -838,13 +916,19 @@ CONFIG_OPROFILE=m
838# 916#
839# Kernel hacking 917# Kernel hacking
840# 918#
919# CONFIG_PRINTK_TIME is not set
841CONFIG_DEBUG_KERNEL=y 920CONFIG_DEBUG_KERNEL=y
842CONFIG_MAGIC_SYSRQ=y 921CONFIG_MAGIC_SYSRQ=y
922CONFIG_LOG_BUF_SHIFT=16
923CONFIG_DETECT_SOFTLOCKUP=y
843# CONFIG_SCHEDSTATS is not set 924# CONFIG_SCHEDSTATS is not set
844# CONFIG_DEBUG_SLAB is not set 925# CONFIG_DEBUG_SLAB is not set
845# CONFIG_DEBUG_SPINLOCK is not set 926# CONFIG_DEBUG_SPINLOCK is not set
927# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
846# CONFIG_DEBUG_KOBJECT is not set 928# CONFIG_DEBUG_KOBJECT is not set
847# CONFIG_DEBUG_INFO is not set 929# CONFIG_DEBUG_INFO is not set
930# CONFIG_DEBUG_IOREMAP is not set
931# CONFIG_DEBUG_FS is not set
848 932
849# 933#
850# Security options 934# Security options
@@ -865,6 +949,7 @@ CONFIG_CRYPTO_SHA1=m
865CONFIG_CRYPTO_SHA256=m 949CONFIG_CRYPTO_SHA256=m
866CONFIG_CRYPTO_SHA512=m 950CONFIG_CRYPTO_SHA512=m
867CONFIG_CRYPTO_WP512=m 951CONFIG_CRYPTO_WP512=m
952CONFIG_CRYPTO_TGR192=m
868CONFIG_CRYPTO_DES=y 953CONFIG_CRYPTO_DES=y
869CONFIG_CRYPTO_BLOWFISH=m 954CONFIG_CRYPTO_BLOWFISH=m
870CONFIG_CRYPTO_TWOFISH=m 955CONFIG_CRYPTO_TWOFISH=m
@@ -882,9 +967,14 @@ CONFIG_CRYPTO_CRC32C=m
882CONFIG_CRYPTO_TEST=m 967CONFIG_CRYPTO_TEST=m
883 968
884# 969#
970# Hardware crypto devices
971#
972
973#
885# Library routines 974# Library routines
886# 975#
887CONFIG_CRC_CCITT=m 976CONFIG_CRC_CCITT=m
977# CONFIG_CRC16 is not set
888CONFIG_CRC32=y 978CONFIG_CRC32=y
889CONFIG_LIBCRC32C=m 979CONFIG_LIBCRC32C=m
890CONFIG_ZLIB_INFLATE=m 980CONFIG_ZLIB_INFLATE=m
diff --git a/arch/parisc/configs/a500_defconfig b/arch/parisc/configs/a500_defconfig
index 30fc03ed0cfb..955ef5084f3e 100644
--- a/arch/parisc/configs/a500_defconfig
+++ b/arch/parisc/configs/a500_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.11-rc4-pa1 3# Linux kernel version: 2.6.14-rc5-pa1
4# Wed Feb 16 11:32:49 2005 4# Fri Oct 21 23:04:54 2005
5# 5#
6CONFIG_PARISC=y 6CONFIG_PARISC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -10,6 +10,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y 10CONFIG_GENERIC_CALIBRATE_DELAY=y
11CONFIG_GENERIC_HARDIRQS=y 11CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y 12CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_ARCH_MAY_HAVE_PC_FDC=y
13 14
14# 15#
15# Code maturity level options 16# Code maturity level options
@@ -19,26 +20,32 @@ CONFIG_EXPERIMENTAL=y
19CONFIG_BROKEN=y 20CONFIG_BROKEN=y
20CONFIG_BROKEN_ON_SMP=y 21CONFIG_BROKEN_ON_SMP=y
21CONFIG_LOCK_KERNEL=y 22CONFIG_LOCK_KERNEL=y
23CONFIG_INIT_ENV_ARG_LIMIT=32
22 24
23# 25#
24# General setup 26# General setup
25# 27#
26CONFIG_LOCALVERSION="" 28CONFIG_LOCALVERSION=""
29# CONFIG_LOCALVERSION_AUTO is not set
27CONFIG_SWAP=y 30CONFIG_SWAP=y
28CONFIG_SYSVIPC=y 31CONFIG_SYSVIPC=y
29CONFIG_POSIX_MQUEUE=y 32CONFIG_POSIX_MQUEUE=y
30# CONFIG_BSD_PROCESS_ACCT is not set 33# CONFIG_BSD_PROCESS_ACCT is not set
31CONFIG_SYSCTL=y 34CONFIG_SYSCTL=y
32# CONFIG_AUDIT is not set 35# CONFIG_AUDIT is not set
33CONFIG_LOG_BUF_SHIFT=16
34CONFIG_HOTPLUG=y 36CONFIG_HOTPLUG=y
35CONFIG_KOBJECT_UEVENT=y 37CONFIG_KOBJECT_UEVENT=y
36CONFIG_IKCONFIG=y 38CONFIG_IKCONFIG=y
37CONFIG_IKCONFIG_PROC=y 39CONFIG_IKCONFIG_PROC=y
40# CONFIG_CPUSETS is not set
41CONFIG_INITRAMFS_SOURCE=""
38CONFIG_EMBEDDED=y 42CONFIG_EMBEDDED=y
39CONFIG_KALLSYMS=y 43CONFIG_KALLSYMS=y
40CONFIG_KALLSYMS_ALL=y 44CONFIG_KALLSYMS_ALL=y
41# CONFIG_KALLSYMS_EXTRA_PASS is not set 45# CONFIG_KALLSYMS_EXTRA_PASS is not set
46CONFIG_PRINTK=y
47CONFIG_BUG=y
48CONFIG_BASE_FULL=y
42CONFIG_FUTEX=y 49CONFIG_FUTEX=y
43CONFIG_EPOLL=y 50CONFIG_EPOLL=y
44# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 51# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -48,6 +55,7 @@ CONFIG_CC_ALIGN_LABELS=0
48CONFIG_CC_ALIGN_LOOPS=0 55CONFIG_CC_ALIGN_LOOPS=0
49CONFIG_CC_ALIGN_JUMPS=0 56CONFIG_CC_ALIGN_JUMPS=0
50# CONFIG_TINY_SHMEM is not set 57# CONFIG_TINY_SHMEM is not set
58CONFIG_BASE_SMALL=0
51 59
52# 60#
53# Loadable module support 61# Loadable module support
@@ -74,7 +82,19 @@ CONFIG_PREFETCH=y
74CONFIG_64BIT=y 82CONFIG_64BIT=y
75CONFIG_SMP=y 83CONFIG_SMP=y
76CONFIG_HOTPLUG_CPU=y 84CONFIG_HOTPLUG_CPU=y
85CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
86# CONFIG_HZ_100 is not set
87CONFIG_HZ_250=y
88# CONFIG_HZ_1000 is not set
89CONFIG_HZ=250
90CONFIG_SELECT_MEMORY_MODEL=y
91# CONFIG_FLATMEM_MANUAL is not set
92CONFIG_DISCONTIGMEM_MANUAL=y
93# CONFIG_SPARSEMEM_MANUAL is not set
77CONFIG_DISCONTIGMEM=y 94CONFIG_DISCONTIGMEM=y
95CONFIG_FLAT_NODE_MEM_MAP=y
96CONFIG_NEED_MULTIPLE_NODES=y
97# CONFIG_SPARSEMEM_STATIC is not set
78# CONFIG_PREEMPT is not set 98# CONFIG_PREEMPT is not set
79CONFIG_COMPAT=y 99CONFIG_COMPAT=y
80CONFIG_NR_CPUS=8 100CONFIG_NR_CPUS=8
@@ -85,7 +105,7 @@ CONFIG_NR_CPUS=8
85# CONFIG_GSC is not set 105# CONFIG_GSC is not set
86CONFIG_PCI=y 106CONFIG_PCI=y
87CONFIG_PCI_LEGACY_PROC=y 107CONFIG_PCI_LEGACY_PROC=y
88CONFIG_PCI_NAMES=y 108# CONFIG_PCI_DEBUG is not set
89CONFIG_PCI_LBA=y 109CONFIG_PCI_LBA=y
90CONFIG_IOSAPIC=y 110CONFIG_IOSAPIC=y
91CONFIG_IOMMU_SBA=y 111CONFIG_IOMMU_SBA=y
@@ -96,6 +116,8 @@ CONFIG_IOMMU_SBA=y
96CONFIG_PCCARD=m 116CONFIG_PCCARD=m
97# CONFIG_PCMCIA_DEBUG is not set 117# CONFIG_PCMCIA_DEBUG is not set
98CONFIG_PCMCIA=m 118CONFIG_PCMCIA=m
119# CONFIG_PCMCIA_LOAD_CIS is not set
120CONFIG_PCMCIA_IOCTL=y
99CONFIG_CARDBUS=y 121CONFIG_CARDBUS=y
100 122
101# 123#
@@ -104,7 +126,6 @@ CONFIG_CARDBUS=y
104CONFIG_YENTA=m 126CONFIG_YENTA=m
105CONFIG_PD6729=m 127CONFIG_PD6729=m
106CONFIG_I82092=m 128CONFIG_I82092=m
107CONFIG_TCIC=m
108CONFIG_PCCARD_NONSTATIC=m 129CONFIG_PCCARD_NONSTATIC=m
109 130
110# 131#
@@ -127,6 +148,203 @@ CONFIG_BINFMT_ELF=y
127# CONFIG_BINFMT_MISC is not set 148# CONFIG_BINFMT_MISC is not set
128 149
129# 150#
151# Networking
152#
153CONFIG_NET=y
154
155#
156# Networking options
157#
158CONFIG_PACKET=y
159CONFIG_PACKET_MMAP=y
160CONFIG_UNIX=y
161CONFIG_XFRM=y
162CONFIG_XFRM_USER=m
163CONFIG_NET_KEY=m
164CONFIG_INET=y
165CONFIG_IP_MULTICAST=y
166# CONFIG_IP_ADVANCED_ROUTER is not set
167CONFIG_IP_FIB_HASH=y
168CONFIG_IP_PNP=y
169CONFIG_IP_PNP_DHCP=y
170CONFIG_IP_PNP_BOOTP=y
171# CONFIG_IP_PNP_RARP is not set
172# CONFIG_NET_IPIP is not set
173# CONFIG_NET_IPGRE is not set
174# CONFIG_IP_MROUTE is not set
175# CONFIG_ARPD is not set
176# CONFIG_SYN_COOKIES is not set
177CONFIG_INET_AH=m
178CONFIG_INET_ESP=m
179# CONFIG_INET_IPCOMP is not set
180CONFIG_INET_TUNNEL=m
181CONFIG_INET_DIAG=y
182CONFIG_INET_TCP_DIAG=y
183# CONFIG_TCP_CONG_ADVANCED is not set
184CONFIG_TCP_CONG_BIC=y
185
186#
187# IP: Virtual Server Configuration
188#
189# CONFIG_IP_VS is not set
190CONFIG_IPV6=m
191# CONFIG_IPV6_PRIVACY is not set
192CONFIG_INET6_AH=m
193CONFIG_INET6_ESP=m
194CONFIG_INET6_IPCOMP=m
195CONFIG_INET6_TUNNEL=m
196CONFIG_IPV6_TUNNEL=m
197CONFIG_NETFILTER=y
198# CONFIG_NETFILTER_DEBUG is not set
199# CONFIG_NETFILTER_NETLINK is not set
200
201#
202# IP: Netfilter Configuration
203#
204CONFIG_IP_NF_CONNTRACK=m
205# CONFIG_IP_NF_CT_ACCT is not set
206CONFIG_IP_NF_CONNTRACK_MARK=y
207# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
208CONFIG_IP_NF_CT_PROTO_SCTP=m
209CONFIG_IP_NF_FTP=m
210CONFIG_IP_NF_IRC=m
211# CONFIG_IP_NF_NETBIOS_NS is not set
212CONFIG_IP_NF_TFTP=m
213CONFIG_IP_NF_AMANDA=m
214# CONFIG_IP_NF_PPTP is not set
215CONFIG_IP_NF_QUEUE=m
216CONFIG_IP_NF_IPTABLES=m
217CONFIG_IP_NF_MATCH_LIMIT=m
218CONFIG_IP_NF_MATCH_IPRANGE=m
219CONFIG_IP_NF_MATCH_MAC=m
220CONFIG_IP_NF_MATCH_PKTTYPE=m
221CONFIG_IP_NF_MATCH_MARK=m
222CONFIG_IP_NF_MATCH_MULTIPORT=m
223CONFIG_IP_NF_MATCH_TOS=m
224CONFIG_IP_NF_MATCH_RECENT=m
225CONFIG_IP_NF_MATCH_ECN=m
226CONFIG_IP_NF_MATCH_DSCP=m
227CONFIG_IP_NF_MATCH_AH_ESP=m
228CONFIG_IP_NF_MATCH_LENGTH=m
229CONFIG_IP_NF_MATCH_TTL=m
230CONFIG_IP_NF_MATCH_TCPMSS=m
231CONFIG_IP_NF_MATCH_HELPER=m
232CONFIG_IP_NF_MATCH_STATE=m
233CONFIG_IP_NF_MATCH_CONNTRACK=m
234CONFIG_IP_NF_MATCH_OWNER=m
235# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
236# CONFIG_IP_NF_MATCH_REALM is not set
237CONFIG_IP_NF_MATCH_SCTP=m
238# CONFIG_IP_NF_MATCH_DCCP is not set
239CONFIG_IP_NF_MATCH_COMMENT=m
240CONFIG_IP_NF_MATCH_CONNMARK=m
241CONFIG_IP_NF_MATCH_HASHLIMIT=m
242# CONFIG_IP_NF_MATCH_STRING is not set
243CONFIG_IP_NF_FILTER=m
244CONFIG_IP_NF_TARGET_REJECT=m
245CONFIG_IP_NF_TARGET_LOG=m
246CONFIG_IP_NF_TARGET_ULOG=m
247CONFIG_IP_NF_TARGET_TCPMSS=m
248# CONFIG_IP_NF_TARGET_NFQUEUE is not set
249CONFIG_IP_NF_NAT=m
250CONFIG_IP_NF_NAT_NEEDED=y
251CONFIG_IP_NF_TARGET_MASQUERADE=m
252CONFIG_IP_NF_TARGET_REDIRECT=m
253CONFIG_IP_NF_TARGET_NETMAP=m
254CONFIG_IP_NF_TARGET_SAME=m
255CONFIG_IP_NF_NAT_SNMP_BASIC=m
256CONFIG_IP_NF_NAT_IRC=m
257CONFIG_IP_NF_NAT_FTP=m
258CONFIG_IP_NF_NAT_TFTP=m
259CONFIG_IP_NF_NAT_AMANDA=m
260CONFIG_IP_NF_MANGLE=m
261CONFIG_IP_NF_TARGET_TOS=m
262CONFIG_IP_NF_TARGET_ECN=m
263CONFIG_IP_NF_TARGET_DSCP=m
264CONFIG_IP_NF_TARGET_MARK=m
265CONFIG_IP_NF_TARGET_CLASSIFY=m
266# CONFIG_IP_NF_TARGET_TTL is not set
267CONFIG_IP_NF_TARGET_CONNMARK=m
268CONFIG_IP_NF_TARGET_CLUSTERIP=m
269CONFIG_IP_NF_RAW=m
270CONFIG_IP_NF_TARGET_NOTRACK=m
271CONFIG_IP_NF_ARPTABLES=m
272CONFIG_IP_NF_ARPFILTER=m
273CONFIG_IP_NF_ARP_MANGLE=m
274
275#
276# IPv6: Netfilter Configuration (EXPERIMENTAL)
277#
278# CONFIG_IP6_NF_QUEUE is not set
279CONFIG_IP6_NF_IPTABLES=m
280# CONFIG_IP6_NF_MATCH_LIMIT is not set
281CONFIG_IP6_NF_MATCH_MAC=m
282CONFIG_IP6_NF_MATCH_RT=m
283CONFIG_IP6_NF_MATCH_OPTS=m
284CONFIG_IP6_NF_MATCH_FRAG=m
285CONFIG_IP6_NF_MATCH_HL=m
286# CONFIG_IP6_NF_MATCH_MULTIPORT is not set
287# CONFIG_IP6_NF_MATCH_OWNER is not set
288# CONFIG_IP6_NF_MATCH_MARK is not set
289CONFIG_IP6_NF_MATCH_IPV6HEADER=m
290# CONFIG_IP6_NF_MATCH_AHESP is not set
291# CONFIG_IP6_NF_MATCH_LENGTH is not set
292# CONFIG_IP6_NF_MATCH_EUI64 is not set
293CONFIG_IP6_NF_FILTER=m
294CONFIG_IP6_NF_TARGET_LOG=m
295CONFIG_IP6_NF_TARGET_REJECT=m
296# CONFIG_IP6_NF_TARGET_NFQUEUE is not set
297CONFIG_IP6_NF_MANGLE=m
298# CONFIG_IP6_NF_TARGET_MARK is not set
299# CONFIG_IP6_NF_TARGET_HL is not set
300CONFIG_IP6_NF_RAW=m
301
302#
303# DCCP Configuration (EXPERIMENTAL)
304#
305CONFIG_IP_DCCP=m
306CONFIG_INET_DCCP_DIAG=m
307
308#
309# DCCP CCIDs Configuration (EXPERIMENTAL)
310#
311# CONFIG_IP_DCCP_CCID3 is not set
312
313#
314# DCCP Kernel Hacking
315#
316# CONFIG_IP_DCCP_DEBUG is not set
317
318#
319# SCTP Configuration (EXPERIMENTAL)
320#
321# CONFIG_IP_SCTP is not set
322# CONFIG_ATM is not set
323# CONFIG_BRIDGE is not set
324# CONFIG_VLAN_8021Q is not set
325# CONFIG_DECNET is not set
326CONFIG_LLC=m
327CONFIG_LLC2=m
328# CONFIG_IPX is not set
329# CONFIG_ATALK is not set
330# CONFIG_X25 is not set
331# CONFIG_LAPB is not set
332# CONFIG_NET_DIVERT is not set
333# CONFIG_ECONET is not set
334# CONFIG_WAN_ROUTER is not set
335# CONFIG_NET_SCHED is not set
336# CONFIG_NET_CLS_ROUTE is not set
337
338#
339# Network testing
340#
341CONFIG_NET_PKTGEN=m
342# CONFIG_HAMRADIO is not set
343# CONFIG_IRDA is not set
344# CONFIG_BT is not set
345# CONFIG_IEEE80211 is not set
346
347#
130# Device Drivers 348# Device Drivers
131# 349#
132 350
@@ -139,6 +357,11 @@ CONFIG_FW_LOADER=y
139# CONFIG_DEBUG_DRIVER is not set 357# CONFIG_DEBUG_DRIVER is not set
140 358
141# 359#
360# Connector - unified userspace <-> kernelspace linker
361#
362# CONFIG_CONNECTOR is not set
363
364#
142# Memory Technology Devices (MTD) 365# Memory Technology Devices (MTD)
143# 366#
144# CONFIG_MTD is not set 367# CONFIG_MTD is not set
@@ -169,7 +392,6 @@ CONFIG_BLK_DEV_RAM=y
169CONFIG_BLK_DEV_RAM_COUNT=16 392CONFIG_BLK_DEV_RAM_COUNT=16
170CONFIG_BLK_DEV_RAM_SIZE=6144 393CONFIG_BLK_DEV_RAM_SIZE=6144
171CONFIG_BLK_DEV_INITRD=y 394CONFIG_BLK_DEV_INITRD=y
172CONFIG_INITRAMFS_SOURCE=""
173# CONFIG_CDROM_PKTCDVD is not set 395# CONFIG_CDROM_PKTCDVD is not set
174 396
175# 397#
@@ -189,6 +411,7 @@ CONFIG_IOSCHED_CFQ=y
189# 411#
190# SCSI device support 412# SCSI device support
191# 413#
414CONFIG_RAID_ATTRS=m
192CONFIG_SCSI=y 415CONFIG_SCSI=y
193CONFIG_SCSI_PROC_FS=y 416CONFIG_SCSI_PROC_FS=y
194 417
@@ -201,6 +424,7 @@ CONFIG_CHR_DEV_ST=y
201CONFIG_BLK_DEV_SR=y 424CONFIG_BLK_DEV_SR=y
202# CONFIG_BLK_DEV_SR_VENDOR is not set 425# CONFIG_BLK_DEV_SR_VENDOR is not set
203CONFIG_CHR_DEV_SG=y 426CONFIG_CHR_DEV_SG=y
427# CONFIG_CHR_DEV_SCH is not set
204 428
205# 429#
206# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 430# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
@@ -215,6 +439,7 @@ CONFIG_SCSI_MULTI_LUN=y
215CONFIG_SCSI_SPI_ATTRS=y 439CONFIG_SCSI_SPI_ATTRS=y
216CONFIG_SCSI_FC_ATTRS=m 440CONFIG_SCSI_FC_ATTRS=m
217CONFIG_SCSI_ISCSI_ATTRS=m 441CONFIG_SCSI_ISCSI_ATTRS=m
442CONFIG_SCSI_SAS_ATTRS=m
218 443
219# 444#
220# SCSI low-level drivers 445# SCSI low-level drivers
@@ -229,14 +454,12 @@ CONFIG_SCSI_ISCSI_ATTRS=m
229# CONFIG_SCSI_ADVANSYS is not set 454# CONFIG_SCSI_ADVANSYS is not set
230# CONFIG_MEGARAID_NEWGEN is not set 455# CONFIG_MEGARAID_NEWGEN is not set
231# CONFIG_MEGARAID_LEGACY is not set 456# CONFIG_MEGARAID_LEGACY is not set
457# CONFIG_MEGARAID_SAS is not set
232# CONFIG_SCSI_SATA is not set 458# CONFIG_SCSI_SATA is not set
233# CONFIG_SCSI_BUSLOGIC is not set
234# CONFIG_SCSI_CPQFCTS is not set 459# CONFIG_SCSI_CPQFCTS is not set
235# CONFIG_SCSI_DMX3191D is not set 460# CONFIG_SCSI_DMX3191D is not set
236# CONFIG_SCSI_EATA is not set
237# CONFIG_SCSI_EATA_PIO is not set 461# CONFIG_SCSI_EATA_PIO is not set
238# CONFIG_SCSI_FUTURE_DOMAIN is not set 462# CONFIG_SCSI_FUTURE_DOMAIN is not set
239# CONFIG_SCSI_GDTH is not set
240# CONFIG_SCSI_IPS is not set 463# CONFIG_SCSI_IPS is not set
241# CONFIG_SCSI_INITIO is not set 464# CONFIG_SCSI_INITIO is not set
242# CONFIG_SCSI_INIA100 is not set 465# CONFIG_SCSI_INIA100 is not set
@@ -246,8 +469,6 @@ CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
246CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 469CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
247# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set 470# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
248# CONFIG_SCSI_IPR is not set 471# CONFIG_SCSI_IPR is not set
249# CONFIG_SCSI_PCI2000 is not set
250# CONFIG_SCSI_PCI2220I is not set
251# CONFIG_SCSI_QLOGIC_ISP is not set 472# CONFIG_SCSI_QLOGIC_ISP is not set
252CONFIG_SCSI_QLOGIC_FC=m 473CONFIG_SCSI_QLOGIC_FC=m
253# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set 474# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set
@@ -258,7 +479,9 @@ CONFIG_SCSI_QLA2XXX=y
258# CONFIG_SCSI_QLA22XX is not set 479# CONFIG_SCSI_QLA22XX is not set
259CONFIG_SCSI_QLA2300=m 480CONFIG_SCSI_QLA2300=m
260CONFIG_SCSI_QLA2322=m 481CONFIG_SCSI_QLA2322=m
261CONFIG_SCSI_QLA6312=m 482# CONFIG_SCSI_QLA6312 is not set
483# CONFIG_SCSI_QLA24XX is not set
484# CONFIG_SCSI_LPFC is not set
262# CONFIG_SCSI_DC395x is not set 485# CONFIG_SCSI_DC395x is not set
263# CONFIG_SCSI_DC390T is not set 486# CONFIG_SCSI_DC390T is not set
264CONFIG_SCSI_DEBUG=m 487CONFIG_SCSI_DEBUG=m
@@ -288,8 +511,11 @@ CONFIG_MD_RAID1=y
288# 511#
289# Fusion MPT device support 512# Fusion MPT device support
290# 513#
291CONFIG_FUSION=m 514CONFIG_FUSION=y
292CONFIG_FUSION_MAX_SGE=40 515CONFIG_FUSION_SPI=m
516CONFIG_FUSION_FC=m
517# CONFIG_FUSION_SAS is not set
518CONFIG_FUSION_MAX_SGE=128
293CONFIG_FUSION_CTL=m 519CONFIG_FUSION_CTL=m
294 520
295# 521#
@@ -303,153 +529,13 @@ CONFIG_FUSION_CTL=m
303# CONFIG_I2O is not set 529# CONFIG_I2O is not set
304 530
305# 531#
306# Networking support 532# Network device support
307#
308CONFIG_NET=y
309
310#
311# Networking options
312#
313CONFIG_PACKET=y
314CONFIG_PACKET_MMAP=y
315CONFIG_NETLINK_DEV=y
316CONFIG_UNIX=y
317CONFIG_NET_KEY=m
318CONFIG_INET=y
319CONFIG_IP_MULTICAST=y
320# CONFIG_IP_ADVANCED_ROUTER is not set
321CONFIG_IP_PNP=y
322CONFIG_IP_PNP_DHCP=y
323CONFIG_IP_PNP_BOOTP=y
324# CONFIG_IP_PNP_RARP is not set
325# CONFIG_NET_IPIP is not set
326# CONFIG_NET_IPGRE is not set
327# CONFIG_IP_MROUTE is not set
328# CONFIG_ARPD is not set
329# CONFIG_SYN_COOKIES is not set
330CONFIG_INET_AH=m
331CONFIG_INET_ESP=m
332# CONFIG_INET_IPCOMP is not set
333CONFIG_INET_TUNNEL=m
334CONFIG_IP_TCPDIAG=y
335# CONFIG_IP_TCPDIAG_IPV6 is not set
336
337#
338# IP: Virtual Server Configuration
339# 533#
340# CONFIG_IP_VS is not set
341# CONFIG_IPV6 is not set
342CONFIG_NETFILTER=y
343# CONFIG_NETFILTER_DEBUG is not set
344
345#
346# IP: Netfilter Configuration
347#
348CONFIG_IP_NF_CONNTRACK=m
349# CONFIG_IP_NF_CT_ACCT is not set
350CONFIG_IP_NF_CONNTRACK_MARK=y
351CONFIG_IP_NF_CT_PROTO_SCTP=m
352CONFIG_IP_NF_FTP=m
353CONFIG_IP_NF_IRC=m
354CONFIG_IP_NF_TFTP=m
355CONFIG_IP_NF_AMANDA=m
356CONFIG_IP_NF_QUEUE=m
357CONFIG_IP_NF_IPTABLES=m
358CONFIG_IP_NF_MATCH_LIMIT=m
359CONFIG_IP_NF_MATCH_IPRANGE=m
360CONFIG_IP_NF_MATCH_MAC=m
361CONFIG_IP_NF_MATCH_PKTTYPE=m
362CONFIG_IP_NF_MATCH_MARK=m
363CONFIG_IP_NF_MATCH_MULTIPORT=m
364CONFIG_IP_NF_MATCH_TOS=m
365CONFIG_IP_NF_MATCH_RECENT=m
366CONFIG_IP_NF_MATCH_ECN=m
367CONFIG_IP_NF_MATCH_DSCP=m
368CONFIG_IP_NF_MATCH_AH_ESP=m
369CONFIG_IP_NF_MATCH_LENGTH=m
370CONFIG_IP_NF_MATCH_TTL=m
371CONFIG_IP_NF_MATCH_TCPMSS=m
372CONFIG_IP_NF_MATCH_HELPER=m
373CONFIG_IP_NF_MATCH_STATE=m
374CONFIG_IP_NF_MATCH_CONNTRACK=m
375CONFIG_IP_NF_MATCH_OWNER=m
376# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
377# CONFIG_IP_NF_MATCH_REALM is not set
378CONFIG_IP_NF_MATCH_SCTP=m
379CONFIG_IP_NF_MATCH_COMMENT=m
380CONFIG_IP_NF_MATCH_CONNMARK=m
381CONFIG_IP_NF_MATCH_HASHLIMIT=m
382CONFIG_IP_NF_FILTER=m
383CONFIG_IP_NF_TARGET_REJECT=m
384CONFIG_IP_NF_TARGET_LOG=m
385CONFIG_IP_NF_TARGET_ULOG=m
386CONFIG_IP_NF_TARGET_TCPMSS=m
387CONFIG_IP_NF_NAT=m
388CONFIG_IP_NF_NAT_NEEDED=y
389CONFIG_IP_NF_TARGET_MASQUERADE=m
390CONFIG_IP_NF_TARGET_REDIRECT=m
391CONFIG_IP_NF_TARGET_NETMAP=m
392CONFIG_IP_NF_TARGET_SAME=m
393CONFIG_IP_NF_NAT_SNMP_BASIC=m
394CONFIG_IP_NF_NAT_IRC=m
395CONFIG_IP_NF_NAT_FTP=m
396CONFIG_IP_NF_NAT_TFTP=m
397CONFIG_IP_NF_NAT_AMANDA=m
398CONFIG_IP_NF_MANGLE=m
399CONFIG_IP_NF_TARGET_TOS=m
400CONFIG_IP_NF_TARGET_ECN=m
401CONFIG_IP_NF_TARGET_DSCP=m
402CONFIG_IP_NF_TARGET_MARK=m
403CONFIG_IP_NF_TARGET_CLASSIFY=m
404CONFIG_IP_NF_TARGET_CONNMARK=m
405CONFIG_IP_NF_TARGET_CLUSTERIP=m
406CONFIG_IP_NF_RAW=m
407CONFIG_IP_NF_TARGET_NOTRACK=m
408CONFIG_IP_NF_ARPTABLES=m
409CONFIG_IP_NF_ARPFILTER=m
410CONFIG_IP_NF_ARP_MANGLE=m
411CONFIG_XFRM=y
412CONFIG_XFRM_USER=m
413
414#
415# SCTP Configuration (EXPERIMENTAL)
416#
417# CONFIG_IP_SCTP is not set
418# CONFIG_ATM is not set
419# CONFIG_BRIDGE is not set
420# CONFIG_VLAN_8021Q is not set
421# CONFIG_DECNET is not set
422CONFIG_LLC=m
423CONFIG_LLC2=m
424# CONFIG_IPX is not set
425# CONFIG_ATALK is not set
426# CONFIG_X25 is not set
427# CONFIG_LAPB is not set
428# CONFIG_NET_DIVERT is not set
429# CONFIG_ECONET is not set
430# CONFIG_WAN_ROUTER is not set
431
432#
433# QoS and/or fair queueing
434#
435# CONFIG_NET_SCHED is not set
436# CONFIG_NET_CLS_ROUTE is not set
437
438#
439# Network testing
440#
441CONFIG_NET_PKTGEN=m
442# CONFIG_NETPOLL is not set
443# CONFIG_NET_POLL_CONTROLLER is not set
444# CONFIG_HAMRADIO is not set
445# CONFIG_IRDA is not set
446# CONFIG_BT is not set
447CONFIG_NETDEVICES=y 534CONFIG_NETDEVICES=y
448CONFIG_DUMMY=m 535CONFIG_DUMMY=m
449CONFIG_BONDING=m 536CONFIG_BONDING=m
450# CONFIG_EQUALIZER is not set 537# CONFIG_EQUALIZER is not set
451CONFIG_TUN=m 538CONFIG_TUN=m
452# CONFIG_ETHERTAP is not set
453 539
454# 540#
455# ARCnet devices 541# ARCnet devices
@@ -457,12 +543,18 @@ CONFIG_TUN=m
457# CONFIG_ARCNET is not set 543# CONFIG_ARCNET is not set
458 544
459# 545#
546# PHY device support
547#
548# CONFIG_PHYLIB is not set
549
550#
460# Ethernet (10 or 100Mbit) 551# Ethernet (10 or 100Mbit)
461# 552#
462CONFIG_NET_ETHERNET=y 553CONFIG_NET_ETHERNET=y
463CONFIG_MII=m 554CONFIG_MII=m
464# CONFIG_HAPPYMEAL is not set 555# CONFIG_HAPPYMEAL is not set
465# CONFIG_SUNGEM is not set 556# CONFIG_SUNGEM is not set
557# CONFIG_CASSINI is not set
466CONFIG_NET_VENDOR_3COM=y 558CONFIG_NET_VENDOR_3COM=y
467CONFIG_VORTEX=m 559CONFIG_VORTEX=m
468CONFIG_TYPHOON=m 560CONFIG_TYPHOON=m
@@ -479,6 +571,7 @@ CONFIG_TULIP_MMIO=y
479# CONFIG_DE4X5 is not set 571# CONFIG_DE4X5 is not set
480# CONFIG_WINBOND_840 is not set 572# CONFIG_WINBOND_840 is not set
481# CONFIG_DM9102 is not set 573# CONFIG_DM9102 is not set
574# CONFIG_ULI526X is not set
482CONFIG_PCMCIA_XIRCOM=m 575CONFIG_PCMCIA_XIRCOM=m
483# CONFIG_PCMCIA_XIRTULIP is not set 576# CONFIG_PCMCIA_XIRTULIP is not set
484CONFIG_HP100=m 577CONFIG_HP100=m
@@ -489,48 +582,43 @@ CONFIG_PCNET32=m
489# CONFIG_B44 is not set 582# CONFIG_B44 is not set
490# CONFIG_FORCEDETH is not set 583# CONFIG_FORCEDETH is not set
491# CONFIG_DGRS is not set 584# CONFIG_DGRS is not set
492CONFIG_EEPRO100=m 585# CONFIG_EEPRO100 is not set
493CONFIG_E100=m 586CONFIG_E100=m
494CONFIG_E100_NAPI=y
495# CONFIG_FEALNX is not set 587# CONFIG_FEALNX is not set
496CONFIG_NATSEMI=m 588# CONFIG_NATSEMI is not set
497# CONFIG_NE2K_PCI is not set 589# CONFIG_NE2K_PCI is not set
498# CONFIG_8139CP is not set 590# CONFIG_8139CP is not set
499CONFIG_8139TOO=m 591# CONFIG_8139TOO is not set
500# CONFIG_8139TOO_PIO is not set
501# CONFIG_8139TOO_TUNE_TWISTER is not set
502# CONFIG_8139TOO_8129 is not set
503# CONFIG_8139_OLD_RX_RESET is not set
504# CONFIG_SIS900 is not set 592# CONFIG_SIS900 is not set
505CONFIG_EPIC100=m 593# CONFIG_EPIC100 is not set
506# CONFIG_SUNDANCE is not set 594# CONFIG_SUNDANCE is not set
507CONFIG_VIA_RHINE=m 595# CONFIG_VIA_RHINE is not set
508CONFIG_VIA_RHINE_MMIO=y
509 596
510# 597#
511# Ethernet (1000 Mbit) 598# Ethernet (1000 Mbit)
512# 599#
513CONFIG_ACENIC=m 600CONFIG_ACENIC=m
514CONFIG_ACENIC_OMIT_TIGON_I=y 601CONFIG_ACENIC_OMIT_TIGON_I=y
515CONFIG_DL2K=m 602# CONFIG_DL2K is not set
516CONFIG_E1000=m 603CONFIG_E1000=m
517CONFIG_E1000_NAPI=y 604CONFIG_E1000_NAPI=y
518# CONFIG_NS83820 is not set 605# CONFIG_NS83820 is not set
519# CONFIG_HAMACHI is not set 606# CONFIG_HAMACHI is not set
520# CONFIG_YELLOWFIN is not set 607# CONFIG_YELLOWFIN is not set
521# CONFIG_R8169 is not set 608# CONFIG_R8169 is not set
609# CONFIG_SIS190 is not set
610# CONFIG_SKGE is not set
522# CONFIG_SK98LIN is not set 611# CONFIG_SK98LIN is not set
523# CONFIG_VIA_VELOCITY is not set 612# CONFIG_VIA_VELOCITY is not set
524CONFIG_TIGON3=m 613CONFIG_TIGON3=m
614# CONFIG_BNX2 is not set
525 615
526# 616#
527# Ethernet (10000 Mbit) 617# Ethernet (10000 Mbit)
528# 618#
529CONFIG_IXGB=m 619# CONFIG_CHELSIO_T1 is not set
530CONFIG_IXGB_NAPI=y 620# CONFIG_IXGB is not set
531CONFIG_S2IO=m 621# CONFIG_S2IO is not set
532CONFIG_S2IO_NAPI=y
533# CONFIG_2BUFF_MODE is not set
534 622
535# 623#
536# Token Ring devices 624# Token Ring devices
@@ -560,6 +648,7 @@ CONFIG_PCMCIA_RAYCS=m
560CONFIG_HERMES=m 648CONFIG_HERMES=m
561CONFIG_PLX_HERMES=m 649CONFIG_PLX_HERMES=m
562CONFIG_TMD_HERMES=m 650CONFIG_TMD_HERMES=m
651# CONFIG_NORTEL_HERMES is not set
563CONFIG_PCI_HERMES=m 652CONFIG_PCI_HERMES=m
564# CONFIG_ATMEL is not set 653# CONFIG_ATMEL is not set
565 654
@@ -567,6 +656,7 @@ CONFIG_PCI_HERMES=m
567# Wireless 802.11b Pcmcia/Cardbus cards support 656# Wireless 802.11b Pcmcia/Cardbus cards support
568# 657#
569CONFIG_PCMCIA_HERMES=m 658CONFIG_PCMCIA_HERMES=m
659# CONFIG_PCMCIA_SPECTRUM is not set
570CONFIG_AIRO_CS=m 660CONFIG_AIRO_CS=m
571CONFIG_PCMCIA_WL3501=m 661CONFIG_PCMCIA_WL3501=m
572 662
@@ -574,6 +664,7 @@ CONFIG_PCMCIA_WL3501=m
574# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support 664# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
575# 665#
576# CONFIG_PRISM54 is not set 666# CONFIG_PRISM54 is not set
667# CONFIG_HOSTAP is not set
577CONFIG_NET_WIRELESS=y 668CONFIG_NET_WIRELESS=y
578 669
579# 670#
@@ -607,6 +698,8 @@ CONFIG_PPP_BSDCOMP=m
607# CONFIG_NET_FC is not set 698# CONFIG_NET_FC is not set
608# CONFIG_SHAPER is not set 699# CONFIG_SHAPER is not set
609# CONFIG_NETCONSOLE is not set 700# CONFIG_NETCONSOLE is not set
701# CONFIG_NETPOLL is not set
702# CONFIG_NET_POLL_CONTROLLER is not set
610 703
611# 704#
612# ISDN subsystem 705# ISDN subsystem
@@ -633,13 +726,6 @@ CONFIG_INPUT=y
633# CONFIG_INPUT_EVBUG is not set 726# CONFIG_INPUT_EVBUG is not set
634 727
635# 728#
636# Input I/O drivers
637#
638# CONFIG_GAMEPORT is not set
639CONFIG_SOUND_GAMEPORT=y
640# CONFIG_SERIO is not set
641
642#
643# Input Device Drivers 729# Input Device Drivers
644# 730#
645# CONFIG_INPUT_KEYBOARD is not set 731# CONFIG_INPUT_KEYBOARD is not set
@@ -649,6 +735,12 @@ CONFIG_SOUND_GAMEPORT=y
649# CONFIG_INPUT_MISC is not set 735# CONFIG_INPUT_MISC is not set
650 736
651# 737#
738# Hardware I/O ports
739#
740# CONFIG_SERIO is not set
741# CONFIG_GAMEPORT is not set
742
743#
652# Character devices 744# Character devices
653# 745#
654CONFIG_VT=y 746CONFIG_VT=y
@@ -667,7 +759,6 @@ CONFIG_SERIAL_8250_EXTENDED=y
667CONFIG_SERIAL_8250_MANY_PORTS=y 759CONFIG_SERIAL_8250_MANY_PORTS=y
668CONFIG_SERIAL_8250_SHARE_IRQ=y 760CONFIG_SERIAL_8250_SHARE_IRQ=y
669# CONFIG_SERIAL_8250_DETECT_IRQ is not set 761# CONFIG_SERIAL_8250_DETECT_IRQ is not set
670# CONFIG_SERIAL_8250_MULTIPORT is not set
671# CONFIG_SERIAL_8250_RSA is not set 762# CONFIG_SERIAL_8250_RSA is not set
672 763
673# 764#
@@ -677,6 +768,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
677CONFIG_PDC_CONSOLE=y 768CONFIG_PDC_CONSOLE=y
678CONFIG_SERIAL_CORE=y 769CONFIG_SERIAL_CORE=y
679CONFIG_SERIAL_CORE_CONSOLE=y 770CONFIG_SERIAL_CORE_CONSOLE=y
771# CONFIG_SERIAL_JSM is not set
680CONFIG_UNIX98_PTYS=y 772CONFIG_UNIX98_PTYS=y
681# CONFIG_LEGACY_PTYS is not set 773# CONFIG_LEGACY_PTYS is not set
682 774
@@ -708,6 +800,11 @@ CONFIG_RAW_DRIVER=y
708CONFIG_MAX_RAW_DEVS=256 800CONFIG_MAX_RAW_DEVS=256
709 801
710# 802#
803# TPM devices
804#
805# CONFIG_TCG_TPM is not set
806
807#
711# I2C support 808# I2C support
712# 809#
713# CONFIG_I2C is not set 810# CONFIG_I2C is not set
@@ -718,10 +815,20 @@ CONFIG_MAX_RAW_DEVS=256
718# CONFIG_W1 is not set 815# CONFIG_W1 is not set
719 816
720# 817#
818# Hardware Monitoring support
819#
820# CONFIG_HWMON is not set
821# CONFIG_HWMON_VID is not set
822
823#
721# Misc devices 824# Misc devices
722# 825#
723 826
724# 827#
828# Multimedia Capabilities Port drivers
829#
830
831#
725# Multimedia devices 832# Multimedia devices
726# 833#
727# CONFIG_VIDEO_DEV is not set 834# CONFIG_VIDEO_DEV is not set
@@ -742,6 +849,7 @@ CONFIG_MAX_RAW_DEVS=256
742CONFIG_DUMMY_CONSOLE=y 849CONFIG_DUMMY_CONSOLE=y
743CONFIG_DUMMY_CONSOLE_COLUMNS=160 850CONFIG_DUMMY_CONSOLE_COLUMNS=160
744CONFIG_DUMMY_CONSOLE_ROWS=64 851CONFIG_DUMMY_CONSOLE_ROWS=64
852# CONFIG_STI_CONSOLE is not set
745 853
746# 854#
747# Sound 855# Sound
@@ -751,13 +859,9 @@ CONFIG_DUMMY_CONSOLE_ROWS=64
751# 859#
752# USB support 860# USB support
753# 861#
754# CONFIG_USB is not set
755CONFIG_USB_ARCH_HAS_HCD=y 862CONFIG_USB_ARCH_HAS_HCD=y
756CONFIG_USB_ARCH_HAS_OHCI=y 863CONFIG_USB_ARCH_HAS_OHCI=y
757 864# CONFIG_USB is not set
758#
759# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
760#
761 865
762# 866#
763# USB Gadget Support 867# USB Gadget Support
@@ -772,17 +876,18 @@ CONFIG_USB_ARCH_HAS_OHCI=y
772# 876#
773# InfiniBand support 877# InfiniBand support
774# 878#
775CONFIG_INFINIBAND=m 879# CONFIG_INFINIBAND is not set
776CONFIG_INFINIBAND_MTHCA=m 880
777# CONFIG_INFINIBAND_MTHCA_DEBUG is not set 881#
778CONFIG_INFINIBAND_IPOIB=m 882# SN Devices
779# CONFIG_INFINIBAND_IPOIB_DEBUG is not set 883#
780 884
781# 885#
782# File systems 886# File systems
783# 887#
784CONFIG_EXT2_FS=y 888CONFIG_EXT2_FS=y
785# CONFIG_EXT2_FS_XATTR is not set 889# CONFIG_EXT2_FS_XATTR is not set
890# CONFIG_EXT2_FS_XIP is not set
786CONFIG_EXT3_FS=y 891CONFIG_EXT3_FS=y
787# CONFIG_EXT3_FS_XATTR is not set 892# CONFIG_EXT3_FS_XATTR is not set
788CONFIG_JBD=y 893CONFIG_JBD=y
@@ -794,22 +899,20 @@ CONFIG_JFS_FS=m
794# CONFIG_JFS_DEBUG is not set 899# CONFIG_JFS_DEBUG is not set
795# CONFIG_JFS_STATISTICS is not set 900# CONFIG_JFS_STATISTICS is not set
796CONFIG_FS_POSIX_ACL=y 901CONFIG_FS_POSIX_ACL=y
797
798#
799# XFS support
800#
801CONFIG_XFS_FS=m 902CONFIG_XFS_FS=m
802CONFIG_XFS_EXPORT=y 903CONFIG_XFS_EXPORT=y
803# CONFIG_XFS_RT is not set
804# CONFIG_XFS_QUOTA is not set 904# CONFIG_XFS_QUOTA is not set
805# CONFIG_XFS_SECURITY is not set 905# CONFIG_XFS_SECURITY is not set
806# CONFIG_XFS_POSIX_ACL is not set 906# CONFIG_XFS_POSIX_ACL is not set
907# CONFIG_XFS_RT is not set
807# CONFIG_MINIX_FS is not set 908# CONFIG_MINIX_FS is not set
808# CONFIG_ROMFS_FS is not set 909# CONFIG_ROMFS_FS is not set
910CONFIG_INOTIFY=y
809# CONFIG_QUOTA is not set 911# CONFIG_QUOTA is not set
810CONFIG_DNOTIFY=y 912CONFIG_DNOTIFY=y
811# CONFIG_AUTOFS_FS is not set 913# CONFIG_AUTOFS_FS is not set
812CONFIG_AUTOFS4_FS=y 914CONFIG_AUTOFS4_FS=y
915# CONFIG_FUSE_FS is not set
813 916
814# 917#
815# CD-ROM/DVD Filesystems 918# CD-ROM/DVD Filesystems
@@ -836,13 +939,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
836CONFIG_PROC_FS=y 939CONFIG_PROC_FS=y
837CONFIG_PROC_KCORE=y 940CONFIG_PROC_KCORE=y
838CONFIG_SYSFS=y 941CONFIG_SYSFS=y
839# CONFIG_DEVFS_FS is not set
840# CONFIG_DEVPTS_FS_XATTR is not set
841CONFIG_TMPFS=y 942CONFIG_TMPFS=y
842# CONFIG_TMPFS_XATTR is not set
843# CONFIG_HUGETLBFS is not set 943# CONFIG_HUGETLBFS is not set
844# CONFIG_HUGETLB_PAGE is not set 944# CONFIG_HUGETLB_PAGE is not set
845CONFIG_RAMFS=y 945CONFIG_RAMFS=y
946# CONFIG_RELAYFS_FS is not set
846 947
847# 948#
848# Miscellaneous filesystems 949# Miscellaneous filesystems
@@ -867,15 +968,18 @@ CONFIG_UFS_FS=m
867# 968#
868CONFIG_NFS_FS=m 969CONFIG_NFS_FS=m
869CONFIG_NFS_V3=y 970CONFIG_NFS_V3=y
971# CONFIG_NFS_V3_ACL is not set
870CONFIG_NFS_V4=y 972CONFIG_NFS_V4=y
871CONFIG_NFS_DIRECTIO=y 973CONFIG_NFS_DIRECTIO=y
872CONFIG_NFSD=m 974CONFIG_NFSD=m
873CONFIG_NFSD_V3=y 975CONFIG_NFSD_V3=y
976# CONFIG_NFSD_V3_ACL is not set
874CONFIG_NFSD_V4=y 977CONFIG_NFSD_V4=y
875CONFIG_NFSD_TCP=y 978CONFIG_NFSD_TCP=y
876CONFIG_LOCKD=m 979CONFIG_LOCKD=m
877CONFIG_LOCKD_V4=y 980CONFIG_LOCKD_V4=y
878CONFIG_EXPORTFS=m 981CONFIG_EXPORTFS=m
982CONFIG_NFS_COMMON=y
879CONFIG_SUNRPC=m 983CONFIG_SUNRPC=m
880CONFIG_SUNRPC_GSS=m 984CONFIG_SUNRPC_GSS=m
881CONFIG_RPCSEC_GSS_KRB5=m 985CONFIG_RPCSEC_GSS_KRB5=m
@@ -890,6 +994,7 @@ CONFIG_CIFS=m
890# CONFIG_NCP_FS is not set 994# CONFIG_NCP_FS is not set
891# CONFIG_CODA_FS is not set 995# CONFIG_CODA_FS is not set
892# CONFIG_AFS_FS is not set 996# CONFIG_AFS_FS is not set
997# CONFIG_9P_FS is not set
893 998
894# 999#
895# Partition Types 1000# Partition Types
@@ -906,15 +1011,15 @@ CONFIG_NLS_CODEPAGE_437=m
906# CONFIG_NLS_CODEPAGE_737 is not set 1011# CONFIG_NLS_CODEPAGE_737 is not set
907# CONFIG_NLS_CODEPAGE_775 is not set 1012# CONFIG_NLS_CODEPAGE_775 is not set
908CONFIG_NLS_CODEPAGE_850=m 1013CONFIG_NLS_CODEPAGE_850=m
909CONFIG_NLS_CODEPAGE_852=m 1014# CONFIG_NLS_CODEPAGE_852 is not set
910# CONFIG_NLS_CODEPAGE_855 is not set 1015# CONFIG_NLS_CODEPAGE_855 is not set
911# CONFIG_NLS_CODEPAGE_857 is not set 1016# CONFIG_NLS_CODEPAGE_857 is not set
912# CONFIG_NLS_CODEPAGE_860 is not set 1017# CONFIG_NLS_CODEPAGE_860 is not set
913# CONFIG_NLS_CODEPAGE_861 is not set 1018# CONFIG_NLS_CODEPAGE_861 is not set
914# CONFIG_NLS_CODEPAGE_862 is not set 1019# CONFIG_NLS_CODEPAGE_862 is not set
915CONFIG_NLS_CODEPAGE_863=m 1020# CONFIG_NLS_CODEPAGE_863 is not set
916# CONFIG_NLS_CODEPAGE_864 is not set 1021# CONFIG_NLS_CODEPAGE_864 is not set
917CONFIG_NLS_CODEPAGE_865=m 1022# CONFIG_NLS_CODEPAGE_865 is not set
918# CONFIG_NLS_CODEPAGE_866 is not set 1023# CONFIG_NLS_CODEPAGE_866 is not set
919# CONFIG_NLS_CODEPAGE_869 is not set 1024# CONFIG_NLS_CODEPAGE_869 is not set
920# CONFIG_NLS_CODEPAGE_936 is not set 1025# CONFIG_NLS_CODEPAGE_936 is not set
@@ -926,10 +1031,10 @@ CONFIG_NLS_CODEPAGE_865=m
926# CONFIG_NLS_CODEPAGE_1250 is not set 1031# CONFIG_NLS_CODEPAGE_1250 is not set
927# CONFIG_NLS_CODEPAGE_1251 is not set 1032# CONFIG_NLS_CODEPAGE_1251 is not set
928# CONFIG_NLS_ASCII is not set 1033# CONFIG_NLS_ASCII is not set
929CONFIG_NLS_ISO8859_1=m 1034# CONFIG_NLS_ISO8859_1 is not set
930CONFIG_NLS_ISO8859_2=m 1035# CONFIG_NLS_ISO8859_2 is not set
931CONFIG_NLS_ISO8859_3=m 1036# CONFIG_NLS_ISO8859_3 is not set
932CONFIG_NLS_ISO8859_4=m 1037# CONFIG_NLS_ISO8859_4 is not set
933# CONFIG_NLS_ISO8859_5 is not set 1038# CONFIG_NLS_ISO8859_5 is not set
934# CONFIG_NLS_ISO8859_6 is not set 1039# CONFIG_NLS_ISO8859_6 is not set
935# CONFIG_NLS_ISO8859_7 is not set 1040# CONFIG_NLS_ISO8859_7 is not set
@@ -950,11 +1055,15 @@ CONFIG_OPROFILE=m
950# 1055#
951# Kernel hacking 1056# Kernel hacking
952# 1057#
1058# CONFIG_PRINTK_TIME is not set
953CONFIG_DEBUG_KERNEL=y 1059CONFIG_DEBUG_KERNEL=y
954CONFIG_MAGIC_SYSRQ=y 1060CONFIG_MAGIC_SYSRQ=y
1061CONFIG_LOG_BUF_SHIFT=16
1062CONFIG_DETECT_SOFTLOCKUP=y
955# CONFIG_SCHEDSTATS is not set 1063# CONFIG_SCHEDSTATS is not set
956# CONFIG_DEBUG_SLAB is not set 1064# CONFIG_DEBUG_SLAB is not set
957# CONFIG_DEBUG_SPINLOCK is not set 1065# CONFIG_DEBUG_SPINLOCK is not set
1066# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
958# CONFIG_DEBUG_KOBJECT is not set 1067# CONFIG_DEBUG_KOBJECT is not set
959# CONFIG_DEBUG_INFO is not set 1068# CONFIG_DEBUG_INFO is not set
960# CONFIG_DEBUG_IOREMAP is not set 1069# CONFIG_DEBUG_IOREMAP is not set
@@ -974,25 +1083,26 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y
974CONFIG_CRYPTO=y 1083CONFIG_CRYPTO=y
975CONFIG_CRYPTO_HMAC=y 1084CONFIG_CRYPTO_HMAC=y
976CONFIG_CRYPTO_NULL=m 1085CONFIG_CRYPTO_NULL=m
977CONFIG_CRYPTO_MD4=m 1086# CONFIG_CRYPTO_MD4 is not set
978CONFIG_CRYPTO_MD5=m 1087CONFIG_CRYPTO_MD5=y
979CONFIG_CRYPTO_SHA1=m 1088CONFIG_CRYPTO_SHA1=m
980CONFIG_CRYPTO_SHA256=m 1089# CONFIG_CRYPTO_SHA256 is not set
981CONFIG_CRYPTO_SHA512=m 1090# CONFIG_CRYPTO_SHA512 is not set
982CONFIG_CRYPTO_WP512=m 1091# CONFIG_CRYPTO_WP512 is not set
1092# CONFIG_CRYPTO_TGR192 is not set
983CONFIG_CRYPTO_DES=m 1093CONFIG_CRYPTO_DES=m
984CONFIG_CRYPTO_BLOWFISH=m 1094CONFIG_CRYPTO_BLOWFISH=m
985CONFIG_CRYPTO_TWOFISH=m 1095# CONFIG_CRYPTO_TWOFISH is not set
986CONFIG_CRYPTO_SERPENT=m 1096# CONFIG_CRYPTO_SERPENT is not set
987CONFIG_CRYPTO_AES=m 1097# CONFIG_CRYPTO_AES is not set
988CONFIG_CRYPTO_CAST5=m 1098# CONFIG_CRYPTO_CAST5 is not set
989CONFIG_CRYPTO_CAST6=m 1099# CONFIG_CRYPTO_CAST6 is not set
990CONFIG_CRYPTO_TEA=m 1100# CONFIG_CRYPTO_TEA is not set
991CONFIG_CRYPTO_ARC4=m 1101# CONFIG_CRYPTO_ARC4 is not set
992CONFIG_CRYPTO_KHAZAD=m 1102# CONFIG_CRYPTO_KHAZAD is not set
993CONFIG_CRYPTO_ANUBIS=m 1103# CONFIG_CRYPTO_ANUBIS is not set
994CONFIG_CRYPTO_DEFLATE=m 1104CONFIG_CRYPTO_DEFLATE=m
995CONFIG_CRYPTO_MICHAEL_MIC=m 1105# CONFIG_CRYPTO_MICHAEL_MIC is not set
996CONFIG_CRYPTO_CRC32C=m 1106CONFIG_CRYPTO_CRC32C=m
997CONFIG_CRYPTO_TEST=m 1107CONFIG_CRYPTO_TEST=m
998 1108
@@ -1004,6 +1114,7 @@ CONFIG_CRYPTO_TEST=m
1004# Library routines 1114# Library routines
1005# 1115#
1006CONFIG_CRC_CCITT=m 1116CONFIG_CRC_CCITT=m
1117# CONFIG_CRC16 is not set
1007CONFIG_CRC32=y 1118CONFIG_CRC32=y
1008CONFIG_LIBCRC32C=m 1119CONFIG_LIBCRC32C=m
1009CONFIG_ZLIB_INFLATE=m 1120CONFIG_ZLIB_INFLATE=m
diff --git a/arch/parisc/configs/b180_defconfig b/arch/parisc/configs/b180_defconfig
index 46c9511f3229..8819e7e6ae3f 100644
--- a/arch/parisc/configs/b180_defconfig
+++ b/arch/parisc/configs/b180_defconfig
@@ -1,12 +1,15 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.10-pa5 3# Linux kernel version: 2.6.14-rc5-pa1
4# Wed Jan 5 13:35:54 2005 4# Fri Oct 21 23:06:10 2005
5# 5#
6CONFIG_PARISC=y 6CONFIG_PARISC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
8CONFIG_STACK_GROWSUP=y 8CONFIG_STACK_GROWSUP=y
9CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y
11CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y
10 13
11# 14#
12# Code maturity level options 15# Code maturity level options
@@ -14,33 +17,39 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
14# CONFIG_EXPERIMENTAL is not set 17# CONFIG_EXPERIMENTAL is not set
15CONFIG_CLEAN_COMPILE=y 18CONFIG_CLEAN_COMPILE=y
16CONFIG_BROKEN_ON_SMP=y 19CONFIG_BROKEN_ON_SMP=y
20CONFIG_INIT_ENV_ARG_LIMIT=32
17 21
18# 22#
19# General setup 23# General setup
20# 24#
21CONFIG_LOCALVERSION="" 25CONFIG_LOCALVERSION=""
26# CONFIG_LOCALVERSION_AUTO is not set
22CONFIG_SWAP=y 27CONFIG_SWAP=y
23CONFIG_SYSVIPC=y 28CONFIG_SYSVIPC=y
24# CONFIG_BSD_PROCESS_ACCT is not set 29# CONFIG_BSD_PROCESS_ACCT is not set
25CONFIG_SYSCTL=y 30CONFIG_SYSCTL=y
26# CONFIG_AUDIT is not set 31# CONFIG_AUDIT is not set
27CONFIG_LOG_BUF_SHIFT=16
28# CONFIG_HOTPLUG is not set 32# CONFIG_HOTPLUG is not set
29CONFIG_KOBJECT_UEVENT=y 33CONFIG_KOBJECT_UEVENT=y
30# CONFIG_IKCONFIG is not set 34CONFIG_IKCONFIG=y
35CONFIG_IKCONFIG_PROC=y
36CONFIG_INITRAMFS_SOURCE=""
31# CONFIG_EMBEDDED is not set 37# CONFIG_EMBEDDED is not set
32CONFIG_KALLSYMS=y 38CONFIG_KALLSYMS=y
33# CONFIG_KALLSYMS_ALL is not set 39# CONFIG_KALLSYMS_ALL is not set
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 40# CONFIG_KALLSYMS_EXTRA_PASS is not set
41CONFIG_PRINTK=y
42CONFIG_BUG=y
43CONFIG_BASE_FULL=y
35CONFIG_FUTEX=y 44CONFIG_FUTEX=y
36CONFIG_EPOLL=y 45CONFIG_EPOLL=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
38CONFIG_SHMEM=y 46CONFIG_SHMEM=y
39CONFIG_CC_ALIGN_FUNCTIONS=0 47CONFIG_CC_ALIGN_FUNCTIONS=0
40CONFIG_CC_ALIGN_LABELS=0 48CONFIG_CC_ALIGN_LABELS=0
41CONFIG_CC_ALIGN_LOOPS=0 49CONFIG_CC_ALIGN_LOOPS=0
42CONFIG_CC_ALIGN_JUMPS=0 50CONFIG_CC_ALIGN_JUMPS=0
43# CONFIG_TINY_SHMEM is not set 51# CONFIG_TINY_SHMEM is not set
52CONFIG_BASE_SMALL=0
44 53
45# 54#
46# Loadable module support 55# Loadable module support
@@ -60,8 +69,14 @@ CONFIG_PA7100LC=y
60# CONFIG_PA7300LC is not set 69# CONFIG_PA7300LC is not set
61# CONFIG_PA8X00 is not set 70# CONFIG_PA8X00 is not set
62CONFIG_PA11=y 71CONFIG_PA11=y
63# CONFIG_64BIT is not set
64# CONFIG_SMP is not set 72# CONFIG_SMP is not set
73# CONFIG_HZ_100 is not set
74CONFIG_HZ_250=y
75# CONFIG_HZ_1000 is not set
76CONFIG_HZ=250
77CONFIG_FLATMEM=y
78CONFIG_FLAT_NODE_MEM_MAP=y
79# CONFIG_SPARSEMEM_STATIC is not set
65# CONFIG_PREEMPT is not set 80# CONFIG_PREEMPT is not set
66# CONFIG_HPUX is not set 81# CONFIG_HPUX is not set
67 82
@@ -78,11 +93,25 @@ CONFIG_EISA_NAMES=y
78CONFIG_ISA=y 93CONFIG_ISA=y
79CONFIG_PCI=y 94CONFIG_PCI=y
80CONFIG_PCI_LEGACY_PROC=y 95CONFIG_PCI_LEGACY_PROC=y
81CONFIG_PCI_NAMES=y 96# CONFIG_PCI_DEBUG is not set
82CONFIG_GSC_DINO=y 97CONFIG_GSC_DINO=y
83# CONFIG_PCI_LBA is not set 98# CONFIG_PCI_LBA is not set
99
100#
101# PCCARD (PCMCIA/CardBus) support
102#
103# CONFIG_PCCARD is not set
104
105#
106# PCI Hotplug Support
107#
108
109#
110# PA-RISC specific drivers
111#
84CONFIG_CHASSIS_LCD_LED=y 112CONFIG_CHASSIS_LCD_LED=y
85# CONFIG_PDC_CHASSIS is not set 113# CONFIG_PDC_CHASSIS is not set
114CONFIG_PDC_STABLE=y
86 115
87# 116#
88# Executable file formats 117# Executable file formats
@@ -91,6 +120,64 @@ CONFIG_BINFMT_ELF=y
91# CONFIG_BINFMT_MISC is not set 120# CONFIG_BINFMT_MISC is not set
92 121
93# 122#
123# Networking
124#
125CONFIG_NET=y
126
127#
128# Networking options
129#
130CONFIG_PACKET=y
131CONFIG_PACKET_MMAP=y
132CONFIG_UNIX=y
133# CONFIG_NET_KEY is not set
134CONFIG_INET=y
135CONFIG_IP_MULTICAST=y
136# CONFIG_IP_ADVANCED_ROUTER is not set
137CONFIG_IP_FIB_HASH=y
138CONFIG_IP_PNP=y
139# CONFIG_IP_PNP_DHCP is not set
140CONFIG_IP_PNP_BOOTP=y
141# CONFIG_IP_PNP_RARP is not set
142# CONFIG_NET_IPIP is not set
143# CONFIG_NET_IPGRE is not set
144# CONFIG_IP_MROUTE is not set
145# CONFIG_SYN_COOKIES is not set
146# CONFIG_INET_AH is not set
147# CONFIG_INET_ESP is not set
148# CONFIG_INET_IPCOMP is not set
149# CONFIG_INET_TUNNEL is not set
150CONFIG_INET_DIAG=y
151CONFIG_INET_TCP_DIAG=y
152# CONFIG_TCP_CONG_ADVANCED is not set
153CONFIG_TCP_CONG_BIC=y
154CONFIG_IPV6=y
155# CONFIG_IPV6_PRIVACY is not set
156# CONFIG_INET6_AH is not set
157# CONFIG_INET6_ESP is not set
158# CONFIG_INET6_IPCOMP is not set
159# CONFIG_INET6_TUNNEL is not set
160# CONFIG_IPV6_TUNNEL is not set
161# CONFIG_NETFILTER is not set
162# CONFIG_BRIDGE is not set
163# CONFIG_VLAN_8021Q is not set
164# CONFIG_DECNET is not set
165# CONFIG_LLC2 is not set
166# CONFIG_IPX is not set
167# CONFIG_ATALK is not set
168# CONFIG_NET_SCHED is not set
169# CONFIG_NET_CLS_ROUTE is not set
170
171#
172# Network testing
173#
174# CONFIG_NET_PKTGEN is not set
175# CONFIG_HAMRADIO is not set
176# CONFIG_IRDA is not set
177# CONFIG_BT is not set
178# CONFIG_IEEE80211 is not set
179
180#
94# Device Drivers 181# Device Drivers
95# 182#
96 183
@@ -99,9 +186,15 @@ CONFIG_BINFMT_ELF=y
99# 186#
100CONFIG_STANDALONE=y 187CONFIG_STANDALONE=y
101# CONFIG_PREVENT_FIRMWARE_BUILD is not set 188# CONFIG_PREVENT_FIRMWARE_BUILD is not set
189# CONFIG_FW_LOADER is not set
102# CONFIG_DEBUG_DRIVER is not set 190# CONFIG_DEBUG_DRIVER is not set
103 191
104# 192#
193# Connector - unified userspace <-> kernelspace linker
194#
195# CONFIG_CONNECTOR is not set
196
197#
105# Memory Technology Devices (MTD) 198# Memory Technology Devices (MTD)
106# 199#
107# CONFIG_MTD is not set 200# CONFIG_MTD is not set
@@ -111,10 +204,8 @@ CONFIG_STANDALONE=y
111# 204#
112CONFIG_PARPORT=y 205CONFIG_PARPORT=y
113CONFIG_PARPORT_PC=y 206CONFIG_PARPORT_PC=y
114CONFIG_PARPORT_PC_CML1=y
115# CONFIG_PARPORT_SERIAL is not set 207# CONFIG_PARPORT_SERIAL is not set
116CONFIG_PARPORT_GSC=y 208CONFIG_PARPORT_GSC=y
117# CONFIG_PARPORT_OTHER is not set
118# CONFIG_PARPORT_1284 is not set 209# CONFIG_PARPORT_1284 is not set
119 210
120# 211#
@@ -125,19 +216,17 @@ CONFIG_PARPORT_GSC=y
125# 216#
126# Block devices 217# Block devices
127# 218#
128# CONFIG_BLK_DEV_FD is not set
129# CONFIG_BLK_DEV_XD is not set
130# CONFIG_PARIDE is not set 219# CONFIG_PARIDE is not set
131# CONFIG_BLK_CPQ_DA is not set 220# CONFIG_BLK_CPQ_DA is not set
132# CONFIG_BLK_CPQ_CISS_DA is not set 221# CONFIG_BLK_CPQ_CISS_DA is not set
133# CONFIG_BLK_DEV_DAC960 is not set 222# CONFIG_BLK_DEV_DAC960 is not set
223# CONFIG_BLK_DEV_COW_COMMON is not set
134CONFIG_BLK_DEV_LOOP=y 224CONFIG_BLK_DEV_LOOP=y
135CONFIG_BLK_DEV_CRYPTOLOOP=y 225CONFIG_BLK_DEV_CRYPTOLOOP=y
136# CONFIG_BLK_DEV_NBD is not set 226# CONFIG_BLK_DEV_NBD is not set
137# CONFIG_BLK_DEV_SX8 is not set 227# CONFIG_BLK_DEV_SX8 is not set
138# CONFIG_BLK_DEV_RAM is not set 228# CONFIG_BLK_DEV_RAM is not set
139CONFIG_BLK_DEV_RAM_COUNT=16 229CONFIG_BLK_DEV_RAM_COUNT=16
140CONFIG_INITRAMFS_SOURCE=""
141CONFIG_CDROM_PKTCDVD=m 230CONFIG_CDROM_PKTCDVD=m
142CONFIG_CDROM_PKTCDVD_BUFFERS=8 231CONFIG_CDROM_PKTCDVD_BUFFERS=8
143# CONFIG_CDROM_PKTCDVD_WCACHE is not set 232# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -149,6 +238,7 @@ CONFIG_IOSCHED_NOOP=y
149CONFIG_IOSCHED_AS=y 238CONFIG_IOSCHED_AS=y
150CONFIG_IOSCHED_DEADLINE=y 239CONFIG_IOSCHED_DEADLINE=y
151CONFIG_IOSCHED_CFQ=y 240CONFIG_IOSCHED_CFQ=y
241CONFIG_ATA_OVER_ETH=y
152 242
153# 243#
154# ATA/ATAPI/MFM/RLL support 244# ATA/ATAPI/MFM/RLL support
@@ -158,6 +248,7 @@ CONFIG_IOSCHED_CFQ=y
158# 248#
159# SCSI device support 249# SCSI device support
160# 250#
251# CONFIG_RAID_ATTRS is not set
161CONFIG_SCSI=y 252CONFIG_SCSI=y
162CONFIG_SCSI_PROC_FS=y 253CONFIG_SCSI_PROC_FS=y
163 254
@@ -170,6 +261,7 @@ CONFIG_CHR_DEV_ST=y
170CONFIG_BLK_DEV_SR=y 261CONFIG_BLK_DEV_SR=y
171# CONFIG_BLK_DEV_SR_VENDOR is not set 262# CONFIG_BLK_DEV_SR_VENDOR is not set
172CONFIG_CHR_DEV_SG=y 263CONFIG_CHR_DEV_SG=y
264# CONFIG_CHR_DEV_SCH is not set
173 265
174# 266#
175# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 267# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
@@ -183,16 +275,16 @@ CONFIG_CHR_DEV_SG=y
183# 275#
184CONFIG_SCSI_SPI_ATTRS=y 276CONFIG_SCSI_SPI_ATTRS=y
185# CONFIG_SCSI_FC_ATTRS is not set 277# CONFIG_SCSI_FC_ATTRS is not set
278# CONFIG_SCSI_ISCSI_ATTRS is not set
279# CONFIG_SCSI_SAS_ATTRS is not set
186 280
187# 281#
188# SCSI low-level drivers 282# SCSI low-level drivers
189# 283#
190# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 284# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
191# CONFIG_SCSI_3W_9XXX is not set 285# CONFIG_SCSI_3W_9XXX is not set
192# CONFIG_SCSI_7000FASST is not set
193# CONFIG_SCSI_ACARD is not set 286# CONFIG_SCSI_ACARD is not set
194# CONFIG_SCSI_AHA152X is not set 287# CONFIG_SCSI_AHA152X is not set
195# CONFIG_SCSI_AHA1542 is not set
196# CONFIG_SCSI_AHA1740 is not set 288# CONFIG_SCSI_AHA1740 is not set
197# CONFIG_SCSI_AACRAID is not set 289# CONFIG_SCSI_AACRAID is not set
198# CONFIG_SCSI_AIC7XXX is not set 290# CONFIG_SCSI_AIC7XXX is not set
@@ -202,14 +294,11 @@ CONFIG_SCSI_SPI_ATTRS=y
202# CONFIG_SCSI_IN2000 is not set 294# CONFIG_SCSI_IN2000 is not set
203# CONFIG_MEGARAID_NEWGEN is not set 295# CONFIG_MEGARAID_NEWGEN is not set
204# CONFIG_MEGARAID_LEGACY is not set 296# CONFIG_MEGARAID_LEGACY is not set
297# CONFIG_MEGARAID_SAS is not set
205# CONFIG_SCSI_SATA is not set 298# CONFIG_SCSI_SATA is not set
206# CONFIG_SCSI_BUSLOGIC is not set
207# CONFIG_SCSI_DMX3191D is not set 299# CONFIG_SCSI_DMX3191D is not set
208# CONFIG_SCSI_DTC3280 is not set 300# CONFIG_SCSI_DTC3280 is not set
209# CONFIG_SCSI_EATA is not set
210# CONFIG_SCSI_EATA_PIO is not set
211# CONFIG_SCSI_FUTURE_DOMAIN is not set 301# CONFIG_SCSI_FUTURE_DOMAIN is not set
212# CONFIG_SCSI_GDTH is not set
213# CONFIG_SCSI_GENERIC_NCR5380 is not set 302# CONFIG_SCSI_GENERIC_NCR5380 is not set
214# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set 303# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
215# CONFIG_SCSI_IPS is not set 304# CONFIG_SCSI_IPS is not set
@@ -219,7 +308,6 @@ CONFIG_SCSI_SPI_ATTRS=y
219# CONFIG_SCSI_IMM is not set 308# CONFIG_SCSI_IMM is not set
220# CONFIG_SCSI_NCR53C406A is not set 309# CONFIG_SCSI_NCR53C406A is not set
221CONFIG_SCSI_LASI700=y 310CONFIG_SCSI_LASI700=y
222CONFIG_53C700_MEM_MAPPED=y
223CONFIG_53C700_LE_ON_BE=y 311CONFIG_53C700_LE_ON_BE=y
224CONFIG_SCSI_SYM53C8XX_2=y 312CONFIG_SCSI_SYM53C8XX_2=y
225CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 313CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
@@ -231,7 +319,6 @@ CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
231# CONFIG_SCSI_PAS16 is not set 319# CONFIG_SCSI_PAS16 is not set
232# CONFIG_SCSI_PSI240I is not set 320# CONFIG_SCSI_PSI240I is not set
233# CONFIG_SCSI_QLOGIC_FAS is not set 321# CONFIG_SCSI_QLOGIC_FAS is not set
234# CONFIG_SCSI_QLOGIC_ISP is not set
235# CONFIG_SCSI_QLOGIC_FC is not set 322# CONFIG_SCSI_QLOGIC_FC is not set
236# CONFIG_SCSI_QLOGIC_1280 is not set 323# CONFIG_SCSI_QLOGIC_1280 is not set
237CONFIG_SCSI_QLA2XXX=y 324CONFIG_SCSI_QLA2XXX=y
@@ -240,12 +327,12 @@ CONFIG_SCSI_QLA2XXX=y
240# CONFIG_SCSI_QLA2300 is not set 327# CONFIG_SCSI_QLA2300 is not set
241# CONFIG_SCSI_QLA2322 is not set 328# CONFIG_SCSI_QLA2322 is not set
242# CONFIG_SCSI_QLA6312 is not set 329# CONFIG_SCSI_QLA6312 is not set
243# CONFIG_SCSI_QLA6322 is not set 330# CONFIG_SCSI_QLA24XX is not set
331# CONFIG_SCSI_LPFC is not set
244# CONFIG_SCSI_SIM710 is not set 332# CONFIG_SCSI_SIM710 is not set
245# CONFIG_SCSI_SYM53C416 is not set 333# CONFIG_SCSI_SYM53C416 is not set
246# CONFIG_SCSI_DC390T is not set 334# CONFIG_SCSI_DC390T is not set
247# CONFIG_SCSI_T128 is not set 335# CONFIG_SCSI_T128 is not set
248# CONFIG_SCSI_U14_34F is not set
249# CONFIG_SCSI_NSP32 is not set 336# CONFIG_SCSI_NSP32 is not set
250# CONFIG_SCSI_DEBUG is not set 337# CONFIG_SCSI_DEBUG is not set
251 338
@@ -263,6 +350,7 @@ CONFIG_MD_LINEAR=y
263CONFIG_MD_RAID0=y 350CONFIG_MD_RAID0=y
264CONFIG_MD_RAID1=y 351CONFIG_MD_RAID1=y
265CONFIG_MD_RAID5=y 352CONFIG_MD_RAID5=y
353CONFIG_MD_RAID6=y
266# CONFIG_MD_MULTIPATH is not set 354# CONFIG_MD_MULTIPATH is not set
267# CONFIG_MD_FAULTY is not set 355# CONFIG_MD_FAULTY is not set
268# CONFIG_BLK_DEV_DM is not set 356# CONFIG_BLK_DEV_DM is not set
@@ -271,6 +359,9 @@ CONFIG_MD_RAID5=y
271# Fusion MPT device support 359# Fusion MPT device support
272# 360#
273# CONFIG_FUSION is not set 361# CONFIG_FUSION is not set
362# CONFIG_FUSION_SPI is not set
363# CONFIG_FUSION_FC is not set
364# CONFIG_FUSION_SAS is not set
274 365
275# 366#
276# IEEE 1394 (FireWire) support 367# IEEE 1394 (FireWire) support
@@ -283,58 +374,8 @@ CONFIG_MD_RAID5=y
283# CONFIG_I2O is not set 374# CONFIG_I2O is not set
284 375
285# 376#
286# Networking support 377# Network device support
287#
288CONFIG_NET=y
289
290#
291# Networking options
292#
293CONFIG_PACKET=y
294CONFIG_PACKET_MMAP=y
295CONFIG_NETLINK_DEV=y
296CONFIG_UNIX=y
297# CONFIG_NET_KEY is not set
298CONFIG_INET=y
299CONFIG_IP_MULTICAST=y
300# CONFIG_IP_ADVANCED_ROUTER is not set
301CONFIG_IP_PNP=y
302# CONFIG_IP_PNP_DHCP is not set
303CONFIG_IP_PNP_BOOTP=y
304# CONFIG_IP_PNP_RARP is not set
305# CONFIG_NET_IPIP is not set
306# CONFIG_NET_IPGRE is not set
307# CONFIG_IP_MROUTE is not set
308# CONFIG_SYN_COOKIES is not set
309# CONFIG_INET_AH is not set
310# CONFIG_INET_ESP is not set
311# CONFIG_INET_IPCOMP is not set
312# CONFIG_INET_TUNNEL is not set
313CONFIG_IP_TCPDIAG=y
314# CONFIG_IP_TCPDIAG_IPV6 is not set
315# CONFIG_NETFILTER is not set
316# CONFIG_BRIDGE is not set
317# CONFIG_VLAN_8021Q is not set
318# CONFIG_DECNET is not set
319# CONFIG_LLC2 is not set
320# CONFIG_IPX is not set
321# CONFIG_ATALK is not set
322
323#
324# QoS and/or fair queueing
325#
326# CONFIG_NET_SCHED is not set
327# CONFIG_NET_CLS_ROUTE is not set
328
329#
330# Network testing
331# 378#
332# CONFIG_NET_PKTGEN is not set
333# CONFIG_NETPOLL is not set
334# CONFIG_NET_POLL_CONTROLLER is not set
335# CONFIG_HAMRADIO is not set
336# CONFIG_IRDA is not set
337# CONFIG_BT is not set
338CONFIG_NETDEVICES=y 379CONFIG_NETDEVICES=y
339# CONFIG_DUMMY is not set 380# CONFIG_DUMMY is not set
340# CONFIG_BONDING is not set 381# CONFIG_BONDING is not set
@@ -347,6 +388,11 @@ CONFIG_NETDEVICES=y
347# CONFIG_ARCNET is not set 388# CONFIG_ARCNET is not set
348 389
349# 390#
391# PHY device support
392#
393# CONFIG_PHYLIB is not set
394
395#
350# Ethernet (10 or 100Mbit) 396# Ethernet (10 or 100Mbit)
351# 397#
352CONFIG_NET_ETHERNET=y 398CONFIG_NET_ETHERNET=y
@@ -354,8 +400,8 @@ CONFIG_NET_ETHERNET=y
354# CONFIG_LASI_82596 is not set 400# CONFIG_LASI_82596 is not set
355# CONFIG_HAPPYMEAL is not set 401# CONFIG_HAPPYMEAL is not set
356# CONFIG_SUNGEM is not set 402# CONFIG_SUNGEM is not set
403# CONFIG_CASSINI is not set
357# CONFIG_NET_VENDOR_3COM is not set 404# CONFIG_NET_VENDOR_3COM is not set
358# CONFIG_LANCE is not set
359# CONFIG_NET_VENDOR_SMC is not set 405# CONFIG_NET_VENDOR_SMC is not set
360# CONFIG_NET_VENDOR_RACAL is not set 406# CONFIG_NET_VENDOR_RACAL is not set
361 407
@@ -369,6 +415,7 @@ CONFIG_TULIP=y
369# CONFIG_DE4X5 is not set 415# CONFIG_DE4X5 is not set
370# CONFIG_WINBOND_840 is not set 416# CONFIG_WINBOND_840 is not set
371# CONFIG_DM9102 is not set 417# CONFIG_DM9102 is not set
418# CONFIG_ULI526X is not set
372# CONFIG_DEPCA is not set 419# CONFIG_DEPCA is not set
373# CONFIG_HP100 is not set 420# CONFIG_HP100 is not set
374# CONFIG_NET_ISA is not set 421# CONFIG_NET_ISA is not set
@@ -384,12 +431,15 @@ CONFIG_TULIP=y
384# CONFIG_NS83820 is not set 431# CONFIG_NS83820 is not set
385# CONFIG_HAMACHI is not set 432# CONFIG_HAMACHI is not set
386# CONFIG_R8169 is not set 433# CONFIG_R8169 is not set
434# CONFIG_SIS190 is not set
387# CONFIG_SK98LIN is not set 435# CONFIG_SK98LIN is not set
388# CONFIG_TIGON3 is not set 436# CONFIG_TIGON3 is not set
437# CONFIG_BNX2 is not set
389 438
390# 439#
391# Ethernet (10000 Mbit) 440# Ethernet (10000 Mbit)
392# 441#
442# CONFIG_CHELSIO_T1 is not set
393# CONFIG_IXGB is not set 443# CONFIG_IXGB is not set
394# CONFIG_S2IO is not set 444# CONFIG_S2IO is not set
395 445
@@ -413,12 +463,12 @@ CONFIG_NET_RADIO=y
413# 463#
414# Wireless 802.11b ISA/PCI cards support 464# Wireless 802.11b ISA/PCI cards support
415# 465#
416# CONFIG_AIRO is not set
417# CONFIG_HERMES is not set 466# CONFIG_HERMES is not set
418 467
419# 468#
420# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support 469# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
421# 470#
471# CONFIG_HOSTAP is not set
422CONFIG_NET_WIRELESS=y 472CONFIG_NET_WIRELESS=y
423 473
424# 474#
@@ -435,6 +485,8 @@ CONFIG_PPP=y
435# CONFIG_PPP_BSDCOMP is not set 485# CONFIG_PPP_BSDCOMP is not set
436# CONFIG_SLIP is not set 486# CONFIG_SLIP is not set
437# CONFIG_NET_FC is not set 487# CONFIG_NET_FC is not set
488# CONFIG_NETPOLL is not set
489# CONFIG_NET_POLL_CONTROLLER is not set
438 490
439# 491#
440# ISDN subsystem 492# ISDN subsystem
@@ -464,23 +516,12 @@ CONFIG_INPUT_EVDEV=y
464# CONFIG_INPUT_EVBUG is not set 516# CONFIG_INPUT_EVBUG is not set
465 517
466# 518#
467# Input I/O drivers
468#
469# CONFIG_GAMEPORT is not set
470CONFIG_SOUND_GAMEPORT=y
471CONFIG_SERIO=y
472# CONFIG_SERIO_SERPORT is not set
473# CONFIG_SERIO_PARKBD is not set
474CONFIG_SERIO_GSCPS2=y
475# CONFIG_HP_SDC is not set
476# CONFIG_SERIO_PCIPS2 is not set
477# CONFIG_SERIO_RAW is not set
478
479#
480# Input Device Drivers 519# Input Device Drivers
481# 520#
482CONFIG_INPUT_KEYBOARD=y 521CONFIG_INPUT_KEYBOARD=y
483# CONFIG_KEYBOARD_ATKBD is not set 522CONFIG_KEYBOARD_ATKBD=y
523CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y
524# CONFIG_KEYBOARD_ATKBD_RDI_KEYCODES is not set
484# CONFIG_KEYBOARD_SUNKBD is not set 525# CONFIG_KEYBOARD_SUNKBD is not set
485# CONFIG_KEYBOARD_LKKBD is not set 526# CONFIG_KEYBOARD_LKKBD is not set
486# CONFIG_KEYBOARD_XTKBD is not set 527# CONFIG_KEYBOARD_XTKBD is not set
@@ -488,7 +529,7 @@ CONFIG_INPUT_KEYBOARD=y
488# CONFIG_KEYBOARD_HIL_OLD is not set 529# CONFIG_KEYBOARD_HIL_OLD is not set
489# CONFIG_KEYBOARD_HIL is not set 530# CONFIG_KEYBOARD_HIL is not set
490CONFIG_INPUT_MOUSE=y 531CONFIG_INPUT_MOUSE=y
491# CONFIG_MOUSE_PS2 is not set 532CONFIG_MOUSE_PS2=y
492# CONFIG_MOUSE_SERIAL is not set 533# CONFIG_MOUSE_SERIAL is not set
493# CONFIG_MOUSE_INPORT is not set 534# CONFIG_MOUSE_INPORT is not set
494# CONFIG_MOUSE_LOGIBM is not set 535# CONFIG_MOUSE_LOGIBM is not set
@@ -502,6 +543,19 @@ CONFIG_INPUT_MISC=y
502# CONFIG_HP_SDC_RTC is not set 543# CONFIG_HP_SDC_RTC is not set
503 544
504# 545#
546# Hardware I/O ports
547#
548CONFIG_SERIO=y
549# CONFIG_SERIO_SERPORT is not set
550# CONFIG_SERIO_PARKBD is not set
551CONFIG_SERIO_GSCPS2=y
552# CONFIG_HP_SDC is not set
553# CONFIG_SERIO_PCIPS2 is not set
554CONFIG_SERIO_LIBPS2=y
555# CONFIG_SERIO_RAW is not set
556# CONFIG_GAMEPORT is not set
557
558#
505# Character devices 559# Character devices
506# 560#
507CONFIG_VT=y 561CONFIG_VT=y
@@ -519,8 +573,11 @@ CONFIG_SERIAL_8250_EXTENDED=y
519CONFIG_SERIAL_8250_MANY_PORTS=y 573CONFIG_SERIAL_8250_MANY_PORTS=y
520CONFIG_SERIAL_8250_SHARE_IRQ=y 574CONFIG_SERIAL_8250_SHARE_IRQ=y
521# CONFIG_SERIAL_8250_DETECT_IRQ is not set 575# CONFIG_SERIAL_8250_DETECT_IRQ is not set
522# CONFIG_SERIAL_8250_MULTIPORT is not set
523# CONFIG_SERIAL_8250_RSA is not set 576# CONFIG_SERIAL_8250_RSA is not set
577# CONFIG_SERIAL_8250_FOURPORT is not set
578# CONFIG_SERIAL_8250_ACCENT is not set
579# CONFIG_SERIAL_8250_BOCA is not set
580# CONFIG_SERIAL_8250_HUB6 is not set
524 581
525# 582#
526# Non-8250 serial port support 583# Non-8250 serial port support
@@ -529,6 +586,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
529# CONFIG_PDC_CONSOLE is not set 586# CONFIG_PDC_CONSOLE is not set
530CONFIG_SERIAL_CORE=y 587CONFIG_SERIAL_CORE=y
531CONFIG_SERIAL_CORE_CONSOLE=y 588CONFIG_SERIAL_CORE_CONSOLE=y
589# CONFIG_SERIAL_JSM is not set
532CONFIG_UNIX98_PTYS=y 590CONFIG_UNIX98_PTYS=y
533CONFIG_LEGACY_PTYS=y 591CONFIG_LEGACY_PTYS=y
534CONFIG_LEGACY_PTY_COUNT=256 592CONFIG_LEGACY_PTY_COUNT=256
@@ -555,11 +613,14 @@ CONFIG_GEN_RTC=y
555# 613#
556# Ftape, the floppy tape device driver 614# Ftape, the floppy tape device driver
557# 615#
558# CONFIG_AGP is not set
559# CONFIG_DRM is not set 616# CONFIG_DRM is not set
560# CONFIG_RAW_DRIVER is not set 617# CONFIG_RAW_DRIVER is not set
561 618
562# 619#
620# TPM devices
621#
622
623#
563# I2C support 624# I2C support
564# 625#
565# CONFIG_I2C is not set 626# CONFIG_I2C is not set
@@ -570,10 +631,20 @@ CONFIG_GEN_RTC=y
570# CONFIG_W1 is not set 631# CONFIG_W1 is not set
571 632
572# 633#
634# Hardware Monitoring support
635#
636# CONFIG_HWMON is not set
637# CONFIG_HWMON_VID is not set
638
639#
573# Misc devices 640# Misc devices
574# 641#
575 642
576# 643#
644# Multimedia Capabilities Port drivers
645#
646
647#
577# Multimedia devices 648# Multimedia devices
578# 649#
579# CONFIG_VIDEO_DEV is not set 650# CONFIG_VIDEO_DEV is not set
@@ -587,6 +658,11 @@ CONFIG_GEN_RTC=y
587# Graphics support 658# Graphics support
588# 659#
589CONFIG_FB=y 660CONFIG_FB=y
661CONFIG_FB_CFB_FILLRECT=y
662CONFIG_FB_CFB_COPYAREA=y
663CONFIG_FB_CFB_IMAGEBLIT=y
664CONFIG_FB_SOFT_CURSOR=y
665# CONFIG_FB_MACMODES is not set
590# CONFIG_FB_MODE_HELPERS is not set 666# CONFIG_FB_MODE_HELPERS is not set
591# CONFIG_FB_TILEBLITTING is not set 667# CONFIG_FB_TILEBLITTING is not set
592# CONFIG_FB_CIRRUS is not set 668# CONFIG_FB_CIRRUS is not set
@@ -595,6 +671,7 @@ CONFIG_FB=y
595# CONFIG_FB_ASILIANT is not set 671# CONFIG_FB_ASILIANT is not set
596# CONFIG_FB_IMSTT is not set 672# CONFIG_FB_IMSTT is not set
597CONFIG_FB_STI=y 673CONFIG_FB_STI=y
674# CONFIG_FB_NVIDIA is not set
598# CONFIG_FB_RIVA is not set 675# CONFIG_FB_RIVA is not set
599# CONFIG_FB_MATROX is not set 676# CONFIG_FB_MATROX is not set
600# CONFIG_FB_RADEON_OLD is not set 677# CONFIG_FB_RADEON_OLD is not set
@@ -606,18 +683,19 @@ CONFIG_FB_STI=y
606# CONFIG_FB_KYRO is not set 683# CONFIG_FB_KYRO is not set
607# CONFIG_FB_3DFX is not set 684# CONFIG_FB_3DFX is not set
608# CONFIG_FB_VOODOO1 is not set 685# CONFIG_FB_VOODOO1 is not set
686# CONFIG_FB_CYBLA is not set
609# CONFIG_FB_TRIDENT is not set 687# CONFIG_FB_TRIDENT is not set
688# CONFIG_FB_S1D13XXX is not set
610# CONFIG_FB_VIRTUAL is not set 689# CONFIG_FB_VIRTUAL is not set
611 690
612# 691#
613# Console display driver support 692# Console display driver support
614# 693#
615# CONFIG_MDA_CONSOLE is not set 694CONFIG_DUMMY_CONSOLE=y
616CONFIG_STI_CONSOLE=y
617CONFIG_DUMMY_CONSOLE_COLUMNS=160 695CONFIG_DUMMY_CONSOLE_COLUMNS=160
618CONFIG_DUMMY_CONSOLE_ROWS=64 696CONFIG_DUMMY_CONSOLE_ROWS=64
619CONFIG_DUMMY_CONSOLE=y
620CONFIG_FRAMEBUFFER_CONSOLE=y 697CONFIG_FRAMEBUFFER_CONSOLE=y
698CONFIG_STI_CONSOLE=y
621# CONFIG_FONTS is not set 699# CONFIG_FONTS is not set
622CONFIG_FONT_8x8=y 700CONFIG_FONT_8x8=y
623CONFIG_FONT_8x16=y 701CONFIG_FONT_8x16=y
@@ -630,6 +708,7 @@ CONFIG_LOGO_LINUX_MONO=y
630CONFIG_LOGO_LINUX_VGA16=y 708CONFIG_LOGO_LINUX_VGA16=y
631CONFIG_LOGO_LINUX_CLUT224=y 709CONFIG_LOGO_LINUX_CLUT224=y
632CONFIG_LOGO_PARISC_CLUT224=y 710CONFIG_LOGO_PARISC_CLUT224=y
711# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
633 712
634# 713#
635# Sound 714# Sound
@@ -639,13 +718,9 @@ CONFIG_LOGO_PARISC_CLUT224=y
639# 718#
640# USB support 719# USB support
641# 720#
642# CONFIG_USB is not set
643CONFIG_USB_ARCH_HAS_HCD=y 721CONFIG_USB_ARCH_HAS_HCD=y
644CONFIG_USB_ARCH_HAS_OHCI=y 722CONFIG_USB_ARCH_HAS_OHCI=y
645 723# CONFIG_USB is not set
646#
647# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
648#
649 724
650# 725#
651# USB Gadget Support 726# USB Gadget Support
@@ -658,23 +733,36 @@ CONFIG_USB_ARCH_HAS_OHCI=y
658# CONFIG_MMC is not set 733# CONFIG_MMC is not set
659 734
660# 735#
736# InfiniBand support
737#
738# CONFIG_INFINIBAND is not set
739
740#
741# SN Devices
742#
743
744#
661# File systems 745# File systems
662# 746#
663CONFIG_EXT2_FS=y 747CONFIG_EXT2_FS=y
664# CONFIG_EXT2_FS_XATTR is not set 748# CONFIG_EXT2_FS_XATTR is not set
749# CONFIG_EXT2_FS_XIP is not set
665CONFIG_EXT3_FS=y 750CONFIG_EXT3_FS=y
666# CONFIG_EXT3_FS_XATTR is not set 751# CONFIG_EXT3_FS_XATTR is not set
667CONFIG_JBD=y 752CONFIG_JBD=y
668# CONFIG_JBD_DEBUG is not set 753# CONFIG_JBD_DEBUG is not set
669# CONFIG_REISERFS_FS is not set 754# CONFIG_REISERFS_FS is not set
670# CONFIG_JFS_FS is not set 755# CONFIG_JFS_FS is not set
756# CONFIG_FS_POSIX_ACL is not set
671# CONFIG_XFS_FS is not set 757# CONFIG_XFS_FS is not set
672# CONFIG_MINIX_FS is not set 758# CONFIG_MINIX_FS is not set
673# CONFIG_ROMFS_FS is not set 759# CONFIG_ROMFS_FS is not set
760CONFIG_INOTIFY=y
674# CONFIG_QUOTA is not set 761# CONFIG_QUOTA is not set
675CONFIG_DNOTIFY=y 762CONFIG_DNOTIFY=y
676# CONFIG_AUTOFS_FS is not set 763# CONFIG_AUTOFS_FS is not set
677CONFIG_AUTOFS4_FS=y 764CONFIG_AUTOFS4_FS=y
765# CONFIG_FUSE_FS is not set
678 766
679# 767#
680# CD-ROM/DVD Filesystems 768# CD-ROM/DVD Filesystems
@@ -697,11 +785,10 @@ CONFIG_JOLIET=y
697CONFIG_PROC_FS=y 785CONFIG_PROC_FS=y
698CONFIG_PROC_KCORE=y 786CONFIG_PROC_KCORE=y
699CONFIG_SYSFS=y 787CONFIG_SYSFS=y
700# CONFIG_DEVPTS_FS_XATTR is not set
701CONFIG_TMPFS=y 788CONFIG_TMPFS=y
702# CONFIG_TMPFS_XATTR is not set
703# CONFIG_HUGETLB_PAGE is not set 789# CONFIG_HUGETLB_PAGE is not set
704CONFIG_RAMFS=y 790CONFIG_RAMFS=y
791# CONFIG_RELAYFS_FS is not set
705 792
706# 793#
707# Miscellaneous filesystems 794# Miscellaneous filesystems
@@ -719,15 +806,19 @@ CONFIG_RAMFS=y
719# 806#
720CONFIG_NFS_FS=y 807CONFIG_NFS_FS=y
721CONFIG_NFS_V3=y 808CONFIG_NFS_V3=y
809# CONFIG_NFS_V3_ACL is not set
722CONFIG_NFSD=y 810CONFIG_NFSD=y
723CONFIG_NFSD_V3=y 811CONFIG_NFSD_V3=y
812# CONFIG_NFSD_V3_ACL is not set
724CONFIG_NFSD_TCP=y 813CONFIG_NFSD_TCP=y
725CONFIG_ROOT_NFS=y 814CONFIG_ROOT_NFS=y
726CONFIG_LOCKD=y 815CONFIG_LOCKD=y
727CONFIG_LOCKD_V4=y 816CONFIG_LOCKD_V4=y
728CONFIG_EXPORTFS=y 817CONFIG_EXPORTFS=y
818CONFIG_NFS_COMMON=y
729CONFIG_SUNRPC=y 819CONFIG_SUNRPC=y
730# CONFIG_SMB_FS is not set 820CONFIG_SMB_FS=y
821# CONFIG_SMB_NLS_DEFAULT is not set
731# CONFIG_CIFS is not set 822# CONFIG_CIFS is not set
732# CONFIG_NCP_FS is not set 823# CONFIG_NCP_FS is not set
733# CONFIG_CODA_FS is not set 824# CONFIG_CODA_FS is not set
@@ -785,13 +876,19 @@ CONFIG_NLS_DEFAULT="iso8859-1"
785# 876#
786# Kernel hacking 877# Kernel hacking
787# 878#
879# CONFIG_PRINTK_TIME is not set
788CONFIG_DEBUG_KERNEL=y 880CONFIG_DEBUG_KERNEL=y
789CONFIG_MAGIC_SYSRQ=y 881CONFIG_MAGIC_SYSRQ=y
882CONFIG_LOG_BUF_SHIFT=16
883CONFIG_DETECT_SOFTLOCKUP=y
790# CONFIG_SCHEDSTATS is not set 884# CONFIG_SCHEDSTATS is not set
791# CONFIG_DEBUG_SLAB is not set 885# CONFIG_DEBUG_SLAB is not set
792# CONFIG_DEBUG_SPINLOCK is not set 886# CONFIG_DEBUG_SPINLOCK is not set
887# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
793# CONFIG_DEBUG_KOBJECT is not set 888# CONFIG_DEBUG_KOBJECT is not set
794# CONFIG_DEBUG_INFO is not set 889# CONFIG_DEBUG_INFO is not set
890# CONFIG_DEBUG_IOREMAP is not set
891# CONFIG_DEBUG_FS is not set
795 892
796# 893#
797# Security options 894# Security options
@@ -815,6 +912,7 @@ CONFIG_CRYPTO=y
815# CONFIG_CRYPTO_SHA256 is not set 912# CONFIG_CRYPTO_SHA256 is not set
816# CONFIG_CRYPTO_SHA512 is not set 913# CONFIG_CRYPTO_SHA512 is not set
817# CONFIG_CRYPTO_WP512 is not set 914# CONFIG_CRYPTO_WP512 is not set
915# CONFIG_CRYPTO_TGR192 is not set
818# CONFIG_CRYPTO_DES is not set 916# CONFIG_CRYPTO_DES is not set
819# CONFIG_CRYPTO_BLOWFISH is not set 917# CONFIG_CRYPTO_BLOWFISH is not set
820# CONFIG_CRYPTO_TWOFISH is not set 918# CONFIG_CRYPTO_TWOFISH is not set
@@ -832,8 +930,13 @@ CONFIG_CRYPTO=y
832# CONFIG_CRYPTO_TEST is not set 930# CONFIG_CRYPTO_TEST is not set
833 931
834# 932#
933# Hardware crypto devices
934#
935
936#
835# Library routines 937# Library routines
836# 938#
837# CONFIG_CRC_CCITT is not set 939# CONFIG_CRC_CCITT is not set
940# CONFIG_CRC16 is not set
838CONFIG_CRC32=y 941CONFIG_CRC32=y
839# CONFIG_LIBCRC32C is not set 942# CONFIG_LIBCRC32C is not set
diff --git a/arch/parisc/configs/c3000_defconfig b/arch/parisc/configs/c3000_defconfig
index 67aca6ccc9b0..9d86b6b1ebd1 100644
--- a/arch/parisc/configs/c3000_defconfig
+++ b/arch/parisc/configs/c3000_defconfig
@@ -1,12 +1,16 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.10-pa5 3# Linux kernel version: 2.6.14-rc5-pa1
4# Wed Jan 5 13:26:49 2005 4# Fri Oct 21 23:06:31 2005
5# 5#
6CONFIG_PARISC=y 6CONFIG_PARISC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
8CONFIG_STACK_GROWSUP=y 8CONFIG_STACK_GROWSUP=y
9CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y
11CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_ARCH_MAY_HAVE_PC_FDC=y
10 14
11# 15#
12# Code maturity level options 16# Code maturity level options
@@ -15,26 +19,31 @@ CONFIG_EXPERIMENTAL=y
15# CONFIG_CLEAN_COMPILE is not set 19# CONFIG_CLEAN_COMPILE is not set
16CONFIG_BROKEN=y 20CONFIG_BROKEN=y
17CONFIG_BROKEN_ON_SMP=y 21CONFIG_BROKEN_ON_SMP=y
22CONFIG_INIT_ENV_ARG_LIMIT=32
18 23
19# 24#
20# General setup 25# General setup
21# 26#
22CONFIG_LOCALVERSION="" 27CONFIG_LOCALVERSION=""
28# CONFIG_LOCALVERSION_AUTO is not set
23CONFIG_SWAP=y 29CONFIG_SWAP=y
24CONFIG_SYSVIPC=y 30CONFIG_SYSVIPC=y
25# CONFIG_POSIX_MQUEUE is not set 31# CONFIG_POSIX_MQUEUE is not set
26# CONFIG_BSD_PROCESS_ACCT is not set 32# CONFIG_BSD_PROCESS_ACCT is not set
27CONFIG_SYSCTL=y 33CONFIG_SYSCTL=y
28# CONFIG_AUDIT is not set 34# CONFIG_AUDIT is not set
29CONFIG_LOG_BUF_SHIFT=16
30CONFIG_HOTPLUG=y 35CONFIG_HOTPLUG=y
31CONFIG_KOBJECT_UEVENT=y 36CONFIG_KOBJECT_UEVENT=y
32CONFIG_IKCONFIG=y 37CONFIG_IKCONFIG=y
33CONFIG_IKCONFIG_PROC=y 38CONFIG_IKCONFIG_PROC=y
39CONFIG_INITRAMFS_SOURCE=""
34CONFIG_EMBEDDED=y 40CONFIG_EMBEDDED=y
35CONFIG_KALLSYMS=y 41CONFIG_KALLSYMS=y
36CONFIG_KALLSYMS_ALL=y 42CONFIG_KALLSYMS_ALL=y
37# CONFIG_KALLSYMS_EXTRA_PASS is not set 43# CONFIG_KALLSYMS_EXTRA_PASS is not set
44CONFIG_PRINTK=y
45CONFIG_BUG=y
46CONFIG_BASE_FULL=y
38CONFIG_FUTEX=y 47CONFIG_FUTEX=y
39CONFIG_EPOLL=y 48CONFIG_EPOLL=y
40# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 49# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -44,6 +53,7 @@ CONFIG_CC_ALIGN_LABELS=0
44CONFIG_CC_ALIGN_LOOPS=0 53CONFIG_CC_ALIGN_LOOPS=0
45CONFIG_CC_ALIGN_JUMPS=0 54CONFIG_CC_ALIGN_JUMPS=0
46# CONFIG_TINY_SHMEM is not set 55# CONFIG_TINY_SHMEM is not set
56CONFIG_BASE_SMALL=0
47 57
48# 58#
49# Loadable module support 59# Loadable module support
@@ -66,10 +76,19 @@ CONFIG_KMOD=y
66CONFIG_PA8X00=y 76CONFIG_PA8X00=y
67CONFIG_PA20=y 77CONFIG_PA20=y
68CONFIG_PREFETCH=y 78CONFIG_PREFETCH=y
69# CONFIG_PARISC64 is not set
70# CONFIG_64BIT is not set 79# CONFIG_64BIT is not set
71# CONFIG_SMP is not set 80# CONFIG_SMP is not set
72# CONFIG_DISCONTIGMEM is not set 81# CONFIG_HZ_100 is not set
82CONFIG_HZ_250=y
83# CONFIG_HZ_1000 is not set
84CONFIG_HZ=250
85CONFIG_SELECT_MEMORY_MODEL=y
86CONFIG_FLATMEM_MANUAL=y
87# CONFIG_DISCONTIGMEM_MANUAL is not set
88# CONFIG_SPARSEMEM_MANUAL is not set
89CONFIG_FLATMEM=y
90CONFIG_FLAT_NODE_MEM_MAP=y
91# CONFIG_SPARSEMEM_STATIC is not set
73# CONFIG_PREEMPT is not set 92# CONFIG_PREEMPT is not set
74# CONFIG_HPUX is not set 93# CONFIG_HPUX is not set
75 94
@@ -79,13 +98,10 @@ CONFIG_PREFETCH=y
79# CONFIG_GSC is not set 98# CONFIG_GSC is not set
80CONFIG_PCI=y 99CONFIG_PCI=y
81CONFIG_PCI_LEGACY_PROC=y 100CONFIG_PCI_LEGACY_PROC=y
82CONFIG_PCI_NAMES=y 101# CONFIG_PCI_DEBUG is not set
83CONFIG_PCI_LBA=y 102CONFIG_PCI_LBA=y
84CONFIG_IOSAPIC=y 103CONFIG_IOSAPIC=y
85CONFIG_IOMMU_SBA=y 104CONFIG_IOMMU_SBA=y
86CONFIG_SUPERIO=y
87CONFIG_CHASSIS_LCD_LED=y
88# CONFIG_PDC_CHASSIS is not set
89 105
90# 106#
91# PCCARD (PCMCIA/CardBus) support 107# PCCARD (PCMCIA/CardBus) support
@@ -93,13 +109,17 @@ CONFIG_CHASSIS_LCD_LED=y
93# CONFIG_PCCARD is not set 109# CONFIG_PCCARD is not set
94 110
95# 111#
96# PC-card bridges 112# PCI Hotplug Support
97# 113#
114# CONFIG_HOTPLUG_PCI is not set
98 115
99# 116#
100# PCI Hotplug Support 117# PA-RISC specific drivers
101# 118#
102# CONFIG_HOTPLUG_PCI is not set 119CONFIG_SUPERIO=y
120CONFIG_CHASSIS_LCD_LED=y
121# CONFIG_PDC_CHASSIS is not set
122CONFIG_PDC_STABLE=y
103 123
104# 124#
105# Executable file formats 125# Executable file formats
@@ -108,6 +128,186 @@ CONFIG_BINFMT_ELF=y
108# CONFIG_BINFMT_MISC is not set 128# CONFIG_BINFMT_MISC is not set
109 129
110# 130#
131# Networking
132#
133CONFIG_NET=y
134
135#
136# Networking options
137#
138CONFIG_PACKET=y
139CONFIG_PACKET_MMAP=y
140CONFIG_UNIX=y
141CONFIG_XFRM=y
142CONFIG_XFRM_USER=m
143CONFIG_NET_KEY=m
144CONFIG_INET=y
145CONFIG_IP_MULTICAST=y
146# CONFIG_IP_ADVANCED_ROUTER is not set
147CONFIG_IP_FIB_HASH=y
148CONFIG_IP_PNP=y
149# CONFIG_IP_PNP_DHCP is not set
150CONFIG_IP_PNP_BOOTP=y
151# CONFIG_IP_PNP_RARP is not set
152# CONFIG_NET_IPIP is not set
153# CONFIG_NET_IPGRE is not set
154# CONFIG_IP_MROUTE is not set
155# CONFIG_ARPD is not set
156# CONFIG_SYN_COOKIES is not set
157# CONFIG_INET_AH is not set
158# CONFIG_INET_ESP is not set
159# CONFIG_INET_IPCOMP is not set
160# CONFIG_INET_TUNNEL is not set
161# CONFIG_INET_DIAG is not set
162# CONFIG_TCP_CONG_ADVANCED is not set
163CONFIG_TCP_CONG_BIC=y
164
165#
166# IP: Virtual Server Configuration
167#
168# CONFIG_IP_VS is not set
169CONFIG_IPV6=m
170# CONFIG_IPV6_PRIVACY is not set
171# CONFIG_INET6_AH is not set
172# CONFIG_INET6_ESP is not set
173CONFIG_INET6_IPCOMP=m
174CONFIG_INET6_TUNNEL=m
175CONFIG_IPV6_TUNNEL=m
176CONFIG_NETFILTER=y
177CONFIG_NETFILTER_DEBUG=y
178# CONFIG_NETFILTER_NETLINK is not set
179
180#
181# IP: Netfilter Configuration
182#
183CONFIG_IP_NF_CONNTRACK=m
184# CONFIG_IP_NF_CT_ACCT is not set
185# CONFIG_IP_NF_CONNTRACK_MARK is not set
186# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
187# CONFIG_IP_NF_CT_PROTO_SCTP is not set
188CONFIG_IP_NF_FTP=m
189CONFIG_IP_NF_IRC=m
190# CONFIG_IP_NF_NETBIOS_NS is not set
191CONFIG_IP_NF_TFTP=m
192CONFIG_IP_NF_AMANDA=m
193# CONFIG_IP_NF_PPTP is not set
194CONFIG_IP_NF_QUEUE=m
195CONFIG_IP_NF_IPTABLES=m
196CONFIG_IP_NF_MATCH_LIMIT=m
197CONFIG_IP_NF_MATCH_IPRANGE=m
198CONFIG_IP_NF_MATCH_MAC=m
199CONFIG_IP_NF_MATCH_PKTTYPE=m
200CONFIG_IP_NF_MATCH_MARK=m
201CONFIG_IP_NF_MATCH_MULTIPORT=m
202CONFIG_IP_NF_MATCH_TOS=m
203CONFIG_IP_NF_MATCH_RECENT=m
204CONFIG_IP_NF_MATCH_ECN=m
205CONFIG_IP_NF_MATCH_DSCP=m
206CONFIG_IP_NF_MATCH_AH_ESP=m
207CONFIG_IP_NF_MATCH_LENGTH=m
208CONFIG_IP_NF_MATCH_TTL=m
209CONFIG_IP_NF_MATCH_TCPMSS=m
210CONFIG_IP_NF_MATCH_HELPER=m
211CONFIG_IP_NF_MATCH_STATE=m
212CONFIG_IP_NF_MATCH_CONNTRACK=m
213CONFIG_IP_NF_MATCH_OWNER=m
214# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
215# CONFIG_IP_NF_MATCH_REALM is not set
216# CONFIG_IP_NF_MATCH_SCTP is not set
217# CONFIG_IP_NF_MATCH_DCCP is not set
218# CONFIG_IP_NF_MATCH_COMMENT is not set
219# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
220# CONFIG_IP_NF_MATCH_STRING is not set
221CONFIG_IP_NF_FILTER=m
222CONFIG_IP_NF_TARGET_REJECT=m
223CONFIG_IP_NF_TARGET_LOG=m
224CONFIG_IP_NF_TARGET_ULOG=m
225CONFIG_IP_NF_TARGET_TCPMSS=m
226# CONFIG_IP_NF_TARGET_NFQUEUE is not set
227CONFIG_IP_NF_NAT=m
228CONFIG_IP_NF_NAT_NEEDED=y
229CONFIG_IP_NF_TARGET_MASQUERADE=m
230CONFIG_IP_NF_TARGET_REDIRECT=m
231CONFIG_IP_NF_TARGET_NETMAP=m
232CONFIG_IP_NF_TARGET_SAME=m
233CONFIG_IP_NF_NAT_SNMP_BASIC=m
234CONFIG_IP_NF_NAT_IRC=m
235CONFIG_IP_NF_NAT_FTP=m
236CONFIG_IP_NF_NAT_TFTP=m
237CONFIG_IP_NF_NAT_AMANDA=m
238CONFIG_IP_NF_MANGLE=m
239CONFIG_IP_NF_TARGET_TOS=m
240CONFIG_IP_NF_TARGET_ECN=m
241CONFIG_IP_NF_TARGET_DSCP=m
242CONFIG_IP_NF_TARGET_MARK=m
243CONFIG_IP_NF_TARGET_CLASSIFY=m
244# CONFIG_IP_NF_TARGET_TTL is not set
245# CONFIG_IP_NF_RAW is not set
246CONFIG_IP_NF_ARPTABLES=m
247CONFIG_IP_NF_ARPFILTER=m
248CONFIG_IP_NF_ARP_MANGLE=m
249
250#
251# IPv6: Netfilter Configuration (EXPERIMENTAL)
252#
253# CONFIG_IP6_NF_QUEUE is not set
254CONFIG_IP6_NF_IPTABLES=m
255# CONFIG_IP6_NF_MATCH_LIMIT is not set
256CONFIG_IP6_NF_MATCH_MAC=m
257CONFIG_IP6_NF_MATCH_RT=m
258# CONFIG_IP6_NF_MATCH_OPTS is not set
259# CONFIG_IP6_NF_MATCH_FRAG is not set
260# CONFIG_IP6_NF_MATCH_HL is not set
261# CONFIG_IP6_NF_MATCH_MULTIPORT is not set
262CONFIG_IP6_NF_MATCH_OWNER=m
263# CONFIG_IP6_NF_MATCH_MARK is not set
264CONFIG_IP6_NF_MATCH_IPV6HEADER=m
265# CONFIG_IP6_NF_MATCH_AHESP is not set
266CONFIG_IP6_NF_MATCH_LENGTH=m
267# CONFIG_IP6_NF_MATCH_EUI64 is not set
268CONFIG_IP6_NF_FILTER=m
269CONFIG_IP6_NF_TARGET_LOG=m
270CONFIG_IP6_NF_TARGET_REJECT=m
271# CONFIG_IP6_NF_TARGET_NFQUEUE is not set
272CONFIG_IP6_NF_MANGLE=m
273# CONFIG_IP6_NF_TARGET_MARK is not set
274# CONFIG_IP6_NF_TARGET_HL is not set
275# CONFIG_IP6_NF_RAW is not set
276
277#
278# DCCP Configuration (EXPERIMENTAL)
279#
280# CONFIG_IP_DCCP is not set
281
282#
283# SCTP Configuration (EXPERIMENTAL)
284#
285# CONFIG_IP_SCTP is not set
286# CONFIG_ATM is not set
287# CONFIG_BRIDGE is not set
288# CONFIG_VLAN_8021Q is not set
289# CONFIG_DECNET is not set
290# CONFIG_LLC2 is not set
291# CONFIG_IPX is not set
292# CONFIG_ATALK is not set
293# CONFIG_X25 is not set
294# CONFIG_LAPB is not set
295# CONFIG_NET_DIVERT is not set
296# CONFIG_ECONET is not set
297# CONFIG_WAN_ROUTER is not set
298# CONFIG_NET_SCHED is not set
299# CONFIG_NET_CLS_ROUTE is not set
300
301#
302# Network testing
303#
304CONFIG_NET_PKTGEN=m
305# CONFIG_HAMRADIO is not set
306# CONFIG_IRDA is not set
307# CONFIG_BT is not set
308# CONFIG_IEEE80211 is not set
309
310#
111# Device Drivers 311# Device Drivers
112# 312#
113 313
@@ -120,6 +320,11 @@ CONFIG_FW_LOADER=y
120# CONFIG_DEBUG_DRIVER is not set 320# CONFIG_DEBUG_DRIVER is not set
121 321
122# 322#
323# Connector - unified userspace <-> kernelspace linker
324#
325# CONFIG_CONNECTOR is not set
326
327#
123# Memory Technology Devices (MTD) 328# Memory Technology Devices (MTD)
124# 329#
125# CONFIG_MTD is not set 330# CONFIG_MTD is not set
@@ -141,14 +346,14 @@ CONFIG_FW_LOADER=y
141# CONFIG_BLK_CPQ_CISS_DA is not set 346# CONFIG_BLK_CPQ_CISS_DA is not set
142# CONFIG_BLK_DEV_DAC960 is not set 347# CONFIG_BLK_DEV_DAC960 is not set
143CONFIG_BLK_DEV_UMEM=m 348CONFIG_BLK_DEV_UMEM=m
349# CONFIG_BLK_DEV_COW_COMMON is not set
144CONFIG_BLK_DEV_LOOP=y 350CONFIG_BLK_DEV_LOOP=y
145# CONFIG_BLK_DEV_CRYPTOLOOP is not set 351CONFIG_BLK_DEV_CRYPTOLOOP=m
146# CONFIG_BLK_DEV_NBD is not set 352# CONFIG_BLK_DEV_NBD is not set
147# CONFIG_BLK_DEV_SX8 is not set 353# CONFIG_BLK_DEV_SX8 is not set
148# CONFIG_BLK_DEV_UB is not set 354# CONFIG_BLK_DEV_UB is not set
149# CONFIG_BLK_DEV_RAM is not set 355# CONFIG_BLK_DEV_RAM is not set
150CONFIG_BLK_DEV_RAM_COUNT=16 356CONFIG_BLK_DEV_RAM_COUNT=16
151CONFIG_INITRAMFS_SOURCE=""
152# CONFIG_CDROM_PKTCDVD is not set 357# CONFIG_CDROM_PKTCDVD is not set
153 358
154# 359#
@@ -158,6 +363,7 @@ CONFIG_IOSCHED_NOOP=y
158CONFIG_IOSCHED_AS=y 363CONFIG_IOSCHED_AS=y
159CONFIG_IOSCHED_DEADLINE=y 364CONFIG_IOSCHED_DEADLINE=y
160CONFIG_IOSCHED_CFQ=y 365CONFIG_IOSCHED_CFQ=y
366# CONFIG_ATA_OVER_ETH is not set
161 367
162# 368#
163# ATA/ATAPI/MFM/RLL support 369# ATA/ATAPI/MFM/RLL support
@@ -201,6 +407,7 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
201# CONFIG_BLK_DEV_HPT366 is not set 407# CONFIG_BLK_DEV_HPT366 is not set
202# CONFIG_BLK_DEV_SC1200 is not set 408# CONFIG_BLK_DEV_SC1200 is not set
203# CONFIG_BLK_DEV_PIIX is not set 409# CONFIG_BLK_DEV_PIIX is not set
410# CONFIG_BLK_DEV_IT821X is not set
204CONFIG_BLK_DEV_NS87415=y 411CONFIG_BLK_DEV_NS87415=y
205# CONFIG_BLK_DEV_PDC202XX_OLD is not set 412# CONFIG_BLK_DEV_PDC202XX_OLD is not set
206# CONFIG_BLK_DEV_PDC202XX_NEW is not set 413# CONFIG_BLK_DEV_PDC202XX_NEW is not set
@@ -218,6 +425,7 @@ CONFIG_BLK_DEV_IDEDMA=y
218# 425#
219# SCSI device support 426# SCSI device support
220# 427#
428# CONFIG_RAID_ATTRS is not set
221CONFIG_SCSI=y 429CONFIG_SCSI=y
222CONFIG_SCSI_PROC_FS=y 430CONFIG_SCSI_PROC_FS=y
223 431
@@ -230,6 +438,7 @@ CONFIG_CHR_DEV_ST=y
230CONFIG_BLK_DEV_SR=y 438CONFIG_BLK_DEV_SR=y
231# CONFIG_BLK_DEV_SR_VENDOR is not set 439# CONFIG_BLK_DEV_SR_VENDOR is not set
232CONFIG_CHR_DEV_SG=y 440CONFIG_CHR_DEV_SG=y
441# CONFIG_CHR_DEV_SCH is not set
233 442
234# 443#
235# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 444# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
@@ -242,7 +451,9 @@ CONFIG_SCSI_MULTI_LUN=y
242# SCSI Transport Attributes 451# SCSI Transport Attributes
243# 452#
244CONFIG_SCSI_SPI_ATTRS=y 453CONFIG_SCSI_SPI_ATTRS=y
245CONFIG_SCSI_FC_ATTRS=m 454# CONFIG_SCSI_FC_ATTRS is not set
455CONFIG_SCSI_ISCSI_ATTRS=m
456# CONFIG_SCSI_SAS_ATTRS is not set
246 457
247# 458#
248# SCSI low-level drivers 459# SCSI low-level drivers
@@ -258,25 +469,26 @@ CONFIG_SCSI_FC_ATTRS=m
258# CONFIG_SCSI_ADVANSYS is not set 469# CONFIG_SCSI_ADVANSYS is not set
259# CONFIG_MEGARAID_NEWGEN is not set 470# CONFIG_MEGARAID_NEWGEN is not set
260# CONFIG_MEGARAID_LEGACY is not set 471# CONFIG_MEGARAID_LEGACY is not set
472# CONFIG_MEGARAID_SAS is not set
261CONFIG_SCSI_SATA=y 473CONFIG_SCSI_SATA=y
262# CONFIG_SCSI_SATA_AHCI is not set 474# CONFIG_SCSI_SATA_AHCI is not set
263# CONFIG_SCSI_SATA_SVW is not set 475# CONFIG_SCSI_SATA_SVW is not set
264CONFIG_SCSI_ATA_PIIX=m 476CONFIG_SCSI_ATA_PIIX=m
477# CONFIG_SCSI_SATA_MV is not set
265# CONFIG_SCSI_SATA_NV is not set 478# CONFIG_SCSI_SATA_NV is not set
266CONFIG_SCSI_SATA_PROMISE=m 479CONFIG_SCSI_SATA_PROMISE=m
480# CONFIG_SCSI_SATA_QSTOR is not set
267# CONFIG_SCSI_SATA_SX4 is not set 481# CONFIG_SCSI_SATA_SX4 is not set
268CONFIG_SCSI_SATA_SIL=m 482CONFIG_SCSI_SATA_SIL=m
269# CONFIG_SCSI_SATA_SIS is not set 483# CONFIG_SCSI_SATA_SIS is not set
270# CONFIG_SCSI_SATA_ULI is not set 484# CONFIG_SCSI_SATA_ULI is not set
271CONFIG_SCSI_SATA_VIA=m 485CONFIG_SCSI_SATA_VIA=m
272# CONFIG_SCSI_SATA_VITESSE is not set 486# CONFIG_SCSI_SATA_VITESSE is not set
273# CONFIG_SCSI_BUSLOGIC is not set 487CONFIG_SCSI_SATA_INTEL_COMBINED=y
274# CONFIG_SCSI_CPQFCTS is not set 488# CONFIG_SCSI_CPQFCTS is not set
275# CONFIG_SCSI_DMX3191D is not set 489# CONFIG_SCSI_DMX3191D is not set
276# CONFIG_SCSI_EATA is not set
277# CONFIG_SCSI_EATA_PIO is not set 490# CONFIG_SCSI_EATA_PIO is not set
278# CONFIG_SCSI_FUTURE_DOMAIN is not set 491# CONFIG_SCSI_FUTURE_DOMAIN is not set
279# CONFIG_SCSI_GDTH is not set
280# CONFIG_SCSI_IPS is not set 492# CONFIG_SCSI_IPS is not set
281# CONFIG_SCSI_INITIO is not set 493# CONFIG_SCSI_INITIO is not set
282# CONFIG_SCSI_INIA100 is not set 494# CONFIG_SCSI_INIA100 is not set
@@ -286,20 +498,17 @@ CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
286CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 498CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
287# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set 499# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
288# CONFIG_SCSI_IPR is not set 500# CONFIG_SCSI_IPR is not set
289# CONFIG_SCSI_PCI2000 is not set
290# CONFIG_SCSI_PCI2220I is not set
291# CONFIG_SCSI_QLOGIC_ISP is not set 501# CONFIG_SCSI_QLOGIC_ISP is not set
292CONFIG_SCSI_QLOGIC_FC=m 502# CONFIG_SCSI_QLOGIC_FC is not set
293# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set 503# CONFIG_SCSI_QLOGIC_1280 is not set
294CONFIG_SCSI_QLOGIC_1280=m
295# CONFIG_SCSI_QLOGIC_1280_1040 is not set
296CONFIG_SCSI_QLA2XXX=y 504CONFIG_SCSI_QLA2XXX=y
297# CONFIG_SCSI_QLA21XX is not set 505# CONFIG_SCSI_QLA21XX is not set
298# CONFIG_SCSI_QLA22XX is not set 506# CONFIG_SCSI_QLA22XX is not set
299CONFIG_SCSI_QLA2300=m 507# CONFIG_SCSI_QLA2300 is not set
300CONFIG_SCSI_QLA2322=m 508# CONFIG_SCSI_QLA2322 is not set
301CONFIG_SCSI_QLA6312=m 509# CONFIG_SCSI_QLA6312 is not set
302CONFIG_SCSI_QLA6322=m 510# CONFIG_SCSI_QLA24XX is not set
511# CONFIG_SCSI_LPFC is not set
303# CONFIG_SCSI_DC395x is not set 512# CONFIG_SCSI_DC395x is not set
304# CONFIG_SCSI_DC390T is not set 513# CONFIG_SCSI_DC390T is not set
305# CONFIG_SCSI_NSP32 is not set 514# CONFIG_SCSI_NSP32 is not set
@@ -316,19 +525,24 @@ CONFIG_MD_RAID1=y
316# CONFIG_MD_RAID10 is not set 525# CONFIG_MD_RAID10 is not set
317# CONFIG_MD_RAID5 is not set 526# CONFIG_MD_RAID5 is not set
318# CONFIG_MD_RAID6 is not set 527# CONFIG_MD_RAID6 is not set
319CONFIG_MD_MULTIPATH=y 528# CONFIG_MD_MULTIPATH is not set
320# CONFIG_MD_FAULTY is not set 529# CONFIG_MD_FAULTY is not set
321CONFIG_BLK_DEV_DM=y 530CONFIG_BLK_DEV_DM=m
322# CONFIG_DM_CRYPT is not set 531CONFIG_DM_CRYPT=m
323# CONFIG_DM_SNAPSHOT is not set 532CONFIG_DM_SNAPSHOT=m
324# CONFIG_DM_MIRROR is not set 533CONFIG_DM_MIRROR=m
325# CONFIG_DM_ZERO is not set 534CONFIG_DM_ZERO=m
535CONFIG_DM_MULTIPATH=m
536# CONFIG_DM_MULTIPATH_EMC is not set
326 537
327# 538#
328# Fusion MPT device support 539# Fusion MPT device support
329# 540#
330CONFIG_FUSION=m 541CONFIG_FUSION=y
331CONFIG_FUSION_MAX_SGE=40 542CONFIG_FUSION_SPI=m
543# CONFIG_FUSION_FC is not set
544# CONFIG_FUSION_SAS is not set
545CONFIG_FUSION_MAX_SGE=128
332CONFIG_FUSION_CTL=m 546CONFIG_FUSION_CTL=m
333 547
334# 548#
@@ -342,151 +556,13 @@ CONFIG_FUSION_CTL=m
342# CONFIG_I2O is not set 556# CONFIG_I2O is not set
343 557
344# 558#
345# Networking support 559# Network device support
346#
347CONFIG_NET=y
348
349#
350# Networking options
351#
352CONFIG_PACKET=y
353CONFIG_PACKET_MMAP=y
354CONFIG_NETLINK_DEV=y
355CONFIG_UNIX=y
356CONFIG_NET_KEY=m
357CONFIG_INET=y
358CONFIG_IP_MULTICAST=y
359# CONFIG_IP_ADVANCED_ROUTER is not set
360CONFIG_IP_PNP=y
361# CONFIG_IP_PNP_DHCP is not set
362CONFIG_IP_PNP_BOOTP=y
363# CONFIG_IP_PNP_RARP is not set
364# CONFIG_NET_IPIP is not set
365# CONFIG_NET_IPGRE is not set
366# CONFIG_IP_MROUTE is not set
367# CONFIG_ARPD is not set
368# CONFIG_SYN_COOKIES is not set
369CONFIG_INET_AH=m
370CONFIG_INET_ESP=m
371# CONFIG_INET_IPCOMP is not set
372# CONFIG_INET_TUNNEL is not set
373CONFIG_IP_TCPDIAG=y
374# CONFIG_IP_TCPDIAG_IPV6 is not set
375
376#
377# IP: Virtual Server Configuration
378#
379# CONFIG_IP_VS is not set
380# CONFIG_IPV6 is not set
381CONFIG_NETFILTER=y
382CONFIG_NETFILTER_DEBUG=y
383
384#
385# IP: Netfilter Configuration
386#
387CONFIG_IP_NF_CONNTRACK=m
388# CONFIG_IP_NF_CT_ACCT is not set
389# CONFIG_IP_NF_CONNTRACK_MARK is not set
390# CONFIG_IP_NF_CT_PROTO_SCTP is not set
391CONFIG_IP_NF_FTP=m
392CONFIG_IP_NF_IRC=m
393CONFIG_IP_NF_TFTP=m
394CONFIG_IP_NF_AMANDA=m
395CONFIG_IP_NF_QUEUE=m
396CONFIG_IP_NF_IPTABLES=m
397CONFIG_IP_NF_MATCH_LIMIT=m
398CONFIG_IP_NF_MATCH_IPRANGE=m
399CONFIG_IP_NF_MATCH_MAC=m
400CONFIG_IP_NF_MATCH_PKTTYPE=m
401CONFIG_IP_NF_MATCH_MARK=m
402CONFIG_IP_NF_MATCH_MULTIPORT=m
403CONFIG_IP_NF_MATCH_TOS=m
404CONFIG_IP_NF_MATCH_RECENT=m
405CONFIG_IP_NF_MATCH_ECN=m
406CONFIG_IP_NF_MATCH_DSCP=m
407CONFIG_IP_NF_MATCH_AH_ESP=m
408CONFIG_IP_NF_MATCH_LENGTH=m
409CONFIG_IP_NF_MATCH_TTL=m
410CONFIG_IP_NF_MATCH_TCPMSS=m
411CONFIG_IP_NF_MATCH_HELPER=m
412CONFIG_IP_NF_MATCH_STATE=m
413CONFIG_IP_NF_MATCH_CONNTRACK=m
414CONFIG_IP_NF_MATCH_OWNER=m
415# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
416# CONFIG_IP_NF_MATCH_REALM is not set
417# CONFIG_IP_NF_MATCH_SCTP is not set
418# CONFIG_IP_NF_MATCH_COMMENT is not set
419# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
420CONFIG_IP_NF_FILTER=m
421CONFIG_IP_NF_TARGET_REJECT=m
422CONFIG_IP_NF_TARGET_LOG=m
423CONFIG_IP_NF_TARGET_ULOG=m
424CONFIG_IP_NF_TARGET_TCPMSS=m
425CONFIG_IP_NF_NAT=m
426CONFIG_IP_NF_NAT_NEEDED=y
427CONFIG_IP_NF_TARGET_MASQUERADE=m
428CONFIG_IP_NF_TARGET_REDIRECT=m
429CONFIG_IP_NF_TARGET_NETMAP=m
430CONFIG_IP_NF_TARGET_SAME=m
431CONFIG_IP_NF_NAT_SNMP_BASIC=m
432CONFIG_IP_NF_NAT_IRC=m
433CONFIG_IP_NF_NAT_FTP=m
434CONFIG_IP_NF_NAT_TFTP=m
435CONFIG_IP_NF_NAT_AMANDA=m
436CONFIG_IP_NF_MANGLE=m
437CONFIG_IP_NF_TARGET_TOS=m
438CONFIG_IP_NF_TARGET_ECN=m
439CONFIG_IP_NF_TARGET_DSCP=m
440CONFIG_IP_NF_TARGET_MARK=m
441CONFIG_IP_NF_TARGET_CLASSIFY=m
442# CONFIG_IP_NF_RAW is not set
443CONFIG_IP_NF_ARPTABLES=m
444CONFIG_IP_NF_ARPFILTER=m
445CONFIG_IP_NF_ARP_MANGLE=m
446CONFIG_IP_NF_COMPAT_IPCHAINS=m
447CONFIG_IP_NF_COMPAT_IPFWADM=m
448CONFIG_XFRM=y
449CONFIG_XFRM_USER=m
450
451#
452# SCTP Configuration (EXPERIMENTAL)
453#
454# CONFIG_IP_SCTP is not set
455# CONFIG_ATM is not set
456# CONFIG_BRIDGE is not set
457# CONFIG_VLAN_8021Q is not set
458# CONFIG_DECNET is not set
459CONFIG_LLC=m
460CONFIG_LLC2=m
461# CONFIG_IPX is not set
462# CONFIG_ATALK is not set
463# CONFIG_X25 is not set
464# CONFIG_LAPB is not set
465# CONFIG_NET_DIVERT is not set
466# CONFIG_ECONET is not set
467# CONFIG_WAN_ROUTER is not set
468
469#
470# QoS and/or fair queueing
471#
472# CONFIG_NET_SCHED is not set
473# CONFIG_NET_CLS_ROUTE is not set
474
475#
476# Network testing
477# 560#
478# CONFIG_NET_PKTGEN is not set
479# CONFIG_NETPOLL is not set
480# CONFIG_NET_POLL_CONTROLLER is not set
481# CONFIG_HAMRADIO is not set
482# CONFIG_IRDA is not set
483# CONFIG_BT is not set
484CONFIG_NETDEVICES=y 561CONFIG_NETDEVICES=y
485CONFIG_DUMMY=m 562CONFIG_DUMMY=m
486CONFIG_BONDING=m 563CONFIG_BONDING=m
487# CONFIG_EQUALIZER is not set 564# CONFIG_EQUALIZER is not set
488CONFIG_TUN=m 565CONFIG_TUN=m
489# CONFIG_ETHERTAP is not set
490 566
491# 567#
492# ARCnet devices 568# ARCnet devices
@@ -494,12 +570,18 @@ CONFIG_TUN=m
494# CONFIG_ARCNET is not set 570# CONFIG_ARCNET is not set
495 571
496# 572#
573# PHY device support
574#
575# CONFIG_PHYLIB is not set
576
577#
497# Ethernet (10 or 100Mbit) 578# Ethernet (10 or 100Mbit)
498# 579#
499CONFIG_NET_ETHERNET=y 580CONFIG_NET_ETHERNET=y
500CONFIG_MII=m 581CONFIG_MII=m
501CONFIG_HAPPYMEAL=m 582# CONFIG_HAPPYMEAL is not set
502# CONFIG_SUNGEM is not set 583# CONFIG_SUNGEM is not set
584# CONFIG_CASSINI is not set
503# CONFIG_NET_VENDOR_3COM is not set 585# CONFIG_NET_VENDOR_3COM is not set
504 586
505# 587#
@@ -514,28 +596,22 @@ CONFIG_TULIP_MMIO=y
514# CONFIG_DE4X5 is not set 596# CONFIG_DE4X5 is not set
515# CONFIG_WINBOND_840 is not set 597# CONFIG_WINBOND_840 is not set
516# CONFIG_DM9102 is not set 598# CONFIG_DM9102 is not set
599# CONFIG_ULI526X is not set
517# CONFIG_HP100 is not set 600# CONFIG_HP100 is not set
518CONFIG_NET_PCI=y 601CONFIG_NET_PCI=y
519CONFIG_PCNET32=m 602# CONFIG_PCNET32 is not set
520# CONFIG_AMD8111_ETH is not set 603# CONFIG_AMD8111_ETH is not set
521CONFIG_ADAPTEC_STARFIRE=m 604# CONFIG_ADAPTEC_STARFIRE is not set
522# CONFIG_ADAPTEC_STARFIRE_NAPI is not set 605# CONFIG_B44 is not set
523CONFIG_B44=m
524# CONFIG_FORCEDETH is not set 606# CONFIG_FORCEDETH is not set
525# CONFIG_DGRS is not set 607# CONFIG_DGRS is not set
526CONFIG_EEPRO100=m 608# CONFIG_EEPRO100 is not set
527# CONFIG_EEPRO100_PIO is not set
528CONFIG_E100=m 609CONFIG_E100=m
529# CONFIG_E100_NAPI is not set
530# CONFIG_FEALNX is not set 610# CONFIG_FEALNX is not set
531CONFIG_NATSEMI=m 611# CONFIG_NATSEMI is not set
532# CONFIG_NE2K_PCI is not set 612# CONFIG_NE2K_PCI is not set
533# CONFIG_8139CP is not set 613# CONFIG_8139CP is not set
534CONFIG_8139TOO=m 614# CONFIG_8139TOO is not set
535# CONFIG_8139TOO_PIO is not set
536# CONFIG_8139TOO_TUNE_TWISTER is not set
537# CONFIG_8139TOO_8129 is not set
538# CONFIG_8139_OLD_RX_RESET is not set
539# CONFIG_SIS900 is not set 615# CONFIG_SIS900 is not set
540# CONFIG_EPIC100 is not set 616# CONFIG_EPIC100 is not set
541# CONFIG_SUNDANCE is not set 617# CONFIG_SUNDANCE is not set
@@ -554,15 +630,18 @@ CONFIG_E1000=m
554# CONFIG_HAMACHI is not set 630# CONFIG_HAMACHI is not set
555# CONFIG_YELLOWFIN is not set 631# CONFIG_YELLOWFIN is not set
556# CONFIG_R8169 is not set 632# CONFIG_R8169 is not set
633# CONFIG_SIS190 is not set
634# CONFIG_SKGE is not set
557# CONFIG_SK98LIN is not set 635# CONFIG_SK98LIN is not set
558# CONFIG_VIA_VELOCITY is not set 636# CONFIG_VIA_VELOCITY is not set
559CONFIG_TIGON3=m 637CONFIG_TIGON3=m
638# CONFIG_BNX2 is not set
560 639
561# 640#
562# Ethernet (10000 Mbit) 641# Ethernet (10000 Mbit)
563# 642#
564CONFIG_IXGB=y 643# CONFIG_CHELSIO_T1 is not set
565CONFIG_IXGB_NAPI=y 644# CONFIG_IXGB is not set
566# CONFIG_S2IO is not set 645# CONFIG_S2IO is not set
567 646
568# 647#
@@ -593,6 +672,8 @@ CONFIG_PPPOE=m
593# CONFIG_NET_FC is not set 672# CONFIG_NET_FC is not set
594# CONFIG_SHAPER is not set 673# CONFIG_SHAPER is not set
595# CONFIG_NETCONSOLE is not set 674# CONFIG_NETCONSOLE is not set
675# CONFIG_NETPOLL is not set
676# CONFIG_NET_POLL_CONTROLLER is not set
596 677
597# 678#
598# ISDN subsystem 679# ISDN subsystem
@@ -622,16 +703,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=1200
622# CONFIG_INPUT_EVBUG is not set 703# CONFIG_INPUT_EVBUG is not set
623 704
624# 705#
625# Input I/O drivers
626#
627# CONFIG_GAMEPORT is not set
628CONFIG_SOUND_GAMEPORT=y
629CONFIG_SERIO=m
630CONFIG_SERIO_SERPORT=m
631# CONFIG_SERIO_PCIPS2 is not set
632# CONFIG_SERIO_RAW is not set
633
634#
635# Input Device Drivers 706# Input Device Drivers
636# 707#
637CONFIG_INPUT_KEYBOARD=y 708CONFIG_INPUT_KEYBOARD=y
@@ -649,6 +720,16 @@ CONFIG_INPUT_MOUSE=y
649# CONFIG_INPUT_MISC is not set 720# CONFIG_INPUT_MISC is not set
650 721
651# 722#
723# Hardware I/O ports
724#
725CONFIG_SERIO=m
726CONFIG_SERIO_SERPORT=m
727# CONFIG_SERIO_PCIPS2 is not set
728CONFIG_SERIO_LIBPS2=m
729# CONFIG_SERIO_RAW is not set
730# CONFIG_GAMEPORT is not set
731
732#
652# Character devices 733# Character devices
653# 734#
654CONFIG_VT=y 735CONFIG_VT=y
@@ -666,7 +747,6 @@ CONFIG_SERIAL_8250_EXTENDED=y
666CONFIG_SERIAL_8250_MANY_PORTS=y 747CONFIG_SERIAL_8250_MANY_PORTS=y
667CONFIG_SERIAL_8250_SHARE_IRQ=y 748CONFIG_SERIAL_8250_SHARE_IRQ=y
668# CONFIG_SERIAL_8250_DETECT_IRQ is not set 749# CONFIG_SERIAL_8250_DETECT_IRQ is not set
669# CONFIG_SERIAL_8250_MULTIPORT is not set
670# CONFIG_SERIAL_8250_RSA is not set 750# CONFIG_SERIAL_8250_RSA is not set
671 751
672# 752#
@@ -676,6 +756,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
676# CONFIG_PDC_CONSOLE is not set 756# CONFIG_PDC_CONSOLE is not set
677CONFIG_SERIAL_CORE=y 757CONFIG_SERIAL_CORE=y
678CONFIG_SERIAL_CORE_CONSOLE=y 758CONFIG_SERIAL_CORE_CONSOLE=y
759# CONFIG_SERIAL_JSM is not set
679CONFIG_UNIX98_PTYS=y 760CONFIG_UNIX98_PTYS=y
680CONFIG_LEGACY_PTYS=y 761CONFIG_LEGACY_PTYS=y
681CONFIG_LEGACY_PTY_COUNT=256 762CONFIG_LEGACY_PTY_COUNT=256
@@ -698,12 +779,16 @@ CONFIG_GEN_RTC_X=y
698# 779#
699# Ftape, the floppy tape device driver 780# Ftape, the floppy tape device driver
700# 781#
701# CONFIG_AGP is not set
702# CONFIG_DRM is not set 782# CONFIG_DRM is not set
703CONFIG_RAW_DRIVER=y 783CONFIG_RAW_DRIVER=y
704CONFIG_MAX_RAW_DEVS=256 784CONFIG_MAX_RAW_DEVS=256
705 785
706# 786#
787# TPM devices
788#
789# CONFIG_TCG_TPM is not set
790
791#
707# I2C support 792# I2C support
708# 793#
709# CONFIG_I2C is not set 794# CONFIG_I2C is not set
@@ -714,10 +799,20 @@ CONFIG_MAX_RAW_DEVS=256
714# CONFIG_W1 is not set 799# CONFIG_W1 is not set
715 800
716# 801#
802# Hardware Monitoring support
803#
804# CONFIG_HWMON is not set
805# CONFIG_HWMON_VID is not set
806
807#
717# Misc devices 808# Misc devices
718# 809#
719 810
720# 811#
812# Multimedia Capabilities Port drivers
813#
814
815#
721# Multimedia devices 816# Multimedia devices
722# 817#
723# CONFIG_VIDEO_DEV is not set 818# CONFIG_VIDEO_DEV is not set
@@ -731,6 +826,11 @@ CONFIG_MAX_RAW_DEVS=256
731# Graphics support 826# Graphics support
732# 827#
733CONFIG_FB=y 828CONFIG_FB=y
829CONFIG_FB_CFB_FILLRECT=y
830CONFIG_FB_CFB_COPYAREA=y
831CONFIG_FB_CFB_IMAGEBLIT=y
832CONFIG_FB_SOFT_CURSOR=y
833# CONFIG_FB_MACMODES is not set
734# CONFIG_FB_MODE_HELPERS is not set 834# CONFIG_FB_MODE_HELPERS is not set
735# CONFIG_FB_TILEBLITTING is not set 835# CONFIG_FB_TILEBLITTING is not set
736# CONFIG_FB_CIRRUS is not set 836# CONFIG_FB_CIRRUS is not set
@@ -739,6 +839,7 @@ CONFIG_FB=y
739# CONFIG_FB_ASILIANT is not set 839# CONFIG_FB_ASILIANT is not set
740# CONFIG_FB_IMSTT is not set 840# CONFIG_FB_IMSTT is not set
741CONFIG_FB_STI=y 841CONFIG_FB_STI=y
842# CONFIG_FB_NVIDIA is not set
742# CONFIG_FB_RIVA is not set 843# CONFIG_FB_RIVA is not set
743# CONFIG_FB_MATROX is not set 844# CONFIG_FB_MATROX is not set
744# CONFIG_FB_RADEON_OLD is not set 845# CONFIG_FB_RADEON_OLD is not set
@@ -751,18 +852,20 @@ CONFIG_FB_STI=y
751# CONFIG_FB_KYRO is not set 852# CONFIG_FB_KYRO is not set
752# CONFIG_FB_3DFX is not set 853# CONFIG_FB_3DFX is not set
753# CONFIG_FB_VOODOO1 is not set 854# CONFIG_FB_VOODOO1 is not set
855# CONFIG_FB_CYBLA is not set
754# CONFIG_FB_TRIDENT is not set 856# CONFIG_FB_TRIDENT is not set
755# CONFIG_FB_PM3 is not set 857# CONFIG_FB_PM3 is not set
858# CONFIG_FB_S1D13XXX is not set
756# CONFIG_FB_VIRTUAL is not set 859# CONFIG_FB_VIRTUAL is not set
757 860
758# 861#
759# Console display driver support 862# Console display driver support
760# 863#
761CONFIG_STI_CONSOLE=y 864CONFIG_DUMMY_CONSOLE=y
762CONFIG_DUMMY_CONSOLE_COLUMNS=160 865CONFIG_DUMMY_CONSOLE_COLUMNS=160
763CONFIG_DUMMY_CONSOLE_ROWS=64 866CONFIG_DUMMY_CONSOLE_ROWS=64
764CONFIG_DUMMY_CONSOLE=y
765CONFIG_FRAMEBUFFER_CONSOLE=y 867CONFIG_FRAMEBUFFER_CONSOLE=y
868CONFIG_STI_CONSOLE=y
766# CONFIG_FONTS is not set 869# CONFIG_FONTS is not set
767CONFIG_FONT_8x8=y 870CONFIG_FONT_8x8=y
768CONFIG_FONT_8x16=y 871CONFIG_FONT_8x16=y
@@ -775,6 +878,7 @@ CONFIG_LOGO=y
775# CONFIG_LOGO_LINUX_VGA16 is not set 878# CONFIG_LOGO_LINUX_VGA16 is not set
776# CONFIG_LOGO_LINUX_CLUT224 is not set 879# CONFIG_LOGO_LINUX_CLUT224 is not set
777CONFIG_LOGO_PARISC_CLUT224=y 880CONFIG_LOGO_PARISC_CLUT224=y
881# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
778 882
779# 883#
780# Sound 884# Sound
@@ -784,7 +888,78 @@ CONFIG_SOUND=y
784# 888#
785# Advanced Linux Sound Architecture 889# Advanced Linux Sound Architecture
786# 890#
787# CONFIG_SND is not set 891CONFIG_SND=y
892CONFIG_SND_TIMER=y
893CONFIG_SND_PCM=y
894CONFIG_SND_SEQUENCER=y
895# CONFIG_SND_SEQ_DUMMY is not set
896CONFIG_SND_OSSEMUL=y
897CONFIG_SND_MIXER_OSS=y
898CONFIG_SND_PCM_OSS=y
899CONFIG_SND_SEQUENCER_OSS=y
900# CONFIG_SND_VERBOSE_PRINTK is not set
901# CONFIG_SND_DEBUG is not set
902
903#
904# Generic devices
905#
906# CONFIG_SND_DUMMY is not set
907# CONFIG_SND_VIRMIDI is not set
908# CONFIG_SND_MTPAV is not set
909# CONFIG_SND_SERIAL_U16550 is not set
910# CONFIG_SND_MPU401 is not set
911CONFIG_SND_AC97_CODEC=y
912CONFIG_SND_AC97_BUS=y
913
914#
915# PCI devices
916#
917# CONFIG_SND_ALI5451 is not set
918# CONFIG_SND_ATIIXP is not set
919# CONFIG_SND_ATIIXP_MODEM is not set
920# CONFIG_SND_AU8810 is not set
921# CONFIG_SND_AU8820 is not set
922# CONFIG_SND_AU8830 is not set
923# CONFIG_SND_AZT3328 is not set
924# CONFIG_SND_BT87X is not set
925# CONFIG_SND_CS46XX is not set
926# CONFIG_SND_CS4281 is not set
927# CONFIG_SND_EMU10K1 is not set
928# CONFIG_SND_EMU10K1X is not set
929# CONFIG_SND_CA0106 is not set
930# CONFIG_SND_KORG1212 is not set
931# CONFIG_SND_MIXART is not set
932# CONFIG_SND_NM256 is not set
933# CONFIG_SND_RME32 is not set
934# CONFIG_SND_RME96 is not set
935# CONFIG_SND_RME9652 is not set
936# CONFIG_SND_HDSP is not set
937# CONFIG_SND_HDSPM is not set
938# CONFIG_SND_TRIDENT is not set
939# CONFIG_SND_YMFPCI is not set
940CONFIG_SND_AD1889=y
941# CONFIG_SND_AD1889_OPL3 is not set
942# CONFIG_SND_CMIPCI is not set
943# CONFIG_SND_ENS1370 is not set
944# CONFIG_SND_ENS1371 is not set
945# CONFIG_SND_ES1938 is not set
946# CONFIG_SND_ES1968 is not set
947# CONFIG_SND_MAESTRO3 is not set
948# CONFIG_SND_FM801 is not set
949# CONFIG_SND_ICE1712 is not set
950# CONFIG_SND_ICE1724 is not set
951# CONFIG_SND_INTEL8X0 is not set
952# CONFIG_SND_INTEL8X0M is not set
953# CONFIG_SND_SONICVIBES is not set
954# CONFIG_SND_VIA82XX is not set
955# CONFIG_SND_VIA82XX_MODEM is not set
956# CONFIG_SND_VX222 is not set
957# CONFIG_SND_HDA_INTEL is not set
958
959#
960# USB devices
961#
962# CONFIG_SND_USB_AUDIO is not set
788 963
789# 964#
790# Open Sound System 965# Open Sound System
@@ -794,6 +969,8 @@ CONFIG_SOUND=y
794# 969#
795# USB support 970# USB support
796# 971#
972CONFIG_USB_ARCH_HAS_HCD=y
973CONFIG_USB_ARCH_HAS_OHCI=y
797CONFIG_USB=y 974CONFIG_USB=y
798CONFIG_USB_DEBUG=y 975CONFIG_USB_DEBUG=y
799 976
@@ -804,23 +981,23 @@ CONFIG_USB_DEVICEFS=y
804# CONFIG_USB_BANDWIDTH is not set 981# CONFIG_USB_BANDWIDTH is not set
805# CONFIG_USB_DYNAMIC_MINORS is not set 982# CONFIG_USB_DYNAMIC_MINORS is not set
806# CONFIG_USB_OTG is not set 983# CONFIG_USB_OTG is not set
807CONFIG_USB_ARCH_HAS_HCD=y
808CONFIG_USB_ARCH_HAS_OHCI=y
809 984
810# 985#
811# USB Host Controller Drivers 986# USB Host Controller Drivers
812# 987#
813# CONFIG_USB_EHCI_HCD is not set 988# CONFIG_USB_EHCI_HCD is not set
989# CONFIG_USB_ISP116X_HCD is not set
814CONFIG_USB_OHCI_HCD=y 990CONFIG_USB_OHCI_HCD=y
991# CONFIG_USB_OHCI_BIG_ENDIAN is not set
992CONFIG_USB_OHCI_LITTLE_ENDIAN=y
815# CONFIG_USB_UHCI_HCD is not set 993# CONFIG_USB_UHCI_HCD is not set
816# CONFIG_USB_SL811_HCD is not set 994# CONFIG_USB_SL811_HCD is not set
817 995
818# 996#
819# USB Device Class drivers 997# USB Device Class drivers
820# 998#
821# CONFIG_USB_AUDIO is not set 999# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
822# CONFIG_USB_BLUETOOTH_TTY is not set 1000# CONFIG_USB_BLUETOOTH_TTY is not set
823# CONFIG_USB_MIDI is not set
824# CONFIG_USB_ACM is not set 1001# CONFIG_USB_ACM is not set
825CONFIG_USB_PRINTER=m 1002CONFIG_USB_PRINTER=m
826 1003
@@ -829,12 +1006,11 @@ CONFIG_USB_PRINTER=m
829# 1006#
830CONFIG_USB_STORAGE=m 1007CONFIG_USB_STORAGE=m
831# CONFIG_USB_STORAGE_DEBUG is not set 1008# CONFIG_USB_STORAGE_DEBUG is not set
832# CONFIG_USB_STORAGE_RW_DETECT is not set 1009# CONFIG_USB_STORAGE_DATAFAB is not set
833CONFIG_USB_STORAGE_DATAFAB=y 1010# CONFIG_USB_STORAGE_FREECOM is not set
834CONFIG_USB_STORAGE_FREECOM=y
835# CONFIG_USB_STORAGE_ISD200 is not set 1011# CONFIG_USB_STORAGE_ISD200 is not set
836CONFIG_USB_STORAGE_DPCM=y 1012CONFIG_USB_STORAGE_DPCM=y
837CONFIG_USB_STORAGE_HP8200e=y 1013CONFIG_USB_STORAGE_USBAT=y
838CONFIG_USB_STORAGE_SDDR09=y 1014CONFIG_USB_STORAGE_SDDR09=y
839CONFIG_USB_STORAGE_SDDR55=y 1015CONFIG_USB_STORAGE_SDDR55=y
840CONFIG_USB_STORAGE_JUMPSHOT=y 1016CONFIG_USB_STORAGE_JUMPSHOT=y
@@ -846,21 +1022,25 @@ CONFIG_USB_HID=y
846CONFIG_USB_HIDINPUT=y 1022CONFIG_USB_HIDINPUT=y
847# CONFIG_HID_FF is not set 1023# CONFIG_HID_FF is not set
848CONFIG_USB_HIDDEV=y 1024CONFIG_USB_HIDDEV=y
849CONFIG_USB_AIPTEK=m 1025# CONFIG_USB_AIPTEK is not set
850CONFIG_USB_WACOM=m 1026# CONFIG_USB_WACOM is not set
851CONFIG_USB_KBTAB=m 1027# CONFIG_USB_ACECAD is not set
1028# CONFIG_USB_KBTAB is not set
852# CONFIG_USB_POWERMATE is not set 1029# CONFIG_USB_POWERMATE is not set
853# CONFIG_USB_MTOUCH is not set 1030# CONFIG_USB_MTOUCH is not set
1031# CONFIG_USB_ITMTOUCH is not set
854# CONFIG_USB_EGALAX is not set 1032# CONFIG_USB_EGALAX is not set
1033# CONFIG_USB_YEALINK is not set
855# CONFIG_USB_XPAD is not set 1034# CONFIG_USB_XPAD is not set
856# CONFIG_USB_ATI_REMOTE is not set 1035# CONFIG_USB_ATI_REMOTE is not set
1036# CONFIG_USB_KEYSPAN_REMOTE is not set
1037# CONFIG_USB_APPLETOUCH is not set
857 1038
858# 1039#
859# USB Imaging devices 1040# USB Imaging devices
860# 1041#
861CONFIG_USB_MDC800=m 1042CONFIG_USB_MDC800=m
862CONFIG_USB_MICROTEK=m 1043CONFIG_USB_MICROTEK=m
863CONFIG_USB_HPUSBSCSI=m
864 1044
865# 1045#
866# USB Multimedia devices 1046# USB Multimedia devices
@@ -879,6 +1059,7 @@ CONFIG_USB_HPUSBSCSI=m
879# CONFIG_USB_PEGASUS is not set 1059# CONFIG_USB_PEGASUS is not set
880# CONFIG_USB_RTL8150 is not set 1060# CONFIG_USB_RTL8150 is not set
881# CONFIG_USB_USBNET is not set 1061# CONFIG_USB_USBNET is not set
1062# CONFIG_USB_MON is not set
882 1063
883# 1064#
884# USB port drivers 1065# USB port drivers
@@ -894,7 +1075,6 @@ CONFIG_USB_HPUSBSCSI=m
894# 1075#
895# CONFIG_USB_EMI62 is not set 1076# CONFIG_USB_EMI62 is not set
896# CONFIG_USB_EMI26 is not set 1077# CONFIG_USB_EMI26 is not set
897# CONFIG_USB_TIGL is not set
898# CONFIG_USB_AUERSWALD is not set 1078# CONFIG_USB_AUERSWALD is not set
899# CONFIG_USB_RIO500 is not set 1079# CONFIG_USB_RIO500 is not set
900CONFIG_USB_LEGOTOWER=m 1080CONFIG_USB_LEGOTOWER=m
@@ -903,10 +1083,12 @@ CONFIG_USB_LEGOTOWER=m
903# CONFIG_USB_CYTHERM is not set 1083# CONFIG_USB_CYTHERM is not set
904# CONFIG_USB_PHIDGETKIT is not set 1084# CONFIG_USB_PHIDGETKIT is not set
905# CONFIG_USB_PHIDGETSERVO is not set 1085# CONFIG_USB_PHIDGETSERVO is not set
1086# CONFIG_USB_IDMOUSE is not set
1087# CONFIG_USB_LD is not set
906# CONFIG_USB_TEST is not set 1088# CONFIG_USB_TEST is not set
907 1089
908# 1090#
909# USB ATM/DSL drivers 1091# USB DSL modem support
910# 1092#
911 1093
912# 1094#
@@ -920,27 +1102,41 @@ CONFIG_USB_LEGOTOWER=m
920# CONFIG_MMC is not set 1102# CONFIG_MMC is not set
921 1103
922# 1104#
1105# InfiniBand support
1106#
1107# CONFIG_INFINIBAND is not set
1108
1109#
1110# SN Devices
1111#
1112
1113#
923# File systems 1114# File systems
924# 1115#
925CONFIG_EXT2_FS=y 1116CONFIG_EXT2_FS=y
926# CONFIG_EXT2_FS_XATTR is not set 1117# CONFIG_EXT2_FS_XATTR is not set
1118# CONFIG_EXT2_FS_XIP is not set
927CONFIG_EXT3_FS=y 1119CONFIG_EXT3_FS=y
928# CONFIG_EXT3_FS_XATTR is not set 1120# CONFIG_EXT3_FS_XATTR is not set
929CONFIG_JBD=y 1121CONFIG_JBD=y
930# CONFIG_JBD_DEBUG is not set 1122# CONFIG_JBD_DEBUG is not set
931# CONFIG_REISERFS_FS is not set 1123# CONFIG_REISERFS_FS is not set
932# CONFIG_JFS_FS is not set 1124# CONFIG_JFS_FS is not set
1125# CONFIG_FS_POSIX_ACL is not set
933CONFIG_XFS_FS=m 1126CONFIG_XFS_FS=m
934# CONFIG_XFS_RT is not set 1127CONFIG_XFS_EXPORT=y
935# CONFIG_XFS_QUOTA is not set 1128# CONFIG_XFS_QUOTA is not set
936# CONFIG_XFS_SECURITY is not set 1129# CONFIG_XFS_SECURITY is not set
937# CONFIG_XFS_POSIX_ACL is not set 1130# CONFIG_XFS_POSIX_ACL is not set
1131# CONFIG_XFS_RT is not set
938# CONFIG_MINIX_FS is not set 1132# CONFIG_MINIX_FS is not set
939# CONFIG_ROMFS_FS is not set 1133# CONFIG_ROMFS_FS is not set
1134CONFIG_INOTIFY=y
940# CONFIG_QUOTA is not set 1135# CONFIG_QUOTA is not set
941CONFIG_DNOTIFY=y 1136CONFIG_DNOTIFY=y
942# CONFIG_AUTOFS_FS is not set 1137# CONFIG_AUTOFS_FS is not set
943CONFIG_AUTOFS4_FS=y 1138CONFIG_AUTOFS4_FS=y
1139# CONFIG_FUSE_FS is not set
944 1140
945# 1141#
946# CD-ROM/DVD Filesystems 1142# CD-ROM/DVD Filesystems
@@ -966,13 +1162,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
966CONFIG_PROC_FS=y 1162CONFIG_PROC_FS=y
967CONFIG_PROC_KCORE=y 1163CONFIG_PROC_KCORE=y
968CONFIG_SYSFS=y 1164CONFIG_SYSFS=y
969# CONFIG_DEVFS_FS is not set
970# CONFIG_DEVPTS_FS_XATTR is not set
971CONFIG_TMPFS=y 1165CONFIG_TMPFS=y
972# CONFIG_TMPFS_XATTR is not set
973# CONFIG_HUGETLBFS is not set 1166# CONFIG_HUGETLBFS is not set
974# CONFIG_HUGETLB_PAGE is not set 1167# CONFIG_HUGETLB_PAGE is not set
975CONFIG_RAMFS=y 1168CONFIG_RAMFS=y
1169# CONFIG_RELAYFS_FS is not set
976 1170
977# 1171#
978# Miscellaneous filesystems 1172# Miscellaneous filesystems
@@ -996,16 +1190,19 @@ CONFIG_RAMFS=y
996# 1190#
997CONFIG_NFS_FS=y 1191CONFIG_NFS_FS=y
998CONFIG_NFS_V3=y 1192CONFIG_NFS_V3=y
1193# CONFIG_NFS_V3_ACL is not set
999# CONFIG_NFS_V4 is not set 1194# CONFIG_NFS_V4 is not set
1000# CONFIG_NFS_DIRECTIO is not set 1195# CONFIG_NFS_DIRECTIO is not set
1001CONFIG_NFSD=y 1196CONFIG_NFSD=y
1002CONFIG_NFSD_V3=y 1197CONFIG_NFSD_V3=y
1198# CONFIG_NFSD_V3_ACL is not set
1003# CONFIG_NFSD_V4 is not set 1199# CONFIG_NFSD_V4 is not set
1004# CONFIG_NFSD_TCP is not set 1200# CONFIG_NFSD_TCP is not set
1005CONFIG_ROOT_NFS=y 1201CONFIG_ROOT_NFS=y
1006CONFIG_LOCKD=y 1202CONFIG_LOCKD=y
1007CONFIG_LOCKD_V4=y 1203CONFIG_LOCKD_V4=y
1008CONFIG_EXPORTFS=y 1204CONFIG_EXPORTFS=y
1205CONFIG_NFS_COMMON=y
1009CONFIG_SUNRPC=y 1206CONFIG_SUNRPC=y
1010# CONFIG_RPCSEC_GSS_KRB5 is not set 1207# CONFIG_RPCSEC_GSS_KRB5 is not set
1011# CONFIG_RPCSEC_GSS_SPKM3 is not set 1208# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -1014,6 +1211,7 @@ CONFIG_SUNRPC=y
1014# CONFIG_NCP_FS is not set 1211# CONFIG_NCP_FS is not set
1015# CONFIG_CODA_FS is not set 1212# CONFIG_CODA_FS is not set
1016# CONFIG_AFS_FS is not set 1213# CONFIG_AFS_FS is not set
1214# CONFIG_9P_FS is not set
1017 1215
1018# 1216#
1019# Partition Types 1217# Partition Types
@@ -1074,13 +1272,19 @@ CONFIG_OPROFILE=m
1074# 1272#
1075# Kernel hacking 1273# Kernel hacking
1076# 1274#
1275# CONFIG_PRINTK_TIME is not set
1077CONFIG_DEBUG_KERNEL=y 1276CONFIG_DEBUG_KERNEL=y
1078CONFIG_MAGIC_SYSRQ=y 1277CONFIG_MAGIC_SYSRQ=y
1278CONFIG_LOG_BUF_SHIFT=16
1279CONFIG_DETECT_SOFTLOCKUP=y
1079# CONFIG_SCHEDSTATS is not set 1280# CONFIG_SCHEDSTATS is not set
1080# CONFIG_DEBUG_SLAB is not set 1281# CONFIG_DEBUG_SLAB is not set
1081# CONFIG_DEBUG_SPINLOCK is not set 1282# CONFIG_DEBUG_SPINLOCK is not set
1283# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1082# CONFIG_DEBUG_KOBJECT is not set 1284# CONFIG_DEBUG_KOBJECT is not set
1083# CONFIG_DEBUG_INFO is not set 1285# CONFIG_DEBUG_INFO is not set
1286# CONFIG_DEBUG_IOREMAP is not set
1287# CONFIG_DEBUG_FS is not set
1084 1288
1085# 1289#
1086# Security options 1290# Security options
@@ -1092,21 +1296,22 @@ CONFIG_MAGIC_SYSRQ=y
1092# Cryptographic options 1296# Cryptographic options
1093# 1297#
1094CONFIG_CRYPTO=y 1298CONFIG_CRYPTO=y
1095CONFIG_CRYPTO_HMAC=y 1299# CONFIG_CRYPTO_HMAC is not set
1096CONFIG_CRYPTO_NULL=m 1300CONFIG_CRYPTO_NULL=m
1097CONFIG_CRYPTO_MD4=m 1301# CONFIG_CRYPTO_MD4 is not set
1098CONFIG_CRYPTO_MD5=m 1302CONFIG_CRYPTO_MD5=m
1099CONFIG_CRYPTO_SHA1=m 1303# CONFIG_CRYPTO_SHA1 is not set
1100CONFIG_CRYPTO_SHA256=m 1304# CONFIG_CRYPTO_SHA256 is not set
1101# CONFIG_CRYPTO_SHA512 is not set 1305# CONFIG_CRYPTO_SHA512 is not set
1102# CONFIG_CRYPTO_WP512 is not set 1306# CONFIG_CRYPTO_WP512 is not set
1307# CONFIG_CRYPTO_TGR192 is not set
1103CONFIG_CRYPTO_DES=m 1308CONFIG_CRYPTO_DES=m
1104CONFIG_CRYPTO_BLOWFISH=m 1309CONFIG_CRYPTO_BLOWFISH=m
1105CONFIG_CRYPTO_TWOFISH=m 1310# CONFIG_CRYPTO_TWOFISH is not set
1106CONFIG_CRYPTO_SERPENT=m 1311# CONFIG_CRYPTO_SERPENT is not set
1107CONFIG_CRYPTO_AES=m 1312# CONFIG_CRYPTO_AES is not set
1108CONFIG_CRYPTO_CAST5=m 1313# CONFIG_CRYPTO_CAST5 is not set
1109CONFIG_CRYPTO_CAST6=m 1314# CONFIG_CRYPTO_CAST6 is not set
1110# CONFIG_CRYPTO_TEA is not set 1315# CONFIG_CRYPTO_TEA is not set
1111# CONFIG_CRYPTO_ARC4 is not set 1316# CONFIG_CRYPTO_ARC4 is not set
1112# CONFIG_CRYPTO_KHAZAD is not set 1317# CONFIG_CRYPTO_KHAZAD is not set
@@ -1117,9 +1322,14 @@ CONFIG_CRYPTO_CRC32C=m
1117CONFIG_CRYPTO_TEST=m 1322CONFIG_CRYPTO_TEST=m
1118 1323
1119# 1324#
1325# Hardware crypto devices
1326#
1327
1328#
1120# Library routines 1329# Library routines
1121# 1330#
1122CONFIG_CRC_CCITT=m 1331CONFIG_CRC_CCITT=m
1332# CONFIG_CRC16 is not set
1123CONFIG_CRC32=y 1333CONFIG_CRC32=y
1124CONFIG_LIBCRC32C=m 1334CONFIG_LIBCRC32C=m
1125CONFIG_ZLIB_INFLATE=m 1335CONFIG_ZLIB_INFLATE=m
diff --git a/arch/parisc/defconfig b/arch/parisc/defconfig
index fdae21c503d7..f38a4620d24f 100644
--- a/arch/parisc/defconfig
+++ b/arch/parisc/defconfig
@@ -1,38 +1,56 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.14-rc5-pa1
4# Fri Oct 21 23:01:33 2005
3# 5#
4CONFIG_PARISC=y 6CONFIG_PARISC=y
5CONFIG_MMU=y 7CONFIG_MMU=y
6CONFIG_STACK_GROWSUP=y 8CONFIG_STACK_GROWSUP=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y
11CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y
8 13
9# 14#
10# Code maturity level options 15# Code maturity level options
11# 16#
12CONFIG_EXPERIMENTAL=y 17CONFIG_EXPERIMENTAL=y
13CONFIG_CLEAN_COMPILE=y 18CONFIG_CLEAN_COMPILE=y
14CONFIG_STANDALONE=y
15CONFIG_BROKEN_ON_SMP=y 19CONFIG_BROKEN_ON_SMP=y
20CONFIG_INIT_ENV_ARG_LIMIT=32
16 21
17# 22#
18# General setup 23# General setup
19# 24#
25CONFIG_LOCALVERSION=""
26# CONFIG_LOCALVERSION_AUTO is not set
20CONFIG_SWAP=y 27CONFIG_SWAP=y
21CONFIG_SYSVIPC=y 28CONFIG_SYSVIPC=y
29# CONFIG_POSIX_MQUEUE is not set
22# CONFIG_BSD_PROCESS_ACCT is not set 30# CONFIG_BSD_PROCESS_ACCT is not set
23CONFIG_SYSCTL=y 31CONFIG_SYSCTL=y
24CONFIG_LOG_BUF_SHIFT=15 32# CONFIG_AUDIT is not set
25# CONFIG_HOTPLUG is not set 33# CONFIG_HOTPLUG is not set
34CONFIG_KOBJECT_UEVENT=y
26CONFIG_IKCONFIG=y 35CONFIG_IKCONFIG=y
27CONFIG_IKCONFIG_PROC=y 36CONFIG_IKCONFIG_PROC=y
37CONFIG_INITRAMFS_SOURCE=""
28# CONFIG_EMBEDDED is not set 38# CONFIG_EMBEDDED is not set
29CONFIG_KALLSYMS=y 39CONFIG_KALLSYMS=y
40# CONFIG_KALLSYMS_ALL is not set
41# CONFIG_KALLSYMS_EXTRA_PASS is not set
42CONFIG_PRINTK=y
43CONFIG_BUG=y
44CONFIG_BASE_FULL=y
30CONFIG_FUTEX=y 45CONFIG_FUTEX=y
31CONFIG_EPOLL=y 46CONFIG_EPOLL=y
32CONFIG_IOSCHED_NOOP=y 47CONFIG_SHMEM=y
33CONFIG_IOSCHED_AS=y 48CONFIG_CC_ALIGN_FUNCTIONS=0
34CONFIG_IOSCHED_DEADLINE=y 49CONFIG_CC_ALIGN_LABELS=0
35# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 50CONFIG_CC_ALIGN_LOOPS=0
51CONFIG_CC_ALIGN_JUMPS=0
52# CONFIG_TINY_SHMEM is not set
53CONFIG_BASE_SMALL=0
36 54
37# 55#
38# Loadable module support 56# Loadable module support
@@ -45,10 +63,21 @@ CONFIG_IOSCHED_DEADLINE=y
45CONFIG_PA7000=y 63CONFIG_PA7000=y
46# CONFIG_PA7100LC is not set 64# CONFIG_PA7100LC is not set
47# CONFIG_PA7200 is not set 65# CONFIG_PA7200 is not set
66# CONFIG_PA7300LC is not set
48# CONFIG_PA8X00 is not set 67# CONFIG_PA8X00 is not set
49CONFIG_PA11=y 68CONFIG_PA11=y
50# CONFIG_64BIT is not set
51# CONFIG_SMP is not set 69# CONFIG_SMP is not set
70# CONFIG_HZ_100 is not set
71CONFIG_HZ_250=y
72# CONFIG_HZ_1000 is not set
73CONFIG_HZ=250
74CONFIG_SELECT_MEMORY_MODEL=y
75CONFIG_FLATMEM_MANUAL=y
76# CONFIG_DISCONTIGMEM_MANUAL is not set
77# CONFIG_SPARSEMEM_MANUAL is not set
78CONFIG_FLATMEM=y
79CONFIG_FLAT_NODE_MEM_MAP=y
80# CONFIG_SPARSEMEM_STATIC is not set
52# CONFIG_PREEMPT is not set 81# CONFIG_PREEMPT is not set
53# CONFIG_HPUX is not set 82# CONFIG_HPUX is not set
54 83
@@ -65,14 +94,29 @@ CONFIG_EISA_NAMES=y
65# CONFIG_ISA is not set 94# CONFIG_ISA is not set
66CONFIG_PCI=y 95CONFIG_PCI=y
67CONFIG_PCI_LEGACY_PROC=y 96CONFIG_PCI_LEGACY_PROC=y
68CONFIG_PCI_NAMES=y 97# CONFIG_PCI_DEBUG is not set
69CONFIG_GSC_DINO=y 98CONFIG_GSC_DINO=y
70CONFIG_PCI_LBA=y 99CONFIG_PCI_LBA=y
71CONFIG_IOSAPIC=y 100CONFIG_IOSAPIC=y
72CONFIG_IOMMU_SBA=y 101CONFIG_IOMMU_SBA=y
102
103#
104# PCCARD (PCMCIA/CardBus) support
105#
106# CONFIG_PCCARD is not set
107
108#
109# PCI Hotplug Support
110#
111# CONFIG_HOTPLUG_PCI is not set
112
113#
114# PA-RISC specific drivers
115#
73CONFIG_SUPERIO=y 116CONFIG_SUPERIO=y
74CONFIG_CHASSIS_LCD_LED=y 117CONFIG_CHASSIS_LCD_LED=y
75CONFIG_PDC_CHASSIS=y 118CONFIG_PDC_CHASSIS=y
119CONFIG_PDC_STABLE=y
76 120
77# 121#
78# Executable file formats 122# Executable file formats
@@ -81,15 +125,97 @@ CONFIG_BINFMT_ELF=y
81# CONFIG_BINFMT_MISC is not set 125# CONFIG_BINFMT_MISC is not set
82 126
83# 127#
128# Networking
129#
130CONFIG_NET=y
131
132#
133# Networking options
134#
135CONFIG_PACKET=y
136CONFIG_PACKET_MMAP=y
137CONFIG_UNIX=y
138# CONFIG_NET_KEY is not set
139CONFIG_INET=y
140CONFIG_IP_MULTICAST=y
141# CONFIG_IP_ADVANCED_ROUTER is not set
142CONFIG_IP_FIB_HASH=y
143CONFIG_IP_PNP=y
144# CONFIG_IP_PNP_DHCP is not set
145CONFIG_IP_PNP_BOOTP=y
146# CONFIG_IP_PNP_RARP is not set
147# CONFIG_NET_IPIP is not set
148# CONFIG_NET_IPGRE is not set
149# CONFIG_IP_MROUTE is not set
150# CONFIG_ARPD is not set
151# CONFIG_SYN_COOKIES is not set
152# CONFIG_INET_AH is not set
153# CONFIG_INET_ESP is not set
154# CONFIG_INET_IPCOMP is not set
155# CONFIG_INET_TUNNEL is not set
156# CONFIG_INET_DIAG is not set
157# CONFIG_TCP_CONG_ADVANCED is not set
158CONFIG_TCP_CONG_BIC=y
159CONFIG_IPV6=y
160# CONFIG_IPV6_PRIVACY is not set
161# CONFIG_INET6_AH is not set
162# CONFIG_INET6_ESP is not set
163# CONFIG_INET6_IPCOMP is not set
164# CONFIG_INET6_TUNNEL is not set
165# CONFIG_IPV6_TUNNEL is not set
166# CONFIG_NETFILTER is not set
167
168#
169# DCCP Configuration (EXPERIMENTAL)
170#
171# CONFIG_IP_DCCP is not set
172
173#
174# SCTP Configuration (EXPERIMENTAL)
175#
176# CONFIG_IP_SCTP is not set
177# CONFIG_ATM is not set
178# CONFIG_BRIDGE is not set
179# CONFIG_VLAN_8021Q is not set
180# CONFIG_DECNET is not set
181# CONFIG_LLC2 is not set
182# CONFIG_IPX is not set
183# CONFIG_ATALK is not set
184# CONFIG_X25 is not set
185# CONFIG_LAPB is not set
186# CONFIG_NET_DIVERT is not set
187# CONFIG_ECONET is not set
188# CONFIG_WAN_ROUTER is not set
189# CONFIG_NET_SCHED is not set
190# CONFIG_NET_CLS_ROUTE is not set
191
192#
193# Network testing
194#
195# CONFIG_NET_PKTGEN is not set
196# CONFIG_HAMRADIO is not set
197# CONFIG_IRDA is not set
198# CONFIG_BT is not set
199# CONFIG_IEEE80211 is not set
200
201#
84# Device Drivers 202# Device Drivers
85# 203#
86 204
87# 205#
88# Generic Driver Options 206# Generic Driver Options
89# 207#
208CONFIG_STANDALONE=y
209CONFIG_PREVENT_FIRMWARE_BUILD=y
210# CONFIG_FW_LOADER is not set
90# CONFIG_DEBUG_DRIVER is not set 211# CONFIG_DEBUG_DRIVER is not set
91 212
92# 213#
214# Connector - unified userspace <-> kernelspace linker
215#
216# CONFIG_CONNECTOR is not set
217
218#
93# Memory Technology Devices (MTD) 219# Memory Technology Devices (MTD)
94# 220#
95# CONFIG_MTD is not set 221# CONFIG_MTD is not set
@@ -99,12 +225,10 @@ CONFIG_BINFMT_ELF=y
99# 225#
100CONFIG_PARPORT=y 226CONFIG_PARPORT=y
101CONFIG_PARPORT_PC=y 227CONFIG_PARPORT_PC=y
102CONFIG_PARPORT_PC_CML1=y
103# CONFIG_PARPORT_SERIAL is not set 228# CONFIG_PARPORT_SERIAL is not set
104# CONFIG_PARPORT_PC_FIFO is not set 229# CONFIG_PARPORT_PC_FIFO is not set
105# CONFIG_PARPORT_PC_SUPERIO is not set 230# CONFIG_PARPORT_PC_SUPERIO is not set
106CONFIG_PARPORT_GSC=y 231CONFIG_PARPORT_GSC=y
107# CONFIG_PARPORT_OTHER is not set
108# CONFIG_PARPORT_1284 is not set 232# CONFIG_PARPORT_1284 is not set
109 233
110# 234#
@@ -114,18 +238,31 @@ CONFIG_PARPORT_GSC=y
114# 238#
115# Block devices 239# Block devices
116# 240#
117# CONFIG_BLK_DEV_FD is not set
118# CONFIG_PARIDE is not set 241# CONFIG_PARIDE is not set
119# CONFIG_BLK_CPQ_DA is not set 242# CONFIG_BLK_CPQ_DA is not set
120# CONFIG_BLK_CPQ_CISS_DA is not set 243# CONFIG_BLK_CPQ_CISS_DA is not set
121# CONFIG_BLK_DEV_DAC960 is not set 244# CONFIG_BLK_DEV_DAC960 is not set
122# CONFIG_BLK_DEV_UMEM is not set 245# CONFIG_BLK_DEV_UMEM is not set
246# CONFIG_BLK_DEV_COW_COMMON is not set
123CONFIG_BLK_DEV_LOOP=y 247CONFIG_BLK_DEV_LOOP=y
124CONFIG_BLK_DEV_CRYPTOLOOP=y 248CONFIG_BLK_DEV_CRYPTOLOOP=y
125# CONFIG_BLK_DEV_NBD is not set 249# CONFIG_BLK_DEV_NBD is not set
250# CONFIG_BLK_DEV_SX8 is not set
251# CONFIG_BLK_DEV_UB is not set
126CONFIG_BLK_DEV_RAM=y 252CONFIG_BLK_DEV_RAM=y
253CONFIG_BLK_DEV_RAM_COUNT=16
127CONFIG_BLK_DEV_RAM_SIZE=4096 254CONFIG_BLK_DEV_RAM_SIZE=4096
128CONFIG_BLK_DEV_INITRD=y 255CONFIG_BLK_DEV_INITRD=y
256# CONFIG_CDROM_PKTCDVD is not set
257
258#
259# IO Schedulers
260#
261CONFIG_IOSCHED_NOOP=y
262CONFIG_IOSCHED_AS=y
263CONFIG_IOSCHED_DEADLINE=y
264CONFIG_IOSCHED_CFQ=y
265# CONFIG_ATA_OVER_ETH is not set
129 266
130# 267#
131# ATA/ATAPI/MFM/RLL support 268# ATA/ATAPI/MFM/RLL support
@@ -135,6 +272,7 @@ CONFIG_BLK_DEV_INITRD=y
135# 272#
136# SCSI device support 273# SCSI device support
137# 274#
275# CONFIG_RAID_ATTRS is not set
138CONFIG_SCSI=y 276CONFIG_SCSI=y
139CONFIG_SCSI_PROC_FS=y 277CONFIG_SCSI_PROC_FS=y
140 278
@@ -147,53 +285,59 @@ CONFIG_CHR_DEV_ST=y
147CONFIG_BLK_DEV_SR=y 285CONFIG_BLK_DEV_SR=y
148# CONFIG_BLK_DEV_SR_VENDOR is not set 286# CONFIG_BLK_DEV_SR_VENDOR is not set
149CONFIG_CHR_DEV_SG=y 287CONFIG_CHR_DEV_SG=y
288# CONFIG_CHR_DEV_SCH is not set
150 289
151# 290#
152# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 291# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
153# 292#
154# CONFIG_SCSI_MULTI_LUN is not set 293# CONFIG_SCSI_MULTI_LUN is not set
155# CONFIG_SCSI_REPORT_LUNS is not set
156# CONFIG_SCSI_CONSTANTS is not set 294# CONFIG_SCSI_CONSTANTS is not set
157# CONFIG_SCSI_LOGGING is not set 295# CONFIG_SCSI_LOGGING is not set
158 296
159# 297#
298# SCSI Transport Attributes
299#
300CONFIG_SCSI_SPI_ATTRS=y
301# CONFIG_SCSI_FC_ATTRS is not set
302# CONFIG_SCSI_ISCSI_ATTRS is not set
303# CONFIG_SCSI_SAS_ATTRS is not set
304
305#
160# SCSI low-level drivers 306# SCSI low-level drivers
161# 307#
162# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 308# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
309# CONFIG_SCSI_3W_9XXX is not set
163# CONFIG_SCSI_ACARD is not set 310# CONFIG_SCSI_ACARD is not set
164# CONFIG_SCSI_AHA1740 is not set 311# CONFIG_SCSI_AHA1740 is not set
165# CONFIG_SCSI_AACRAID is not set 312# CONFIG_SCSI_AACRAID is not set
166# CONFIG_SCSI_AIC7XXX is not set 313# CONFIG_SCSI_AIC7XXX is not set
167# CONFIG_SCSI_AIC7XXX_OLD is not set 314# CONFIG_SCSI_AIC7XXX_OLD is not set
168# CONFIG_SCSI_AIC79XX is not set 315# CONFIG_SCSI_AIC79XX is not set
169# CONFIG_SCSI_ADVANSYS is not set 316# CONFIG_SCSI_DPT_I2O is not set
170# CONFIG_SCSI_MEGARAID is not set 317# CONFIG_MEGARAID_NEWGEN is not set
318# CONFIG_MEGARAID_LEGACY is not set
319# CONFIG_MEGARAID_SAS is not set
171# CONFIG_SCSI_SATA is not set 320# CONFIG_SCSI_SATA is not set
172# CONFIG_SCSI_BUSLOGIC is not set
173# CONFIG_SCSI_CPQFCTS is not set
174# CONFIG_SCSI_DMX3191D is not set 321# CONFIG_SCSI_DMX3191D is not set
175# CONFIG_SCSI_EATA is not set
176# CONFIG_SCSI_EATA_PIO is not set
177# CONFIG_SCSI_FUTURE_DOMAIN is not set 322# CONFIG_SCSI_FUTURE_DOMAIN is not set
178# CONFIG_SCSI_GDTH is not set
179# CONFIG_SCSI_IPS is not set 323# CONFIG_SCSI_IPS is not set
324# CONFIG_SCSI_INITIO is not set
180# CONFIG_SCSI_INIA100 is not set 325# CONFIG_SCSI_INIA100 is not set
181# CONFIG_SCSI_PPA is not set 326# CONFIG_SCSI_PPA is not set
182# CONFIG_SCSI_IMM is not set 327# CONFIG_SCSI_IMM is not set
183CONFIG_SCSI_LASI700=y 328CONFIG_SCSI_LASI700=y
184CONFIG_53C700_MEM_MAPPED=y
185CONFIG_53C700_LE_ON_BE=y 329CONFIG_53C700_LE_ON_BE=y
186CONFIG_SCSI_SYM53C8XX_2=y 330CONFIG_SCSI_SYM53C8XX_2=y
187CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 331CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
188CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 332CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
189CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 333CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
190# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set 334# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
335# CONFIG_SCSI_IPR is not set
191CONFIG_SCSI_ZALON=y 336CONFIG_SCSI_ZALON=y
192CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 337CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
193CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 338CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
194CONFIG_SCSI_NCR53C8XX_SYNC=20 339CONFIG_SCSI_NCR53C8XX_SYNC=20
195# CONFIG_SCSI_NCR53C8XX_PROFILE is not set 340# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
196# CONFIG_SCSI_QLOGIC_ISP is not set
197# CONFIG_SCSI_QLOGIC_FC is not set 341# CONFIG_SCSI_QLOGIC_FC is not set
198# CONFIG_SCSI_QLOGIC_1280 is not set 342# CONFIG_SCSI_QLOGIC_1280 is not set
199CONFIG_SCSI_QLA2XXX=y 343CONFIG_SCSI_QLA2XXX=y
@@ -202,7 +346,8 @@ CONFIG_SCSI_QLA2XXX=y
202# CONFIG_SCSI_QLA2300 is not set 346# CONFIG_SCSI_QLA2300 is not set
203# CONFIG_SCSI_QLA2322 is not set 347# CONFIG_SCSI_QLA2322 is not set
204# CONFIG_SCSI_QLA6312 is not set 348# CONFIG_SCSI_QLA6312 is not set
205# CONFIG_SCSI_QLA6322 is not set 349# CONFIG_SCSI_QLA24XX is not set
350# CONFIG_SCSI_LPFC is not set
206# CONFIG_SCSI_SIM710 is not set 351# CONFIG_SCSI_SIM710 is not set
207# CONFIG_SCSI_DC395x is not set 352# CONFIG_SCSI_DC395x is not set
208# CONFIG_SCSI_DC390T is not set 353# CONFIG_SCSI_DC390T is not set
@@ -217,15 +362,20 @@ CONFIG_BLK_DEV_MD=y
217CONFIG_MD_LINEAR=y 362CONFIG_MD_LINEAR=y
218CONFIG_MD_RAID0=y 363CONFIG_MD_RAID0=y
219CONFIG_MD_RAID1=y 364CONFIG_MD_RAID1=y
365# CONFIG_MD_RAID10 is not set
220CONFIG_MD_RAID5=y 366CONFIG_MD_RAID5=y
221# CONFIG_MD_RAID6 is not set 367# CONFIG_MD_RAID6 is not set
222# CONFIG_MD_MULTIPATH is not set 368# CONFIG_MD_MULTIPATH is not set
369# CONFIG_MD_FAULTY is not set
223# CONFIG_BLK_DEV_DM is not set 370# CONFIG_BLK_DEV_DM is not set
224 371
225# 372#
226# Fusion MPT device support 373# Fusion MPT device support
227# 374#
228# CONFIG_FUSION is not set 375# CONFIG_FUSION is not set
376# CONFIG_FUSION_SPI is not set
377# CONFIG_FUSION_FC is not set
378# CONFIG_FUSION_SAS is not set
229 379
230# 380#
231# IEEE 1394 (FireWire) support 381# IEEE 1394 (FireWire) support
@@ -238,80 +388,23 @@ CONFIG_MD_RAID5=y
238# CONFIG_I2O is not set 388# CONFIG_I2O is not set
239 389
240# 390#
241# Macintosh device drivers 391# Network device support
242#
243
244#
245# Networking support
246#
247CONFIG_NET=y
248
249#
250# Networking options
251#
252CONFIG_PACKET=y
253CONFIG_PACKET_MMAP=y
254CONFIG_NETLINK_DEV=y
255CONFIG_UNIX=y
256# CONFIG_NET_KEY is not set
257CONFIG_INET=y
258CONFIG_IP_MULTICAST=y
259# CONFIG_IP_ADVANCED_ROUTER is not set
260CONFIG_IP_PNP=y
261# CONFIG_IP_PNP_DHCP is not set
262CONFIG_IP_PNP_BOOTP=y
263# CONFIG_IP_PNP_RARP is not set
264# CONFIG_NET_IPIP is not set
265# CONFIG_NET_IPGRE is not set
266# CONFIG_IP_MROUTE is not set
267# CONFIG_ARPD is not set
268# CONFIG_INET_ECN is not set
269# CONFIG_SYN_COOKIES is not set
270# CONFIG_INET_AH is not set
271# CONFIG_INET_ESP is not set
272# CONFIG_INET_IPCOMP is not set
273# CONFIG_IPV6 is not set
274# CONFIG_DECNET is not set
275# CONFIG_BRIDGE is not set
276# CONFIG_NETFILTER is not set
277
278#
279# SCTP Configuration (EXPERIMENTAL)
280#
281CONFIG_IPV6_SCTP__=y
282# CONFIG_IP_SCTP is not set
283# CONFIG_ATM is not set
284# CONFIG_VLAN_8021Q is not set
285# CONFIG_LLC2 is not set
286# CONFIG_IPX is not set
287# CONFIG_ATALK is not set
288# CONFIG_X25 is not set
289# CONFIG_LAPB is not set
290# CONFIG_NET_DIVERT is not set
291# CONFIG_ECONET is not set
292# CONFIG_WAN_ROUTER is not set
293# CONFIG_NET_HW_FLOWCONTROL is not set
294
295#
296# QoS and/or fair queueing
297#
298# CONFIG_NET_SCHED is not set
299
300#
301# Network testing
302# 392#
303# CONFIG_NET_PKTGEN is not set
304CONFIG_NETDEVICES=y 393CONFIG_NETDEVICES=y
394# CONFIG_DUMMY is not set
395# CONFIG_BONDING is not set
396# CONFIG_EQUALIZER is not set
397# CONFIG_TUN is not set
305 398
306# 399#
307# ARCnet devices 400# ARCnet devices
308# 401#
309# CONFIG_ARCNET is not set 402# CONFIG_ARCNET is not set
310# CONFIG_DUMMY is not set 403
311# CONFIG_BONDING is not set 404#
312# CONFIG_EQUALIZER is not set 405# PHY device support
313# CONFIG_TUN is not set 406#
314# CONFIG_ETHERTAP is not set 407# CONFIG_PHYLIB is not set
315 408
316# 409#
317# Ethernet (10 or 100Mbit) 410# Ethernet (10 or 100Mbit)
@@ -321,6 +414,7 @@ CONFIG_NET_ETHERNET=y
321CONFIG_LASI_82596=y 414CONFIG_LASI_82596=y
322# CONFIG_HAPPYMEAL is not set 415# CONFIG_HAPPYMEAL is not set
323# CONFIG_SUNGEM is not set 416# CONFIG_SUNGEM is not set
417# CONFIG_CASSINI is not set
324# CONFIG_NET_VENDOR_3COM is not set 418# CONFIG_NET_VENDOR_3COM is not set
325# CONFIG_NET_VENDOR_SMC is not set 419# CONFIG_NET_VENDOR_SMC is not set
326 420
@@ -336,6 +430,7 @@ CONFIG_TULIP=y
336# CONFIG_DE4X5 is not set 430# CONFIG_DE4X5 is not set
337# CONFIG_WINBOND_840 is not set 431# CONFIG_WINBOND_840 is not set
338# CONFIG_DM9102 is not set 432# CONFIG_DM9102 is not set
433# CONFIG_ULI526X is not set
339# CONFIG_DEPCA is not set 434# CONFIG_DEPCA is not set
340# CONFIG_HP100 is not set 435# CONFIG_HP100 is not set
341CONFIG_NET_PCI=y 436CONFIG_NET_PCI=y
@@ -361,30 +456,37 @@ CONFIG_NET_PCI=y
361# CONFIG_SUNDANCE is not set 456# CONFIG_SUNDANCE is not set
362# CONFIG_TLAN is not set 457# CONFIG_TLAN is not set
363# CONFIG_VIA_RHINE is not set 458# CONFIG_VIA_RHINE is not set
459# CONFIG_NET_POCKET is not set
364 460
365# 461#
366# Ethernet (1000 Mbit) 462# Ethernet (1000 Mbit)
367# 463#
368# CONFIG_ACENIC is not set 464CONFIG_ACENIC=y
369CONFIG_DL2K=y 465# CONFIG_ACENIC_OMIT_TIGON_I is not set
466# CONFIG_DL2K is not set
370# CONFIG_E1000 is not set 467# CONFIG_E1000 is not set
371# CONFIG_NS83820 is not set 468# CONFIG_NS83820 is not set
372# CONFIG_HAMACHI is not set 469# CONFIG_HAMACHI is not set
373# CONFIG_YELLOWFIN is not set 470# CONFIG_YELLOWFIN is not set
374# CONFIG_R8169 is not set 471# CONFIG_R8169 is not set
375# CONFIG_SIS190 is not set 472# CONFIG_SIS190 is not set
473# CONFIG_SKGE is not set
376# CONFIG_SK98LIN is not set 474# CONFIG_SK98LIN is not set
377# CONFIG_TIGON3 is not set 475# CONFIG_VIA_VELOCITY is not set
476CONFIG_TIGON3=y
477# CONFIG_BNX2 is not set
378 478
379# 479#
380# Ethernet (10000 Mbit) 480# Ethernet (10000 Mbit)
381# 481#
482# CONFIG_CHELSIO_T1 is not set
382# CONFIG_IXGB is not set 483# CONFIG_IXGB is not set
383# CONFIG_FDDI is not set 484# CONFIG_S2IO is not set
384# CONFIG_HIPPI is not set 485
385# CONFIG_PLIP is not set 486#
386# CONFIG_PPP is not set 487# Token Ring devices
387# CONFIG_SLIP is not set 488#
489# CONFIG_TR is not set
388 490
389# 491#
390# Wireless LAN (non-hamradio) 492# Wireless LAN (non-hamradio)
@@ -399,38 +501,30 @@ CONFIG_NET_RADIO=y
399# 501#
400# Wireless 802.11b ISA/PCI cards support 502# Wireless 802.11b ISA/PCI cards support
401# 503#
402CONFIG_AIRO=y
403# CONFIG_HERMES is not set 504# CONFIG_HERMES is not set
404# CONFIG_ATMEL is not set 505# CONFIG_ATMEL is not set
405CONFIG_NET_WIRELESS=y
406 506
407# 507#
408# Token Ring devices 508# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
409# 509#
410# CONFIG_TR is not set 510# CONFIG_PRISM54 is not set
411# CONFIG_NET_FC is not set 511# CONFIG_HOSTAP is not set
412# CONFIG_RCPCI is not set 512CONFIG_NET_WIRELESS=y
413# CONFIG_SHAPER is not set
414 513
415# 514#
416# Wan interfaces 515# Wan interfaces
417# 516#
418# CONFIG_WAN is not set 517# CONFIG_WAN is not set
419 518# CONFIG_FDDI is not set
420# 519# CONFIG_HIPPI is not set
421# Amateur Radio support 520# CONFIG_PLIP is not set
422# 521# CONFIG_PPP is not set
423# CONFIG_HAMRADIO is not set 522# CONFIG_SLIP is not set
424 523# CONFIG_NET_FC is not set
425# 524# CONFIG_SHAPER is not set
426# IrDA (infrared) support 525# CONFIG_NETCONSOLE is not set
427# 526# CONFIG_NETPOLL is not set
428# CONFIG_IRDA is not set 527# CONFIG_NET_POLL_CONTROLLER is not set
429
430#
431# Bluetooth support
432#
433# CONFIG_BT is not set
434 528
435# 529#
436# ISDN subsystem 530# ISDN subsystem
@@ -460,51 +554,67 @@ CONFIG_INPUT_EVDEV=y
460# CONFIG_INPUT_EVBUG is not set 554# CONFIG_INPUT_EVBUG is not set
461 555
462# 556#
463# Input I/O drivers
464#
465# CONFIG_GAMEPORT is not set
466CONFIG_SOUND_GAMEPORT=y
467CONFIG_SERIO=y
468# CONFIG_SERIO_SERPORT is not set
469# CONFIG_SERIO_PARKBD is not set
470CONFIG_SERIO_GSCPS2=y
471CONFIG_HP_SDC=y
472CONFIG_HIL_MLC=y
473# CONFIG_SERIO_PCIPS2 is not set
474
475#
476# Input Device Drivers 557# Input Device Drivers
477# 558#
478CONFIG_INPUT_KEYBOARD=y 559CONFIG_INPUT_KEYBOARD=y
479# CONFIG_KEYBOARD_ATKBD is not set 560# CONFIG_KEYBOARD_ATKBD is not set
480# CONFIG_KEYBOARD_SUNKBD is not set 561# CONFIG_KEYBOARD_SUNKBD is not set
562# CONFIG_KEYBOARD_LKKBD is not set
481# CONFIG_KEYBOARD_XTKBD is not set 563# CONFIG_KEYBOARD_XTKBD is not set
482# CONFIG_KEYBOARD_NEWTON is not set 564# CONFIG_KEYBOARD_NEWTON is not set
565CONFIG_KEYBOARD_HIL_OLD=y
483CONFIG_KEYBOARD_HIL=y 566CONFIG_KEYBOARD_HIL=y
484CONFIG_INPUT_MOUSE=y 567CONFIG_INPUT_MOUSE=y
485# CONFIG_MOUSE_PS2 is not set 568# CONFIG_MOUSE_PS2 is not set
486# CONFIG_MOUSE_SERIAL is not set 569# CONFIG_MOUSE_SERIAL is not set
570# CONFIG_MOUSE_VSXXXAA is not set
487# CONFIG_MOUSE_HIL is not set 571# CONFIG_MOUSE_HIL is not set
488CONFIG_INPUT_JOYSTICK=y 572CONFIG_INPUT_JOYSTICK=y
573# CONFIG_JOYSTICK_ANALOG is not set
574# CONFIG_JOYSTICK_A3D is not set
575# CONFIG_JOYSTICK_ADI is not set
576# CONFIG_JOYSTICK_COBRA is not set
577# CONFIG_JOYSTICK_GF2K is not set
578# CONFIG_JOYSTICK_GRIP is not set
579# CONFIG_JOYSTICK_GRIP_MP is not set
580# CONFIG_JOYSTICK_GUILLEMOT is not set
581# CONFIG_JOYSTICK_INTERACT is not set
582# CONFIG_JOYSTICK_SIDEWINDER is not set
583# CONFIG_JOYSTICK_TMDC is not set
489# CONFIG_JOYSTICK_IFORCE is not set 584# CONFIG_JOYSTICK_IFORCE is not set
490# CONFIG_JOYSTICK_WARRIOR is not set 585# CONFIG_JOYSTICK_WARRIOR is not set
491# CONFIG_JOYSTICK_MAGELLAN is not set 586# CONFIG_JOYSTICK_MAGELLAN is not set
492# CONFIG_JOYSTICK_SPACEORB is not set 587# CONFIG_JOYSTICK_SPACEORB is not set
493# CONFIG_JOYSTICK_SPACEBALL is not set 588# CONFIG_JOYSTICK_SPACEBALL is not set
494# CONFIG_JOYSTICK_STINGER is not set 589# CONFIG_JOYSTICK_STINGER is not set
495# CONFIG_JOYSTICK_TWIDDLER is not set 590# CONFIG_JOYSTICK_TWIDJOY is not set
496# CONFIG_JOYSTICK_DB9 is not set 591# CONFIG_JOYSTICK_DB9 is not set
497# CONFIG_JOYSTICK_GAMECON is not set 592# CONFIG_JOYSTICK_GAMECON is not set
498# CONFIG_JOYSTICK_TURBOGRAFX is not set 593# CONFIG_JOYSTICK_TURBOGRAFX is not set
499# CONFIG_INPUT_JOYDUMP is not set 594# CONFIG_JOYSTICK_JOYDUMP is not set
500CONFIG_INPUT_TOUCHSCREEN=y 595CONFIG_INPUT_TOUCHSCREEN=y
501# CONFIG_TOUCHSCREEN_GUNZE is not set 596# CONFIG_TOUCHSCREEN_GUNZE is not set
597# CONFIG_TOUCHSCREEN_ELO is not set
598# CONFIG_TOUCHSCREEN_MTOUCH is not set
599# CONFIG_TOUCHSCREEN_MK712 is not set
502CONFIG_INPUT_MISC=y 600CONFIG_INPUT_MISC=y
503# CONFIG_INPUT_PCSPKR is not set
504# CONFIG_INPUT_UINPUT is not set 601# CONFIG_INPUT_UINPUT is not set
505CONFIG_HP_SDC_RTC=y 602CONFIG_HP_SDC_RTC=y
506 603
507# 604#
605# Hardware I/O ports
606#
607CONFIG_SERIO=y
608# CONFIG_SERIO_SERPORT is not set
609# CONFIG_SERIO_PARKBD is not set
610CONFIG_SERIO_GSCPS2=y
611CONFIG_HP_SDC=y
612CONFIG_HIL_MLC=y
613# CONFIG_SERIO_PCIPS2 is not set
614# CONFIG_SERIO_RAW is not set
615# CONFIG_GAMEPORT is not set
616
617#
508# Character devices 618# Character devices
509# 619#
510CONFIG_VT=y 620CONFIG_VT=y
@@ -522,16 +632,16 @@ CONFIG_SERIAL_8250_EXTENDED=y
522CONFIG_SERIAL_8250_MANY_PORTS=y 632CONFIG_SERIAL_8250_MANY_PORTS=y
523CONFIG_SERIAL_8250_SHARE_IRQ=y 633CONFIG_SERIAL_8250_SHARE_IRQ=y
524# CONFIG_SERIAL_8250_DETECT_IRQ is not set 634# CONFIG_SERIAL_8250_DETECT_IRQ is not set
525# CONFIG_SERIAL_8250_MULTIPORT is not set
526# CONFIG_SERIAL_8250_RSA is not set 635# CONFIG_SERIAL_8250_RSA is not set
527 636
528# 637#
529# Non-8250 serial port support 638# Non-8250 serial port support
530# 639#
531# CONFIG_SERIAL_MUX is not set 640CONFIG_SERIAL_MUX=y
532# CONFIG_PDC_CONSOLE is not set 641CONFIG_SERIAL_MUX_CONSOLE=y
533CONFIG_SERIAL_CORE=y 642CONFIG_SERIAL_CORE=y
534CONFIG_SERIAL_CORE_CONSOLE=y 643CONFIG_SERIAL_CORE_CONSOLE=y
644# CONFIG_SERIAL_JSM is not set
535CONFIG_UNIX98_PTYS=y 645CONFIG_UNIX98_PTYS=y
536CONFIG_LEGACY_PTYS=y 646CONFIG_LEGACY_PTYS=y
537CONFIG_LEGACY_PTY_COUNT=256 647CONFIG_LEGACY_PTY_COUNT=256
@@ -541,12 +651,6 @@ CONFIG_PRINTER=y
541# CONFIG_TIPAR is not set 651# CONFIG_TIPAR is not set
542 652
543# 653#
544# Mice
545#
546# CONFIG_BUSMOUSE is not set
547# CONFIG_QIC02_TAPE is not set
548
549#
550# IPMI 654# IPMI
551# 655#
552# CONFIG_IPMI_HANDLER is not set 656# CONFIG_IPMI_HANDLER is not set
@@ -555,7 +659,6 @@ CONFIG_PRINTER=y
555# Watchdog Cards 659# Watchdog Cards
556# 660#
557# CONFIG_WATCHDOG is not set 661# CONFIG_WATCHDOG is not set
558# CONFIG_NVRAM is not set
559CONFIG_GEN_RTC=y 662CONFIG_GEN_RTC=y
560# CONFIG_GEN_RTC_X is not set 663# CONFIG_GEN_RTC_X is not set
561# CONFIG_DTLK is not set 664# CONFIG_DTLK is not set
@@ -565,21 +668,40 @@ CONFIG_GEN_RTC=y
565# 668#
566# Ftape, the floppy tape device driver 669# Ftape, the floppy tape device driver
567# 670#
568# CONFIG_FTAPE is not set
569# CONFIG_AGP is not set
570# CONFIG_DRM is not set 671# CONFIG_DRM is not set
571# CONFIG_RAW_DRIVER is not set 672# CONFIG_RAW_DRIVER is not set
572 673
573# 674#
675# TPM devices
676#
677# CONFIG_TCG_TPM is not set
678
679#
574# I2C support 680# I2C support
575# 681#
576# CONFIG_I2C is not set 682# CONFIG_I2C is not set
577 683
578# 684#
685# Dallas's 1-wire bus
686#
687# CONFIG_W1 is not set
688
689#
690# Hardware Monitoring support
691#
692CONFIG_HWMON=y
693# CONFIG_HWMON_VID is not set
694# CONFIG_HWMON_DEBUG_CHIP is not set
695
696#
579# Misc devices 697# Misc devices
580# 698#
581 699
582# 700#
701# Multimedia Capabilities Port drivers
702#
703
704#
583# Multimedia devices 705# Multimedia devices
584# 706#
585# CONFIG_VIDEO_DEV is not set 707# CONFIG_VIDEO_DEV is not set
@@ -593,34 +715,45 @@ CONFIG_GEN_RTC=y
593# Graphics support 715# Graphics support
594# 716#
595CONFIG_FB=y 717CONFIG_FB=y
718CONFIG_FB_CFB_FILLRECT=y
719CONFIG_FB_CFB_COPYAREA=y
720CONFIG_FB_CFB_IMAGEBLIT=y
721CONFIG_FB_SOFT_CURSOR=y
722# CONFIG_FB_MACMODES is not set
723# CONFIG_FB_MODE_HELPERS is not set
724# CONFIG_FB_TILEBLITTING is not set
725# CONFIG_FB_CIRRUS is not set
596# CONFIG_FB_PM2 is not set 726# CONFIG_FB_PM2 is not set
597# CONFIG_FB_CYBER2000 is not set 727# CONFIG_FB_CYBER2000 is not set
728# CONFIG_FB_ASILIANT is not set
598# CONFIG_FB_IMSTT is not set 729# CONFIG_FB_IMSTT is not set
599CONFIG_FB_STI=y 730CONFIG_FB_STI=y
731# CONFIG_FB_NVIDIA is not set
600# CONFIG_FB_RIVA is not set 732# CONFIG_FB_RIVA is not set
601# CONFIG_FB_MATROX is not set 733# CONFIG_FB_MATROX is not set
602# CONFIG_FB_RADEON_OLD is not set 734# CONFIG_FB_RADEON_OLD is not set
603# CONFIG_FB_RADEON is not set 735# CONFIG_FB_RADEON is not set
604# CONFIG_FB_ATY128 is not set 736# CONFIG_FB_ATY128 is not set
605# CONFIG_FB_ATY is not set 737# CONFIG_FB_ATY is not set
738# CONFIG_FB_SAVAGE is not set
606# CONFIG_FB_SIS is not set 739# CONFIG_FB_SIS is not set
607# CONFIG_FB_NEOMAGIC is not set 740# CONFIG_FB_NEOMAGIC is not set
608# CONFIG_FB_KYRO is not set 741# CONFIG_FB_KYRO is not set
609# CONFIG_FB_3DFX is not set 742# CONFIG_FB_3DFX is not set
610# CONFIG_FB_VOODOO1 is not set 743# CONFIG_FB_VOODOO1 is not set
744# CONFIG_FB_CYBLA is not set
611# CONFIG_FB_TRIDENT is not set 745# CONFIG_FB_TRIDENT is not set
746# CONFIG_FB_S1D13XXX is not set
612# CONFIG_FB_VIRTUAL is not set 747# CONFIG_FB_VIRTUAL is not set
613 748
614# 749#
615# Console display driver support 750# Console display driver support
616# 751#
617# CONFIG_MDA_CONSOLE is not set 752CONFIG_DUMMY_CONSOLE=y
618CONFIG_STI_CONSOLE=y
619CONFIG_DUMMY_CONSOLE_COLUMNS=160 753CONFIG_DUMMY_CONSOLE_COLUMNS=160
620CONFIG_DUMMY_CONSOLE_ROWS=64 754CONFIG_DUMMY_CONSOLE_ROWS=64
621CONFIG_DUMMY_CONSOLE=y
622CONFIG_FRAMEBUFFER_CONSOLE=y 755CONFIG_FRAMEBUFFER_CONSOLE=y
623CONFIG_PCI_CONSOLE=y 756CONFIG_STI_CONSOLE=y
624# CONFIG_FONTS is not set 757# CONFIG_FONTS is not set
625CONFIG_FONT_8x8=y 758CONFIG_FONT_8x8=y
626CONFIG_FONT_8x16=y 759CONFIG_FONT_8x16=y
@@ -629,6 +762,7 @@ CONFIG_FONT_8x16=y
629# Logo configuration 762# Logo configuration
630# 763#
631# CONFIG_LOGO is not set 764# CONFIG_LOGO is not set
765# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
632 766
633# 767#
634# Sound 768# Sound
@@ -638,17 +772,94 @@ CONFIG_SOUND=y
638# 772#
639# Advanced Linux Sound Architecture 773# Advanced Linux Sound Architecture
640# 774#
641# CONFIG_SND is not set 775CONFIG_SND=y
776CONFIG_SND_TIMER=y
777CONFIG_SND_PCM=y
778CONFIG_SND_SEQUENCER=y
779# CONFIG_SND_SEQ_DUMMY is not set
780CONFIG_SND_OSSEMUL=y
781CONFIG_SND_MIXER_OSS=y
782CONFIG_SND_PCM_OSS=y
783CONFIG_SND_SEQUENCER_OSS=y
784# CONFIG_SND_VERBOSE_PRINTK is not set
785# CONFIG_SND_DEBUG is not set
786
787#
788# Generic devices
789#
790# CONFIG_SND_DUMMY is not set
791# CONFIG_SND_VIRMIDI is not set
792# CONFIG_SND_MTPAV is not set
793# CONFIG_SND_SERIAL_U16550 is not set
794# CONFIG_SND_MPU401 is not set
795CONFIG_SND_AC97_CODEC=y
796CONFIG_SND_AC97_BUS=y
797
798#
799# PCI devices
800#
801# CONFIG_SND_ALI5451 is not set
802# CONFIG_SND_ATIIXP is not set
803# CONFIG_SND_ATIIXP_MODEM is not set
804# CONFIG_SND_AU8810 is not set
805# CONFIG_SND_AU8820 is not set
806# CONFIG_SND_AU8830 is not set
807# CONFIG_SND_AZT3328 is not set
808# CONFIG_SND_BT87X is not set
809# CONFIG_SND_CS46XX is not set
810# CONFIG_SND_CS4281 is not set
811# CONFIG_SND_EMU10K1 is not set
812# CONFIG_SND_EMU10K1X is not set
813# CONFIG_SND_CA0106 is not set
814# CONFIG_SND_KORG1212 is not set
815# CONFIG_SND_MIXART is not set
816# CONFIG_SND_NM256 is not set
817# CONFIG_SND_RME32 is not set
818# CONFIG_SND_RME96 is not set
819# CONFIG_SND_RME9652 is not set
820# CONFIG_SND_HDSP is not set
821# CONFIG_SND_HDSPM is not set
822# CONFIG_SND_TRIDENT is not set
823# CONFIG_SND_YMFPCI is not set
824CONFIG_SND_AD1889=y
825# CONFIG_SND_AD1889_OPL3 is not set
826# CONFIG_SND_CMIPCI is not set
827# CONFIG_SND_ENS1370 is not set
828# CONFIG_SND_ENS1371 is not set
829# CONFIG_SND_ES1938 is not set
830# CONFIG_SND_ES1968 is not set
831# CONFIG_SND_MAESTRO3 is not set
832# CONFIG_SND_FM801 is not set
833# CONFIG_SND_ICE1712 is not set
834# CONFIG_SND_ICE1724 is not set
835# CONFIG_SND_INTEL8X0 is not set
836# CONFIG_SND_INTEL8X0M is not set
837# CONFIG_SND_SONICVIBES is not set
838# CONFIG_SND_VIA82XX is not set
839# CONFIG_SND_VIA82XX_MODEM is not set
840# CONFIG_SND_VX222 is not set
841# CONFIG_SND_HDA_INTEL is not set
842
843#
844# USB devices
845#
846# CONFIG_SND_USB_AUDIO is not set
847
848#
849# GSC devices
850#
851CONFIG_SND_HARMONY=y
642 852
643# 853#
644# Open Sound System 854# Open Sound System
645# 855#
646# CONFIG_SOUND_PRIME is not set 856# CONFIG_SOUND_PRIME is not set
647# CONFIG_SOUND_HARMONY is not set
648 857
649# 858#
650# USB support 859# USB support
651# 860#
861CONFIG_USB_ARCH_HAS_HCD=y
862CONFIG_USB_ARCH_HAS_OHCI=y
652CONFIG_USB=y 863CONFIG_USB=y
653CONFIG_USB_DEBUG=y 864CONFIG_USB_DEBUG=y
654 865
@@ -658,26 +869,36 @@ CONFIG_USB_DEBUG=y
658# CONFIG_USB_DEVICEFS is not set 869# CONFIG_USB_DEVICEFS is not set
659# CONFIG_USB_BANDWIDTH is not set 870# CONFIG_USB_BANDWIDTH is not set
660# CONFIG_USB_DYNAMIC_MINORS is not set 871# CONFIG_USB_DYNAMIC_MINORS is not set
872# CONFIG_USB_OTG is not set
661 873
662# 874#
663# USB Host Controller Drivers 875# USB Host Controller Drivers
664# 876#
665CONFIG_USB_EHCI_HCD=y 877CONFIG_USB_EHCI_HCD=y
878# CONFIG_USB_EHCI_SPLIT_ISO is not set
879# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
880# CONFIG_USB_ISP116X_HCD is not set
666CONFIG_USB_OHCI_HCD=y 881CONFIG_USB_OHCI_HCD=y
882# CONFIG_USB_OHCI_BIG_ENDIAN is not set
883CONFIG_USB_OHCI_LITTLE_ENDIAN=y
667# CONFIG_USB_UHCI_HCD is not set 884# CONFIG_USB_UHCI_HCD is not set
885# CONFIG_USB_SL811_HCD is not set
668 886
669# 887#
670# USB Device Class drivers 888# USB Device Class drivers
671# 889#
672# CONFIG_USB_AUDIO is not set 890# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
673# CONFIG_USB_BLUETOOTH_TTY is not set 891# CONFIG_USB_BLUETOOTH_TTY is not set
674# CONFIG_USB_MIDI is not set
675# CONFIG_USB_ACM is not set 892# CONFIG_USB_ACM is not set
676# CONFIG_USB_PRINTER is not set 893# CONFIG_USB_PRINTER is not set
894
895#
896# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
897#
677# CONFIG_USB_STORAGE is not set 898# CONFIG_USB_STORAGE is not set
678 899
679# 900#
680# USB Human Interface Devices (HID) 901# USB Input Devices
681# 902#
682# CONFIG_USB_HID is not set 903# CONFIG_USB_HID is not set
683 904
@@ -688,16 +909,23 @@ CONFIG_USB_OHCI_HCD=y
688# CONFIG_USB_MOUSE is not set 909# CONFIG_USB_MOUSE is not set
689# CONFIG_USB_AIPTEK is not set 910# CONFIG_USB_AIPTEK is not set
690# CONFIG_USB_WACOM is not set 911# CONFIG_USB_WACOM is not set
912# CONFIG_USB_ACECAD is not set
691# CONFIG_USB_KBTAB is not set 913# CONFIG_USB_KBTAB is not set
692# CONFIG_USB_POWERMATE is not set 914# CONFIG_USB_POWERMATE is not set
915# CONFIG_USB_MTOUCH is not set
916# CONFIG_USB_ITMTOUCH is not set
917# CONFIG_USB_EGALAX is not set
918# CONFIG_USB_YEALINK is not set
693# CONFIG_USB_XPAD is not set 919# CONFIG_USB_XPAD is not set
920# CONFIG_USB_ATI_REMOTE is not set
921# CONFIG_USB_KEYSPAN_REMOTE is not set
922# CONFIG_USB_APPLETOUCH is not set
694 923
695# 924#
696# USB Imaging devices 925# USB Imaging devices
697# 926#
698# CONFIG_USB_MDC800 is not set 927# CONFIG_USB_MDC800 is not set
699# CONFIG_USB_MICROTEK is not set 928# CONFIG_USB_MICROTEK is not set
700# CONFIG_USB_HPUSBSCSI is not set
701 929
702# 930#
703# USB Multimedia devices 931# USB Multimedia devices
@@ -709,13 +937,15 @@ CONFIG_USB_OHCI_HCD=y
709# 937#
710 938
711# 939#
712# USB Network adaptors 940# USB Network Adapters
713# 941#
714# CONFIG_USB_CATC is not set 942# CONFIG_USB_CATC is not set
715# CONFIG_USB_KAWETH is not set 943# CONFIG_USB_KAWETH is not set
716# CONFIG_USB_PEGASUS is not set 944# CONFIG_USB_PEGASUS is not set
717# CONFIG_USB_RTL8150 is not set 945# CONFIG_USB_RTL8150 is not set
718# CONFIG_USB_USBNET is not set 946# CONFIG_USB_USBNET is not set
947# CONFIG_USB_ZD1201 is not set
948CONFIG_USB_MON=y
719 949
720# 950#
721# USB port drivers 951# USB port drivers
@@ -732,12 +962,21 @@ CONFIG_USB_OHCI_HCD=y
732# 962#
733# CONFIG_USB_EMI62 is not set 963# CONFIG_USB_EMI62 is not set
734# CONFIG_USB_EMI26 is not set 964# CONFIG_USB_EMI26 is not set
735# CONFIG_USB_TIGL is not set
736# CONFIG_USB_AUERSWALD is not set 965# CONFIG_USB_AUERSWALD is not set
737# CONFIG_USB_RIO500 is not set 966# CONFIG_USB_RIO500 is not set
738# CONFIG_USB_LEGOTOWER is not set 967# CONFIG_USB_LEGOTOWER is not set
739# CONFIG_USB_LCD is not set 968# CONFIG_USB_LCD is not set
740# CONFIG_USB_LED is not set 969# CONFIG_USB_LED is not set
970# CONFIG_USB_CYTHERM is not set
971# CONFIG_USB_PHIDGETKIT is not set
972# CONFIG_USB_PHIDGETSERVO is not set
973# CONFIG_USB_IDMOUSE is not set
974# CONFIG_USB_SISUSBVGA is not set
975# CONFIG_USB_LD is not set
976
977#
978# USB DSL modem support
979#
741 980
742# 981#
743# USB Gadget Support 982# USB Gadget Support
@@ -745,22 +984,41 @@ CONFIG_USB_OHCI_HCD=y
745# CONFIG_USB_GADGET is not set 984# CONFIG_USB_GADGET is not set
746 985
747# 986#
987# MMC/SD Card support
988#
989# CONFIG_MMC is not set
990
991#
992# InfiniBand support
993#
994# CONFIG_INFINIBAND is not set
995
996#
997# SN Devices
998#
999
1000#
748# File systems 1001# File systems
749# 1002#
750CONFIG_EXT2_FS=y 1003CONFIG_EXT2_FS=y
751# CONFIG_EXT2_FS_XATTR is not set 1004# CONFIG_EXT2_FS_XATTR is not set
1005# CONFIG_EXT2_FS_XIP is not set
752CONFIG_EXT3_FS=y 1006CONFIG_EXT3_FS=y
753# CONFIG_EXT3_FS_XATTR is not set 1007# CONFIG_EXT3_FS_XATTR is not set
754CONFIG_JBD=y 1008CONFIG_JBD=y
755# CONFIG_JBD_DEBUG is not set 1009# CONFIG_JBD_DEBUG is not set
756# CONFIG_REISERFS_FS is not set 1010# CONFIG_REISERFS_FS is not set
757# CONFIG_JFS_FS is not set 1011# CONFIG_JFS_FS is not set
1012# CONFIG_FS_POSIX_ACL is not set
758# CONFIG_XFS_FS is not set 1013# CONFIG_XFS_FS is not set
759# CONFIG_MINIX_FS is not set 1014# CONFIG_MINIX_FS is not set
760# CONFIG_ROMFS_FS is not set 1015# CONFIG_ROMFS_FS is not set
1016CONFIG_INOTIFY=y
761# CONFIG_QUOTA is not set 1017# CONFIG_QUOTA is not set
1018CONFIG_DNOTIFY=y
762# CONFIG_AUTOFS_FS is not set 1019# CONFIG_AUTOFS_FS is not set
763# CONFIG_AUTOFS4_FS is not set 1020# CONFIG_AUTOFS4_FS is not set
1021# CONFIG_FUSE_FS is not set
764 1022
765# 1023#
766# CD-ROM/DVD Filesystems 1024# CD-ROM/DVD Filesystems
@@ -773,7 +1031,8 @@ CONFIG_JOLIET=y
773# 1031#
774# DOS/FAT/NT Filesystems 1032# DOS/FAT/NT Filesystems
775# 1033#
776# CONFIG_FAT_FS is not set 1034# CONFIG_MSDOS_FS is not set
1035# CONFIG_VFAT_FS is not set
777# CONFIG_NTFS_FS is not set 1036# CONFIG_NTFS_FS is not set
778 1037
779# 1038#
@@ -781,11 +1040,11 @@ CONFIG_JOLIET=y
781# 1040#
782CONFIG_PROC_FS=y 1041CONFIG_PROC_FS=y
783CONFIG_PROC_KCORE=y 1042CONFIG_PROC_KCORE=y
784# CONFIG_DEVFS_FS is not set 1043CONFIG_SYSFS=y
785# CONFIG_DEVPTS_FS_XATTR is not set
786CONFIG_TMPFS=y 1044CONFIG_TMPFS=y
787# CONFIG_HUGETLB_PAGE is not set 1045# CONFIG_HUGETLB_PAGE is not set
788CONFIG_RAMFS=y 1046CONFIG_RAMFS=y
1047# CONFIG_RELAYFS_FS is not set
789 1048
790# 1049#
791# Miscellaneous filesystems 1050# Miscellaneous filesystems
@@ -809,23 +1068,28 @@ CONFIG_RAMFS=y
809# 1068#
810CONFIG_NFS_FS=y 1069CONFIG_NFS_FS=y
811CONFIG_NFS_V3=y 1070CONFIG_NFS_V3=y
1071# CONFIG_NFS_V3_ACL is not set
812# CONFIG_NFS_V4 is not set 1072# CONFIG_NFS_V4 is not set
813# CONFIG_NFS_DIRECTIO is not set 1073# CONFIG_NFS_DIRECTIO is not set
814CONFIG_NFSD=y 1074CONFIG_NFSD=y
815CONFIG_NFSD_V3=y 1075CONFIG_NFSD_V3=y
1076# CONFIG_NFSD_V3_ACL is not set
816# CONFIG_NFSD_V4 is not set 1077# CONFIG_NFSD_V4 is not set
817CONFIG_NFSD_TCP=y 1078CONFIG_NFSD_TCP=y
818CONFIG_ROOT_NFS=y 1079CONFIG_ROOT_NFS=y
819CONFIG_LOCKD=y 1080CONFIG_LOCKD=y
820CONFIG_LOCKD_V4=y 1081CONFIG_LOCKD_V4=y
821CONFIG_EXPORTFS=y 1082CONFIG_EXPORTFS=y
1083CONFIG_NFS_COMMON=y
822CONFIG_SUNRPC=y 1084CONFIG_SUNRPC=y
823# CONFIG_SUNRPC_GSS is not set 1085# CONFIG_RPCSEC_GSS_KRB5 is not set
1086# CONFIG_RPCSEC_GSS_SPKM3 is not set
824# CONFIG_SMB_FS is not set 1087# CONFIG_SMB_FS is not set
825# CONFIG_CIFS is not set 1088# CONFIG_CIFS is not set
826# CONFIG_NCP_FS is not set 1089# CONFIG_NCP_FS is not set
827# CONFIG_CODA_FS is not set 1090# CONFIG_CODA_FS is not set
828# CONFIG_AFS_FS is not set 1091# CONFIG_AFS_FS is not set
1092# CONFIG_9P_FS is not set
829 1093
830# 1094#
831# Partition Types 1095# Partition Types
@@ -861,6 +1125,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
861# CONFIG_NLS_ISO8859_8 is not set 1125# CONFIG_NLS_ISO8859_8 is not set
862# CONFIG_NLS_CODEPAGE_1250 is not set 1126# CONFIG_NLS_CODEPAGE_1250 is not set
863# CONFIG_NLS_CODEPAGE_1251 is not set 1127# CONFIG_NLS_CODEPAGE_1251 is not set
1128# CONFIG_NLS_ASCII is not set
864# CONFIG_NLS_ISO8859_1 is not set 1129# CONFIG_NLS_ISO8859_1 is not set
865# CONFIG_NLS_ISO8859_2 is not set 1130# CONFIG_NLS_ISO8859_2 is not set
866# CONFIG_NLS_ISO8859_3 is not set 1131# CONFIG_NLS_ISO8859_3 is not set
@@ -885,17 +1150,24 @@ CONFIG_OPROFILE=y
885# 1150#
886# Kernel hacking 1151# Kernel hacking
887# 1152#
1153# CONFIG_PRINTK_TIME is not set
888CONFIG_DEBUG_KERNEL=y 1154CONFIG_DEBUG_KERNEL=y
889# CONFIG_DEBUG_SLAB is not set
890CONFIG_MAGIC_SYSRQ=y 1155CONFIG_MAGIC_SYSRQ=y
1156CONFIG_LOG_BUF_SHIFT=15
1157CONFIG_DETECT_SOFTLOCKUP=y
1158# CONFIG_SCHEDSTATS is not set
1159# CONFIG_DEBUG_SLAB is not set
891# CONFIG_DEBUG_SPINLOCK is not set 1160# CONFIG_DEBUG_SPINLOCK is not set
892# CONFIG_DEBUG_RWLOCK is not set 1161# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
893CONFIG_FRAME_POINTER=y 1162# CONFIG_DEBUG_KOBJECT is not set
894# CONFIG_DEBUG_INFO is not set 1163# CONFIG_DEBUG_INFO is not set
1164# CONFIG_DEBUG_IOREMAP is not set
1165# CONFIG_DEBUG_FS is not set
895 1166
896# 1167#
897# Security options 1168# Security options
898# 1169#
1170# CONFIG_KEYS is not set
899# CONFIG_SECURITY is not set 1171# CONFIG_SECURITY is not set
900 1172
901# 1173#
@@ -909,6 +1181,8 @@ CONFIG_CRYPTO=y
909# CONFIG_CRYPTO_SHA1 is not set 1181# CONFIG_CRYPTO_SHA1 is not set
910# CONFIG_CRYPTO_SHA256 is not set 1182# CONFIG_CRYPTO_SHA256 is not set
911# CONFIG_CRYPTO_SHA512 is not set 1183# CONFIG_CRYPTO_SHA512 is not set
1184# CONFIG_CRYPTO_WP512 is not set
1185# CONFIG_CRYPTO_TGR192 is not set
912# CONFIG_CRYPTO_DES is not set 1186# CONFIG_CRYPTO_DES is not set
913# CONFIG_CRYPTO_BLOWFISH is not set 1187# CONFIG_CRYPTO_BLOWFISH is not set
914# CONFIG_CRYPTO_TWOFISH is not set 1188# CONFIG_CRYPTO_TWOFISH is not set
@@ -916,11 +1190,23 @@ CONFIG_CRYPTO=y
916# CONFIG_CRYPTO_AES is not set 1190# CONFIG_CRYPTO_AES is not set
917# CONFIG_CRYPTO_CAST5 is not set 1191# CONFIG_CRYPTO_CAST5 is not set
918# CONFIG_CRYPTO_CAST6 is not set 1192# CONFIG_CRYPTO_CAST6 is not set
1193# CONFIG_CRYPTO_TEA is not set
919# CONFIG_CRYPTO_ARC4 is not set 1194# CONFIG_CRYPTO_ARC4 is not set
1195# CONFIG_CRYPTO_KHAZAD is not set
1196# CONFIG_CRYPTO_ANUBIS is not set
920# CONFIG_CRYPTO_DEFLATE is not set 1197# CONFIG_CRYPTO_DEFLATE is not set
1198# CONFIG_CRYPTO_MICHAEL_MIC is not set
1199# CONFIG_CRYPTO_CRC32C is not set
921# CONFIG_CRYPTO_TEST is not set 1200# CONFIG_CRYPTO_TEST is not set
922 1201
923# 1202#
1203# Hardware crypto devices
1204#
1205
1206#
924# Library routines 1207# Library routines
925# 1208#
1209# CONFIG_CRC_CCITT is not set
1210# CONFIG_CRC16 is not set
926CONFIG_CRC32=y 1211CONFIG_CRC32=y
1212# CONFIG_LIBCRC32C is not set
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
index f46a07a79218..a065349aee37 100644
--- a/arch/parisc/kernel/cache.c
+++ b/arch/parisc/kernel/cache.c
@@ -27,6 +27,7 @@
27#include <asm/page.h> 27#include <asm/page.h>
28#include <asm/pgalloc.h> 28#include <asm/pgalloc.h>
29#include <asm/processor.h> 29#include <asm/processor.h>
30#include <asm/sections.h>
30 31
31int split_tlb; 32int split_tlb;
32int dcache_stride; 33int dcache_stride;
@@ -207,6 +208,9 @@ parisc_cache_init(void)
207 208
208 /* "New and Improved" version from Jim Hull 209 /* "New and Improved" version from Jim Hull
209 * (1 << (cc_block-1)) * (cc_line << (4 + cnf.cc_shift)) 210 * (1 << (cc_block-1)) * (cc_line << (4 + cnf.cc_shift))
211 * The following CAFL_STRIDE is an optimized version, see
212 * http://lists.parisc-linux.org/pipermail/parisc-linux/2004-June/023625.html
213 * http://lists.parisc-linux.org/pipermail/parisc-linux/2004-June/023671.html
210 */ 214 */
211#define CAFL_STRIDE(cnf) (cnf.cc_line << (3 + cnf.cc_block + cnf.cc_shift)) 215#define CAFL_STRIDE(cnf) (cnf.cc_line << (3 + cnf.cc_block + cnf.cc_shift))
212 dcache_stride = CAFL_STRIDE(cache_info.dc_conf); 216 dcache_stride = CAFL_STRIDE(cache_info.dc_conf);
@@ -266,7 +270,6 @@ void flush_dcache_page(struct page *page)
266 unsigned long offset; 270 unsigned long offset;
267 unsigned long addr; 271 unsigned long addr;
268 pgoff_t pgoff; 272 pgoff_t pgoff;
269 pte_t *pte;
270 unsigned long pfn = page_to_pfn(page); 273 unsigned long pfn = page_to_pfn(page);
271 274
272 275
@@ -297,21 +300,16 @@ void flush_dcache_page(struct page *page)
297 * taking a page fault if the pte doesn't exist. 300 * taking a page fault if the pte doesn't exist.
298 * This is just for speed. If the page translation 301 * This is just for speed. If the page translation
299 * isn't there, there's no point exciting the 302 * isn't there, there's no point exciting the
300 * nadtlb handler into a nullification frenzy */ 303 * nadtlb handler into a nullification frenzy.
301 304 *
302 305 * Make sure we really have this page: the private
303 if(!(pte = translation_exists(mpnt, addr)))
304 continue;
305
306 /* make sure we really have this page: the private
307 * mappings may cover this area but have COW'd this 306 * mappings may cover this area but have COW'd this
308 * particular page */ 307 * particular page.
309 if(pte_pfn(*pte) != pfn) 308 */
310 continue; 309 if (translation_exists(mpnt, addr, pfn)) {
311 310 __flush_cache_page(mpnt, addr);
312 __flush_cache_page(mpnt, addr); 311 break;
313 312 }
314 break;
315 } 313 }
316 flush_dcache_mmap_unlock(mapping); 314 flush_dcache_mmap_unlock(mapping);
317} 315}
@@ -339,17 +337,15 @@ int parisc_cache_flush_threshold = FLUSH_THRESHOLD;
339void parisc_setup_cache_timing(void) 337void parisc_setup_cache_timing(void)
340{ 338{
341 unsigned long rangetime, alltime; 339 unsigned long rangetime, alltime;
342 extern char _text; /* start of kernel code, defined by linker */
343 extern char _end; /* end of BSS, defined by linker */
344 unsigned long size; 340 unsigned long size;
345 341
346 alltime = mfctl(16); 342 alltime = mfctl(16);
347 flush_data_cache(); 343 flush_data_cache();
348 alltime = mfctl(16) - alltime; 344 alltime = mfctl(16) - alltime;
349 345
350 size = (unsigned long)(&_end - _text); 346 size = (unsigned long)(_end - _text);
351 rangetime = mfctl(16); 347 rangetime = mfctl(16);
352 flush_kernel_dcache_range((unsigned long)&_text, size); 348 flush_kernel_dcache_range((unsigned long)_text, size);
353 rangetime = mfctl(16) - rangetime; 349 rangetime = mfctl(16) - rangetime;
354 350
355 printk(KERN_DEBUG "Whole cache flush %lu cycles, flushing %lu bytes %lu cycles\n", 351 printk(KERN_DEBUG "Whole cache flush %lu cycles, flushing %lu bytes %lu cycles\n",
diff --git a/arch/parisc/kernel/drivers.c b/arch/parisc/kernel/drivers.c
index d34bbe7ae0e3..988844a169e6 100644
--- a/arch/parisc/kernel/drivers.c
+++ b/arch/parisc/kernel/drivers.c
@@ -46,36 +46,51 @@ static struct device root = {
46 .bus_id = "parisc", 46 .bus_id = "parisc",
47}; 47};
48 48
49#define for_each_padev(padev) \ 49static inline int check_dev(struct device *dev)
50 for (padev = next_dev(&root); padev != NULL; \ 50{
51 padev = next_dev(&padev->dev)) 51 if (dev->bus == &parisc_bus_type) {
52 struct parisc_device *pdev;
53 pdev = to_parisc_device(dev);
54 return pdev->id.hw_type != HPHW_FAULTY;
55 }
56 return 1;
57}
58
59static struct device *
60parse_tree_node(struct device *parent, int index, struct hardware_path *modpath);
52 61
53#define check_dev(padev) \ 62struct recurse_struct {
54 (padev->id.hw_type != HPHW_FAULTY) ? padev : next_dev(&padev->dev) 63 void * obj;
64 int (*fn)(struct device *, void *);
65};
66
67static int descend_children(struct device * dev, void * data)
68{
69 struct recurse_struct * recurse_data = (struct recurse_struct *)data;
70
71 if (recurse_data->fn(dev, recurse_data->obj))
72 return 1;
73 else
74 return device_for_each_child(dev, recurse_data, descend_children);
75}
55 76
56/** 77/**
57 * next_dev - enumerates registered devices 78 * for_each_padev - Iterate over all devices in the tree
58 * @dev: the previous device returned from next_dev 79 * @fn: Function to call for each device.
80 * @data: Data to pass to the called function.
59 * 81 *
60 * next_dev does a depth-first search of the tree, returning parents 82 * This performs a depth-first traversal of the tree, calling the
61 * before children. Returns NULL when there are no more devices. 83 * function passed for each node. It calls the function for parents
84 * before children.
62 */ 85 */
63static struct parisc_device *next_dev(struct device *dev)
64{
65 if (!list_empty(&dev->children)) {
66 dev = list_to_dev(dev->children.next);
67 return check_dev(to_parisc_device(dev));
68 }
69 86
70 while (dev != &root) { 87static int for_each_padev(int (*fn)(struct device *, void *), void * data)
71 if (dev->node.next != &dev->parent->children) { 88{
72 dev = list_to_dev(dev->node.next); 89 struct recurse_struct recurse_data = {
73 return to_parisc_device(dev); 90 .obj = data,
74 } 91 .fn = fn,
75 dev = dev->parent; 92 };
76 } 93 return device_for_each_child(&root, &recurse_data, descend_children);
77
78 return NULL;
79} 94}
80 95
81/** 96/**
@@ -105,12 +120,6 @@ static int match_device(struct parisc_driver *driver, struct parisc_device *dev)
105 return 0; 120 return 0;
106} 121}
107 122
108static void claim_device(struct parisc_driver *driver, struct parisc_device *dev)
109{
110 dev->driver = driver;
111 request_mem_region(dev->hpa, 0x1000, driver->name);
112}
113
114static int parisc_driver_probe(struct device *dev) 123static int parisc_driver_probe(struct device *dev)
115{ 124{
116 int rc; 125 int rc;
@@ -119,8 +128,8 @@ static int parisc_driver_probe(struct device *dev)
119 128
120 rc = pa_drv->probe(pa_dev); 129 rc = pa_drv->probe(pa_dev);
121 130
122 if(!rc) 131 if (!rc)
123 claim_device(pa_drv, pa_dev); 132 pa_dev->driver = pa_drv;
124 133
125 return rc; 134 return rc;
126} 135}
@@ -131,7 +140,6 @@ static int parisc_driver_remove(struct device *dev)
131 struct parisc_driver *pa_drv = to_parisc_driver(dev->driver); 140 struct parisc_driver *pa_drv = to_parisc_driver(dev->driver);
132 if (pa_drv->remove) 141 if (pa_drv->remove)
133 pa_drv->remove(pa_dev); 142 pa_drv->remove(pa_dev);
134 release_mem_region(pa_dev->hpa, 0x1000);
135 143
136 return 0; 144 return 0;
137} 145}
@@ -173,6 +181,24 @@ int register_parisc_driver(struct parisc_driver *driver)
173} 181}
174EXPORT_SYMBOL(register_parisc_driver); 182EXPORT_SYMBOL(register_parisc_driver);
175 183
184
185struct match_count {
186 struct parisc_driver * driver;
187 int count;
188};
189
190static int match_and_count(struct device * dev, void * data)
191{
192 struct match_count * m = data;
193 struct parisc_device * pdev = to_parisc_device(dev);
194
195 if (check_dev(dev)) {
196 if (match_device(m->driver, pdev))
197 m->count++;
198 }
199 return 0;
200}
201
176/** 202/**
177 * count_parisc_driver - count # of devices this driver would match 203 * count_parisc_driver - count # of devices this driver would match
178 * @driver: the PA-RISC driver to try 204 * @driver: the PA-RISC driver to try
@@ -182,15 +208,14 @@ EXPORT_SYMBOL(register_parisc_driver);
182 */ 208 */
183int count_parisc_driver(struct parisc_driver *driver) 209int count_parisc_driver(struct parisc_driver *driver)
184{ 210{
185 struct parisc_device *device; 211 struct match_count m = {
186 int cnt = 0; 212 .driver = driver,
213 .count = 0,
214 };
187 215
188 for_each_padev(device) { 216 for_each_padev(match_and_count, &m);
189 if (match_device(driver, device))
190 cnt++;
191 }
192 217
193 return cnt; 218 return m.count;
194} 219}
195 220
196 221
@@ -206,14 +231,34 @@ int unregister_parisc_driver(struct parisc_driver *driver)
206} 231}
207EXPORT_SYMBOL(unregister_parisc_driver); 232EXPORT_SYMBOL(unregister_parisc_driver);
208 233
209static struct parisc_device *find_device_by_addr(unsigned long hpa) 234struct find_data {
235 unsigned long hpa;
236 struct parisc_device * dev;
237};
238
239static int find_device(struct device * dev, void * data)
210{ 240{
211 struct parisc_device *dev; 241 struct parisc_device * pdev = to_parisc_device(dev);
212 for_each_padev(dev) { 242 struct find_data * d = (struct find_data*)data;
213 if (dev->hpa == hpa) 243
214 return dev; 244 if (check_dev(dev)) {
245 if (pdev->hpa.start == d->hpa) {
246 d->dev = pdev;
247 return 1;
248 }
215 } 249 }
216 return NULL; 250 return 0;
251}
252
253static struct parisc_device *find_device_by_addr(unsigned long hpa)
254{
255 struct find_data d = {
256 .hpa = hpa,
257 };
258 int ret;
259
260 ret = for_each_padev(find_device, &d);
261 return ret ? d.dev : NULL;
217} 262}
218 263
219/** 264/**
@@ -387,6 +432,23 @@ struct parisc_device * create_tree_node(char id, struct device *parent)
387 return dev; 432 return dev;
388} 433}
389 434
435struct match_id_data {
436 char id;
437 struct parisc_device * dev;
438};
439
440static int match_by_id(struct device * dev, void * data)
441{
442 struct parisc_device * pdev = to_parisc_device(dev);
443 struct match_id_data * d = data;
444
445 if (pdev->hw_path == d->id) {
446 d->dev = pdev;
447 return 1;
448 }
449 return 0;
450}
451
390/** 452/**
391 * alloc_tree_node - returns a device entry in the iotree 453 * alloc_tree_node - returns a device entry in the iotree
392 * @parent: the parent node in the tree 454 * @parent: the parent node in the tree
@@ -397,15 +459,13 @@ struct parisc_device * create_tree_node(char id, struct device *parent)
397 */ 459 */
398static struct parisc_device * alloc_tree_node(struct device *parent, char id) 460static struct parisc_device * alloc_tree_node(struct device *parent, char id)
399{ 461{
400 struct device *dev; 462 struct match_id_data d = {
401 463 .id = id,
402 list_for_each_entry(dev, &parent->children, node) { 464 };
403 struct parisc_device *padev = to_parisc_device(dev); 465 if (device_for_each_child(parent, &d, match_by_id))
404 if (padev->hw_path == id) 466 return d.dev;
405 return padev; 467 else
406 } 468 return create_tree_node(id, parent);
407
408 return create_tree_node(id, parent);
409} 469}
410 470
411static struct parisc_device *create_parisc_device(struct hardware_path *modpath) 471static struct parisc_device *create_parisc_device(struct hardware_path *modpath)
@@ -439,10 +499,8 @@ alloc_pa_dev(unsigned long hpa, struct hardware_path *mod_path)
439 499
440 dev = create_parisc_device(mod_path); 500 dev = create_parisc_device(mod_path);
441 if (dev->id.hw_type != HPHW_FAULTY) { 501 if (dev->id.hw_type != HPHW_FAULTY) {
442 char p[64];
443 print_pa_hwpath(dev, p);
444 printk("Two devices have hardware path %s. Please file a bug with HP.\n" 502 printk("Two devices have hardware path %s. Please file a bug with HP.\n"
445 "In the meantime, you could try rearranging your cards.\n", p); 503 "In the meantime, you could try rearranging your cards.\n", parisc_pathname(dev));
446 return NULL; 504 return NULL;
447 } 505 }
448 506
@@ -451,12 +509,27 @@ alloc_pa_dev(unsigned long hpa, struct hardware_path *mod_path)
451 dev->id.hversion_rev = iodc_data[1] & 0x0f; 509 dev->id.hversion_rev = iodc_data[1] & 0x0f;
452 dev->id.sversion = ((iodc_data[4] & 0x0f) << 16) | 510 dev->id.sversion = ((iodc_data[4] & 0x0f) << 16) |
453 (iodc_data[5] << 8) | iodc_data[6]; 511 (iodc_data[5] << 8) | iodc_data[6];
454 dev->hpa = hpa; 512 dev->hpa.name = parisc_pathname(dev);
513 dev->hpa.start = hpa;
514 if (hpa == 0xf4000000 || hpa == 0xf6000000 ||
515 hpa == 0xf8000000 || hpa == 0xfa000000) {
516 dev->hpa.end = hpa + 0x01ffffff;
517 } else {
518 dev->hpa.end = hpa + 0xfff;
519 }
520 dev->hpa.flags = IORESOURCE_MEM;
455 name = parisc_hardware_description(&dev->id); 521 name = parisc_hardware_description(&dev->id);
456 if (name) { 522 if (name) {
457 strlcpy(dev->name, name, sizeof(dev->name)); 523 strlcpy(dev->name, name, sizeof(dev->name));
458 } 524 }
459 525
526 /* Silently fail things like mouse ports which are subsumed within
527 * the keyboard controller
528 */
529 if ((hpa & 0xfff) == 0 && insert_resource(&iomem_resource, &dev->hpa))
530 printk("Unable to claim HPA %lx for device %s\n",
531 hpa, name);
532
460 return dev; 533 return dev;
461} 534}
462 535
@@ -555,6 +628,33 @@ static int match_parisc_device(struct device *dev, int index,
555 return (curr->hw_path == id); 628 return (curr->hw_path == id);
556} 629}
557 630
631struct parse_tree_data {
632 int index;
633 struct hardware_path * modpath;
634 struct device * dev;
635};
636
637static int check_parent(struct device * dev, void * data)
638{
639 struct parse_tree_data * d = data;
640
641 if (check_dev(dev)) {
642 if (dev->bus == &parisc_bus_type) {
643 if (match_parisc_device(dev, d->index, d->modpath))
644 d->dev = dev;
645 } else if (is_pci_dev(dev)) {
646 if (match_pci_device(dev, d->index, d->modpath))
647 d->dev = dev;
648 } else if (dev->bus == NULL) {
649 /* we are on a bus bridge */
650 struct device *new = parse_tree_node(dev, d->index, d->modpath);
651 if (new)
652 d->dev = new;
653 }
654 }
655 return d->dev != NULL;
656}
657
558/** 658/**
559 * parse_tree_node - returns a device entry in the iotree 659 * parse_tree_node - returns a device entry in the iotree
560 * @parent: the parent node in the tree 660 * @parent: the parent node in the tree
@@ -568,24 +668,18 @@ static int match_parisc_device(struct device *dev, int index,
568static struct device * 668static struct device *
569parse_tree_node(struct device *parent, int index, struct hardware_path *modpath) 669parse_tree_node(struct device *parent, int index, struct hardware_path *modpath)
570{ 670{
571 struct device *device; 671 struct parse_tree_data d = {
572 672 .index = index,
573 list_for_each_entry(device, &parent->children, node) { 673 .modpath = modpath,
574 if (device->bus == &parisc_bus_type) { 674 };
575 if (match_parisc_device(device, index, modpath))
576 return device;
577 } else if (is_pci_dev(device)) {
578 if (match_pci_device(device, index, modpath))
579 return device;
580 } else if (device->bus == NULL) {
581 /* we are on a bus bridge */
582 struct device *new = parse_tree_node(device, index, modpath);
583 if (new)
584 return new;
585 }
586 }
587 675
588 return NULL; 676 struct recurse_struct recurse_data = {
677 .obj = &d,
678 .fn = check_parent,
679 };
680
681 device_for_each_child(parent, &recurse_data, descend_children);
682 return d.dev;
589} 683}
590 684
591/** 685/**
@@ -636,7 +730,7 @@ EXPORT_SYMBOL(device_to_hwpath);
636 ((dev->id.hw_type == HPHW_IOA) || (dev->id.hw_type == HPHW_BCPORT)) 730 ((dev->id.hw_type == HPHW_IOA) || (dev->id.hw_type == HPHW_BCPORT))
637 731
638#define IS_LOWER_PORT(dev) \ 732#define IS_LOWER_PORT(dev) \
639 ((gsc_readl(dev->hpa + offsetof(struct bc_module, io_status)) \ 733 ((gsc_readl(dev->hpa.start + offsetof(struct bc_module, io_status)) \
640 & BC_PORT_MASK) == BC_LOWER_PORT) 734 & BC_PORT_MASK) == BC_LOWER_PORT)
641 735
642#define MAX_NATIVE_DEVICES 64 736#define MAX_NATIVE_DEVICES 64
@@ -645,8 +739,8 @@ EXPORT_SYMBOL(device_to_hwpath);
645#define FLEX_MASK F_EXTEND(0xfffc0000) 739#define FLEX_MASK F_EXTEND(0xfffc0000)
646#define IO_IO_LOW offsetof(struct bc_module, io_io_low) 740#define IO_IO_LOW offsetof(struct bc_module, io_io_low)
647#define IO_IO_HIGH offsetof(struct bc_module, io_io_high) 741#define IO_IO_HIGH offsetof(struct bc_module, io_io_high)
648#define READ_IO_IO_LOW(dev) (unsigned long)(signed int)gsc_readl(dev->hpa + IO_IO_LOW) 742#define READ_IO_IO_LOW(dev) (unsigned long)(signed int)gsc_readl(dev->hpa.start + IO_IO_LOW)
649#define READ_IO_IO_HIGH(dev) (unsigned long)(signed int)gsc_readl(dev->hpa + IO_IO_HIGH) 743#define READ_IO_IO_HIGH(dev) (unsigned long)(signed int)gsc_readl(dev->hpa.start + IO_IO_HIGH)
650 744
651static void walk_native_bus(unsigned long io_io_low, unsigned long io_io_high, 745static void walk_native_bus(unsigned long io_io_low, unsigned long io_io_high,
652 struct device *parent); 746 struct device *parent);
@@ -655,10 +749,10 @@ void walk_lower_bus(struct parisc_device *dev)
655{ 749{
656 unsigned long io_io_low, io_io_high; 750 unsigned long io_io_low, io_io_high;
657 751
658 if(!BUS_CONVERTER(dev) || IS_LOWER_PORT(dev)) 752 if (!BUS_CONVERTER(dev) || IS_LOWER_PORT(dev))
659 return; 753 return;
660 754
661 if(dev->id.hw_type == HPHW_IOA) { 755 if (dev->id.hw_type == HPHW_IOA) {
662 io_io_low = (unsigned long)(signed int)(READ_IO_IO_LOW(dev) << 16); 756 io_io_low = (unsigned long)(signed int)(READ_IO_IO_LOW(dev) << 16);
663 io_io_high = io_io_low + MAX_NATIVE_DEVICES * NATIVE_DEVICE_OFFSET; 757 io_io_high = io_io_low + MAX_NATIVE_DEVICES * NATIVE_DEVICE_OFFSET;
664 } else { 758 } else {
@@ -731,7 +825,7 @@ static void print_parisc_device(struct parisc_device *dev)
731 825
732 print_pa_hwpath(dev, hw_path); 826 print_pa_hwpath(dev, hw_path);
733 printk(KERN_INFO "%d. %s at 0x%lx [%s] { %d, 0x%x, 0x%.3x, 0x%.5x }", 827 printk(KERN_INFO "%d. %s at 0x%lx [%s] { %d, 0x%x, 0x%.3x, 0x%.5x }",
734 ++count, dev->name, dev->hpa, hw_path, dev->id.hw_type, 828 ++count, dev->name, dev->hpa.start, hw_path, dev->id.hw_type,
735 dev->id.hversion_rev, dev->id.hversion, dev->id.sversion); 829 dev->id.hversion_rev, dev->id.hversion, dev->id.sversion);
736 830
737 if (dev->num_addrs) { 831 if (dev->num_addrs) {
@@ -753,13 +847,20 @@ void init_parisc_bus(void)
753 get_device(&root); 847 get_device(&root);
754} 848}
755 849
850
851static int print_one_device(struct device * dev, void * data)
852{
853 struct parisc_device * pdev = to_parisc_device(dev);
854
855 if (check_dev(dev))
856 print_parisc_device(pdev);
857 return 0;
858}
859
756/** 860/**
757 * print_parisc_devices - Print out a list of devices found in this system 861 * print_parisc_devices - Print out a list of devices found in this system
758 */ 862 */
759void print_parisc_devices(void) 863void print_parisc_devices(void)
760{ 864{
761 struct parisc_device *dev; 865 for_each_padev(print_one_device, NULL);
762 for_each_padev(dev) {
763 print_parisc_device(dev);
764 }
765} 866}
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S
index be0f07f2fa58..c7e66ee5b083 100644
--- a/arch/parisc/kernel/entry.S
+++ b/arch/parisc/kernel/entry.S
@@ -30,14 +30,14 @@
30 * - save registers to kernel stack and handle in assembly or C */ 30 * - save registers to kernel stack and handle in assembly or C */
31 31
32 32
33#include <asm/psw.h>
33#include <asm/assembly.h> /* for LDREG/STREG defines */ 34#include <asm/assembly.h> /* for LDREG/STREG defines */
34#include <asm/pgtable.h> 35#include <asm/pgtable.h>
35#include <asm/psw.h>
36#include <asm/signal.h> 36#include <asm/signal.h>
37#include <asm/unistd.h> 37#include <asm/unistd.h>
38#include <asm/thread_info.h> 38#include <asm/thread_info.h>
39 39
40#ifdef __LP64__ 40#ifdef CONFIG_64BIT
41#define CMPIB cmpib,* 41#define CMPIB cmpib,*
42#define CMPB cmpb,* 42#define CMPB cmpb,*
43#define COND(x) *x 43#define COND(x) *x
@@ -67,19 +67,22 @@
67 67
68 /* Switch to virtual mapping, trashing only %r1 */ 68 /* Switch to virtual mapping, trashing only %r1 */
69 .macro virt_map 69 .macro virt_map
70 rsm PSW_SM_Q,%r0 70 /* pcxt_ssm_bug */
71 tovirt_r1 %r29 71 rsm PSW_SM_I, %r0 /* barrier for "Relied upon Translation */
72 mfsp %sr7, %r1
73 or,= %r0,%r1,%r0 /* Only save sr7 in sr3 if sr7 != 0 */
74 mtsp %r1, %sr3
75 mtsp %r0, %sr4 72 mtsp %r0, %sr4
76 mtsp %r0, %sr5 73 mtsp %r0, %sr5
74 mfsp %sr7, %r1
75 or,= %r0,%r1,%r0 /* Only save sr7 in sr3 if sr7 != 0 */
76 mtsp %r1, %sr3
77 tovirt_r1 %r29
78 load32 KERNEL_PSW, %r1
79
80 rsm PSW_SM_QUIET,%r0 /* second "heavy weight" ctl op */
77 mtsp %r0, %sr6 81 mtsp %r0, %sr6
78 mtsp %r0, %sr7 82 mtsp %r0, %sr7
79 load32 KERNEL_PSW, %r1
80 mtctl %r1, %cr22
81 mtctl %r0, %cr17 /* Clear IIASQ tail */ 83 mtctl %r0, %cr17 /* Clear IIASQ tail */
82 mtctl %r0, %cr17 /* Clear IIASQ head */ 84 mtctl %r0, %cr17 /* Clear IIASQ head */
85 mtctl %r1, %ipsw
83 load32 4f, %r1 86 load32 4f, %r1
84 mtctl %r1, %cr18 /* Set IIAOQ tail */ 87 mtctl %r1, %cr18 /* Set IIAOQ tail */
85 ldo 4(%r1), %r1 88 ldo 4(%r1), %r1
@@ -214,7 +217,7 @@
214 va = r8 /* virtual address for which the trap occured */ 217 va = r8 /* virtual address for which the trap occured */
215 spc = r24 /* space for which the trap occured */ 218 spc = r24 /* space for which the trap occured */
216 219
217#ifndef __LP64__ 220#ifndef CONFIG_64BIT
218 221
219 /* 222 /*
220 * itlb miss interruption handler (parisc 1.1 - 32 bit) 223 * itlb miss interruption handler (parisc 1.1 - 32 bit)
@@ -236,7 +239,7 @@
236 239
237 .macro itlb_20 code 240 .macro itlb_20 code
238 mfctl %pcsq, spc 241 mfctl %pcsq, spc
239#ifdef __LP64__ 242#ifdef CONFIG_64BIT
240 b itlb_miss_20w 243 b itlb_miss_20w
241#else 244#else
242 b itlb_miss_20 245 b itlb_miss_20
@@ -246,7 +249,7 @@
246 .align 32 249 .align 32
247 .endm 250 .endm
248 251
249#ifndef __LP64__ 252#ifndef CONFIG_64BIT
250 /* 253 /*
251 * naitlb miss interruption handler (parisc 1.1 - 32 bit) 254 * naitlb miss interruption handler (parisc 1.1 - 32 bit)
252 * 255 *
@@ -283,7 +286,7 @@
283 .macro naitlb_20 code 286 .macro naitlb_20 code
284 287
285 mfctl %isr,spc 288 mfctl %isr,spc
286#ifdef __LP64__ 289#ifdef CONFIG_64BIT
287 b itlb_miss_20w 290 b itlb_miss_20w
288#else 291#else
289 b itlb_miss_20 292 b itlb_miss_20
@@ -296,7 +299,7 @@
296 .align 32 299 .align 32
297 .endm 300 .endm
298 301
299#ifndef __LP64__ 302#ifndef CONFIG_64BIT
300 /* 303 /*
301 * dtlb miss interruption handler (parisc 1.1 - 32 bit) 304 * dtlb miss interruption handler (parisc 1.1 - 32 bit)
302 */ 305 */
@@ -318,7 +321,7 @@
318 .macro dtlb_20 code 321 .macro dtlb_20 code
319 322
320 mfctl %isr, spc 323 mfctl %isr, spc
321#ifdef __LP64__ 324#ifdef CONFIG_64BIT
322 b dtlb_miss_20w 325 b dtlb_miss_20w
323#else 326#else
324 b dtlb_miss_20 327 b dtlb_miss_20
@@ -328,7 +331,7 @@
328 .align 32 331 .align 32
329 .endm 332 .endm
330 333
331#ifndef __LP64__ 334#ifndef CONFIG_64BIT
332 /* nadtlb miss interruption handler (parisc 1.1 - 32 bit) */ 335 /* nadtlb miss interruption handler (parisc 1.1 - 32 bit) */
333 336
334 .macro nadtlb_11 code 337 .macro nadtlb_11 code
@@ -346,7 +349,7 @@
346 .macro nadtlb_20 code 349 .macro nadtlb_20 code
347 350
348 mfctl %isr,spc 351 mfctl %isr,spc
349#ifdef __LP64__ 352#ifdef CONFIG_64BIT
350 b nadtlb_miss_20w 353 b nadtlb_miss_20w
351#else 354#else
352 b nadtlb_miss_20 355 b nadtlb_miss_20
@@ -356,7 +359,7 @@
356 .align 32 359 .align 32
357 .endm 360 .endm
358 361
359#ifndef __LP64__ 362#ifndef CONFIG_64BIT
360 /* 363 /*
361 * dirty bit trap interruption handler (parisc 1.1 - 32 bit) 364 * dirty bit trap interruption handler (parisc 1.1 - 32 bit)
362 */ 365 */
@@ -378,7 +381,7 @@
378 .macro dbit_20 code 381 .macro dbit_20 code
379 382
380 mfctl %isr,spc 383 mfctl %isr,spc
381#ifdef __LP64__ 384#ifdef CONFIG_64BIT
382 b dbit_trap_20w 385 b dbit_trap_20w
383#else 386#else
384 b dbit_trap_20 387 b dbit_trap_20
@@ -391,7 +394,7 @@
391 /* The following are simple 32 vs 64 bit instruction 394 /* The following are simple 32 vs 64 bit instruction
392 * abstractions for the macros */ 395 * abstractions for the macros */
393 .macro EXTR reg1,start,length,reg2 396 .macro EXTR reg1,start,length,reg2
394#ifdef __LP64__ 397#ifdef CONFIG_64BIT
395 extrd,u \reg1,32+\start,\length,\reg2 398 extrd,u \reg1,32+\start,\length,\reg2
396#else 399#else
397 extrw,u \reg1,\start,\length,\reg2 400 extrw,u \reg1,\start,\length,\reg2
@@ -399,7 +402,7 @@
399 .endm 402 .endm
400 403
401 .macro DEP reg1,start,length,reg2 404 .macro DEP reg1,start,length,reg2
402#ifdef __LP64__ 405#ifdef CONFIG_64BIT
403 depd \reg1,32+\start,\length,\reg2 406 depd \reg1,32+\start,\length,\reg2
404#else 407#else
405 depw \reg1,\start,\length,\reg2 408 depw \reg1,\start,\length,\reg2
@@ -407,7 +410,7 @@
407 .endm 410 .endm
408 411
409 .macro DEPI val,start,length,reg 412 .macro DEPI val,start,length,reg
410#ifdef __LP64__ 413#ifdef CONFIG_64BIT
411 depdi \val,32+\start,\length,\reg 414 depdi \val,32+\start,\length,\reg
412#else 415#else
413 depwi \val,\start,\length,\reg 416 depwi \val,\start,\length,\reg
@@ -418,7 +421,7 @@
418 * fault. We have to extract this and place it in the va, 421 * fault. We have to extract this and place it in the va,
419 * zeroing the corresponding bits in the space register */ 422 * zeroing the corresponding bits in the space register */
420 .macro space_adjust spc,va,tmp 423 .macro space_adjust spc,va,tmp
421#ifdef __LP64__ 424#ifdef CONFIG_64BIT
422 extrd,u \spc,63,SPACEID_SHIFT,\tmp 425 extrd,u \spc,63,SPACEID_SHIFT,\tmp
423 depd %r0,63,SPACEID_SHIFT,\spc 426 depd %r0,63,SPACEID_SHIFT,\spc
424 depd \tmp,31,SPACEID_SHIFT,\va 427 depd \tmp,31,SPACEID_SHIFT,\va
@@ -476,7 +479,7 @@
476 bb,>=,n \pmd,_PxD_PRESENT_BIT,\fault 479 bb,>=,n \pmd,_PxD_PRESENT_BIT,\fault
477 DEP %r0,31,PxD_FLAG_SHIFT,\pmd /* clear flags */ 480 DEP %r0,31,PxD_FLAG_SHIFT,\pmd /* clear flags */
478 copy \pmd,%r9 481 copy \pmd,%r9
479#ifdef __LP64__ 482#ifdef CONFIG_64BIT
480 shld %r9,PxD_VALUE_SHIFT,\pmd 483 shld %r9,PxD_VALUE_SHIFT,\pmd
481#else 484#else
482 shlw %r9,PxD_VALUE_SHIFT,\pmd 485 shlw %r9,PxD_VALUE_SHIFT,\pmd
@@ -607,7 +610,7 @@
607 .macro do_alias spc,tmp,tmp1,va,pte,prot,fault 610 .macro do_alias spc,tmp,tmp1,va,pte,prot,fault
608 cmpib,COND(<>),n 0,\spc,\fault 611 cmpib,COND(<>),n 0,\spc,\fault
609 ldil L%(TMPALIAS_MAP_START),\tmp 612 ldil L%(TMPALIAS_MAP_START),\tmp
610#if defined(__LP64__) && (TMPALIAS_MAP_START >= 0x80000000) 613#if defined(CONFIG_64BIT) && (TMPALIAS_MAP_START >= 0x80000000)
611 /* on LP64, ldi will sign extend into the upper 32 bits, 614 /* on LP64, ldi will sign extend into the upper 32 bits,
612 * which is behaviour we don't want */ 615 * which is behaviour we don't want */
613 depdi 0,31,32,\tmp 616 depdi 0,31,32,\tmp
@@ -621,7 +624,7 @@
621 * OK, it is in the temp alias region, check whether "from" or "to". 624 * OK, it is in the temp alias region, check whether "from" or "to".
622 * Check "subtle" note in pacache.S re: r23/r26. 625 * Check "subtle" note in pacache.S re: r23/r26.
623 */ 626 */
624#ifdef __LP64__ 627#ifdef CONFIG_64BIT
625 extrd,u,*= \va,41,1,%r0 628 extrd,u,*= \va,41,1,%r0
626#else 629#else
627 extrw,u,= \va,9,1,%r0 630 extrw,u,= \va,9,1,%r0
@@ -688,7 +691,7 @@ fault_vector_20:
688 def 30 691 def 30
689 def 31 692 def 31
690 693
691#ifndef __LP64__ 694#ifndef CONFIG_64BIT
692 695
693 .export fault_vector_11 696 .export fault_vector_11
694 697
@@ -761,7 +764,7 @@ __kernel_thread:
761 764
762 copy %r30, %r1 765 copy %r30, %r1
763 ldo PT_SZ_ALGN(%r30),%r30 766 ldo PT_SZ_ALGN(%r30),%r30
764#ifdef __LP64__ 767#ifdef CONFIG_64BIT
765 /* Yo, function pointers in wide mode are little structs... -PB */ 768 /* Yo, function pointers in wide mode are little structs... -PB */
766 ldd 24(%r26), %r2 769 ldd 24(%r26), %r2
767 STREG %r2, PT_GR27(%r1) /* Store childs %dp */ 770 STREG %r2, PT_GR27(%r1) /* Store childs %dp */
@@ -777,7 +780,7 @@ __kernel_thread:
777 or %r26, %r24, %r26 /* will have kernel mappings. */ 780 or %r26, %r24, %r26 /* will have kernel mappings. */
778 ldi 1, %r25 /* stack_start, signals kernel thread */ 781 ldi 1, %r25 /* stack_start, signals kernel thread */
779 stw %r0, -52(%r30) /* user_tid */ 782 stw %r0, -52(%r30) /* user_tid */
780#ifdef __LP64__ 783#ifdef CONFIG_64BIT
781 ldo -16(%r30),%r29 /* Reference param save area */ 784 ldo -16(%r30),%r29 /* Reference param save area */
782#endif 785#endif
783 BL do_fork, %r2 786 BL do_fork, %r2
@@ -806,7 +809,7 @@ ret_from_kernel_thread:
806 809
807 LDREG TI_TASK-THREAD_SZ_ALGN(%r30), %r1 810 LDREG TI_TASK-THREAD_SZ_ALGN(%r30), %r1
808 LDREG TASK_PT_GR25(%r1), %r26 811 LDREG TASK_PT_GR25(%r1), %r26
809#ifdef __LP64__ 812#ifdef CONFIG_64BIT
810 LDREG TASK_PT_GR27(%r1), %r27 813 LDREG TASK_PT_GR27(%r1), %r27
811 LDREG TASK_PT_GR22(%r1), %r22 814 LDREG TASK_PT_GR22(%r1), %r22
812#endif 815#endif
@@ -814,11 +817,16 @@ ret_from_kernel_thread:
814 ble 0(%sr7, %r1) 817 ble 0(%sr7, %r1)
815 copy %r31, %r2 818 copy %r31, %r2
816 819
817#ifdef __LP64__ 820#ifdef CONFIG_64BIT
818 ldo -16(%r30),%r29 /* Reference param save area */ 821 ldo -16(%r30),%r29 /* Reference param save area */
819 loadgp /* Thread could have been in a module */ 822 loadgp /* Thread could have been in a module */
820#endif 823#endif
824#ifndef CONFIG_64BIT
821 b sys_exit 825 b sys_exit
826#else
827 load32 sys_exit, %r1
828 bv %r0(%r1)
829#endif
822 ldi 0, %r26 830 ldi 0, %r26
823 831
824 .import sys_execve, code 832 .import sys_execve, code
@@ -830,7 +838,7 @@ __execve:
830 STREG %r26, PT_GR26(%r16) 838 STREG %r26, PT_GR26(%r16)
831 STREG %r25, PT_GR25(%r16) 839 STREG %r25, PT_GR25(%r16)
832 STREG %r24, PT_GR24(%r16) 840 STREG %r24, PT_GR24(%r16)
833#ifdef __LP64__ 841#ifdef CONFIG_64BIT
834 ldo -16(%r30),%r29 /* Reference param save area */ 842 ldo -16(%r30),%r29 /* Reference param save area */
835#endif 843#endif
836 BL sys_execve, %r2 844 BL sys_execve, %r2
@@ -855,6 +863,7 @@ __execve:
855_switch_to: 863_switch_to:
856 STREG %r2, -RP_OFFSET(%r30) 864 STREG %r2, -RP_OFFSET(%r30)
857 865
866 callee_save_float
858 callee_save 867 callee_save
859 868
860 load32 _switch_to_ret, %r2 869 load32 _switch_to_ret, %r2
@@ -871,6 +880,7 @@ _switch_to:
871_switch_to_ret: 880_switch_to_ret:
872 mtctl %r0, %cr0 /* Needed for single stepping */ 881 mtctl %r0, %cr0 /* Needed for single stepping */
873 callee_rest 882 callee_rest
883 callee_rest_float
874 884
875 LDREG -RP_OFFSET(%r30), %r2 885 LDREG -RP_OFFSET(%r30), %r2
876 bv %r0(%r2) 886 bv %r0(%r2)
@@ -888,9 +898,6 @@ _switch_to_ret:
888 * this way, then we will need to copy %sr3 in to PT_SR[3..7], and 898 * this way, then we will need to copy %sr3 in to PT_SR[3..7], and
889 * adjust IASQ[0..1]. 899 * adjust IASQ[0..1].
890 * 900 *
891 * Note that the following code uses a "relied upon translation".
892 * See the parisc ACD for details. The ssm is necessary due to a
893 * PCXT bug.
894 */ 901 */
895 902
896 .align 4096 903 .align 4096
@@ -911,7 +918,7 @@ syscall_exit_rfi:
911 STREG %r19,PT_IAOQ1(%r16) 918 STREG %r19,PT_IAOQ1(%r16)
912 LDREG PT_PSW(%r16),%r19 919 LDREG PT_PSW(%r16),%r19
913 load32 USER_PSW_MASK,%r1 920 load32 USER_PSW_MASK,%r1
914#ifdef __LP64__ 921#ifdef CONFIG_64BIT
915 load32 USER_PSW_HI_MASK,%r20 922 load32 USER_PSW_HI_MASK,%r20
916 depd %r20,31,32,%r1 923 depd %r20,31,32,%r1
917#endif 924#endif
@@ -955,7 +962,7 @@ intr_return:
955 /* shift left ____cacheline_aligned (aka L1_CACHE_BYTES) amount 962 /* shift left ____cacheline_aligned (aka L1_CACHE_BYTES) amount
956 ** irq_stat[] is defined using ____cacheline_aligned. 963 ** irq_stat[] is defined using ____cacheline_aligned.
957 */ 964 */
958#ifdef __LP64__ 965#ifdef CONFIG_64BIT
959 shld %r1, 6, %r20 966 shld %r1, 6, %r20
960#else 967#else
961 shlw %r1, 5, %r20 968 shlw %r1, 5, %r20
@@ -963,9 +970,6 @@ intr_return:
963 add %r19,%r20,%r19 /* now have &irq_stat[smp_processor_id()] */ 970 add %r19,%r20,%r19 /* now have &irq_stat[smp_processor_id()] */
964#endif /* CONFIG_SMP */ 971#endif /* CONFIG_SMP */
965 972
966 LDREG IRQSTAT_SIRQ_PEND(%r19),%r20 /* hardirq.h: unsigned long */
967 cmpib,<>,n 0,%r20,intr_do_softirq /* forward */
968
969intr_check_resched: 973intr_check_resched:
970 974
971 /* check for reschedule */ 975 /* check for reschedule */
@@ -985,24 +989,19 @@ intr_restore:
985 rest_fp %r1 989 rest_fp %r1
986 rest_general %r29 990 rest_general %r29
987 991
988 /* Create a "relied upon translation" PA 2.0 Arch. F-5 */ 992 /* inverse of virt_map */
989 ssm 0,%r0 993 pcxt_ssm_bug
990 nop 994 rsm PSW_SM_QUIET,%r0 /* prepare for rfi */
991 nop
992 nop
993 nop
994 nop
995 nop
996 nop
997 tophys_r1 %r29 995 tophys_r1 %r29
998 rsm (PSW_SM_Q|PSW_SM_P|PSW_SM_D|PSW_SM_I),%r0
999 996
1000 /* Restore space id's and special cr's from PT_REGS 997 /* Restore space id's and special cr's from PT_REGS
1001 * structure pointed to by r29 */ 998 * structure pointed to by r29
999 */
1002 rest_specials %r29 1000 rest_specials %r29
1003 1001
1004 /* Important: Note that rest_stack restores r29 1002 /* IMPORTANT: rest_stack restores r29 last (we are using it)!
1005 * last (we are using it)! It also restores r1 and r30. */ 1003 * It also restores r1 and r30.
1004 */
1006 rest_stack 1005 rest_stack
1007 1006
1008 rfi 1007 rfi
@@ -1015,17 +1014,6 @@ intr_restore:
1015 nop 1014 nop
1016 nop 1015 nop
1017 1016
1018 .import do_softirq,code
1019intr_do_softirq:
1020 bl do_softirq,%r2
1021#ifdef __LP64__
1022 ldo -16(%r30),%r29 /* Reference param save area */
1023#else
1024 nop
1025#endif
1026 b intr_check_resched
1027 nop
1028
1029 .import schedule,code 1017 .import schedule,code
1030intr_do_resched: 1018intr_do_resched:
1031 /* Only do reschedule if we are returning to user space */ 1019 /* Only do reschedule if we are returning to user space */
@@ -1036,12 +1024,17 @@ intr_do_resched:
1036 CMPIB= 0,%r20,intr_restore /* backward */ 1024 CMPIB= 0,%r20,intr_restore /* backward */
1037 nop 1025 nop
1038 1026
1039#ifdef __LP64__ 1027#ifdef CONFIG_64BIT
1040 ldo -16(%r30),%r29 /* Reference param save area */ 1028 ldo -16(%r30),%r29 /* Reference param save area */
1041#endif 1029#endif
1042 1030
1043 ldil L%intr_check_sig, %r2 1031 ldil L%intr_check_sig, %r2
1032#ifndef CONFIG_64BIT
1044 b schedule 1033 b schedule
1034#else
1035 load32 schedule, %r20
1036 bv %r0(%r20)
1037#endif
1045 ldo R%intr_check_sig(%r2), %r2 1038 ldo R%intr_check_sig(%r2), %r2
1046 1039
1047 1040
@@ -1064,7 +1057,7 @@ intr_do_signal:
1064 1057
1065 copy %r0, %r24 /* unsigned long in_syscall */ 1058 copy %r0, %r24 /* unsigned long in_syscall */
1066 copy %r16, %r25 /* struct pt_regs *regs */ 1059 copy %r16, %r25 /* struct pt_regs *regs */
1067#ifdef __LP64__ 1060#ifdef CONFIG_64BIT
1068 ldo -16(%r30),%r29 /* Reference param save area */ 1061 ldo -16(%r30),%r29 /* Reference param save area */
1069#endif 1062#endif
1070 1063
@@ -1088,7 +1081,7 @@ intr_extint:
1088 mfctl %cr31,%r1 1081 mfctl %cr31,%r1
1089 copy %r30,%r17 1082 copy %r30,%r17
1090 /* FIXME! depi below has hardcoded idea of interrupt stack size (32k)*/ 1083 /* FIXME! depi below has hardcoded idea of interrupt stack size (32k)*/
1091#ifdef __LP64__ 1084#ifdef CONFIG_64BIT
1092 depdi 0,63,15,%r17 1085 depdi 0,63,15,%r17
1093#else 1086#else
1094 depi 0,31,15,%r17 1087 depi 0,31,15,%r17
@@ -1115,7 +1108,7 @@ intr_extint:
1115 1108
1116 ldil L%intr_return, %r2 1109 ldil L%intr_return, %r2
1117 1110
1118#ifdef __LP64__ 1111#ifdef CONFIG_64BIT
1119 ldo -16(%r30),%r29 /* Reference param save area */ 1112 ldo -16(%r30),%r29 /* Reference param save area */
1120#endif 1113#endif
1121 1114
@@ -1153,15 +1146,17 @@ intr_save:
1153 1146
1154 CMPIB=,n 6,%r26,skip_save_ior 1147 CMPIB=,n 6,%r26,skip_save_ior
1155 1148
1156 /* save_specials left ipsw value in r8 for us to test */
1157 1149
1158 mfctl %cr20, %r16 /* isr */ 1150 mfctl %cr20, %r16 /* isr */
1151 nop /* serialize mfctl on PA 2.0 to avoid 4 cycle penalty */
1159 mfctl %cr21, %r17 /* ior */ 1152 mfctl %cr21, %r17 /* ior */
1160 1153
1161#ifdef __LP64__ 1154
1155#ifdef CONFIG_64BIT
1162 /* 1156 /*
1163 * If the interrupted code was running with W bit off (32 bit), 1157 * If the interrupted code was running with W bit off (32 bit),
1164 * clear the b bits (bits 0 & 1) in the ior. 1158 * clear the b bits (bits 0 & 1) in the ior.
1159 * save_specials left ipsw value in r8 for us to test.
1165 */ 1160 */
1166 extrd,u,*<> %r8,PSW_W_BIT,1,%r0 1161 extrd,u,*<> %r8,PSW_W_BIT,1,%r0
1167 depdi 0,1,2,%r17 1162 depdi 0,1,2,%r17
@@ -1192,7 +1187,7 @@ skip_save_ior:
1192 loadgp 1187 loadgp
1193 1188
1194 copy %r29, %r25 /* arg1 is pt_regs */ 1189 copy %r29, %r25 /* arg1 is pt_regs */
1195#ifdef __LP64__ 1190#ifdef CONFIG_64BIT
1196 ldo -16(%r30),%r29 /* Reference param save area */ 1191 ldo -16(%r30),%r29 /* Reference param save area */
1197#endif 1192#endif
1198 1193
@@ -1230,7 +1225,7 @@ skip_save_ior:
1230 spc = r24 /* space for which the trap occured */ 1225 spc = r24 /* space for which the trap occured */
1231 ptp = r25 /* page directory/page table pointer */ 1226 ptp = r25 /* page directory/page table pointer */
1232 1227
1233#ifdef __LP64__ 1228#ifdef CONFIG_64BIT
1234 1229
1235dtlb_miss_20w: 1230dtlb_miss_20w:
1236 space_adjust spc,va,t0 1231 space_adjust spc,va,t0
@@ -1487,10 +1482,10 @@ nadtlb_emulate:
1487 add,l %r1,%r24,%r1 /* doesn't affect c/b bits */ 1482 add,l %r1,%r24,%r1 /* doesn't affect c/b bits */
1488 1483
1489nadtlb_nullify: 1484nadtlb_nullify:
1490 mfctl %cr22,%r8 /* Get ipsw */ 1485 mfctl %ipsw,%r8
1491 ldil L%PSW_N,%r9 1486 ldil L%PSW_N,%r9
1492 or %r8,%r9,%r8 /* Set PSW_N */ 1487 or %r8,%r9,%r8 /* Set PSW_N */
1493 mtctl %r8,%cr22 1488 mtctl %r8,%ipsw
1494 1489
1495 rfir 1490 rfir
1496 nop 1491 nop
@@ -1521,7 +1516,7 @@ nadtlb_probe_check:
1521 nop 1516 nop
1522 1517
1523 1518
1524#ifdef __LP64__ 1519#ifdef CONFIG_64BIT
1525itlb_miss_20w: 1520itlb_miss_20w:
1526 1521
1527 /* 1522 /*
@@ -1588,7 +1583,7 @@ itlb_miss_20:
1588 1583
1589#endif 1584#endif
1590 1585
1591#ifdef __LP64__ 1586#ifdef CONFIG_64BIT
1592 1587
1593dbit_trap_20w: 1588dbit_trap_20w:
1594 space_adjust spc,va,t0 1589 space_adjust spc,va,t0
@@ -1797,7 +1792,7 @@ sys_fork_wrapper:
1797 1792
1798 STREG %r2,-RP_OFFSET(%r30) 1793 STREG %r2,-RP_OFFSET(%r30)
1799 ldo FRAME_SIZE(%r30),%r30 1794 ldo FRAME_SIZE(%r30),%r30
1800#ifdef __LP64__ 1795#ifdef CONFIG_64BIT
1801 ldo -16(%r30),%r29 /* Reference param save area */ 1796 ldo -16(%r30),%r29 /* Reference param save area */
1802#endif 1797#endif
1803 1798
@@ -1847,7 +1842,7 @@ sys_clone_wrapper:
1847 1842
1848 STREG %r2,-RP_OFFSET(%r30) 1843 STREG %r2,-RP_OFFSET(%r30)
1849 ldo FRAME_SIZE(%r30),%r30 1844 ldo FRAME_SIZE(%r30),%r30
1850#ifdef __LP64__ 1845#ifdef CONFIG_64BIT
1851 ldo -16(%r30),%r29 /* Reference param save area */ 1846 ldo -16(%r30),%r29 /* Reference param save area */
1852#endif 1847#endif
1853 1848
@@ -1869,7 +1864,7 @@ sys_vfork_wrapper:
1869 1864
1870 STREG %r2,-RP_OFFSET(%r30) 1865 STREG %r2,-RP_OFFSET(%r30)
1871 ldo FRAME_SIZE(%r30),%r30 1866 ldo FRAME_SIZE(%r30),%r30
1872#ifdef __LP64__ 1867#ifdef CONFIG_64BIT
1873 ldo -16(%r30),%r29 /* Reference param save area */ 1868 ldo -16(%r30),%r29 /* Reference param save area */
1874#endif 1869#endif
1875 1870
@@ -1897,10 +1892,10 @@ sys_vfork_wrapper:
1897 1892
1898 STREG %r2,-RP_OFFSET(%r30) 1893 STREG %r2,-RP_OFFSET(%r30)
1899 ldo FRAME_SIZE(%r30),%r30 1894 ldo FRAME_SIZE(%r30),%r30
1900#ifdef __LP64__ 1895#ifdef CONFIG_64BIT
1901 ldo -16(%r30),%r29 /* Reference param save area */ 1896 ldo -16(%r30),%r29 /* Reference param save area */
1902#endif 1897#endif
1903 bl \execve,%r2 1898 BL \execve,%r2
1904 copy %r1,%arg0 1899 copy %r1,%arg0
1905 1900
1906 ldo -FRAME_SIZE(%r30),%r30 1901 ldo -FRAME_SIZE(%r30),%r30
@@ -1923,7 +1918,7 @@ error_\execve:
1923sys_execve_wrapper: 1918sys_execve_wrapper:
1924 execve_wrapper sys_execve 1919 execve_wrapper sys_execve
1925 1920
1926#ifdef __LP64__ 1921#ifdef CONFIG_64BIT
1927 .export sys32_execve_wrapper 1922 .export sys32_execve_wrapper
1928 .import sys32_execve 1923 .import sys32_execve
1929 1924
@@ -1937,7 +1932,7 @@ sys_rt_sigreturn_wrapper:
1937 ldo TASK_REGS(%r26),%r26 /* get pt regs */ 1932 ldo TASK_REGS(%r26),%r26 /* get pt regs */
1938 /* Don't save regs, we are going to restore them from sigcontext. */ 1933 /* Don't save regs, we are going to restore them from sigcontext. */
1939 STREG %r2, -RP_OFFSET(%r30) 1934 STREG %r2, -RP_OFFSET(%r30)
1940#ifdef __LP64__ 1935#ifdef CONFIG_64BIT
1941 ldo FRAME_SIZE(%r30), %r30 1936 ldo FRAME_SIZE(%r30), %r30
1942 BL sys_rt_sigreturn,%r2 1937 BL sys_rt_sigreturn,%r2
1943 ldo -16(%r30),%r29 /* Reference param save area */ 1938 ldo -16(%r30),%r29 /* Reference param save area */
@@ -1968,7 +1963,7 @@ sys_sigaltstack_wrapper:
1968 ldo TASK_REGS(%r1),%r24 /* get pt regs */ 1963 ldo TASK_REGS(%r1),%r24 /* get pt regs */
1969 LDREG TASK_PT_GR30(%r24),%r24 1964 LDREG TASK_PT_GR30(%r24),%r24
1970 STREG %r2, -RP_OFFSET(%r30) 1965 STREG %r2, -RP_OFFSET(%r30)
1971#ifdef __LP64__ 1966#ifdef CONFIG_64BIT
1972 ldo FRAME_SIZE(%r30), %r30 1967 ldo FRAME_SIZE(%r30), %r30
1973 b,l do_sigaltstack,%r2 1968 b,l do_sigaltstack,%r2
1974 ldo -16(%r30),%r29 /* Reference param save area */ 1969 ldo -16(%r30),%r29 /* Reference param save area */
@@ -1982,7 +1977,7 @@ sys_sigaltstack_wrapper:
1982 bv %r0(%r2) 1977 bv %r0(%r2)
1983 nop 1978 nop
1984 1979
1985#ifdef __LP64__ 1980#ifdef CONFIG_64BIT
1986 .export sys32_sigaltstack_wrapper 1981 .export sys32_sigaltstack_wrapper
1987sys32_sigaltstack_wrapper: 1982sys32_sigaltstack_wrapper:
1988 /* Get the user stack pointer */ 1983 /* Get the user stack pointer */
@@ -2006,7 +2001,7 @@ sys_rt_sigsuspend_wrapper:
2006 reg_save %r24 2001 reg_save %r24
2007 2002
2008 STREG %r2, -RP_OFFSET(%r30) 2003 STREG %r2, -RP_OFFSET(%r30)
2009#ifdef __LP64__ 2004#ifdef CONFIG_64BIT
2010 ldo FRAME_SIZE(%r30), %r30 2005 ldo FRAME_SIZE(%r30), %r30
2011 b,l sys_rt_sigsuspend,%r2 2006 b,l sys_rt_sigsuspend,%r2
2012 ldo -16(%r30),%r29 /* Reference param save area */ 2007 ldo -16(%r30),%r29 /* Reference param save area */
@@ -2079,7 +2074,7 @@ syscall_check_bh:
2079 ldw TI_CPU-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r26 /* cpu # */ 2074 ldw TI_CPU-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r26 /* cpu # */
2080 2075
2081 /* shift left ____cacheline_aligned (aka L1_CACHE_BYTES) bits */ 2076 /* shift left ____cacheline_aligned (aka L1_CACHE_BYTES) bits */
2082#ifdef __LP64__ 2077#ifdef CONFIG_64BIT
2083 shld %r26, 6, %r20 2078 shld %r26, 6, %r20
2084#else 2079#else
2085 shlw %r26, 5, %r20 2080 shlw %r26, 5, %r20
@@ -2087,9 +2082,6 @@ syscall_check_bh:
2087 add %r19,%r20,%r19 /* now have &irq_stat[smp_processor_id()] */ 2082 add %r19,%r20,%r19 /* now have &irq_stat[smp_processor_id()] */
2088#endif /* CONFIG_SMP */ 2083#endif /* CONFIG_SMP */
2089 2084
2090 LDREG IRQSTAT_SIRQ_PEND(%r19),%r20 /* hardirq.h: unsigned long */
2091 cmpib,<>,n 0,%r20,syscall_do_softirq /* forward */
2092
2093syscall_check_resched: 2085syscall_check_resched:
2094 2086
2095 /* check for reschedule */ 2087 /* check for reschedule */
@@ -2144,7 +2136,7 @@ syscall_restore:
2144 2136
2145 depi 3,31,2,%r31 /* ensure return to user mode. */ 2137 depi 3,31,2,%r31 /* ensure return to user mode. */
2146 2138
2147#ifdef __LP64__ 2139#ifdef CONFIG_64BIT
2148 /* decide whether to reset the wide mode bit 2140 /* decide whether to reset the wide mode bit
2149 * 2141 *
2150 * For a syscall, the W bit is stored in the lowest bit 2142 * For a syscall, the W bit is stored in the lowest bit
@@ -2227,20 +2219,10 @@ pt_regs_ok:
2227 b intr_restore 2219 b intr_restore
2228 nop 2220 nop
2229 2221
2230 .import do_softirq,code
2231syscall_do_softirq:
2232 bl do_softirq,%r2
2233 nop
2234 /* NOTE: We enable I-bit incase we schedule later,
2235 * and we might be going back to userspace if we were
2236 * traced. */
2237 b syscall_check_resched
2238 ssm PSW_SM_I, %r0 /* do_softirq returns with I bit off */
2239
2240 .import schedule,code 2222 .import schedule,code
2241syscall_do_resched: 2223syscall_do_resched:
2242 BL schedule,%r2 2224 BL schedule,%r2
2243#ifdef __LP64__ 2225#ifdef CONFIG_64BIT
2244 ldo -16(%r30),%r29 /* Reference param save area */ 2226 ldo -16(%r30),%r29 /* Reference param save area */
2245#else 2227#else
2246 nop 2228 nop
@@ -2260,7 +2242,7 @@ syscall_do_signal:
2260 2242
2261 ldi 1, %r24 /* unsigned long in_syscall */ 2243 ldi 1, %r24 /* unsigned long in_syscall */
2262 2244
2263#ifdef __LP64__ 2245#ifdef CONFIG_64BIT
2264 ldo -16(%r30),%r29 /* Reference param save area */ 2246 ldo -16(%r30),%r29 /* Reference param save area */
2265#endif 2247#endif
2266 BL do_signal,%r2 2248 BL do_signal,%r2
diff --git a/arch/parisc/kernel/firmware.c b/arch/parisc/kernel/firmware.c
index f244fb200db1..553f8fe03224 100644
--- a/arch/parisc/kernel/firmware.c
+++ b/arch/parisc/kernel/firmware.c
@@ -83,15 +83,15 @@ static unsigned long pdc_result2[32] __attribute__ ((aligned (8)));
83int parisc_narrow_firmware = 1; 83int parisc_narrow_firmware = 1;
84#endif 84#endif
85 85
86/* on all currently-supported platforms, IODC I/O calls are always 86/* On most currently-supported platforms, IODC I/O calls are 32-bit calls
87 * 32-bit calls, and MEM_PDC calls are always the same width as the OS. 87 * and MEM_PDC calls are always the same width as the OS.
88 * This means Cxxx boxes can't run wide kernels right now. -PB 88 * Some PAT boxes may have 64-bit IODC I/O.
89 * 89 *
90 * CONFIG_PDC_NARROW has been added to allow 64-bit kernels to run on 90 * Ryan Bradetich added the now obsolete CONFIG_PDC_NARROW to allow
91 * systems with 32-bit MEM_PDC calls. This will allow wide kernels to 91 * 64-bit kernels to run on systems with 32-bit MEM_PDC calls.
92 * run on Cxxx boxes now. -RB 92 * This allowed wide kernels to run on Cxxx boxes.
93 * 93 * We now detect 32-bit-only PDC and dynamically switch to 32-bit mode
94 * Note that some PAT boxes may have 64-bit IODC I/O... 94 * when running a 64-bit kernel on such boxes (e.g. C200 or C360).
95 */ 95 */
96 96
97#ifdef __LP64__ 97#ifdef __LP64__
diff --git a/arch/parisc/kernel/head.S b/arch/parisc/kernel/head.S
index 28405edf8448..0b47afc20690 100644
--- a/arch/parisc/kernel/head.S
+++ b/arch/parisc/kernel/head.S
@@ -12,7 +12,7 @@
12 * Initial Version 04-23-1999 by Helge Deller <deller@gmx.de> 12 * Initial Version 04-23-1999 by Helge Deller <deller@gmx.de>
13 */ 13 */
14 14
15#include <linux/autoconf.h> /* for CONFIG_SMP */ 15#include <linux/config.h> /* for CONFIG_SMP */
16 16
17#include <asm/asm-offsets.h> 17#include <asm/asm-offsets.h>
18#include <asm/psw.h> 18#include <asm/psw.h>
@@ -36,10 +36,10 @@ boot_args:
36 .align 4 36 .align 4
37 .import init_thread_union,data 37 .import init_thread_union,data
38 .import fault_vector_20,code /* IVA parisc 2.0 32 bit */ 38 .import fault_vector_20,code /* IVA parisc 2.0 32 bit */
39#ifndef __LP64__ 39#ifndef CONFIG_64BIT
40 .import fault_vector_11,code /* IVA parisc 1.1 32 bit */ 40 .import fault_vector_11,code /* IVA parisc 1.1 32 bit */
41 .import $global$ /* forward declaration */ 41 .import $global$ /* forward declaration */
42#endif /*!LP64*/ 42#endif /*!CONFIG_64BIT*/
43 .export stext 43 .export stext
44 .export _stext,data /* Kernel want it this way! */ 44 .export _stext,data /* Kernel want it this way! */
45_stext: 45_stext:
@@ -76,7 +76,7 @@ $bss_loop:
76 mtctl %r4,%cr24 /* Initialize kernel root pointer */ 76 mtctl %r4,%cr24 /* Initialize kernel root pointer */
77 mtctl %r4,%cr25 /* Initialize user root pointer */ 77 mtctl %r4,%cr25 /* Initialize user root pointer */
78 78
79#ifdef __LP64__ 79#ifdef CONFIG_64BIT
80 /* Set pmd in pgd */ 80 /* Set pmd in pgd */
81 load32 PA(pmd0),%r5 81 load32 PA(pmd0),%r5
82 shrd %r5,PxD_VALUE_SHIFT,%r3 82 shrd %r5,PxD_VALUE_SHIFT,%r3
@@ -99,7 +99,7 @@ $bss_loop:
99 stw %r3,0(%r4) 99 stw %r3,0(%r4)
100 ldo (ASM_PAGE_SIZE >> PxD_VALUE_SHIFT)(%r3),%r3 100 ldo (ASM_PAGE_SIZE >> PxD_VALUE_SHIFT)(%r3),%r3
101 addib,> -1,%r1,1b 101 addib,> -1,%r1,1b
102#ifdef __LP64__ 102#ifdef CONFIG_64BIT
103 ldo ASM_PMD_ENTRY_SIZE(%r4),%r4 103 ldo ASM_PMD_ENTRY_SIZE(%r4),%r4
104#else 104#else
105 ldo ASM_PGD_ENTRY_SIZE(%r4),%r4 105 ldo ASM_PGD_ENTRY_SIZE(%r4),%r4
@@ -170,7 +170,7 @@ common_stext:
170 stw %r0,0x28(%r0) /* MEM_RENDEZ_HI */ 170 stw %r0,0x28(%r0) /* MEM_RENDEZ_HI */
171#endif /*CONFIG_SMP*/ 171#endif /*CONFIG_SMP*/
172 172
173#ifdef __LP64__ 173#ifdef CONFIG_64BIT
174 tophys_r1 %sp 174 tophys_r1 %sp
175 175
176 /* Save the rfi target address */ 176 /* Save the rfi target address */
@@ -224,8 +224,6 @@ stext_pdc_ret:
224 mtctl %r0,%cr12 224 mtctl %r0,%cr12
225 mtctl %r0,%cr13 225 mtctl %r0,%cr13
226 226
227 /* Prepare to RFI! Man all the cannons! */
228
229 /* Initialize the global data pointer */ 227 /* Initialize the global data pointer */
230 loadgp 228 loadgp
231 229
@@ -235,7 +233,7 @@ stext_pdc_ret:
235 * following short sequence of instructions can determine this 233 * following short sequence of instructions can determine this
236 * (without being illegal on a PA1.1 machine). 234 * (without being illegal on a PA1.1 machine).
237 */ 235 */
238#ifndef __LP64__ 236#ifndef CONFIG_64BIT
239 ldi 32,%r10 237 ldi 32,%r10
240 mtctl %r10,%cr11 238 mtctl %r10,%cr11
241 .level 2.0 239 .level 2.0
@@ -248,52 +246,22 @@ stext_pdc_ret:
248 246
249$is_pa20: 247$is_pa20:
250 .level LEVEL /* restore 1.1 || 2.0w */ 248 .level LEVEL /* restore 1.1 || 2.0w */
251#endif /*!LP64*/ 249#endif /*!CONFIG_64BIT*/
252 load32 PA(fault_vector_20),%r10 250 load32 PA(fault_vector_20),%r10
253 251
254$install_iva: 252$install_iva:
255 mtctl %r10,%cr14 253 mtctl %r10,%cr14
256 254
257#ifdef __LP64__ 255 b aligned_rfi /* Prepare to RFI! Man all the cannons! */
258 b aligned_rfi
259 nop 256 nop
260 257
261 .align 256 258 .align 128
262aligned_rfi: 259aligned_rfi:
263 ssm 0,0 260 pcxt_ssm_bug
264 nop /* 1 */
265 nop /* 2 */
266 nop /* 3 */
267 nop /* 4 */
268 nop /* 5 */
269 nop /* 6 */
270 nop /* 7 */
271 nop /* 8 */
272#endif
273 261
274#ifdef __LP64__ /* move to psw.h? */ 262 rsm PSW_SM_QUIET,%r0 /* off troublesome PSW bits */
275#define PSW_BITS PSW_Q+PSW_I+PSW_D+PSW_P+PSW_R 263 /* Don't need NOPs, have 8 compliant insn before rfi */
276#else
277#define PSW_BITS PSW_SM_Q
278#endif
279 264
280$rfi:
281 /* turn off troublesome PSW bits */
282 rsm PSW_BITS,%r0
283
284 /* kernel PSW:
285 * - no interruptions except HPMC and TOC (which are handled by PDC)
286 * - Q bit set (IODC / PDC interruptions)
287 * - big-endian
288 * - virtually mapped
289 */
290 load32 KERNEL_PSW,%r10
291 mtctl %r10,%ipsw
292
293 /* Set the space pointers for the post-RFI world
294 ** Clear the two-level IIA Space Queue, effectively setting
295 ** Kernel space.
296 */
297 mtctl %r0,%cr17 /* Clear IIASQ tail */ 265 mtctl %r0,%cr17 /* Clear IIASQ tail */
298 mtctl %r0,%cr17 /* Clear IIASQ head */ 266 mtctl %r0,%cr17 /* Clear IIASQ head */
299 267
@@ -301,8 +269,11 @@ $rfi:
301 mtctl %r11,%cr18 /* IIAOQ head */ 269 mtctl %r11,%cr18 /* IIAOQ head */
302 ldo 4(%r11),%r11 270 ldo 4(%r11),%r11
303 mtctl %r11,%cr18 /* IIAOQ tail */ 271 mtctl %r11,%cr18 /* IIAOQ tail */
272
273 load32 KERNEL_PSW,%r10
274 mtctl %r10,%ipsw
304 275
305 /* Jump to hyperspace */ 276 /* Jump through hyperspace to Virt Mode */
306 rfi 277 rfi
307 nop 278 nop
308 279
@@ -313,7 +284,7 @@ $rfi:
313 .import smp_init_current_idle_task,data 284 .import smp_init_current_idle_task,data
314 .import smp_callin,code 285 .import smp_callin,code
315 286
316#ifndef __LP64__ 287#ifndef CONFIG_64BIT
317smp_callin_rtn: 288smp_callin_rtn:
318 .proc 289 .proc
319 .callinfo 290 .callinfo
@@ -321,7 +292,7 @@ smp_callin_rtn:
321 nop 292 nop
322 nop 293 nop
323 .procend 294 .procend
324#endif /*!LP64*/ 295#endif /*!CONFIG_64BIT*/
325 296
326/*************************************************************************** 297/***************************************************************************
327* smp_slave_stext is executed by all non-monarch Processors when the Monarch 298* smp_slave_stext is executed by all non-monarch Processors when the Monarch
@@ -356,7 +327,7 @@ smp_slave_stext:
356 mtctl %r4,%cr24 /* Initialize kernel root pointer */ 327 mtctl %r4,%cr24 /* Initialize kernel root pointer */
357 mtctl %r4,%cr25 /* Initialize user root pointer */ 328 mtctl %r4,%cr25 /* Initialize user root pointer */
358 329
359#ifdef __LP64__ 330#ifdef CONFIG_64BIT
360 /* Setup PDCE_PROC entry */ 331 /* Setup PDCE_PROC entry */
361 copy %arg0,%r3 332 copy %arg0,%r3
362#else 333#else
@@ -373,7 +344,7 @@ smp_slave_stext:
373 344
374 .procend 345 .procend
375#endif /* CONFIG_SMP */ 346#endif /* CONFIG_SMP */
376#ifndef __LP64__ 347#ifndef CONFIG_64BIT
377 .data 348 .data
378 349
379 .align 4 350 .align 4
@@ -383,4 +354,4 @@ smp_slave_stext:
383 .size $global$,4 354 .size $global$,4
384$global$: 355$global$:
385 .word 0 356 .word 0
386#endif /*!LP64*/ 357#endif /*!CONFIG_64BIT*/
diff --git a/arch/parisc/kernel/ioctl32.c b/arch/parisc/kernel/ioctl32.c
index 1d3824b670d1..0a331104ad56 100644
--- a/arch/parisc/kernel/ioctl32.c
+++ b/arch/parisc/kernel/ioctl32.c
@@ -104,12 +104,9 @@ static int drm32_version(unsigned int fd, unsigned int cmd, unsigned long arg)
104 } 104 }
105 105
106out: 106out:
107 if (kversion.name) 107 kfree(kversion.name);
108 kfree(kversion.name); 108 kfree(kversion.date);
109 if (kversion.date) 109 kfree(kversion.desc);
110 kfree(kversion.date);
111 if (kversion.desc)
112 kfree(kversion.desc);
113 return ret; 110 return ret;
114} 111}
115 112
@@ -166,9 +163,7 @@ static int drm32_getsetunique(unsigned int fd, unsigned int cmd, unsigned long a
166 ret = -EFAULT; 163 ret = -EFAULT;
167 } 164 }
168 165
169 if (karg.unique != NULL) 166 kfree(karg.unique);
170 kfree(karg.unique);
171
172 return ret; 167 return ret;
173} 168}
174 169
@@ -265,7 +260,6 @@ static int drm32_info_bufs(unsigned int fd, unsigned int cmd, unsigned long arg)
265 } 260 }
266 261
267 kfree(karg.list); 262 kfree(karg.list);
268
269 return ret; 263 return ret;
270} 264}
271 265
@@ -305,7 +299,6 @@ static int drm32_free_bufs(unsigned int fd, unsigned int cmd, unsigned long arg)
305 299
306out: 300out:
307 kfree(karg.list); 301 kfree(karg.list);
308
309 return ret; 302 return ret;
310} 303}
311 304
@@ -494,15 +487,10 @@ static int drm32_dma(unsigned int fd, unsigned int cmd, unsigned long arg)
494 } 487 }
495 488
496out: 489out:
497 if (karg.send_indices) 490 kfree(karg.send_indices);
498 kfree(karg.send_indices); 491 kfree(karg.send_sizes);
499 if (karg.send_sizes) 492 kfree(karg.request_indices);
500 kfree(karg.send_sizes); 493 kfree(karg.request_sizes);
501 if (karg.request_indices)
502 kfree(karg.request_indices);
503 if (karg.request_sizes)
504 kfree(karg.request_sizes);
505
506 return ret; 494 return ret;
507} 495}
508 496
@@ -555,9 +543,7 @@ static int drm32_res_ctx(unsigned int fd, unsigned int cmd, unsigned long arg)
555 ret = -EFAULT; 543 ret = -EFAULT;
556 } 544 }
557 545
558 if (karg.contexts) 546 kfree(karg.contexts);
559 kfree(karg.contexts);
560
561 return ret; 547 return ret;
562} 548}
563 549
@@ -575,11 +561,6 @@ IOCTL_TABLE_START
575#define DECLARES 561#define DECLARES
576#include "compat_ioctl.c" 562#include "compat_ioctl.c"
577 563
578/* Might be moved to compat_ioctl.h with some ifdefs... */
579COMPATIBLE_IOCTL(TIOCSTART)
580COMPATIBLE_IOCTL(TIOCSTOP)
581COMPATIBLE_IOCTL(TIOCSLTC)
582
583/* PA-specific ioctls */ 564/* PA-specific ioctls */
584COMPATIBLE_IOCTL(PA_PERF_ON) 565COMPATIBLE_IOCTL(PA_PERF_ON)
585COMPATIBLE_IOCTL(PA_PERF_OFF) 566COMPATIBLE_IOCTL(PA_PERF_OFF)
diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S
index 77e03bc0f935..9534ee17b9be 100644
--- a/arch/parisc/kernel/pacache.S
+++ b/arch/parisc/kernel/pacache.S
@@ -26,7 +26,7 @@
26 * can be used. 26 * can be used.
27 */ 27 */
28 28
29#ifdef __LP64__ 29#ifdef CONFIG_64BIT
30#define ADDIB addib,* 30#define ADDIB addib,*
31#define CMPB cmpb,* 31#define CMPB cmpb,*
32#define ANDCM andcm,* 32#define ANDCM andcm,*
@@ -40,8 +40,10 @@
40 .level 2.0 40 .level 2.0
41#endif 41#endif
42 42
43#include <asm/assembly.h> 43#include <linux/config.h>
44
44#include <asm/psw.h> 45#include <asm/psw.h>
46#include <asm/assembly.h>
45#include <asm/pgtable.h> 47#include <asm/pgtable.h>
46#include <asm/cache.h> 48#include <asm/cache.h>
47 49
@@ -62,32 +64,23 @@ flush_tlb_all_local:
62 * to happen in real mode with all interruptions disabled. 64 * to happen in real mode with all interruptions disabled.
63 */ 65 */
64 66
65 /* 67 /* pcxt_ssm_bug - relied upon translation! PA 2.0 Arch. F-4 and F-5 */
66 * Once again, we do the rfi dance ... some day we need examine 68 rsm PSW_SM_I, %r19 /* save I-bit state */
67 * all of our uses of this type of code and see what can be 69 load32 PA(1f), %r1
68 * consolidated.
69 */
70
71 rsm PSW_SM_I, %r19 /* relied upon translation! PA 2.0 Arch. F-5 */
72 nop 70 nop
73 nop 71 nop
74 nop 72 nop
75 nop 73 nop
76 nop 74 nop
77 nop 75
78 nop 76 rsm PSW_SM_Q, %r0 /* prep to load iia queue */
79
80 rsm PSW_SM_Q, %r0 /* Turn off Q bit to load iia queue */
81 ldil L%REAL_MODE_PSW, %r1
82 ldo R%REAL_MODE_PSW(%r1), %r1
83 mtctl %r1, %cr22
84 mtctl %r0, %cr17 /* Clear IIASQ tail */ 77 mtctl %r0, %cr17 /* Clear IIASQ tail */
85 mtctl %r0, %cr17 /* Clear IIASQ head */ 78 mtctl %r0, %cr17 /* Clear IIASQ head */
86 ldil L%PA(1f), %r1
87 ldo R%PA(1f)(%r1), %r1
88 mtctl %r1, %cr18 /* IIAOQ head */ 79 mtctl %r1, %cr18 /* IIAOQ head */
89 ldo 4(%r1), %r1 80 ldo 4(%r1), %r1
90 mtctl %r1, %cr18 /* IIAOQ tail */ 81 mtctl %r1, %cr18 /* IIAOQ tail */
82 load32 REAL_MODE_PSW, %r1
83 mtctl %r1, %ipsw
91 rfi 84 rfi
92 nop 85 nop
93 86
@@ -178,29 +171,36 @@ fdtonemiddle: /* Loop if LOOP = 1 */
178 ADDIB> -1, %r22, fdtoneloop /* Outer loop count decr */ 171 ADDIB> -1, %r22, fdtoneloop /* Outer loop count decr */
179 add %r21, %r20, %r20 /* increment space */ 172 add %r21, %r20, %r20 /* increment space */
180 173
181fdtdone:
182 174
183 /* Switch back to virtual mode */ 175fdtdone:
176 /*
177 * Switch back to virtual mode
178 */
179 /* pcxt_ssm_bug */
180 rsm PSW_SM_I, %r0
181 load32 2f, %r1
182 nop
183 nop
184 nop
185 nop
186 nop
184 187
185 rsm PSW_SM_Q, %r0 /* clear Q bit to load iia queue */ 188 rsm PSW_SM_Q, %r0 /* prep to load iia queue */
186 ldil L%KERNEL_PSW, %r1
187 ldo R%KERNEL_PSW(%r1), %r1
188 or %r1, %r19, %r1 /* Set I bit if set on entry */
189 mtctl %r1, %cr22
190 mtctl %r0, %cr17 /* Clear IIASQ tail */ 189 mtctl %r0, %cr17 /* Clear IIASQ tail */
191 mtctl %r0, %cr17 /* Clear IIASQ head */ 190 mtctl %r0, %cr17 /* Clear IIASQ head */
192 ldil L%(2f), %r1
193 ldo R%(2f)(%r1), %r1
194 mtctl %r1, %cr18 /* IIAOQ head */ 191 mtctl %r1, %cr18 /* IIAOQ head */
195 ldo 4(%r1), %r1 192 ldo 4(%r1), %r1
196 mtctl %r1, %cr18 /* IIAOQ tail */ 193 mtctl %r1, %cr18 /* IIAOQ tail */
194 load32 KERNEL_PSW, %r1
195 or %r1, %r19, %r1 /* I-bit to state on entry */
196 mtctl %r1, %ipsw /* restore I-bit (entire PSW) */
197 rfi 197 rfi
198 nop 198 nop
199 199
2002: bv %r0(%r2) 2002: bv %r0(%r2)
201 nop 201 nop
202 .exit
203 202
203 .exit
204 .procend 204 .procend
205 205
206 .export flush_instruction_cache_local,code 206 .export flush_instruction_cache_local,code
@@ -227,7 +227,7 @@ flush_instruction_cache_local:
227 227
228fimanyloop: /* Loop if LOOP >= 2 */ 228fimanyloop: /* Loop if LOOP >= 2 */
229 ADDIB> -1, %r31, fimanyloop /* Adjusted inner loop decr */ 229 ADDIB> -1, %r31, fimanyloop /* Adjusted inner loop decr */
230 fice 0(%sr1, %arg0) 230 fice %r0(%sr1, %arg0)
231 fice,m %arg1(%sr1, %arg0) /* Last fice and addr adjust */ 231 fice,m %arg1(%sr1, %arg0) /* Last fice and addr adjust */
232 movb,tr %arg3, %r31, fimanyloop /* Re-init inner loop count */ 232 movb,tr %arg3, %r31, fimanyloop /* Re-init inner loop count */
233 ADDIB<=,n -1, %arg2, fisync /* Outer loop decr */ 233 ADDIB<=,n -1, %arg2, fisync /* Outer loop decr */
@@ -238,7 +238,7 @@ fioneloop: /* Loop if LOOP = 1 */
238 238
239fisync: 239fisync:
240 sync 240 sync
241 mtsm %r22 241 mtsm %r22 /* restore I-bit */
242 bv %r0(%r2) 242 bv %r0(%r2)
243 nop 243 nop
244 .exit 244 .exit
@@ -269,7 +269,7 @@ flush_data_cache_local:
269 269
270fdmanyloop: /* Loop if LOOP >= 2 */ 270fdmanyloop: /* Loop if LOOP >= 2 */
271 ADDIB> -1, %r31, fdmanyloop /* Adjusted inner loop decr */ 271 ADDIB> -1, %r31, fdmanyloop /* Adjusted inner loop decr */
272 fdce 0(%sr1, %arg0) 272 fdce %r0(%sr1, %arg0)
273 fdce,m %arg1(%sr1, %arg0) /* Last fdce and addr adjust */ 273 fdce,m %arg1(%sr1, %arg0) /* Last fdce and addr adjust */
274 movb,tr %arg3, %r31, fdmanyloop /* Re-init inner loop count */ 274 movb,tr %arg3, %r31, fdmanyloop /* Re-init inner loop count */
275 ADDIB<=,n -1, %arg2, fdsync /* Outer loop decr */ 275 ADDIB<=,n -1, %arg2, fdsync /* Outer loop decr */
@@ -281,7 +281,7 @@ fdoneloop: /* Loop if LOOP = 1 */
281fdsync: 281fdsync:
282 syncdma 282 syncdma
283 sync 283 sync
284 mtsm %r22 284 mtsm %r22 /* restore I-bit */
285 bv %r0(%r2) 285 bv %r0(%r2)
286 nop 286 nop
287 .exit 287 .exit
@@ -296,7 +296,7 @@ copy_user_page_asm:
296 .callinfo NO_CALLS 296 .callinfo NO_CALLS
297 .entry 297 .entry
298 298
299#ifdef __LP64__ 299#ifdef CONFIG_64BIT
300 /* PA8x00 CPUs can consume 2 loads or 1 store per cycle. 300 /* PA8x00 CPUs can consume 2 loads or 1 store per cycle.
301 * Unroll the loop by hand and arrange insn appropriately. 301 * Unroll the loop by hand and arrange insn appropriately.
302 * GCC probably can do this just as well. 302 * GCC probably can do this just as well.
@@ -351,7 +351,11 @@ copy_user_page_asm:
351 std %r22, 120(%r26) 351 std %r22, 120(%r26)
352 ldo 128(%r26), %r26 352 ldo 128(%r26), %r26
353 353
354 ADDIB> -1, %r1, 1b /* bundle 10 */ 354 /* conditional branches nullify on forward taken branch, and on
355 * non-taken backward branch. Note that .+4 is a backwards branch.
356 * The ldd should only get executed if the branch is taken.
357 */
358 ADDIB>,n -1, %r1, 1b /* bundle 10 */
355 ldd 0(%r25), %r19 /* start next loads */ 359 ldd 0(%r25), %r19 /* start next loads */
356 360
357#else 361#else
@@ -363,10 +367,10 @@ copy_user_page_asm:
363 * the full 64 bit register values on interrupt, we can't 367 * the full 64 bit register values on interrupt, we can't
364 * use ldd/std on a 32 bit kernel. 368 * use ldd/std on a 32 bit kernel.
365 */ 369 */
370 ldw 0(%r25), %r19
366 ldi 64, %r1 /* PAGE_SIZE/64 == 64 */ 371 ldi 64, %r1 /* PAGE_SIZE/64 == 64 */
367 372
3681: 3731:
369 ldw 0(%r25), %r19
370 ldw 4(%r25), %r20 374 ldw 4(%r25), %r20
371 ldw 8(%r25), %r21 375 ldw 8(%r25), %r21
372 ldw 12(%r25), %r22 376 ldw 12(%r25), %r22
@@ -396,11 +400,12 @@ copy_user_page_asm:
396 ldw 60(%r25), %r22 400 ldw 60(%r25), %r22
397 stw %r19, 48(%r26) 401 stw %r19, 48(%r26)
398 stw %r20, 52(%r26) 402 stw %r20, 52(%r26)
403 ldo 64(%r25), %r25
399 stw %r21, 56(%r26) 404 stw %r21, 56(%r26)
400 stw %r22, 60(%r26) 405 stw %r22, 60(%r26)
401 ldo 64(%r26), %r26 406 ldo 64(%r26), %r26
402 ADDIB> -1, %r1, 1b 407 ADDIB>,n -1, %r1, 1b
403 ldo 64(%r25), %r25 408 ldw 0(%r25), %r19
404#endif 409#endif
405 bv %r0(%r2) 410 bv %r0(%r2)
406 nop 411 nop
@@ -456,7 +461,7 @@ copy_user_page_asm:
456 sub %r25, %r1, %r23 /* move physical addr into non shadowed reg */ 461 sub %r25, %r1, %r23 /* move physical addr into non shadowed reg */
457 462
458 ldil L%(TMPALIAS_MAP_START), %r28 463 ldil L%(TMPALIAS_MAP_START), %r28
459#ifdef __LP64__ 464#ifdef CONFIG_64BIT
460 extrd,u %r26,56,32, %r26 /* convert phys addr to tlb insert format */ 465 extrd,u %r26,56,32, %r26 /* convert phys addr to tlb insert format */
461 extrd,u %r23,56,32, %r23 /* convert phys addr to tlb insert format */ 466 extrd,u %r23,56,32, %r23 /* convert phys addr to tlb insert format */
462 depd %r24,63,22, %r28 /* Form aliased virtual address 'to' */ 467 depd %r24,63,22, %r28 /* Form aliased virtual address 'to' */
@@ -543,7 +548,7 @@ __clear_user_page_asm:
543 tophys_r1 %r26 548 tophys_r1 %r26
544 549
545 ldil L%(TMPALIAS_MAP_START), %r28 550 ldil L%(TMPALIAS_MAP_START), %r28
546#ifdef __LP64__ 551#ifdef CONFIG_64BIT
547#if (TMPALIAS_MAP_START >= 0x80000000) 552#if (TMPALIAS_MAP_START >= 0x80000000)
548 depdi 0, 31,32, %r28 /* clear any sign extension */ 553 depdi 0, 31,32, %r28 /* clear any sign extension */
549#endif 554#endif
@@ -560,7 +565,7 @@ __clear_user_page_asm:
560 565
561 pdtlb 0(%r28) 566 pdtlb 0(%r28)
562 567
563#ifdef __LP64__ 568#ifdef CONFIG_64BIT
564 ldi 32, %r1 /* PAGE_SIZE/128 == 32 */ 569 ldi 32, %r1 /* PAGE_SIZE/128 == 32 */
565 570
566 /* PREFETCH (Write) has not (yet) been proven to help here */ 571 /* PREFETCH (Write) has not (yet) been proven to help here */
@@ -585,7 +590,7 @@ __clear_user_page_asm:
585 ADDIB> -1, %r1, 1b 590 ADDIB> -1, %r1, 1b
586 ldo 128(%r28), %r28 591 ldo 128(%r28), %r28
587 592
588#else /* ! __LP64 */ 593#else /* ! CONFIG_64BIT */
589 594
590 ldi 64, %r1 /* PAGE_SIZE/64 == 64 */ 595 ldi 64, %r1 /* PAGE_SIZE/64 == 64 */
591 596
@@ -608,7 +613,7 @@ __clear_user_page_asm:
608 stw %r0, 60(%r28) 613 stw %r0, 60(%r28)
609 ADDIB> -1, %r1, 1b 614 ADDIB> -1, %r1, 1b
610 ldo 64(%r28), %r28 615 ldo 64(%r28), %r28
611#endif /* __LP64 */ 616#endif /* CONFIG_64BIT */
612 617
613 bv %r0(%r2) 618 bv %r0(%r2)
614 nop 619 nop
@@ -626,7 +631,7 @@ flush_kernel_dcache_page:
626 ldil L%dcache_stride, %r1 631 ldil L%dcache_stride, %r1
627 ldw R%dcache_stride(%r1), %r23 632 ldw R%dcache_stride(%r1), %r23
628 633
629#ifdef __LP64__ 634#ifdef CONFIG_64BIT
630 depdi,z 1, 63-PAGE_SHIFT,1, %r25 635 depdi,z 1, 63-PAGE_SHIFT,1, %r25
631#else 636#else
632 depwi,z 1, 31-PAGE_SHIFT,1, %r25 637 depwi,z 1, 31-PAGE_SHIFT,1, %r25
@@ -670,7 +675,7 @@ flush_user_dcache_page:
670 ldil L%dcache_stride, %r1 675 ldil L%dcache_stride, %r1
671 ldw R%dcache_stride(%r1), %r23 676 ldw R%dcache_stride(%r1), %r23
672 677
673#ifdef __LP64__ 678#ifdef CONFIG_64BIT
674 depdi,z 1,63-PAGE_SHIFT,1, %r25 679 depdi,z 1,63-PAGE_SHIFT,1, %r25
675#else 680#else
676 depwi,z 1,31-PAGE_SHIFT,1, %r25 681 depwi,z 1,31-PAGE_SHIFT,1, %r25
@@ -714,7 +719,7 @@ flush_user_icache_page:
714 ldil L%dcache_stride, %r1 719 ldil L%dcache_stride, %r1
715 ldw R%dcache_stride(%r1), %r23 720 ldw R%dcache_stride(%r1), %r23
716 721
717#ifdef __LP64__ 722#ifdef CONFIG_64BIT
718 depdi,z 1, 63-PAGE_SHIFT,1, %r25 723 depdi,z 1, 63-PAGE_SHIFT,1, %r25
719#else 724#else
720 depwi,z 1, 31-PAGE_SHIFT,1, %r25 725 depwi,z 1, 31-PAGE_SHIFT,1, %r25
@@ -759,7 +764,7 @@ purge_kernel_dcache_page:
759 ldil L%dcache_stride, %r1 764 ldil L%dcache_stride, %r1
760 ldw R%dcache_stride(%r1), %r23 765 ldw R%dcache_stride(%r1), %r23
761 766
762#ifdef __LP64__ 767#ifdef CONFIG_64BIT
763 depdi,z 1, 63-PAGE_SHIFT,1, %r25 768 depdi,z 1, 63-PAGE_SHIFT,1, %r25
764#else 769#else
765 depwi,z 1, 31-PAGE_SHIFT,1, %r25 770 depwi,z 1, 31-PAGE_SHIFT,1, %r25
@@ -807,7 +812,7 @@ flush_alias_page:
807 tophys_r1 %r26 812 tophys_r1 %r26
808 813
809 ldil L%(TMPALIAS_MAP_START), %r28 814 ldil L%(TMPALIAS_MAP_START), %r28
810#ifdef __LP64__ 815#ifdef CONFIG_64BIT
811 extrd,u %r26, 56,32, %r26 /* convert phys addr to tlb insert format */ 816 extrd,u %r26, 56,32, %r26 /* convert phys addr to tlb insert format */
812 depd %r25, 63,22, %r28 /* Form aliased virtual address 'to' */ 817 depd %r25, 63,22, %r28 /* Form aliased virtual address 'to' */
813 depdi 0, 63,12, %r28 /* Clear any offset bits */ 818 depdi 0, 63,12, %r28 /* Clear any offset bits */
@@ -824,7 +829,7 @@ flush_alias_page:
824 ldil L%dcache_stride, %r1 829 ldil L%dcache_stride, %r1
825 ldw R%dcache_stride(%r1), %r23 830 ldw R%dcache_stride(%r1), %r23
826 831
827#ifdef __LP64__ 832#ifdef CONFIG_64BIT
828 depdi,z 1, 63-PAGE_SHIFT,1, %r29 833 depdi,z 1, 63-PAGE_SHIFT,1, %r29
829#else 834#else
830 depwi,z 1, 31-PAGE_SHIFT,1, %r29 835 depwi,z 1, 31-PAGE_SHIFT,1, %r29
@@ -935,7 +940,7 @@ flush_kernel_icache_page:
935 ldil L%icache_stride, %r1 940 ldil L%icache_stride, %r1
936 ldw R%icache_stride(%r1), %r23 941 ldw R%icache_stride(%r1), %r23
937 942
938#ifdef __LP64__ 943#ifdef CONFIG_64BIT
939 depdi,z 1, 63-PAGE_SHIFT,1, %r25 944 depdi,z 1, 63-PAGE_SHIFT,1, %r25
940#else 945#else
941 depwi,z 1, 31-PAGE_SHIFT,1, %r25 946 depwi,z 1, 31-PAGE_SHIFT,1, %r25
@@ -944,23 +949,23 @@ flush_kernel_icache_page:
944 sub %r25, %r23, %r25 949 sub %r25, %r23, %r25
945 950
946 951
9471: fic,m %r23(%r26) 9521: fic,m %r23(%sr4, %r26)
948 fic,m %r23(%r26) 953 fic,m %r23(%sr4, %r26)
949 fic,m %r23(%r26) 954 fic,m %r23(%sr4, %r26)
950 fic,m %r23(%r26) 955 fic,m %r23(%sr4, %r26)
951 fic,m %r23(%r26) 956 fic,m %r23(%sr4, %r26)
952 fic,m %r23(%r26) 957 fic,m %r23(%sr4, %r26)
953 fic,m %r23(%r26) 958 fic,m %r23(%sr4, %r26)
954 fic,m %r23(%r26) 959 fic,m %r23(%sr4, %r26)
955 fic,m %r23(%r26) 960 fic,m %r23(%sr4, %r26)
956 fic,m %r23(%r26) 961 fic,m %r23(%sr4, %r26)
957 fic,m %r23(%r26) 962 fic,m %r23(%sr4, %r26)
958 fic,m %r23(%r26) 963 fic,m %r23(%sr4, %r26)
959 fic,m %r23(%r26) 964 fic,m %r23(%sr4, %r26)
960 fic,m %r23(%r26) 965 fic,m %r23(%sr4, %r26)
961 fic,m %r23(%r26) 966 fic,m %r23(%sr4, %r26)
962 CMPB<< %r26, %r25, 1b 967 CMPB<< %r26, %r25, 1b
963 fic,m %r23(%r26) 968 fic,m %r23(%sr4, %r26)
964 969
965 sync 970 sync
966 bv %r0(%r2) 971 bv %r0(%r2)
@@ -982,17 +987,18 @@ flush_kernel_icache_range_asm:
982 ANDCM %r26, %r21, %r26 987 ANDCM %r26, %r21, %r26
983 988
9841: CMPB<<,n %r26, %r25, 1b 9891: CMPB<<,n %r26, %r25, 1b
985 fic,m %r23(%r26) 990 fic,m %r23(%sr4, %r26)
986 991
987 sync 992 sync
988 bv %r0(%r2) 993 bv %r0(%r2)
989 nop 994 nop
990 .exit 995 .exit
991
992 .procend 996 .procend
993 997
994 .align 128 998 /* align should cover use of rfi in disable_sr_hashing_asm and
995 999 * srdis_done.
1000 */
1001 .align 256
996 .export disable_sr_hashing_asm,code 1002 .export disable_sr_hashing_asm,code
997 1003
998disable_sr_hashing_asm: 1004disable_sr_hashing_asm:
@@ -1000,28 +1006,26 @@ disable_sr_hashing_asm:
1000 .callinfo NO_CALLS 1006 .callinfo NO_CALLS
1001 .entry 1007 .entry
1002 1008
1003 /* Switch to real mode */ 1009 /*
1004 1010 * Switch to real mode
1005 ssm 0, %r0 /* relied upon translation! */ 1011 */
1006 nop 1012 /* pcxt_ssm_bug */
1007 nop 1013 rsm PSW_SM_I, %r0
1014 load32 PA(1f), %r1
1008 nop 1015 nop
1009 nop 1016 nop
1010 nop 1017 nop
1011 nop 1018 nop
1012 nop 1019 nop
1013 1020
1014 rsm (PSW_SM_Q|PSW_SM_I), %r0 /* disable Q&I to load the iia queue */ 1021 rsm PSW_SM_Q, %r0 /* prep to load iia queue */
1015 ldil L%REAL_MODE_PSW, %r1
1016 ldo R%REAL_MODE_PSW(%r1), %r1
1017 mtctl %r1, %cr22
1018 mtctl %r0, %cr17 /* Clear IIASQ tail */ 1022 mtctl %r0, %cr17 /* Clear IIASQ tail */
1019 mtctl %r0, %cr17 /* Clear IIASQ head */ 1023 mtctl %r0, %cr17 /* Clear IIASQ head */
1020 ldil L%PA(1f), %r1
1021 ldo R%PA(1f)(%r1), %r1
1022 mtctl %r1, %cr18 /* IIAOQ head */ 1024 mtctl %r1, %cr18 /* IIAOQ head */
1023 ldo 4(%r1), %r1 1025 ldo 4(%r1), %r1
1024 mtctl %r1, %cr18 /* IIAOQ tail */ 1026 mtctl %r1, %cr18 /* IIAOQ tail */
1027 load32 REAL_MODE_PSW, %r1
1028 mtctl %r1, %ipsw
1025 rfi 1029 rfi
1026 nop 1030 nop
1027 1031
@@ -1053,27 +1057,31 @@ srdis_pcxl:
1053 1057
1054srdis_pa20: 1058srdis_pa20:
1055 1059
1056 /* Disable Space Register Hashing for PCXU,PCXU+,PCXW,PCXW+ */ 1060 /* Disable Space Register Hashing for PCXU,PCXU+,PCXW,PCXW+,PCXW2 */
1057 1061
1058 .word 0x144008bc /* mfdiag %dr2, %r28 */ 1062 .word 0x144008bc /* mfdiag %dr2, %r28 */
1059 depdi 0, 54,1, %r28 /* clear DIAG_SPHASH_ENAB (bit 54) */ 1063 depdi 0, 54,1, %r28 /* clear DIAG_SPHASH_ENAB (bit 54) */
1060 .word 0x145c1840 /* mtdiag %r28, %dr2 */ 1064 .word 0x145c1840 /* mtdiag %r28, %dr2 */
1061 1065
1062srdis_done:
1063 1066
1067srdis_done:
1064 /* Switch back to virtual mode */ 1068 /* Switch back to virtual mode */
1069 rsm PSW_SM_I, %r0 /* prep to load iia queue */
1070 load32 2f, %r1
1071 nop
1072 nop
1073 nop
1074 nop
1075 nop
1065 1076
1066 rsm PSW_SM_Q, %r0 /* clear Q bit to load iia queue */ 1077 rsm PSW_SM_Q, %r0 /* prep to load iia queue */
1067 ldil L%KERNEL_PSW, %r1
1068 ldo R%KERNEL_PSW(%r1), %r1
1069 mtctl %r1, %cr22
1070 mtctl %r0, %cr17 /* Clear IIASQ tail */ 1078 mtctl %r0, %cr17 /* Clear IIASQ tail */
1071 mtctl %r0, %cr17 /* Clear IIASQ head */ 1079 mtctl %r0, %cr17 /* Clear IIASQ head */
1072 ldil L%(2f), %r1
1073 ldo R%(2f)(%r1), %r1
1074 mtctl %r1, %cr18 /* IIAOQ head */ 1080 mtctl %r1, %cr18 /* IIAOQ head */
1075 ldo 4(%r1), %r1 1081 ldo 4(%r1), %r1
1076 mtctl %r1, %cr18 /* IIAOQ tail */ 1082 mtctl %r1, %cr18 /* IIAOQ tail */
1083 load32 KERNEL_PSW, %r1
1084 mtctl %r1, %ipsw
1077 rfi 1085 rfi
1078 nop 1086 nop
1079 1087
diff --git a/arch/parisc/kernel/pci-dma.c b/arch/parisc/kernel/pci-dma.c
index 368cc095c99f..f94a02ef3d95 100644
--- a/arch/parisc/kernel/pci-dma.c
+++ b/arch/parisc/kernel/pci-dma.c
@@ -31,7 +31,7 @@
31#include <asm/page.h> /* get_order */ 31#include <asm/page.h> /* get_order */
32#include <asm/pgalloc.h> 32#include <asm/pgalloc.h>
33#include <asm/uaccess.h> 33#include <asm/uaccess.h>
34 34#include <asm/tlbflush.h> /* for purge_tlb_*() macros */
35 35
36static struct proc_dir_entry * proc_gsc_root = NULL; 36static struct proc_dir_entry * proc_gsc_root = NULL;
37static int pcxl_proc_info(char *buffer, char **start, off_t offset, int length); 37static int pcxl_proc_info(char *buffer, char **start, off_t offset, int length);
@@ -114,7 +114,7 @@ static inline int map_pmd_uncached(pmd_t * pmd, unsigned long vaddr,
114 if (end > PGDIR_SIZE) 114 if (end > PGDIR_SIZE)
115 end = PGDIR_SIZE; 115 end = PGDIR_SIZE;
116 do { 116 do {
117 pte_t * pte = pte_alloc_kernel(&init_mm, pmd, vaddr); 117 pte_t * pte = pte_alloc_kernel(pmd, vaddr);
118 if (!pte) 118 if (!pte)
119 return -ENOMEM; 119 return -ENOMEM;
120 if (map_pte_uncached(pte, orig_vaddr, end - vaddr, paddr_ptr)) 120 if (map_pte_uncached(pte, orig_vaddr, end - vaddr, paddr_ptr))
@@ -333,23 +333,33 @@ pcxl_free_range(unsigned long vaddr, size_t size)
333static int __init 333static int __init
334pcxl_dma_init(void) 334pcxl_dma_init(void)
335{ 335{
336 if (pcxl_dma_start == 0) 336 if (pcxl_dma_start == 0)
337 return 0; 337 return 0;
338 338
339 spin_lock_init(&pcxl_res_lock); 339 spin_lock_init(&pcxl_res_lock);
340 pcxl_res_size = PCXL_DMA_MAP_SIZE >> (PAGE_SHIFT + 3); 340 pcxl_res_size = PCXL_DMA_MAP_SIZE >> (PAGE_SHIFT + 3);
341 pcxl_res_hint = 0; 341 pcxl_res_hint = 0;
342 pcxl_res_map = (char *)__get_free_pages(GFP_KERNEL, 342 pcxl_res_map = (char *)__get_free_pages(GFP_KERNEL,
343 get_order(pcxl_res_size)); 343 get_order(pcxl_res_size));
344 memset(pcxl_res_map, 0, pcxl_res_size); 344 memset(pcxl_res_map, 0, pcxl_res_size);
345 proc_gsc_root = proc_mkdir("gsc", 0); 345 proc_gsc_root = proc_mkdir("gsc", 0);
346 create_proc_info_entry("dino", 0, proc_gsc_root, pcxl_proc_info); 346 if (!proc_gsc_root)
347 return 0; 347 printk(KERN_WARNING
348 "pcxl_dma_init: Unable to create gsc /proc dir entry\n");
349 else {
350 struct proc_dir_entry* ent;
351 ent = create_proc_info_entry("pcxl_dma", 0,
352 proc_gsc_root, pcxl_proc_info);
353 if (!ent)
354 printk(KERN_WARNING
355 "pci-dma.c: Unable to create pcxl_dma /proc entry.\n");
356 }
357 return 0;
348} 358}
349 359
350__initcall(pcxl_dma_init); 360__initcall(pcxl_dma_init);
351 361
352static void * pa11_dma_alloc_consistent (struct device *dev, size_t size, dma_addr_t *dma_handle, int flag) 362static void * pa11_dma_alloc_consistent (struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flag)
353{ 363{
354 unsigned long vaddr; 364 unsigned long vaddr;
355 unsigned long paddr; 365 unsigned long paddr;
@@ -502,13 +512,13 @@ struct hppa_dma_ops pcxl_dma_ops = {
502}; 512};
503 513
504static void *fail_alloc_consistent(struct device *dev, size_t size, 514static void *fail_alloc_consistent(struct device *dev, size_t size,
505 dma_addr_t *dma_handle, int flag) 515 dma_addr_t *dma_handle, gfp_t flag)
506{ 516{
507 return NULL; 517 return NULL;
508} 518}
509 519
510static void *pa11_dma_alloc_noncoherent(struct device *dev, size_t size, 520static void *pa11_dma_alloc_noncoherent(struct device *dev, size_t size,
511 dma_addr_t *dma_handle, int flag) 521 dma_addr_t *dma_handle, gfp_t flag)
512{ 522{
513 void *addr = NULL; 523 void *addr = NULL;
514 524
@@ -545,16 +555,16 @@ struct hppa_dma_ops pcx_dma_ops = {
545 555
546static int pcxl_proc_info(char *buf, char **start, off_t offset, int len) 556static int pcxl_proc_info(char *buf, char **start, off_t offset, int len)
547{ 557{
558#if 0
548 u_long i = 0; 559 u_long i = 0;
549 unsigned long *res_ptr = (u_long *)pcxl_res_map; 560 unsigned long *res_ptr = (u_long *)pcxl_res_map;
550 unsigned long total_pages = pcxl_res_size << 3; /* 8 bits per byte */ 561#endif
562 unsigned long total_pages = pcxl_res_size << 3; /* 8 bits per byte */
551 563
552 sprintf(buf, "\nDMA Mapping Area size : %d bytes (%d pages)\n", 564 sprintf(buf, "\nDMA Mapping Area size : %d bytes (%ld pages)\n",
553 PCXL_DMA_MAP_SIZE, 565 PCXL_DMA_MAP_SIZE, total_pages);
554 (pcxl_res_size << 3) ); /* 1 bit per page */
555 566
556 sprintf(buf, "%sResource bitmap : %d bytes (%d pages)\n", 567 sprintf(buf, "%sResource bitmap : %d bytes\n", buf, pcxl_res_size);
557 buf, pcxl_res_size, pcxl_res_size << 3); /* 8 bits per byte */
558 568
559 strcat(buf, " total: free: used: % used:\n"); 569 strcat(buf, " total: free: used: % used:\n");
560 sprintf(buf, "%sblocks %8d %8ld %8ld %8ld%%\n", buf, pcxl_res_size, 570 sprintf(buf, "%sblocks %8d %8ld %8ld %8ld%%\n", buf, pcxl_res_size,
@@ -564,7 +574,8 @@ static int pcxl_proc_info(char *buf, char **start, off_t offset, int len)
564 sprintf(buf, "%spages %8ld %8ld %8ld %8ld%%\n", buf, total_pages, 574 sprintf(buf, "%spages %8ld %8ld %8ld %8ld%%\n", buf, total_pages,
565 total_pages - pcxl_used_pages, pcxl_used_pages, 575 total_pages - pcxl_used_pages, pcxl_used_pages,
566 (pcxl_used_pages * 100 / total_pages)); 576 (pcxl_used_pages * 100 / total_pages));
567 577
578#if 0
568 strcat(buf, "\nResource bitmap:"); 579 strcat(buf, "\nResource bitmap:");
569 580
570 for(; i < (pcxl_res_size / sizeof(u_long)); ++i, ++res_ptr) { 581 for(; i < (pcxl_res_size / sizeof(u_long)); ++i, ++res_ptr) {
@@ -572,6 +583,7 @@ static int pcxl_proc_info(char *buf, char **start, off_t offset, int len)
572 strcat(buf,"\n "); 583 strcat(buf,"\n ");
573 sprintf(buf, "%s %08lx", buf, *res_ptr); 584 sprintf(buf, "%s %08lx", buf, *res_ptr);
574 } 585 }
586#endif
575 strcat(buf, "\n"); 587 strcat(buf, "\n");
576 return strlen(buf); 588 return strlen(buf);
577} 589}
diff --git a/arch/parisc/kernel/pci.c b/arch/parisc/kernel/pci.c
index e6a891a0cad0..88cba49c5301 100644
--- a/arch/parisc/kernel/pci.c
+++ b/arch/parisc/kernel/pci.c
@@ -202,7 +202,8 @@ static void
202pcibios_link_hba_resources( struct resource *hba_res, struct resource *r) 202pcibios_link_hba_resources( struct resource *hba_res, struct resource *r)
203{ 203{
204 if (!r->parent) { 204 if (!r->parent) {
205 printk(KERN_EMERG "PCI: Tell willy he's wrong\n"); 205 printk(KERN_EMERG "PCI: resource not parented! [%lx-%lx]\n",
206 r->start, r->end);
206 r->parent = hba_res; 207 r->parent = hba_res;
207 208
208 /* reverse link is harder *sigh* */ 209 /* reverse link is harder *sigh* */
diff --git a/arch/parisc/kernel/pdc_cons.c b/arch/parisc/kernel/pdc_cons.c
index 01f676d1673b..215d78c87bc5 100644
--- a/arch/parisc/kernel/pdc_cons.c
+++ b/arch/parisc/kernel/pdc_cons.c
@@ -41,7 +41,7 @@
41 41
42/* Define EARLY_BOOTUP_DEBUG to debug kernel related boot problems. 42/* Define EARLY_BOOTUP_DEBUG to debug kernel related boot problems.
43 * On production kernels EARLY_BOOTUP_DEBUG should be undefined. */ 43 * On production kernels EARLY_BOOTUP_DEBUG should be undefined. */
44#undef EARLY_BOOTUP_DEBUG 44#define EARLY_BOOTUP_DEBUG
45 45
46 46
47#include <linux/config.h> 47#include <linux/config.h>
@@ -49,14 +49,8 @@
49#include <linux/console.h> 49#include <linux/console.h>
50#include <linux/string.h> 50#include <linux/string.h>
51#include <linux/init.h> 51#include <linux/init.h>
52#include <linux/delay.h>
53#include <linux/sched.h>
54#include <linux/interrupt.h>
55#include <linux/major.h> 52#include <linux/major.h>
56#include <linux/tty.h> 53#include <linux/tty.h>
57#include <asm/page.h>
58#include <asm/types.h>
59#include <asm/system.h>
60#include <asm/pdc.h> /* for iodc_call() proto and friends */ 54#include <asm/pdc.h> /* for iodc_call() proto and friends */
61 55
62 56
@@ -96,7 +90,6 @@ static int pdc_console_setup(struct console *co, char *options)
96} 90}
97 91
98#if defined(CONFIG_PDC_CONSOLE) 92#if defined(CONFIG_PDC_CONSOLE)
99#define PDC_CONSOLE_DEVICE pdc_console_device
100static struct tty_driver * pdc_console_device (struct console *c, int *index) 93static struct tty_driver * pdc_console_device (struct console *c, int *index)
101{ 94{
102 extern struct tty_driver console_driver; 95 extern struct tty_driver console_driver;
@@ -104,22 +97,19 @@ static struct tty_driver * pdc_console_device (struct console *c, int *index)
104 return &console_driver; 97 return &console_driver;
105} 98}
106#else 99#else
107#define PDC_CONSOLE_DEVICE NULL 100#define pdc_console_device NULL
108#endif 101#endif
109 102
110static struct console pdc_cons = { 103static struct console pdc_cons = {
111 .name = "ttyB", 104 .name = "ttyB",
112 .write = pdc_console_write, 105 .write = pdc_console_write,
113 .device = PDC_CONSOLE_DEVICE, 106 .device = pdc_console_device,
114 .setup = pdc_console_setup, 107 .setup = pdc_console_setup,
115 .flags = CON_BOOT|CON_PRINTBUFFER|CON_ENABLED, 108 .flags = CON_BOOT | CON_PRINTBUFFER | CON_ENABLED,
116 .index = -1, 109 .index = -1,
117}; 110};
118 111
119static int pdc_console_initialized; 112static int pdc_console_initialized;
120extern unsigned long con_start; /* kernel/printk.c */
121extern unsigned long log_end; /* kernel/printk.c */
122
123 113
124static void pdc_console_init_force(void) 114static void pdc_console_init_force(void)
125{ 115{
@@ -146,27 +136,11 @@ void __init pdc_console_init(void)
146} 136}
147 137
148 138
149/* Unregister the pdc console with the printk console layer */
150void pdc_console_die(void)
151{
152 if (!pdc_console_initialized)
153 return;
154 --pdc_console_initialized;
155
156 printk(KERN_INFO "Switching from PDC console\n");
157
158 /* Don't repeat what we've already printed */
159 con_start = log_end;
160
161 unregister_console(&pdc_cons);
162}
163
164
165/* 139/*
166 * Used for emergencies. Currently only used if an HPMC occurs. If an 140 * Used for emergencies. Currently only used if an HPMC occurs. If an
167 * HPMC occurs, it is possible that the current console may not be 141 * HPMC occurs, it is possible that the current console may not be
168 * properly initialed after the PDC IO reset. This routine unregisters all 142 * properly initialised after the PDC IO reset. This routine unregisters
169 * of the current consoles, reinitializes the pdc console and 143 * all of the current consoles, reinitializes the pdc console and
170 * registers it. 144 * registers it.
171 */ 145 */
172 146
@@ -177,13 +151,13 @@ void pdc_console_restart(void)
177 if (pdc_console_initialized) 151 if (pdc_console_initialized)
178 return; 152 return;
179 153
154 /* If we've already seen the output, don't bother to print it again */
155 if (console_drivers != NULL)
156 pdc_cons.flags &= ~CON_PRINTBUFFER;
157
180 while ((console = console_drivers) != NULL) 158 while ((console = console_drivers) != NULL)
181 unregister_console(console_drivers); 159 unregister_console(console_drivers);
182 160
183 /* Don't repeat what we've already printed */
184 con_start = log_end;
185
186 /* force registering the pdc console */ 161 /* force registering the pdc console */
187 pdc_console_init_force(); 162 pdc_console_init_force();
188} 163}
189
diff --git a/arch/parisc/kernel/perf.c b/arch/parisc/kernel/perf.c
index b3ad0a505b87..44670d6e06f4 100644
--- a/arch/parisc/kernel/perf.c
+++ b/arch/parisc/kernel/perf.c
@@ -746,7 +746,8 @@ static int perf_write_image(uint64_t *memaddr)
746 uint64_t *bptr; 746 uint64_t *bptr;
747 uint32_t dwords; 747 uint32_t dwords;
748 uint32_t *intrigue_rdr; 748 uint32_t *intrigue_rdr;
749 uint64_t *intrigue_bitmask, tmp64, proc_hpa; 749 uint64_t *intrigue_bitmask, tmp64;
750 void __iomem *runway;
750 struct rdr_tbl_ent *tentry; 751 struct rdr_tbl_ent *tentry;
751 int i; 752 int i;
752 753
@@ -798,15 +799,16 @@ static int perf_write_image(uint64_t *memaddr)
798 return -1; 799 return -1;
799 } 800 }
800 801
801 proc_hpa = cpu_device->hpa; 802 runway = ioremap(cpu_device->hpa.start, 4096);
802 803
803 /* Merge intrigue bits into Runway STATUS 0 */ 804 /* Merge intrigue bits into Runway STATUS 0 */
804 tmp64 = __raw_readq(proc_hpa + RUNWAY_STATUS) & 0xffecfffffffffffful; 805 tmp64 = __raw_readq(runway + RUNWAY_STATUS) & 0xffecfffffffffffful;
805 __raw_writeq(tmp64 | (*memaddr++ & 0x0013000000000000ul), proc_hpa + RUNWAY_STATUS); 806 __raw_writeq(tmp64 | (*memaddr++ & 0x0013000000000000ul),
807 runway + RUNWAY_STATUS);
806 808
807 /* Write RUNWAY DEBUG registers */ 809 /* Write RUNWAY DEBUG registers */
808 for (i = 0; i < 8; i++) { 810 for (i = 0; i < 8; i++) {
809 __raw_writeq(*memaddr++, proc_hpa + RUNWAY_DEBUG + i); 811 __raw_writeq(*memaddr++, runway + RUNWAY_DEBUG);
810 } 812 }
811 813
812 return 0; 814 return 0;
diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c
index 46b759385115..7fdca87ef647 100644
--- a/arch/parisc/kernel/process.c
+++ b/arch/parisc/kernel/process.c
@@ -9,7 +9,7 @@
9 * Copyright (C) 2000-2003 Paul Bame <bame at parisc-linux.org> 9 * Copyright (C) 2000-2003 Paul Bame <bame at parisc-linux.org>
10 * Copyright (C) 2000 Philipp Rumpf <prumpf with tux.org> 10 * Copyright (C) 2000 Philipp Rumpf <prumpf with tux.org>
11 * Copyright (C) 2000 David Kennedy <dkennedy with linuxcare.com> 11 * Copyright (C) 2000 David Kennedy <dkennedy with linuxcare.com>
12 * Copyright (C) 2000 Richard Hirst <rhirst with parisc-lixux.org> 12 * Copyright (C) 2000 Richard Hirst <rhirst with parisc-linux.org>
13 * Copyright (C) 2000 Grant Grundler <grundler with parisc-linux.org> 13 * Copyright (C) 2000 Grant Grundler <grundler with parisc-linux.org>
14 * Copyright (C) 2001 Alan Modra <amodra at parisc-linux.org> 14 * Copyright (C) 2001 Alan Modra <amodra at parisc-linux.org>
15 * Copyright (C) 2001-2002 Ryan Bradetich <rbrad at parisc-linux.org> 15 * Copyright (C) 2001-2002 Ryan Bradetich <rbrad at parisc-linux.org>
@@ -245,7 +245,17 @@ int
245sys_clone(unsigned long clone_flags, unsigned long usp, 245sys_clone(unsigned long clone_flags, unsigned long usp,
246 struct pt_regs *regs) 246 struct pt_regs *regs)
247{ 247{
248 int __user *user_tid = (int __user *)regs->gr[26]; 248 /* Arugments from userspace are:
249 r26 = Clone flags.
250 r25 = Child stack.
251 r24 = parent_tidptr.
252 r23 = Is the TLS storage descriptor
253 r22 = child_tidptr
254
255 However, these last 3 args are only examined
256 if the proper flags are set. */
257 int __user *child_tidptr;
258 int __user *parent_tidptr;
249 259
250 /* usp must be word aligned. This also prevents users from 260 /* usp must be word aligned. This also prevents users from
251 * passing in the value 1 (which is the signal for a special 261 * passing in the value 1 (which is the signal for a special
@@ -253,10 +263,20 @@ sys_clone(unsigned long clone_flags, unsigned long usp,
253 usp = ALIGN(usp, 4); 263 usp = ALIGN(usp, 4);
254 264
255 /* A zero value for usp means use the current stack */ 265 /* A zero value for usp means use the current stack */
256 if(usp == 0) 266 if (usp == 0)
257 usp = regs->gr[30]; 267 usp = regs->gr[30];
258 268
259 return do_fork(clone_flags, usp, regs, 0, user_tid, NULL); 269 if (clone_flags & CLONE_PARENT_SETTID)
270 parent_tidptr = (int __user *)regs->gr[24];
271 else
272 parent_tidptr = NULL;
273
274 if (clone_flags & (CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID))
275 child_tidptr = (int __user *)regs->gr[22];
276 else
277 child_tidptr = NULL;
278
279 return do_fork(clone_flags, usp, regs, 0, parent_tidptr, child_tidptr);
260} 280}
261 281
262int 282int
@@ -332,6 +352,10 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
332 } else { 352 } else {
333 cregs->kpc = (unsigned long) &child_return; 353 cregs->kpc = (unsigned long) &child_return;
334 } 354 }
355 /* Setup thread TLS area from the 4th parameter in clone */
356 if (clone_flags & CLONE_SETTLS)
357 cregs->cr27 = pregs->gr[23];
358
335 } 359 }
336 360
337 return 0; 361 return 0;
diff --git a/arch/parisc/kernel/processor.c b/arch/parisc/kernel/processor.c
index 13b721cb9f55..4f5bbcf1f5a4 100644
--- a/arch/parisc/kernel/processor.c
+++ b/arch/parisc/kernel/processor.c
@@ -92,7 +92,7 @@ static int __init processor_probe(struct parisc_device *dev)
92 * May get overwritten by PAT code. 92 * May get overwritten by PAT code.
93 */ 93 */
94 cpuid = boot_cpu_data.cpu_count; 94 cpuid = boot_cpu_data.cpu_count;
95 txn_addr = dev->hpa; /* for legacy PDC */ 95 txn_addr = dev->hpa.start; /* for legacy PDC */
96 96
97#ifdef __LP64__ 97#ifdef __LP64__
98 if (is_pdc_pat()) { 98 if (is_pdc_pat()) {
@@ -122,7 +122,7 @@ static int __init processor_probe(struct parisc_device *dev)
122 * boot time (ie shutdown a CPU from an OS perspective). 122 * boot time (ie shutdown a CPU from an OS perspective).
123 */ 123 */
124 /* get the cpu number */ 124 /* get the cpu number */
125 status = pdc_pat_cpu_get_number(&cpu_info, dev->hpa); 125 status = pdc_pat_cpu_get_number(&cpu_info, dev->hpa.start);
126 126
127 BUG_ON(PDC_OK != status); 127 BUG_ON(PDC_OK != status);
128 128
@@ -130,7 +130,7 @@ static int __init processor_probe(struct parisc_device *dev)
130 printk(KERN_WARNING "IGNORING CPU at 0x%x," 130 printk(KERN_WARNING "IGNORING CPU at 0x%x,"
131 " cpu_slot_id > NR_CPUS" 131 " cpu_slot_id > NR_CPUS"
132 " (%ld > %d)\n", 132 " (%ld > %d)\n",
133 dev->hpa, cpu_info.cpu_num, NR_CPUS); 133 dev->hpa.start, cpu_info.cpu_num, NR_CPUS);
134 /* Ignore CPU since it will only crash */ 134 /* Ignore CPU since it will only crash */
135 boot_cpu_data.cpu_count--; 135 boot_cpu_data.cpu_count--;
136 return 1; 136 return 1;
@@ -149,7 +149,7 @@ static int __init processor_probe(struct parisc_device *dev)
149 149
150 p->loops_per_jiffy = loops_per_jiffy; 150 p->loops_per_jiffy = loops_per_jiffy;
151 p->dev = dev; /* Save IODC data in case we need it */ 151 p->dev = dev; /* Save IODC data in case we need it */
152 p->hpa = dev->hpa; /* save CPU hpa */ 152 p->hpa = dev->hpa.start; /* save CPU hpa */
153 p->cpuid = cpuid; /* save CPU id */ 153 p->cpuid = cpuid; /* save CPU id */
154 p->txn_addr = txn_addr; /* save CPU IRQ address */ 154 p->txn_addr = txn_addr; /* save CPU IRQ address */
155#ifdef CONFIG_SMP 155#ifdef CONFIG_SMP
diff --git a/arch/parisc/kernel/ptrace.c b/arch/parisc/kernel/ptrace.c
index f3428e5e86fb..18130c3748f3 100644
--- a/arch/parisc/kernel/ptrace.c
+++ b/arch/parisc/kernel/ptrace.c
@@ -78,7 +78,7 @@ void ptrace_disable(struct task_struct *child)
78 pa_psw(child)->l = 0; 78 pa_psw(child)->l = 0;
79} 79}
80 80
81long sys_ptrace(long request, pid_t pid, long addr, long data) 81long sys_ptrace(long request, long pid, long addr, long data)
82{ 82{
83 struct task_struct *child; 83 struct task_struct *child;
84 long ret; 84 long ret;
diff --git a/arch/parisc/kernel/real2.S b/arch/parisc/kernel/real2.S
index 8dd5defb7316..8c2859cca77e 100644
--- a/arch/parisc/kernel/real2.S
+++ b/arch/parisc/kernel/real2.S
@@ -7,8 +7,10 @@
7 * Copyright (C) 2000 Hewlett Packard (Paul Bame bame@puffin.external.hp.com) 7 * Copyright (C) 2000 Hewlett Packard (Paul Bame bame@puffin.external.hp.com)
8 * 8 *
9 */ 9 */
10#include <asm/assembly.h> 10#include <linux/config.h>
11
11#include <asm/psw.h> 12#include <asm/psw.h>
13#include <asm/assembly.h>
12 14
13 .section .bss 15 .section .bss
14 .export real_stack 16 .export real_stack
@@ -20,7 +22,7 @@ real32_stack:
20real64_stack: 22real64_stack:
21 .block 8192 23 .block 8192
22 24
23#ifdef __LP64__ 25#ifdef CONFIG_64BIT
24# define REG_SZ 8 26# define REG_SZ 8
25#else 27#else
26# define REG_SZ 4 28# define REG_SZ 4
@@ -50,7 +52,7 @@ save_cr_end:
50 52
51real32_call_asm: 53real32_call_asm:
52 STREG %rp, -RP_OFFSET(%sp) /* save RP */ 54 STREG %rp, -RP_OFFSET(%sp) /* save RP */
53#ifdef __LP64__ 55#ifdef CONFIG_64BIT
54 callee_save 56 callee_save
55 ldo 2*REG_SZ(%sp), %sp /* room for a couple more saves */ 57 ldo 2*REG_SZ(%sp), %sp /* room for a couple more saves */
56 STREG %r27, -1*REG_SZ(%sp) 58 STREG %r27, -1*REG_SZ(%sp)
@@ -77,7 +79,7 @@ real32_call_asm:
77 b,l save_control_regs,%r2 /* modifies r1, r2, r28 */ 79 b,l save_control_regs,%r2 /* modifies r1, r2, r28 */
78 nop 80 nop
79 81
80#ifdef __LP64__ 82#ifdef CONFIG_64BIT
81 rsm PSW_SM_W, %r0 /* go narrow */ 83 rsm PSW_SM_W, %r0 /* go narrow */
82#endif 84#endif
83 85
@@ -85,7 +87,7 @@ real32_call_asm:
85 bv 0(%r31) 87 bv 0(%r31)
86 nop 88 nop
87ric_ret: 89ric_ret:
88#ifdef __LP64__ 90#ifdef CONFIG_64BIT
89 ssm PSW_SM_W, %r0 /* go wide */ 91 ssm PSW_SM_W, %r0 /* go wide */
90#endif 92#endif
91 /* restore CRs before going virtual in case we page fault */ 93 /* restore CRs before going virtual in case we page fault */
@@ -97,7 +99,7 @@ ric_ret:
97 99
98 tovirt_r1 %sp 100 tovirt_r1 %sp
99 LDREG -REG_SZ(%sp), %sp /* restore SP */ 101 LDREG -REG_SZ(%sp), %sp /* restore SP */
100#ifdef __LP64__ 102#ifdef CONFIG_64BIT
101 LDREG -1*REG_SZ(%sp), %r27 103 LDREG -1*REG_SZ(%sp), %r27
102 LDREG -2*REG_SZ(%sp), %r29 104 LDREG -2*REG_SZ(%sp), %r29
103 ldo -2*REG_SZ(%sp), %sp 105 ldo -2*REG_SZ(%sp), %sp
@@ -143,24 +145,21 @@ restore_control_regs:
143/* rfi_virt2real() and rfi_real2virt() could perhaps be adapted for 145/* rfi_virt2real() and rfi_real2virt() could perhaps be adapted for
144 * more general-purpose use by the several places which need RFIs 146 * more general-purpose use by the several places which need RFIs
145 */ 147 */
146 .align 128
147 .text 148 .text
149 .align 128
148rfi_virt2real: 150rfi_virt2real:
149 /* switch to real mode... */ 151 /* switch to real mode... */
150 ssm 0,0 /* See "relied upon translation" */ 152 rsm PSW_SM_I,%r0
151 nop /* PA 2.0 Arch. F-5 */ 153 load32 PA(rfi_v2r_1), %r1
152 nop
153 nop
154 nop 154 nop
155 nop 155 nop
156 nop 156 nop
157 nop 157 nop
158 nop 158 nop
159 159
160 rsm (PSW_SM_Q|PSW_SM_I),%r0 /* disable Q & I bits to load iia queue */ 160 rsm PSW_SM_Q,%r0 /* disable Q & I bits to load iia queue */
161 mtctl %r0, %cr17 /* Clear IIASQ tail */ 161 mtctl %r0, %cr17 /* Clear IIASQ tail */
162 mtctl %r0, %cr17 /* Clear IIASQ head */ 162 mtctl %r0, %cr17 /* Clear IIASQ head */
163 load32 PA(rfi_v2r_1), %r1
164 mtctl %r1, %cr18 /* IIAOQ head */ 163 mtctl %r1, %cr18 /* IIAOQ head */
165 ldo 4(%r1), %r1 164 ldo 4(%r1), %r1
166 mtctl %r1, %cr18 /* IIAOQ tail */ 165 mtctl %r1, %cr18 /* IIAOQ tail */
@@ -184,10 +183,8 @@ rfi_v2r_1:
184 .text 183 .text
185 .align 128 184 .align 128
186rfi_real2virt: 185rfi_real2virt:
187 ssm 0,0 /* See "relied upon translation" */ 186 rsm PSW_SM_I,%r0
188 nop /* PA 2.0 Arch. F-5 */ 187 load32 (rfi_r2v_1), %r1
189 nop
190 nop
191 nop 188 nop
192 nop 189 nop
193 nop 190 nop
@@ -197,7 +194,6 @@ rfi_real2virt:
197 rsm PSW_SM_Q,%r0 /* disable Q bit to load iia queue */ 194 rsm PSW_SM_Q,%r0 /* disable Q bit to load iia queue */
198 mtctl %r0, %cr17 /* Clear IIASQ tail */ 195 mtctl %r0, %cr17 /* Clear IIASQ tail */
199 mtctl %r0, %cr17 /* Clear IIASQ head */ 196 mtctl %r0, %cr17 /* Clear IIASQ head */
200 load32 (rfi_r2v_1), %r1
201 mtctl %r1, %cr18 /* IIAOQ head */ 197 mtctl %r1, %cr18 /* IIAOQ head */
202 ldo 4(%r1), %r1 198 ldo 4(%r1), %r1
203 mtctl %r1, %cr18 /* IIAOQ tail */ 199 mtctl %r1, %cr18 /* IIAOQ tail */
@@ -218,7 +214,7 @@ rfi_r2v_1:
218 bv 0(%r2) 214 bv 0(%r2)
219 nop 215 nop
220 216
221#ifdef __LP64__ 217#ifdef CONFIG_64BIT
222 218
223/************************ 64-bit real-mode calls ***********************/ 219/************************ 64-bit real-mode calls ***********************/
224/* This is only usable in wide kernels right now and will probably stay so */ 220/* This is only usable in wide kernels right now and will probably stay so */
@@ -296,7 +292,7 @@ pc_in_user_space:
296 ** comparing function pointers. 292 ** comparing function pointers.
297 */ 293 */
298__canonicalize_funcptr_for_compare: 294__canonicalize_funcptr_for_compare:
299#ifdef __LP64__ 295#ifdef CONFIG_64BIT
300 bve (%r2) 296 bve (%r2)
301#else 297#else
302 bv %r0(%r2) 298 bv %r0(%r2)
diff --git a/arch/parisc/kernel/signal.c b/arch/parisc/kernel/signal.c
index 0224651fd8f1..82c24e62ab63 100644
--- a/arch/parisc/kernel/signal.c
+++ b/arch/parisc/kernel/signal.c
@@ -490,15 +490,7 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
490 490
491give_sigsegv: 491give_sigsegv:
492 DBG(1,"setup_rt_frame: sending SIGSEGV\n"); 492 DBG(1,"setup_rt_frame: sending SIGSEGV\n");
493 if (sig == SIGSEGV) 493 force_sigsegv(sig, current);
494 ka->sa.sa_handler = SIG_DFL;
495 si.si_signo = SIGSEGV;
496 si.si_errno = 0;
497 si.si_code = SI_KERNEL;
498 si.si_pid = current->pid;
499 si.si_uid = current->uid;
500 si.si_addr = frame;
501 force_sig_info(SIGSEGV, &si, current);
502 return 0; 494 return 0;
503} 495}
504 496
@@ -633,10 +625,14 @@ do_signal(sigset_t *oldset, struct pt_regs *regs, int in_syscall)
633 put_user(0xe0008200, &usp[3]); 625 put_user(0xe0008200, &usp[3]);
634 put_user(0x34140000, &usp[4]); 626 put_user(0x34140000, &usp[4]);
635 627
636 /* Stack is 64-byte aligned, and we only 628 /* Stack is 64-byte aligned, and we only need
637 * need to flush 1 cache line */ 629 * to flush 1 cache line.
638 asm("fdc 0(%%sr3, %0)\n" 630 * Flushing one cacheline is cheap.
639 "fic 0(%%sr3, %0)\n" 631 * "sync" on bigger (> 4 way) boxes is not.
632 */
633 asm("fdc %%r0(%%sr3, %0)\n"
634 "sync\n"
635 "fic %%r0(%%sr3, %0)\n"
640 "sync\n" 636 "sync\n"
641 : : "r"(regs->gr[30])); 637 : : "r"(regs->gr[30]));
642 638
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c
index bcc7e83f5142..5db3be4e2704 100644
--- a/arch/parisc/kernel/smp.c
+++ b/arch/parisc/kernel/smp.c
@@ -18,7 +18,7 @@
18*/ 18*/
19#undef ENTRY_SYS_CPUS /* syscall support for iCOD-like functionality */ 19#undef ENTRY_SYS_CPUS /* syscall support for iCOD-like functionality */
20 20
21#include <linux/autoconf.h> 21#include <linux/config.h>
22 22
23#include <linux/types.h> 23#include <linux/types.h>
24#include <linux/spinlock.h> 24#include <linux/spinlock.h>
diff --git a/arch/parisc/kernel/syscall.S b/arch/parisc/kernel/syscall.S
index 8c7a7185cd3b..b29b76b42bb7 100644
--- a/arch/parisc/kernel/syscall.S
+++ b/arch/parisc/kernel/syscall.S
@@ -6,6 +6,7 @@
6 * thanks to Philipp Rumpf, Mike Shaver and various others 6 * thanks to Philipp Rumpf, Mike Shaver and various others
7 * sorry about the wall, puffin.. 7 * sorry about the wall, puffin..
8 */ 8 */
9#include <linux/config.h> /* for CONFIG_SMP */
9 10
10#include <asm/asm-offsets.h> 11#include <asm/asm-offsets.h>
11#include <asm/unistd.h> 12#include <asm/unistd.h>
@@ -22,15 +23,13 @@
22 */ 23 */
23#define KILL_INSN break 0,0 24#define KILL_INSN break 0,0
24 25
25#include <linux/config.h> /* for CONFIG_SMP */ 26#ifdef CONFIG_64BIT
26
27#ifdef __LP64__
28 .level 2.0w 27 .level 2.0w
29#else 28#else
30 .level 1.1 29 .level 1.1
31#endif 30#endif
32 31
33#ifndef __LP64__ 32#ifndef CONFIG_64BIT
34 .macro fixup_branch,lbl 33 .macro fixup_branch,lbl
35 b \lbl 34 b \lbl
36 .endm 35 .endm
@@ -103,7 +102,7 @@ linux_gateway_entry:
103 mfsp %sr7,%r1 /* save user sr7 */ 102 mfsp %sr7,%r1 /* save user sr7 */
104 mtsp %r1,%sr3 /* and store it in sr3 */ 103 mtsp %r1,%sr3 /* and store it in sr3 */
105 104
106#ifdef __LP64__ 105#ifdef CONFIG_64BIT
107 /* for now we can *always* set the W bit on entry to the syscall 106 /* for now we can *always* set the W bit on entry to the syscall
108 * since we don't support wide userland processes. We could 107 * since we don't support wide userland processes. We could
109 * also save the current SM other than in r0 and restore it on 108 * also save the current SM other than in r0 and restore it on
@@ -155,7 +154,7 @@ linux_gateway_entry:
155 STREG %r19, TASK_PT_GR19(%r1) 154 STREG %r19, TASK_PT_GR19(%r1)
156 155
157 LDREGM -FRAME_SIZE(%r30), %r2 /* get users sp back */ 156 LDREGM -FRAME_SIZE(%r30), %r2 /* get users sp back */
158#ifdef __LP64__ 157#ifdef CONFIG_64BIT
159 extrd,u %r2,63,1,%r19 /* W hidden in bottom bit */ 158 extrd,u %r2,63,1,%r19 /* W hidden in bottom bit */
160#if 0 159#if 0
161 xor %r19,%r2,%r2 /* clear bottom bit */ 160 xor %r19,%r2,%r2 /* clear bottom bit */
@@ -186,7 +185,7 @@ linux_gateway_entry:
186 185
187 loadgp 186 loadgp
188 187
189#ifdef __LP64__ 188#ifdef CONFIG_64BIT
190 ldo -16(%r30),%r29 /* Reference param save area */ 189 ldo -16(%r30),%r29 /* Reference param save area */
191 copy %r19,%r2 /* W bit back to r2 */ 190 copy %r19,%r2 /* W bit back to r2 */
192#else 191#else
@@ -205,7 +204,7 @@ linux_gateway_entry:
205 /* Note! We cannot use the syscall table that is mapped 204 /* Note! We cannot use the syscall table that is mapped
206 nearby since the gateway page is mapped execute-only. */ 205 nearby since the gateway page is mapped execute-only. */
207 206
208#ifdef __LP64__ 207#ifdef CONFIG_64BIT
209 ldil L%sys_call_table, %r1 208 ldil L%sys_call_table, %r1
210 or,= %r2,%r2,%r2 209 or,= %r2,%r2,%r2
211 addil L%(sys_call_table64-sys_call_table), %r1 210 addil L%(sys_call_table64-sys_call_table), %r1
@@ -321,7 +320,7 @@ tracesys_next:
321 LDREG TASK_PT_GR25(%r1), %r25 320 LDREG TASK_PT_GR25(%r1), %r25
322 LDREG TASK_PT_GR24(%r1), %r24 321 LDREG TASK_PT_GR24(%r1), %r24
323 LDREG TASK_PT_GR23(%r1), %r23 322 LDREG TASK_PT_GR23(%r1), %r23
324#ifdef __LP64__ 323#ifdef CONFIG_64BIT
325 LDREG TASK_PT_GR22(%r1), %r22 324 LDREG TASK_PT_GR22(%r1), %r22
326 LDREG TASK_PT_GR21(%r1), %r21 325 LDREG TASK_PT_GR21(%r1), %r21
327 ldo -16(%r30),%r29 /* Reference param save area */ 326 ldo -16(%r30),%r29 /* Reference param save area */
@@ -350,7 +349,7 @@ tracesys_next:
350tracesys_exit: 349tracesys_exit:
351 ldo -THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1 /* get task ptr */ 350 ldo -THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1 /* get task ptr */
352 LDREG TI_TASK(%r1), %r1 351 LDREG TI_TASK(%r1), %r1
353#ifdef __LP64__ 352#ifdef CONFIG_64BIT
354 ldo -16(%r30),%r29 /* Reference param save area */ 353 ldo -16(%r30),%r29 /* Reference param save area */
355#endif 354#endif
356 bl syscall_trace, %r2 355 bl syscall_trace, %r2
@@ -371,7 +370,7 @@ tracesys_exit:
371tracesys_sigexit: 370tracesys_sigexit:
372 ldo -THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1 /* get task ptr */ 371 ldo -THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1 /* get task ptr */
373 LDREG 0(%r1), %r1 372 LDREG 0(%r1), %r1
374#ifdef __LP64__ 373#ifdef CONFIG_64BIT
375 ldo -16(%r30),%r29 /* Reference param save area */ 374 ldo -16(%r30),%r29 /* Reference param save area */
376#endif 375#endif
377 bl syscall_trace, %r2 376 bl syscall_trace, %r2
@@ -404,7 +403,7 @@ lws_start:
404 gate .+8, %r0 403 gate .+8, %r0
405 depi 3, 31, 2, %r31 /* Ensure we return to userspace */ 404 depi 3, 31, 2, %r31 /* Ensure we return to userspace */
406 405
407#ifdef __LP64__ 406#ifdef CONFIG_64BIT
408 /* FIXME: If we are a 64-bit kernel just 407 /* FIXME: If we are a 64-bit kernel just
409 * turn this on unconditionally. 408 * turn this on unconditionally.
410 */ 409 */
@@ -440,7 +439,7 @@ lws_exit_nosys:
440 /* Fall through: Return to userspace */ 439 /* Fall through: Return to userspace */
441 440
442lws_exit: 441lws_exit:
443#ifdef __LP64__ 442#ifdef CONFIG_64BIT
444 /* decide whether to reset the wide mode bit 443 /* decide whether to reset the wide mode bit
445 * 444 *
446 * For a syscall, the W bit is stored in the lowest bit 445 * For a syscall, the W bit is stored in the lowest bit
@@ -486,7 +485,7 @@ lws_exit:
486 485
487 /* ELF64 Process entry path */ 486 /* ELF64 Process entry path */
488lws_compare_and_swap64: 487lws_compare_and_swap64:
489#ifdef __LP64__ 488#ifdef CONFIG_64BIT
490 b,n lws_compare_and_swap 489 b,n lws_compare_and_swap
491#else 490#else
492 /* If we are not a 64-bit kernel, then we don't 491 /* If we are not a 64-bit kernel, then we don't
@@ -497,7 +496,7 @@ lws_compare_and_swap64:
497 496
498 /* ELF32 Process entry path */ 497 /* ELF32 Process entry path */
499lws_compare_and_swap32: 498lws_compare_and_swap32:
500#ifdef __LP64__ 499#ifdef CONFIG_64BIT
501 /* Clip all the input registers */ 500 /* Clip all the input registers */
502 depdi 0, 31, 32, %r26 501 depdi 0, 31, 32, %r26
503 depdi 0, 31, 32, %r25 502 depdi 0, 31, 32, %r25
@@ -608,7 +607,7 @@ cas_action:
608 the other for the store. Either return -EFAULT. 607 the other for the store. Either return -EFAULT.
609 Each of the entries must be relocated. */ 608 Each of the entries must be relocated. */
610 .section __ex_table,"aw" 609 .section __ex_table,"aw"
611#ifdef __LP64__ 610#ifdef CONFIG_64BIT
612 /* Pad the address calculation */ 611 /* Pad the address calculation */
613 .word 0,(2b - linux_gateway_page) 612 .word 0,(2b - linux_gateway_page)
614 .word 0,(3b - linux_gateway_page) 613 .word 0,(3b - linux_gateway_page)
@@ -619,7 +618,7 @@ cas_action:
619 .previous 618 .previous
620 619
621 .section __ex_table,"aw" 620 .section __ex_table,"aw"
622#ifdef __LP64__ 621#ifdef CONFIG_64BIT
623 /* Pad the address calculation */ 622 /* Pad the address calculation */
624 .word 0,(1b - linux_gateway_page) 623 .word 0,(1b - linux_gateway_page)
625 .word 0,(3b - linux_gateway_page) 624 .word 0,(3b - linux_gateway_page)
@@ -638,7 +637,7 @@ end_linux_gateway_page:
638 637
639 /* Relocate symbols assuming linux_gateway_page is mapped 638 /* Relocate symbols assuming linux_gateway_page is mapped
640 to virtual address 0x0 */ 639 to virtual address 0x0 */
641#ifdef __LP64__ 640#ifdef CONFIG_64BIT
642 /* FIXME: The code will always be on the gateay page 641 /* FIXME: The code will always be on the gateay page
643 and thus it will be on the first 4k, the 642 and thus it will be on the first 4k, the
644 assembler seems to think that the final 643 assembler seems to think that the final
@@ -666,7 +665,7 @@ lws_table:
666sys_call_table: 665sys_call_table:
667#include "syscall_table.S" 666#include "syscall_table.S"
668 667
669#ifdef __LP64__ 668#ifdef CONFIG_64BIT
670 .align 4096 669 .align 4096
671 .export sys_call_table64 670 .export sys_call_table64
672.Lsys_call_table64: 671.Lsys_call_table64:
diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S
index dcfa4d3d0e7d..32cbc0489324 100644
--- a/arch/parisc/kernel/syscall_table.S
+++ b/arch/parisc/kernel/syscall_table.S
@@ -35,7 +35,7 @@
35#undef ENTRY_UHOH 35#undef ENTRY_UHOH
36#undef ENTRY_COMP 36#undef ENTRY_COMP
37#undef ENTRY_OURS 37#undef ENTRY_OURS
38#if defined(__LP64__) && !defined(SYSCALL_TABLE_64BIT) 38#if defined(CONFIG_64BIT) && !defined(SYSCALL_TABLE_64BIT)
39/* Use ENTRY_SAME for 32-bit syscalls which are the same on wide and 39/* Use ENTRY_SAME for 32-bit syscalls which are the same on wide and
40 * narrow palinux. Use ENTRY_DIFF for those where a 32-bit specific 40 * narrow palinux. Use ENTRY_DIFF for those where a 32-bit specific
41 * implementation is required on wide palinux. Use ENTRY_COMP where 41 * implementation is required on wide palinux. Use ENTRY_COMP where
@@ -46,7 +46,7 @@
46#define ENTRY_UHOH(_name_) .dword sys32_##unimplemented 46#define ENTRY_UHOH(_name_) .dword sys32_##unimplemented
47#define ENTRY_OURS(_name_) .dword parisc_##_name_ 47#define ENTRY_OURS(_name_) .dword parisc_##_name_
48#define ENTRY_COMP(_name_) .dword compat_sys_##_name_ 48#define ENTRY_COMP(_name_) .dword compat_sys_##_name_
49#elif defined(__LP64__) && defined(SYSCALL_TABLE_64BIT) 49#elif defined(CONFIG_64BIT) && defined(SYSCALL_TABLE_64BIT)
50#define ENTRY_SAME(_name_) .dword sys_##_name_ 50#define ENTRY_SAME(_name_) .dword sys_##_name_
51#define ENTRY_DIFF(_name_) .dword sys_##_name_ 51#define ENTRY_DIFF(_name_) .dword sys_##_name_
52#define ENTRY_UHOH(_name_) .dword sys_##_name_ 52#define ENTRY_UHOH(_name_) .dword sys_##_name_
@@ -368,5 +368,11 @@
368 ENTRY_COMP(mbind) /* 260 */ 368 ENTRY_COMP(mbind) /* 260 */
369 ENTRY_COMP(get_mempolicy) 369 ENTRY_COMP(get_mempolicy)
370 ENTRY_COMP(set_mempolicy) 370 ENTRY_COMP(set_mempolicy)
371 ENTRY_SAME(ni_syscall) /* 263: reserved for vserver */
372 ENTRY_SAME(add_key)
373 ENTRY_SAME(request_key) /* 265 */
374 ENTRY_SAME(keyctl)
375 ENTRY_SAME(ioprio_set)
376 ENTRY_SAME(ioprio_get)
371 /* Nothing yet */ 377 /* Nothing yet */
372 378
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c
index 7ff67f8e9f8c..cded25680787 100644
--- a/arch/parisc/kernel/time.c
+++ b/arch/parisc/kernel/time.c
@@ -33,10 +33,6 @@
33 33
34#include <linux/timex.h> 34#include <linux/timex.h>
35 35
36u64 jiffies_64 = INITIAL_JIFFIES;
37
38EXPORT_SYMBOL(jiffies_64);
39
40/* xtime and wall_jiffies keep wall-clock time */ 36/* xtime and wall_jiffies keep wall-clock time */
41extern unsigned long wall_jiffies; 37extern unsigned long wall_jiffies;
42 38
@@ -89,14 +85,6 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
89 } 85 }
90 } 86 }
91 87
92#ifdef CONFIG_CHASSIS_LCD_LED
93 /* Only schedule the led tasklet on cpu 0, and only if it
94 * is enabled.
95 */
96 if (cpu == 0 && !atomic_read(&led_tasklet.count))
97 tasklet_schedule(&led_tasklet);
98#endif
99
100 /* check soft power switch status */ 88 /* check soft power switch status */
101 if (cpu == 0 && !atomic_read(&power_tasklet.count)) 89 if (cpu == 0 && !atomic_read(&power_tasklet.count))
102 tasklet_schedule(&power_tasklet); 90 tasklet_schedule(&power_tasklet);
@@ -104,6 +92,24 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
104 return IRQ_HANDLED; 92 return IRQ_HANDLED;
105} 93}
106 94
95
96unsigned long profile_pc(struct pt_regs *regs)
97{
98 unsigned long pc = instruction_pointer(regs);
99
100 if (regs->gr[0] & PSW_N)
101 pc -= 4;
102
103#ifdef CONFIG_SMP
104 if (in_lock_functions(pc))
105 pc = regs->gr[2];
106#endif
107
108 return pc;
109}
110EXPORT_SYMBOL(profile_pc);
111
112
107/*** converted from ia64 ***/ 113/*** converted from ia64 ***/
108/* 114/*
109 * Return the number of micro-seconds that elapsed since the last 115 * Return the number of micro-seconds that elapsed since the last
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c
index d2e5b229a2f4..15914f0235a0 100644
--- a/arch/parisc/kernel/traps.c
+++ b/arch/parisc/kernel/traps.c
@@ -74,7 +74,10 @@ void show_regs(struct pt_regs *regs)
74 char *level; 74 char *level;
75 unsigned long cr30; 75 unsigned long cr30;
76 unsigned long cr31; 76 unsigned long cr31;
77 77 /* carlos says that gcc understands better memory in a struct,
78 * and it makes our life easier with fpregs -- T-Bone */
79 struct { u32 sw[2]; } s;
80
78 level = user_mode(regs) ? KERN_DEBUG : KERN_CRIT; 81 level = user_mode(regs) ? KERN_DEBUG : KERN_CRIT;
79 82
80 printk("%s\n", level); /* don't want to have that pretty register dump messed up */ 83 printk("%s\n", level); /* don't want to have that pretty register dump messed up */
@@ -103,11 +106,33 @@ void show_regs(struct pt_regs *regs)
103 printk("%s\n", buf); 106 printk("%s\n", buf);
104 } 107 }
105 108
106#if RIDICULOUSLY_VERBOSE 109 /* FR are 64bit everywhere. Need to use asm to get the content
107 for (i = 0; i < 32; i += 2) 110 * of fpsr/fper1, and we assume that we won't have a FP Identify
108 printk("%sFR%02d : %016lx FR%2d : %016lx", level, i, 111 * in our way, otherwise we're screwed.
109 regs->fr[i], i+1, regs->fr[i+1]); 112 * The fldd is used to restore the T-bit if there was one, as the
110#endif 113 * store clears it anyway.
114 * BTW, PA2.0 book says "thou shall not use fstw on FPSR/FPERs". */
115 __asm__ (
116 "fstd %%fr0,0(%1) \n\t"
117 "fldd 0(%1),%%fr0 \n\t"
118 : "=m" (s) : "r" (&s) : "%r0"
119 );
120
121 printk("%s\n", level);
122 printk("%s VZOUICununcqcqcqcqcqcrmunTDVZOUI\n", level);
123 printbinary(buf, s.sw[0], 32);
124 printk("%sFPSR: %s\n", level, buf);
125 printk("%sFPER1: %08x\n", level, s.sw[1]);
126
127 /* here we'll print fr0 again, tho it'll be meaningless */
128 for (i = 0; i < 32; i += 4) {
129 int j;
130 p = buf;
131 p += sprintf(p, "%sfr%02d-%02d ", level, i, i + 3);
132 for (j = 0; j < 4; j++)
133 p += sprintf(p, " %016llx", (i+j) == 0 ? 0 : regs->fr[i+j]);
134 printk("%s\n", buf);
135 }
111 136
112 cr30 = mfctl(30); 137 cr30 = mfctl(30);
113 cr31 = mfctl(31); 138 cr31 = mfctl(31);
diff --git a/arch/parisc/kernel/unaligned.c b/arch/parisc/kernel/unaligned.c
index 62eea35bcd69..eaae8a021f9f 100644
--- a/arch/parisc/kernel/unaligned.c
+++ b/arch/parisc/kernel/unaligned.c
@@ -513,15 +513,18 @@ void handle_unaligned(struct pt_regs *regs)
513 register int flop=0; /* true if this is a flop */ 513 register int flop=0; /* true if this is a flop */
514 514
515 /* log a message with pacing */ 515 /* log a message with pacing */
516 if (user_mode(regs)) 516 if (user_mode(regs)) {
517 { 517 if (current->thread.flags & PARISC_UAC_SIGBUS) {
518 if (unaligned_count > 5 && jiffies - last_time > 5*HZ) 518 goto force_sigbus;
519 { 519 }
520
521 if (unaligned_count > 5 && jiffies - last_time > 5*HZ) {
520 unaligned_count = 0; 522 unaligned_count = 0;
521 last_time = jiffies; 523 last_time = jiffies;
522 } 524 }
523 if (++unaligned_count < 5) 525
524 { 526 if (!(current->thread.flags & PARISC_UAC_NOPRINT)
527 && ++unaligned_count < 5) {
525 char buf[256]; 528 char buf[256];
526 sprintf(buf, "%s(%d): unaligned access to 0x" RFMT " at ip=0x" RFMT "\n", 529 sprintf(buf, "%s(%d): unaligned access to 0x" RFMT " at ip=0x" RFMT "\n",
527 current->comm, current->pid, regs->ior, regs->iaoq[0]); 530 current->comm, current->pid, regs->ior, regs->iaoq[0]);
@@ -530,6 +533,7 @@ void handle_unaligned(struct pt_regs *regs)
530 show_regs(regs); 533 show_regs(regs);
531#endif 534#endif
532 } 535 }
536
533 if (!unaligned_enabled) 537 if (!unaligned_enabled)
534 goto force_sigbus; 538 goto force_sigbus;
535 } 539 }
diff --git a/arch/parisc/lib/fixup.S b/arch/parisc/lib/fixup.S
index 1b91612ed964..e0661c2978ed 100644
--- a/arch/parisc/lib/fixup.S
+++ b/arch/parisc/lib/fixup.S
@@ -35,7 +35,7 @@
35 extrd,u \t2,63,32,\t2 35 extrd,u \t2,63,32,\t2
36#endif 36#endif
37 /* t2 = &__per_cpu_offset[smp_processor_id()]; */ 37 /* t2 = &__per_cpu_offset[smp_processor_id()]; */
38 LDREG,s \t2(\t1),\t2 38 LDREGX \t2(\t1),\t2
39 addil LT%per_cpu__exception_data,%r27 39 addil LT%per_cpu__exception_data,%r27
40 LDREG RT%per_cpu__exception_data(%r1),\t1 40 LDREG RT%per_cpu__exception_data(%r1),\t1
41 /* t1 = &__get_cpu_var(exception_data) */ 41 /* t1 = &__get_cpu_var(exception_data) */
@@ -53,6 +53,8 @@
53 .endm 53 .endm
54#endif 54#endif
55 55
56 .level LEVEL
57
56 .text 58 .text
57 .section .fixup, "ax" 59 .section .fixup, "ax"
58 60
diff --git a/arch/parisc/lib/memcpy.c b/arch/parisc/lib/memcpy.c
index feb1b9f42c2b..b7098035321f 100644
--- a/arch/parisc/lib/memcpy.c
+++ b/arch/parisc/lib/memcpy.c
@@ -339,6 +339,7 @@ unsigned long pa_memcpy(void *dstp, const void *srcp, unsigned long len)
339 pds = (double *)pcs; 339 pds = (double *)pcs;
340 pdd = (double *)pcd; 340 pdd = (double *)pcd;
341 341
342#if 0
342 /* Copy 8 doubles at a time */ 343 /* Copy 8 doubles at a time */
343 while (len >= 8*sizeof(double)) { 344 while (len >= 8*sizeof(double)) {
344 register double r1, r2, r3, r4, r5, r6, r7, r8; 345 register double r1, r2, r3, r4, r5, r6, r7, r8;
@@ -366,6 +367,7 @@ unsigned long pa_memcpy(void *dstp, const void *srcp, unsigned long len)
366 fstdma(d_space, r8, pdd, pmc_store_exc); 367 fstdma(d_space, r8, pdd, pmc_store_exc);
367 len -= 8*sizeof(double); 368 len -= 8*sizeof(double);
368 } 369 }
370#endif
369 371
370 pws = (unsigned int *)pds; 372 pws = (unsigned int *)pds;
371 pwd = (unsigned int *)pdd; 373 pwd = (unsigned int *)pdd;
diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c
index 2886ad70db48..29b998e430e6 100644
--- a/arch/parisc/mm/init.c
+++ b/arch/parisc/mm/init.c
@@ -505,7 +505,9 @@ void show_mem(void)
505 505
506 for (j = node_start_pfn(i); j < node_end_pfn(i); j++) { 506 for (j = node_start_pfn(i); j < node_end_pfn(i); j++) {
507 struct page *p; 507 struct page *p;
508 unsigned long flags;
508 509
510 pgdat_resize_lock(NODE_DATA(i), &flags);
509 p = nid_page_nr(i, j) - node_start_pfn(i); 511 p = nid_page_nr(i, j) - node_start_pfn(i);
510 512
511 total++; 513 total++;
@@ -517,6 +519,7 @@ void show_mem(void)
517 free++; 519 free++;
518 else 520 else
519 shared += page_count(p) - 1; 521 shared += page_count(p) - 1;
522 pgdat_resize_unlock(NODE_DATA(i), &flags);
520 } 523 }
521 } 524 }
522#endif 525#endif
diff --git a/arch/parisc/mm/ioremap.c b/arch/parisc/mm/ioremap.c
index f2df502cdae3..5c7a1b3b9326 100644
--- a/arch/parisc/mm/ioremap.c
+++ b/arch/parisc/mm/ioremap.c
@@ -52,7 +52,7 @@ static inline int remap_area_pmd(pmd_t * pmd, unsigned long address, unsigned lo
52 if (address >= end) 52 if (address >= end)
53 BUG(); 53 BUG();
54 do { 54 do {
55 pte_t * pte = pte_alloc_kernel(NULL, pmd, address); 55 pte_t * pte = pte_alloc_kernel(pmd, address);
56 if (!pte) 56 if (!pte)
57 return -ENOMEM; 57 return -ENOMEM;
58 remap_area_pte(pte, address, end - address, address + phys_addr, flags); 58 remap_area_pte(pte, address, end - address, address + phys_addr, flags);
@@ -75,10 +75,9 @@ static int remap_area_pages(unsigned long address, unsigned long phys_addr,
75 flush_cache_all(); 75 flush_cache_all();
76 if (address >= end) 76 if (address >= end)
77 BUG(); 77 BUG();
78 spin_lock(&init_mm.page_table_lock);
79 do { 78 do {
80 pmd_t *pmd; 79 pmd_t *pmd;
81 pmd = pmd_alloc(dir, address); 80 pmd = pmd_alloc(&init_mm, dir, address);
82 error = -ENOMEM; 81 error = -ENOMEM;
83 if (!pmd) 82 if (!pmd)
84 break; 83 break;
@@ -89,7 +88,6 @@ static int remap_area_pages(unsigned long address, unsigned long phys_addr,
89 address = (address + PGDIR_SIZE) & PGDIR_MASK; 88 address = (address + PGDIR_SIZE) & PGDIR_MASK;
90 dir++; 89 dir++;
91 } while (address && (address < end)); 90 } while (address && (address < end));
92 spin_unlock(&init_mm.page_table_lock);
93 flush_tlb_all(); 91 flush_tlb_all();
94 return error; 92 return error;
95} 93}
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
index e43e8ef70088..117b00012e14 100644
--- a/arch/powerpc/mm/mem.c
+++ b/arch/powerpc/mm/mem.c
@@ -102,6 +102,83 @@ pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
102} 102}
103EXPORT_SYMBOL(phys_mem_access_prot); 103EXPORT_SYMBOL(phys_mem_access_prot);
104 104
105#ifdef CONFIG_MEMORY_HOTPLUG
106
107void online_page(struct page *page)
108{
109 ClearPageReserved(page);
110 free_cold_page(page);
111 totalram_pages++;
112 num_physpages++;
113}
114
115/*
116 * This works only for the non-NUMA case. Later, we'll need a lookup
117 * to convert from real physical addresses to nid, that doesn't use
118 * pfn_to_nid().
119 */
120int __devinit add_memory(u64 start, u64 size)
121{
122 struct pglist_data *pgdata = NODE_DATA(0);
123 struct zone *zone;
124 unsigned long start_pfn = start >> PAGE_SHIFT;
125 unsigned long nr_pages = size >> PAGE_SHIFT;
126
127 /* this should work for most non-highmem platforms */
128 zone = pgdata->node_zones;
129
130 return __add_pages(zone, start_pfn, nr_pages);
131
132 return 0;
133}
134
135/*
136 * First pass at this code will check to determine if the remove
137 * request is within the RMO. Do not allow removal within the RMO.
138 */
139int __devinit remove_memory(u64 start, u64 size)
140{
141 struct zone *zone;
142 unsigned long start_pfn, end_pfn, nr_pages;
143
144 start_pfn = start >> PAGE_SHIFT;
145 nr_pages = size >> PAGE_SHIFT;
146 end_pfn = start_pfn + nr_pages;
147
148 printk("%s(): Attempting to remove memoy in range "
149 "%lx to %lx\n", __func__, start, start+size);
150 /*
151 * check for range within RMO
152 */
153 zone = page_zone(pfn_to_page(start_pfn));
154
155 printk("%s(): memory will be removed from "
156 "the %s zone\n", __func__, zone->name);
157
158 /*
159 * not handling removing memory ranges that
160 * overlap multiple zones yet
161 */
162 if (end_pfn > (zone->zone_start_pfn + zone->spanned_pages))
163 goto overlap;
164
165 /* make sure it is NOT in RMO */
166 if ((start < lmb.rmo_size) || ((start+size) < lmb.rmo_size)) {
167 printk("%s(): range to be removed must NOT be in RMO!\n",
168 __func__);
169 goto in_rmo;
170 }
171
172 return __remove_pages(zone, start_pfn, nr_pages);
173
174overlap:
175 printk("%s(): memory range to be removed overlaps "
176 "multiple zones!!!\n", __func__);
177in_rmo:
178 return -1;
179}
180#endif /* CONFIG_MEMORY_HOTPLUG */
181
105void show_mem(void) 182void show_mem(void)
106{ 183{
107 unsigned long total = 0, reserved = 0; 184 unsigned long total = 0, reserved = 0;
@@ -115,6 +192,8 @@ void show_mem(void)
115 show_free_areas(); 192 show_free_areas();
116 printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); 193 printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
117 for_each_pgdat(pgdat) { 194 for_each_pgdat(pgdat) {
195 unsigned long flags;
196 pgdat_resize_lock(pgdat, &flags);
118 for (i = 0; i < pgdat->node_spanned_pages; i++) { 197 for (i = 0; i < pgdat->node_spanned_pages; i++) {
119 page = pgdat_page_nr(pgdat, i); 198 page = pgdat_page_nr(pgdat, i);
120 total++; 199 total++;
@@ -127,6 +206,7 @@ void show_mem(void)
127 else if (page_count(page)) 206 else if (page_count(page))
128 shared += page_count(page) - 1; 207 shared += page_count(page) - 1;
129 } 208 }
209 pgdat_resize_unlock(pgdat, &flags);
130 } 210 }
131 printk("%ld pages of RAM\n", total); 211 printk("%ld pages of RAM\n", total);
132#ifdef CONFIG_HIGHMEM 212#ifdef CONFIG_HIGHMEM
diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c
index 484d24f9208b..b79a78206135 100644
--- a/arch/powerpc/mm/pgtable_64.c
+++ b/arch/powerpc/mm/pgtable_64.c
@@ -104,7 +104,6 @@ static int map_io_page(unsigned long ea, unsigned long pa, int flags)
104 unsigned long vsid; 104 unsigned long vsid;
105 105
106 if (mem_init_done) { 106 if (mem_init_done) {
107 spin_lock(&init_mm.page_table_lock);
108 pgdp = pgd_offset_k(ea); 107 pgdp = pgd_offset_k(ea);
109 pudp = pud_alloc(&init_mm, pgdp, ea); 108 pudp = pud_alloc(&init_mm, pgdp, ea);
110 if (!pudp) 109 if (!pudp)
@@ -112,12 +111,11 @@ static int map_io_page(unsigned long ea, unsigned long pa, int flags)
112 pmdp = pmd_alloc(&init_mm, pudp, ea); 111 pmdp = pmd_alloc(&init_mm, pudp, ea);
113 if (!pmdp) 112 if (!pmdp)
114 return -ENOMEM; 113 return -ENOMEM;
115 ptep = pte_alloc_kernel(&init_mm, pmdp, ea); 114 ptep = pte_alloc_kernel(pmdp, ea);
116 if (!ptep) 115 if (!ptep)
117 return -ENOMEM; 116 return -ENOMEM;
118 set_pte_at(&init_mm, ea, ptep, pfn_pte(pa >> PAGE_SHIFT, 117 set_pte_at(&init_mm, ea, ptep, pfn_pte(pa >> PAGE_SHIFT,
119 __pgprot(flags))); 118 __pgprot(flags)));
120 spin_unlock(&init_mm.page_table_lock);
121 } else { 119 } else {
122 unsigned long va, vpn, hash, hpteg; 120 unsigned long va, vpn, hash, hpteg;
123 121
diff --git a/arch/ppc/8xx_io/cs4218.h b/arch/ppc/8xx_io/cs4218.h
index a3c38c5a5db2..f1c7392255f8 100644
--- a/arch/ppc/8xx_io/cs4218.h
+++ b/arch/ppc/8xx_io/cs4218.h
@@ -78,7 +78,7 @@ typedef struct {
78 const char *name2; 78 const char *name2;
79 void (*open)(void); 79 void (*open)(void);
80 void (*release)(void); 80 void (*release)(void);
81 void *(*dma_alloc)(unsigned int, int); 81 void *(*dma_alloc)(unsigned int, gfp_t);
82 void (*dma_free)(void *, unsigned int); 82 void (*dma_free)(void *, unsigned int);
83 int (*irqinit)(void); 83 int (*irqinit)(void);
84#ifdef MODULE 84#ifdef MODULE
diff --git a/arch/ppc/8xx_io/cs4218_tdm.c b/arch/ppc/8xx_io/cs4218_tdm.c
index 2ca9ec7ec3a7..532caa388dc2 100644
--- a/arch/ppc/8xx_io/cs4218_tdm.c
+++ b/arch/ppc/8xx_io/cs4218_tdm.c
@@ -318,7 +318,7 @@ struct cs_sound_settings {
318 318
319static struct cs_sound_settings sound; 319static struct cs_sound_settings sound;
320 320
321static void *CS_Alloc(unsigned int size, int flags); 321static void *CS_Alloc(unsigned int size, gfp_t flags);
322static void CS_Free(void *ptr, unsigned int size); 322static void CS_Free(void *ptr, unsigned int size);
323static int CS_IrqInit(void); 323static int CS_IrqInit(void);
324#ifdef MODULE 324#ifdef MODULE
@@ -959,7 +959,7 @@ static TRANS transCSNormalRead = {
959 959
960/*** Low level stuff *********************************************************/ 960/*** Low level stuff *********************************************************/
961 961
962static void *CS_Alloc(unsigned int size, int flags) 962static void *CS_Alloc(unsigned int size, gfp_t flags)
963{ 963{
964 int order; 964 int order;
965 965
diff --git a/arch/ppc/kernel/dma-mapping.c b/arch/ppc/kernel/dma-mapping.c
index 8edee806dae7..685fd0defe23 100644
--- a/arch/ppc/kernel/dma-mapping.c
+++ b/arch/ppc/kernel/dma-mapping.c
@@ -115,7 +115,7 @@ static struct vm_region consistent_head = {
115}; 115};
116 116
117static struct vm_region * 117static struct vm_region *
118vm_region_alloc(struct vm_region *head, size_t size, int gfp) 118vm_region_alloc(struct vm_region *head, size_t size, gfp_t gfp)
119{ 119{
120 unsigned long addr = head->vm_start, end = head->vm_end - size; 120 unsigned long addr = head->vm_start, end = head->vm_end - size;
121 unsigned long flags; 121 unsigned long flags;
@@ -173,7 +173,7 @@ static struct vm_region *vm_region_find(struct vm_region *head, unsigned long ad
173 * virtual and bus address for that space. 173 * virtual and bus address for that space.
174 */ 174 */
175void * 175void *
176__dma_alloc_coherent(size_t size, dma_addr_t *handle, int gfp) 176__dma_alloc_coherent(size_t size, dma_addr_t *handle, gfp_t gfp)
177{ 177{
178 struct page *page; 178 struct page *page;
179 struct vm_region *c; 179 struct vm_region *c;
@@ -335,8 +335,6 @@ static int __init dma_alloc_init(void)
335 pte_t *pte; 335 pte_t *pte;
336 int ret = 0; 336 int ret = 0;
337 337
338 spin_lock(&init_mm.page_table_lock);
339
340 do { 338 do {
341 pgd = pgd_offset(&init_mm, CONSISTENT_BASE); 339 pgd = pgd_offset(&init_mm, CONSISTENT_BASE);
342 pmd = pmd_alloc(&init_mm, pgd, CONSISTENT_BASE); 340 pmd = pmd_alloc(&init_mm, pgd, CONSISTENT_BASE);
@@ -347,7 +345,7 @@ static int __init dma_alloc_init(void)
347 } 345 }
348 WARN_ON(!pmd_none(*pmd)); 346 WARN_ON(!pmd_none(*pmd));
349 347
350 pte = pte_alloc_kernel(&init_mm, pmd, CONSISTENT_BASE); 348 pte = pte_alloc_kernel(pmd, CONSISTENT_BASE);
351 if (!pte) { 349 if (!pte) {
352 printk(KERN_ERR "%s: no pte tables\n", __func__); 350 printk(KERN_ERR "%s: no pte tables\n", __func__);
353 ret = -ENOMEM; 351 ret = -ENOMEM;
@@ -357,8 +355,6 @@ static int __init dma_alloc_init(void)
357 consistent_pte = pte; 355 consistent_pte = pte;
358 } while (0); 356 } while (0);
359 357
360 spin_unlock(&init_mm.page_table_lock);
361
362 return ret; 358 return ret;
363} 359}
364 360
diff --git a/arch/ppc/kernel/time.c b/arch/ppc/kernel/time.c
index 76f44ce4772e..53ea723af60a 100644
--- a/arch/ppc/kernel/time.c
+++ b/arch/ppc/kernel/time.c
@@ -66,11 +66,6 @@
66 66
67#include <asm/time.h> 67#include <asm/time.h>
68 68
69/* XXX false sharing with below? */
70u64 jiffies_64 = INITIAL_JIFFIES;
71
72EXPORT_SYMBOL(jiffies_64);
73
74unsigned long disarm_decr[NR_CPUS]; 69unsigned long disarm_decr[NR_CPUS];
75 70
76extern struct timezone sys_tz; 71extern struct timezone sys_tz;
diff --git a/arch/ppc/mm/4xx_mmu.c b/arch/ppc/mm/4xx_mmu.c
index b7bcbc232f39..4d006aa1a0d1 100644
--- a/arch/ppc/mm/4xx_mmu.c
+++ b/arch/ppc/mm/4xx_mmu.c
@@ -110,13 +110,11 @@ unsigned long __init mmu_mapin_ram(void)
110 pmd_t *pmdp; 110 pmd_t *pmdp;
111 unsigned long val = p | _PMD_SIZE_16M | _PAGE_HWEXEC | _PAGE_HWWRITE; 111 unsigned long val = p | _PMD_SIZE_16M | _PAGE_HWEXEC | _PAGE_HWWRITE;
112 112
113 spin_lock(&init_mm.page_table_lock);
114 pmdp = pmd_offset(pgd_offset_k(v), v); 113 pmdp = pmd_offset(pgd_offset_k(v), v);
115 pmd_val(*pmdp++) = val; 114 pmd_val(*pmdp++) = val;
116 pmd_val(*pmdp++) = val; 115 pmd_val(*pmdp++) = val;
117 pmd_val(*pmdp++) = val; 116 pmd_val(*pmdp++) = val;
118 pmd_val(*pmdp++) = val; 117 pmd_val(*pmdp++) = val;
119 spin_unlock(&init_mm.page_table_lock);
120 118
121 v += LARGE_PAGE_SIZE_16M; 119 v += LARGE_PAGE_SIZE_16M;
122 p += LARGE_PAGE_SIZE_16M; 120 p += LARGE_PAGE_SIZE_16M;
@@ -127,10 +125,8 @@ unsigned long __init mmu_mapin_ram(void)
127 pmd_t *pmdp; 125 pmd_t *pmdp;
128 unsigned long val = p | _PMD_SIZE_4M | _PAGE_HWEXEC | _PAGE_HWWRITE; 126 unsigned long val = p | _PMD_SIZE_4M | _PAGE_HWEXEC | _PAGE_HWWRITE;
129 127
130 spin_lock(&init_mm.page_table_lock);
131 pmdp = pmd_offset(pgd_offset_k(v), v); 128 pmdp = pmd_offset(pgd_offset_k(v), v);
132 pmd_val(*pmdp) = val; 129 pmd_val(*pmdp) = val;
133 spin_unlock(&init_mm.page_table_lock);
134 130
135 v += LARGE_PAGE_SIZE_4M; 131 v += LARGE_PAGE_SIZE_4M;
136 p += LARGE_PAGE_SIZE_4M; 132 p += LARGE_PAGE_SIZE_4M;
diff --git a/arch/ppc/mm/pgtable.c b/arch/ppc/mm/pgtable.c
index 81a3d7446d37..6ea9185fd120 100644
--- a/arch/ppc/mm/pgtable.c
+++ b/arch/ppc/mm/pgtable.c
@@ -114,9 +114,9 @@ struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address)
114 struct page *ptepage; 114 struct page *ptepage;
115 115
116#ifdef CONFIG_HIGHPTE 116#ifdef CONFIG_HIGHPTE
117 int flags = GFP_KERNEL | __GFP_HIGHMEM | __GFP_REPEAT; 117 gfp_t flags = GFP_KERNEL | __GFP_HIGHMEM | __GFP_REPEAT;
118#else 118#else
119 int flags = GFP_KERNEL | __GFP_REPEAT; 119 gfp_t flags = GFP_KERNEL | __GFP_REPEAT;
120#endif 120#endif
121 121
122 ptepage = alloc_pages(flags, 0); 122 ptepage = alloc_pages(flags, 0);
@@ -280,18 +280,16 @@ map_page(unsigned long va, phys_addr_t pa, int flags)
280 pte_t *pg; 280 pte_t *pg;
281 int err = -ENOMEM; 281 int err = -ENOMEM;
282 282
283 spin_lock(&init_mm.page_table_lock);
284 /* Use upper 10 bits of VA to index the first level map */ 283 /* Use upper 10 bits of VA to index the first level map */
285 pd = pmd_offset(pgd_offset_k(va), va); 284 pd = pmd_offset(pgd_offset_k(va), va);
286 /* Use middle 10 bits of VA to index the second-level map */ 285 /* Use middle 10 bits of VA to index the second-level map */
287 pg = pte_alloc_kernel(&init_mm, pd, va); 286 pg = pte_alloc_kernel(pd, va);
288 if (pg != 0) { 287 if (pg != 0) {
289 err = 0; 288 err = 0;
290 set_pte_at(&init_mm, va, pg, pfn_pte(pa >> PAGE_SHIFT, __pgprot(flags))); 289 set_pte_at(&init_mm, va, pg, pfn_pte(pa >> PAGE_SHIFT, __pgprot(flags)));
291 if (mem_init_done) 290 if (mem_init_done)
292 flush_HPTE(0, va, pmd_val(*pd)); 291 flush_HPTE(0, va, pmd_val(*pd));
293 } 292 }
294 spin_unlock(&init_mm.page_table_lock);
295 return err; 293 return err;
296} 294}
297 295
diff --git a/arch/ppc/platforms/hdpu.c b/arch/ppc/platforms/hdpu.c
index 2cc12b04584a..b6a66d5e9d83 100644
--- a/arch/ppc/platforms/hdpu.c
+++ b/arch/ppc/platforms/hdpu.c
@@ -609,11 +609,6 @@ static void parse_bootinfo(unsigned long r3,
609} 609}
610 610
611#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE) 611#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
612static int hdpu_ide_check_region(ide_ioreg_t from, unsigned int extent)
613{
614 return check_region(from, extent);
615}
616
617static void 612static void
618hdpu_ide_request_region(ide_ioreg_t from, unsigned int extent, const char *name) 613hdpu_ide_request_region(ide_ioreg_t from, unsigned int extent, const char *name)
619{ 614{
diff --git a/arch/ppc64/kernel/hvcserver.c b/arch/ppc64/kernel/hvcserver.c
index bde8f42da854..4d584172055a 100644
--- a/arch/ppc64/kernel/hvcserver.c
+++ b/arch/ppc64/kernel/hvcserver.c
@@ -22,6 +22,8 @@
22#include <linux/kernel.h> 22#include <linux/kernel.h>
23#include <linux/list.h> 23#include <linux/list.h>
24#include <linux/module.h> 24#include <linux/module.h>
25#include <linux/slab.h>
26
25#include <asm/hvcall.h> 27#include <asm/hvcall.h>
26#include <asm/hvcserver.h> 28#include <asm/hvcserver.h>
27#include <asm/io.h> 29#include <asm/io.h>
diff --git a/arch/ppc64/kernel/ioctl32.c b/arch/ppc64/kernel/ioctl32.c
index a8005db23ec5..ba4a899045c2 100644
--- a/arch/ppc64/kernel/ioctl32.c
+++ b/arch/ppc64/kernel/ioctl32.c
@@ -39,9 +39,7 @@ IOCTL_TABLE_START
39#include <linux/compat_ioctl.h> 39#include <linux/compat_ioctl.h>
40#define DECLARES 40#define DECLARES
41#include "compat_ioctl.c" 41#include "compat_ioctl.c"
42COMPATIBLE_IOCTL(TIOCSTART) 42
43COMPATIBLE_IOCTL(TIOCSTOP)
44COMPATIBLE_IOCTL(TIOCSLTC)
45/* Little p (/dev/rtc, /dev/envctrl, etc.) */ 43/* Little p (/dev/rtc, /dev/envctrl, etc.) */
46COMPATIBLE_IOCTL(_IOR('p', 20, int[7])) /* RTCGET */ 44COMPATIBLE_IOCTL(_IOR('p', 20, int[7])) /* RTCGET */
47COMPATIBLE_IOCTL(_IOW('p', 21, int[7])) /* RTCSET */ 45COMPATIBLE_IOCTL(_IOW('p', 21, int[7])) /* RTCSET */
diff --git a/arch/ppc64/kernel/vdso.c b/arch/ppc64/kernel/vdso.c
index efa985f05aca..4aacf521e3e4 100644
--- a/arch/ppc64/kernel/vdso.c
+++ b/arch/ppc64/kernel/vdso.c
@@ -176,13 +176,13 @@ static struct page * vdso_vma_nopage(struct vm_area_struct * vma,
176 return NOPAGE_SIGBUS; 176 return NOPAGE_SIGBUS;
177 177
178 /* 178 /*
179 * Last page is systemcfg, special handling here, no get_page() a 179 * Last page is systemcfg.
180 * this is a reserved page
181 */ 180 */
182 if ((vma->vm_end - address) <= PAGE_SIZE) 181 if ((vma->vm_end - address) <= PAGE_SIZE)
183 return virt_to_page(systemcfg); 182 pg = virt_to_page(systemcfg);
183 else
184 pg = virt_to_page(vbase + offset);
184 185
185 pg = virt_to_page(vbase + offset);
186 get_page(pg); 186 get_page(pg);
187 DBG(" ->page count: %d\n", page_count(pg)); 187 DBG(" ->page count: %d\n", page_count(pg));
188 188
@@ -259,7 +259,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int executable_stack)
259 * gettimeofday will be totally dead. It's fine to use that for setting 259 * gettimeofday will be totally dead. It's fine to use that for setting
260 * breakpoints in the vDSO code pages though 260 * breakpoints in the vDSO code pages though
261 */ 261 */
262 vma->vm_flags = VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC; 262 vma->vm_flags = VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC | VM_RESERVED;
263 vma->vm_flags |= mm->def_flags; 263 vma->vm_flags |= mm->def_flags;
264 vma->vm_page_prot = protection_map[vma->vm_flags & 0x7]; 264 vma->vm_page_prot = protection_map[vma->vm_flags & 0x7];
265 vma->vm_ops = &vdso_vmops; 265 vma->vm_ops = &vdso_vmops;
@@ -603,6 +603,8 @@ void __init vdso_init(void)
603 ClearPageReserved(pg); 603 ClearPageReserved(pg);
604 get_page(pg); 604 get_page(pg);
605 } 605 }
606
607 get_page(virt_to_page(systemcfg));
606} 608}
607 609
608int in_gate_area_no_task(unsigned long addr) 610int in_gate_area_no_task(unsigned long addr)
diff --git a/arch/s390/kernel/compat_ioctl.c b/arch/s390/kernel/compat_ioctl.c
index 24a1e9f069a7..6504c4e69986 100644
--- a/arch/s390/kernel/compat_ioctl.c
+++ b/arch/s390/kernel/compat_ioctl.c
@@ -18,6 +18,8 @@
18#include <asm/dasd.h> 18#include <asm/dasd.h>
19#include <asm/cmb.h> 19#include <asm/cmb.h>
20#include <asm/tape390.h> 20#include <asm/tape390.h>
21#include <asm/ccwdev.h>
22#include "../../../drivers/s390/char/raw3270.h"
21 23
22static int do_ioctl32_pointer(unsigned int fd, unsigned int cmd, 24static int do_ioctl32_pointer(unsigned int fd, unsigned int cmd,
23 unsigned long arg, struct file *f) 25 unsigned long arg, struct file *f)
@@ -62,6 +64,13 @@ COMPATIBLE_IOCTL(BIODASDCMFENABLE)
62COMPATIBLE_IOCTL(BIODASDCMFDISABLE) 64COMPATIBLE_IOCTL(BIODASDCMFDISABLE)
63COMPATIBLE_IOCTL(BIODASDREADALLCMB) 65COMPATIBLE_IOCTL(BIODASDREADALLCMB)
64 66
67COMPATIBLE_IOCTL(TUBICMD)
68COMPATIBLE_IOCTL(TUBOCMD)
69COMPATIBLE_IOCTL(TUBGETI)
70COMPATIBLE_IOCTL(TUBGETO)
71COMPATIBLE_IOCTL(TUBSETMOD)
72COMPATIBLE_IOCTL(TUBGETMOD)
73
65COMPATIBLE_IOCTL(TAPE390_DISPLAY) 74COMPATIBLE_IOCTL(TAPE390_DISPLAY)
66 75
67/* s390 doesn't need handlers here */ 76/* s390 doesn't need handlers here */
diff --git a/arch/s390/kernel/head.S b/arch/s390/kernel/head.S
index 55654b6e16dc..039354d72348 100644
--- a/arch/s390/kernel/head.S
+++ b/arch/s390/kernel/head.S
@@ -485,7 +485,9 @@ start:
485# 485#
486 .org 0x10000 486 .org 0x10000
487startup:basr %r13,0 # get base 487startup:basr %r13,0 # get base
488.LPG1: lctl %c0,%c15,.Lctl-.LPG1(%r13) # load control registers 488.LPG1: l %r1, .Lget_ipl_device_addr-.LPG1(%r13)
489 basr %r14, %r1
490 lctl %c0,%c15,.Lctl-.LPG1(%r13) # load control registers
489 la %r12,_pstart-.LPG1(%r13) # pointer to parameter area 491 la %r12,_pstart-.LPG1(%r13) # pointer to parameter area
490 # move IPL device to lowcore 492 # move IPL device to lowcore
491 mvc __LC_IPLDEV(4),IPL_DEVICE-PARMAREA(%r12) 493 mvc __LC_IPLDEV(4),IPL_DEVICE-PARMAREA(%r12)
@@ -560,6 +562,9 @@ startup:basr %r13,0 # get base
560 mr %r2,%r1 # mem size in bytes in %r3 562 mr %r2,%r1 # mem size in bytes in %r3
561 b .Lfchunk-.LPG1(%r13) 563 b .Lfchunk-.LPG1(%r13)
562 564
565 .align 4
566.Lget_ipl_device_addr:
567 .long .Lget_ipl_device
563.Lpmask: 568.Lpmask:
564 .byte 0 569 .byte 0
565.align 8 570.align 8
@@ -755,6 +760,63 @@ _pstart:
755 .global _pend 760 .global _pend
756_pend: 761_pend:
757 762
763.Lget_ipl_device:
764 basr %r12,0
765.LPG2: l %r1,0xb8 # get sid
766 sll %r1,15 # test if subchannel is enabled
767 srl %r1,31
768 ltr %r1,%r1
769 bz 0(%r14) # subchannel disabled
770 l %r1,0xb8
771 la %r5,.Lipl_schib-.LPG2(%r12)
772 stsch 0(%r5) # get schib of subchannel
773 bnz 0(%r14) # schib not available
774 tm 5(%r5),0x01 # devno valid?
775 bno 0(%r14)
776 la %r6,ipl_parameter_flags-.LPG2(%r12)
777 oi 3(%r6),0x01 # set flag
778 la %r2,ipl_devno-.LPG2(%r12)
779 mvc 0(2,%r2),6(%r5) # store devno
780 tm 4(%r5),0x80 # qdio capable device?
781 bno 0(%r14)
782 oi 3(%r6),0x02 # set flag
783
784 # copy ipl parameters
785
786 lhi %r0,4096
787 l %r2,20(%r0) # get address of parameter list
788 lhi %r3,IPL_PARMBLOCK_ORIGIN
789 st %r3,20(%r0)
790 lhi %r4,1
791 cr %r2,%r3 # start parameters < destination ?
792 jl 0f
793 lhi %r1,1 # copy direction is upwards
794 j 1f
7950: lhi %r1,-1 # copy direction is downwards
796 ar %r2,%r0
797 ar %r3,%r0
798 ar %r2,%r1
799 ar %r3,%r1
8001: mvc 0(1,%r3),0(%r2) # finally copy ipl parameters
801 ar %r3,%r1
802 ar %r2,%r1
803 sr %r0,%r4
804 jne 1b
805 b 0(%r14)
806
807 .align 4
808.Lipl_schib:
809 .rept 13
810 .long 0
811 .endr
812
813 .globl ipl_parameter_flags
814ipl_parameter_flags:
815 .long 0
816 .globl ipl_devno
817ipl_devno:
818 .word 0
819
758#ifdef CONFIG_SHARED_KERNEL 820#ifdef CONFIG_SHARED_KERNEL
759 .org 0x100000 821 .org 0x100000
760#endif 822#endif
@@ -764,11 +826,11 @@ _pend:
764# 826#
765 .globl _stext 827 .globl _stext
766_stext: basr %r13,0 # get base 828_stext: basr %r13,0 # get base
767.LPG2: 829.LPG3:
768# 830#
769# Setup stack 831# Setup stack
770# 832#
771 l %r15,.Linittu-.LPG2(%r13) 833 l %r15,.Linittu-.LPG3(%r13)
772 mvc __LC_CURRENT(4),__TI_task(%r15) 834 mvc __LC_CURRENT(4),__TI_task(%r15)
773 ahi %r15,1<<(PAGE_SHIFT+THREAD_ORDER) # init_task_union + THREAD_SIZE 835 ahi %r15,1<<(PAGE_SHIFT+THREAD_ORDER) # init_task_union + THREAD_SIZE
774 st %r15,__LC_KERNEL_STACK # set end of kernel stack 836 st %r15,__LC_KERNEL_STACK # set end of kernel stack
@@ -782,8 +844,8 @@ _stext: basr %r13,0 # get base
782 lctl %c0,%c15,0(%r15) 844 lctl %c0,%c15,0(%r15)
783 845
784# 846#
785 lam 0,15,.Laregs-.LPG2(%r13) # load access regs needed by uaccess 847 lam 0,15,.Laregs-.LPG3(%r13) # load access regs needed by uaccess
786 l %r14,.Lstart-.LPG2(%r13) 848 l %r14,.Lstart-.LPG3(%r13)
787 basr %r14,%r14 # call start_kernel 849 basr %r14,%r14 # call start_kernel
788# 850#
789# We returned from start_kernel ?!? PANIK 851# We returned from start_kernel ?!? PANIK
diff --git a/arch/s390/kernel/head64.S b/arch/s390/kernel/head64.S
index c9ff0404c875..193aafa72f54 100644
--- a/arch/s390/kernel/head64.S
+++ b/arch/s390/kernel/head64.S
@@ -484,6 +484,8 @@ start:
484startup:basr %r13,0 # get base 484startup:basr %r13,0 # get base
485.LPG1: sll %r13,1 # remove high order bit 485.LPG1: sll %r13,1 # remove high order bit
486 srl %r13,1 486 srl %r13,1
487 l %r1,.Lget_ipl_device_addr-.LPG1(%r13)
488 basr %r14,%r1
487 lhi %r1,1 # mode 1 = esame 489 lhi %r1,1 # mode 1 = esame
488 slr %r0,%r0 # set cpuid to zero 490 slr %r0,%r0 # set cpuid to zero
489 sigp %r1,%r0,0x12 # switch to esame mode 491 sigp %r1,%r0,0x12 # switch to esame mode
@@ -556,6 +558,9 @@ startup:basr %r13,0 # get base
556 mlgr %r2,%r1 # mem size in bytes in %r3 558 mlgr %r2,%r1 # mem size in bytes in %r3
557 b .Lfchunk-.LPG1(%r13) 559 b .Lfchunk-.LPG1(%r13)
558 560
561 .align 4
562.Lget_ipl_device_addr:
563 .long .Lget_ipl_device
559.Lpmask: 564.Lpmask:
560 .byte 0 565 .byte 0
561 .align 8 566 .align 8
@@ -746,6 +751,63 @@ _pstart:
746 .global _pend 751 .global _pend
747_pend: 752_pend:
748 753
754.Lget_ipl_device:
755 basr %r12,0
756.LPG2: l %r1,0xb8 # get sid
757 sll %r1,15 # test if subchannel is enabled
758 srl %r1,31
759 ltr %r1,%r1
760 bz 0(%r14) # subchannel disabled
761 l %r1,0xb8
762 la %r5,.Lipl_schib-.LPG2(%r12)
763 stsch 0(%r5) # get schib of subchannel
764 bnz 0(%r14) # schib not available
765 tm 5(%r5),0x01 # devno valid?
766 bno 0(%r14)
767 la %r6,ipl_parameter_flags-.LPG2(%r12)
768 oi 3(%r6),0x01 # set flag
769 la %r2,ipl_devno-.LPG2(%r12)
770 mvc 0(2,%r2),6(%r5) # store devno
771 tm 4(%r5),0x80 # qdio capable device?
772 bno 0(%r14)
773 oi 3(%r6),0x02 # set flag
774
775 # copy ipl parameters
776
777 lhi %r0,4096
778 l %r2,20(%r0) # get address of parameter list
779 lhi %r3,IPL_PARMBLOCK_ORIGIN
780 st %r3,20(%r0)
781 lhi %r4,1
782 cr %r2,%r3 # start parameters < destination ?
783 jl 0f
784 lhi %r1,1 # copy direction is upwards
785 j 1f
7860: lhi %r1,-1 # copy direction is downwards
787 ar %r2,%r0
788 ar %r3,%r0
789 ar %r2,%r1
790 ar %r3,%r1
7911: mvc 0(1,%r3),0(%r2) # finally copy ipl parameters
792 ar %r3,%r1
793 ar %r2,%r1
794 sr %r0,%r4
795 jne 1b
796 b 0(%r14)
797
798 .align 4
799.Lipl_schib:
800 .rept 13
801 .long 0
802 .endr
803
804 .globl ipl_parameter_flags
805ipl_parameter_flags:
806 .long 0
807 .globl ipl_devno
808ipl_devno:
809 .word 0
810
749#ifdef CONFIG_SHARED_KERNEL 811#ifdef CONFIG_SHARED_KERNEL
750 .org 0x100000 812 .org 0x100000
751#endif 813#endif
@@ -755,7 +817,7 @@ _pend:
755# 817#
756 .globl _stext 818 .globl _stext
757_stext: basr %r13,0 # get base 819_stext: basr %r13,0 # get base
758.LPG2: 820.LPG3:
759# 821#
760# Setup stack 822# Setup stack
761# 823#
@@ -774,7 +836,7 @@ _stext: basr %r13,0 # get base
774 lctlg %c0,%c15,0(%r15) 836 lctlg %c0,%c15,0(%r15)
775 837
776# 838#
777 lam 0,15,.Laregs-.LPG2(%r13) # load access regs needed by uaccess 839 lam 0,15,.Laregs-.LPG3(%r13) # load access regs needed by uaccess
778 brasl %r14,start_kernel # go to C code 840 brasl %r14,start_kernel # go to C code
779# 841#
780# We returned from start_kernel ?!? PANIK 842# We returned from start_kernel ?!? PANIK
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
index 5204778b8e5e..31e7b19348b7 100644
--- a/arch/s390/kernel/setup.c
+++ b/arch/s390/kernel/setup.c
@@ -36,6 +36,7 @@
36#include <linux/console.h> 36#include <linux/console.h>
37#include <linux/seq_file.h> 37#include <linux/seq_file.h>
38#include <linux/kernel_stat.h> 38#include <linux/kernel_stat.h>
39#include <linux/device.h>
39 40
40#include <asm/uaccess.h> 41#include <asm/uaccess.h>
41#include <asm/system.h> 42#include <asm/system.h>
@@ -685,3 +686,188 @@ struct seq_operations cpuinfo_op = {
685 .show = show_cpuinfo, 686 .show = show_cpuinfo,
686}; 687};
687 688
689#define DEFINE_IPL_ATTR(_name, _format, _value) \
690static ssize_t ipl_##_name##_show(struct subsystem *subsys, \
691 char *page) \
692{ \
693 return sprintf(page, _format, _value); \
694} \
695static struct subsys_attribute ipl_##_name##_attr = \
696 __ATTR(_name, S_IRUGO, ipl_##_name##_show, NULL);
697
698DEFINE_IPL_ATTR(wwpn, "0x%016llx\n", (unsigned long long)
699 IPL_PARMBLOCK_START->fcp.wwpn);
700DEFINE_IPL_ATTR(lun, "0x%016llx\n", (unsigned long long)
701 IPL_PARMBLOCK_START->fcp.lun);
702DEFINE_IPL_ATTR(bootprog, "%lld\n", (unsigned long long)
703 IPL_PARMBLOCK_START->fcp.bootprog);
704DEFINE_IPL_ATTR(br_lba, "%lld\n", (unsigned long long)
705 IPL_PARMBLOCK_START->fcp.br_lba);
706
707enum ipl_type_type {
708 ipl_type_unknown,
709 ipl_type_ccw,
710 ipl_type_fcp,
711};
712
713static enum ipl_type_type
714get_ipl_type(void)
715{
716 struct ipl_parameter_block *ipl = IPL_PARMBLOCK_START;
717
718 if (!IPL_DEVNO_VALID)
719 return ipl_type_unknown;
720 if (!IPL_PARMBLOCK_VALID)
721 return ipl_type_ccw;
722 if (ipl->hdr.header.version > IPL_MAX_SUPPORTED_VERSION)
723 return ipl_type_unknown;
724 if (ipl->fcp.pbt != IPL_TYPE_FCP)
725 return ipl_type_unknown;
726 return ipl_type_fcp;
727}
728
729static ssize_t
730ipl_type_show(struct subsystem *subsys, char *page)
731{
732 switch (get_ipl_type()) {
733 case ipl_type_ccw:
734 return sprintf(page, "ccw\n");
735 case ipl_type_fcp:
736 return sprintf(page, "fcp\n");
737 default:
738 return sprintf(page, "unknown\n");
739 }
740}
741
742static struct subsys_attribute ipl_type_attr = __ATTR_RO(ipl_type);
743
744static ssize_t
745ipl_device_show(struct subsystem *subsys, char *page)
746{
747 struct ipl_parameter_block *ipl = IPL_PARMBLOCK_START;
748
749 switch (get_ipl_type()) {
750 case ipl_type_ccw:
751 return sprintf(page, "0.0.%04x\n", ipl_devno);
752 case ipl_type_fcp:
753 return sprintf(page, "0.0.%04x\n", ipl->fcp.devno);
754 default:
755 return 0;
756 }
757}
758
759static struct subsys_attribute ipl_device_attr =
760 __ATTR(device, S_IRUGO, ipl_device_show, NULL);
761
762static struct attribute *ipl_fcp_attrs[] = {
763 &ipl_type_attr.attr,
764 &ipl_device_attr.attr,
765 &ipl_wwpn_attr.attr,
766 &ipl_lun_attr.attr,
767 &ipl_bootprog_attr.attr,
768 &ipl_br_lba_attr.attr,
769 NULL,
770};
771
772static struct attribute_group ipl_fcp_attr_group = {
773 .attrs = ipl_fcp_attrs,
774};
775
776static struct attribute *ipl_ccw_attrs[] = {
777 &ipl_type_attr.attr,
778 &ipl_device_attr.attr,
779 NULL,
780};
781
782static struct attribute_group ipl_ccw_attr_group = {
783 .attrs = ipl_ccw_attrs,
784};
785
786static struct attribute *ipl_unknown_attrs[] = {
787 &ipl_type_attr.attr,
788 NULL,
789};
790
791static struct attribute_group ipl_unknown_attr_group = {
792 .attrs = ipl_unknown_attrs,
793};
794
795static ssize_t
796ipl_parameter_read(struct kobject *kobj, char *buf, loff_t off, size_t count)
797{
798 unsigned int size = IPL_PARMBLOCK_SIZE;
799
800 if (off > size)
801 return 0;
802 if (off + count > size)
803 count = size - off;
804
805 memcpy(buf, (void *) IPL_PARMBLOCK_START + off, count);
806 return count;
807}
808
809static struct bin_attribute ipl_parameter_attr = {
810 .attr = {
811 .name = "binary_parameter",
812 .mode = S_IRUGO,
813 .owner = THIS_MODULE,
814 },
815 .size = PAGE_SIZE,
816 .read = &ipl_parameter_read,
817};
818
819static ssize_t
820ipl_scp_data_read(struct kobject *kobj, char *buf, loff_t off, size_t count)
821{
822 unsigned int size = IPL_PARMBLOCK_START->fcp.scp_data_len;
823 void *scp_data = &IPL_PARMBLOCK_START->fcp.scp_data;
824
825 if (off > size)
826 return 0;
827 if (off + count > size)
828 count = size - off;
829
830 memcpy(buf, scp_data + off, count);
831 return count;
832}
833
834static struct bin_attribute ipl_scp_data_attr = {
835 .attr = {
836 .name = "scp_data",
837 .mode = S_IRUGO,
838 .owner = THIS_MODULE,
839 },
840 .size = PAGE_SIZE,
841 .read = &ipl_scp_data_read,
842};
843
844static decl_subsys(ipl, NULL, NULL);
845
846static int __init
847ipl_device_sysfs_register(void) {
848 int rc;
849
850 rc = firmware_register(&ipl_subsys);
851 if (rc)
852 return rc;
853
854 switch (get_ipl_type()) {
855 case ipl_type_ccw:
856 sysfs_create_group(&ipl_subsys.kset.kobj, &ipl_ccw_attr_group);
857 break;
858 case ipl_type_fcp:
859 sysfs_create_group(&ipl_subsys.kset.kobj, &ipl_fcp_attr_group);
860 sysfs_create_bin_file(&ipl_subsys.kset.kobj,
861 &ipl_parameter_attr);
862 sysfs_create_bin_file(&ipl_subsys.kset.kobj,
863 &ipl_scp_data_attr);
864 break;
865 default:
866 sysfs_create_group(&ipl_subsys.kset.kobj,
867 &ipl_unknown_attr_group);
868 break;
869 }
870 return 0;
871}
872
873__initcall(ipl_device_sysfs_register);
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
index 2fd75da15495..9a1d95894f3d 100644
--- a/arch/s390/kernel/time.c
+++ b/arch/s390/kernel/time.c
@@ -49,10 +49,6 @@
49 49
50#define TICK_SIZE tick 50#define TICK_SIZE tick
51 51
52u64 jiffies_64 = INITIAL_JIFFIES;
53
54EXPORT_SYMBOL(jiffies_64);
55
56static ext_int_info_t ext_int_info_cc; 52static ext_int_info_t ext_int_info_cc;
57static u64 init_timer_cc; 53static u64 init_timer_cc;
58static u64 jiffies_timer_cc; 54static u64 jiffies_timer_cc;
diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c
index fa0726507b3d..22a895ecb7a4 100644
--- a/arch/s390/kernel/vtime.c
+++ b/arch/s390/kernel/vtime.c
@@ -24,7 +24,6 @@
24#include <asm/s390_ext.h> 24#include <asm/s390_ext.h>
25#include <asm/timer.h> 25#include <asm/timer.h>
26 26
27#define VTIMER_MAGIC (TIMER_MAGIC + 1)
28static ext_int_info_t ext_int_info_timer; 27static ext_int_info_t ext_int_info_timer;
29DEFINE_PER_CPU(struct vtimer_queue, virt_cpu_timer); 28DEFINE_PER_CPU(struct vtimer_queue, virt_cpu_timer);
30 29
@@ -277,20 +276,12 @@ static void do_cpu_timer_interrupt(struct pt_regs *regs, __u16 error_code)
277 276
278void init_virt_timer(struct vtimer_list *timer) 277void init_virt_timer(struct vtimer_list *timer)
279{ 278{
280 timer->magic = VTIMER_MAGIC;
281 timer->function = NULL; 279 timer->function = NULL;
282 INIT_LIST_HEAD(&timer->entry); 280 INIT_LIST_HEAD(&timer->entry);
283 spin_lock_init(&timer->lock); 281 spin_lock_init(&timer->lock);
284} 282}
285EXPORT_SYMBOL(init_virt_timer); 283EXPORT_SYMBOL(init_virt_timer);
286 284
287static inline int check_vtimer(struct vtimer_list *timer)
288{
289 if (timer->magic != VTIMER_MAGIC)
290 return -EINVAL;
291 return 0;
292}
293
294static inline int vtimer_pending(struct vtimer_list *timer) 285static inline int vtimer_pending(struct vtimer_list *timer)
295{ 286{
296 return (!list_empty(&timer->entry)); 287 return (!list_empty(&timer->entry));
@@ -346,7 +337,7 @@ static void internal_add_vtimer(struct vtimer_list *timer)
346 337
347static inline int prepare_vtimer(struct vtimer_list *timer) 338static inline int prepare_vtimer(struct vtimer_list *timer)
348{ 339{
349 if (check_vtimer(timer) || !timer->function) { 340 if (!timer->function) {
350 printk("add_virt_timer: uninitialized timer\n"); 341 printk("add_virt_timer: uninitialized timer\n");
351 return -EINVAL; 342 return -EINVAL;
352 } 343 }
@@ -414,7 +405,7 @@ int mod_virt_timer(struct vtimer_list *timer, __u64 expires)
414 unsigned long flags; 405 unsigned long flags;
415 int cpu; 406 int cpu;
416 407
417 if (check_vtimer(timer) || !timer->function) { 408 if (!timer->function) {
418 printk("mod_virt_timer: uninitialized timer\n"); 409 printk("mod_virt_timer: uninitialized timer\n");
419 return -EINVAL; 410 return -EINVAL;
420 } 411 }
@@ -481,11 +472,6 @@ int del_virt_timer(struct vtimer_list *timer)
481 unsigned long flags; 472 unsigned long flags;
482 struct vtimer_queue *vt_list; 473 struct vtimer_queue *vt_list;
483 474
484 if (check_vtimer(timer)) {
485 printk("del_virt_timer: timer not initialized\n");
486 return -EINVAL;
487 }
488
489 /* check if timer is pending */ 475 /* check if timer is pending */
490 if (!vtimer_pending(timer)) 476 if (!vtimer_pending(timer))
491 return 0; 477 return 0;
diff --git a/arch/s390/mm/ioremap.c b/arch/s390/mm/ioremap.c
index c6c39d868bc8..0f6e9ecbefe2 100644
--- a/arch/s390/mm/ioremap.c
+++ b/arch/s390/mm/ioremap.c
@@ -58,7 +58,7 @@ static inline int remap_area_pmd(pmd_t * pmd, unsigned long address, unsigned lo
58 if (address >= end) 58 if (address >= end)
59 BUG(); 59 BUG();
60 do { 60 do {
61 pte_t * pte = pte_alloc_kernel(&init_mm, pmd, address); 61 pte_t * pte = pte_alloc_kernel(pmd, address);
62 if (!pte) 62 if (!pte)
63 return -ENOMEM; 63 return -ENOMEM;
64 remap_area_pte(pte, address, end - address, address + phys_addr, flags); 64 remap_area_pte(pte, address, end - address, address + phys_addr, flags);
@@ -80,7 +80,6 @@ static int remap_area_pages(unsigned long address, unsigned long phys_addr,
80 flush_cache_all(); 80 flush_cache_all();
81 if (address >= end) 81 if (address >= end)
82 BUG(); 82 BUG();
83 spin_lock(&init_mm.page_table_lock);
84 do { 83 do {
85 pmd_t *pmd; 84 pmd_t *pmd;
86 pmd = pmd_alloc(&init_mm, dir, address); 85 pmd = pmd_alloc(&init_mm, dir, address);
@@ -94,7 +93,6 @@ static int remap_area_pages(unsigned long address, unsigned long phys_addr,
94 address = (address + PGDIR_SIZE) & PGDIR_MASK; 93 address = (address + PGDIR_SIZE) & PGDIR_MASK;
95 dir++; 94 dir++;
96 } while (address && (address < end)); 95 } while (address && (address < end));
97 spin_unlock(&init_mm.page_table_lock);
98 flush_tlb_all(); 96 flush_tlb_all();
99 return 0; 97 return 0;
100} 98}
diff --git a/arch/sh/boards/renesas/rts7751r2d/mach.c b/arch/sh/boards/renesas/rts7751r2d/mach.c
index 1efc18e786d5..610740512d56 100644
--- a/arch/sh/boards/renesas/rts7751r2d/mach.c
+++ b/arch/sh/boards/renesas/rts7751r2d/mach.c
@@ -23,7 +23,7 @@ extern void init_rts7751r2d_IRQ(void);
23extern void *rts7751r2d_ioremap(unsigned long, unsigned long); 23extern void *rts7751r2d_ioremap(unsigned long, unsigned long);
24extern int rts7751r2d_irq_demux(int irq); 24extern int rts7751r2d_irq_demux(int irq);
25 25
26extern void *voyagergx_consistent_alloc(struct device *, size_t, dma_addr_t *, int); 26extern void *voyagergx_consistent_alloc(struct device *, size_t, dma_addr_t *, gfp_t);
27extern int voyagergx_consistent_free(struct device *, size_t, void *, dma_addr_t); 27extern int voyagergx_consistent_free(struct device *, size_t, void *, dma_addr_t);
28 28
29/* 29/*
diff --git a/arch/sh/cchips/voyagergx/consistent.c b/arch/sh/cchips/voyagergx/consistent.c
index 5b92585a38d2..3d9a02c093a3 100644
--- a/arch/sh/cchips/voyagergx/consistent.c
+++ b/arch/sh/cchips/voyagergx/consistent.c
@@ -31,7 +31,7 @@ static LIST_HEAD(voya_alloc_list);
31#define OHCI_SRAM_SIZE 0x10000 31#define OHCI_SRAM_SIZE 0x10000
32 32
33void *voyagergx_consistent_alloc(struct device *dev, size_t size, 33void *voyagergx_consistent_alloc(struct device *dev, size_t size,
34 dma_addr_t *handle, int flag) 34 dma_addr_t *handle, gfp_t flag)
35{ 35{
36 struct list_head *list = &voya_alloc_list; 36 struct list_head *list = &voya_alloc_list;
37 struct voya_alloc_entry *entry; 37 struct voya_alloc_entry *entry;
diff --git a/arch/sh/drivers/dma/dma-sysfs.c b/arch/sh/drivers/dma/dma-sysfs.c
index 71a6d4e7809f..6e3b58bd8795 100644
--- a/arch/sh/drivers/dma/dma-sysfs.c
+++ b/arch/sh/drivers/dma/dma-sysfs.c
@@ -13,6 +13,7 @@
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/sysdev.h> 14#include <linux/sysdev.h>
15#include <linux/module.h> 15#include <linux/module.h>
16#include <linux/string.h>
16#include <asm/dma.h> 17#include <asm/dma.h>
17 18
18static struct sysdev_class dma_sysclass = { 19static struct sysdev_class dma_sysclass = {
diff --git a/arch/sh/drivers/pci/dma-dreamcast.c b/arch/sh/drivers/pci/dma-dreamcast.c
index 83de7ef4e7df..e12418bb1fa5 100644
--- a/arch/sh/drivers/pci/dma-dreamcast.c
+++ b/arch/sh/drivers/pci/dma-dreamcast.c
@@ -33,7 +33,7 @@
33static int gapspci_dma_used = 0; 33static int gapspci_dma_used = 0;
34 34
35void *dreamcast_consistent_alloc(struct device *dev, size_t size, 35void *dreamcast_consistent_alloc(struct device *dev, size_t size,
36 dma_addr_t *dma_handle, int flag) 36 dma_addr_t *dma_handle, gfp_t flag)
37{ 37{
38 unsigned long buf; 38 unsigned long buf;
39 39
diff --git a/arch/sh/kernel/cpufreq.c b/arch/sh/kernel/cpufreq.c
index e0b384bef55f..47abf6e49dfb 100644
--- a/arch/sh/kernel/cpufreq.c
+++ b/arch/sh/kernel/cpufreq.c
@@ -20,6 +20,7 @@
20#include <linux/delay.h> 20#include <linux/delay.h>
21#include <linux/cpumask.h> 21#include <linux/cpumask.h>
22#include <linux/smp.h> 22#include <linux/smp.h>
23#include <linux/sched.h> /* set_cpus_allowed() */
23 24
24#include <asm/processor.h> 25#include <asm/processor.h>
25#include <asm/watchdog.h> 26#include <asm/watchdog.h>
diff --git a/arch/sh/kernel/ptrace.c b/arch/sh/kernel/ptrace.c
index b28919b65682..1fbe5a428e31 100644
--- a/arch/sh/kernel/ptrace.c
+++ b/arch/sh/kernel/ptrace.c
@@ -80,7 +80,7 @@ void ptrace_disable(struct task_struct *child)
80 /* nothing to do.. */ 80 /* nothing to do.. */
81} 81}
82 82
83asmlinkage int sys_ptrace(long request, long pid, long addr, long data) 83asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
84{ 84{
85 struct task_struct *child; 85 struct task_struct *child;
86 struct user * dummy = NULL; 86 struct user * dummy = NULL;
diff --git a/arch/sh/kernel/time.c b/arch/sh/kernel/time.c
index 02ca69918d7c..671b876416bf 100644
--- a/arch/sh/kernel/time.c
+++ b/arch/sh/kernel/time.c
@@ -56,10 +56,6 @@ extern unsigned long wall_jiffies;
56#define TICK_SIZE (tick_nsec / 1000) 56#define TICK_SIZE (tick_nsec / 1000)
57DEFINE_SPINLOCK(tmu0_lock); 57DEFINE_SPINLOCK(tmu0_lock);
58 58
59u64 jiffies_64 = INITIAL_JIFFIES;
60
61EXPORT_SYMBOL(jiffies_64);
62
63/* XXX: Can we initialize this in a routine somewhere? Dreamcast doesn't want 59/* XXX: Can we initialize this in a routine somewhere? Dreamcast doesn't want
64 * these routines anywhere... */ 60 * these routines anywhere... */
65#ifdef CONFIG_SH_RTC 61#ifdef CONFIG_SH_RTC
diff --git a/arch/sh/mm/consistent.c b/arch/sh/mm/consistent.c
index 1f7af0c73cf4..df3a9e452cc5 100644
--- a/arch/sh/mm/consistent.c
+++ b/arch/sh/mm/consistent.c
@@ -11,7 +11,7 @@
11#include <linux/dma-mapping.h> 11#include <linux/dma-mapping.h>
12#include <asm/io.h> 12#include <asm/io.h>
13 13
14void *consistent_alloc(int gfp, size_t size, dma_addr_t *handle) 14void *consistent_alloc(gfp_t gfp, size_t size, dma_addr_t *handle)
15{ 15{
16 struct page *page, *end, *free; 16 struct page *page, *end, *free;
17 void *ret; 17 void *ret;
diff --git a/arch/sh/mm/fault.c b/arch/sh/mm/fault.c
index 7abba2161da6..775f86cd3fe8 100644
--- a/arch/sh/mm/fault.c
+++ b/arch/sh/mm/fault.c
@@ -194,10 +194,13 @@ asmlinkage int __do_page_fault(struct pt_regs *regs, unsigned long writeaccess,
194 unsigned long address) 194 unsigned long address)
195{ 195{
196 unsigned long addrmax = P4SEG; 196 unsigned long addrmax = P4SEG;
197 pgd_t *dir; 197 pgd_t *pgd;
198 pmd_t *pmd; 198 pmd_t *pmd;
199 pte_t *pte; 199 pte_t *pte;
200 pte_t entry; 200 pte_t entry;
201 struct mm_struct *mm;
202 spinlock_t *ptl;
203 int ret = 1;
201 204
202#ifdef CONFIG_SH_KGDB 205#ifdef CONFIG_SH_KGDB
203 if (kgdb_nofault && kgdb_bus_err_hook) 206 if (kgdb_nofault && kgdb_bus_err_hook)
@@ -208,28 +211,28 @@ asmlinkage int __do_page_fault(struct pt_regs *regs, unsigned long writeaccess,
208 addrmax = P4SEG_STORE_QUE + 0x04000000; 211 addrmax = P4SEG_STORE_QUE + 0x04000000;
209#endif 212#endif
210 213
211 if (address >= P3SEG && address < addrmax) 214 if (address >= P3SEG && address < addrmax) {
212 dir = pgd_offset_k(address); 215 pgd = pgd_offset_k(address);
213 else if (address >= TASK_SIZE) 216 mm = NULL;
217 } else if (address >= TASK_SIZE)
214 return 1; 218 return 1;
215 else if (!current->mm) 219 else if (!(mm = current->mm))
216 return 1; 220 return 1;
217 else 221 else
218 dir = pgd_offset(current->mm, address); 222 pgd = pgd_offset(mm, address);
219 223
220 pmd = pmd_offset(dir, address); 224 pmd = pmd_offset(pgd, address);
221 if (pmd_none(*pmd)) 225 if (pmd_none_or_clear_bad(pmd))
222 return 1;
223 if (pmd_bad(*pmd)) {
224 pmd_ERROR(*pmd);
225 pmd_clear(pmd);
226 return 1; 226 return 1;
227 } 227 if (mm)
228 pte = pte_offset_kernel(pmd, address); 228 pte = pte_offset_map_lock(mm, pmd, address, &ptl);
229 else
230 pte = pte_offset_kernel(pmd, address);
231
229 entry = *pte; 232 entry = *pte;
230 if (pte_none(entry) || pte_not_present(entry) 233 if (pte_none(entry) || pte_not_present(entry)
231 || (writeaccess && !pte_write(entry))) 234 || (writeaccess && !pte_write(entry)))
232 return 1; 235 goto unlock;
233 236
234 if (writeaccess) 237 if (writeaccess)
235 entry = pte_mkdirty(entry); 238 entry = pte_mkdirty(entry);
@@ -251,8 +254,11 @@ asmlinkage int __do_page_fault(struct pt_regs *regs, unsigned long writeaccess,
251 254
252 set_pte(pte, entry); 255 set_pte(pte, entry);
253 update_mmu_cache(NULL, address, entry); 256 update_mmu_cache(NULL, address, entry);
254 257 ret = 0;
255 return 0; 258unlock:
259 if (mm)
260 pte_unmap_unlock(pte, ptl);
261 return ret;
256} 262}
257 263
258void flush_tlb_page(struct vm_area_struct *vma, unsigned long page) 264void flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
diff --git a/arch/sh/mm/hugetlbpage.c b/arch/sh/mm/hugetlbpage.c
index 95bb1a6c6060..6b7a7688c98e 100644
--- a/arch/sh/mm/hugetlbpage.c
+++ b/arch/sh/mm/hugetlbpage.c
@@ -54,8 +54,6 @@ pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr)
54 return pte; 54 return pte;
55} 55}
56 56
57#define mk_pte_huge(entry) do { pte_val(entry) |= _PAGE_SZHUGE; } while (0)
58
59void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, 57void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
60 pte_t *ptep, pte_t entry) 58 pte_t *ptep, pte_t entry)
61{ 59{
diff --git a/arch/sh/mm/ioremap.c b/arch/sh/mm/ioremap.c
index 9f490c2742f0..e794e27a72f1 100644
--- a/arch/sh/mm/ioremap.c
+++ b/arch/sh/mm/ioremap.c
@@ -57,7 +57,7 @@ static inline int remap_area_pmd(pmd_t * pmd, unsigned long address,
57 if (address >= end) 57 if (address >= end)
58 BUG(); 58 BUG();
59 do { 59 do {
60 pte_t * pte = pte_alloc_kernel(&init_mm, pmd, address); 60 pte_t * pte = pte_alloc_kernel(pmd, address);
61 if (!pte) 61 if (!pte)
62 return -ENOMEM; 62 return -ENOMEM;
63 remap_area_pte(pte, address, end - address, address + phys_addr, flags); 63 remap_area_pte(pte, address, end - address, address + phys_addr, flags);
@@ -79,7 +79,6 @@ int remap_area_pages(unsigned long address, unsigned long phys_addr,
79 flush_cache_all(); 79 flush_cache_all();
80 if (address >= end) 80 if (address >= end)
81 BUG(); 81 BUG();
82 spin_lock(&init_mm.page_table_lock);
83 do { 82 do {
84 pmd_t *pmd; 83 pmd_t *pmd;
85 pmd = pmd_alloc(&init_mm, dir, address); 84 pmd = pmd_alloc(&init_mm, dir, address);
@@ -93,7 +92,6 @@ int remap_area_pages(unsigned long address, unsigned long phys_addr,
93 address = (address + PGDIR_SIZE) & PGDIR_MASK; 92 address = (address + PGDIR_SIZE) & PGDIR_MASK;
94 dir++; 93 dir++;
95 } while (address && (address < end)); 94 } while (address && (address < end));
96 spin_unlock(&init_mm.page_table_lock);
97 flush_tlb_all(); 95 flush_tlb_all();
98 return error; 96 return error;
99} 97}
diff --git a/arch/sh64/kernel/ptrace.c b/arch/sh64/kernel/ptrace.c
index fd2000956dae..71f2eec00b99 100644
--- a/arch/sh64/kernel/ptrace.c
+++ b/arch/sh64/kernel/ptrace.c
@@ -121,7 +121,7 @@ put_fpu_long(struct task_struct *task, unsigned long addr, unsigned long data)
121 return 0; 121 return 0;
122} 122}
123 123
124asmlinkage int sys_ptrace(long request, long pid, long addr, long data) 124asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
125{ 125{
126 struct task_struct *child; 126 struct task_struct *child;
127 extern void poke_real_address_q(unsigned long long addr, unsigned long long data); 127 extern void poke_real_address_q(unsigned long long addr, unsigned long long data);
diff --git a/arch/sh64/kernel/time.c b/arch/sh64/kernel/time.c
index f4a62a10053c..870fe5327e09 100644
--- a/arch/sh64/kernel/time.c
+++ b/arch/sh64/kernel/time.c
@@ -116,8 +116,6 @@
116 116
117extern unsigned long wall_jiffies; 117extern unsigned long wall_jiffies;
118 118
119u64 jiffies_64 = INITIAL_JIFFIES;
120
121static unsigned long tmu_base, rtc_base; 119static unsigned long tmu_base, rtc_base;
122unsigned long cprc_base; 120unsigned long cprc_base;
123 121
@@ -253,6 +251,7 @@ int do_settimeofday(struct timespec *tv)
253 251
254 return 0; 252 return 0;
255} 253}
254EXPORT_SYMBOL(do_settimeofday);
256 255
257static int set_rtc_time(unsigned long nowtime) 256static int set_rtc_time(unsigned long nowtime)
258{ 257{
diff --git a/arch/sh64/mm/cache.c b/arch/sh64/mm/cache.c
index 3b87e25ea773..c0c1b21350d8 100644
--- a/arch/sh64/mm/cache.c
+++ b/arch/sh64/mm/cache.c
@@ -584,32 +584,36 @@ static void sh64_dcache_purge_phy_page(unsigned long paddr)
584 } 584 }
585} 585}
586 586
587static void sh64_dcache_purge_user_page(struct mm_struct *mm, unsigned long eaddr) 587static void sh64_dcache_purge_user_pages(struct mm_struct *mm,
588 unsigned long addr, unsigned long end)
588{ 589{
589 pgd_t *pgd; 590 pgd_t *pgd;
590 pmd_t *pmd; 591 pmd_t *pmd;
591 pte_t *pte; 592 pte_t *pte;
592 pte_t entry; 593 pte_t entry;
594 spinlock_t *ptl;
593 unsigned long paddr; 595 unsigned long paddr;
594 596
595 /* NOTE : all the callers of this have mm->page_table_lock held, so the 597 if (!mm)
596 following page table traversal is safe even on SMP/pre-emptible. */ 598 return; /* No way to find physical address of page */
597 599
598 if (!mm) return; /* No way to find physical address of page */ 600 pgd = pgd_offset(mm, addr);
599 pgd = pgd_offset(mm, eaddr); 601 if (pgd_bad(*pgd))
600 if (pgd_bad(*pgd)) return; 602 return;
601 603
602 pmd = pmd_offset(pgd, eaddr); 604 pmd = pmd_offset(pgd, addr);
603 if (pmd_none(*pmd) || pmd_bad(*pmd)) return; 605 if (pmd_none(*pmd) || pmd_bad(*pmd))
604 606 return;
605 pte = pte_offset_kernel(pmd, eaddr); 607
606 entry = *pte; 608 pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
607 if (pte_none(entry) || !pte_present(entry)) return; 609 do {
608 610 entry = *pte;
609 paddr = pte_val(entry) & PAGE_MASK; 611 if (pte_none(entry) || !pte_present(entry))
610 612 continue;
611 sh64_dcache_purge_coloured_phy_page(paddr, eaddr); 613 paddr = pte_val(entry) & PAGE_MASK;
612 614 sh64_dcache_purge_coloured_phy_page(paddr, addr);
615 } while (pte++, addr += PAGE_SIZE, addr != end);
616 pte_unmap_unlock(pte - 1, ptl);
613} 617}
614/****************************************************************************/ 618/****************************************************************************/
615 619
@@ -668,7 +672,7 @@ static void sh64_dcache_purge_user_range(struct mm_struct *mm,
668 int n_pages; 672 int n_pages;
669 673
670 n_pages = ((end - start) >> PAGE_SHIFT); 674 n_pages = ((end - start) >> PAGE_SHIFT);
671 if (n_pages >= 64) { 675 if (n_pages >= 64 || ((start ^ (end - 1)) & PMD_MASK)) {
672#if 1 676#if 1
673 sh64_dcache_purge_all(); 677 sh64_dcache_purge_all();
674#else 678#else
@@ -707,20 +711,10 @@ static void sh64_dcache_purge_user_range(struct mm_struct *mm,
707 } 711 }
708#endif 712#endif
709 } else { 713 } else {
710 /* 'Small' range */ 714 /* Small range, covered by a single page table page */
711 unsigned long aligned_start; 715 start &= PAGE_MASK; /* should already be so */
712 unsigned long eaddr; 716 end = PAGE_ALIGN(end); /* should already be so */
713 unsigned long last_page_start; 717 sh64_dcache_purge_user_pages(mm, start, end);
714
715 aligned_start = start & PAGE_MASK;
716 /* 'end' is 1 byte beyond the end of the range */
717 last_page_start = (end - 1) & PAGE_MASK;
718
719 eaddr = aligned_start;
720 while (eaddr <= last_page_start) {
721 sh64_dcache_purge_user_page(mm, eaddr);
722 eaddr += PAGE_SIZE;
723 }
724 } 718 }
725 return; 719 return;
726} 720}
@@ -880,9 +874,7 @@ void flush_cache_range(struct vm_area_struct *vma, unsigned long start,
880 addresses from the user address space specified by mm, after writing 874 addresses from the user address space specified by mm, after writing
881 back any dirty data. 875 back any dirty data.
882 876
883 Note(1), 'end' is 1 byte beyond the end of the range to flush. 877 Note, 'end' is 1 byte beyond the end of the range to flush. */
884
885 Note(2), this is called with mm->page_table_lock held.*/
886 878
887 sh64_dcache_purge_user_range(mm, start, end); 879 sh64_dcache_purge_user_range(mm, start, end);
888 sh64_icache_inv_user_page_range(mm, start, end); 880 sh64_icache_inv_user_page_range(mm, start, end);
@@ -898,7 +890,7 @@ void flush_cache_page(struct vm_area_struct *vma, unsigned long eaddr, unsigned
898 the I-cache must be searched too in case the page in question is 890 the I-cache must be searched too in case the page in question is
899 both writable and being executed from (e.g. stack trampolines.) 891 both writable and being executed from (e.g. stack trampolines.)
900 892
901 Note(1), this is called with mm->page_table_lock held. 893 Note, this is called with pte lock held.
902 */ 894 */
903 895
904 sh64_dcache_purge_phy_page(pfn << PAGE_SHIFT); 896 sh64_dcache_purge_phy_page(pfn << PAGE_SHIFT);
diff --git a/arch/sh64/mm/hugetlbpage.c b/arch/sh64/mm/hugetlbpage.c
index dcd9c8a8baf8..ed6a505b3ee2 100644
--- a/arch/sh64/mm/hugetlbpage.c
+++ b/arch/sh64/mm/hugetlbpage.c
@@ -54,41 +54,31 @@ pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr)
54 return pte; 54 return pte;
55} 55}
56 56
57#define mk_pte_huge(entry) do { pte_val(entry) |= _PAGE_SZHUGE; } while (0) 57void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
58 58 pte_t *ptep, pte_t entry)
59static void set_huge_pte(struct mm_struct *mm, struct vm_area_struct *vma,
60 struct page *page, pte_t * page_table, int write_access)
61{ 59{
62 unsigned long i; 60 int i;
63 pte_t entry;
64
65 add_mm_counter(mm, rss, HPAGE_SIZE / PAGE_SIZE);
66
67 if (write_access)
68 entry = pte_mkwrite(pte_mkdirty(mk_pte(page,
69 vma->vm_page_prot)));
70 else
71 entry = pte_wrprotect(mk_pte(page, vma->vm_page_prot));
72 entry = pte_mkyoung(entry);
73 mk_pte_huge(entry);
74 61
75 for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) { 62 for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) {
76 set_pte(page_table, entry); 63 set_pte_at(mm, addr, ptep, entry);
77 page_table++; 64 ptep++;
78 65 addr += PAGE_SIZE;
79 pte_val(entry) += PAGE_SIZE; 66 pte_val(entry) += PAGE_SIZE;
80 } 67 }
81} 68}
82 69
83pte_t huge_ptep_get_and_clear(pte_t *ptep) 70pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
71 pte_t *ptep)
84{ 72{
85 pte_t entry; 73 pte_t entry;
74 int i;
86 75
87 entry = *ptep; 76 entry = *ptep;
88 77
89 for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) { 78 for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) {
90 pte_clear(pte); 79 pte_clear(mm, addr, ptep);
91 pte++; 80 addr += PAGE_SIZE;
81 ptep++;
92 } 82 }
93 83
94 return entry; 84 return entry;
@@ -106,79 +96,6 @@ int is_aligned_hugepage_range(unsigned long addr, unsigned long len)
106 return 0; 96 return 0;
107} 97}
108 98
109int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
110 struct vm_area_struct *vma)
111{
112 pte_t *src_pte, *dst_pte, entry;
113 struct page *ptepage;
114 unsigned long addr = vma->vm_start;
115 unsigned long end = vma->vm_end;
116 int i;
117
118 while (addr < end) {
119 dst_pte = huge_pte_alloc(dst, addr);
120 if (!dst_pte)
121 goto nomem;
122 src_pte = huge_pte_offset(src, addr);
123 BUG_ON(!src_pte || pte_none(*src_pte));
124 entry = *src_pte;
125 ptepage = pte_page(entry);
126 get_page(ptepage);
127 for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) {
128 set_pte(dst_pte, entry);
129 pte_val(entry) += PAGE_SIZE;
130 dst_pte++;
131 }
132 add_mm_counter(dst, rss, HPAGE_SIZE / PAGE_SIZE);
133 addr += HPAGE_SIZE;
134 }
135 return 0;
136
137nomem:
138 return -ENOMEM;
139}
140
141int follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma,
142 struct page **pages, struct vm_area_struct **vmas,
143 unsigned long *position, int *length, int i)
144{
145 unsigned long vaddr = *position;
146 int remainder = *length;
147
148 WARN_ON(!is_vm_hugetlb_page(vma));
149
150 while (vaddr < vma->vm_end && remainder) {
151 if (pages) {
152 pte_t *pte;
153 struct page *page;
154
155 pte = huge_pte_offset(mm, vaddr);
156
157 /* hugetlb should be locked, and hence, prefaulted */
158 BUG_ON(!pte || pte_none(*pte));
159
160 page = pte_page(*pte);
161
162 WARN_ON(!PageCompound(page));
163
164 get_page(page);
165 pages[i] = page;
166 }
167
168 if (vmas)
169 vmas[i] = vma;
170
171 vaddr += PAGE_SIZE;
172 --remainder;
173 ++i;
174 }
175
176 *length = remainder;
177 *position = vaddr;
178
179 return i;
180}
181
182struct page *follow_huge_addr(struct mm_struct *mm, 99struct page *follow_huge_addr(struct mm_struct *mm,
183 unsigned long address, int write) 100 unsigned long address, int write)
184{ 101{
@@ -195,84 +112,3 @@ struct page *follow_huge_pmd(struct mm_struct *mm, unsigned long address,
195{ 112{
196 return NULL; 113 return NULL;
197} 114}
198
199void unmap_hugepage_range(struct vm_area_struct *vma,
200 unsigned long start, unsigned long end)
201{
202 struct mm_struct *mm = vma->vm_mm;
203 unsigned long address;
204 pte_t *pte;
205 struct page *page;
206 int i;
207
208 BUG_ON(start & (HPAGE_SIZE - 1));
209 BUG_ON(end & (HPAGE_SIZE - 1));
210
211 for (address = start; address < end; address += HPAGE_SIZE) {
212 pte = huge_pte_offset(mm, address);
213 BUG_ON(!pte);
214 if (pte_none(*pte))
215 continue;
216 page = pte_page(*pte);
217 put_page(page);
218 for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) {
219 pte_clear(mm, address+(i*PAGE_SIZE), pte);
220 pte++;
221 }
222 }
223 add_mm_counter(mm, rss, -((end - start) >> PAGE_SHIFT));
224 flush_tlb_range(vma, start, end);
225}
226
227int hugetlb_prefault(struct address_space *mapping, struct vm_area_struct *vma)
228{
229 struct mm_struct *mm = current->mm;
230 unsigned long addr;
231 int ret = 0;
232
233 BUG_ON(vma->vm_start & ~HPAGE_MASK);
234 BUG_ON(vma->vm_end & ~HPAGE_MASK);
235
236 spin_lock(&mm->page_table_lock);
237 for (addr = vma->vm_start; addr < vma->vm_end; addr += HPAGE_SIZE) {
238 unsigned long idx;
239 pte_t *pte = huge_pte_alloc(mm, addr);
240 struct page *page;
241
242 if (!pte) {
243 ret = -ENOMEM;
244 goto out;
245 }
246 if (!pte_none(*pte))
247 continue;
248
249 idx = ((addr - vma->vm_start) >> HPAGE_SHIFT)
250 + (vma->vm_pgoff >> (HPAGE_SHIFT - PAGE_SHIFT));
251 page = find_get_page(mapping, idx);
252 if (!page) {
253 /* charge the fs quota first */
254 if (hugetlb_get_quota(mapping)) {
255 ret = -ENOMEM;
256 goto out;
257 }
258 page = alloc_huge_page();
259 if (!page) {
260 hugetlb_put_quota(mapping);
261 ret = -ENOMEM;
262 goto out;
263 }
264 ret = add_to_page_cache(page, mapping, idx, GFP_ATOMIC);
265 if (! ret) {
266 unlock_page(page);
267 } else {
268 hugetlb_put_quota(mapping);
269 free_huge_page(page);
270 goto out;
271 }
272 }
273 set_huge_pte(mm, vma, page, pte, vma->vm_flags & VM_WRITE);
274 }
275out:
276 spin_unlock(&mm->page_table_lock);
277 return ret;
278}
diff --git a/arch/sh64/mm/ioremap.c b/arch/sh64/mm/ioremap.c
index f4003da556bc..fb1866fa2c9d 100644
--- a/arch/sh64/mm/ioremap.c
+++ b/arch/sh64/mm/ioremap.c
@@ -79,7 +79,7 @@ static inline int remap_area_pmd(pmd_t * pmd, unsigned long address, unsigned lo
79 BUG(); 79 BUG();
80 80
81 do { 81 do {
82 pte_t * pte = pte_alloc_kernel(&init_mm, pmd, address); 82 pte_t * pte = pte_alloc_kernel(pmd, address);
83 if (!pte) 83 if (!pte)
84 return -ENOMEM; 84 return -ENOMEM;
85 remap_area_pte(pte, address, end - address, address + phys_addr, flags); 85 remap_area_pte(pte, address, end - address, address + phys_addr, flags);
@@ -101,7 +101,6 @@ static int remap_area_pages(unsigned long address, unsigned long phys_addr,
101 flush_cache_all(); 101 flush_cache_all();
102 if (address >= end) 102 if (address >= end)
103 BUG(); 103 BUG();
104 spin_lock(&init_mm.page_table_lock);
105 do { 104 do {
106 pmd_t *pmd = pmd_alloc(&init_mm, dir, address); 105 pmd_t *pmd = pmd_alloc(&init_mm, dir, address);
107 error = -ENOMEM; 106 error = -ENOMEM;
@@ -115,7 +114,6 @@ static int remap_area_pages(unsigned long address, unsigned long phys_addr,
115 address = (address + PGDIR_SIZE) & PGDIR_MASK; 114 address = (address + PGDIR_SIZE) & PGDIR_MASK;
116 dir++; 115 dir++;
117 } while (address && (address < end)); 116 } while (address && (address < end));
118 spin_unlock(&init_mm.page_table_lock);
119 flush_tlb_all(); 117 flush_tlb_all();
120 return 0; 118 return 0;
121} 119}
diff --git a/arch/sparc/kernel/pcic.c b/arch/sparc/kernel/pcic.c
index 36a40697b8d6..25e31d5ec99b 100644
--- a/arch/sparc/kernel/pcic.c
+++ b/arch/sparc/kernel/pcic.c
@@ -497,8 +497,8 @@ static void pcic_map_pci_device(struct linux_pcic *pcic,
497 * CheerIO makes a similar conversion. 497 * CheerIO makes a similar conversion.
498 * See ebus.c for details. 498 * See ebus.c for details.
499 * 499 *
500 * Note that check_region()/request_region() 500 * Note that request_region()
501 * work for these devices. 501 * works for these devices.
502 * 502 *
503 * XXX Neat trick, but it's a *bad* idea 503 * XXX Neat trick, but it's a *bad* idea
504 * to shit into regions like that. 504 * to shit into regions like that.
diff --git a/arch/sparc/kernel/time.c b/arch/sparc/kernel/time.c
index 279a62627c10..24814d58f9e1 100644
--- a/arch/sparc/kernel/time.c
+++ b/arch/sparc/kernel/time.c
@@ -45,10 +45,6 @@
45 45
46extern unsigned long wall_jiffies; 46extern unsigned long wall_jiffies;
47 47
48u64 jiffies_64 = INITIAL_JIFFIES;
49
50EXPORT_SYMBOL(jiffies_64);
51
52DEFINE_SPINLOCK(rtc_lock); 48DEFINE_SPINLOCK(rtc_lock);
53enum sparc_clock_type sp_clock_typ; 49enum sparc_clock_type sp_clock_typ;
54DEFINE_SPINLOCK(mostek_lock); 50DEFINE_SPINLOCK(mostek_lock);
diff --git a/arch/sparc/mm/generic.c b/arch/sparc/mm/generic.c
index 20ccb957fb77..9604893ffdbd 100644
--- a/arch/sparc/mm/generic.c
+++ b/arch/sparc/mm/generic.c
@@ -73,14 +73,16 @@ int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
73 int space = GET_IOSPACE(pfn); 73 int space = GET_IOSPACE(pfn);
74 unsigned long offset = GET_PFN(pfn) << PAGE_SHIFT; 74 unsigned long offset = GET_PFN(pfn) << PAGE_SHIFT;
75 75
76 /* See comment in mm/memory.c remap_pfn_range */
77 vma->vm_flags |= VM_IO | VM_RESERVED;
78
76 prot = __pgprot(pg_iobits); 79 prot = __pgprot(pg_iobits);
77 offset -= from; 80 offset -= from;
78 dir = pgd_offset(mm, from); 81 dir = pgd_offset(mm, from);
79 flush_cache_range(vma, beg, end); 82 flush_cache_range(vma, beg, end);
80 83
81 spin_lock(&mm->page_table_lock);
82 while (from < end) { 84 while (from < end) {
83 pmd_t *pmd = pmd_alloc(current->mm, dir, from); 85 pmd_t *pmd = pmd_alloc(mm, dir, from);
84 error = -ENOMEM; 86 error = -ENOMEM;
85 if (!pmd) 87 if (!pmd)
86 break; 88 break;
@@ -90,7 +92,6 @@ int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
90 from = (from + PGDIR_SIZE) & PGDIR_MASK; 92 from = (from + PGDIR_SIZE) & PGDIR_MASK;
91 dir++; 93 dir++;
92 } 94 }
93 spin_unlock(&mm->page_table_lock);
94 95
95 flush_tlb_range(vma, beg, end); 96 flush_tlb_range(vma, beg, end);
96 return error; 97 return error;
diff --git a/arch/sparc64/kernel/binfmt_aout32.c b/arch/sparc64/kernel/binfmt_aout32.c
index b2854ef221d0..edf52d06b280 100644
--- a/arch/sparc64/kernel/binfmt_aout32.c
+++ b/arch/sparc64/kernel/binfmt_aout32.c
@@ -241,7 +241,6 @@ static int load_aout32_binary(struct linux_binprm * bprm, struct pt_regs * regs)
241 current->mm->brk = ex.a_bss + 241 current->mm->brk = ex.a_bss +
242 (current->mm->start_brk = N_BSSADDR(ex)); 242 (current->mm->start_brk = N_BSSADDR(ex));
243 243
244 set_mm_counter(current->mm, rss, 0);
245 current->mm->mmap = NULL; 244 current->mm->mmap = NULL;
246 compute_creds(bprm); 245 compute_creds(bprm);
247 current->flags &= ~PF_FORKNOEXEC; 246 current->flags &= ~PF_FORKNOEXEC;
diff --git a/arch/sparc64/kernel/ioctl32.c b/arch/sparc64/kernel/ioctl32.c
index 43fc3173d480..e6a00325075a 100644
--- a/arch/sparc64/kernel/ioctl32.c
+++ b/arch/sparc64/kernel/ioctl32.c
@@ -475,9 +475,6 @@ IOCTL_TABLE_START
475#include <linux/compat_ioctl.h> 475#include <linux/compat_ioctl.h>
476#define DECLARES 476#define DECLARES
477#include "compat_ioctl.c" 477#include "compat_ioctl.c"
478COMPATIBLE_IOCTL(TIOCSTART)
479COMPATIBLE_IOCTL(TIOCSTOP)
480COMPATIBLE_IOCTL(TIOCSLTC)
481COMPATIBLE_IOCTL(FBIOGTYPE) 478COMPATIBLE_IOCTL(FBIOGTYPE)
482COMPATIBLE_IOCTL(FBIOSATTR) 479COMPATIBLE_IOCTL(FBIOSATTR)
483COMPATIBLE_IOCTL(FBIOGATTR) 480COMPATIBLE_IOCTL(FBIOGATTR)
diff --git a/arch/sparc64/kernel/time.c b/arch/sparc64/kernel/time.c
index 3f08a32f51a1..38c5525087a2 100644
--- a/arch/sparc64/kernel/time.c
+++ b/arch/sparc64/kernel/time.c
@@ -55,10 +55,6 @@ unsigned long ds1287_regs = 0UL;
55 55
56extern unsigned long wall_jiffies; 56extern unsigned long wall_jiffies;
57 57
58u64 jiffies_64 = INITIAL_JIFFIES;
59
60EXPORT_SYMBOL(jiffies_64);
61
62static void __iomem *mstk48t08_regs; 58static void __iomem *mstk48t08_regs;
63static void __iomem *mstk48t59_regs; 59static void __iomem *mstk48t59_regs;
64 60
diff --git a/arch/sparc64/mm/generic.c b/arch/sparc64/mm/generic.c
index c954d91f01d0..112c316e7cd2 100644
--- a/arch/sparc64/mm/generic.c
+++ b/arch/sparc64/mm/generic.c
@@ -127,14 +127,16 @@ int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
127 int space = GET_IOSPACE(pfn); 127 int space = GET_IOSPACE(pfn);
128 unsigned long offset = GET_PFN(pfn) << PAGE_SHIFT; 128 unsigned long offset = GET_PFN(pfn) << PAGE_SHIFT;
129 129
130 /* See comment in mm/memory.c remap_pfn_range */
131 vma->vm_flags |= VM_IO | VM_RESERVED;
132
130 prot = __pgprot(pg_iobits); 133 prot = __pgprot(pg_iobits);
131 offset -= from; 134 offset -= from;
132 dir = pgd_offset(mm, from); 135 dir = pgd_offset(mm, from);
133 flush_cache_range(vma, beg, end); 136 flush_cache_range(vma, beg, end);
134 137
135 spin_lock(&mm->page_table_lock);
136 while (from < end) { 138 while (from < end) {
137 pud_t *pud = pud_alloc(current->mm, dir, from); 139 pud_t *pud = pud_alloc(mm, dir, from);
138 error = -ENOMEM; 140 error = -ENOMEM;
139 if (!pud) 141 if (!pud)
140 break; 142 break;
@@ -144,8 +146,7 @@ int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
144 from = (from + PGDIR_SIZE) & PGDIR_MASK; 146 from = (from + PGDIR_SIZE) & PGDIR_MASK;
145 dir++; 147 dir++;
146 } 148 }
147 flush_tlb_range(vma, beg, end);
148 spin_unlock(&mm->page_table_lock);
149 149
150 flush_tlb_range(vma, beg, end);
150 return error; 151 return error;
151} 152}
diff --git a/arch/sparc64/mm/tlb.c b/arch/sparc64/mm/tlb.c
index 90ca99d0b89c..8b104be4662b 100644
--- a/arch/sparc64/mm/tlb.c
+++ b/arch/sparc64/mm/tlb.c
@@ -18,8 +18,7 @@
18 18
19/* Heavily inspired by the ppc64 code. */ 19/* Heavily inspired by the ppc64 code. */
20 20
21DEFINE_PER_CPU(struct mmu_gather, mmu_gathers) = 21DEFINE_PER_CPU(struct mmu_gather, mmu_gathers) = { 0, };
22 { NULL, 0, 0, 0, 0, 0, { 0 }, { NULL }, };
23 22
24void flush_tlb_pending(void) 23void flush_tlb_pending(void)
25{ 24{
@@ -72,7 +71,7 @@ void tlb_batch_add(struct mm_struct *mm, unsigned long vaddr, pte_t *ptep, pte_t
72 71
73no_cache_flush: 72no_cache_flush:
74 73
75 if (mp->tlb_frozen) 74 if (mp->fullmm)
76 return; 75 return;
77 76
78 nr = mp->tlb_nr; 77 nr = mp->tlb_nr;
@@ -97,7 +96,7 @@ void flush_tlb_pgtables(struct mm_struct *mm, unsigned long start, unsigned long
97 unsigned long nr = mp->tlb_nr; 96 unsigned long nr = mp->tlb_nr;
98 long s = start, e = end, vpte_base; 97 long s = start, e = end, vpte_base;
99 98
100 if (mp->tlb_frozen) 99 if (mp->fullmm)
101 return; 100 return;
102 101
103 /* If start is greater than end, that is a real problem. */ 102 /* If start is greater than end, that is a real problem. */
diff --git a/arch/sparc64/solaris/socksys.c b/arch/sparc64/solaris/socksys.c
index d7c1c76582cc..fc6669e8dde1 100644
--- a/arch/sparc64/solaris/socksys.c
+++ b/arch/sparc64/solaris/socksys.c
@@ -49,7 +49,7 @@ IPPROTO_EGP, IPPROTO_PUP, IPPROTO_UDP, IPPROTO_IDP, IPPROTO_RAW,
49 49
50#else 50#else
51 51
52extern void * mykmalloc(size_t s, int gfp); 52extern void * mykmalloc(size_t s, gfp_t gfp);
53extern void mykfree(void *); 53extern void mykfree(void *);
54 54
55#endif 55#endif
diff --git a/arch/sparc64/solaris/timod.c b/arch/sparc64/solaris/timod.c
index aaad29c35c83..b84e5456b025 100644
--- a/arch/sparc64/solaris/timod.c
+++ b/arch/sparc64/solaris/timod.c
@@ -39,7 +39,7 @@ static char * page = NULL ;
39 39
40#else 40#else
41 41
42void * mykmalloc(size_t s, int gfp) 42void * mykmalloc(size_t s, gfp_t gfp)
43{ 43{
44 static char * page; 44 static char * page;
45 static size_t free; 45 static size_t free;
diff --git a/arch/um/Kconfig b/arch/um/Kconfig
index 684e1f8b2755..cd06ed7d842d 100644
--- a/arch/um/Kconfig
+++ b/arch/um/Kconfig
@@ -27,10 +27,6 @@ config UID16
27 bool 27 bool
28 default y 28 default y
29 29
30config RWSEM_GENERIC_SPINLOCK
31 bool
32 default y
33
34config GENERIC_CALIBRATE_DELAY 30config GENERIC_CALIBRATE_DELAY
35 bool 31 bool
36 default y 32 default y
@@ -40,6 +36,12 @@ config IRQ_RELEASE_METHOD
40 bool 36 bool
41 default y 37 default y
42 38
39menu "Host processor type and features"
40
41source "arch/i386/Kconfig.cpu"
42
43endmenu
44
43menu "UML-specific options" 45menu "UML-specific options"
44 46
45config MODE_TT 47config MODE_TT
diff --git a/arch/um/Kconfig.x86_64 b/arch/um/Kconfig.x86_64
index bd35e59419c8..aae19bc4b06a 100644
--- a/arch/um/Kconfig.x86_64
+++ b/arch/um/Kconfig.x86_64
@@ -6,6 +6,11 @@ config 64BIT
6 bool 6 bool
7 default y 7 default y
8 8
9#XXX: this is so in the underlying arch, but it's wrong!!!
10config RWSEM_GENERIC_SPINLOCK
11 bool
12 default y
13
9config SEMAPHORE_SLEEPERS 14config SEMAPHORE_SLEEPERS
10 bool 15 bool
11 default y 16 default y
diff --git a/arch/um/Makefile-i386 b/arch/um/Makefile-i386
index 2ee8a2858117..aef7c50f8e13 100644
--- a/arch/um/Makefile-i386
+++ b/arch/um/Makefile-i386
@@ -29,6 +29,12 @@ endif
29 29
30CFLAGS += -U__$(SUBARCH)__ -U$(SUBARCH) 30CFLAGS += -U__$(SUBARCH)__ -U$(SUBARCH)
31 31
32ifneq ($(CONFIG_GPROF),y) 32# First of all, tune CFLAGS for the specific CPU. This actually sets cflags-y.
33ARCH_CFLAGS += -DUM_FASTCALL 33include $(srctree)/arch/i386/Makefile.cpu
34endif 34
35# prevent gcc from keeping the stack 16 byte aligned. Taken from i386.
36cflags-y += $(call cc-option,-mpreferred-stack-boundary=2)
37
38CFLAGS += $(cflags-y)
39USER_CFLAGS += $(cflags-y)
40
diff --git a/arch/um/include/sysdep-i386/syscalls.h b/arch/um/include/sysdep-i386/syscalls.h
index a0d5b74d3731..57bd79efbee3 100644
--- a/arch/um/include/sysdep-i386/syscalls.h
+++ b/arch/um/include/sysdep-i386/syscalls.h
@@ -11,7 +11,6 @@ typedef long syscall_handler_t(struct pt_regs);
11/* Not declared on x86, incompatible declarations on x86_64, so these have 11/* Not declared on x86, incompatible declarations on x86_64, so these have
12 * to go here rather than in sys_call_table.c 12 * to go here rather than in sys_call_table.c
13 */ 13 */
14extern syscall_handler_t sys_ptrace;
15extern syscall_handler_t sys_rt_sigaction; 14extern syscall_handler_t sys_rt_sigaction;
16 15
17extern syscall_handler_t old_mmap_i386; 16extern syscall_handler_t old_mmap_i386;
diff --git a/arch/um/include/tlb.h b/arch/um/include/tlb.h
index 45d7da6c3b2c..8efc1e0f1b84 100644
--- a/arch/um/include/tlb.h
+++ b/arch/um/include/tlb.h
@@ -34,7 +34,6 @@ struct host_vm_op {
34 } u; 34 } u;
35}; 35};
36 36
37extern void mprotect_kernel_vm(int w);
38extern void force_flush_all(void); 37extern void force_flush_all(void);
39extern void fix_range_common(struct mm_struct *mm, unsigned long start_addr, 38extern void fix_range_common(struct mm_struct *mm, unsigned long start_addr,
40 unsigned long end_addr, int force, 39 unsigned long end_addr, int force,
diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c
index ea008b031a8f..462cc9d65386 100644
--- a/arch/um/kernel/mem.c
+++ b/arch/um/kernel/mem.c
@@ -252,7 +252,7 @@ void paging_init(void)
252#endif 252#endif
253} 253}
254 254
255struct page *arch_validate(struct page *page, int mask, int order) 255struct page *arch_validate(struct page *page, gfp_t mask, int order)
256{ 256{
257 unsigned long addr, zero = 0; 257 unsigned long addr, zero = 0;
258 int i; 258 int i;
diff --git a/arch/um/kernel/process_kern.c b/arch/um/kernel/process_kern.c
index ea65db679e9c..34b54a3e2132 100644
--- a/arch/um/kernel/process_kern.c
+++ b/arch/um/kernel/process_kern.c
@@ -80,7 +80,7 @@ void free_stack(unsigned long stack, int order)
80unsigned long alloc_stack(int order, int atomic) 80unsigned long alloc_stack(int order, int atomic)
81{ 81{
82 unsigned long page; 82 unsigned long page;
83 int flags = GFP_KERNEL; 83 gfp_t flags = GFP_KERNEL;
84 84
85 if (atomic) 85 if (atomic)
86 flags = GFP_ATOMIC; 86 flags = GFP_ATOMIC;
@@ -222,6 +222,7 @@ void *um_virt_to_phys(struct task_struct *task, unsigned long addr,
222 pud_t *pud; 222 pud_t *pud;
223 pmd_t *pmd; 223 pmd_t *pmd;
224 pte_t *pte; 224 pte_t *pte;
225 pte_t ptent;
225 226
226 if(task->mm == NULL) 227 if(task->mm == NULL)
227 return(ERR_PTR(-EINVAL)); 228 return(ERR_PTR(-EINVAL));
@@ -238,12 +239,13 @@ void *um_virt_to_phys(struct task_struct *task, unsigned long addr,
238 return(ERR_PTR(-EINVAL)); 239 return(ERR_PTR(-EINVAL));
239 240
240 pte = pte_offset_kernel(pmd, addr); 241 pte = pte_offset_kernel(pmd, addr);
241 if(!pte_present(*pte)) 242 ptent = *pte;
243 if(!pte_present(ptent))
242 return(ERR_PTR(-EINVAL)); 244 return(ERR_PTR(-EINVAL));
243 245
244 if(pte_out != NULL) 246 if(pte_out != NULL)
245 *pte_out = *pte; 247 *pte_out = ptent;
246 return((void *) (pte_val(*pte) & PAGE_MASK) + (addr & ~PAGE_MASK)); 248 return((void *) (pte_val(ptent) & PAGE_MASK) + (addr & ~PAGE_MASK));
247} 249}
248 250
249char *current_cmd(void) 251char *current_cmd(void)
diff --git a/arch/um/kernel/skas/mmu.c b/arch/um/kernel/skas/mmu.c
index 240143b616a2..9e5e39cea821 100644
--- a/arch/um/kernel/skas/mmu.c
+++ b/arch/um/kernel/skas/mmu.c
@@ -28,7 +28,6 @@ static int init_stub_pte(struct mm_struct *mm, unsigned long proc,
28 pmd_t *pmd; 28 pmd_t *pmd;
29 pte_t *pte; 29 pte_t *pte;
30 30
31 spin_lock(&mm->page_table_lock);
32 pgd = pgd_offset(mm, proc); 31 pgd = pgd_offset(mm, proc);
33 pud = pud_alloc(mm, pgd, proc); 32 pud = pud_alloc(mm, pgd, proc);
34 if (!pud) 33 if (!pud)
@@ -63,7 +62,6 @@ static int init_stub_pte(struct mm_struct *mm, unsigned long proc,
63 *pte = mk_pte(virt_to_page(kernel), __pgprot(_PAGE_PRESENT)); 62 *pte = mk_pte(virt_to_page(kernel), __pgprot(_PAGE_PRESENT));
64 *pte = pte_mkexec(*pte); 63 *pte = pte_mkexec(*pte);
65 *pte = pte_wrprotect(*pte); 64 *pte = pte_wrprotect(*pte);
66 spin_unlock(&mm->page_table_lock);
67 return(0); 65 return(0);
68 66
69 out_pmd: 67 out_pmd:
@@ -71,7 +69,6 @@ static int init_stub_pte(struct mm_struct *mm, unsigned long proc,
71 out_pte: 69 out_pte:
72 pmd_free(pmd); 70 pmd_free(pmd);
73 out: 71 out:
74 spin_unlock(&mm->page_table_lock);
75 return(-ENOMEM); 72 return(-ENOMEM);
76} 73}
77 74
@@ -147,6 +144,7 @@ void destroy_context_skas(struct mm_struct *mm)
147 144
148 if(!proc_mm || !ptrace_faultinfo){ 145 if(!proc_mm || !ptrace_faultinfo){
149 free_page(mmu->id.stack); 146 free_page(mmu->id.stack);
147 pte_lock_deinit(virt_to_page(mmu->last_page_table));
150 pte_free_kernel((pte_t *) mmu->last_page_table); 148 pte_free_kernel((pte_t *) mmu->last_page_table);
151 dec_page_state(nr_page_table_pages); 149 dec_page_state(nr_page_table_pages);
152#ifdef CONFIG_3_LEVEL_PGTABLES 150#ifdef CONFIG_3_LEVEL_PGTABLES
diff --git a/arch/um/kernel/time_kern.c b/arch/um/kernel/time_kern.c
index 4e08f7545d63..020ca79b8d33 100644
--- a/arch/um/kernel/time_kern.c
+++ b/arch/um/kernel/time_kern.c
@@ -22,10 +22,6 @@
22#include "mode.h" 22#include "mode.h"
23#include "os.h" 23#include "os.h"
24 24
25u64 jiffies_64 = INITIAL_JIFFIES;
26
27EXPORT_SYMBOL(jiffies_64);
28
29int hz(void) 25int hz(void)
30{ 26{
31 return(HZ); 27 return(HZ);
diff --git a/arch/um/kernel/tt/tlb.c b/arch/um/kernel/tt/tlb.c
index f1d85dbb45b9..ae6217c86135 100644
--- a/arch/um/kernel/tt/tlb.c
+++ b/arch/um/kernel/tt/tlb.c
@@ -74,42 +74,6 @@ void flush_tlb_kernel_range_tt(unsigned long start, unsigned long end)
74 atomic_inc(&vmchange_seq); 74 atomic_inc(&vmchange_seq);
75} 75}
76 76
77static void protect_vm_page(unsigned long addr, int w, int must_succeed)
78{
79 int err;
80
81 err = protect_memory(addr, PAGE_SIZE, 1, w, 1, must_succeed);
82 if(err == 0) return;
83 else if((err == -EFAULT) || (err == -ENOMEM)){
84 flush_tlb_kernel_range(addr, addr + PAGE_SIZE);
85 protect_vm_page(addr, w, 1);
86 }
87 else panic("protect_vm_page : protect failed, errno = %d\n", err);
88}
89
90void mprotect_kernel_vm(int w)
91{
92 struct mm_struct *mm;
93 pgd_t *pgd;
94 pud_t *pud;
95 pmd_t *pmd;
96 pte_t *pte;
97 unsigned long addr;
98
99 mm = &init_mm;
100 for(addr = start_vm; addr < end_vm;){
101 pgd = pgd_offset(mm, addr);
102 pud = pud_offset(pgd, addr);
103 pmd = pmd_offset(pud, addr);
104 if(pmd_present(*pmd)){
105 pte = pte_offset_kernel(pmd, addr);
106 if(pte_present(*pte)) protect_vm_page(addr, w, 0);
107 addr += PAGE_SIZE;
108 }
109 else addr += PMD_SIZE;
110 }
111}
112
113void flush_tlb_kernel_vm_tt(void) 77void flush_tlb_kernel_vm_tt(void)
114{ 78{
115 flush_tlb_kernel_range(start_vm, end_vm); 79 flush_tlb_kernel_range(start_vm, end_vm);
diff --git a/arch/v850/kernel/ptrace.c b/arch/v850/kernel/ptrace.c
index 4726b87f5e5a..d6077ff47d22 100644
--- a/arch/v850/kernel/ptrace.c
+++ b/arch/v850/kernel/ptrace.c
@@ -113,7 +113,7 @@ static int set_single_step (struct task_struct *t, int val)
113 return 1; 113 return 1;
114} 114}
115 115
116int sys_ptrace(long request, long pid, long addr, long data) 116long sys_ptrace(long request, long pid, long addr, long data)
117{ 117{
118 struct task_struct *child; 118 struct task_struct *child;
119 int rval; 119 int rval;
diff --git a/arch/v850/kernel/time.c b/arch/v850/kernel/time.c
index ea3fd8844ff0..c1e85c2aef65 100644
--- a/arch/v850/kernel/time.c
+++ b/arch/v850/kernel/time.c
@@ -26,10 +26,6 @@
26 26
27#include "mach.h" 27#include "mach.h"
28 28
29u64 jiffies_64 = INITIAL_JIFFIES;
30
31EXPORT_SYMBOL(jiffies_64);
32
33#define TICK_SIZE (tick_nsec / 1000) 29#define TICK_SIZE (tick_nsec / 1000)
34 30
35/* 31/*
diff --git a/arch/x86_64/ia32/ia32_aout.c b/arch/x86_64/ia32/ia32_aout.c
index 3e6780fa0186..93c60f4aa47a 100644
--- a/arch/x86_64/ia32/ia32_aout.c
+++ b/arch/x86_64/ia32/ia32_aout.c
@@ -314,7 +314,6 @@ static int load_aout_binary(struct linux_binprm * bprm, struct pt_regs * regs)
314 current->mm->free_area_cache = TASK_UNMAPPED_BASE; 314 current->mm->free_area_cache = TASK_UNMAPPED_BASE;
315 current->mm->cached_hole_size = 0; 315 current->mm->cached_hole_size = 0;
316 316
317 set_mm_counter(current->mm, rss, 0);
318 current->mm->mmap = NULL; 317 current->mm->mmap = NULL;
319 compute_creds(bprm); 318 compute_creds(bprm);
320 current->flags &= ~PF_FORKNOEXEC; 319 current->flags &= ~PF_FORKNOEXEC;
diff --git a/arch/x86_64/ia32/ia32_ioctl.c b/arch/x86_64/ia32/ia32_ioctl.c
index 419758f19ca4..4ba0e293d5e5 100644
--- a/arch/x86_64/ia32/ia32_ioctl.c
+++ b/arch/x86_64/ia32/ia32_ioctl.c
@@ -12,40 +12,11 @@
12#define INCLUDES 12#define INCLUDES
13#include <linux/syscalls.h> 13#include <linux/syscalls.h>
14#include "compat_ioctl.c" 14#include "compat_ioctl.c"
15#include <asm/mtrr.h>
16#include <asm/ia32.h> 15#include <asm/ia32.h>
17 16
18#define CODE 17#define CODE
19#include "compat_ioctl.c" 18#include "compat_ioctl.c"
20 19
21#ifndef TIOCGDEV
22#define TIOCGDEV _IOR('T',0x32, unsigned int)
23#endif
24static int tiocgdev(unsigned fd, unsigned cmd, unsigned int __user *ptr)
25{
26
27 struct file *file;
28 struct tty_struct *real_tty;
29 int fput_needed, ret;
30
31 file = fget_light(fd, &fput_needed);
32 if (!file)
33 return -EBADF;
34
35 ret = -EINVAL;
36 if (file->f_op->ioctl != tty_ioctl)
37 goto out;
38 real_tty = (struct tty_struct *)file->private_data;
39 if (!real_tty)
40 goto out;
41
42 ret = put_user(new_encode_dev(tty_devnum(real_tty)), ptr);
43
44out:
45 fput_light(file, fput_needed);
46 return ret;
47}
48
49#define RTC_IRQP_READ32 _IOR('p', 0x0b, unsigned int) /* Read IRQ rate */ 20#define RTC_IRQP_READ32 _IOR('p', 0x0b, unsigned int) /* Read IRQ rate */
50#define RTC_IRQP_SET32 _IOW('p', 0x0c, unsigned int) /* Set IRQ rate */ 21#define RTC_IRQP_SET32 _IOW('p', 0x0c, unsigned int) /* Set IRQ rate */
51#define RTC_EPOCH_READ32 _IOR('p', 0x0d, unsigned) /* Read epoch */ 22#define RTC_EPOCH_READ32 _IOR('p', 0x0d, unsigned) /* Read epoch */
@@ -85,90 +56,6 @@ static int rtc32_ioctl(unsigned fd, unsigned cmd, unsigned long arg)
85 return sys_ioctl(fd,cmd,arg); 56 return sys_ioctl(fd,cmd,arg);
86} 57}
87 58
88/* /proc/mtrr ioctls */
89
90
91struct mtrr_sentry32
92{
93 compat_ulong_t base; /* Base address */
94 compat_uint_t size; /* Size of region */
95 compat_uint_t type; /* Type of region */
96};
97
98struct mtrr_gentry32
99{
100 compat_ulong_t regnum; /* Register number */
101 compat_uint_t base; /* Base address */
102 compat_uint_t size; /* Size of region */
103 compat_uint_t type; /* Type of region */
104};
105
106#define MTRR_IOCTL_BASE 'M'
107
108#define MTRRIOC32_ADD_ENTRY _IOW(MTRR_IOCTL_BASE, 0, struct mtrr_sentry32)
109#define MTRRIOC32_SET_ENTRY _IOW(MTRR_IOCTL_BASE, 1, struct mtrr_sentry32)
110#define MTRRIOC32_DEL_ENTRY _IOW(MTRR_IOCTL_BASE, 2, struct mtrr_sentry32)
111#define MTRRIOC32_GET_ENTRY _IOWR(MTRR_IOCTL_BASE, 3, struct mtrr_gentry32)
112#define MTRRIOC32_KILL_ENTRY _IOW(MTRR_IOCTL_BASE, 4, struct mtrr_sentry32)
113#define MTRRIOC32_ADD_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 5, struct mtrr_sentry32)
114#define MTRRIOC32_SET_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 6, struct mtrr_sentry32)
115#define MTRRIOC32_DEL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 7, struct mtrr_sentry32)
116#define MTRRIOC32_GET_PAGE_ENTRY _IOWR(MTRR_IOCTL_BASE, 8, struct mtrr_gentry32)
117#define MTRRIOC32_KILL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 9, struct mtrr_sentry32)
118
119
120static int mtrr_ioctl32(unsigned int fd, unsigned int cmd, unsigned long arg)
121{
122 struct mtrr_gentry g;
123 struct mtrr_sentry s;
124 int get = 0, err = 0;
125 struct mtrr_gentry32 __user *g32 = (struct mtrr_gentry32 __user *)arg;
126 mm_segment_t oldfs = get_fs();
127
128 switch (cmd) {
129#define SET(x) case MTRRIOC32_ ## x ## _ENTRY: cmd = MTRRIOC_ ## x ## _ENTRY; break
130#define GET(x) case MTRRIOC32_ ## x ## _ENTRY: cmd = MTRRIOC_ ## x ## _ENTRY; get=1; break
131 SET(ADD);
132 SET(SET);
133 SET(DEL);
134 GET(GET);
135 SET(KILL);
136 SET(ADD_PAGE);
137 SET(SET_PAGE);
138 SET(DEL_PAGE);
139 GET(GET_PAGE);
140 SET(KILL_PAGE);
141 }
142
143 if (get) {
144 err = get_user(g.regnum, &g32->regnum);
145 err |= get_user(g.base, &g32->base);
146 err |= get_user(g.size, &g32->size);
147 err |= get_user(g.type, &g32->type);
148
149 arg = (unsigned long)&g;
150 } else {
151 struct mtrr_sentry32 __user *s32 = (struct mtrr_sentry32 __user *)arg;
152 err = get_user(s.base, &s32->base);
153 err |= get_user(s.size, &s32->size);
154 err |= get_user(s.type, &s32->type);
155
156 arg = (unsigned long)&s;
157 }
158 if (err) return err;
159
160 set_fs(KERNEL_DS);
161 err = sys_ioctl(fd, cmd, arg);
162 set_fs(oldfs);
163
164 if (!err && get) {
165 err = put_user(g.base, &g32->base);
166 err |= put_user(g.size, &g32->size);
167 err |= put_user(g.regnum, &g32->regnum);
168 err |= put_user(g.type, &g32->type);
169 }
170 return err;
171}
172 59
173#define HANDLE_IOCTL(cmd,handler) { (cmd), (ioctl_trans_handler_t)(handler) }, 60#define HANDLE_IOCTL(cmd,handler) { (cmd), (ioctl_trans_handler_t)(handler) },
174#define COMPATIBLE_IOCTL(cmd) HANDLE_IOCTL(cmd,sys_ioctl) 61#define COMPATIBLE_IOCTL(cmd) HANDLE_IOCTL(cmd,sys_ioctl)
@@ -185,7 +72,6 @@ COMPATIBLE_IOCTL(0x4B51) /* KDSHWCLK - not in the kernel, but don't complain *
185COMPATIBLE_IOCTL(FIOQSIZE) 72COMPATIBLE_IOCTL(FIOQSIZE)
186 73
187/* And these ioctls need translation */ 74/* And these ioctls need translation */
188HANDLE_IOCTL(TIOCGDEV, tiocgdev)
189/* realtime device */ 75/* realtime device */
190HANDLE_IOCTL(RTC_IRQP_READ, rtc32_ioctl) 76HANDLE_IOCTL(RTC_IRQP_READ, rtc32_ioctl)
191HANDLE_IOCTL(RTC_IRQP_READ32,rtc32_ioctl) 77HANDLE_IOCTL(RTC_IRQP_READ32,rtc32_ioctl)
@@ -193,17 +79,6 @@ HANDLE_IOCTL(RTC_IRQP_SET32, rtc32_ioctl)
193HANDLE_IOCTL(RTC_EPOCH_READ32, rtc32_ioctl) 79HANDLE_IOCTL(RTC_EPOCH_READ32, rtc32_ioctl)
194HANDLE_IOCTL(RTC_EPOCH_SET32, rtc32_ioctl) 80HANDLE_IOCTL(RTC_EPOCH_SET32, rtc32_ioctl)
195/* take care of sizeof(sizeof()) breakage */ 81/* take care of sizeof(sizeof()) breakage */
196/* mtrr */
197HANDLE_IOCTL(MTRRIOC32_ADD_ENTRY, mtrr_ioctl32)
198HANDLE_IOCTL(MTRRIOC32_SET_ENTRY, mtrr_ioctl32)
199HANDLE_IOCTL(MTRRIOC32_DEL_ENTRY, mtrr_ioctl32)
200HANDLE_IOCTL(MTRRIOC32_GET_ENTRY, mtrr_ioctl32)
201HANDLE_IOCTL(MTRRIOC32_KILL_ENTRY, mtrr_ioctl32)
202HANDLE_IOCTL(MTRRIOC32_ADD_PAGE_ENTRY, mtrr_ioctl32)
203HANDLE_IOCTL(MTRRIOC32_SET_PAGE_ENTRY, mtrr_ioctl32)
204HANDLE_IOCTL(MTRRIOC32_DEL_PAGE_ENTRY, mtrr_ioctl32)
205HANDLE_IOCTL(MTRRIOC32_GET_PAGE_ENTRY, mtrr_ioctl32)
206HANDLE_IOCTL(MTRRIOC32_KILL_PAGE_ENTRY, mtrr_ioctl32)
207}; 82};
208 83
209int ioctl_table_size = ARRAY_SIZE(ioctl_start); 84int ioctl_table_size = ARRAY_SIZE(ioctl_start);
diff --git a/arch/x86_64/kernel/i8259.c b/arch/x86_64/kernel/i8259.c
index b2a238b5a17e..c6c9791d77c1 100644
--- a/arch/x86_64/kernel/i8259.c
+++ b/arch/x86_64/kernel/i8259.c
@@ -494,7 +494,7 @@ void invalidate_interrupt7(void);
494void thermal_interrupt(void); 494void thermal_interrupt(void);
495void i8254_timer_resume(void); 495void i8254_timer_resume(void);
496 496
497static void setup_timer(void) 497static void setup_timer_hardware(void)
498{ 498{
499 outb_p(0x34,0x43); /* binary, mode 2, LSB/MSB, ch 0 */ 499 outb_p(0x34,0x43); /* binary, mode 2, LSB/MSB, ch 0 */
500 udelay(10); 500 udelay(10);
@@ -505,13 +505,13 @@ static void setup_timer(void)
505 505
506static int timer_resume(struct sys_device *dev) 506static int timer_resume(struct sys_device *dev)
507{ 507{
508 setup_timer(); 508 setup_timer_hardware();
509 return 0; 509 return 0;
510} 510}
511 511
512void i8254_timer_resume(void) 512void i8254_timer_resume(void)
513{ 513{
514 setup_timer(); 514 setup_timer_hardware();
515} 515}
516 516
517static struct sysdev_class timer_sysclass = { 517static struct sysdev_class timer_sysclass = {
@@ -594,7 +594,7 @@ void __init init_IRQ(void)
594 * Set the clock to HZ Hz, we already have a valid 594 * Set the clock to HZ Hz, we already have a valid
595 * vector now: 595 * vector now:
596 */ 596 */
597 setup_timer(); 597 setup_timer_hardware();
598 598
599 if (!acpi_ioapic) 599 if (!acpi_ioapic)
600 setup_irq(2, &irq2); 600 setup_irq(2, &irq2);
diff --git a/arch/x86_64/kernel/pci-gart.c b/arch/x86_64/kernel/pci-gart.c
index cf0a0315d586..88be97c96987 100644
--- a/arch/x86_64/kernel/pci-gart.c
+++ b/arch/x86_64/kernel/pci-gart.c
@@ -187,7 +187,7 @@ static void flush_gart(struct device *dev)
187 187
188/* Allocate DMA memory on node near device */ 188/* Allocate DMA memory on node near device */
189noinline 189noinline
190static void *dma_alloc_pages(struct device *dev, unsigned gfp, unsigned order) 190static void *dma_alloc_pages(struct device *dev, gfp_t gfp, unsigned order)
191{ 191{
192 struct page *page; 192 struct page *page;
193 int node; 193 int node;
@@ -204,7 +204,7 @@ static void *dma_alloc_pages(struct device *dev, unsigned gfp, unsigned order)
204 */ 204 */
205void * 205void *
206dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, 206dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle,
207 unsigned gfp) 207 gfp_t gfp)
208{ 208{
209 void *memory; 209 void *memory;
210 unsigned long dma_mask = 0; 210 unsigned long dma_mask = 0;
diff --git a/arch/x86_64/kernel/pci-nommu.c b/arch/x86_64/kernel/pci-nommu.c
index 67d90b89af0b..5a981dca87ff 100644
--- a/arch/x86_64/kernel/pci-nommu.c
+++ b/arch/x86_64/kernel/pci-nommu.c
@@ -24,7 +24,7 @@ EXPORT_SYMBOL(iommu_sac_force);
24 */ 24 */
25 25
26void *dma_alloc_coherent(struct device *hwdev, size_t size, 26void *dma_alloc_coherent(struct device *hwdev, size_t size,
27 dma_addr_t *dma_handle, unsigned gfp) 27 dma_addr_t *dma_handle, gfp_t gfp)
28{ 28{
29 void *ret; 29 void *ret;
30 u64 mask; 30 u64 mask;
diff --git a/arch/x86_64/kernel/setup.c b/arch/x86_64/kernel/setup.c
index cb28df14ff6f..da0bc3e7bdf5 100644
--- a/arch/x86_64/kernel/setup.c
+++ b/arch/x86_64/kernel/setup.c
@@ -1213,7 +1213,7 @@ static int show_cpuinfo(struct seq_file *m, void *v)
1213 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1213 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1214 1214
1215 /* Intel-defined (#2) */ 1215 /* Intel-defined (#2) */
1216 "pni", NULL, NULL, "monitor", "ds_cpl", NULL, NULL, "est", 1216 "pni", NULL, NULL, "monitor", "ds_cpl", "vmx", NULL, "est",
1217 "tm2", NULL, "cid", NULL, NULL, "cx16", "xtpr", NULL, 1217 "tm2", NULL, "cid", NULL, NULL, "cx16", "xtpr", NULL,
1218 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1218 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1219 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1219 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
diff --git a/arch/x86_64/kernel/suspend.c b/arch/x86_64/kernel/suspend.c
index f066c6ab3618..fd2bef780882 100644
--- a/arch/x86_64/kernel/suspend.c
+++ b/arch/x86_64/kernel/suspend.c
@@ -63,13 +63,12 @@ void save_processor_state(void)
63 __save_processor_state(&saved_context); 63 __save_processor_state(&saved_context);
64} 64}
65 65
66static void 66static void do_fpu_end(void)
67do_fpu_end(void)
68{ 67{
69 /* restore FPU regs if necessary */ 68 /*
70 /* Do it out of line so that gcc does not move cr0 load to some stupid place */ 69 * Restore FPU regs if necessary
71 kernel_fpu_end(); 70 */
72 mxcsr_feature_mask_init(); 71 kernel_fpu_end();
73} 72}
74 73
75void __restore_processor_state(struct saved_context *ctxt) 74void __restore_processor_state(struct saved_context *ctxt)
@@ -148,57 +147,7 @@ extern int restore_image(void);
148 147
149pgd_t *temp_level4_pgt; 148pgd_t *temp_level4_pgt;
150 149
151static void **pages; 150static int res_phys_pud_init(pud_t *pud, unsigned long address, unsigned long end)
152
153static inline void *__add_page(void)
154{
155 void **c;
156
157 c = (void **)get_usable_page(GFP_ATOMIC);
158 if (c) {
159 *c = pages;
160 pages = c;
161 }
162 return c;
163}
164
165static inline void *__next_page(void)
166{
167 void **c;
168
169 c = pages;
170 if (c) {
171 pages = *c;
172 *c = NULL;
173 }
174 return c;
175}
176
177/*
178 * Try to allocate as many usable pages as needed and daisy chain them.
179 * If one allocation fails, free the pages allocated so far
180 */
181static int alloc_usable_pages(unsigned long n)
182{
183 void *p;
184
185 pages = NULL;
186 do
187 if (!__add_page())
188 break;
189 while (--n);
190 if (n) {
191 p = __next_page();
192 while (p) {
193 free_page((unsigned long)p);
194 p = __next_page();
195 }
196 return -ENOMEM;
197 }
198 return 0;
199}
200
201static void res_phys_pud_init(pud_t *pud, unsigned long address, unsigned long end)
202{ 151{
203 long i, j; 152 long i, j;
204 153
@@ -212,7 +161,9 @@ static void res_phys_pud_init(pud_t *pud, unsigned long address, unsigned long e
212 if (paddr >= end) 161 if (paddr >= end)
213 break; 162 break;
214 163
215 pmd = (pmd_t *)__next_page(); 164 pmd = (pmd_t *)get_safe_page(GFP_ATOMIC);
165 if (!pmd)
166 return -ENOMEM;
216 set_pud(pud, __pud(__pa(pmd) | _KERNPG_TABLE)); 167 set_pud(pud, __pud(__pa(pmd) | _KERNPG_TABLE));
217 for (j = 0; j < PTRS_PER_PMD; pmd++, j++, paddr += PMD_SIZE) { 168 for (j = 0; j < PTRS_PER_PMD; pmd++, j++, paddr += PMD_SIZE) {
218 unsigned long pe; 169 unsigned long pe;
@@ -224,13 +175,17 @@ static void res_phys_pud_init(pud_t *pud, unsigned long address, unsigned long e
224 set_pmd(pmd, __pmd(pe)); 175 set_pmd(pmd, __pmd(pe));
225 } 176 }
226 } 177 }
178 return 0;
227} 179}
228 180
229static void set_up_temporary_mappings(void) 181static int set_up_temporary_mappings(void)
230{ 182{
231 unsigned long start, end, next; 183 unsigned long start, end, next;
184 int error;
232 185
233 temp_level4_pgt = (pgd_t *)__next_page(); 186 temp_level4_pgt = (pgd_t *)get_safe_page(GFP_ATOMIC);
187 if (!temp_level4_pgt)
188 return -ENOMEM;
234 189
235 /* It is safe to reuse the original kernel mapping */ 190 /* It is safe to reuse the original kernel mapping */
236 set_pgd(temp_level4_pgt + pgd_index(__START_KERNEL_map), 191 set_pgd(temp_level4_pgt + pgd_index(__START_KERNEL_map),
@@ -241,29 +196,27 @@ static void set_up_temporary_mappings(void)
241 end = (unsigned long)pfn_to_kaddr(end_pfn); 196 end = (unsigned long)pfn_to_kaddr(end_pfn);
242 197
243 for (; start < end; start = next) { 198 for (; start < end; start = next) {
244 pud_t *pud = (pud_t *)__next_page(); 199 pud_t *pud = (pud_t *)get_safe_page(GFP_ATOMIC);
200 if (!pud)
201 return -ENOMEM;
245 next = start + PGDIR_SIZE; 202 next = start + PGDIR_SIZE;
246 if (next > end) 203 if (next > end)
247 next = end; 204 next = end;
248 res_phys_pud_init(pud, __pa(start), __pa(next)); 205 if ((error = res_phys_pud_init(pud, __pa(start), __pa(next))))
206 return error;
249 set_pgd(temp_level4_pgt + pgd_index(start), 207 set_pgd(temp_level4_pgt + pgd_index(start),
250 mk_kernel_pgd(__pa(pud))); 208 mk_kernel_pgd(__pa(pud)));
251 } 209 }
210 return 0;
252} 211}
253 212
254int swsusp_arch_resume(void) 213int swsusp_arch_resume(void)
255{ 214{
256 unsigned long n; 215 int error;
257 216
258 n = ((end_pfn << PAGE_SHIFT) + PUD_SIZE - 1) >> PUD_SHIFT;
259 n += (n + PTRS_PER_PUD - 1) / PTRS_PER_PUD + 1;
260 pr_debug("swsusp_arch_resume(): pages needed = %lu\n", n);
261 if (alloc_usable_pages(n)) {
262 free_eaten_memory();
263 return -ENOMEM;
264 }
265 /* We have got enough memory and from now on we cannot recover */ 217 /* We have got enough memory and from now on we cannot recover */
266 set_up_temporary_mappings(); 218 if ((error = set_up_temporary_mappings()))
219 return error;
267 restore_image(); 220 restore_image();
268 return 0; 221 return 0;
269} 222}
diff --git a/arch/x86_64/kernel/time.c b/arch/x86_64/kernel/time.c
index 703acde2a1a5..fdaddc4e5284 100644
--- a/arch/x86_64/kernel/time.c
+++ b/arch/x86_64/kernel/time.c
@@ -42,10 +42,6 @@
42#include <asm/apic.h> 42#include <asm/apic.h>
43#endif 43#endif
44 44
45u64 jiffies_64 = INITIAL_JIFFIES;
46
47EXPORT_SYMBOL(jiffies_64);
48
49#ifdef CONFIG_CPU_FREQ 45#ifdef CONFIG_CPU_FREQ
50static void cpufreq_delayed_get(void); 46static void cpufreq_delayed_get(void);
51#endif 47#endif
@@ -481,9 +477,9 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
481static unsigned int cyc2ns_scale; 477static unsigned int cyc2ns_scale;
482#define CYC2NS_SCALE_FACTOR 10 /* 2^10, carefully chosen */ 478#define CYC2NS_SCALE_FACTOR 10 /* 2^10, carefully chosen */
483 479
484static inline void set_cyc2ns_scale(unsigned long cpu_mhz) 480static inline void set_cyc2ns_scale(unsigned long cpu_khz)
485{ 481{
486 cyc2ns_scale = (1000 << CYC2NS_SCALE_FACTOR)/cpu_mhz; 482 cyc2ns_scale = (1000000 << CYC2NS_SCALE_FACTOR)/cpu_khz;
487} 483}
488 484
489static inline unsigned long long cycles_2_ns(unsigned long long cyc) 485static inline unsigned long long cycles_2_ns(unsigned long long cyc)
@@ -655,7 +651,7 @@ static int time_cpufreq_notifier(struct notifier_block *nb, unsigned long val,
655 vxtime.tsc_quot = (1000L << 32) / cpu_khz; 651 vxtime.tsc_quot = (1000L << 32) / cpu_khz;
656 } 652 }
657 653
658 set_cyc2ns_scale(cpu_khz_ref / 1000); 654 set_cyc2ns_scale(cpu_khz_ref);
659 655
660 return 0; 656 return 0;
661} 657}
@@ -939,7 +935,7 @@ void __init time_init(void)
939 rdtscll_sync(&vxtime.last_tsc); 935 rdtscll_sync(&vxtime.last_tsc);
940 setup_irq(0, &irq0); 936 setup_irq(0, &irq0);
941 937
942 set_cyc2ns_scale(cpu_khz / 1000); 938 set_cyc2ns_scale(cpu_khz);
943 939
944#ifndef CONFIG_SMP 940#ifndef CONFIG_SMP
945 time_init_gtod(); 941 time_init_gtod();
@@ -1093,6 +1089,7 @@ static unsigned long PIE_freq = DEFAULT_RTC_INT_FREQ;
1093static unsigned long PIE_count; 1089static unsigned long PIE_count;
1094 1090
1095static unsigned long hpet_rtc_int_freq; /* RTC interrupt frequency */ 1091static unsigned long hpet_rtc_int_freq; /* RTC interrupt frequency */
1092static unsigned int hpet_t1_cmp; /* cached comparator register */
1096 1093
1097int is_hpet_enabled(void) 1094int is_hpet_enabled(void)
1098{ 1095{
@@ -1129,10 +1126,12 @@ int hpet_rtc_timer_init(void)
1129 cnt = hpet_readl(HPET_COUNTER); 1126 cnt = hpet_readl(HPET_COUNTER);
1130 cnt += ((hpet_tick*HZ)/hpet_rtc_int_freq); 1127 cnt += ((hpet_tick*HZ)/hpet_rtc_int_freq);
1131 hpet_writel(cnt, HPET_T1_CMP); 1128 hpet_writel(cnt, HPET_T1_CMP);
1129 hpet_t1_cmp = cnt;
1132 local_irq_restore(flags); 1130 local_irq_restore(flags);
1133 1131
1134 cfg = hpet_readl(HPET_T1_CFG); 1132 cfg = hpet_readl(HPET_T1_CFG);
1135 cfg |= HPET_TN_ENABLE | HPET_TN_SETVAL | HPET_TN_32BIT; 1133 cfg &= ~HPET_TN_PERIODIC;
1134 cfg |= HPET_TN_ENABLE | HPET_TN_32BIT;
1136 hpet_writel(cfg, HPET_T1_CFG); 1135 hpet_writel(cfg, HPET_T1_CFG);
1137 1136
1138 return 1; 1137 return 1;
@@ -1142,8 +1141,12 @@ static void hpet_rtc_timer_reinit(void)
1142{ 1141{
1143 unsigned int cfg, cnt; 1142 unsigned int cfg, cnt;
1144 1143
1145 if (!(PIE_on | AIE_on | UIE_on)) 1144 if (unlikely(!(PIE_on | AIE_on | UIE_on))) {
1145 cfg = hpet_readl(HPET_T1_CFG);
1146 cfg &= ~HPET_TN_ENABLE;
1147 hpet_writel(cfg, HPET_T1_CFG);
1146 return; 1148 return;
1149 }
1147 1150
1148 if (PIE_on && (PIE_freq > DEFAULT_RTC_INT_FREQ)) 1151 if (PIE_on && (PIE_freq > DEFAULT_RTC_INT_FREQ))
1149 hpet_rtc_int_freq = PIE_freq; 1152 hpet_rtc_int_freq = PIE_freq;
@@ -1151,15 +1154,10 @@ static void hpet_rtc_timer_reinit(void)
1151 hpet_rtc_int_freq = DEFAULT_RTC_INT_FREQ; 1154 hpet_rtc_int_freq = DEFAULT_RTC_INT_FREQ;
1152 1155
1153 /* It is more accurate to use the comparator value than current count.*/ 1156 /* It is more accurate to use the comparator value than current count.*/
1154 cnt = hpet_readl(HPET_T1_CMP); 1157 cnt = hpet_t1_cmp;
1155 cnt += hpet_tick*HZ/hpet_rtc_int_freq; 1158 cnt += hpet_tick*HZ/hpet_rtc_int_freq;
1156 hpet_writel(cnt, HPET_T1_CMP); 1159 hpet_writel(cnt, HPET_T1_CMP);
1157 1160 hpet_t1_cmp = cnt;
1158 cfg = hpet_readl(HPET_T1_CFG);
1159 cfg |= HPET_TN_ENABLE | HPET_TN_SETVAL | HPET_TN_32BIT;
1160 hpet_writel(cfg, HPET_T1_CFG);
1161
1162 return;
1163} 1161}
1164 1162
1165/* 1163/*
diff --git a/arch/x86_64/mm/ioremap.c b/arch/x86_64/mm/ioremap.c
index 6972df480d2b..ecf7acb5db9b 100644
--- a/arch/x86_64/mm/ioremap.c
+++ b/arch/x86_64/mm/ioremap.c
@@ -60,7 +60,7 @@ static inline int remap_area_pmd(pmd_t * pmd, unsigned long address, unsigned lo
60 if (address >= end) 60 if (address >= end)
61 BUG(); 61 BUG();
62 do { 62 do {
63 pte_t * pte = pte_alloc_kernel(&init_mm, pmd, address); 63 pte_t * pte = pte_alloc_kernel(pmd, address);
64 if (!pte) 64 if (!pte)
65 return -ENOMEM; 65 return -ENOMEM;
66 remap_area_pte(pte, address, end - address, address + phys_addr, flags); 66 remap_area_pte(pte, address, end - address, address + phys_addr, flags);
@@ -105,7 +105,6 @@ static int remap_area_pages(unsigned long address, unsigned long phys_addr,
105 flush_cache_all(); 105 flush_cache_all();
106 if (address >= end) 106 if (address >= end)
107 BUG(); 107 BUG();
108 spin_lock(&init_mm.page_table_lock);
109 do { 108 do {
110 pud_t *pud; 109 pud_t *pud;
111 pud = pud_alloc(&init_mm, pgd, address); 110 pud = pud_alloc(&init_mm, pgd, address);
@@ -119,7 +118,6 @@ static int remap_area_pages(unsigned long address, unsigned long phys_addr,
119 address = (address + PGDIR_SIZE) & PGDIR_MASK; 118 address = (address + PGDIR_SIZE) & PGDIR_MASK;
120 pgd++; 119 pgd++;
121 } while (address && (address < end)); 120 } while (address && (address < end));
122 spin_unlock(&init_mm.page_table_lock);
123 flush_tlb_all(); 121 flush_tlb_all();
124 return error; 122 return error;
125} 123}
diff --git a/arch/xtensa/kernel/pci-dma.c b/arch/xtensa/kernel/pci-dma.c
index 84fde258cf85..1ff82268e8ea 100644
--- a/arch/xtensa/kernel/pci-dma.c
+++ b/arch/xtensa/kernel/pci-dma.c
@@ -29,7 +29,7 @@
29 */ 29 */
30 30
31void * 31void *
32dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *handle, int gfp) 32dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp)
33{ 33{
34 void *ret; 34 void *ret;
35 35
diff --git a/arch/xtensa/kernel/platform.c b/arch/xtensa/kernel/platform.c
index 03674daabc66..a17930747f20 100644
--- a/arch/xtensa/kernel/platform.c
+++ b/arch/xtensa/kernel/platform.c
@@ -18,6 +18,7 @@
18#include <linux/time.h> 18#include <linux/time.h>
19#include <asm/platform.h> 19#include <asm/platform.h>
20#include <asm/timex.h> 20#include <asm/timex.h>
21#include <asm/param.h> /* HZ */
21 22
22#define _F(r,f,a,b) \ 23#define _F(r,f,a,b) \
23 r __platform_##f a b; \ 24 r __platform_##f a b; \
diff --git a/arch/xtensa/kernel/ptrace.c b/arch/xtensa/kernel/ptrace.c
index 2659efdd4e99..14460743de07 100644
--- a/arch/xtensa/kernel/ptrace.c
+++ b/arch/xtensa/kernel/ptrace.c
@@ -45,7 +45,7 @@ void ptrace_disable(struct task_struct *child)
45 /* Nothing to do.. */ 45 /* Nothing to do.. */
46} 46}
47 47
48int sys_ptrace(long request, long pid, long addr, long data) 48long sys_ptrace(long request, long pid, long addr, long data)
49{ 49{
50 struct task_struct *child; 50 struct task_struct *child;
51 int ret = -EPERM; 51 int ret = -EPERM;
diff --git a/arch/xtensa/kernel/time.c b/arch/xtensa/kernel/time.c
index 8e423d1335ce..cb6e38ed2b1d 100644
--- a/arch/xtensa/kernel/time.c
+++ b/arch/xtensa/kernel/time.c
@@ -29,9 +29,6 @@
29 29
30extern volatile unsigned long wall_jiffies; 30extern volatile unsigned long wall_jiffies;
31 31
32u64 jiffies_64 = INITIAL_JIFFIES;
33EXPORT_SYMBOL(jiffies_64);
34
35spinlock_t rtc_lock = SPIN_LOCK_UNLOCKED; 32spinlock_t rtc_lock = SPIN_LOCK_UNLOCKED;
36EXPORT_SYMBOL(rtc_lock); 33EXPORT_SYMBOL(rtc_lock);
37 34