Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/cpufreq
authorLinus Torvalds <torvalds@woody.osdl.org>
Mon, 18 Dec 2006 03:08:11 +0000 (19:08 -0800)
committerLinus Torvalds <torvalds@woody.osdl.org>
Mon, 18 Dec 2006 03:08:11 +0000 (19:08 -0800)
* master.kernel.org:/pub/scm/linux/kernel/git/davej/cpufreq:
  [CPUFREQ] longhaul compile fix.
  [CPUFREQ] Advise not to use longhaul on VIA C7.
  [CPUFREQ] set policy->curfreq on initialization
  [CPUFREQ] Trivial cleanup for acpi read/write port in acpi-cpufreq.c
  [CPUFREQ] fixes typo in cpufreq.c

576 files changed:
Documentation/DocBook/genericirq.tmpl
Documentation/cachetlb.txt
Documentation/feature-removal-schedule.txt
Documentation/filesystems/bfs.txt
Documentation/hwmon/f71805f
Documentation/hwmon/it87
Documentation/hwmon/k8temp
Documentation/hwmon/pc87427 [new file with mode: 0644]
Documentation/hwmon/sysfs-interface
Documentation/hwmon/w83627ehf
Documentation/hwmon/w83791d
Documentation/hwmon/w83793 [new file with mode: 0644]
Documentation/kernel-parameters.txt
MAINTAINERS
Makefile
arch/arm/Kconfig
arch/arm/kernel/apm.c
arch/arm/kernel/calls.S
arch/arm/kernel/ecard.c
arch/arm/kernel/head.S
arch/arm/kernel/setup.c
arch/arm/mach-at91rm9200/at91sam9260_devices.c
arch/arm/mach-at91rm9200/board-sam9260ek.c
arch/arm/mach-imx/Makefile
arch/arm/mach-imx/cpufreq.c [new file with mode: 0644]
arch/arm/mach-netx/time.c
arch/arm/mach-omap1/Kconfig
arch/arm/mach-omap1/board-osk.c
arch/arm/mach-pxa/time.c
arch/arm/mach-pxa/trizeps4.c
arch/arm/mach-sa1100/jornada720.c
arch/arm/mm/consistent.c
arch/arm/mm/copypage-v4mc.c
arch/arm/mm/copypage-v6.c
arch/arm/mm/copypage-xscale.c
arch/arm/mm/fault-armv.c
arch/arm/mm/flush.c
arch/arm/mm/ioremap.c
arch/arm/mm/mmu.c
arch/arm/mm/pgd.c
arch/arm/mm/proc-arm1020.S
arch/arm/mm/proc-arm1020e.S
arch/arm/mm/proc-arm1022.S
arch/arm/mm/proc-arm1026.S
arch/arm/mm/proc-arm6_7.S
arch/arm/mm/proc-arm720.S
arch/arm/mm/proc-arm920.S
arch/arm/mm/proc-arm922.S
arch/arm/mm/proc-arm925.S
arch/arm/mm/proc-arm926.S
arch/arm/mm/proc-sa110.S
arch/arm/mm/proc-sa1100.S
arch/arm/mm/proc-syms.c
arch/arm/mm/proc-v6.S
arch/arm/mm/proc-xsc3.S
arch/arm/mm/proc-xscale.S
arch/arm/vfp/vfpmodule.c
arch/arm26/kernel/ecard.c
arch/arm26/kernel/irq.c
arch/cris/arch-v10/drivers/axisflashmap.c
arch/cris/arch-v10/drivers/gpio.c
arch/cris/arch-v32/drivers/axisflashmap.c
arch/cris/arch-v32/drivers/gpio.c
arch/cris/arch-v32/kernel/signal.c
arch/cris/kernel/profile.c
arch/h8300/kernel/ints.c
arch/h8300/platform/h8s/ints.c
arch/i386/defconfig
arch/i386/kernel/apm.c
arch/i386/kernel/entry.S
arch/i386/kernel/microcode.c
arch/i386/kernel/smpboot.c
arch/i386/kernel/traps.c
arch/ia64/sn/kernel/sn2/sn_hwperf.c
arch/m68k/mm/kmap.c
arch/mips/kernel/apm.c
arch/mips/mm/init.c
arch/parisc/hpux/sys_hpux.c
arch/parisc/kernel/unwind.c
arch/powerpc/kernel/nvram_64.c
arch/powerpc/kernel/pci_32.c
arch/powerpc/mm/imalloc.c
arch/powerpc/platforms/pseries/eeh_cache.c
arch/ppc/8260_io/fcc_enet.c
arch/ppc/8xx_io/cs4218_tdm.c
arch/s390/Kconfig
arch/s390/defconfig
arch/s390/hypfs/hypfs_diag.c
arch/s390/kernel/debug.c
arch/s390/kernel/ipl.c
arch/s390/kernel/reipl.S
arch/s390/kernel/reipl64.S
arch/s390/kernel/reset.S
arch/s390/kernel/s390_ext.c
arch/sparc/defconfig
arch/sparc/kernel/irq.c
arch/sparc/kernel/sparc_ksyms.c
arch/sparc/kernel/sun4d_irq.c
arch/sparc/kernel/time.c
arch/sparc/lib/Makefile
arch/sparc/lib/atomic32.c
arch/sparc/lib/bitops.S [deleted file]
arch/sparc64/kernel/head.S
arch/sparc64/kernel/irq.c
arch/sparc64/kernel/smp.c
arch/sparc64/kernel/sys_sunos32.c
arch/um/drivers/net_kern.c
arch/um/include/net_kern.h
arch/um/sys-i386/ldt.c
arch/x86_64/Makefile
arch/x86_64/defconfig
arch/x86_64/kernel/entry.S
arch/x86_64/kernel/traps.c
arch/x86_64/kernel/vmlinux.lds.S
arch/xtensa/kernel/Makefile
arch/xtensa/kernel/syscall.c
block/as-iosched.c
block/cfq-iosched.c
block/ll_rw_blk.c
crypto/blkcipher.c
drivers/acorn/block/fd1772.c
drivers/ata/Kconfig
drivers/ata/ahci.c
drivers/ata/ata_piix.c
drivers/ata/libata-core.c
drivers/ata/libata-scsi.c
drivers/ata/pata_legacy.c
drivers/ata/pata_qdi.c
drivers/ata/pata_rz1000.c
drivers/ata/pata_via.c
drivers/ata/pata_winbond.c
drivers/ata/pdc_adma.c
drivers/ata/sata_svw.c
drivers/atm/eni.c
drivers/atm/he.c
drivers/atm/lanai.c
drivers/atm/nicstar.c
drivers/atm/zatm.c
drivers/base/class.c
drivers/base/dmapool.c
drivers/base/platform.c
drivers/block/Kconfig
drivers/block/Makefile
drivers/block/cciss.c
drivers/block/cpqarray.c
drivers/block/swim_iop.c [deleted file]
drivers/cdrom/cdrom.c
drivers/cdrom/cm206.c
drivers/char/Kconfig
drivers/char/consolemap.c
drivers/char/lcd.c
drivers/char/lp.c
drivers/char/mxser_new.c
drivers/char/n_r3964.c
drivers/char/n_tty.c
drivers/char/pcmcia/synclink_cs.c
drivers/char/rio/riocmd.c
drivers/char/rtc.c
drivers/char/sx.c
drivers/char/synclink.c
drivers/char/synclinkmp.c
drivers/char/sysrq.c
drivers/char/tty_io.c
drivers/char/viocons.c
drivers/char/vt.c
drivers/char/vt_ioctl.c
drivers/fc4/fc.c
drivers/hwmon/Kconfig
drivers/hwmon/Makefile
drivers/hwmon/ams/Makefile [new file with mode: 0644]
drivers/hwmon/ams/ams-core.c [new file with mode: 0644]
drivers/hwmon/ams/ams-i2c.c [new file with mode: 0644]
drivers/hwmon/ams/ams-input.c [new file with mode: 0644]
drivers/hwmon/ams/ams-pmu.c [new file with mode: 0644]
drivers/hwmon/ams/ams.h [new file with mode: 0644]
drivers/hwmon/f71805f.c
drivers/hwmon/hdaps.c
drivers/hwmon/hwmon-vid.c
drivers/hwmon/it87.c
drivers/hwmon/k8temp.c
drivers/hwmon/pc87360.c
drivers/hwmon/pc87427.c [new file with mode: 0644]
drivers/hwmon/w83627ehf.c
drivers/hwmon/w83792d.c
drivers/hwmon/w83793.c [new file with mode: 0644]
drivers/i2c/busses/i2c-ali1563.c
drivers/i2c/chips/tps65010.c
drivers/ide/ide-floppy.c
drivers/ide/ide-tape.c
drivers/ide/pci/hpt366.c
drivers/infiniband/hw/mthca/mthca_main.c
drivers/infiniband/ulp/srp/ib_srp.c
drivers/infiniband/ulp/srp/ib_srp.h
drivers/input/keyboard/amikbd.c
drivers/input/keyboard/hilkbd.c
drivers/input/keyboard/sunkbd.c
drivers/isdn/act2000/act2000_isa.c
drivers/isdn/capi/capidrv.c
drivers/isdn/divert/divert_procfs.c
drivers/isdn/divert/isdn_divert.c
drivers/isdn/gigaset/bas-gigaset.c
drivers/isdn/hysdn/hysdn_procconf.c
drivers/isdn/hysdn/hysdn_proclog.c
drivers/isdn/i4l/isdn_audio.c
drivers/isdn/i4l/isdn_net.c
drivers/isdn/i4l/isdn_ppp.c
drivers/isdn/pcbit/layer2.c
drivers/kvm/Kconfig
drivers/kvm/kvm.h
drivers/kvm/kvm_main.c
drivers/kvm/kvm_svm.h
drivers/kvm/kvm_vmx.h
drivers/kvm/mmu.c
drivers/kvm/paging_tmpl.h
drivers/kvm/svm.c
drivers/kvm/vmx.c
drivers/kvm/x86_emulate.c
drivers/kvm/x86_emulate.h
drivers/macintosh/adb.c
drivers/macintosh/apm_emu.c
drivers/macintosh/smu.c
drivers/macintosh/via-pmu68k.c
drivers/md/faulty.c
drivers/md/raid1.c
drivers/md/raid10.c
drivers/md/raid5.c
drivers/media/dvb/bt8xx/dst_ca.c
drivers/media/dvb/bt8xx/dvb-bt8xx.c
drivers/media/dvb/ttusb-dec/ttusbdecfe.c
drivers/media/video/dabusb.c
drivers/media/video/planb.c
drivers/media/video/usbvideo/usbvideo.c
drivers/media/video/videocodec.c
drivers/message/i2o/core.h
drivers/message/i2o/driver.c
drivers/message/i2o/exec-osm.c
drivers/message/i2o/i2o_config.c
drivers/mtd/devices/mtd_dataflash.c
drivers/mtd/rfd_ftl.c
drivers/net/appletalk/ipddp.c
drivers/net/bsd_comp.c
drivers/net/irda/donauboe.c
drivers/net/irda/irda-usb.c
drivers/net/irda/irport.c
drivers/net/lp486e.c
drivers/net/phy/phy_device.c
drivers/net/ppp_deflate.c
drivers/net/ppp_mppe.c
drivers/net/skge.c
drivers/net/slip.c
drivers/net/wan/hostess_sv11.c
drivers/net/wan/pc300_drv.c
drivers/net/wan/pc300_tty.c
drivers/net/wan/x25_asy.c
drivers/net/wireless/hostap/hostap_ap.c
drivers/net/wireless/hostap/hostap_download.c
drivers/net/wireless/hostap/hostap_hw.c
drivers/net/wireless/hostap/hostap_ioctl.c
drivers/net/wireless/hostap/hostap_main.c
drivers/net/wireless/ipw2100.c
drivers/net/wireless/prism54/isl_ioctl.c
drivers/net/wireless/wavelan_cs.c
drivers/net/wireless/zd1211rw/zd_chip.c
drivers/parisc/iosapic.c
drivers/pci/hotplug/cpqphp_nvram.c
drivers/pci/hotplug/pciehp_hpc.c
drivers/pci/pcie/aer/aerdrv.c
drivers/pcmcia/at91_cf.c
drivers/pcmcia/omap_cf.c
drivers/pnp/isapnp/core.c
drivers/pnp/pnpacpi/core.c
drivers/pnp/pnpacpi/rsparser.c
drivers/pnp/pnpbios/core.c
drivers/pnp/pnpbios/proc.c
drivers/pnp/pnpbios/rsparser.c
drivers/rtc/rtc-at91rm9200.c
drivers/rtc/rtc-dev.c
drivers/rtc/rtc-omap.c
drivers/rtc/rtc-proc.c
drivers/rtc/rtc-s3c.c
drivers/rtc/rtc-sa1100.c
drivers/rtc/rtc-sysfs.c
drivers/s390/char/con3215.c
drivers/s390/char/keyboard.c
drivers/s390/char/sclp_cpi.c
drivers/s390/cio/cio.c
drivers/s390/cio/css.c
drivers/s390/cio/qdio.c
drivers/s390/crypto/ap_bus.c
drivers/s390/crypto/zcrypt_cex2a.c
drivers/s390/crypto/zcrypt_pcica.c
drivers/s390/crypto/zcrypt_pcixcc.c
drivers/s390/net/ctcmain.c
drivers/s390/net/iucv.c
drivers/s390/scsi/zfcp_aux.c
drivers/sbus/char/vfc_dev.c
drivers/scsi/aacraid/aachba.c
drivers/scsi/aacraid/comminit.c
drivers/scsi/aha1542.c
drivers/scsi/aic7xxx_old.c
drivers/scsi/dc395x.c
drivers/scsi/dpt_i2o.c
drivers/scsi/initio.c
drivers/scsi/osst.c
drivers/scsi/pluto.c
drivers/scsi/sr_ioctl.c
drivers/scsi/sr_vendor.c
drivers/scsi/sun3_NCR5380.c
drivers/scsi/sym53c8xx_2/sym_hipd.c
drivers/serial/8250_pci.c
drivers/usb/gadget/at91_udc.c
drivers/usb/gadget/serial.c
drivers/usb/host/hc_crisv10.c
drivers/usb/misc/auerswald.c
drivers/usb/misc/uss720.c
drivers/usb/net/rndis_host.c
drivers/usb/serial/cypress_m8.c
drivers/usb/serial/digi_acceleport.c
drivers/usb/serial/io_ti.c
drivers/usb/serial/ipaq.c
drivers/usb/serial/kobil_sct.c
drivers/usb/serial/pl2303.c
drivers/usb/serial/ti_usb_3410_5052.c
drivers/usb/serial/whiteheat.c
drivers/usb/storage/sddr09.c
drivers/video/amba-clcd.c
drivers/video/amifb.c
drivers/video/aty/atyfb_base.c
drivers/video/matrox/i2c-matroxfb.c
drivers/video/matrox/matroxfb_base.c
drivers/video/matrox/matroxfb_crtc2.c
drivers/video/sstfb.c
drivers/w1/slaves/Kconfig
fs/aio.c
fs/autofs4/inode.c
fs/befs/btree.c
fs/befs/debug.c
fs/bfs/inode.c
fs/binfmt_misc.c
fs/bio.c
fs/block_dev.c
fs/cifs/cifssmb.c
fs/debugfs/inode.c
fs/inode.c
fs/jffs/inode-v23.c
fs/jffs/intrep.c
fs/jfs/jfs_dtree.c
fs/jfs/jfs_imap.c
fs/lockd/clntlock.c
fs/lockd/clntproc.c
fs/lockd/svclock.c
fs/lockd/svcshare.c
fs/lockd/xdr.c
fs/lockd/xdr4.c
fs/namespace.c
fs/ncpfs/inode.c
fs/nfs/nfs4proc.c
fs/nfsd/export.c
fs/nfsd/lockd.c
fs/nfsd/nfs4proc.c
fs/nfsd/nfs4state.c
fs/nfsd/nfs4xdr.c
fs/nfsd/nfsfh.c
fs/nfsd/vfs.c
fs/ocfs2/alloc.c
fs/ocfs2/cluster/heartbeat.c
fs/ocfs2/cluster/nodemanager.c
fs/ocfs2/cluster/tcp.c
fs/ocfs2/dlm/dlmdomain.c
fs/ocfs2/dlm/dlmlock.c
fs/ocfs2/dlm/dlmmaster.c
fs/ocfs2/dlm/dlmrecovery.c
fs/ocfs2/file.c
fs/ocfs2/localalloc.c
fs/ocfs2/slot_map.c
fs/ocfs2/suballoc.c
fs/ocfs2/super.c
fs/ocfs2/vote.c
fs/pipe.c
fs/read_write.c
fs/reiserfs/xattr_acl.c
fs/smbfs/inode.c
fs/smbfs/proc.c
fs/smbfs/smbiod.c
fs/splice.c
include/asm-alpha/cacheflush.h
include/asm-arm/arch-imx/imx-regs.h
include/asm-arm/arch-s3c2410/regs-udc.h
include/asm-arm/cacheflush.h
include/asm-arm/cpu-multi32.h
include/asm-arm/cpu-single.h
include/asm-arm/pgtable.h
include/asm-arm/processor.h
include/asm-arm/system.h
include/asm-arm/thread_info.h
include/asm-arm/unistd.h
include/asm-arm26/cacheflush.h
include/asm-avr32/cacheflush.h
include/asm-avr32/pgalloc.h
include/asm-cris/cacheflush.h
include/asm-frv/cacheflush.h
include/asm-frv/thread_info.h
include/asm-generic/vmlinux.lds.h
include/asm-h8300/cacheflush.h
include/asm-i386/cacheflush.h
include/asm-i386/thread_info.h
include/asm-i386/unwind.h
include/asm-ia64/cacheflush.h
include/asm-ia64/pci.h
include/asm-ia64/scatterlist.h
include/asm-ia64/thread_info.h
include/asm-m32r/cacheflush.h
include/asm-m68k/cacheflush.h
include/asm-m68k/swim_iop.h [deleted file]
include/asm-m68knommu/cacheflush.h
include/asm-mips/cacheflush.h
include/asm-mips/page.h
include/asm-parisc/cacheflush.h
include/asm-powerpc/cacheflush.h
include/asm-powerpc/thread_info.h
include/asm-s390/cacheflush.h
include/asm-s390/qdio.h
include/asm-s390/reset.h
include/asm-sh/cpu-sh2/cacheflush.h
include/asm-sh/cpu-sh3/cacheflush.h
include/asm-sh/cpu-sh4/cacheflush.h
include/asm-sh/thread_info.h
include/asm-sh64/cacheflush.h
include/asm-sh64/pgalloc.h
include/asm-sparc/bitops.h
include/asm-sparc/cacheflush.h
include/asm-sparc64/cacheflush.h
include/asm-sparc64/hw_irq.h
include/asm-sparc64/percpu.h
include/asm-v850/cacheflush.h
include/asm-x86_64/cacheflush.h
include/asm-x86_64/thread_info.h
include/asm-x86_64/unwind.h
include/asm-xtensa/cacheflush.h
include/asm-xtensa/termbits.h
include/asm-xtensa/uaccess.h
include/linux/aio.h
include/linux/bio.h
include/linux/coda_linux.h
include/linux/cpuset.h
include/linux/fb.h
include/linux/freezer.h
include/linux/fs.h
include/linux/gameport.h
include/linux/highmem.h
include/linux/i2c-id.h
include/linux/init_task.h
include/linux/lockd/bind.h
include/linux/lockd/lockd.h
include/linux/lockd/sm_inter.h
include/linux/lockd/xdr.h
include/linux/lockdep.h
include/linux/mount.h
include/linux/n_r3964.h
include/linux/ncp_mount.h
include/linux/netfilter_bridge.h
include/linux/netfilter_ipv4.h
include/linux/netfilter_ipv6.h
include/linux/nfsd/nfsd.h
include/linux/nfsd/state.h
include/linux/nfsd/xdr4.h
include/linux/nsproxy.h
include/linux/pci_ids.h
include/linux/pipe_fs_i.h
include/linux/platform_device.h
include/linux/reciprocal_div.h [new file with mode: 0644]
include/linux/sched.h
include/linux/slab.h
include/linux/slab_def.h [new file with mode: 0644]
include/linux/smb_fs_sb.h
include/linux/sysrq.h
include/linux/unwind.h
include/linux/workqueue.h
include/net/bluetooth/hci.h
include/net/ip6_fib.h
include/net/netfilter/nf_conntrack_compat.h
include/net/sctp/structs.h
include/net/sctp/user.h
include/rdma/ib_verbs.h
include/video/sstfb.h
ipc/msgutil.c
kernel/Makefile
kernel/cpuset.c
kernel/fork.c
kernel/lockdep.c
kernel/module.c
kernel/nsproxy.c
kernel/power/Kconfig
kernel/power/process.c
kernel/relay.c
kernel/sched.c
kernel/signal.c
kernel/sysctl.c
kernel/timer.c
kernel/unwind.c [deleted file]
kernel/workqueue.c
lib/Kconfig
lib/Kconfig.debug
lib/Makefile
lib/fault-inject.c
lib/ioremap.c
lib/reciprocal_div.c [new file with mode: 0644]
mm/hugetlb.c
mm/memory.c
mm/mincore.c
mm/oom_kill.c
mm/page_alloc.c
mm/slab.c
mm/slob.c
mm/vmscan.c
net/bluetooth/hci_sock.c
net/bridge/br_netfilter.c
net/dccp/ccids/ccid3.c
net/ipv4/netfilter/Kconfig
net/ipv4/netfilter/arp_tables.c
net/ipv4/netfilter/ip_tables.c
net/ipv4/netfilter/ipt_CLUSTERIP.c
net/ipv4/tcp.c
net/ipv6/ipv6_sockglue.c
net/ipv6/netfilter/ip6_tables.c
net/ipv6/route.c
net/netfilter/Kconfig
net/netfilter/xt_CONNMARK.c
net/netfilter/xt_CONNSECMARK.c
net/netfilter/xt_connbytes.c
net/netfilter/xt_connmark.c
net/netfilter/xt_conntrack.c
net/netfilter/xt_helper.c
net/netfilter/xt_physdev.c
net/netfilter/xt_state.c
net/sctp/associola.c
net/sctp/ipv6.c
net/sctp/protocol.c
net/sctp/socket.c
net/sctp/ulpevent.c
net/sunrpc/auth_gss/svcauth_gss.c
net/sunrpc/cache.c
net/sunrpc/svc.c
net/sunrpc/svcauth_unix.c
net/tipc/config.c
scripts/kconfig/conf.c
scripts/kconfig/confdata.c
scripts/kconfig/gconf.c
scripts/kconfig/gconf.glade
scripts/kconfig/lkc.h
scripts/kconfig/lkc_proto.h
scripts/kconfig/mconf.c
scripts/kconfig/qconf.cc
scripts/kconfig/qconf.h
scripts/kconfig/symbol.c
scripts/kconfig/zconf.tab.c_shipped
scripts/kconfig/zconf.y
scripts/mod/modpost.c
sound/core/oss/mixer_oss.c
sound/oss/ad1848.c
sound/oss/cs4232.c
sound/oss/dmasound/tas3001c.c
sound/oss/dmasound/tas3004.c
sound/oss/emu10k1/audio.c
sound/oss/emu10k1/cardmi.c
sound/oss/emu10k1/cardmo.c
sound/oss/emu10k1/midi.c
sound/oss/emu10k1/mixer.c
sound/oss/hal2.c
sound/oss/mpu401.c
sound/oss/opl3.c
sound/oss/sb_common.c
sound/oss/sb_midi.c
sound/oss/sb_mixer.c
sound/oss/v_midi.c
sound/oss/waveartist.c

index 0f4a4b6321e48af434af5a168baaa824e35d03d7..4215f69ce7e6368331d59d5d17d17059cb4e97ca 100644 (file)
@@ -303,10 +303,10 @@ desc->status |= running;
 do {
        if (desc->status &amp; masked)
                desc->chip->enable();
-       desc-status &amp;= ~pending;
+       desc->status &amp;= ~pending;
        handle_IRQ_event(desc->action);
 } while (status &amp; pending);
-desc-status &amp;= ~running;
+desc->status &amp;= ~running;
 desc->chip->end();
                </programlisting>
                </para>
index 53245c429f7d9f13999803ea4ced0813437fceb5..73e794f0ff0924e2432e305cb5520345f776160b 100644 (file)
@@ -179,10 +179,21 @@ Here are the routines, one by one:
        lines associated with 'mm'.
 
        This interface is used to handle whole address space
-       page table operations such as what happens during
-       fork, exit, and exec.
+       page table operations such as what happens during exit and exec.
+
+2) void flush_cache_dup_mm(struct mm_struct *mm)
+
+       This interface flushes an entire user address space from
+       the caches.  That is, after running, there will be no cache
+       lines associated with 'mm'.
+
+       This interface is used to handle whole address space
+       page table operations such as what happens during fork.
+
+       This option is separate from flush_cache_mm to allow some
+       optimizations for VIPT caches.
 
-2) void flush_cache_range(struct vm_area_struct *vma,
+3) void flush_cache_range(struct vm_area_struct *vma,
                          unsigned long start, unsigned long end)
 
        Here we are flushing a specific range of (user) virtual
@@ -199,7 +210,7 @@ Here are the routines, one by one:
        call flush_cache_page (see below) for each entry which may be
        modified.
 
-3) void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn)
+4) void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn)
 
        This time we need to remove a PAGE_SIZE sized range
        from the cache.  The 'vma' is the backing structure used by
@@ -220,7 +231,7 @@ Here are the routines, one by one:
 
        This is used primarily during fault processing.
 
-4) void flush_cache_kmaps(void)
+5) void flush_cache_kmaps(void)
 
        This routine need only be implemented if the platform utilizes
        highmem.  It will be called right before all of the kmaps
@@ -232,7 +243,7 @@ Here are the routines, one by one:
 
        This routing should be implemented in asm/highmem.h
 
-5) void flush_cache_vmap(unsigned long start, unsigned long end)
+6) void flush_cache_vmap(unsigned long start, unsigned long end)
    void flush_cache_vunmap(unsigned long start, unsigned long end)
 
        Here in these two interfaces we are flushing a specific range
index 64ce44da59366bb044c1a30850d94a1c2eab6d3d..30f3c8c9c12aeb60f66c925949be8648a0bafd91 100644 (file)
@@ -151,15 +151,6 @@ Who:       Thomas Gleixner <tglx@linutronix.de>
 
 ---------------------------
 
-What:  I2C interface of the it87 driver
-When:  January 2007
-Why:   The ISA interface is faster and should be always available. The I2C
-       probing is also known to cause trouble in at least one case (see
-       bug #5889.)
-Who:   Jean Delvare <khali@linux-fr.org>
-
----------------------------
-
 What:  Unused EXPORT_SYMBOL/EXPORT_SYMBOL_GPL exports
        (temporary transition config option provided until then)
        The transition config option will also be removed at the same time.
@@ -216,22 +207,6 @@ Who:       Thomas Gleixner <tglx@linutronix.de>
 
 ---------------------------
 
-What:  Bridge netfilter deferred IPv4/IPv6 output hook calling
-When:  January 2007
-Why:   The deferred output hooks are a layering violation causing unusual
-       and broken behaviour on bridge devices. Examples of things they
-       break include QoS classifation using the MARK or CLASSIFY targets,
-       the IPsec policy match and connection tracking with VLANs on a
-       bridge. Their only use is to enable bridge output port filtering
-       within iptables with the physdev match, which can also be done by
-       combining iptables and ebtables using netfilter marks. Until it
-       will get removed the hook deferral is disabled by default and is
-       only enabled when needed.
-
-Who:   Patrick McHardy <kaber@trash.net>
-
----------------------------
-
 What:  PHYSDEVPATH, PHYSDEVBUS, PHYSDEVDRIVER in the uevent environment
 When:  October 2008
 Why:   The stacking of class devices makes these values misleading and
index d2841e0bcf0258cb9b06b0fec372bae14b0ff3ba..ea825e178e797b3b8af53d8d6d5fa2c1f1974a0d 100644 (file)
@@ -54,4 +54,4 @@ The first 4 bytes should be 0x1badface.
 If you have any patches, questions or suggestions regarding this BFS
 implementation please contact the author:
 
-Tigran A. Aivazian <tigran@veritas.com>
+Tigran Aivazian <tigran@aivazian.fsnet.co.uk>
index 2ca69df669c3a615601aec996fb8f977aa485180..bfd0f154959cce0e3398e899e7b5a0619f2abcce 100644 (file)
@@ -6,6 +6,10 @@ Supported chips:
     Prefix: 'f71805f'
     Addresses scanned: none, address read from Super I/O config space
     Datasheet: Provided by Fintek on request
+  * Fintek F71872F/FG
+    Prefix: 'f71872f'
+    Addresses scanned: none, address read from Super I/O config space
+    Datasheet: Provided by Fintek on request
 
 Author: Jean Delvare <khali@linux-fr.org>
 
@@ -13,8 +17,8 @@ Thanks to Denis Kieft from Barracuda Networks for the donation of a
 test system (custom Jetway K8M8MS motherboard, with CPU and RAM) and
 for providing initial documentation.
 
-Thanks to Kris Chen from Fintek for answering technical questions and
-providing additional documentation.
+Thanks to Kris Chen and Aaron Huang from Fintek for answering technical
+questions and providing additional documentation.
 
 Thanks to Chris Lin from Jetway for providing wiring schematics and
 answering technical questions.
@@ -28,8 +32,11 @@ capabilities. It can monitor up to 9 voltages (counting its own power
 source), 3 fans and 3 temperature sensors.
 
 This chip also has fan controlling features, using either DC or PWM, in
-three different modes (one manual, two automatic). The driver doesn't
-support these features yet.
+three different modes (one manual, two automatic).
+
+The Fintek F71872F/FG Super I/O chip is almost the same, with two
+additional internal voltages monitored (VSB and battery). It also features
+6 VID inputs. The VID inputs are not yet supported by this driver.
 
 The driver assumes that no more than one chip is present, which seems
 reasonable.
@@ -42,7 +49,8 @@ Voltages are sampled by an 8-bit ADC with a LSB of 8 mV. The supported
 range is thus from 0 to 2.040 V. Voltage values outside of this range
 need external resistors. An exception is in0, which is used to monitor
 the chip's own power source (+3.3V), and is divided internally by a
-factor 2.
+factor 2. For the F71872F/FG, in9 (VSB) and in10 (battery) are also
+divided internally by a factor 2.
 
 The two LSB of the voltage limit registers are not used (always 0), so
 you can only set the limits in steps of 32 mV (before scaling).
@@ -61,9 +69,12 @@ in5     VIN5    +12V        200K     20K       11.00    1.05 V
 in6     VIN6    VCC1.5V      10K       -        1.00    1.50 V
 in7     VIN7    VCORE        10K       -        1.00   ~1.40 V (1)
 in8     VIN8    VSB5V       200K     47K        1.00    0.95 V
+in10    VSB     VSB3.3V     int.    int.        2.00    1.65 V (3)
+in9     VBAT    VBATTERY    int.    int.        2.00    1.50 V (3)
 
 (1) Depends on your hardware setup.
 (2) Obviously not correct, swapping R1 and R2 would make more sense.
+(3) F71872F/FG only.
 
 These values can be used as hints at best, as motherboard manufacturers
 are free to use a completely different setup. As a matter of fact, the
@@ -103,3 +114,38 @@ sensor. Each channel can be used for connecting either a thermal diode
 or a thermistor. The driver reports the currently selected mode, but
 doesn't allow changing it. In theory, the BIOS should have configured
 everything properly.
+
+
+Fan Control
+-----------
+
+Both PWM (pulse-width modulation) and DC fan speed control methods are
+supported. The right one to use depends on external circuitry on the
+motherboard, so the driver assumes that the BIOS set the method
+properly. The driver will report the method, but won't let you change
+it.
+
+When the PWM method is used, you can select the operating frequency,
+from 187.5 kHz (default) to 31 Hz. The best frequency depends on the
+fan model. As a rule of thumb, lower frequencies seem to give better
+control, but may generate annoying high-pitch noise. Fintek recommends
+not going below 1 kHz, as the fan tachometers get confused by lower
+frequencies as well.
+
+When the DC method is used, Fintek recommends not going below 5 V, which
+corresponds to a pwm value of 106 for the driver. The driver doesn't
+enforce this limit though.
+
+Three different fan control modes are supported:
+
+* Manual mode
+  You ask for a specific PWM duty cycle or DC voltage.
+
+* Fan speed mode
+  You ask for a specific fan speed. This mode assumes that pwm1
+  corresponds to fan1, pwm2 to fan2 and pwm3 to fan3.
+
+* Temperature mode
+  You define 3 temperature/fan speed trip points, and the fan speed is
+  adjusted depending on the measured temperature, using interpolation.
+  This mode is not yet supported by the driver.
index e783fd62e3085a5abb7a965d83fa3b462d990e8d..74a80992d237c49c13e858313a5c004d351d7e3f 100644 (file)
@@ -9,8 +9,7 @@ Supported chips:
                http://www.ite.com.tw/
   * IT8712F
     Prefix: 'it8712'
-    Addresses scanned: I2C 0x2d
-                       from Super I/O config space (8 I/O ports)
+    Addresses scanned: from Super I/O config space (8 I/O ports)
     Datasheet: Publicly available at the ITE website
                http://www.ite.com.tw/
   * IT8716F
@@ -53,6 +52,18 @@ Module Parameters
   misconfigured by BIOS - PWM values would be inverted. This option tries
   to fix this. Please contact your BIOS manufacturer and ask him for fix.
 
+
+Hardware Interfaces
+-------------------
+
+All the chips suported by this driver are LPC Super-I/O chips, accessed
+through the LPC bus (ISA-like I/O ports). The IT8712F additionally has an
+SMBus interface to the hardware monitoring functions. This driver no
+longer supports this interface though, as it is slower and less reliable
+than the ISA access, and was only available on a small number of
+motherboard models.
+
+
 Description
 -----------
 
index 30d123b8d92022180b4f0cd2ae32cffc47ba4f6e..0005c71661467f5592592ca3b464a9a6c63b4c93 100644 (file)
@@ -8,7 +8,7 @@ Supported chips:
     Datasheet: http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/32559.pdf
 
 Author: Rudolf Marek
-Contact: Rudolf Marek <r.marek@sh.cvut.cz>
+Contact: Rudolf Marek <r.marek@assembler.cz>
 
 Description
 -----------
diff --git a/Documentation/hwmon/pc87427 b/Documentation/hwmon/pc87427
new file mode 100644 (file)
index 0000000..9a0708f
--- /dev/null
@@ -0,0 +1,38 @@
+Kernel driver pc87427
+=====================
+
+Supported chips:
+  * National Semiconductor PC87427
+    Prefix: 'pc87427'
+    Addresses scanned: none, address read from Super I/O config space
+    Datasheet: http://www.winbond.com.tw/E-WINBONDHTM/partner/apc_007.html
+
+Author: Jean Delvare <khali@linux-fr.org>
+
+Thanks to Amir Habibi at Candelis for setting up a test system, and to
+Michael Kress for testing several iterations of this driver.
+
+
+Description
+-----------
+
+The National Semiconductor Super I/O chip includes complete hardware
+monitoring capabilities. It can monitor up to 18 voltages, 8 fans and
+6 temperature sensors. Only the fans are supported at the moment.
+
+This chip also has fan controlling features, which are not yet supported
+by this driver either.
+
+The driver assumes that no more than one chip is present, which seems
+reasonable.
+
+
+Fan Monitoring
+--------------
+
+Fan rotation speeds are reported as 14-bit values from a gated clock
+signal. Speeds down to 83 RPM can be measured.
+
+An alarm is triggered if the rotation speed drops below a programmable
+limit. Another alarm is triggered if the speed is too low to to be measured
+(including stalled or missing fan).
index d1d390aaf6205c8ac30d9ddb7c34813fca306d15..efef3b962cd3eb86f586e811b77ad7b6eadee648 100644 (file)
@@ -208,12 +208,14 @@ temp[1-*]_auto_point[1-*]_temp_hyst
 ****************
 
 temp[1-*]_type Sensor type selection.
-               Integers 1 to 4 or thermistor Beta value (typically 3435)
+               Integers 1 to 6 or thermistor Beta value (typically 3435)
                RW
                1: PII/Celeron Diode
                2: 3904 transistor
                3: thermal diode
                4: thermistor (default/unknown Beta)
+               5: AMD AMDSI
+               6: Intel PECI
                Not all types are supported by all chips
 
 temp[1-*]_max  Temperature max value.
index caa610a297e8a349f586f15a4b1279903179e47d..8a15a7408753bc6dda49353966b699992279e4f2 100644 (file)
@@ -10,7 +10,7 @@ Supported chips:
 Authors:
         Jean Delvare <khali@linux-fr.org>
         Yuan Mu (Winbond)
-        Rudolf Marek <r.marek@sh.cvut.cz>
+        Rudolf Marek <r.marek@assembler.cz>
 
 Description
 -----------
index 19b2ed739fa1325e09ab91cb629ce69b3331a2af..db9881df88a54cfe5c8a87965ddca58bb121eb28 100644 (file)
@@ -18,7 +18,7 @@ Credits:
     and Mark Studebaker <mdsxyz123@yahoo.com>
   w83792d.c:
     Chunhao Huang <DZShen@Winbond.com.tw>,
-    Rudolf Marek <r.marek@sh.cvut.cz>
+    Rudolf Marek <r.marek@assembler.cz>
 
 Additional contributors:
     Sven Anders <anders@anduras.de>
diff --git a/Documentation/hwmon/w83793 b/Documentation/hwmon/w83793
new file mode 100644 (file)
index 0000000..45e5408
--- /dev/null
@@ -0,0 +1,110 @@
+Kernel driver w83793
+====================
+
+Supported chips:
+  * Winbond W83793G/W83793R
+    Prefix: 'w83793'
+    Addresses scanned: I2C 0x2c - 0x2f
+    Datasheet: Still not published
+
+Authors:
+    Yuan Mu (Winbond Electronics)
+    Rudolf Marek <r.marek@assembler.cz>
+
+
+Module parameters
+-----------------
+
+* reset int
+  (default 0)
+  This parameter is not recommended, it will lose motherboard specific
+  settings. Use 'reset=1' to reset the chip when loading this module.
+
+* force_subclients=bus,caddr,saddr1,saddr2
+  This is used to force the i2c addresses for subclients of
+  a certain chip. Typical usage is `force_subclients=0,0x2f,0x4a,0x4b'
+  to force the subclients of chip 0x2f on bus 0 to i2c addresses
+  0x4a and 0x4b.
+
+
+Description
+-----------
+
+This driver implements support for Winbond W83793G/W83793R chips.
+
+* Exported features
+  This driver exports 10 voltage sensors, up to 12 fan tachometer inputs,
+  6 remote temperatures, up to 8 sets of PWM fan controls, SmartFan
+  (automatic fan speed control) on all temperature/PWM combinations, 2
+  sets of 6-pin CPU VID input.
+
+* Sensor resolutions
+  If your motherboard maker used the reference design, the resolution of
+  voltage0-2 is 2mV, resolution of voltage3/4/5 is 16mV, 8mV for voltage6,
+  24mV for voltage7/8. Temp1-4 have a 0.25 degree Celsius resolution,
+  temp5-6 have a 1 degree Celsiis resolution.
+
+* Temperature sensor types
+  Temp1-4 have 3 possible types. It can be read from (and written to)
+  temp[1-4]_type.
+  - If the value of 0, the related temperature channel stops
+    monitoring.
+  - If the value is 3, it starts monitoring using a remote termal diode
+    (default).
+  - If the value is 5, it starts monitoring using the temperature sensor
+    in AMD CPU and get result by AMDSI.
+  - If the value is 6, it starts monitoring using the temperature sensor
+    in Intel CPU and get result by PECI.
+  Temp5-6 can be connected to external thermistors (value of
+  temp[5-6]_type is 4). They can also be disabled (value is 0).
+
+* Alarm mechanism
+  For voltage sensors, an alarm triggers if the measured value is below
+  the low voltage limit or over the high voltage limit.
+  For temperature sensors, an alarm triggers if the measured value goes
+  above the high temperature limit, and wears off only after the measured
+  value drops below the hysteresis value.
+  For fan sensors, an alarm triggers if the measured value is below the
+  low speed limit.
+
+* SmartFan/PWM control
+  If you want to set a pwm fan to manual mode, you just need to make sure it
+  is not controlled by any temp channel, for example, you want to set fan1
+  to manual mode, you need to check the value of temp[1-6]_fan_map, make
+  sure bit 0 is cleared in the 6 values. And then set the pwm1 value to
+  control the fan.
+
+  Each temperature channel can control all the 8 PWM outputs (by setting the
+  corresponding bit in tempX_fan_map), you can set the temperature channel
+  mode using temp[1-6]_pwm_enable, 2 is Thermal Cruise mode and 3
+  is the SmartFanII mode. Temperature channels will try to speed up or
+  slow down all controlled fans, this means one fan can receive different
+  PWM value requests from different temperature channels, but the chip
+  will always pick the safest (max) PWM value for each fan.
+
+  In Thermal Cruise mode, the chip attempts to keep the temperature at a
+  predefined value, within a tolerance margin. So if tempX_input >
+  thermal_cruiseX + toleranceX, the chip will increase the PWM value,
+  if tempX_input < thermal_cruiseX - toleranceX, the chip will decrease
+  the PWM value. If the temperature is within the tolerance range, the PWM
+  value is left unchanged.
+
+  SmartFanII works differently, you have to define up to 7 PWM, temperature
+  trip points, defining a PWM/temperature curve which the chip will follow.
+  While not fundamentally different from the Thermal Cruise mode, the
+  implementation is quite different, giving you a finer-grained control.
+
+* Chassis
+  If the case open alarm triggers, it will stay in this state unless cleared
+  by any write to the sysfs file "chassis".
+
+* VID and VRM
+  The VRM version is detected automatically, don't modify the it unless you
+  *do* know the cpu VRM version and it's not properly detected.
+
+
+Notes
+-----
+
+  Only Fan1-5 and PWM1-3 are guaranteed to always exist, other fan inputs and
+  PWM outputs may or may not exist depending on the chip pin configuration.
index d8323b8893c3709170d3e79c09a975f6bac42864..ef69c75780bf4e5ca4650411033f8711b0771fd2 100644 (file)
@@ -1656,6 +1656,12 @@ and is between 256 and 4096 characters. It is defined in the file
        sym53c416=      [HW,SCSI]
                        See header of drivers/scsi/sym53c416.c.
 
+       sysrq_always_enabled
+                       [KNL]
+                       Ignore sysrq setting - this boot parameter will
+                       neutralize any effect of /proc/sys/kernel/sysrq.
+                       Useful for debugging.
+
        t128=           [HW,SCSI]
                        See header of drivers/scsi/t128.c.
 
index 8a0bfeca55c9d0a1e330dfedfce0b9a725fab6a9..dea5b2a6de0a8becde3fdba5e0c48f7cfcd0917c 100644 (file)
@@ -277,7 +277,7 @@ S:  Maintained
 
 ALI1563 I2C DRIVER
 P:     Rudolf Marek
-M:     r.marek@sh.cvut.cz
+M:     r.marek@assembler.cz
 L:     i2c@lm-sensors.org
 S:     Maintained
 
@@ -296,6 +296,13 @@ L: info-linux@geode.amd.com
 W:     http://www.amd.com/us-en/ConnectivitySolutions/TechnicalResources/0,,50_2334_2452_11363,00.html
 S:     Supported
 
+AMS (Apple Motion Sensor) DRIVER
+P:     Stelian Pop
+M:     stelian@popies.net
+P:     Michael Hanselmann
+M:     linux-kernel@hansmi.ch
+S:     Supported
+
 AMSO1100 RNIC DRIVER
 P:     Tom Tucker
 M:     tom@opengridcomputing.com
@@ -1747,6 +1754,13 @@ W:       http://nfs.sourceforge.net/
 W:     http://www.cse.unsw.edu.au/~neilb/patches/linux-devel/
 S:     Maintained
 
+KERNEL VIRTUAL MACHINE (KVM)
+P:     Avi Kivity
+M:     avi@qumranet.com
+L:     kvm-devel@lists.sourceforge.net
+W:     kvm.sourceforge.net
+S:     Supported
+
 KEXEC
 P:     Eric Biederman
 M:     ebiederm@xmission.com
@@ -3429,6 +3443,12 @@ M:       bezaur@gmail.com
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
 
+W83793 HARDWARE MONITORING DRIVER
+P:     Rudolf Marek
+M:     r.marek@assembler.cz
+L:     lm-sensors@lm-sensors.org
+S:     Maintained
+
 W83L51xD SD/MMC CARD INTERFACE DRIVER
 P:     Pierre Ossman
 M:     drzeus-wbsd@drzeus.cx
index 4eabaa8afbfff4b4d82abe95258bb7fdad27a243..4a47203879369d76a655ae30caf5eceaf4daed07 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 6
-SUBLEVEL = 19
-EXTRAVERSION =
+SUBLEVEL = 20
+EXTRAVERSION =-rc1
 NAME=Avast! A bilge rat!
 
 # *DOCUMENTATION*
@@ -496,11 +496,6 @@ else
 CFLAGS         += -fomit-frame-pointer
 endif
 
-ifdef CONFIG_UNWIND_INFO
-CFLAGS         += -fasynchronous-unwind-tables
-LDFLAGS_vmlinux        += --eh-frame-hdr
-endif
-
 ifdef CONFIG_DEBUG_INFO
 CFLAGS         += -g
 endif
@@ -1390,12 +1385,18 @@ endif #ifeq ($(mixed-targets),1)
 
 PHONY += checkstack kernelrelease kernelversion
 
-# Use $(SUBARCH) here instead of $(ARCH) so that this works for UML.
-# In the UML case, $(SUBARCH) is the name of the underlying
-# architecture, while for all other arches, it is the same as $(ARCH).
+# UML needs a little special treatment here.  It wants to use the host
+# toolchain, so needs $(SUBARCH) passed to checkstack.pl.  Everyone
+# else wants $(ARCH), including people doing cross-builds, which means
+# that $(SUBARCH) doesn't work here.
+ifeq ($(ARCH), um)
+CHECKSTACK_ARCH := $(SUBARCH)
+else
+CHECKSTACK_ARCH := $(ARCH)
+endif
 checkstack:
        $(OBJDUMP) -d vmlinux $$(find . -name '*.ko') | \
-       $(PERL) $(src)/scripts/checkstack.pl $(SUBARCH)
+       $(PERL) $(src)/scripts/checkstack.pl $(CHECKSTACK_ARCH)
 
 kernelrelease:
        $(if $(wildcard include/config/kernel.release), $(Q)echo $(KERNELRELEASE), \
index aa1d400d721a662f3dbae57a3cb9eea8bc6b6522..6783c2e5512de6e75bed91d55a45ff0c14ee0cf5 100644 (file)
@@ -740,7 +740,7 @@ config XIP_PHYS_ADDR
 
 endmenu
 
-if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP)
+if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_IMX )
 
 menu "CPU Frequency scaling"
 
@@ -767,6 +767,15 @@ config CPU_FREQ_INTEGRATOR
 
          If in doubt, say Y.
 
+config CPU_FREQ_IMX
+       tristate "CPUfreq driver for i.MX CPUs"
+       depends on ARCH_IMX && CPU_FREQ
+       default n
+       help
+         This enables the CPUfreq driver for i.MX CPUs.
+
+         If in doubt, say N.
+
 endmenu
 
 endif
@@ -945,6 +954,8 @@ source "drivers/video/Kconfig"
 
 source "sound/Kconfig"
 
+source "drivers/hid/Kconfig"
+
 source "drivers/usb/Kconfig"
 
 source "drivers/mmc/Kconfig"
index a11fb9a40c04f0c16e9d46e1e2d17cfbe934b91c..2c37b70b17ab45087ff7c43d30aea6006d3f4e81 100644 (file)
@@ -423,7 +423,7 @@ static int apm_open(struct inode * inode, struct file * filp)
 {
        struct apm_user *as;
 
-       as = (struct apm_user *)kzalloc(sizeof(*as), GFP_KERNEL);
+       as = kzalloc(sizeof(*as), GFP_KERNEL);
        if (as) {
                /*
                 * XXX - this is a tiny bit broken, when we consider BSD
index 3173924a9b6022f6e4b30e00f414e7e5e9e2dbde..e8f74363328ce6a40fb43084677cda482436284a 100644 (file)
                CALL(sys_mbind)
 /* 320 */      CALL(sys_get_mempolicy)
                CALL(sys_set_mempolicy)
+               CALL(sys_openat)
+               CALL(sys_mkdirat)
+               CALL(sys_mknodat)
+/* 325 */      CALL(sys_fchownat)
+               CALL(sys_futimesat)
+               CALL(sys_fstatat64)
+               CALL(sys_unlinkat)
+               CALL(sys_renameat)
+/* 330 */      CALL(sys_linkat)
+               CALL(sys_symlinkat)
+               CALL(sys_readlinkat)
+               CALL(sys_fchmodat)
+               CALL(sys_faccessat)
 #ifndef syscalls_counted
 .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
 #define syscalls_counted
index a786f769035d1a8c46197dae1124b40345dddb32..71257e3d513f4604ed1d01c3db5eb8fb565bcf47 100644 (file)
@@ -353,7 +353,7 @@ int ecard_readchunk(struct in_chunk_dir *cd, ecard_t *ec, int id, int num)
                }
                if (c_id(&excd) == 0x80) { /* loader */
                        if (!ec->loader) {
-                               ec->loader = (loader_t)kmalloc(c_len(&excd),
+                               ec->loader = kmalloc(c_len(&excd),
                                                               GFP_KERNEL);
                                if (ec->loader)
                                        ecard_readbytes(ec->loader, ec,
index bda0748ffb004b31bb66e5a234091c6fe01fd9fd..d994561816a1a15cdef675914fb1d675d23c2a5b 100644 (file)
 #include <asm/thread_info.h>
 #include <asm/system.h>
 
-#define KERNEL_RAM_ADDR        (PAGE_OFFSET + TEXT_OFFSET)
+#define KERNEL_RAM_VADDR       (PAGE_OFFSET + TEXT_OFFSET)
+#define KERNEL_RAM_PADDR       (PHYS_OFFSET + TEXT_OFFSET)
 
 /*
  * swapper_pg_dir is the virtual address of the initial page table.
- * We place the page tables 16K below KERNEL_RAM_ADDR.  Therefore, we must
- * make sure that KERNEL_RAM_ADDR is correctly set.  Currently, we expect
+ * We place the page tables 16K below KERNEL_RAM_VADDR.  Therefore, we must
+ * make sure that KERNEL_RAM_VADDR is correctly set.  Currently, we expect
  * the least significant 16 bits to be 0x8000, but we could probably
- * relax this restriction to KERNEL_RAM_ADDR >= PAGE_OFFSET + 0x4000.
+ * relax this restriction to KERNEL_RAM_VADDR >= PAGE_OFFSET + 0x4000.
  */
-#if (KERNEL_RAM_ADDR & 0xffff) != 0x8000
-#error KERNEL_RAM_ADDR must start at 0xXXXX8000
+#if (KERNEL_RAM_VADDR & 0xffff) != 0x8000
+#error KERNEL_RAM_VADDR must start at 0xXXXX8000
 #endif
 
        .globl  swapper_pg_dir
-       .equ    swapper_pg_dir, KERNEL_RAM_ADDR - 0x4000
+       .equ    swapper_pg_dir, KERNEL_RAM_VADDR - 0x4000
 
        .macro  pgtbl, rd
-       ldr     \rd, =(__virt_to_phys(KERNEL_RAM_ADDR - 0x4000))
+       ldr     \rd, =(KERNEL_RAM_PADDR - 0x4000)
        .endm
 
 #ifdef CONFIG_XIP_KERNEL
 #define TEXTADDR  XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR)
 #else
-#define TEXTADDR  KERNEL_RAM_ADDR
+#define TEXTADDR  KERNEL_RAM_VADDR
 #endif
 
 /*
index 238dd9b6db847474d536af3555a5ea9760fba806..cf2bd42428035079943592d45a65374f3081dd57 100644 (file)
@@ -354,9 +354,6 @@ static void __init setup_processor(void)
 #ifndef CONFIG_ARM_THUMB
        elf_hwcap &= ~HWCAP_THUMB;
 #endif
-#ifndef CONFIG_VFP
-       elf_hwcap &= ~HWCAP_VFP;
-#endif
 
        cpu_proc_init();
 }
index a6c596dc45166024031a1de64196693130aab06c..f42d3a40ec3cbd08a4c1757152b2dbe6bc4a7882 100644 (file)
@@ -18,6 +18,7 @@
 #include <asm/arch/gpio.h>
 #include <asm/arch/at91sam9260.h>
 #include <asm/arch/at91sam926x_mc.h>
+#include <asm/arch/at91sam9260_matrix.h>
 
 #include "generic.h"
 
index ffca9bdec37b22617a7e9cd55052c62abcbb438b..da5d58ac870b59446be5015210d15df512e16c4e 100644 (file)
@@ -119,6 +119,7 @@ static struct spi_board_info ek_spi_devices[] = {
  * MACB Ethernet device
  */
 static struct __initdata eth_platform_data ek_macb_data = {
+       .phy_irq_pin    = AT91_PIN_PA7,
        .is_rmii        = 1,
 };
 
index 0b27d79f2efdaf3d403aa3ac412157646710bdb9..02272aa36e90c69e433b465ab799f08574478a5d 100644 (file)
@@ -9,6 +9,8 @@
 
 obj-y                  += irq.o time.o dma.o generic.o
 
+obj-$(CONFIG_CPU_FREQ_IMX)     += cpufreq.o
+
 # Specific board support
 obj-$(CONFIG_ARCH_MX1ADS) += mx1ads.o
 
diff --git a/arch/arm/mach-imx/cpufreq.c b/arch/arm/mach-imx/cpufreq.c
new file mode 100644 (file)
index 0000000..ac5f998
--- /dev/null
@@ -0,0 +1,287 @@
+/*
+ * cpu.c: clock scaling for the iMX
+ *
+ * Copyright (C) 2000 2001, The Delft University of Technology
+ * Copyright (c) 2004 Sascha Hauer <sascha@saschahauer.de>
+ * Copyright (C) 2006 Inky Lung <ilung@cwlinux.com>
+ * Copyright (C) 2006 Pavel Pisa, PiKRON <ppisa@pikron.com>
+ *
+ * Based on SA1100 version written by:
+ * - Johan Pouwelse (J.A.Pouwelse@its.tudelft.nl): initial version
+ * - Erik Mouw (J.A.K.Mouw@its.tudelft.nl):
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+/*#define DEBUG*/
+
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <linux/init.h>
+#include <linux/cpufreq.h>
+#include <asm/system.h>
+
+#include <asm/hardware.h>
+
+#include "generic.h"
+
+#ifndef __val2mfld
+#define __val2mfld(mask,val) (((mask)&~((mask)<<1))*(val)&(mask))
+#endif
+#ifndef __mfld2val
+#define __mfld2val(mask,val) (((val)&(mask))/((mask)&~((mask)<<1)))
+#endif
+
+#define CR_920T_CLOCK_MODE     0xC0000000
+#define CR_920T_FASTBUS_MODE   0x00000000
+#define CR_920T_ASYNC_MODE     0xC0000000
+
+static u32 mpctl0_at_boot;
+
+static void imx_set_async_mode(void)
+{
+       adjust_cr(CR_920T_CLOCK_MODE, CR_920T_ASYNC_MODE);
+}
+
+static void imx_set_fastbus_mode(void)
+{
+       adjust_cr(CR_920T_CLOCK_MODE, CR_920T_FASTBUS_MODE);
+}
+
+static void imx_set_mpctl0(u32 mpctl0)
+{
+       unsigned long flags;
+
+       if (mpctl0 == 0) {
+               local_irq_save(flags);
+               CSCR &= ~CSCR_MPEN;
+               local_irq_restore(flags);
+               return;
+       }
+
+       local_irq_save(flags);
+       MPCTL0 = mpctl0;
+       CSCR |= CSCR_MPEN;
+       local_irq_restore(flags);
+}
+
+/**
+ * imx_compute_mpctl - compute new PLL parameters
+ * @new_mpctl: pointer to location assigned by new PLL control register value
+ * @cur_mpctl: current PLL control register parameters
+ * @freq:      required frequency in Hz
+ * @relation:  is one of %CPUFREQ_RELATION_L (supremum)
+ *             and %CPUFREQ_RELATION_H (infimum)
+ */
+long imx_compute_mpctl(u32 *new_mpctl, u32 cur_mpctl, unsigned long freq, int relation)
+{
+        u32 f_ref = (CSCR & CSCR_SYSTEM_SEL) ? 16000000 : (CLK32 * 512);
+        u32 mfi;
+        u32 mfn;
+        u32 mfd;
+        u32 pd;
+       unsigned long long ll;
+       long l;
+       long quot;
+
+       /* Fdppl=2*Fref*(MFI+MFN/(MFD+1))/(PD+1) */
+       /*  PD=<0,15>, MFD=<1,1023>, MFI=<5,15> MFN=<0,1022> */
+
+       if (cur_mpctl) {
+               mfd = ((cur_mpctl >> 16) & 0x3ff) + 1;
+               pd =  ((cur_mpctl >> 26) & 0xf) + 1;
+       } else {
+               pd=2; mfd=313;
+       }
+
+       /* pd=2; mfd=313; mfi=8; mfn=183; */
+       /* (MFI+MFN/(MFD)) = Fdppl / (2*Fref) * (PD); */
+
+       quot = (f_ref + (1 << 9)) >> 10;
+       l = (freq * pd + quot) / (2 * quot);
+       mfi = l >> 10;
+       mfn = ((l & ((1 << 10) - 1)) * mfd + (1 << 9)) >> 10;
+
+       mfd -= 1;
+       pd -= 1;
+
+       *new_mpctl = ((mfi & 0xf) << 10) | (mfn & 0x3ff) | ((mfd & 0x3ff) << 16)
+               | ((pd & 0xf) << 26);
+
+       ll = 2 * (unsigned long long)f_ref * ( (mfi<<16) + (mfn<<16) / (mfd+1) );
+       quot = (pd+1) * (1<<16);
+       ll += quot / 2;
+       do_div(ll, quot);
+       freq = ll;
+
+       pr_debug(KERN_DEBUG "imx: new PLL parameters pd=%d mfd=%d mfi=%d mfn=%d, freq=%ld\n",
+               pd, mfd, mfi, mfn, freq);
+
+       return freq;
+}
+
+
+static int imx_verify_speed(struct cpufreq_policy *policy)
+{
+       if (policy->cpu != 0)
+               return -EINVAL;
+
+       cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, policy->cpuinfo.max_freq);
+
+       return 0;
+}
+
+static unsigned int imx_get_speed(unsigned int cpu)
+{
+       unsigned int freq;
+       unsigned int cr;
+       unsigned int cscr;
+       unsigned int bclk_div;
+
+       if (cpu)
+               return 0;
+
+       cscr = CSCR;
+       bclk_div = __mfld2val(CSCR_BCLK_DIV, cscr) + 1;
+       cr = get_cr();
+
+       if((cr & CR_920T_CLOCK_MODE) == CR_920T_FASTBUS_MODE) {
+               freq = imx_get_system_clk();
+               freq = (freq + bclk_div/2) / bclk_div;
+       } else {
+               freq = imx_get_mcu_clk();
+               if (cscr & CSCR_MPU_PRESC)
+                       freq /= 2;
+       }
+
+       freq = (freq + 500) / 1000;
+
+       return freq;
+}
+
+static int imx_set_target(struct cpufreq_policy *policy,
+                         unsigned int target_freq,
+                         unsigned int relation)
+{
+       struct cpufreq_freqs freqs;
+       u32 mpctl0 = 0;
+       u32 cscr;
+       unsigned long flags;
+       long freq;
+       long sysclk;
+       unsigned int bclk_div = 1;
+
+       freq = target_freq * 1000;
+
+       pr_debug(KERN_DEBUG "imx: requested frequency %ld Hz, mpctl0 at boot 0x%08x\n",
+                       freq, mpctl0_at_boot);
+
+       sysclk = imx_get_system_clk();
+
+       if (freq > sysclk + 1000000) {
+               freq = imx_compute_mpctl(&mpctl0, mpctl0_at_boot, freq, relation);
+               if (freq < 0) {
+                       printk(KERN_WARNING "imx: target frequency %ld Hz cannot be set\n", freq);
+                       return -EINVAL;
+               }
+       } else {
+               if(freq + 1000 < sysclk) {
+                       if (relation == CPUFREQ_RELATION_L)
+                               bclk_div = (sysclk - 1000) / freq;
+                       else
+                               bclk_div = (sysclk + freq + 1000) / freq;
+
+                       if(bclk_div > 16)
+                               bclk_div = 16;
+               }
+               freq = (sysclk + bclk_div / 2) / bclk_div;
+       }
+
+       freqs.old = imx_get_speed(0);
+       freqs.new = (freq + 500) / 1000;
+       freqs.cpu = 0;
+       freqs.flags = 0;
+
+       cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
+
+       local_irq_save(flags);
+
+       imx_set_fastbus_mode();
+
+       imx_set_mpctl0(mpctl0);
+
+       cscr = CSCR;
+       cscr &= ~CSCR_BCLK_DIV;
+       cscr |= __val2mfld(CSCR_BCLK_DIV, bclk_div - 1);
+       CSCR = cscr;
+
+       if(mpctl0) {
+               CSCR |= CSCR_MPLL_RESTART;
+
+               /* Wait until MPLL is stablized */
+               while( CSCR & CSCR_MPLL_RESTART );
+
+               imx_set_async_mode();
+       }
+
+       local_irq_restore(flags);
+
+       cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
+
+       pr_debug(KERN_INFO "imx: set frequency %ld Hz, running from %s\n",
+                       freq, mpctl0? "MPLL": "SPLL");
+
+       return 0;
+}
+
+static int __init imx_cpufreq_driver_init(struct cpufreq_policy *policy)
+{
+       printk(KERN_INFO "i.MX cpu freq change driver v1.0\n");
+
+       if (policy->cpu != 0)
+               return -EINVAL;
+
+       policy->cur = policy->min = policy->max = imx_get_speed(0);
+       policy->governor = CPUFREQ_DEFAULT_GOVERNOR;
+       policy->cpuinfo.min_freq = 8000;
+       policy->cpuinfo.max_freq = 200000;
+       policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
+       return 0;
+}
+
+static struct cpufreq_driver imx_driver = {
+       .flags          = CPUFREQ_STICKY,
+       .verify         = imx_verify_speed,
+       .target         = imx_set_target,
+       .get            = imx_get_speed,
+       .init           = imx_cpufreq_driver_init,
+       .name           = "imx",
+};
+
+static int __init imx_cpufreq_init(void)
+{
+
+       mpctl0_at_boot = 0;
+
+       if((CSCR & CSCR_MPEN) &&
+          ((get_cr() & CR_920T_CLOCK_MODE) != CR_920T_FASTBUS_MODE))
+               mpctl0_at_boot = MPCTL0;
+
+       return cpufreq_register_driver(&imx_driver);
+}
+
+arch_initcall(imx_cpufreq_init);
+
index 0993336c0b556aa837cdc8cb35989fc888b3268e..5773b55ef4a69f203dc83831d6452128094924b8 100644 (file)
 
 #include <linux/init.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
+#include <linux/clocksource.h>
 
 #include <asm/hardware.h>
 #include <asm/io.h>
 #include <asm/mach/time.h>
 #include <asm/arch/netx-regs.h>
 
-/*
- * Returns number of us since last clock interrupt.  Note that interrupts
- * will have been disabled by do_gettimeoffset()
- */
-static unsigned long netx_gettimeoffset(void)
-{
-       return readl(NETX_GPIO_COUNTER_CURRENT(0)) / 100;
-}
-
 /*
  * IRQ handler for the timer
  */
@@ -43,6 +36,7 @@ netx_timer_interrupt(int irq, void *dev_id)
        write_seqlock(&xtime_lock);
 
        timer_tick();
+
        write_sequnlock(&xtime_lock);
 
        /* acknowledge interrupt */
@@ -51,13 +45,26 @@ netx_timer_interrupt(int irq, void *dev_id)
        return IRQ_HANDLED;
 }
 
-
 static struct irqaction netx_timer_irq = {
        .name           = "NetX Timer Tick",
        .flags          = IRQF_DISABLED | IRQF_TIMER,
        .handler        = netx_timer_interrupt,
 };
 
+cycle_t netx_get_cycles(void)
+{
+       return readl(NETX_GPIO_COUNTER_CURRENT(1));
+}
+
+static struct clocksource clocksource_netx = {
+       .name           = "netx_timer",
+       .rating         = 200,
+       .read           = netx_get_cycles,
+       .mask           = CLOCKSOURCE_MASK(32),
+       .shift          = 20,
+       .is_continuous  = 1,
+};
+
 /*
  * Set up timer interrupt
  */
@@ -80,9 +87,20 @@ static void __init netx_timer_init(void)
                NETX_GPIO_COUNTER_CTRL(0));
 
        setup_irq(NETX_IRQ_TIMER0, &netx_timer_irq);
+
+       /* Setup timer one for clocksource */
+        writel(0, NETX_GPIO_COUNTER_CTRL(1));
+        writel(0, NETX_GPIO_COUNTER_CURRENT(1));
+        writel(0xFFFFFFFF, NETX_GPIO_COUNTER_MAX(1));
+
+        writel(NETX_GPIO_COUNTER_CTRL_RUN,
+                NETX_GPIO_COUNTER_CTRL(1));
+
+       clocksource_netx.mult =
+               clocksource_hz2mult(CLOCK_TICK_RATE, clocksource_netx.shift);
+       clocksource_register(&clocksource_netx);
 }
 
 struct sys_timer netx_timer = {
-       .init           = netx_timer_init,
-       .offset         = netx_gettimeoffset,
+       .init           = netx_timer_init,
 };
index d135568dc9e7698e3c7ca99db7d9a083be50ef83..8781aaeb576b2d2738ead294ba6c21a182030b58 100644 (file)
@@ -43,6 +43,7 @@ config MACH_OMAP_H3
 config MACH_OMAP_OSK
        bool "TI OSK Support"
        depends on ARCH_OMAP1 && ARCH_OMAP16XX
+       select TPS65010
        help
          TI OMAP 5912 OSK (OMAP Starter Kit) board support. Say Y here
           if you have such a board.
index 3a622801d7b0f1548a98056250860a5cea4bac37..7d0cf7af88ceb8c420b5fdb912edf3f3358170f8 100644 (file)
@@ -30,6 +30,7 @@
 #include <linux/init.h>
 #include <linux/platform_device.h>
 #include <linux/irq.h>
+#include <linux/interrupt.h>
 
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
index b914668610298507badd3441484d627bbd8f888a..3775b8f3842942c209a4238b7745faaaa24dcd68 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/signal.h>
 #include <linux/errno.h>
 #include <linux/sched.h>
+#include <linux/clocksource.h>
 
 #include <asm/system.h>
 #include <asm/hardware.h>
@@ -48,27 +49,6 @@ static int pxa_set_rtc(void)
        return 0;
 }
 
-/* IRQs are disabled before entering here from do_gettimeofday() */
-static unsigned long pxa_gettimeoffset (void)
-{
-       long ticks_to_match, elapsed, usec;
-
-       /* Get ticks before next timer match */
-       ticks_to_match = OSMR0 - OSCR;
-
-       /* We need elapsed ticks since last match */
-       elapsed = LATCH - ticks_to_match;
-
-       /* don't get fooled by the workaround in pxa_timer_interrupt() */
-       if (elapsed <= 0)
-               return 0;
-
-       /* Now convert them to usec */
-       usec = (unsigned long)(elapsed * (tick_nsec / 1000))/LATCH;
-
-       return usec;
-}
-
 #ifdef CONFIG_NO_IDLE_HZ
 static unsigned long initial_match;
 static int match_posponed;
@@ -121,6 +101,20 @@ static struct irqaction pxa_timer_irq = {
        .handler        = pxa_timer_interrupt,
 };
 
+cycle_t pxa_get_cycles(void)
+{
+       return OSCR;
+}
+
+static struct clocksource clocksource_pxa = {
+       .name           = "pxa_timer",
+       .rating         = 200,
+       .read           = pxa_get_cycles,
+       .mask           = CLOCKSOURCE_MASK(32),
+       .shift          = 20,
+       .is_continuous  = 1,
+};
+
 static void __init pxa_timer_init(void)
 {
        struct timespec tv;
@@ -139,6 +133,14 @@ static void __init pxa_timer_init(void)
        OIER = OIER_E0;         /* enable match on timer 0 to cause interrupts */
        OSMR0 = OSCR + LATCH;   /* set initial match */
        local_irq_restore(flags);
+
+       /* on PXA OSCR runs continiously and is not written to, so we can use it
+        * as clock source directly.
+        */
+       clocksource_pxa.mult =
+               clocksource_hz2mult(CLOCK_TICK_RATE, clocksource_pxa.shift);
+       clocksource_register(&clocksource_pxa);
+
 }
 
 #ifdef CONFIG_NO_IDLE_HZ
@@ -211,7 +213,6 @@ struct sys_timer pxa_timer = {
        .init           = pxa_timer_init,
        .suspend        = pxa_timer_suspend,
        .resume         = pxa_timer_resume,
-       .offset         = pxa_gettimeoffset,
 #ifdef CONFIG_NO_IDLE_HZ
        .dyn_tick       = &pxa_dyn_tick,
 #endif
index c1827d021ba825c4b01b0a7379a23e32b5070b18..119c64b7223f54416ce1efd5ec2797d986cf3d10 100644 (file)
@@ -393,10 +393,6 @@ static struct pxafb_mach_info sharp_lcd = {
     .pxafb_backlight_power = board_backlight_power,
 };
 
-static void __init trizeps4_fixup(struct machine_desc *desc, struct tag *tags, char **cmdline, struct meminfo *mi)
-{
-}
-
 static void __init trizeps4_init(void)
 {
        platform_add_devices(trizeps4_devices, ARRAY_SIZE(trizeps4_devices));
@@ -469,7 +465,6 @@ MACHINE_START(TRIZEPS4, "Keith und Koep Trizeps IV module")
        .phys_io        = 0x40000000,
        .io_pg_offst    = (io_p2v(0x40000000) >> 18) & 0xfffc,
        .boot_params    = TRIZEPS4_SDRAM_BASE + 0x100,
-       .fixup          = trizeps4_fixup,
        .init_machine   = trizeps4_init,
        .map_io         = trizeps4_map_io,
        .init_irq       = pxa_init_irq,
index 17f5a43acdb75fcca9dfbfb6807e83a4cb0b712a..54ecdaa373d6d4b8feeff7a445783daeabc1793a 100644 (file)
@@ -1,5 +1,15 @@
 /*
  * linux/arch/arm/mach-sa1100/jornada720.c
+ *
+ * HP Jornada720 init code
+ *
+ * Copyright (C) 2006 Filip Zyzniewski <filip.zyzniewski@tefnet.pl>
+ *  Copyright (C) 2005 Michael Gernoth <michael@gernoth.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
  */
 
 #include <linux/init.h>
 #include <linux/ioport.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
+#include <video/s1d13xxxfb.h>
 
 #include <asm/hardware.h>
 #include <asm/hardware/sa1111.h>
 #include <asm/irq.h>
 #include <asm/mach-types.h>
 #include <asm/setup.h>
-
 #include <asm/mach/arch.h>
 #include <asm/mach/flash.h>
 #include <asm/mach/map.h>
 
 #include "generic.h"
 
+/*
+ * HP Documentation referred in this file:
+ * http://www.jlime.com/downloads/development/docs/jornada7xx/jornada720.txt
+ */
+
+/* line 110 of HP's doc */
+#define TUCR_VAL       0x20000400
+
+/* memory space (line 52 of HP's doc) */
+#define SA1111REGSTART 0x40000000
+#define SA1111REGLEN   0x00001fff
+#define EPSONREGSTART  0x48000000
+#define EPSONREGLEN    0x00100000
+#define EPSONFBSTART   0x48200000
+/* 512kB framebuffer */
+#define EPSONFBLEN     512*1024
+
+static struct s1d13xxxfb_regval s1d13xxxfb_initregs[] = {
+       /* line 344 of HP's doc */
+       {0x0001,0x00},  // Miscellaneous Register
+       {0x01FC,0x00},  // Display Mode Register
+       {0x0004,0x00},  // General IO Pins Configuration Register 0
+       {0x0005,0x00},  // General IO Pins Configuration Register 1
+       {0x0008,0x00},  // General IO Pins Control Register 0
+       {0x0009,0x00},  // General IO Pins Control Register 1
+       {0x0010,0x01},  // Memory Clock Configuration Register
+       {0x0014,0x11},  // LCD Pixel Clock Configuration Register
+       {0x0018,0x01},  // CRT/TV Pixel Clock Configuration Register
+       {0x001C,0x01},  // MediaPlug Clock Configuration Register
+       {0x001E,0x01},  // CPU To Memory Wait State Select Register
+       {0x0020,0x00},  // Memory Configuration Register
+       {0x0021,0x45},  // DRAM Refresh Rate Register
+       {0x002A,0x01},  // DRAM Timings Control Register 0
+       {0x002B,0x03},  // DRAM Timings Control Register 1
+       {0x0030,0x1c},  // Panel Type Register
+       {0x0031,0x00},  // MOD Rate Register
+       {0x0032,0x4F},  // LCD Horizontal Display Width Register
+       {0x0034,0x07},  // LCD Horizontal Non-Display Period Register
+       {0x0035,0x01},  // TFT FPLINE Start Position Register
+       {0x0036,0x0B},  // TFT FPLINE Pulse Width Register
+       {0x0038,0xEF},  // LCD Vertical Display Height Register 0
+       {0x0039,0x00},  // LCD Vertical Display Height Register 1
+       {0x003A,0x13},  // LCD Vertical Non-Display Period Register
+       {0x003B,0x0B},  // TFT FPFRAME Start Position Register
+       {0x003C,0x01},  // TFT FPFRAME Pulse Width Register
+       {0x0040,0x05},  // LCD Display Mode Register (2:4bpp,3:8bpp,5:16bpp)
+       {0x0041,0x00},  // LCD Miscellaneous Register
+       {0x0042,0x00},  // LCD Display Start Address Register 0
+       {0x0043,0x00},  // LCD Display Start Address Register 1
+       {0x0044,0x00},  // LCD Display Start Address Register 2
+       {0x0046,0x80},  // LCD Memory Address Offset Register 0
+       {0x0047,0x02},  // LCD Memory Address Offset Register 1
+       {0x0048,0x00},  // LCD Pixel Panning Register
+       {0x004A,0x00},  // LCD Display FIFO High Threshold Control Register
+       {0x004B,0x00},  // LCD Display FIFO Low Threshold Control Register
+       {0x0050,0x4F},  // CRT/TV Horizontal Display Width Register
+       {0x0052,0x13},  // CRT/TV Horizontal Non-Display Period Register
+       {0x0053,0x01},  // CRT/TV HRTC Start Position Register
+       {0x0054,0x0B},  // CRT/TV HRTC Pulse Width Register
+       {0x0056,0xDF},  // CRT/TV Vertical Display Height Register 0
+       {0x0057,0x01},  // CRT/TV Vertical Display Height Register 1
+       {0x0058,0x2B},  // CRT/TV Vertical Non-Display Period Register
+       {0x0059,0x09},  // CRT/TV VRTC Start Position Register
+       {0x005A,0x01},  // CRT/TV VRTC Pulse Width Register
+       {0x005B,0x10},  // TV Output Control Register
+       {0x0060,0x03},  // CRT/TV Display Mode Register (2:4bpp,3:8bpp,5:16bpp)
+       {0x0062,0x00},  // CRT/TV Display Start Address Register 0
+       {0x0063,0x00},  // CRT/TV Display Start Address Register 1
+       {0x0064,0x00},  // CRT/TV Display Start Address Register 2
+       {0x0066,0x40},  // CRT/TV Memory Address Offset Register 0
+       {0x0067,0x01},  // CRT/TV Memory Address Offset Register 1
+       {0x0068,0x00},  // CRT/TV Pixel Panning Register
+       {0x006A,0x00},  // CRT/TV Display FIFO High Threshold Control Register
+       {0x006B,0x00},  // CRT/TV Display FIFO Low Threshold Control Register
+       {0x0070,0x00},  // LCD Ink/Cursor Control Register
+       {0x0071,0x01},  // LCD Ink/Cursor Start Address Register
+       {0x0072,0x00},  // LCD Cursor X Position Register 0
+       {0x0073,0x00},  // LCD Cursor X Position Register 1
+       {0x0074,0x00},  // LCD Cursor Y Position Register 0
+       {0x0075,0x00},  // LCD Cursor Y Position Register 1
+       {0x0076,0x00},  // LCD Ink/Cursor Blue Color 0 Register
+       {0x0077,0x00},  // LCD Ink/Cursor Green Color 0 Register
+       {0x0078,0x00},  // LCD Ink/Cursor Red Color 0 Register
+       {0x007A,0x1F},  // LCD Ink/Cursor Blue Color 1 Register
+       {0x007B,0x3F},  // LCD Ink/Cursor Green Color 1 Register
+       {0x007C,0x1F},  // LCD Ink/Cursor Red Color 1 Register
+       {0x007E,0x00},  // LCD Ink/Cursor FIFO Threshold Register
+       {0x0080,0x00},  // CRT/TV Ink/Cursor Control Register
+       {0x0081,0x01},  // CRT/TV Ink/Cursor Start Address Register
+       {0x0082,0x00},  // CRT/TV Cursor X Position Register 0
+       {0x0083,0x00},  // CRT/TV Cursor X Position Register 1
+       {0x0084,0x00},  // CRT/TV Cursor Y Position Register 0
+       {0x0085,0x00},  // CRT/TV Cursor Y Position Register 1
+       {0x0086,0x00},  // CRT/TV Ink/Cursor Blue Color 0 Register
+       {0x0087,0x00},  // CRT/TV Ink/Cursor Green Color 0 Register
+       {0x0088,0x00},  // CRT/TV Ink/Cursor Red Color 0 Register
+       {0x008A,0x1F},  // CRT/TV Ink/Cursor Blue Color 1 Register
+       {0x008B,0x3F},  // CRT/TV Ink/Cursor Green Color 1 Register
+       {0x008C,0x1F},  // CRT/TV Ink/Cursor Red Color 1 Register
+       {0x008E,0x00},  // CRT/TV Ink/Cursor FIFO Threshold Register
+       {0x0100,0x00},  // BitBlt Control Register 0
+       {0x0101,0x00},  // BitBlt Control Register 1
+       {0x0102,0x00},  // BitBlt ROP Code/Color Expansion Register
+       {0x0103,0x00},  // BitBlt Operation Register
+       {0x0104,0x00},  // BitBlt Source Start Address Register 0
+       {0x0105,0x00},  // BitBlt Source Start Address Register 1
+       {0x0106,0x00},  // BitBlt Source Start Address Register 2
+       {0x0108,0x00},  // BitBlt Destination Start Address Register 0
+       {0x0109,0x00},  // BitBlt Destination Start Address Register 1
+       {0x010A,0x00},  // BitBlt Destination Start Address Register 2
+       {0x010C,0x00},  // BitBlt Memory Address Offset Register 0
+       {0x010D,0x00},  // BitBlt Memory Address Offset Register 1
+       {0x0110,0x00},  // BitBlt Width Register 0
+       {0x0111,0x00},  // BitBlt Width Register 1
+       {0x0112,0x00},  // BitBlt Height Register 0
+       {0x0113,0x00},  // BitBlt Height Register 1
+       {0x0114,0x00},  // BitBlt Background Color Register 0
+       {0x0115,0x00},  // BitBlt Background Color Register 1
+       {0x0118,0x00},  // BitBlt Foreground Color Register 0
+       {0x0119,0x00},  // BitBlt Foreground Color Register 1
+       {0x01E0,0x00},  // Look-Up Table Mode Register
+       {0x01E2,0x00},  // Look-Up Table Address Register
+       /* not sure, wouldn't like to mess with the driver */
+       {0x01E4,0x00},  // Look-Up Table Data Register
+       /* jornada doc says 0x00, but I trust the driver */
+       {0x01F0,0x10},  // Power Save Configuration Register
+       {0x01F1,0x00},  // Power Save Status Register
+       {0x01F4,0x00},  // CPU-to-Memory Access Watchdog Timer Register
+       {0x01FC,0x01},  // Display Mode Register(0x01:LCD, 0x02:CRT, 0x03:LCD&CRT)
+};
+
+static struct s1d13xxxfb_pdata s1d13xxxfb_data = {
+       .initregs               = s1d13xxxfb_initregs,
+       .initregssize           = ARRAY_SIZE(s1d13xxxfb_initregs),
+       .platform_init_video    = NULL
+};
 
-#define JORTUCR_VAL    0x20000400
+static struct resource s1d13xxxfb_resources[] = {
+       [0] = {
+               .start  = EPSONFBSTART,
+               .end    = EPSONFBSTART + EPSONFBLEN,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = EPSONREGSTART,
+               .end    = EPSONREGSTART + EPSONREGLEN,
+               .flags  = IORESOURCE_MEM,
+       }
+};
+
+static struct platform_device s1d13xxxfb_device = {
+       .name           = S1D_DEVICENAME,
+       .id             = 0,
+       .dev            = {
+               .platform_data  = &s1d13xxxfb_data,
+       },
+       .num_resources  = ARRAY_SIZE(s1d13xxxfb_resources),
+       .resource       = s1d13xxxfb_resources,
+};
 
 static struct resource sa1111_resources[] = {
        [0] = {
-               .start          = 0x40000000,
-               .end            = 0x40001fff,
+               .start          = SA1111REGSTART,
+               .end            = SA1111REGSTART + SA1111REGLEN,
                .flags          = IORESOURCE_MEM,
        },
        [1] = {
@@ -53,18 +220,32 @@ static struct platform_device sa1111_device = {
        .resource       = sa1111_resources,
 };
 
+static struct platform_device jornada720_mcu_device = {
+       .name           = "jornada720_mcu",
+       .id             = -1,
+};
+
 static struct platform_device *devices[] __initdata = {
        &sa1111_device,
+       &jornada720_mcu_device,
+       &s1d13xxxfb_device,
 };
 
+/* a stub for now, we theoretically cannot suspend without a flashboard */
+int pm_suspend(suspend_state_t state)
+{
+       return -1;
+}
+
 static int __init jornada720_init(void)
 {
        int ret = -ENODEV;
 
        if (machine_is_jornada720()) {
                GPDR |= GPIO_GPIO20;
-               TUCR = JORTUCR_VAL;     /* set the oscillator out to the SA-1101 */
-
+               /* oscillator setup (line 116 of HP's doc) */
+               TUCR = TUCR_VAL;
+               /* resetting SA1111 (line 118 of HP's doc) */
                GPSR = GPIO_GPIO20;
                udelay(1);
                GPCR = GPIO_GPIO20;
@@ -72,10 +253,6 @@ static int __init jornada720_init(void)
                GPSR = GPIO_GPIO20;
                udelay(20);
 
-               /* LDD4 is speaker, LDD3 is microphone */
-               PPSR &= ~(PPC_LDD3 | PPC_LDD4);
-               PPDR |= PPC_LDD3 | PPC_LDD4;
-
                ret = platform_add_devices(devices, ARRAY_SIZE(devices));
        }
        return ret;
@@ -85,19 +262,19 @@ arch_initcall(jornada720_init);
 
 static struct map_desc jornada720_io_desc[] __initdata = {
        {       /* Epson registers */
-               .virtual        =  0xf0000000,
-               .pfn            = __phys_to_pfn(0x48000000),
-               .length         = 0x00100000,
+               .virtual        = 0xf0000000,
+               .pfn            = __phys_to_pfn(EPSONREGSTART),
+               .length         = EPSONREGLEN,
                .type           = MT_DEVICE
        }, {    /* Epson frame buffer */
-               .virtual        =  0xf1000000,
-               .pfn            = __phys_to_pfn(0x48200000),
-               .length         = 0x00100000,
+               .virtual        = 0xf1000000,
+               .pfn            = __phys_to_pfn(EPSONFBSTART),
+               .length         = EPSONFBLEN,
                .type           = MT_DEVICE
        }, {    /* SA-1111 */
-               .virtual        =  0xf4000000,
-               .pfn            = __phys_to_pfn(0x40000000),
-               .length         = 0x00100000,
+               .virtual        = 0xf4000000,
+               .pfn            = __phys_to_pfn(SA1111REGSTART),
+               .length         = SA1111REGLEN,
                .type           = MT_DEVICE
        }
 };
@@ -106,7 +283,7 @@ static void __init jornada720_map_io(void)
 {
        sa1100_map_io();
        iotable_init(jornada720_io_desc, ARRAY_SIZE(jornada720_io_desc));
-       
+
        sa1100_register_uart(0, 3);
        sa1100_register_uart(1, 1);
 }
@@ -116,7 +293,7 @@ static struct mtd_partition jornada720_partitions[] = {
                .name           = "JORNADA720 boot firmware",
                .size           = 0x00040000,
                .offset         = 0,
-               .mask_flags     = MTD_WRITEABLE,  /* force read-only */
+               .mask_flags     = MTD_WRITEABLE, /* force read-only */
        }, {
                .name           = "JORNADA720 kernel",
                .size           = 0x000c0000,
@@ -139,7 +316,7 @@ static struct mtd_partition jornada720_partitions[] = {
                .offset         = 0x00540000,
        }, {
                .name           = "JORNADA720 usr local",
-               .size           = 0,  /* will expand to the end of the flash */
+               .size           = 0, /* will expand to the end of the flash */
                .offset         = 0x00d00000,
        }
 };
@@ -147,10 +324,12 @@ static struct mtd_partition jornada720_partitions[] = {
 static void jornada720_set_vpp(int vpp)
 {
        if (vpp)
-               PPSR |= 0x80;
+               /* enabling flash write (line 470 of HP's doc) */
+               PPSR |= PPC_LDD7;
        else
-               PPSR &= ~0x80;
-       PPDR |= 0x80;
+               /* disabling flash write (line 470 of HP's doc) */
+               PPSR &= ~PPC_LDD7;
+       PPDR |= PPC_LDD7;
 }
 
 static struct flash_platform_data jornada720_flash_data = {
index b797217e82be0ed01d959cf52f909a72fdeffed6..6a9c362fef5e241969c42c6133456fb901ce31a2 100644 (file)
@@ -238,7 +238,7 @@ __dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp,
                         * x86 does not mark the pages reserved...
                         */
                        SetPageReserved(page);
-                       set_pte(pte, mk_pte(page, prot));
+                       set_pte_ext(pte, mk_pte(page, prot), 0);
                        page++;
                        pte++;
                        off++;
index df1645e14b4c11401cc11d454934b8de1b1717ee..408b05ae6b9b63dddec06afadf96f0780c089fa7 100644 (file)
@@ -71,7 +71,7 @@ void v4_mc_copy_user_page(void *kto, const void *kfrom, unsigned long vaddr)
 {
        spin_lock(&minicache_lock);
 
-       set_pte(TOP_PTE(0xffff8000), pfn_pte(__pa(kfrom) >> PAGE_SHIFT, minicache_pgprot));
+       set_pte_ext(TOP_PTE(0xffff8000), pfn_pte(__pa(kfrom) >> PAGE_SHIFT, minicache_pgprot), 0);
        flush_tlb_kernel_page(0xffff8000);
 
        mc_copy_user_page((void *)0xffff8000, kto);
index 3d0d3a963d20b6f135bd78c1ad2641aa3d313690..865777dec161d3d27fa3c931b56e75965afa97ab 100644 (file)
@@ -70,8 +70,8 @@ static void v6_copy_user_page_aliasing(void *kto, const void *kfrom, unsigned lo
         */
        spin_lock(&v6_lock);
 
-       set_pte(TOP_PTE(from_address) + offset, pfn_pte(__pa(kfrom) >> PAGE_SHIFT, PAGE_KERNEL));
-       set_pte(TOP_PTE(to_address) + offset, pfn_pte(__pa(kto) >> PAGE_SHIFT, PAGE_KERNEL));
+       set_pte_ext(TOP_PTE(from_address) + offset, pfn_pte(__pa(kfrom) >> PAGE_SHIFT, PAGE_KERNEL), 0);
+       set_pte_ext(TOP_PTE(to_address) + offset, pfn_pte(__pa(kto) >> PAGE_SHIFT, PAGE_KERNEL), 0);
 
        from = from_address + (offset << PAGE_SHIFT);
        to   = to_address + (offset << PAGE_SHIFT);
@@ -110,7 +110,7 @@ static void v6_clear_user_page_aliasing(void *kaddr, unsigned long vaddr)
         */
        spin_lock(&v6_lock);
 
-       set_pte(TOP_PTE(to_address) + offset, pfn_pte(__pa(kaddr) >> PAGE_SHIFT, PAGE_KERNEL));
+       set_pte_ext(TOP_PTE(to_address) + offset, pfn_pte(__pa(kaddr) >> PAGE_SHIFT, PAGE_KERNEL), 0);
        flush_tlb_kernel_page(to);
        clear_page((void *)to);
 
index 84ebe0aa379e3b4ae3f017fd28d75ce8474a2665..aea5da723596727ada083f15ea141fa82cb57870 100644 (file)
@@ -93,7 +93,7 @@ void xscale_mc_copy_user_page(void *kto, const void *kfrom, unsigned long vaddr)
 {
        spin_lock(&minicache_lock);
 
-       set_pte(TOP_PTE(COPYPAGE_MINICACHE), pfn_pte(__pa(kfrom) >> PAGE_SHIFT, minicache_pgprot));
+       set_pte_ext(TOP_PTE(COPYPAGE_MINICACHE), pfn_pte(__pa(kfrom) >> PAGE_SHIFT, minicache_pgprot), 0);
        flush_tlb_kernel_page(COPYPAGE_MINICACHE);
 
        mc_copy_user_page((void *)COPYPAGE_MINICACHE, kto);
index 7fc1b35a674695ed6b4b03473e6f4ae9368f419e..cf95c5d0ce4cdb60f4ea317f07cde2c8de0764ba 100644 (file)
@@ -61,7 +61,7 @@ static int adjust_pte(struct vm_area_struct *vma, unsigned long address)
        if (pte_present(entry) && pte_val(entry) & shared_pte_mask) {
                flush_cache_page(vma, address, pte_pfn(entry));
                pte_val(entry) &= ~shared_pte_mask;
-               set_pte(pte, entry);
+               set_pte_at(vma->vm_mm, address, pte, entry);
                flush_tlb_page(vma, address);
                ret = 1;
        }
index 454205b789d5a06f52965978a156681cfe34de69..628348c9f6c5f17ded5fa62ec700bdb8666e85a7 100644 (file)
@@ -26,7 +26,7 @@ static void flush_pfn_alias(unsigned long pfn, unsigned long vaddr)
        unsigned long to = ALIAS_FLUSH_START + (CACHE_COLOUR(vaddr) << PAGE_SHIFT);
        const int zero = 0;
 
-       set_pte(TOP_PTE(to), pfn_pte(pfn, PAGE_KERNEL));
+       set_pte_ext(TOP_PTE(to), pfn_pte(pfn, PAGE_KERNEL), 0);
        flush_tlb_kernel_page(to);
 
        asm(    "mcrr   p15, 0, %1, %0, c14\n"
index 46544059279132efb3b3112f95929912f700f004..3bb3951920bc9809b31ee19e184cc6e3475deea1 100644 (file)
  */
 #define VM_ARM_SECTION_MAPPING 0x80000000
 
-static inline void
-remap_area_pte(pte_t * pte, unsigned long address, unsigned long size,
-              unsigned long phys_addr, pgprot_t pgprot)
+static int remap_area_pte(pmd_t *pmd, unsigned long addr, unsigned long end,
+                         unsigned long phys_addr, pgprot_t prot)
 {
-       unsigned long end;
+       pte_t *pte;
+
+       pte = pte_alloc_kernel(pmd, addr);
+       if (!pte)
+               return -ENOMEM;
 
-       address &= ~PMD_MASK;
-       end = address + size;
-       if (end > PMD_SIZE)
-               end = PMD_SIZE;
-       BUG_ON(address >= end);
        do {
                if (!pte_none(*pte))
                        goto bad;
 
-               set_pte(pte, pfn_pte(phys_addr >> PAGE_SHIFT, pgprot));
-               address += PAGE_SIZE;
+               set_pte_ext(pte, pfn_pte(phys_addr >> PAGE_SHIFT, prot), 0);
                phys_addr += PAGE_SIZE;
-               pte++;
-       } while (address && (address < end));
-       return;
+       } while (pte++, addr += PAGE_SIZE, addr != end);
+       return 0;
 
  bad:
-       printk("remap_area_pte: page already exists\n");
+       printk(KERN_CRIT "remap_area_pte: page already exists\n");
        BUG();
 }
 
-static inline int
-remap_area_pmd(pmd_t * pmd, unsigned long address, unsigned long size,
-              unsigned long phys_addr, unsigned long flags)
+static inline int remap_area_pmd(pgd_t *pgd, unsigned long addr,
+                                unsigned long end, unsigned long phys_addr,
+                                pgprot_t prot)
 {
-       unsigned long end;
-       pgprot_t pgprot;
-
-       address &= ~PGDIR_MASK;
-       end = address + size;
+       unsigned long next;
+       pmd_t *pmd;
+       int ret = 0;
 
-       if (end > PGDIR_SIZE)
-               end = PGDIR_SIZE;
+       pmd = pmd_alloc(&init_mm, pgd, addr);
+       if (!pmd)
+               return -ENOMEM;
 
-       phys_addr -= address;
-       BUG_ON(address >= end);
-
-       pgprot = __pgprot(L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | L_PTE_WRITE | flags);
        do {
-               pte_t * pte = pte_alloc_kernel(pmd, address);
-               if (!pte)
-                       return -ENOMEM;
-               remap_area_pte(pte, address, end - address, address + phys_addr, pgprot);
-               address = (address + PMD_SIZE) & PMD_MASK;
-               pmd++;
-       } while (address && (address < end));
-       return 0;
+               next = pmd_addr_end(addr, end);
+               ret = remap_area_pte(pmd, addr, next, phys_addr, prot);
+               if (ret)
+                       return ret;
+               phys_addr += next - addr;
+       } while (pmd++, addr = next, addr != end);
+       return ret;
 }
 
-static int
-remap_area_pages(unsigned long start, unsigned long pfn,
-                unsigned long size, unsigned long flags)
+static int remap_area_pages(unsigned long start, unsigned long pfn,
+                           unsigned long size, unsigned long flags)
 {
-       unsigned long address = start;
-       unsigned long end = start + size;
+       unsigned long addr = start;
+       unsigned long next, end = start + size;
        unsigned long phys_addr = __pfn_to_phys(pfn);
+       pgprot_t prot = __pgprot(L_PTE_PRESENT | L_PTE_YOUNG |
+                                L_PTE_DIRTY | L_PTE_WRITE | flags);
+       pgd_t *pgd;
        int err = 0;
-       pgd_t * dir;
 
-       phys_addr -= address;
-       dir = pgd_offset(&init_mm, address);
-       BUG_ON(address >= end);
+       BUG_ON(addr >= end);
+       pgd = pgd_offset_k(addr);
        do {
-               pmd_t *pmd = pmd_alloc(&init_mm, dir, address);
-               if (!pmd) {
-                       err = -ENOMEM;
-                       break;
-               }
-               if (remap_area_pmd(pmd, address, end - address,
-                                        phys_addr + address, flags)) {
-                       err = -ENOMEM;
+               next = pgd_addr_end(addr, end);
+               err = remap_area_pmd(pgd, addr, next, phys_addr, prot);
+               if (err)
                        break;
-               }
-
-               address = (address + PGDIR_SIZE) & PGDIR_MASK;
-               dir++;
-       } while (address && (address < end));
+               phys_addr += next - addr;
+       } while (pgd++, addr = next, addr != end);
 
        return err;
 }
index b7f194af20b490b03c85805ad9731fda33c6745c..f028aef9a861f284f280abf52f00fa106bdcad26 100644 (file)
@@ -294,12 +294,6 @@ static void __init build_mem_type_table(void)
                mem_types[MT_DEVICE].prot_pte |= L_PTE_BUFFERABLE;
                mem_types[MT_DEVICE].prot_sect |= PMD_SECT_BUFFERED;
 
-               /*
-                * User pages need to be mapped with the ASID
-                * (iow, non-global)
-                */
-               user_pgprot |= L_PTE_ASID;
-
 #ifdef CONFIG_SMP
                /*
                 * Mark memory with the "shared" attribute for SMP systems
@@ -408,7 +402,7 @@ alloc_init_page(unsigned long virt, unsigned long phys, unsigned int prot_l1, pg
        }
        ptep = pte_offset_kernel(pmdp, virt);
 
-       set_pte(ptep, pfn_pte(phys >> PAGE_SHIFT, prot));
+       set_pte_ext(ptep, pfn_pte(phys >> PAGE_SHIFT, prot), 0);
 }
 
 /*
index 20c1b0df75f2c386c5966076e7784644f6e4845f..50b9aed6000d8ede02f5df0175df8c8aa7e85c65 100644 (file)
@@ -57,7 +57,7 @@ pgd_t *get_pgd_slow(struct mm_struct *mm)
 
                init_pmd = pmd_offset(init_pgd, 0);
                init_pte = pte_offset_map_nested(init_pmd, 0);
-               set_pte(new_pte, *init_pte);
+               set_pte_ext(new_pte, *init_pte, 0);
                pte_unmap_nested(init_pte);
                pte_unmap(new_pte);
        }
index 289b8e6f504dc656a75c8e1f2f2a3c82f631e626..700c04d6996ea3e646c91175747d30a5d127dff1 100644 (file)
@@ -397,7 +397,7 @@ ENTRY(cpu_arm1020_switch_mm)
  * Set a PTE and flush it out
  */
        .align  5
-ENTRY(cpu_arm1020_set_pte)
+ENTRY(cpu_arm1020_set_pte_ext)
 #ifdef CONFIG_MMU
        str     r1, [r0], #-2048                @ linux version
 
@@ -477,7 +477,7 @@ arm1020_processor_functions:
        .word   cpu_arm1020_do_idle
        .word   cpu_arm1020_dcache_clean_area
        .word   cpu_arm1020_switch_mm
-       .word   cpu_arm1020_set_pte
+       .word   cpu_arm1020_set_pte_ext
        .size   arm1020_processor_functions, . - arm1020_processor_functions
 
        .section ".rodata"
index bed9db6ba582a7190cdac76576a51aba64bd1469..1cc206ab5eae6a76378b79537d3fd7912805a01d 100644 (file)
@@ -381,7 +381,7 @@ ENTRY(cpu_arm1020e_switch_mm)
  * Set a PTE and flush it out
  */
        .align  5
-ENTRY(cpu_arm1020e_set_pte)
+ENTRY(cpu_arm1020e_set_pte_ext)
 #ifdef CONFIG_MMU
        str     r1, [r0], #-2048                @ linux version
 
@@ -458,7 +458,7 @@ arm1020e_processor_functions:
        .word   cpu_arm1020e_do_idle
        .word   cpu_arm1020e_dcache_clean_area
        .word   cpu_arm1020e_switch_mm
-       .word   cpu_arm1020e_set_pte
+       .word   cpu_arm1020e_set_pte_ext
        .size   arm1020e_processor_functions, . - arm1020e_processor_functions
 
        .section ".rodata"
index d2a7c1b9cab928255d2d74bb8be005dbd93296fa..aff0ea08e2f8df5936f66f8f3ab50705d3623ce9 100644 (file)
@@ -358,12 +358,12 @@ ENTRY(cpu_arm1022_switch_mm)
        mov     pc, lr
         
 /*
- * cpu_arm1022_set_pte(ptep, pte)
+ * cpu_arm1022_set_pte_ext(ptep, pte, ext)
  *
  * Set a PTE and flush it out
  */
        .align  5
-ENTRY(cpu_arm1022_set_pte)
+ENTRY(cpu_arm1022_set_pte_ext)
 #ifdef CONFIG_MMU
        str     r1, [r0], #-2048                @ linux version
 
@@ -441,7 +441,7 @@ arm1022_processor_functions:
        .word   cpu_arm1022_do_idle
        .word   cpu_arm1022_dcache_clean_area
        .word   cpu_arm1022_switch_mm
-       .word   cpu_arm1022_set_pte
+       .word   cpu_arm1022_set_pte_ext
        .size   arm1022_processor_functions, . - arm1022_processor_functions
 
        .section ".rodata"
index 3247ce5c0177c461d09adcdf932a2a3eca4ef240..65e43a1090855df170c30b2b8fa576c4c7803e1d 100644 (file)
@@ -347,12 +347,12 @@ ENTRY(cpu_arm1026_switch_mm)
        mov     pc, lr
         
 /*
- * cpu_arm1026_set_pte(ptep, pte)
+ * cpu_arm1026_set_pte_ext(ptep, pte, ext)
  *
  * Set a PTE and flush it out
  */
        .align  5
-ENTRY(cpu_arm1026_set_pte)
+ENTRY(cpu_arm1026_set_pte_ext)
 #ifdef CONFIG_MMU
        str     r1, [r0], #-2048                @ linux version
 
@@ -436,7 +436,7 @@ arm1026_processor_functions:
        .word   cpu_arm1026_do_idle
        .word   cpu_arm1026_dcache_clean_area
        .word   cpu_arm1026_switch_mm
-       .word   cpu_arm1026_set_pte
+       .word   cpu_arm1026_set_pte_ext
        .size   arm1026_processor_functions, . - arm1026_processor_functions
 
        .section .rodata
index ce4f9eef763c8dd2b65e31f758267164277c5d3a..123a7dc7a4338c395ac2ae1adc416c845d1b3bcf 100644 (file)
@@ -209,14 +209,14 @@ ENTRY(cpu_arm7_switch_mm)
                mov     pc, lr
 
 /*
- * Function: arm6_7_set_pte(pte_t *ptep, pte_t pte)
+ * Function: arm6_7_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext)
  * Params  : r0 = Address to set
  *        : r1 = value to set
  * Purpose : Set a PTE and flush it out of any WB cache
  */
                .align  5
-ENTRY(cpu_arm6_set_pte)
-ENTRY(cpu_arm7_set_pte)
+ENTRY(cpu_arm6_set_pte_ext)
+ENTRY(cpu_arm7_set_pte_ext)
 #ifdef CONFIG_MMU
                str     r1, [r0], #-2048                @ linux version
 
@@ -299,7 +299,7 @@ ENTRY(arm6_processor_functions)
                .word   cpu_arm6_do_idle
                .word   cpu_arm6_dcache_clean_area
                .word   cpu_arm6_switch_mm
-               .word   cpu_arm6_set_pte
+               .word   cpu_arm6_set_pte_ext
                .size   arm6_processor_functions, . - arm6_processor_functions
 
 /*
@@ -315,7 +315,7 @@ ENTRY(arm7_processor_functions)
                .word   cpu_arm7_do_idle
                .word   cpu_arm7_dcache_clean_area
                .word   cpu_arm7_switch_mm
-               .word   cpu_arm7_set_pte
+               .word   cpu_arm7_set_pte_ext
                .size   arm7_processor_functions, . - arm7_processor_functions
 
                .section ".rodata"
index c04c194da78503e11984c942130d50d4a0f0fc6b..dc763be433622fabc8087ee8bcabdd0050a1559a 100644 (file)
@@ -88,13 +88,13 @@ ENTRY(cpu_arm720_switch_mm)
                mov     pc, lr
 
 /*
- * Function: arm720_set_pte(pte_t *ptep, pte_t pte)
+ * Function: arm720_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext)
  * Params  : r0 = Address to set
  *        : r1 = value to set
  * Purpose : Set a PTE and flush it out of any WB cache
  */
                .align  5
-ENTRY(cpu_arm720_set_pte)
+ENTRY(cpu_arm720_set_pte_ext)
 #ifdef CONFIG_MMU
                str     r1, [r0], #-2048                @ linux version
 
@@ -204,7 +204,7 @@ ENTRY(arm720_processor_functions)
                .word   cpu_arm720_do_idle
                .word   cpu_arm720_dcache_clean_area
                .word   cpu_arm720_switch_mm
-               .word   cpu_arm720_set_pte
+               .word   cpu_arm720_set_pte_ext
                .size   arm720_processor_functions, . - arm720_processor_functions
 
                .section ".rodata"
index 65cbb2851bffad40e3aaa8771e02c3ece13d96f0..75c945ed6c4d3d8a339adf394c541495e9d166f0 100644 (file)
@@ -344,12 +344,12 @@ ENTRY(cpu_arm920_switch_mm)
        mov     pc, lr
 
 /*
- * cpu_arm920_set_pte(ptep, pte)
+ * cpu_arm920_set_pte(ptep, pte, ext)
  *
  * Set a PTE and flush it out
  */
        .align  5
-ENTRY(cpu_arm920_set_pte)
+ENTRY(cpu_arm920_set_pte_ext)
 #ifdef CONFIG_MMU
        str     r1, [r0], #-2048                @ linux version
 
@@ -423,7 +423,7 @@ arm920_processor_functions:
        .word   cpu_arm920_do_idle
        .word   cpu_arm920_dcache_clean_area
        .word   cpu_arm920_switch_mm
-       .word   cpu_arm920_set_pte
+       .word   cpu_arm920_set_pte_ext
        .size   arm920_processor_functions, . - arm920_processor_functions
 
        .section ".rodata"
index 52761b70d7355b1bbc072e426a7995491e65aff9..ffb751b877ff9cc43a8236a12dfe40f9af63b11e 100644 (file)
@@ -348,12 +348,12 @@ ENTRY(cpu_arm922_switch_mm)
        mov     pc, lr
 
 /*
- * cpu_arm922_set_pte(ptep, pte)
+ * cpu_arm922_set_pte_ext(ptep, pte, ext)
  *
  * Set a PTE and flush it out
  */
        .align  5
-ENTRY(cpu_arm922_set_pte)
+ENTRY(cpu_arm922_set_pte_ext)
 #ifdef CONFIG_MMU
        str     r1, [r0], #-2048                @ linux version
 
@@ -427,7 +427,7 @@ arm922_processor_functions:
        .word   cpu_arm922_do_idle
        .word   cpu_arm922_dcache_clean_area
        .word   cpu_arm922_switch_mm
-       .word   cpu_arm922_set_pte
+       .word   cpu_arm922_set_pte_ext
        .size   arm922_processor_functions, . - arm922_processor_functions
 
        .section ".rodata"
index 5b74339d1588ee7073381501610aa7026733e336..44c2c997819f522393b6b9454877fd1d79f64cba 100644 (file)
@@ -391,12 +391,12 @@ ENTRY(cpu_arm925_switch_mm)
        mov     pc, lr
 
 /*
- * cpu_arm925_set_pte(ptep, pte)
+ * cpu_arm925_set_pte_ext(ptep, pte, ext)
  *
  * Set a PTE and flush it out
  */
        .align  5
-ENTRY(cpu_arm925_set_pte)
+ENTRY(cpu_arm925_set_pte_ext)
 #ifdef CONFIG_MMU
        str     r1, [r0], #-2048                @ linux version
 
@@ -490,7 +490,7 @@ arm925_processor_functions:
        .word   cpu_arm925_do_idle
        .word   cpu_arm925_dcache_clean_area
        .word   cpu_arm925_switch_mm
-       .word   cpu_arm925_set_pte
+       .word   cpu_arm925_set_pte_ext
        .size   arm925_processor_functions, . - arm925_processor_functions
 
        .section ".rodata"
index 8628ed29a955d9f168f6b785ab2960acb72a891c..5b80b6bdd0cb3676a65e7d6b7f211c2a2e7f1ce9 100644 (file)
@@ -348,12 +348,12 @@ ENTRY(cpu_arm926_switch_mm)
        mov     pc, lr
 
 /*
- * cpu_arm926_set_pte(ptep, pte)
+ * cpu_arm926_set_pte_ext(ptep, pte, ext)
  *
  * Set a PTE and flush it out
  */
        .align  5
-ENTRY(cpu_arm926_set_pte)
+ENTRY(cpu_arm926_set_pte_ext)
 #ifdef CONFIG_MMU
        str     r1, [r0], #-2048                @ linux version
 
@@ -439,7 +439,7 @@ arm926_processor_functions:
        .word   cpu_arm926_do_idle
        .word   cpu_arm926_dcache_clean_area
        .word   cpu_arm926_switch_mm
-       .word   cpu_arm926_set_pte
+       .word   cpu_arm926_set_pte_ext
        .size   arm926_processor_functions, . - arm926_processor_functions
 
        .section ".rodata"
@@ -480,7 +480,7 @@ __arm926_proc_info:
        b       __arm926_setup
        .long   cpu_arch_name
        .long   cpu_elf_name
-       .long   HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_VFP|HWCAP_EDSP|HWCAP_JAVA
+       .long   HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_JAVA
        .long   cpu_arm926_name
        .long   arm926_processor_functions
        .long   v4wbi_tlb_fns
index cd7d865c9d19d29e278392d6d7a05a42855487a0..6e226e12989f8737b8e11af5f792491bdc2354fc 100644 (file)
@@ -146,12 +146,12 @@ ENTRY(cpu_sa110_switch_mm)
 #endif
 
 /*
- * cpu_sa110_set_pte(ptep, pte)
+ * cpu_sa110_set_pte_ext(ptep, pte, ext)
  *
  * Set a PTE and flush it out
  */
        .align  5
-ENTRY(cpu_sa110_set_pte)
+ENTRY(cpu_sa110_set_pte_ext)
 #ifdef CONFIG_MMU
        str     r1, [r0], #-2048                @ linux version
 
@@ -222,7 +222,7 @@ ENTRY(sa110_processor_functions)
        .word   cpu_sa110_do_idle
        .word   cpu_sa110_dcache_clean_area
        .word   cpu_sa110_switch_mm
-       .word   cpu_sa110_set_pte
+       .word   cpu_sa110_set_pte_ext
        .size   sa110_processor_functions, . - sa110_processor_functions
 
        .section ".rodata"
index b776653cc31ca486033750b4d8a6cfb3eb89d119..9afb11d089fe76abbd07a84143b44ecfd318b383 100644 (file)
@@ -159,12 +159,12 @@ ENTRY(cpu_sa1100_switch_mm)
 #endif
 
 /*
- * cpu_sa1100_set_pte(ptep, pte)
+ * cpu_sa1100_set_pte_ext(ptep, pte, ext)
  *
  * Set a PTE and flush it out
  */
        .align  5
-ENTRY(cpu_sa1100_set_pte)
+ENTRY(cpu_sa1100_set_pte_ext)
 #ifdef CONFIG_MMU
        str     r1, [r0], #-2048                @ linux version
 
@@ -237,7 +237,7 @@ ENTRY(sa1100_processor_functions)
        .word   cpu_sa1100_do_idle
        .word   cpu_sa1100_dcache_clean_area
        .word   cpu_sa1100_switch_mm
-       .word   cpu_sa1100_set_pte
+       .word   cpu_sa1100_set_pte_ext
        .size   sa1100_processor_functions, . - sa1100_processor_functions
 
        .section ".rodata"
index ab143557e6889ae7c5ff23e2e335716d6e134ef5..9f396b4fa0b7c67f95de6deb5a6c2a684f264f60 100644 (file)
@@ -17,7 +17,7 @@
 
 #ifndef MULTI_CPU
 EXPORT_SYMBOL(cpu_dcache_clean_area);
-EXPORT_SYMBOL(cpu_set_pte);
+EXPORT_SYMBOL(cpu_set_pte_ext);
 #else
 EXPORT_SYMBOL(processor);
 #endif
index b440c8a1d3458ed00d957b8b45bc9b776ed691bf..7b1843befb9c2deb693947e5cac5e1f5f8823d57 100644 (file)
@@ -103,13 +103,14 @@ ENTRY(cpu_v6_switch_mm)
        mov     pc, lr
 
 /*
- *     cpu_v6_set_pte(ptep, pte)
+ *     cpu_v6_set_pte_ext(ptep, pte, ext)
  *
  *     Set a level 2 translation table entry.
  *
  *     - ptep  - pointer to level 2 translation table entry
  *               (hardware version is stored at -1024 bytes)
  *     - pte   - PTE value to store
+ *     - ext   - value for extended PTE bits
  *
  *     Permissions:
  *       YUWD  APX AP1 AP0     SVC     User
@@ -121,33 +122,34 @@ ENTRY(cpu_v6_switch_mm)
  *       11x0   0   1   0      r/w     r/o
  *       1111   0   1   1      r/w     r/w
  */
-ENTRY(cpu_v6_set_pte)
+ENTRY(cpu_v6_set_pte_ext)
 #ifdef CONFIG_MMU
        str     r1, [r0], #-2048                @ linux version
 
-       bic     r2, r1, #0x000003f0
-       bic     r2, r2, #0x00000003
-       orr     r2, r2, #PTE_EXT_AP0 | 2
+       bic     r3, r1, #0x000003f0
+       bic     r3, r3, #0x00000003
+       orr     r3, r3, r2
+       orr     r3, r3, #PTE_EXT_AP0 | 2
 
        tst     r1, #L_PTE_WRITE
        tstne   r1, #L_PTE_DIRTY
-       orreq   r2, r2, #PTE_EXT_APX
+       orreq   r3, r3, #PTE_EXT_APX
 
        tst     r1, #L_PTE_USER
-       orrne   r2, r2, #PTE_EXT_AP1
-       tstne   r2, #PTE_EXT_APX
-       bicne   r2, r2, #PTE_EXT_APX | PTE_EXT_AP0
+       orrne   r3, r3, #PTE_EXT_AP1
+       tstne   r3, #PTE_EXT_APX
+       bicne   r3, r3, #PTE_EXT_APX | PTE_EXT_AP0
 
        tst     r1, #L_PTE_YOUNG
-       biceq   r2, r2, #PTE_EXT_APX | PTE_EXT_AP_MASK
+       biceq   r3, r3, #PTE_EXT_APX | PTE_EXT_AP_MASK
 
        tst     r1, #L_PTE_EXEC
-       orreq   r2, r2, #PTE_EXT_XN
+       orreq   r3, r3, #PTE_EXT_XN
 
        tst     r1, #L_PTE_PRESENT
-       moveq   r2, #0
+       moveq   r3, #0
 
-       str     r2, [r0]
+       str     r3, [r0]
        mcr     p15, 0, r0, c7, c10, 1 @ flush_pte
 #endif
        mov     pc, lr
@@ -156,7 +158,7 @@ ENTRY(cpu_v6_set_pte)
 
 
 cpu_v6_name:
-       .asciz  "Some Random V6 Processor"
+       .asciz  "ARMv6-compatible processor"
        .align
 
        .section ".text.init", #alloc, #execinstr
@@ -207,11 +209,6 @@ __v6_setup:
 #endif
        mcr     p15, 0, r4, c2, c0, 1           @ load TTB1
 #endif /* CONFIG_MMU */
-#ifdef CONFIG_VFP
-       mrc     p15, 0, r0, c1, c0, 2
-       orr     r0, r0, #(0xf << 20)
-       mcr     p15, 0, r0, c1, c0, 2           @ Enable full access to VFP
-#endif
        adr     r5, v6_crval
        ldmia   r5, {r5, r6}
        mrc     p15, 0, r0, c1, c0, 0           @ read control register
@@ -238,7 +235,7 @@ ENTRY(v6_processor_functions)
        .word   cpu_v6_do_idle
        .word   cpu_v6_dcache_clean_area
        .word   cpu_v6_switch_mm
-       .word   cpu_v6_set_pte
+       .word   cpu_v6_set_pte_ext
        .size   v6_processor_functions, . - v6_processor_functions
 
        .type   cpu_arch_name, #object
@@ -273,7 +270,7 @@ __v6_proc_info:
        b       __v6_setup
        .long   cpu_arch_name
        .long   cpu_elf_name
-       .long   HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_VFP|HWCAP_EDSP|HWCAP_JAVA
+       .long   HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_JAVA
        .long   cpu_v6_name
        .long   v6_processor_functions
        .long   v6wbi_tlb_fns
index 1ef564d0957f58634c4c229f15e8ad1d9645b92f..43494ae8f01af9acd083e2e6a1e66a2e12544da5 100644 (file)
@@ -357,13 +357,13 @@ ENTRY(cpu_xsc3_switch_mm)
        cpwait_ret lr, ip
 
 /*
- * cpu_xsc3_set_pte(ptep, pte)
+ * cpu_xsc3_set_pte_ext(ptep, pte, ext)
  *
  * Set a PTE and flush it out
  *
  */
        .align  5
-ENTRY(cpu_xsc3_set_pte)
+ENTRY(cpu_xsc3_set_pte_ext)
        str     r1, [r0], #-2048                @ linux version
 
        bic     r2, r1, #0xff0                  @ Keep C, B bits
@@ -457,7 +457,7 @@ ENTRY(xsc3_processor_functions)
        .word   cpu_xsc3_do_idle
        .word   cpu_xsc3_dcache_clean_area
        .word   cpu_xsc3_switch_mm
-       .word   cpu_xsc3_set_pte
+       .word   cpu_xsc3_set_pte_ext
        .size   xsc3_processor_functions, . - xsc3_processor_functions
 
        .section ".rodata"
index cc1004b3e5117cdcfa9a6d365406de93ebdb1722..490e11b342319077e5c3be51c7e9a95562941991 100644 (file)
@@ -421,14 +421,14 @@ ENTRY(cpu_xscale_switch_mm)
        cpwait_ret lr, ip
 
 /*
- * cpu_xscale_set_pte(ptep, pte)
+ * cpu_xscale_set_pte_ext(ptep, pte, ext)
  *
  * Set a PTE and flush it out
  *
  * Errata 40: must set memory to write-through for user read-only pages.
  */
        .align  5
-ENTRY(cpu_xscale_set_pte)
+ENTRY(cpu_xscale_set_pte_ext)
        str     r1, [r0], #-2048                @ linux version
 
        bic     r2, r1, #0xff0
@@ -529,7 +529,7 @@ ENTRY(xscale_processor_functions)
        .word   cpu_xscale_do_idle
        .word   cpu_xscale_dcache_clean_area
        .word   cpu_xscale_switch_mm
-       .word   cpu_xscale_set_pte
+       .word   cpu_xscale_set_pte_ext
        .size   xscale_processor_functions, . - xscale_processor_functions
 
        .section ".rodata"
index f08eafbddcc1ba7660e2d5ed68849b7595c36b49..e26cc1f599489f24274bbd0625b49bddc8bd31f4 100644 (file)
@@ -263,13 +263,24 @@ void VFP9_bounce(u32 trigger, u32 fpexc, struct pt_regs *regs)
        if (exceptions)
                vfp_raise_exceptions(exceptions, trigger, orig_fpscr, regs);
 }
+
 /*
  * VFP support code initialisation.
  */
 static int __init vfp_init(void)
 {
        unsigned int vfpsid;
+       unsigned int cpu_arch = cpu_architecture();
+       u32 access = 0;
+
+       if (cpu_arch >= CPU_ARCH_ARMv6) {
+               access = get_copro_access();
+
+               /*
+                * Enable full access to VFP (cp10 and cp11)
+                */
+               set_copro_access(access | CPACC_FULL(10) | CPACC_FULL(11));
+       }
 
        /*
         * First check that there is a VFP that we can use.
@@ -281,6 +292,12 @@ static int __init vfp_init(void)
        printk(KERN_INFO "VFP support v0.3: ");
        if (VFP_arch) {
                printk("not present\n");
+
+               /*
+                * Restore the copro access register.
+                */
+               if (cpu_arch >= CPU_ARCH_ARMv6)
+                       set_copro_access(access);
        } else if (vfpsid & FPSID_NODOUBLE) {
                printk("no double precision support\n");
        } else {
@@ -291,9 +308,16 @@ static int __init vfp_init(void)
                        (vfpsid & FPSID_PART_MASK) >> FPSID_PART_BIT,
                        (vfpsid & FPSID_VARIANT_MASK) >> FPSID_VARIANT_BIT,
                        (vfpsid & FPSID_REV_MASK) >> FPSID_REV_BIT);
+
                vfp_vector = vfp_support_entry;
 
                thread_register_notifier(&vfp_notifier_block);
+
+               /*
+                * We detected VFP, and the support code is
+                * in place; report VFP support to userspace.
+                */
+               elf_hwcap |= HWCAP_VFP;
        }
        return 0;
 }
index 43dd41be71fb80ac1ac7f0898924c77902b9bd5f..9dbc17247c6fdfd6a3b00b2fdc734b02aaae02f9 100644 (file)
@@ -215,7 +215,7 @@ int ecard_readchunk(struct in_chunk_dir *cd, ecard_t *ec, int id, int num)
                }
                if (c_id(&excd) == 0x80) { /* loader */
                        if (!ec->loader) {
-                               ec->loader = (loader_t)kmalloc(c_len(&excd),
+                               ec->loader = kmalloc(c_len(&excd),
                                                               GFP_KERNEL);
                                if (ec->loader)
                                        ecard_readbytes(ec->loader, ec,
index d87d68b77d6678d97cbf2df175cca889b5e09123..d53382c83bf9fdb05ddfb66122313bfda0e9268a 100644 (file)
@@ -545,7 +545,7 @@ int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_
            (irq_flags & IRQF_SHARED && !dev_id))
                return -EINVAL;
 
-       action = (struct irqaction *)kmalloc(sizeof(struct irqaction), GFP_KERNEL);
+       action = kmalloc(sizeof(struct irqaction), GFP_KERNEL);
        if (!action)
                return -ENOMEM;
 
index 4fa81abab0c762f62c1a92f9884f9769ff6c4780..ffade19a14e6f0b974dbea77034bacc329ebd795 100644 (file)
@@ -516,7 +516,7 @@ static int __init init_axis_flash(void)
 #else
                struct mtd_info *mtd_ram;
 
-               mtd_ram = (struct mtd_info *)kmalloc(sizeof(struct mtd_info),
+               mtd_ram = kmalloc(sizeof(struct mtd_info),
                                                     GFP_KERNEL);
                if (!mtd_ram) {
                        panic("axisflashmap couldn't allocate memory for "
index fcba6632ed7b72ef774f423bd3dae1012ca3104b..9aba18b931dddcf91c01d44452079a0442b3cde3 100644 (file)
@@ -440,7 +440,7 @@ gpio_open(struct inode *inode, struct file *filp)
        if (p > GPIO_MINOR_LAST)
                return -EINVAL;
 
-       priv = (struct gpio_private *)kmalloc(sizeof(struct gpio_private), 
+       priv = kmalloc(sizeof(struct gpio_private),
                                              GFP_KERNEL);
 
        if (!priv)
index 41952320e00ab67f911cc82b3faa5a629218e6ba..5180d45412fc55db169dc132988e5f7b93cadedc 100644 (file)
@@ -427,7 +427,7 @@ static int __init init_axis_flash(void)
 #else
                struct mtd_info *mtd_ram;
 
-               mtd_ram = (struct mtd_info *)kmalloc(sizeof(struct mtd_info),
+               mtd_ram = kmalloc(sizeof(struct mtd_info),
                                                     GFP_KERNEL);
                if (!mtd_ram) {
                        panic("axisflashmap couldn't allocate memory for "
index c3f876b4da6b4210d1aafa814549bd626b944d04..08d36f0955c6789ced9bafa4283cf99546a69ef2 100644 (file)
@@ -423,7 +423,7 @@ gpio_open(struct inode *inode, struct file *filp)
        if (p > GPIO_MINOR_LAST)
                return -EINVAL;
 
-       priv = (struct gpio_private *)kmalloc(sizeof(struct gpio_private),
+       priv = kmalloc(sizeof(struct gpio_private),
                                              GFP_KERNEL);
 
        if (!priv)
index 99e59b3eacf8fd5cd4616108873be9afbc460401..7cd6ac80340940300defd4f75ce48be1629461e9 100644 (file)
@@ -686,7 +686,7 @@ keep_debug_flags(unsigned long oldccs, unsigned long oldspc,
 int __init
 cris_init_signal(void)
 {
-       u16* data = (u16*)kmalloc(PAGE_SIZE, GFP_KERNEL);
+       u16* data = kmalloc(PAGE_SIZE, GFP_KERNEL);
 
        /* This is movu.w __NR_sigreturn, r9; break 13; */
        data[0] = 0x9c5f;
index 69c52189f044702cce5f4db9cc1c19e2a4fd7af2..f60ab785f235dbd105ca7a40a467409fcc2636bf 100644 (file)
@@ -59,7 +59,7 @@ static int
 __init init_cris_profile(void)
 {
   struct proc_dir_entry *entry;
-  sample_buffer = (char*)kmalloc(SAMPLE_BUFFER_SIZE, GFP_KERNEL);
+  sample_buffer = kmalloc(SAMPLE_BUFFER_SIZE, GFP_KERNEL);
   sample_buffer_pos = sample_buffer;
   entry = create_proc_entry("system_profile", S_IWUSR | S_IRUGO, NULL);
   if (entry) {
index 1bfc77e391d5ade64e9b71c7848c804d5022f2b9..587ef7f4fcc777394d7d8fc08cd80f9974077cff 100644 (file)
@@ -141,7 +141,7 @@ int request_irq(unsigned int irq,
                return -EBUSY;
 
        if (use_kmalloc)
-               irq_handle = (irq_handler_t *)kmalloc(sizeof(irq_handler_t), GFP_ATOMIC);
+               irq_handle = kmalloc(sizeof(irq_handler_t), GFP_ATOMIC);
        else {
                /* use bootmem allocater */
                irq_handle = (irq_handler_t *)alloc_bootmem(sizeof(irq_handler_t));
index 270440de4610c3eb7187e93d304328a05aa405bc..567f681ddfec4051aafe0e8cc4d90dcfbb389653 100644 (file)
@@ -176,7 +176,7 @@ int request_irq(unsigned int irq,
        }               
 
        if (use_kmalloc)
-               irq_handle = (irq_handler_t *)kmalloc(sizeof(irq_handler_t), GFP_ATOMIC);
+               irq_handle = kmalloc(sizeof(irq_handler_t), GFP_ATOMIC);
        else {
                /* use bootmem allocater */
                irq_handle = (irq_handler_t *)alloc_bootmem(sizeof(irq_handler_t));
index 3265208e5899855b7981be59cf153e18000b0bb2..e075ff05c46dea818606f791a4178e0aa7b414c6 100644 (file)
@@ -1493,8 +1493,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
 # CONFIG_DEBUG_VM is not set
 # CONFIG_DEBUG_LIST is not set
 # CONFIG_FRAME_POINTER is not set
-CONFIG_UNWIND_INFO=y
-CONFIG_STACK_UNWIND=y
 # CONFIG_FORCED_INLINING is not set
 # CONFIG_HEADERS_CHECK is not set
 # CONFIG_RCU_TORTURE_TEST is not set
index a97847da9ed59e85508ace8f5a77be90260d8c6a..b75cff25de4b105b7c4c510d4de9752f053c2488 100644 (file)
@@ -1604,7 +1604,7 @@ static int do_open(struct inode * inode, struct file * filp)
 {
        struct apm_user *       as;
 
-       as = (struct apm_user *)kmalloc(sizeof(*as), GFP_KERNEL);
+       as = kmalloc(sizeof(*as), GFP_KERNEL);
        if (as == NULL) {
                printk(KERN_ERR "apm: cannot allocate struct of size %d bytes\n",
                       sizeof(*as));
index de34b7fed3c1718d88886fa3e24a94fa49ac662f..06461b8b715d532ef93c0d57e6f9efe3375815c1 100644 (file)
@@ -979,38 +979,6 @@ ENTRY(spurious_interrupt_bug)
        jmp error_code
        CFI_ENDPROC
 
-#ifdef CONFIG_STACK_UNWIND
-ENTRY(arch_unwind_init_running)
-       CFI_STARTPROC
-       movl    4(%esp), %edx
-       movl    (%esp), %ecx
-       leal    4(%esp), %eax
-       movl    %ebx, PT_EBX(%edx)
-       xorl    %ebx, %ebx
-       movl    %ebx, PT_ECX(%edx)
-       movl    %ebx, PT_EDX(%edx)
-       movl    %esi, PT_ESI(%edx)
-       movl    %edi, PT_EDI(%edx)
-       movl    %ebp, PT_EBP(%edx)
-       movl    %ebx, PT_EAX(%edx)
-       movl    $__USER_DS, PT_DS(%edx)
-       movl    $__USER_DS, PT_ES(%edx)
-       movl    $0, PT_GS(%edx)
-       movl    %ebx, PT_ORIG_EAX(%edx)
-       movl    %ecx, PT_EIP(%edx)
-       movl    12(%esp), %ecx
-       movl    $__KERNEL_CS, PT_CS(%edx)
-       movl    %ebx, PT_EFLAGS(%edx)
-       movl    %eax, PT_OLDESP(%edx)
-       movl    8(%esp), %eax
-       movl    %ecx, 8(%esp)
-       movl    PT_EBX(%edx), %ebx
-       movl    $__KERNEL_DS, PT_OLDSS(%edx)
-       jmpl    *%eax
-       CFI_ENDPROC
-ENDPROC(arch_unwind_init_running)
-#endif
-
 ENTRY(kernel_thread_helper)
        pushl $0                # fake return address for unwinder
        CFI_STARTPROC
index 972346604f9d1b7d23841e317ff46c7559f49851..47ffec57c0cb28f4aa0ef6a74fbe665f9c42824f 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *     Intel CPU Microcode Update Driver for Linux
  *
- *     Copyright (C) 2000-2004 Tigran Aivazian
+ *     Copyright (C) 2000-2006 Tigran Aivazian <tigran@aivazian.fsnet.co.uk>
  *                   2006      Shaohua Li <shaohua.li@intel.com>
  *
  *     This driver allows to upgrade microcode on Intel processors
@@ -92,7 +92,7 @@
 #include <asm/processor.h>
 
 MODULE_DESCRIPTION("Intel CPU (IA-32) Microcode Update Driver");
-MODULE_AUTHOR("Tigran Aivazian <tigran@veritas.com>");
+MODULE_AUTHOR("Tigran Aivazian <tigran@aivazian.fsnet.co.uk>");
 MODULE_LICENSE("GPL");
 
 #define MICROCODE_VERSION      "1.14a"
@@ -752,7 +752,7 @@ static int __init microcode_init (void)
        register_hotcpu_notifier(&mc_cpu_notifier);
 
        printk(KERN_INFO 
-               "IA-32 Microcode Update Driver: v" MICROCODE_VERSION " <tigran@veritas.com>\n");
+               "IA-32 Microcode Update Driver: v" MICROCODE_VERSION " <tigran@aivazian.fsnet.co.uk>\n");
        return 0;
 }
 
index b0f84e5778ad89304bd8bf34a1c5c4022454a515..aef39be813614f0e2591836a4f1fa7aefb5ee9d3 100644 (file)
@@ -69,9 +69,7 @@ static int __devinitdata smp_b_stepping;
 
 /* Number of siblings per CPU package */
 int smp_num_siblings = 1;
-#ifdef CONFIG_SMP
 EXPORT_SYMBOL(smp_num_siblings);
-#endif
 
 /* Last level cache ID of each logical CPU */
 int cpu_llc_id[NR_CPUS] __cpuinitdata = {[0 ... NR_CPUS-1] = BAD_APICID};
index 2b30dbf8d1170167283d57a7cbe3b0099231c788..0efad8aeb41af86849ac3b8e6b667d6603f4f594 100644 (file)
@@ -94,11 +94,6 @@ asmlinkage void spurious_interrupt_bug(void);
 asmlinkage void machine_check(void);
 
 int kstack_depth_to_print = 24;
-#ifdef CONFIG_STACK_UNWIND
-static int call_trace = 1;
-#else
-#define call_trace (-1)
-#endif
 ATOMIC_NOTIFIER_HEAD(i386die_chain);
 
 int register_die_notifier(struct notifier_block *nb)
@@ -152,33 +147,6 @@ static inline unsigned long print_context_stack(struct thread_info *tinfo,
        return ebp;
 }
 
-struct ops_and_data {
-       struct stacktrace_ops *ops;
-       void *data;
-};
-
-static asmlinkage int
-dump_trace_unwind(struct unwind_frame_info *info, void *data)
-{
-       struct ops_and_data *oad = (struct ops_and_data *)data;
-       int n = 0;
-       unsigned long sp = UNW_SP(info);
-
-       if (arch_unw_user_mode(info))
-               return -1;
-       while (unwind(info) == 0 && UNW_PC(info)) {
-               n++;
-               oad->ops->address(oad->data, UNW_PC(info));
-               if (arch_unw_user_mode(info))
-                       break;
-               if ((sp & ~(PAGE_SIZE - 1)) == (UNW_SP(info) & ~(PAGE_SIZE - 1))
-                   && sp > UNW_SP(info))
-                       break;
-               sp = UNW_SP(info);
-       }
-       return n;
-}
-
 #define MSG(msg) ops->warning(data, msg)
 
 void dump_trace(struct task_struct *task, struct pt_regs *regs,
@@ -190,41 +158,6 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
        if (!task)
                task = current;
 
-       if (call_trace >= 0) {
-               int unw_ret = 0;
-               struct unwind_frame_info info;
-               struct ops_and_data oad = { .ops = ops, .data = data };
-
-               if (regs) {
-                       if (unwind_init_frame_info(&info, task, regs) == 0)
-                               unw_ret = dump_trace_unwind(&info, &oad);
-               } else if (task == current)
-                       unw_ret = unwind_init_running(&info, dump_trace_unwind,
-                                                     &oad);
-               else {
-                       if (unwind_init_blocked(&info, task) == 0)
-                               unw_ret = dump_trace_unwind(&info, &oad);
-               }
-               if (unw_ret > 0) {
-                       if (call_trace == 1 && !arch_unw_user_mode(&info)) {
-                               ops->warning_symbol(data,
-                                            "DWARF2 unwinder stuck at %s",
-                                            UNW_PC(&info));
-                               if (UNW_SP(&info) >= PAGE_OFFSET) {
-                                       MSG("Leftover inexact backtrace:");
-                                       stack = (void *)UNW_SP(&info);
-                                       if (!stack)
-                                               return;
-                                       ebp = UNW_FP(&info);
-                               } else
-                                       MSG("Full inexact backtrace again:");
-                       } else if (call_trace >= 1)
-                               return;
-                       else
-                               MSG("Full inexact backtrace again:");
-               } else
-                       MSG("Inexact backtrace:");
-       }
        if (!stack) {
                unsigned long dummy;
                stack = &dummy;
@@ -1258,19 +1191,3 @@ static int __init kstack_setup(char *s)
        return 1;
 }
 __setup("kstack=", kstack_setup);
-
-#ifdef CONFIG_STACK_UNWIND
-static int __init call_trace_setup(char *s)
-{
-       if (strcmp(s, "old") == 0)
-               call_trace = -1;
-       else if (strcmp(s, "both") == 0)
-               call_trace = 0;
-       else if (strcmp(s, "newfallback") == 0)
-               call_trace = 1;
-       else if (strcmp(s, "new") == 2)
-               call_trace = 2;
-       return 1;
-}
-__setup("call_trace=", call_trace_setup);
-#endif
index 462ea178f49abadfed37375141629013fda98e62..33367996d72d595b180179977b4a20e6c3b929bc 100644 (file)
@@ -189,7 +189,7 @@ static void print_pci_topology(struct seq_file *s)
        int e;
 
        for (sz = PAGE_SIZE; sz < 16 * PAGE_SIZE; sz += PAGE_SIZE) {
-               if (!(p = (char *)kmalloc(sz, GFP_KERNEL)))
+               if (!(p = kmalloc(sz, GFP_KERNEL)))
                        break;
                e = ia64_sn_ioif_get_pci_topology(__pa(p), sz);
                if (e == SALRET_OK)
index b54ef1726c557f827665ae3055eb2c1f8868c2c7..46b7d6035aabaab6a299f5c2cef9fee411c96bb4 100644 (file)
@@ -59,7 +59,7 @@ static struct vm_struct *get_io_area(unsigned long size)
        unsigned long addr;
        struct vm_struct **p, *tmp, *area;
 
-       area = (struct vm_struct *)kmalloc(sizeof(*area), GFP_KERNEL);
+       area = kmalloc(sizeof(*area), GFP_KERNEL);
        if (!area)
                return NULL;
        addr = KMAP_START;
index 528e731049c123c2a77886d573a2001458405901..ba16d07588cb88ad540d04ab307df20cd3d2283c 100644 (file)
@@ -356,7 +356,7 @@ static int apm_open(struct inode * inode, struct file * filp)
 {
        struct apm_user *as;
 
-       as = (struct apm_user *)kzalloc(sizeof(*as), GFP_KERNEL);
+       as = kzalloc(sizeof(*as), GFP_KERNEL);
        if (as) {
                /*
                 * XXX - this is a tiny bit broken, when we consider BSD
index ea2d15370bb72ecef36f99656049b092073bff9c..30245c09d0258e224475b0ceeb9e50d7c6c797a1 100644 (file)
@@ -203,6 +203,31 @@ static inline void kunmap_coherent(struct page *page)
        preempt_check_resched();
 }
 
+void copy_user_highpage(struct page *to, struct page *from,
+       unsigned long vaddr, struct vm_area_struct *vma)
+{
+       void *vfrom, *vto;
+
+       vto = kmap_atomic(to, KM_USER1);
+       if (cpu_has_dc_aliases) {
+               vfrom = kmap_coherent(from, vaddr);
+               copy_page(vto, vfrom);
+               kunmap_coherent(from);
+       } else {
+               vfrom = kmap_atomic(from, KM_USER0);
+               copy_page(vto, vfrom);
+               kunmap_atomic(vfrom, KM_USER0);
+       }
+       if (((vma->vm_flags & VM_EXEC) && !cpu_has_ic_fills_f_dc) ||
+           pages_do_alias((unsigned long)vto, vaddr & PAGE_MASK))
+               flush_data_cache_page((unsigned long)vto);
+       kunmap_atomic(vto, KM_USER1);
+       /* Make sure this page is cleared on other CPU's too before using it */
+       smp_wmb();
+}
+
+EXPORT_SYMBOL(copy_user_highpage);
+
 void copy_to_user_page(struct vm_area_struct *vma,
        struct page *page, unsigned long vaddr, void *dst, const void *src,
        unsigned long len)
index d88309209f568815de1aa3bba81f2744fba2c4ac..04c2ff444396b56cb38438c65c217bc6f9980e0b 100644 (file)
@@ -475,7 +475,7 @@ int hpux_sysfs(int opcode, unsigned long arg1, unsigned long arg2)
                printk(KERN_DEBUG "len of arg1 = %d\n", len);
                if (len == 0)
                        return 0;
-               fsname = (char *) kmalloc(len, GFP_KERNEL);
+               fsname = kmalloc(len, GFP_KERNEL);
                if ( !fsname ) {
                        printk(KERN_DEBUG "failed to kmalloc fsname\n");
                        return 0;
index 920bdbf8404fa3c50768c7d628c4cb9d0cf174f1..c10ab47d81fabc434f1e938194ee5a4fe92c523c 100644 (file)
@@ -343,7 +343,7 @@ void unwind_frame_init_from_blocked_task(struct unwind_frame_info *info, struct
        struct pt_regs *r = &t->thread.regs;
        struct pt_regs *r2;
 
-       r2 = (struct pt_regs *)kmalloc(sizeof(struct pt_regs), GFP_KERNEL);
+       r2 = kmalloc(sizeof(struct pt_regs), GFP_KERNEL);
        if (!r2)
                return;
        *r2 = *r;
index 6960f090991ed2fcabc318bd1743a04c6d9550d4..869cebbba967cf6f56b54a80550034e801f303ae 100644 (file)
@@ -505,7 +505,7 @@ static int nvram_scan_partitions(void)
                return -ENODEV;
        total_size = ppc_md.nvram_size();
        
-       header = (char *) kmalloc(NVRAM_HEADER_LEN, GFP_KERNEL);
+       header = kmalloc(NVRAM_HEADER_LEN, GFP_KERNEL);
        if (!header) {
                printk(KERN_ERR "nvram_scan_partitions: Failed kmalloc\n");
                return -ENOMEM;
@@ -574,7 +574,7 @@ static int __init nvram_init(void)
        }
        
        /* initialize our anchor for the nvram partition list */
-       nvram_part = (struct nvram_partition *) kmalloc(sizeof(struct nvram_partition), GFP_KERNEL);
+       nvram_part = kmalloc(sizeof(struct nvram_partition), GFP_KERNEL);
        if (!nvram_part) {
                printk(KERN_ERR "nvram_init: Failed kmalloc\n");
                return -ENOMEM;
index 8336deafc624fd7973c9a36e412787f890e8aeb1..2847cd51a2d7c8c3dbee81184494d1dbc37ebcbe 100644 (file)
@@ -670,7 +670,7 @@ pcibios_make_OF_bus_map(void)
        struct pci_controller* hose;
        struct property *map_prop;
 
-       pci_to_OF_bus_map = (u8*)kmalloc(pci_bus_count, GFP_KERNEL);
+       pci_to_OF_bus_map = kmalloc(pci_bus_count, GFP_KERNEL);
        if (!pci_to_OF_bus_map) {
                printk(KERN_ERR "Can't allocate OF bus map !\n");
                return;
index add8c1a9af68ae12db88b1501f7b3f5d1c2ad1e4..c831815c31f0e5a1c572e19a5a3c706721ee8b9a 100644 (file)
@@ -138,7 +138,7 @@ static struct vm_struct * split_im_region(unsigned long v_addr,
        struct vm_struct *vm2 = NULL;
        struct vm_struct *new_vm = NULL;
        
-       vm1 = (struct vm_struct *) kmalloc(sizeof(*vm1), GFP_KERNEL);
+       vm1 = kmalloc(sizeof(*vm1), GFP_KERNEL);
        if (vm1 == NULL) {
                printk(KERN_ERR "%s() out of memory\n", __FUNCTION__);
                return NULL;
@@ -172,7 +172,7 @@ static struct vm_struct * split_im_region(unsigned long v_addr,
                 * uppermost remainder, and use existing parent one for the
                 * lower remainder of parent range
                 */
-               vm2 = (struct vm_struct *) kmalloc(sizeof(*vm2), GFP_KERNEL);
+               vm2 = kmalloc(sizeof(*vm2), GFP_KERNEL);
                if (vm2 == NULL) {
                        printk(KERN_ERR "%s() out of memory\n", __FUNCTION__);
                        kfree(vm1);
@@ -206,7 +206,7 @@ static struct vm_struct * __add_new_im_area(unsigned long req_addr,
                        break;
        }
        
-       area = (struct vm_struct *) kmalloc(sizeof(*area), GFP_KERNEL);
+       area = kmalloc(sizeof(*area), GFP_KERNEL);
        if (!area)
                return NULL;
        area->flags = 0;
index b6b462d3c6046540cd51824f4f524125fd5f0f4b..f2bae04424f8a3933e8b49a4a261c7147de3ec75 100644 (file)
@@ -153,7 +153,7 @@ pci_addr_cache_insert(struct pci_dev *dev, unsigned long alo,
                        return piar;
                }
        }
-       piar = (struct pci_io_addr_range *)kmalloc(sizeof(struct pci_io_addr_range), GFP_ATOMIC);
+       piar = kmalloc(sizeof(struct pci_io_addr_range), GFP_ATOMIC);
        if (!piar)
                return NULL;
 
index 709952c25f2948c197acdbc6947c3b2493f2b1d1..06b84c372e58d2a4c23826ee1347db67d391cad2 100644 (file)
@@ -1892,10 +1892,10 @@ init_fcc_param(fcc_info_t *fip, struct net_device *dev,
        /* Allocate space for the buffer descriptors from regular memory.
         * Initialize base addresses for the buffer descriptors.
         */
-       cep->rx_bd_base = (cbd_t *)kmalloc(sizeof(cbd_t) * RX_RING_SIZE,
+       cep->rx_bd_base = kmalloc(sizeof(cbd_t) * RX_RING_SIZE,
                        GFP_KERNEL | GFP_DMA);
        ep->fen_genfcc.fcc_rbase = __pa(cep->rx_bd_base);
-       cep->tx_bd_base = (cbd_t *)kmalloc(sizeof(cbd_t) * TX_RING_SIZE,
+       cep->tx_bd_base = kmalloc(sizeof(cbd_t) * TX_RING_SIZE,
                        GFP_KERNEL | GFP_DMA);
        ep->fen_genfcc.fcc_tbase = __pa(cep->tx_bd_base);
 
index c71ef3c2e7bf4459dbf565e70287a8b01e6e96fa..b7bb5f0b3c5f68a56fa0dde50392daec418c778f 100644 (file)
@@ -2601,7 +2601,7 @@ int __init tdm8xx_sound_init(void)
        /* Initialize beep stuff */
        orig_mksound = kd_mksound;
        kd_mksound = cs_mksound;
-       beep_buf = (short *) kmalloc(BEEP_BUFLEN * 4, GFP_KERNEL);
+       beep_buf = kmalloc(BEEP_BUFLEN * 4, GFP_KERNEL);
        if (beep_buf == NULL)
                printk(KERN_WARNING "dmasound: no memory for "
                       "beep buffer\n");
index ff690564edbd329181e2310c0b6ed8a4364565b6..12272361c018c41b1b34c2f33a526e80646cc8b1 100644 (file)
@@ -407,7 +407,7 @@ config APPLDATA_BASE
 
 config APPLDATA_MEM
        tristate "Monitor memory management statistics"
-       depends on APPLDATA_BASE
+       depends on APPLDATA_BASE && VM_EVENT_COUNTERS
        help
          This provides memory management related data to the Linux - VM Monitor
          Stream, like paging/swapping rate, memory utilisation, etc.
index a6ec919ba83f14200569bad2a50b8192733e3ab2..5368cf4a350e83471e7a6f332c29f926299631bc 100644 (file)
@@ -1,14 +1,15 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.19-rc2
-# Wed Oct 18 17:11:10 2006
+# Linux kernel version: 2.6.20-rc1
+# Fri Dec 15 16:52:28 2006
 #
 CONFIG_MMU=y
 CONFIG_LOCKDEP_SUPPORT=y
 CONFIG_STACKTRACE_SUPPORT=y
 CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
 CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_GENERIC_TIME=y
 CONFIG_S390=y
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
@@ -37,12 +38,13 @@ CONFIG_AUDIT=y
 CONFIG_IKCONFIG=y
 CONFIG_IKCONFIG_PROC=y
 # CONFIG_CPUSETS is not set
+CONFIG_SYSFS_DEPRECATED=y
 # CONFIG_RELAY is not set
 CONFIG_INITRAMFS_SOURCE=""
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 # CONFIG_EMBEDDED is not set
-# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_SYSCTL_SYSCALL=y
 CONFIG_KALLSYMS=y
 # CONFIG_KALLSYMS_ALL is not set
 # CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -119,6 +121,7 @@ CONFIG_PACK_STACK=y
 CONFIG_CHECK_STACK=y
 CONFIG_STACK_GUARD=256
 # CONFIG_WARN_STACK is not set
+CONFIG_ARCH_POPULATES_NODE_MAP=y
 CONFIG_SELECT_MEMORY_MODEL=y
 CONFIG_FLATMEM_MANUAL=y
 # CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -128,6 +131,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
 # CONFIG_SPARSEMEM_STATIC is not set
 CONFIG_SPLIT_PTLOCK_CPUS=4
 CONFIG_RESOURCES_64BIT=y
+CONFIG_HOLES_IN_ZONE=y
 
 #
 # I/O subsystem configuration
@@ -196,6 +200,7 @@ CONFIG_INET_TCP_DIAG=y
 # CONFIG_TCP_CONG_ADVANCED is not set
 CONFIG_TCP_CONG_CUBIC=y
 CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
 CONFIG_IPV6=y
 # CONFIG_IPV6_PRIVACY is not set
 # CONFIG_IPV6_ROUTER_PREF is not set
@@ -211,7 +216,6 @@ CONFIG_INET6_XFRM_MODE_BEET=y
 # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
 CONFIG_IPV6_SIT=y
 # CONFIG_IPV6_TUNNEL is not set
-# CONFIG_IPV6_SUBTREES is not set
 # CONFIG_IPV6_MULTIPLE_TABLES is not set
 # CONFIG_NETWORK_SECMARK is not set
 # CONFIG_NETFILTER is not set
@@ -246,6 +250,7 @@ CONFIG_IPV6_SIT=y
 # QoS and/or fair queueing
 #
 CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_FIFO=y
 CONFIG_NET_SCH_CLK_JIFFIES=y
 # CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
 # CONFIG_NET_SCH_CLK_CPU is not set
@@ -277,6 +282,7 @@ CONFIG_NET_CLS_ROUTE=y
 CONFIG_NET_CLS_FW=m
 CONFIG_NET_CLS_U32=m
 # CONFIG_CLS_U32_PERF is not set
+CONFIG_CLS_U32_MARK=y
 CONFIG_NET_CLS_RSVP=m
 CONFIG_NET_CLS_RSVP6=m
 # CONFIG_NET_EMATCH is not set
@@ -315,6 +321,7 @@ CONFIG_SYS_HYPERVISOR=y
 #
 # CONFIG_RAID_ATTRS is not set
 CONFIG_SCSI=y
+# CONFIG_SCSI_TGT is not set
 CONFIG_SCSI_NETLINK=y
 CONFIG_SCSI_PROC_FS=y
 
@@ -335,6 +342,7 @@ CONFIG_CHR_DEV_SG=y
 CONFIG_SCSI_MULTI_LUN=y
 CONFIG_SCSI_CONSTANTS=y
 CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_SCAN_ASYNC=y
 
 #
 # SCSI Transports
@@ -546,6 +554,7 @@ CONFIG_DNOTIFY=y
 # CONFIG_AUTOFS_FS is not set
 # CONFIG_AUTOFS4_FS is not set
 # CONFIG_FUSE_FS is not set
+CONFIG_GENERIC_ACL=y
 
 #
 # CD-ROM/DVD Filesystems
@@ -571,7 +580,7 @@ CONFIG_TMPFS=y
 CONFIG_TMPFS_POSIX_ACL=y
 # CONFIG_HUGETLB_PAGE is not set
 CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
 
 #
 # Miscellaneous filesystems
@@ -616,7 +625,6 @@ CONFIG_SUNRPC=y
 # CONFIG_CODA_FS is not set
 # CONFIG_AFS_FS is not set
 # CONFIG_9P_FS is not set
-CONFIG_GENERIC_ACL=y
 
 #
 # Partition Types
@@ -645,6 +653,14 @@ CONFIG_MSDOS_PARTITION=y
 #
 # CONFIG_NLS is not set
 
+#
+# Distributed Lock Manager
+#
+CONFIG_DLM=m
+CONFIG_DLM_TCP=y
+# CONFIG_DLM_SCTP is not set
+# CONFIG_DLM_DEBUG is not set
+
 #
 # Instrumentation Support
 #
@@ -663,6 +679,8 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
 CONFIG_ENABLE_MUST_CHECK=y
 CONFIG_MAGIC_SYSRQ=y
 # CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+CONFIG_HEADERS_CHECK=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_LOG_BUF_SHIFT=17
 # CONFIG_SCHEDSTATS is not set
@@ -679,13 +697,11 @@ CONFIG_DEBUG_SPINLOCK_SLEEP=y
 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
 # CONFIG_DEBUG_KOBJECT is not set
 # CONFIG_DEBUG_INFO is not set
-CONFIG_DEBUG_FS=y
 # CONFIG_DEBUG_VM is not set
 # CONFIG_DEBUG_LIST is not set
 # CONFIG_FRAME_POINTER is not set
 # CONFIG_UNWIND_INFO is not set
 CONFIG_FORCED_INLINING=y
-CONFIG_HEADERS_CHECK=y
 # CONFIG_RCU_TORTURE_TEST is not set
 # CONFIG_LKDTM is not set
 
@@ -699,10 +715,11 @@ CONFIG_HEADERS_CHECK=y
 # Cryptographic options
 #
 CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=m
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_MANAGER=y
 # CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
 # CONFIG_CRYPTO_NULL is not set
 # CONFIG_CRYPTO_MD4 is not set
 # CONFIG_CRYPTO_MD5 is not set
@@ -713,8 +730,10 @@ CONFIG_CRYPTO_MANAGER=m
 # CONFIG_CRYPTO_SHA512 is not set
 # CONFIG_CRYPTO_WP512 is not set
 # CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
 CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_LRW is not set
 # CONFIG_CRYPTO_DES is not set
 # CONFIG_CRYPTO_DES_S390 is not set
 # CONFIG_CRYPTO_BLOWFISH is not set
@@ -740,8 +759,10 @@ CONFIG_CRYPTO_CBC=m
 #
 # Library routines
 #
+CONFIG_BITREVERSE=m
 # CONFIG_CRC_CCITT is not set
 # CONFIG_CRC16 is not set
 CONFIG_CRC32=m
 # CONFIG_LIBCRC32C is not set
 CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
index 443fa377d9ff893efbd09a6f7214dbbcebd53f0a..2782cf9da5b47b2057d20314e4af604183c01196 100644 (file)
@@ -379,7 +379,7 @@ static void *diag204_alloc_vbuf(int pages)
 static void *diag204_alloc_rbuf(void)
 {
        diag204_buf = (void*)__get_free_pages(GFP_KERNEL,0);
-       if (diag204_buf)
+       if (!diag204_buf)
                return ERR_PTR(-ENOMEM);
        diag204_buf_pages = 1;
        return diag204_buf;
@@ -521,7 +521,7 @@ __init int hypfs_diag_init(void)
        }
        rc = diag224_get_name_table();
        if (rc) {
-               diag224_delete_name_table();
+               diag204_free_buffer();
                printk(KERN_ERR "hypfs: could not get name table.\n");
        }
        return rc;
index ef5266fbce62105e2574dc916ab87dbba2f08b70..bb57bc0e3fc8d760a17a75cd555d29bd6683dcda 100644 (file)
@@ -191,13 +191,13 @@ debug_areas_alloc(int pages_per_area, int nr_areas)
        debug_entry_t*** areas;
        int i,j;
 
-       areas = (debug_entry_t ***) kmalloc(nr_areas *
+       areas = kmalloc(nr_areas *
                                        sizeof(debug_entry_t**),
                                        GFP_KERNEL);
        if (!areas)
                goto fail_malloc_areas;
        for (i = 0; i < nr_areas; i++) {
-               areas[i] = (debug_entry_t**) kmalloc(pages_per_area *
+               areas[i] = kmalloc(pages_per_area *
                                sizeof(debug_entry_t*),GFP_KERNEL);
                if (!areas[i]) {
                        goto fail_malloc_areas2;
@@ -242,7 +242,7 @@ debug_info_alloc(char *name, int pages_per_area, int nr_areas, int buf_size,
 
        /* alloc everything */
 
-       rc = (debug_info_t*) kmalloc(sizeof(debug_info_t), GFP_KERNEL);
+       rc = kmalloc(sizeof(debug_info_t), GFP_KERNEL);
        if(!rc)
                goto fail_malloc_rc;
        rc->active_entries = kcalloc(nr_areas, sizeof(int), GFP_KERNEL);
@@ -634,7 +634,7 @@ found:
                rc = -ENOMEM;
                goto out;
        }
-       p_info = (file_private_info_t *) kmalloc(sizeof(file_private_info_t),
+       p_info = kmalloc(sizeof(file_private_info_t),
                                                GFP_KERNEL);
        if(!p_info){
                if(debug_info_snapshot)
index a36bea1188d9270feb11c792c1bd2499ad771508..9e9972e8a52b64363241bfc11dc3061ad3cff1e4 100644 (file)
@@ -609,42 +609,12 @@ static ssize_t on_panic_store(struct subsystem *subsys, const char *buf,
 static struct subsys_attribute on_panic_attr =
                __ATTR(on_panic, 0644, on_panic_show, on_panic_store);
 
-static void print_fcp_block(struct ipl_parameter_block *fcp_block)
-{
-       printk(KERN_EMERG "wwpn:      %016llx\n",
-               (unsigned long long)fcp_block->ipl_info.fcp.wwpn);
-       printk(KERN_EMERG "lun:       %016llx\n",
-               (unsigned long long)fcp_block->ipl_info.fcp.lun);
-       printk(KERN_EMERG "bootprog:  %lld\n",
-               (unsigned long long)fcp_block->ipl_info.fcp.bootprog);
-       printk(KERN_EMERG "br_lba:    %lld\n",
-               (unsigned long long)fcp_block->ipl_info.fcp.br_lba);
-       printk(KERN_EMERG "device:    %llx\n",
-               (unsigned long long)fcp_block->ipl_info.fcp.devno);
-       printk(KERN_EMERG "opt:       %x\n", fcp_block->ipl_info.fcp.opt);
-}
-
 void do_reipl(void)
 {
        struct ccw_dev_id devid;
        static char buf[100];
        char loadparm[LOADPARM_LEN + 1];
 
-       switch (reipl_type) {
-       case IPL_TYPE_CCW:
-               reipl_get_ascii_loadparm(loadparm);
-               printk(KERN_EMERG "reboot on ccw device: 0.0.%04x\n",
-                       reipl_block_ccw->ipl_info.ccw.devno);
-               printk(KERN_EMERG "loadparm = '%s'\n", loadparm);
-               break;
-       case IPL_TYPE_FCP:
-               printk(KERN_EMERG "reboot on fcp device:\n");
-               print_fcp_block(reipl_block_fcp);
-               break;
-       default:
-               break;
-       }
-
        switch (reipl_method) {
        case IPL_METHOD_CCW_CIO:
                devid.devno = reipl_block_ccw->ipl_info.ccw.devno;
@@ -654,6 +624,7 @@ void do_reipl(void)
                reipl_ccw_dev(&devid);
                break;
        case IPL_METHOD_CCW_VM:
+               reipl_get_ascii_loadparm(loadparm);
                if (strlen(loadparm) == 0)
                        sprintf(buf, "IPL %X",
                                reipl_block_ccw->ipl_info.ccw.devno);
@@ -683,7 +654,6 @@ void do_reipl(void)
                diag308(DIAG308_IPL, NULL);
                break;
        }
-       printk(KERN_EMERG "reboot failed!\n");
        signal_processor(smp_processor_id(), sigp_stop_and_store_status);
 }
 
@@ -692,19 +662,6 @@ static void do_dump(void)
        struct ccw_dev_id devid;
        static char buf[100];
 
-       switch (dump_type) {
-       case IPL_TYPE_CCW:
-               printk(KERN_EMERG "Automatic dump on ccw device: 0.0.%04x\n",
-                      dump_block_ccw->ipl_info.ccw.devno);
-               break;
-       case IPL_TYPE_FCP:
-               printk(KERN_EMERG "Automatic dump on fcp device:\n");
-               print_fcp_block(dump_block_fcp);
-               break;
-       default:
-               return;
-       }
-
        switch (dump_method) {
        case IPL_METHOD_CCW_CIO:
                smp_send_stop();
@@ -1037,15 +994,21 @@ static void do_reset_calls(void)
 }
 
 extern void reset_mcck_handler(void);
+extern void reset_pgm_handler(void);
+extern __u32 dump_prefix_page;
 
 void s390_reset_system(void)
 {
        struct _lowcore *lc;
 
-       /* Stack for interrupt/machine check handler */
        lc = (struct _lowcore *)(unsigned long) store_prefix();
+
+       /* Stack for interrupt/machine check handler */
        lc->panic_stack = S390_lowcore.panic_stack;
 
+       /* Save prefix page address for dump case */
+       dump_prefix_page = (unsigned long) lc;
+
        /* Disable prefixing */
        set_prefix(0);
 
@@ -1056,5 +1019,11 @@ void s390_reset_system(void)
        S390_lowcore.mcck_new_psw.mask = PSW_KERNEL_BITS & ~PSW_MASK_MCHECK;
        S390_lowcore.mcck_new_psw.addr =
                PSW_ADDR_AMODE | (unsigned long) &reset_mcck_handler;
+
+       /* Set new program check handler */
+       S390_lowcore.program_new_psw.mask = PSW_KERNEL_BITS & ~PSW_MASK_MCHECK;
+       S390_lowcore.program_new_psw.addr =
+               PSW_ADDR_AMODE | (unsigned long) &reset_pgm_handler;
+
        do_reset_calls();
 }
index f9434d42ce9f60f65ec2b57d84684b4d82677300..c3f4d9b950836442f3d1f2d53c7166b79369af01 100644 (file)
@@ -16,7 +16,7 @@ do_reipl_asm: basr    %r13,0
                stm     %r0,%r15,__LC_GPREGS_SAVE_AREA
                stctl   %c0,%c15,__LC_CREGS_SAVE_AREA
                stam    %a0,%a15,__LC_AREGS_SAVE_AREA
-               stpx    __LC_PREFIX_SAVE_AREA
+               mvc     __LC_PREFIX_SAVE_AREA(4),dump_prefix_page-.Lpg0(%r13)
                stckc   .Lclkcmp-.Lpg0(%r13)
                mvc     __LC_CLOCK_COMP_SAVE_AREA(8),.Lclkcmp-.Lpg0(%r13)
                stpt    __LC_CPU_TIMER_SAVE_AREA
@@ -79,3 +79,7 @@ do_reipl_asm: basr    %r13,0
                .long   0x00000000,0x00000000
                .long   0x00000000,0x00000000
                .long   0x00000000,0x00000000
+       .globl dump_prefix_page
+dump_prefix_page:
+       .long 0x00000000
+
index f18ef260ca237bb53f9fb04958dbc99a0d4de886..dbb3eed38865fd88f8486ef4e5d63f6d62835f45 100644 (file)
@@ -20,7 +20,7 @@ do_reipl_asm: basr    %r13,0
                stg     %r0,__LC_GPREGS_SAVE_AREA-0x1000+8(%r1)
                stctg   %c0,%c15,__LC_CREGS_SAVE_AREA-0x1000(%r1)
                stam    %a0,%a15,__LC_AREGS_SAVE_AREA-0x1000(%r1)
-               stpx    __LC_PREFIX_SAVE_AREA-0x1000(%r1)
+               mvc     __LC_PREFIX_SAVE_AREA-0x1000(4,%r1),dump_prefix_page-.Lpg0(%r13)
                stfpc   __LC_FP_CREG_SAVE_AREA-0x1000(%r1)
                stckc   .Lclkcmp-.Lpg0(%r13)
                mvc     __LC_CLOCK_COMP_SAVE_AREA-0x1000(8,%r1),.Lclkcmp-.Lpg0(%r13)
@@ -103,3 +103,6 @@ do_reipl_asm:       basr    %r13,0
                .long   0x00000000,0x00000000
                .long   0x00000000,0x00000000
                .long   0x00000000,0x00000000
+       .globl dump_prefix_page
+dump_prefix_page:
+       .long 0x00000000
index be8688c0665c56bb19bcfaedd64e0cec7ea3d4ea..8a87355161fa53633e008ecdc175a9340311ed66 100644 (file)
@@ -3,6 +3,7 @@
  *
  *    Copyright (C) IBM Corp. 2006
  *    Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
+ *              Michael Holzheu <holzheu@de.ibm.com>
  */
 
 #include <asm/ptrace.h>
@@ -27,6 +28,26 @@ reset_mcck_handler:
 s390_reset_mcck_handler:
        .quad   0
 
+       .globl  reset_pgm_handler
+reset_pgm_handler:
+       stmg    %r0,%r15,__LC_SAVE_AREA
+       basr    %r13,0
+0:     lg      %r15,__LC_PANIC_STACK   # load panic stack
+       aghi    %r15,-STACK_FRAME_OVERHEAD
+       lg      %r1,s390_reset_pgm_handler-0b(%r13)
+       ltgr    %r1,%r1
+       jz      1f
+       basr    %r14,%r1
+       lmg     %r0,%r15,__LC_SAVE_AREA
+       lpswe   __LC_PGM_OLD_PSW
+1:     lpswe   disabled_wait_psw-0b(%r13)
+       .globl s390_reset_pgm_handler
+s390_reset_pgm_handler:
+       .quad   0
+       .align  8
+disabled_wait_psw:
+       .quad   0x0002000180000000,0x0000000000000000 + reset_pgm_handler
+
 #else /* CONFIG_64BIT */
 
        .globl  reset_mcck_handler
@@ -45,4 +66,25 @@ reset_mcck_handler:
 s390_reset_mcck_handler:
        .long   0
 
+       .globl  reset_pgm_handler
+reset_pgm_handler:
+       stm     %r0,%r15,__LC_SAVE_AREA
+       basr    %r13,0
+0:     l       %r15,__LC_PANIC_STACK   # load panic stack
+       ahi     %r15,-STACK_FRAME_OVERHEAD
+       l       %r1,s390_reset_pgm_handler-0b(%r13)
+       ltr     %r1,%r1
+       jz      1f
+       basr    %r14,%r1
+       lm      %r0,%r15,__LC_SAVE_AREA
+       lpsw    __LC_PGM_OLD_PSW
+
+1:     lpsw    disabled_wait_psw-0b(%r13)
+       .globl  s390_reset_pgm_handler
+s390_reset_pgm_handler:
+       .long   0
+disabled_wait_psw:
+       .align 8
+       .long   0x000a0000,0x00000000 + reset_pgm_handler
+
 #endif /* CONFIG_64BIT */
index 4faf96f8a83414ddf7f36eb46aa8bb21b4e50b90..bc5beaa8f98e13a0278dad9e612b9d41bef48383 100644 (file)
@@ -37,7 +37,7 @@ int register_external_interrupt(__u16 code, ext_int_handler_t handler)
         ext_int_info_t *p;
         int index;
 
-       p = (ext_int_info_t *) kmalloc(sizeof(ext_int_info_t), GFP_ATOMIC);
+       p = kmalloc(sizeof(ext_int_info_t), GFP_ATOMIC);
         if (p == NULL)
                 return -ENOMEM;
         p->code = code;
index a69856263009fc63efaa74cde0730994fe689ace..79e54894529da3b3d6f7757d6175bb70a94599a4 100644 (file)
@@ -1,41 +1,59 @@
 #
 # Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20-rc1
+# Sun Dec 17 14:20:47 2006
 #
 CONFIG_MMU=y
-CONFIG_UID16=y
 CONFIG_HIGHMEM=y
 CONFIG_GENERIC_ISA_DMA=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 
 #
 # Code maturity level options
 #
 CONFIG_EXPERIMENTAL=y
-CONFIG_CLEAN_COMPILE=y
-CONFIG_STANDALONE=y
 CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
 
 #
 # General setup
 #
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
 CONFIG_POSIX_MQUEUE=y
 # CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
 # CONFIG_AUDIT is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_HOTPLUG is not set
 # CONFIG_IKCONFIG is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
 # CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
 CONFIG_KALLSYMS=y
 # CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
 
 #
 # Loadable module support
@@ -43,17 +61,36 @@ CONFIG_IOSCHED_CFQ=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_OBSOLETE_MODPARM=y
 # CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
 CONFIG_KMOD=y
 
 #
-# General setup
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+
+#
+# General machine setup
 #
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
 # CONFIG_SMP is not set
+CONFIG_SPARC=y
 CONFIG_SPARC32=y
 CONFIG_SBUS=y
 CONFIG_SBUSCHAR=y
@@ -61,73 +98,170 @@ CONFIG_SERIAL_CONSOLE=y
 CONFIG_SUN_AUXIO=y
 CONFIG_SUN_IO=y
 CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
 CONFIG_SUN_PM=y
 # CONFIG_SUN4 is not set
 CONFIG_PCI=y
-# CONFIG_PCI_LEGACY_PROC is not set
-# CONFIG_PCI_NAMES is not set
+# CONFIG_PCI_MULTITHREAD_PROBE is not set
+# CONFIG_PCI_DEBUG is not set
 CONFIG_SUN_OPENPROMFS=m
+# CONFIG_SPARC_LED is not set
 CONFIG_BINFMT_ELF=y
 CONFIG_BINFMT_AOUT=y
 CONFIG_BINFMT_MISC=m
 CONFIG_SUNOS_EMUL=y
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
 
 #
-# Parallel port support
+# Networking
 #
-# CONFIG_PARPORT is not set
+CONFIG_NET=y
 
 #
-# Generic Driver Options
+# Networking options
 #
-# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_NET_KEY=m
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_AH=y
+CONFIG_INET_ESP=y
+CONFIG_INET_IPCOMP=y
+CONFIG_INET_XFRM_TUNNEL=y
+CONFIG_INET_TUNNEL=y
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_PRIVACY=y
+# CONFIG_IPV6_ROUTER_PREF is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
 
 #
-# Graphics support
+# DCCP Configuration (EXPERIMENTAL)
 #
-# CONFIG_FB is not set
+# CONFIG_IP_DCCP is not set
 
 #
-# Console display driver support
+# SCTP Configuration (EXPERIMENTAL)
 #
-# CONFIG_MDA_CONSOLE is not set
-# CONFIG_PROM_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
+CONFIG_IP_SCTP=m
+# CONFIG_SCTP_DBG_MSG is not set
+CONFIG_SCTP_DBG_OBJCNT=y
+# CONFIG_SCTP_HMAC_NONE is not set
+# CONFIG_SCTP_HMAC_SHA1 is not set
+CONFIG_SCTP_HMAC_MD5=y
 
 #
-# Memory Technology Devices (MTD)
+# TIPC Configuration (EXPERIMENTAL)
 #
-# CONFIG_MTD is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
 
 #
-# Serial drivers
+# QoS and/or fair queueing
 #
-# CONFIG_SERIAL_8250 is not set
+# CONFIG_NET_SCHED is not set
 
 #
-# Non-8250 serial port support
+# Network testing
 #
-CONFIG_SERIAL_SUNCORE=y
-CONFIG_SERIAL_SUNZILOG=y
-CONFIG_SERIAL_SUNZILOG_CONSOLE=y
-CONFIG_SERIAL_SUNSU=y
-CONFIG_SERIAL_SUNSU_CONSOLE=y
-# CONFIG_SERIAL_SUNSAB is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_NET_PKTGEN=m
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
 
 #
-# Misc Linux/SPARC drivers
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
 #
-CONFIG_SUN_OPENPROMIO=m
-CONFIG_SUN_MOSTEK_RTC=m
-# CONFIG_SUN_BPP is not set
-# CONFIG_SUN_VIDEOPIX is not set
-# CONFIG_SUN_AURORA is not set
-# CONFIG_TADPOLE_TS102_UCTRL is not set
-# CONFIG_SUN_JSFLASH is not set
-CONFIG_APM_RTC_IS_GMT=y
-CONFIG_RTC=m
 
 #
 # Block devices
@@ -137,28 +271,37 @@ CONFIG_RTC=m
 # CONFIG_BLK_CPQ_CISS_DA is not set
 # CONFIG_BLK_DEV_DAC960 is not set
 # CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
 CONFIG_BLK_DEV_LOOP=m
 CONFIG_BLK_DEV_CRYPTOLOOP=m
 # CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_CARMEL is not set
+# CONFIG_BLK_DEV_SX8 is not set
 CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
 CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
 
 #
-# ATA/ATAPI/MFM/RLL support
+# Misc devices
 #
-# CONFIG_IDE is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
 
 #
-# ISDN subsystem
+# ATA/ATAPI/MFM/RLL support
 #
-# CONFIG_ISDN is not set
+# CONFIG_IDE is not set
 
 #
 # SCSI device support
 #
+# CONFIG_RAID_ATTRS is not set
 CONFIG_SCSI=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
 CONFIG_SCSI_PROC_FS=y
 
 #
@@ -170,6 +313,7 @@ CONFIG_BLK_DEV_SD=y
 CONFIG_BLK_DEV_SR=m
 # CONFIG_BLK_DEV_SR_VENDOR is not set
 CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
 
 #
 # Some SCSI devices (e.g. CD jukebox) support multiple LUNs
@@ -177,57 +321,58 @@ CONFIG_CHR_DEV_SG=m
 # CONFIG_SCSI_MULTI_LUN is not set
 # CONFIG_SCSI_CONSTANTS is not set
 # CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
 
 #
-# SCSI Transport Attributes
+# SCSI Transports
 #
 CONFIG_SCSI_SPI_ATTRS=m
 # CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
 
 #
 # SCSI low-level drivers
 #
+# CONFIG_ISCSI_TCP is not set
 # CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
 # CONFIG_SCSI_ACARD is not set
 # CONFIG_SCSI_AACRAID is not set
 # CONFIG_SCSI_AIC7XXX is not set
 # CONFIG_SCSI_AIC7XXX_OLD is not set
 # CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
 # CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_MEGARAID is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
 # CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_EATA_PIO is not set
 # CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
 # CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
 # CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_STEX is not set
 # CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_QLOGIC_ISP is not set
-# CONFIG_SCSI_QLOGIC_FC is not set
 # CONFIG_SCSI_QLOGIC_1280 is not set
 CONFIG_SCSI_QLOGICPTI=m
-CONFIG_SCSI_QLA2XXX=y
-# CONFIG_SCSI_QLA21XX is not set
-# CONFIG_SCSI_QLA22XX is not set
-# CONFIG_SCSI_QLA2300 is not set
-# CONFIG_SCSI_QLA2322 is not set
-# CONFIG_SCSI_QLA6312 is not set
-# CONFIG_SCSI_QLA6322 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_LPFC is not set
 # CONFIG_SCSI_DC395x is not set
 # CONFIG_SCSI_DC390T is not set
 # CONFIG_SCSI_NSP32 is not set
 # CONFIG_SCSI_DEBUG is not set
 CONFIG_SCSI_SUNESP=y
+# CONFIG_SCSI_SRP is not set
 
 #
-# Fibre Channel support
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
 #
-# CONFIG_FC4 is not set
+# CONFIG_ATA is not set
 
 #
 # Multi-device support (RAID and LVM)
@@ -235,91 +380,42 @@ CONFIG_SCSI_SUNESP=y
 # CONFIG_MD is not set
 
 #
-# Networking support
-#
-CONFIG_NET=y
-
-#
-# Networking options
+# Fusion MPT device support
 #
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_NETLINK_DEV=y
-CONFIG_UNIX=y
-CONFIG_NET_KEY=m
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-# CONFIG_IP_PNP_BOOTP is not set
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-CONFIG_INET_AH=y
-CONFIG_INET_ESP=y
-CONFIG_INET_IPCOMP=y
-CONFIG_IPV6=m
-CONFIG_IPV6_PRIVACY=y
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_NETFILTER is not set
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
 
 #
-# SCTP Configuration (EXPERIMENTAL)
+# IEEE 1394 (FireWire) support
 #
-CONFIG_IP_SCTP=m
-# CONFIG_SCTP_DBG_MSG is not set
-CONFIG_SCTP_DBG_OBJCNT=y
-# CONFIG_SCTP_HMAC_NONE is not set
-# CONFIG_SCTP_HMAC_SHA1 is not set
-CONFIG_SCTP_HMAC_MD5=y
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
+# CONFIG_IEEE1394 is not set
 
 #
-# QoS and/or fair queueing
+# I2O device support
 #
-# CONFIG_NET_SCHED is not set
+# CONFIG_I2O is not set
 
 #
-# Network testing
+# Network device support
 #
-CONFIG_NET_PKTGEN=m
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
 CONFIG_NETDEVICES=y
 CONFIG_DUMMY=m
 # CONFIG_BONDING is not set
 # CONFIG_EQUALIZER is not set
 CONFIG_TUN=m
-# CONFIG_ETHERTAP is not set
 
 #
 # ARCnet devices
 #
 # CONFIG_ARCNET is not set
 
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
 #
 # Ethernet (10 or 100Mbit)
 #
@@ -330,6 +426,7 @@ CONFIG_HAPPYMEAL=m
 CONFIG_SUNBMAC=m
 CONFIG_SUNQE=m
 # CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
 # CONFIG_NET_VENDOR_3COM is not set
 
 #
@@ -350,14 +447,22 @@ CONFIG_SUNQE=m
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
 # CONFIG_SK98LIN is not set
 # CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+# CONFIG_QLA3XXX is not set
 
 #
 # Ethernet (10000 Mbit)
 #
+# CONFIG_CHELSIO_T1 is not set
 # CONFIG_IXGB is not set
 # CONFIG_S2IO is not set
+# CONFIG_MYRI10GE is not set
+# CONFIG_NETXEN_NIC is not set
 
 #
 # Token Ring devices
@@ -380,17 +485,24 @@ CONFIG_SUNQE=m
 # CONFIG_NET_FC is not set
 # CONFIG_SHAPER is not set
 # CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
 
 #
-# Unix98 PTY support
+# ISDN subsystem
 #
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
+# CONFIG_ISDN is not set
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
 
 #
 # Input device support
 #
 CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
 
 #
 # Userland interfaces
@@ -404,17 +516,6 @@ CONFIG_INPUT_JOYDEV=m
 CONFIG_INPUT_EVDEV=m
 CONFIG_INPUT_EVBUG=m
 
-#
-# Input I/O drivers
-#
-# CONFIG_GAMEPORT is not set
-CONFIG_SOUND_GAMEPORT=y
-CONFIG_SERIO=m
-# CONFIG_SERIO_I8042 is not set
-CONFIG_SERIO_SERPORT=m
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_PCIPS2 is not set
-
 #
 # Input Device Drivers
 #
@@ -424,6 +525,7 @@ CONFIG_KEYBOARD_SUNKBD=m
 # CONFIG_KEYBOARD_LKKBD is not set
 # CONFIG_KEYBOARD_XTKBD is not set
 # CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
 CONFIG_INPUT_MOUSE=y
 CONFIG_MOUSE_PS2=m
 CONFIG_MOUSE_SERIAL=m
@@ -432,6 +534,209 @@ CONFIG_MOUSE_SERIAL=m
 # CONFIG_INPUT_TOUCHSCREEN is not set
 # CONFIG_INPUT_MISC is not set
 
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=m
+# CONFIG_SERIO_I8042 is not set
+CONFIG_SERIO_SERPORT=m
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=m
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_SUNCORE=y
+CONFIG_SERIAL_SUNZILOG=y
+CONFIG_SERIAL_SUNZILOG_CONSOLE=y
+CONFIG_SERIAL_SUNSU=y
+CONFIG_SERIAL_SUNSU_CONSOLE=y
+# CONFIG_SERIAL_SUNSAB is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=m
+CONFIG_RTC=m
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_PROM_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# Real Time Clock
+#
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# Virtualization
+#
+
+#
+# Misc Linux/SPARC drivers
+#
+CONFIG_SUN_OPENPROMIO=m
+CONFIG_SUN_MOSTEK_RTC=m
+# CONFIG_SUN_BPP is not set
+# CONFIG_SUN_VIDEOPIX is not set
+# CONFIG_TADPOLE_TS102_UCTRL is not set
+# CONFIG_SUN_JSFLASH is not set
+
+#
+# Unix98 PTY support
+#
+CONFIG_UNIX98_PTY_COUNT=256
+
 #
 # File systems
 #
@@ -439,23 +744,30 @@ CONFIG_EXT2_FS=y
 CONFIG_EXT2_FS_XATTR=y
 CONFIG_EXT2_FS_POSIX_ACL=y
 CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
 # CONFIG_EXT3_FS is not set
-# CONFIG_JBD is not set
+# CONFIG_EXT4DEV_FS is not set
 CONFIG_FS_MBCACHE=y
 # CONFIG_REISERFS_FS is not set
 # CONFIG_JFS_FS is not set
 CONFIG_FS_POSIX_ACL=y
 CONFIG_XFS_FS=m
-CONFIG_XFS_RT=y
 CONFIG_XFS_QUOTA=y
 CONFIG_XFS_SECURITY=y
 CONFIG_XFS_POSIX_ACL=y
+CONFIG_XFS_RT=y
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
 # CONFIG_MINIX_FS is not set
 CONFIG_ROMFS_FS=m