aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CREDITS2
-rw-r--r--Documentation/DocBook/libata.tmpl2
-rw-r--r--Documentation/SubmitChecklist4
-rw-r--r--Documentation/SubmittingPatches6
-rw-r--r--Documentation/feature-removal-schedule.txt7
-rw-r--r--Documentation/filesystems/ntfs.txt2
-rw-r--r--Documentation/hwmon/w837938
-rw-r--r--Documentation/kdump/kdump.txt49
-rw-r--r--Documentation/pci.txt702
-rw-r--r--Documentation/powerpc/mpc52xx-device-tree-bindings.txt6
-rw-r--r--Documentation/scsi/aacraid.txt66
-rw-r--r--Documentation/usb/CREDITS2
-rw-r--r--MAINTAINERS11
-rw-r--r--README4
-rw-r--r--arch/i386/kernel/cpu/common.c13
-rw-r--r--arch/i386/kernel/nmi.c8
-rw-r--r--arch/i386/kernel/paravirt.c9
-rw-r--r--arch/i386/kernel/smpboot.c9
-rw-r--r--arch/i386/mach-voyager/voyager_smp.c6
-rw-r--r--arch/mips/Kconfig14
-rw-r--r--arch/mips/kernel/smtc.c55
-rw-r--r--arch/mips/mm/tlb-r4k.c1
-rw-r--r--arch/mips/vr41xx/common/irq.c12
-rw-r--r--arch/powerpc/boot/dts/lite5200.dts6
-rw-r--r--arch/powerpc/boot/dts/lite5200b.dts6
-rw-r--r--arch/powerpc/configs/cell_defconfig6
-rw-r--r--arch/powerpc/configs/chrp32_defconfig161
-rw-r--r--arch/powerpc/configs/g5_defconfig237
-rw-r--r--arch/powerpc/configs/iseries_defconfig132
-rw-r--r--arch/powerpc/configs/linkstation_defconfig111
-rw-r--r--arch/powerpc/configs/lite5200_defconfig39
-rw-r--r--arch/powerpc/configs/maple_defconfig91
-rw-r--r--arch/powerpc/configs/mpc7448_hpc2_defconfig175
-rw-r--r--arch/powerpc/configs/mpc834x_itx_defconfig187
-rw-r--r--arch/powerpc/configs/mpc834x_mds_defconfig97
-rw-r--r--arch/powerpc/configs/mpc8360emds_defconfig105
-rw-r--r--arch/powerpc/configs/mpc8540_ads_defconfig89
-rw-r--r--arch/powerpc/configs/mpc8560_ads_defconfig96
-rw-r--r--arch/powerpc/configs/mpc85xx_cds_defconfig96
-rw-r--r--arch/powerpc/configs/mpc8641_hpcn_defconfig98
-rw-r--r--arch/powerpc/configs/pmac32_defconfig202
-rw-r--r--arch/powerpc/configs/ppc64_defconfig5
-rw-r--r--arch/powerpc/configs/ps3_defconfig39
-rw-r--r--arch/powerpc/configs/pseries_defconfig224
-rw-r--r--arch/powerpc/kernel/pci_32.c5
-rw-r--r--arch/powerpc/platforms/83xx/mpc832x_mds.c2
-rw-r--r--arch/powerpc/platforms/83xx/mpc8360e_pb.c2
-rw-r--r--arch/powerpc/platforms/pseries/iommu.c3
-rw-r--r--arch/powerpc/sysdev/mmio_nvram.c40
-rw-r--r--arch/ppc/platforms/ev64360.c3
-rw-r--r--arch/x86_64/kernel/nmi.c2
-rw-r--r--block/elevator.c11
-rw-r--r--drivers/acpi/video.c2
-rw-r--r--drivers/ata/libata-eh.c4
-rw-r--r--drivers/ata/sata_mv.c5
-rw-r--r--drivers/ata/sata_via.c1
-rw-r--r--drivers/atm/horizon.c2
-rw-r--r--drivers/char/mem.c4
-rw-r--r--drivers/char/tlclk.c43
-rw-r--r--drivers/char/vr41xx_giu.c114
-rw-r--r--drivers/hid/hid-core.c6
-rw-r--r--drivers/hid/hid-input.c20
-rw-r--r--drivers/hwmon/hwmon-vid.c2
-rw-r--r--drivers/hwmon/w83793.c127
-rw-r--r--drivers/infiniband/hw/ehca/ehca_cq.c5
-rw-r--r--drivers/infiniband/hw/ehca/ehca_irq.c3
-rw-r--r--drivers/infiniband/ulp/srp/ib_srp.c20
-rw-r--r--drivers/kvm/kvm_main.c2
-rw-r--r--drivers/kvm/paging_tmpl.h2
-rw-r--r--drivers/kvm/svm.c3
-rw-r--r--drivers/kvm/vmx.c5
-rw-r--r--drivers/kvm/x86_emulate.c98
-rw-r--r--drivers/media/video/cx88/cx88-tvaudio.c2
-rw-r--r--drivers/media/video/ks0127.c8
-rw-r--r--drivers/media/video/saa7134/saa7134-cards.c14
-rw-r--r--drivers/media/video/tveeprom.c2
-rw-r--r--drivers/media/video/usbvideo/quickcam_messenger.h14
-rw-r--r--drivers/media/video/usbvision/usbvision-video.c3
-rw-r--r--drivers/media/video/v4l2-common.c9
-rw-r--r--drivers/media/video/video-buf.c3
-rw-r--r--drivers/media/video/vivi.c7
-rw-r--r--drivers/message/fusion/mptbase.c3
-rw-r--r--drivers/message/fusion/mptbase.h10
-rw-r--r--drivers/message/fusion/mptctl.c5
-rw-r--r--drivers/message/fusion/mptctl.h2
-rw-r--r--drivers/message/fusion/mptfc.c3
-rw-r--r--drivers/message/fusion/mptlan.c4
-rw-r--r--drivers/message/fusion/mptlan.h2
-rw-r--r--drivers/message/fusion/mptsas.c38
-rw-r--r--drivers/message/fusion/mptscsih.c19
-rw-r--r--drivers/message/fusion/mptscsih.h2
-rw-r--r--drivers/message/fusion/mptspi.c3
-rw-r--r--drivers/mmc/imxmmc.c3
-rw-r--r--drivers/mmc/omap.c15
-rw-r--r--drivers/mmc/pxamci.c2
-rw-r--r--drivers/mmc/tifm_sd.c3
-rw-r--r--drivers/mtd/Kconfig15
-rw-r--r--drivers/mtd/Makefile15
-rw-r--r--drivers/mtd/afs.c3
-rw-r--r--drivers/mtd/chips/amd_flash.c3
-rw-r--r--drivers/mtd/chips/cfi_cmdset_0001.c5
-rw-r--r--drivers/mtd/chips/cfi_cmdset_0002.c11
-rw-r--r--drivers/mtd/chips/cfi_cmdset_0020.c3
-rw-r--r--drivers/mtd/chips/gen_probe.c5
-rw-r--r--drivers/mtd/chips/jedec.c3
-rw-r--r--drivers/mtd/chips/jedec_probe.c17
-rw-r--r--drivers/mtd/chips/map_absent.c4
-rw-r--r--drivers/mtd/chips/map_ram.c4
-rw-r--r--drivers/mtd/chips/map_rom.c4
-rw-r--r--drivers/mtd/chips/sharp.c7
-rw-r--r--drivers/mtd/cmdlinepart.c5
-rw-r--r--drivers/mtd/devices/block2mtd.c3
-rw-r--r--drivers/mtd/devices/ms02-nv.c18
-rw-r--r--drivers/mtd/devices/mtd_dataflash.c2
-rw-r--r--drivers/mtd/devices/phram.c4
-rw-r--r--drivers/mtd/devices/slram.c7
-rw-r--r--drivers/mtd/ftl.c7
-rw-r--r--drivers/mtd/inftlcore.c12
-rw-r--r--drivers/mtd/maps/Kconfig71
-rw-r--r--drivers/mtd/maps/Makefile4
-rw-r--r--drivers/mtd/maps/amd76xrom.c34
-rw-r--r--drivers/mtd/maps/bast-flash.c2
-rw-r--r--drivers/mtd/maps/ceiva.c3
-rw-r--r--drivers/mtd/maps/ck804xrom.c356
-rw-r--r--drivers/mtd/maps/cstm_mips_ixx.c283
-rw-r--r--drivers/mtd/maps/esb2rom.c450
-rw-r--r--drivers/mtd/maps/integrator-flash.c4
-rw-r--r--drivers/mtd/maps/nettel.c5
-rw-r--r--drivers/mtd/maps/omap_nor.c4
-rw-r--r--drivers/mtd/maps/pcmciamtd.c3
-rw-r--r--drivers/mtd/maps/physmap.c5
-rw-r--r--drivers/mtd/maps/physmap_of.c255
-rw-r--r--drivers/mtd/maps/plat-ram.c3
-rw-r--r--drivers/mtd/maps/sa1100-flash.c4
-rw-r--r--drivers/mtd/maps/tqm834x.c8
-rw-r--r--drivers/mtd/maps/tqm8xxl.c3
-rw-r--r--drivers/mtd/mtd_blkdevs.c19
-rw-r--r--drivers/mtd/mtdblock.c10
-rw-r--r--drivers/mtd/mtdblock_ro.c7
-rw-r--r--drivers/mtd/mtdchar.c23
-rw-r--r--drivers/mtd/mtdconcat.c43
-rw-r--r--drivers/mtd/mtdcore.c93
-rw-r--r--drivers/mtd/mtdpart.c8
-rw-r--r--drivers/mtd/nand/Kconfig16
-rw-r--r--drivers/mtd/nand/Makefile5
-rw-r--r--drivers/mtd/nand/at91_nand.c223
-rw-r--r--drivers/mtd/nand/cafe.c770
-rw-r--r--drivers/mtd/nand/cafe_ecc.c1381
-rw-r--r--drivers/mtd/nand/cs553x_nand.c4
-rw-r--r--drivers/mtd/nand/diskonchip.c3
-rw-r--r--drivers/mtd/nand/nand_base.c133
-rw-r--r--drivers/mtd/nand/nand_bbt.c11
-rw-r--r--drivers/mtd/nand/nand_ecc.c4
-rw-r--r--drivers/mtd/nand/nandsim.c243
-rw-r--r--drivers/mtd/nand/ndfc.c2
-rw-r--r--drivers/mtd/nand/rtc_from4.c46
-rw-r--r--drivers/mtd/nand/s3c2410.c2
-rw-r--r--drivers/mtd/nftlcore.c12
-rw-r--r--drivers/mtd/onenand/generic.c5
-rw-r--r--drivers/mtd/onenand/onenand_base.c374
-rw-r--r--drivers/mtd/onenand/onenand_bbt.c14
-rw-r--r--drivers/mtd/redboot.c30
-rw-r--r--drivers/mtd/rfd_ftl.c3
-rw-r--r--drivers/mtd/ssfdc.c7
-rw-r--r--drivers/net/8139cp.c7
-rw-r--r--drivers/net/ehea/ehea.h2
-rw-r--r--drivers/net/ehea/ehea_main.c56
-rw-r--r--drivers/net/ehea/ehea_phyp.c10
-rw-r--r--drivers/net/irda/irda-usb.c45
-rw-r--r--drivers/net/irda/irda-usb.h1
-rw-r--r--drivers/net/irda/stir4200.c2
-rw-r--r--drivers/net/irda/vlsi_ir.c16
-rw-r--r--drivers/net/irda/vlsi_ir.h33
-rw-r--r--drivers/net/myri10ge/myri10ge.c23
-rw-r--r--drivers/net/netxen/netxen_nic.h7
-rw-r--r--drivers/net/netxen/netxen_nic_hw.c3
-rw-r--r--drivers/net/netxen/netxen_nic_main.c2
-rw-r--r--drivers/net/pcmcia/3c589_cs.c7
-rw-r--r--drivers/net/phy/phy.c3
-rw-r--r--drivers/net/s2io.c3
-rw-r--r--drivers/net/sis190.c2
-rw-r--r--drivers/net/skge.c2
-rw-r--r--drivers/net/sky2.c2
-rw-r--r--drivers/net/ucc_geth.c12
-rw-r--r--drivers/net/ucc_geth_phy.c134
-rw-r--r--drivers/net/wireless/bcm43xx/bcm43xx_main.c11
-rw-r--r--drivers/pci/pci-driver.c3
-rw-r--r--drivers/pci/quirks.c5
-rw-r--r--drivers/rtc/rtc-sh.c12
-rw-r--r--drivers/scsi/3w-xxxx.c60
-rw-r--r--drivers/scsi/3w-xxxx.h2
-rw-r--r--drivers/scsi/Kconfig2
-rw-r--r--drivers/scsi/aacraid/linit.c20
-rw-r--r--drivers/scsi/advansys.c3
-rw-r--r--drivers/scsi/iscsi_tcp.c12
-rw-r--r--drivers/scsi/libiscsi.c6
-rw-r--r--drivers/scsi/lpfc/lpfc_mem.c6
-rw-r--r--drivers/scsi/megaraid/megaraid_sas.c6
-rw-r--r--drivers/scsi/qla1280.c6
-rw-r--r--drivers/scsi/qla2xxx/qla_def.h2
-rw-r--r--drivers/scsi/qla2xxx/qla_gbl.h1
-rw-r--r--drivers/scsi/qla2xxx/qla_gs.c24
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c76
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c15
-rw-r--r--drivers/scsi/qla2xxx/qla_mbx.c12
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c59
-rw-r--r--drivers/scsi/qla2xxx/qla_version.h2
-rw-r--r--drivers/scsi/scsi_scan.c33
-rw-r--r--drivers/scsi/scsi_transport_iscsi.c2
-rw-r--r--drivers/scsi/scsi_transport_spi.c2
-rw-r--r--drivers/scsi/seagate.c5
-rw-r--r--drivers/scsi/sr.c2
-rw-r--r--drivers/usb/core/Kconfig16
-rw-r--r--drivers/usb/core/hub.c9
-rw-r--r--drivers/usb/host/ohci-ep93xx.c2
-rw-r--r--drivers/usb/input/Kconfig2
-rw-r--r--drivers/usb/input/hid-core.c44
-rw-r--r--drivers/usb/input/hid-ff.c5
-rw-r--r--drivers/usb/input/hiddev.c2
-rw-r--r--drivers/usb/input/usbhid.h3
-rw-r--r--drivers/usb/input/usbtouchscreen.c98
-rw-r--r--drivers/usb/net/asix.c18
-rw-r--r--drivers/usb/net/rndis_host.c23
-rw-r--r--drivers/usb/serial/funsoft.c2
-rw-r--r--drivers/usb/serial/option.c3
-rw-r--r--drivers/usb/storage/unusual_devs.h19
-rw-r--r--fs/block_dev.c10
-rw-r--r--fs/jffs/jffs_fm.c3
-rw-r--r--fs/jffs2/debug.c4
-rw-r--r--fs/jffs2/debug.h1
-rw-r--r--fs/jffs2/fs.c3
-rw-r--r--fs/jffs2/gc.c2
-rw-r--r--fs/jffs2/nodelist.h10
-rw-r--r--fs/jffs2/readinode.c3
-rw-r--r--fs/jffs2/scan.c6
-rw-r--r--fs/jffs2/summary.c6
-rw-r--r--fs/jffs2/super.c7
-rw-r--r--fs/jffs2/symlink.c2
-rw-r--r--fs/jffs2/wbuf.c21
-rw-r--r--fs/jffs2/xattr.c5
-rw-r--r--fs/ntfs/ChangeLog7
-rw-r--r--fs/ntfs/Makefile2
-rw-r--r--fs/ntfs/dir.c45
-rw-r--r--fs/ntfs/inode.c69
-rw-r--r--fs/ntfs/inode.h6
-rw-r--r--fs/ntfs/super.c7
-rw-r--r--fs/ocfs2/export.c5
-rw-r--r--fs/ocfs2/inode.c11
-rw-r--r--fs/ocfs2/namei.c69
-rw-r--r--fs/ocfs2/ocfs2_fs.h43
-rw-r--r--fs/ocfs2/symlink.c3
-rw-r--r--fs/reiserfs/file.c20
-rw-r--r--fs/reiserfs/inode.c2
-rw-r--r--include/asm-i386/processor.h1
-rw-r--r--include/asm-ia64/checksum.h6
-rw-r--r--include/asm-mips/irqflags.h22
-rw-r--r--include/asm-powerpc/atomic.h8
-rw-r--r--include/linux/Kbuild1
-rw-r--r--include/linux/hid-debug.h7
-rw-r--r--include/linux/libata.h1
-rw-r--r--include/linux/mmc/mmc.h2
-rw-r--r--include/linux/mtd/blktrans.h3
-rw-r--r--include/linux/mtd/mtd.h24
-rw-r--r--include/linux/mtd/nand.h15
-rw-r--r--include/linux/mtd/onenand.h8
-rw-r--r--include/linux/mtd/onenand_regs.h1
-rw-r--r--include/linux/mtio.h146
-rw-r--r--include/linux/netfilter_ipv4/ip_tables.h2
-rw-r--r--include/linux/qic117.h290
-rw-r--r--include/linux/reiserfs_fs_i.h2
-rw-r--r--include/linux/videodev2.h9
-rw-r--r--include/net/netfilter/nf_conntrack_compat.h1
-rw-r--r--include/net/sctp/sm.h1
-rw-r--r--ipc/shm.c2
-rw-r--r--kernel/irq/manage.c3
-rw-r--r--kernel/profile.c3
-rw-r--r--kernel/sys.c15
-rw-r--r--mm/mempolicy.c4
-rw-r--r--net/core/flow.c26
-rw-r--r--net/ipv4/netfilter/ip_conntrack_netlink.c2
-rw-r--r--net/ipv4/tcp_input.c6
-rw-r--r--net/ipv4/tcp_probe.c2
-rw-r--r--net/ipv6/addrconf.c6
-rw-r--r--net/ipv6/mcast.c6
-rw-r--r--net/netfilter/nf_conntrack_netlink.c2
-rw-r--r--net/sctp/sm_make_chunk.c6
-rw-r--r--net/sctp/sm_sideeffect.c2
-rw-r--r--net/sctp/sm_statefuns.c41
-rw-r--r--net/sctp/sm_statetable.c2
-rw-r--r--net/x25/x25_dev.c1
-rw-r--r--net/xfrm/xfrm_policy.c16
-rw-r--r--security/selinux/ss/services.c3
-rw-r--r--sound/usb/usx2y/usbusx2yaudio.c2
-rw-r--r--sound/usb/usx2y/usx2yhwdeppcm.c2
294 files changed, 8107 insertions, 3031 deletions
diff --git a/CREDITS b/CREDITS
index 75c5ce82720c..ae08e4c10ed4 100644
--- a/CREDITS
+++ b/CREDITS
@@ -3279,7 +3279,7 @@ S: Sevilla 41005
3279S: Spain 3279S: Spain
3280 3280
3281N: Linus Torvalds 3281N: Linus Torvalds
3282E: torvalds@osdl.org 3282E: torvalds@linux-foundation.org
3283D: Original kernel hacker 3283D: Original kernel hacker
3284S: 12725 SW Millikan Way, Suite 400 3284S: 12725 SW Millikan Way, Suite 400
3285S: Beaverton, Oregon 97005 3285S: Beaverton, Oregon 97005
diff --git a/Documentation/DocBook/libata.tmpl b/Documentation/DocBook/libata.tmpl
index 07a635590b36..e2e24b4778d4 100644
--- a/Documentation/DocBook/libata.tmpl
+++ b/Documentation/DocBook/libata.tmpl
@@ -883,7 +883,7 @@ and other resources, etc.
883 </chapter> 883 </chapter>
884 884
885 <chapter id="ataExceptions"> 885 <chapter id="ataExceptions">
886 <title>ATA errors &amp; exceptions</title> 886 <title>ATA errors and exceptions</title>
887 887
888 <para> 888 <para>
889 This chapter tries to identify what error/exception conditions exist 889 This chapter tries to identify what error/exception conditions exist
diff --git a/Documentation/SubmitChecklist b/Documentation/SubmitChecklist
index 2270efa10153..bfbb2718a279 100644
--- a/Documentation/SubmitChecklist
+++ b/Documentation/SubmitChecklist
@@ -72,3 +72,7 @@ kernel patches.
72 72
73 If the new code is substantial, addition of subsystem-specific fault 73 If the new code is substantial, addition of subsystem-specific fault
74 injection might be appropriate. 74 injection might be appropriate.
75
7622: Newly-added code has been compiled with `gcc -W'. This will generate
77 lots of noise, but is good for finding bugs like "warning: comparison
78 between signed and unsigned".
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 302d148c2e18..b0d0043f7c46 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -134,9 +134,9 @@ Do not send more than 15 patches at once to the vger mailing lists!!!
134 134
135 135
136Linus Torvalds is the final arbiter of all changes accepted into the 136Linus Torvalds is the final arbiter of all changes accepted into the
137Linux kernel. His e-mail address is <torvalds@osdl.org>. He gets 137Linux kernel. His e-mail address is <torvalds@linux-foundation.org>.
138a lot of e-mail, so typically you should do your best to -avoid- sending 138He gets a lot of e-mail, so typically you should do your best to -avoid-
139him e-mail. 139sending him e-mail.
140 140
141Patches which are bug fixes, are "obvious" changes, or similarly 141Patches which are bug fixes, are "obvious" changes, or similarly
142require little discussion should be sent or CC'd to Linus. Patches 142require little discussion should be sent or CC'd to Linus. Patches
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index fc532395d116..0ba6af02cdaf 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -318,3 +318,10 @@ Why: /proc/acpi/button has been replaced by events to the input layer
318Who: Len Brown <len.brown@intel.com> 318Who: Len Brown <len.brown@intel.com>
319 319
320--------------------------- 320---------------------------
321
322What: JFFS (version 1)
323When: 2.6.21
324Why: Unmaintained for years, superceded by JFFS2 for years.
325Who: Jeff Garzik <jeff@garzik.org>
326
327---------------------------
diff --git a/Documentation/filesystems/ntfs.txt b/Documentation/filesystems/ntfs.txt
index 13ba649bda75..81779068b09b 100644
--- a/Documentation/filesystems/ntfs.txt
+++ b/Documentation/filesystems/ntfs.txt
@@ -457,6 +457,8 @@ ChangeLog
457 457
458Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog. 458Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog.
459 459
4602.1.28:
461 - Fix a deadlock.
4602.1.27: 4622.1.27:
461 - Implement page migration support so the kernel can move memory used 463 - Implement page migration support so the kernel can move memory used
462 by NTFS files and directories around for management purposes. 464 by NTFS files and directories around for management purposes.
diff --git a/Documentation/hwmon/w83793 b/Documentation/hwmon/w83793
index 45e5408340e0..51171a83165b 100644
--- a/Documentation/hwmon/w83793
+++ b/Documentation/hwmon/w83793
@@ -45,18 +45,14 @@ This driver implements support for Winbond W83793G/W83793R chips.
45 temp5-6 have a 1 degree Celsiis resolution. 45 temp5-6 have a 1 degree Celsiis resolution.
46 46
47* Temperature sensor types 47* Temperature sensor types
48 Temp1-4 have 3 possible types. It can be read from (and written to) 48 Temp1-4 have 2 possible types. It can be read from (and written to)
49 temp[1-4]_type. 49 temp[1-4]_type.
50 - If the value of 0, the related temperature channel stops
51 monitoring.
52 - If the value is 3, it starts monitoring using a remote termal diode 50 - If the value is 3, it starts monitoring using a remote termal diode
53 (default). 51 (default).
54 - If the value is 5, it starts monitoring using the temperature sensor
55 in AMD CPU and get result by AMDSI.
56 - If the value is 6, it starts monitoring using the temperature sensor 52 - If the value is 6, it starts monitoring using the temperature sensor
57 in Intel CPU and get result by PECI. 53 in Intel CPU and get result by PECI.
58 Temp5-6 can be connected to external thermistors (value of 54 Temp5-6 can be connected to external thermistors (value of
59 temp[5-6]_type is 4). They can also be disabled (value is 0). 55 temp[5-6]_type is 4).
60 56
61* Alarm mechanism 57* Alarm mechanism
62 For voltage sensors, an alarm triggers if the measured value is below 58 For voltage sensors, an alarm triggers if the measured value is below
diff --git a/Documentation/kdump/kdump.txt b/Documentation/kdump/kdump.txt
index 5af6676a88f0..073306818347 100644
--- a/Documentation/kdump/kdump.txt
+++ b/Documentation/kdump/kdump.txt
@@ -17,7 +17,7 @@ You can use common Linux commands, such as cp and scp, to copy the
17memory image to a dump file on the local disk, or across the network to 17memory image to a dump file on the local disk, or across the network to
18a remote system. 18a remote system.
19 19
20Kdump and kexec are currently supported on the x86, x86_64, ppc64 and IA64 20Kdump and kexec are currently supported on the x86, x86_64, ppc64 and ia64
21architectures. 21architectures.
22 22
23When the system kernel boots, it reserves a small section of memory for 23When the system kernel boots, it reserves a small section of memory for
@@ -61,7 +61,12 @@ Install kexec-tools
61 61
622) Download the kexec-tools user-space package from the following URL: 622) Download the kexec-tools user-space package from the following URL:
63 63
64http://www.kernel.org/pub/linux/kernel/people/horms/kexec-tools/kexec-tools-testing-20061214.tar.gz 64http://www.kernel.org/pub/linux/kernel/people/horms/kexec-tools/kexec-tools-testing.tar.gz
65
66This is a symlink to the latest version, which at the time of writing is
6720061214, the only release of kexec-tools-testing so far. As other versions
68are made released, the older onese will remain available at
69http://www.kernel.org/pub/linux/kernel/people/horms/kexec-tools/
65 70
66Note: Latest kexec-tools-testing git tree is available at 71Note: Latest kexec-tools-testing git tree is available at
67 72
@@ -71,11 +76,11 @@ http://www.kernel.org/git/?p=linux/kernel/git/horms/kexec-tools-testing.git;a=su
71 76
723) Unpack the tarball with the tar command, as follows: 773) Unpack the tarball with the tar command, as follows:
73 78
74 tar xvpzf kexec-tools-testing-20061214.tar.gz 79 tar xvpzf kexec-tools-testing.tar.gz
75 80
764) Change to the kexec-tools-1.101 directory, as follows: 814) Change to the kexec-tools directory, as follows:
77 82
78 cd kexec-tools-testing-20061214 83 cd kexec-tools-testing-VERSION
79 84
805) Configure the package, as follows: 855) Configure the package, as follows:
81 86
@@ -224,7 +229,23 @@ Dump-capture kernel config options (Arch Dependent, ppc64)
224 229
225Dump-capture kernel config options (Arch Dependent, ia64) 230Dump-capture kernel config options (Arch Dependent, ia64)
226---------------------------------------------------------- 231----------------------------------------------------------
227(To be filled) 232
233- No specific options are required to create a dump-capture kernel
234 for ia64, other than those specified in the arch idependent section
235 above. This means that it is possible to use the system kernel
236 as a dump-capture kernel if desired.
237
238 The crashkernel region can be automatically placed by the system
239 kernel at run time. This is done by specifying the base address as 0,
240 or omitting it all together.
241
242 crashkernel=256M@0
243 or
244 crashkernel=256M
245
246 If the start address is specified, note that the start address of the
247 kernel will be aligned to 64Mb, so if the start address is not then
248 any space below the alignment point will be wasted.
228 249
229 250
230Boot into System Kernel 251Boot into System Kernel
@@ -243,6 +264,10 @@ Boot into System Kernel
243 264
244 On ppc64, use "crashkernel=128M@32M". 265 On ppc64, use "crashkernel=128M@32M".
245 266
267 On ia64, 256M@256M is a generous value that typically works.
268 The region may be automatically placed on ia64, see the
269 dump-capture kernel config option notes above.
270
246Load the Dump-capture Kernel 271Load the Dump-capture Kernel
247============================ 272============================
248 273
@@ -261,7 +286,8 @@ For x86_64:
261For ppc64: 286For ppc64:
262 - Use vmlinux 287 - Use vmlinux
263For ia64: 288For ia64:
264 (To be filled) 289 - Use vmlinux or vmlinuz.gz
290
265 291
266If you are using a uncompressed vmlinux image then use following command 292If you are using a uncompressed vmlinux image then use following command
267to load dump-capture kernel. 293to load dump-capture kernel.
@@ -277,18 +303,19 @@ to load dump-capture kernel.
277 --initrd=<initrd-for-dump-capture-kernel> \ 303 --initrd=<initrd-for-dump-capture-kernel> \
278 --append="root=<root-dev> <arch-specific-options>" 304 --append="root=<root-dev> <arch-specific-options>"
279 305
306Please note, that --args-linux does not need to be specified for ia64.
307It is planned to make this a no-op on that architecture, but for now
308it should be omitted
309
280Following are the arch specific command line options to be used while 310Following are the arch specific command line options to be used while
281loading dump-capture kernel. 311loading dump-capture kernel.
282 312
283For i386 and x86_64: 313For i386, x86_64 and ia64:
284 "init 1 irqpoll maxcpus=1" 314 "init 1 irqpoll maxcpus=1"
285 315
286For ppc64: 316For ppc64:
287 "init 1 maxcpus=1 noirqdistrib" 317 "init 1 maxcpus=1 noirqdistrib"
288 318
289For IA64
290 (To be filled)
291
292 319
293Notes on loading the dump-capture kernel: 320Notes on loading the dump-capture kernel:
294 321
diff --git a/Documentation/pci.txt b/Documentation/pci.txt
index 2b395e478961..fd5028eca13e 100644
--- a/Documentation/pci.txt
+++ b/Documentation/pci.txt
@@ -1,142 +1,231 @@
1 How To Write Linux PCI Drivers
2 1
3 by Martin Mares <mj@ucw.cz> on 07-Feb-2000 2 How To Write Linux PCI Drivers
3
4 by Martin Mares <mj@ucw.cz> on 07-Feb-2000
5 updated by Grant Grundler <grundler@parisc-linux.org> on 23-Dec-2006
4 6
5~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6The world of PCI is vast and it's full of (mostly unpleasant) surprises. 8The world of PCI is vast and full of (mostly unpleasant) surprises.
7Different PCI devices have different requirements and different bugs -- 9Since each CPU architecture implements different chip-sets and PCI devices
8because of this, the PCI support layer in Linux kernel is not as trivial 10have different requirements (erm, "features"), the result is the PCI support
9as one would wish. This short pamphlet tries to help all potential driver 11in the Linux kernel is not as trivial as one would wish. This short paper
10authors find their way through the deep forests of PCI handling. 12tries to introduce all potential driver authors to Linux APIs for
13PCI device drivers.
14
15A more complete resource is the third edition of "Linux Device Drivers"
16by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman.
17LDD3 is available for free (under Creative Commons License) from:
18
19 http://lwn.net/Kernel/LDD3/
20
21However, keep in mind that all documents are subject to "bit rot".
22Refer to the source code if things are not working as described here.
23
24Please send questions/comments/patches about Linux PCI API to the
25"Linux PCI" <linux-pci@atrey.karlin.mff.cuni.cz> mailing list.
26
11 27
12 28
130. Structure of PCI drivers 290. Structure of PCI drivers
14~~~~~~~~~~~~~~~~~~~~~~~~~~~ 30~~~~~~~~~~~~~~~~~~~~~~~~~~~
15There exist two kinds of PCI drivers: new-style ones (which leave most of 31PCI drivers "discover" PCI devices in a system via pci_register_driver().
16probing for devices to the PCI layer and support online insertion and removal 32Actually, it's the other way around. When the PCI generic code discovers
17of devices [thus supporting PCI, hot-pluggable PCI and CardBus in a single 33a new device, the driver with a matching "description" will be notified.
18driver]) and old-style ones which just do all the probing themselves. Unless 34Details on this below.
19you have a very good reason to do so, please don't use the old way of probing 35
20in any new code. After the driver finds the devices it wishes to operate 36pci_register_driver() leaves most of the probing for devices to
21on (either the old or the new way), it needs to perform the following steps: 37the PCI layer and supports online insertion/removal of devices [thus
38supporting hot-pluggable PCI, CardBus, and Express-Card in a single driver].
39pci_register_driver() call requires passing in a table of function
40pointers and thus dictates the high level structure of a driver.
41
42Once the driver knows about a PCI device and takes ownership, the
43driver generally needs to perform the following initialization:
22 44
23 Enable the device 45 Enable the device
24 Access device configuration space 46 Request MMIO/IOP resources
25 Discover resources (addresses and IRQ numbers) provided by the device 47 Set the DMA mask size (for both coherent and streaming DMA)
26 Allocate these resources 48 Allocate and initialize shared control data (pci_allocate_coherent())
27 Communicate with the device 49 Access device configuration space (if needed)
50 Register IRQ handler (request_irq())
51 Initialize non-PCI (i.e. LAN/SCSI/etc parts of the chip)
52 Enable DMA/processing engines
53
54When done using the device, and perhaps the module needs to be unloaded,
55the driver needs to take the follow steps:
56 Disable the device from generating IRQs
57 Release the IRQ (free_irq())
58 Stop all DMA activity
59 Release DMA buffers (both streaming and coherent)
60 Unregister from other subsystems (e.g. scsi or netdev)
61 Release MMIO/IOP resources
28 Disable the device 62 Disable the device
29 63
30Most of these topics are covered by the following sections, for the rest 64Most of these topics are covered in the following sections.
31look at <linux/pci.h>, it's hopefully well commented. 65For the rest look at LDD3 or <linux/pci.h> .
32 66
33If the PCI subsystem is not configured (CONFIG_PCI is not set), most of 67If the PCI subsystem is not configured (CONFIG_PCI is not set), most of
34the functions described below are defined as inline functions either completely 68the PCI functions described below are defined as inline functions either
35empty or just returning an appropriate error codes to avoid lots of ifdefs 69completely empty or just returning an appropriate error codes to avoid
36in the drivers. 70lots of ifdefs in the drivers.
71
37 72
38 73
391. New-style drivers 741. pci_register_driver() call
40~~~~~~~~~~~~~~~~~~~~ 75~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
41The new-style drivers just call pci_register_driver during their initialization
42with a pointer to a structure describing the driver (struct pci_driver) which
43contains:
44 76
45 name Name of the driver 77PCI device drivers call pci_register_driver() during their
78initialization with a pointer to a structure describing the driver
79(struct pci_driver):
80
81 field name Description
82 ---------- ------------------------------------------------------
46 id_table Pointer to table of device ID's the driver is 83 id_table Pointer to table of device ID's the driver is
47 interested in. Most drivers should export this 84 interested in. Most drivers should export this
48 table using MODULE_DEVICE_TABLE(pci,...). 85 table using MODULE_DEVICE_TABLE(pci,...).
49 probe Pointer to a probing function which gets called (during 86
50 execution of pci_register_driver for already existing 87 probe This probing function gets called (during execution
51 devices or later if a new device gets inserted) for all 88 of pci_register_driver() for already existing
52 PCI devices which match the ID table and are not handled 89 devices or later if a new device gets inserted) for
53 by the other drivers yet. This function gets passed a 90 all PCI devices which match the ID table and are not
54 pointer to the pci_dev structure representing the device 91 "owned" by the other drivers yet. This function gets
55 and also which entry in the ID table did the device 92 passed a "struct pci_dev *" for each device whose
56 match. It returns zero when the driver has accepted the 93 entry in the ID table matches the device. The probe
57 device or an error code (negative number) otherwise. 94 function returns zero when the driver chooses to
58 This function always gets called from process context, 95 take "ownership" of the device or an error code
59 so it can sleep. 96 (negative number) otherwise.
60 remove Pointer to a function which gets called whenever a 97 The probe function always gets called from process
61 device being handled by this driver is removed (either 98 context, so it can sleep.
62 during deregistration of the driver or when it's 99
63 manually pulled out of a hot-pluggable slot). This 100 remove The remove() function gets called whenever a device
64 function always gets called from process context, so it 101 being handled by this driver is removed (either during
65 can sleep. 102 deregistration of the driver or when it's manually
66 save_state Save a device's state before it's suspend. 103 pulled out of a hot-pluggable slot).
104 The remove function always gets called from process
105 context, so it can sleep.
106
67 suspend Put device into low power state. 107 suspend Put device into low power state.
108 suspend_late Put device into low power state.
109
110 resume_early Wake device from low power state.
68 resume Wake device from low power state. 111 resume Wake device from low power state.
112
113 (Please see Documentation/power/pci.txt for descriptions
114 of PCI Power Management and the related functions.)
115
69 enable_wake Enable device to generate wake events from a low power 116 enable_wake Enable device to generate wake events from a low power
70 state. 117 state.
71 118
72 (Please see Documentation/power/pci.txt for descriptions 119 shutdown Hook into reboot_notifier_list (kernel/sys.c).
73 of PCI Power Management and the related functions) 120 Intended to stop any idling DMA operations.
121 Useful for enabling wake-on-lan (NIC) or changing
122 the power state of a device before reboot.
123 e.g. drivers/net/e100.c.
124
125 err_handler See Documentation/pci-error-recovery.txt
126
127 multithread_probe Enable multi-threaded probe/scan. Driver must
128 provide its own locking/syncronization for init
129 operations if this is enabled.
130
74 131
75The ID table is an array of struct pci_device_id ending with a all-zero entry. 132The ID table is an array of struct pci_device_id entries ending with an
76Each entry consists of: 133all-zero entry. Each entry consists of:
134
135 vendor,device Vendor and device ID to match (or PCI_ANY_ID)
77 136
78 vendor, device Vendor and device ID to match (or PCI_ANY_ID)
79 subvendor, Subsystem vendor and device ID to match (or PCI_ANY_ID) 137 subvendor, Subsystem vendor and device ID to match (or PCI_ANY_ID)
80 subdevice 138 subdevice,
81 class, Device class to match. The class_mask tells which bits 139
82 class_mask of the class are honored during the comparison. 140 class Device class, subclass, and "interface" to match.
141 See Appendix D of the PCI Local Bus Spec or
142 include/linux/pci_ids.h for a full list of classes.
143 Most drivers do not need to specify class/class_mask
144 as vendor/device is normally sufficient.
145
146 class_mask limit which sub-fields of the class field are compared.
147 See drivers/scsi/sym53c8xx_2/ for example of usage.
148
83 driver_data Data private to the driver. 149 driver_data Data private to the driver.
150 Most drivers don't need to use driver_data field.
151 Best practice is to use driver_data as an index
152 into a static list of equivalent device types,
153 instead of using it as a pointer.
84 154
85Most drivers don't need to use the driver_data field. Best practice
86for use of driver_data is to use it as an index into a static list of
87equivalent device types, not to use it as a pointer.
88 155
89Have a table entry {PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID} 156Most drivers only need PCI_DEVICE() or PCI_DEVICE_CLASS() to set up
90to have probe() called for every PCI device known to the system. 157a pci_device_id table.
91 158
92New PCI IDs may be added to a device driver at runtime by writing 159New PCI IDs may be added to a device driver pci_ids table at runtime
93to the file /sys/bus/pci/drivers/{driver}/new_id. When added, the 160as shown below:
94driver will probe for all devices it can support.
95 161
96echo "vendor device subvendor subdevice class class_mask driver_data" > \ 162echo "vendor device subvendor subdevice class class_mask driver_data" > \
97 /sys/bus/pci/drivers/{driver}/new_id 163/sys/bus/pci/drivers/{driver}/new_id
98where all fields are passed in as hexadecimal values (no leading 0x). 164
99Users need pass only as many fields as necessary; vendor, device, 165All fields are passed in as hexadecimal values (no leading 0x).
100subvendor, and subdevice fields default to PCI_ANY_ID (FFFFFFFF), 166Users need pass only as many fields as necessary:
101class and classmask fields default to 0, and driver_data defaults to 167 o vendor, device, subvendor, and subdevice fields default
1020UL. Device drivers must initialize use_driver_data in the dynids struct 168 to PCI_ANY_ID (FFFFFFFF),
103in their pci_driver struct prior to calling pci_register_driver in order 169 o class and classmask fields default to 0
104for the driver_data field to get passed to the driver. Otherwise, only a 170 o driver_data defaults to 0UL.
1050 is passed in that field. 171
172Once added, the driver probe routine will be invoked for any unclaimed
173PCI devices listed in its (newly updated) pci_ids list.
106 174
107When the driver exits, it just calls pci_unregister_driver() and the PCI layer 175When the driver exits, it just calls pci_unregister_driver() and the PCI layer
108automatically calls the remove hook for all devices handled by the driver. 176automatically calls the remove hook for all devices handled by the driver.
109 177
178
1791.1 "Attributes" for driver functions/data
180
110Please mark the initialization and cleanup functions where appropriate 181Please mark the initialization and cleanup functions where appropriate
111(the corresponding macros are defined in <linux/init.h>): 182(the corresponding macros are defined in <linux/init.h>):
112 183
113 __init Initialization code. Thrown away after the driver 184 __init Initialization code. Thrown away after the driver
114 initializes. 185 initializes.
115 __exit Exit code. Ignored for non-modular drivers. 186 __exit Exit code. Ignored for non-modular drivers.
116 __devinit Device initialization code. Identical to __init if 187
117 the kernel is not compiled with CONFIG_HOTPLUG, normal 188
118 function otherwise. 189 __devinit Device initialization code.
190 Identical to __init if the kernel is not compiled
191 with CONFIG_HOTPLUG, normal function otherwise.
119 __devexit The same for __exit. 192 __devexit The same for __exit.
120 193
121Tips: 194Tips on when/where to use the above attributes:
122 The module_init()/module_exit() functions (and all initialization 195 o The module_init()/module_exit() functions (and all
123 functions called only from these) should be marked __init/exit. 196 initialization functions called _only_ from these)
124 The struct pci_driver shouldn't be marked with any of these tags. 197 should be marked __init/__exit.
125 The ID table array should be marked __devinitdata.
126 The probe() and remove() functions (and all initialization
127 functions called only from these) should be marked __devinit/exit.
128 If you are sure the driver is not a hotplug driver then use only
129 __init/exit __initdata/exitdata.
130 198
131 Pointers to functions marked as __devexit must be created using 199 o Do not mark the struct pci_driver.
132 __devexit_p(function_name). That will generate the function
133 name or NULL if the __devexit function will be discarded.
134 200
201 o The ID table array should be marked __devinitdata.
135 202
1362. How to find PCI devices manually (the old style) 203 o The probe() and remove() functions should be marked __devinit
137~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 204 and __devexit respectively. All initialization functions
138PCI drivers not using the pci_register_driver() interface search 205 exclusively called by the probe() routine, can be marked __devinit.
139for PCI devices manually using the following constructs: 206 Ditto for remove() and __devexit.
207
208 o If mydriver_probe() is marked with __devinit(), then all address
209 references to mydriver_probe must use __devexit_p(mydriver_probe)
210 (in the struct pci_driver declaration for example).
211 __devexit_p() will generate the function name _or_ NULL if the
212 function will be discarded. For an example, see drivers/net/tg3.c.
213
214 o Do NOT mark a function if you are not sure which mark to use.
215 Better to not mark the function than mark the function wrong.
216
217
218
2192. How to find PCI devices manually
220~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
221
222PCI drivers should have a really good reason for not using the
223pci_register_driver() interface to search for PCI devices.
224The main reason PCI devices are controlled by multiple drivers
225is because one PCI device implements several different HW services.
226E.g. combined serial/parallel port/floppy controller.
227
228A manual search may be performed using the following constructs:
140 229
141Searching by vendor and device ID: 230Searching by vendor and device ID:
142 231
@@ -150,87 +239,311 @@ Searching by class ID (iterate in a similar way):
150 239
151Searching by both vendor/device and subsystem vendor/device ID: 240Searching by both vendor/device and subsystem vendor/device ID:
152 241
153 pci_get_subsys(VENDOR_ID, DEVICE_ID, SUBSYS_VENDOR_ID, SUBSYS_DEVICE_ID, dev). 242 pci_get_subsys(VENDOR_ID,DEVICE_ID, SUBSYS_VENDOR_ID, SUBSYS_DEVICE_ID, dev).
154 243
155 You can use the constant PCI_ANY_ID as a wildcard replacement for 244You can use the constant PCI_ANY_ID as a wildcard replacement for
156VENDOR_ID or DEVICE_ID. This allows searching for any device from a 245VENDOR_ID or DEVICE_ID. This allows searching for any device from a
157specific vendor, for example. 246specific vendor, for example.
158 247
159 These functions are hotplug-safe. They increment the reference count on 248These functions are hotplug-safe. They increment the reference count on
160the pci_dev that they return. You must eventually (possibly at module unload) 249the pci_dev that they return. You must eventually (possibly at module unload)
161decrement the reference count on these devices by calling pci_dev_put(). 250decrement the reference count on these devices by calling pci_dev_put().
162 251
163 252
1643. Enabling and disabling devices
165~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
166 Before you do anything with the device you've found, you need to enable
167it by calling pci_enable_device() which enables I/O and memory regions of
168the device, allocates an IRQ if necessary, assigns missing resources if
169needed and wakes up the device if it was in suspended state. Please note
170that this function can fail.
171 253
172 If you want to use the device in bus mastering mode, call pci_set_master() 2543. Device Initialization Steps
173which enables the bus master bit in PCI_COMMAND register and also fixes 255~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
174the latency timer value if it's set to something bogus by the BIOS. 256
257As noted in the introduction, most PCI drivers need the following steps
258for device initialization:
175 259
176 If you want to use the PCI Memory-Write-Invalidate transaction, 260 Enable the device
261 Request MMIO/IOP resources
262 Set the DMA mask size (for both coherent and streaming DMA)
263 Allocate and initialize shared control data (pci_allocate_coherent())
264 Access device configuration space (if needed)
265 Register IRQ handler (request_irq())
266 Initialize non-PCI (i.e. LAN/SCSI/etc parts of the chip)
267 Enable DMA/processing engines.
268
269The driver can access PCI config space registers at any time.
270(Well, almost. When running BIST, config space can go away...but
271that will just result in a PCI Bus Master Abort and config reads
272will return garbage).
273
274
2753.1 Enable the PCI device
276~~~~~~~~~~~~~~~~~~~~~~~~~
277Before touching any device registers, the driver needs to enable
278the PCI device by calling pci_enable_device(). This will:
279 o wake up the device if it was in suspended state,
280 o allocate I/O and memory regions of the device (if BIOS did not),
281 o allocate an IRQ (if BIOS did not).
282
283NOTE: pci_enable_device() can fail! Check the return value.
284NOTE2: Also see pci_enable_device_bars() below. Drivers can
285 attempt to enable only a subset of BARs they need.
286
287[ OS BUG: we don't check resource allocations before enabling those
288 resources. The sequence would make more sense if we called
289 pci_request_resources() before calling pci_enable_device().
290 Currently, the device drivers can't detect the bug when when two
291 devices have been allocated the same range. This is not a common
292 problem and unlikely to get fixed soon.
293
294 This has been discussed before but not changed as of 2.6.19:
295 http://lkml.org/lkml/2006/3/2/194
296]
297
298pci_set_master() will enable DMA by setting the bus master bit
299in the PCI_COMMAND register. It also fixes the latency timer value if
300it's set to something bogus by the BIOS.
301
302If the PCI device can use the PCI Memory-Write-Invalidate transaction,
177call pci_set_mwi(). This enables the PCI_COMMAND bit for Mem-Wr-Inval 303call pci_set_mwi(). This enables the PCI_COMMAND bit for Mem-Wr-Inval
178and also ensures that the cache line size register is set correctly. 304and also ensures that the cache line size register is set correctly.
179Make sure to check the return value of pci_set_mwi(), not all architectures 305Check the return value of pci_set_mwi() as not all architectures
180may support Memory-Write-Invalidate. 306or chip-sets may support Memory-Write-Invalidate.
307
308
3093.2 Request MMIO/IOP resources
310~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
311Memory (MMIO), and I/O port addresses should NOT be read directly
312from the PCI device config space. Use the values in the pci_dev structure
313as the PCI "bus address" might have been remapped to a "host physical"
314address by the arch/chip-set specific kernel support.
181 315
182 If your driver decides to stop using the device (e.g., there was an 316See Documentation/IO-mapping.txt for how to access device registers
183error while setting it up or the driver module is being unloaded), it 317or device memory.
184should call pci_disable_device() to deallocate any IRQ resources, disable 318
185PCI bus-mastering, etc. You should not do anything with the device after 319The device driver needs to call pci_request_region() to verify
320no other device is already using the same address resource.
321Conversely, drivers should call pci_release_region() AFTER
186calling pci_disable_device(). 322calling pci_disable_device().
323The idea is to prevent two devices colliding on the same address range.
324
325[ See OS BUG comment above. Currently (2.6.19), The driver can only
326 determine MMIO and IO Port resource availability _after_ calling
327 pci_enable_device(). ]
328
329Generic flavors of pci_request_region() are request_mem_region()
330(for MMIO ranges) and request_region() (for IO Port ranges).
331Use these for address resources that are not described by "normal" PCI
332BARs.
333
334Also see pci_request_selected_regions() below.
335
336
3373.3 Set the DMA mask size
338~~~~~~~~~~~~~~~~~~~~~~~~~
339[ If anything below doesn't make sense, please refer to
340 Documentation/DMA-API.txt. This section is just a reminder that
341 drivers need to indicate DMA capabilities of the device and is not
342 an authoritative source for DMA interfaces. ]
343
344While all drivers should explicitly indicate the DMA capability
345(e.g. 32 or 64 bit) of the PCI bus master, devices with more than
34632-bit bus master capability for streaming data need the driver
347to "register" this capability by calling pci_set_dma_mask() with
348appropriate parameters. In general this allows more efficient DMA
349on systems where System RAM exists above 4G _physical_ address.
350
351Drivers for all PCI-X and PCIe compliant devices must call
352pci_set_dma_mask() as they are 64-bit DMA devices.
353
354Similarly, drivers must also "register" this capability if the device
355can directly address "consistent memory" in System RAM above 4G physical
356address by calling pci_set_consistent_dma_mask().
357Again, this includes drivers for all PCI-X and PCIe compliant devices.
358Many 64-bit "PCI" devices (before PCI-X) and some PCI-X devices are
35964-bit DMA capable for payload ("streaming") data but not control
360("consistent") data.
361
362
3633.4 Setup shared control data
364~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
365Once the DMA masks are set, the driver can allocate "consistent" (a.k.a. shared)
366memory. See Documentation/DMA-API.txt for a full description of
367the DMA APIs. This section is just a reminder that it needs to be done
368before enabling DMA on the device.
369
370
3713.5 Initialize device registers
372~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
373Some drivers will need specific "capability" fields programmed
374or other "vendor specific" register initialized or reset.
375E.g. clearing pending interrupts.
376
377
3783.6 Register IRQ handler
379~~~~~~~~~~~~~~~~~~~~~~~~
380While calling request_irq() is the the last step described here,
381this is often just another intermediate step to initialize a device.
382This step can often be deferred until the device is opened for use.
383
384All interrupt handlers for IRQ lines should be registered with IRQF_SHARED
385and use the devid to map IRQs to devices (remember that all PCI IRQ lines
386can be shared).
387
388request_irq() will associate an interrupt handler and device handle
389with an interrupt number. Historically interrupt numbers represent
390IRQ lines which run from the PCI device to the Interrupt controller.
391With MSI and MSI-X (more below) the interrupt number is a CPU "vector".
392
393request_irq() also enables the interrupt. Make sure the device is
394quiesced and does not have any interrupts pending before registering
395the interrupt handler.
396
397MSI and MSI-X are PCI capabilities. Both are "Message Signaled Interrupts"
398which deliver interrupts to the CPU via a DMA write to a Local APIC.
399The fundamental difference between MSI and MSI-X is how multiple
400"vectors" get allocated. MSI requires contiguous blocks of vectors
401while MSI-X can allocate several individual ones.
402
403MSI capability can be enabled by calling pci_enable_msi() or
404pci_enable_msix() before calling request_irq(). This causes
405the PCI support to program CPU vector data into the PCI device
406capability registers.
407
408If your PCI device supports both, try to enable MSI-X first.
409Only one can be enabled at a time. Many architectures, chip-sets,
410or BIOSes do NOT support MSI or MSI-X and the call to pci_enable_msi/msix
411will fail. This is important to note since many drivers have
412two (or more) interrupt handlers: one for MSI/MSI-X and another for IRQs.
413They choose which handler to register with request_irq() based on the
414return value from pci_enable_msi/msix().
415
416There are (at least) two really good reasons for using MSI:
4171) MSI is an exclusive interrupt vector by definition.
418 This means the interrupt handler doesn't have to verify
419 its device caused the interrupt.
420
4212) MSI avoids DMA/IRQ race conditions. DMA to host memory is guaranteed
422 to be visible to the host CPU(s) when the MSI is delivered. This
423 is important for both data coherency and avoiding stale control data.
424 This guarantee allows the driver to omit MMIO reads to flush
425 the DMA stream.
426
427See drivers/infiniband/hw/mthca/ or drivers/net/tg3.c for examples
428of MSI/MSI-X usage.
429
430
431
4324. PCI device shutdown
433~~~~~~~~~~~~~~~~~~~~~~~
434
435When a PCI device driver is being unloaded, most of the following
436steps need to be performed:
437
438 Disable the device from generating IRQs
439 Release the IRQ (free_irq())
440 Stop all DMA activity
441 Release DMA buffers (both streaming and consistent)
442 Unregister from other subsystems (e.g. scsi or netdev)
443 Disable device from responding to MMIO/IO Port addresses
444 Release MMIO/IO Port resource(s)
445
446
4474.1 Stop IRQs on the device
448~~~~~~~~~~~~~~~~~~~~~~~~~~~
449How to do this is chip/device specific. If it's not done, it opens
450the possibility of a "screaming interrupt" if (and only if)
451the IRQ is shared with another device.
452
453When the shared IRQ handler is "unhooked", the remaining devices
454using the same IRQ line will still need the IRQ enabled. Thus if the
455"unhooked" device asserts IRQ line, the system will respond assuming
456it was one of the remaining devices asserted the IRQ line. Since none
457of the other devices will handle the IRQ, the system will "hang" until
458it decides the IRQ isn't going to get handled and masks the IRQ (100,000
459iterations later). Once the shared IRQ is masked, the remaining devices
460will stop functioning properly. Not a nice situation.
461
462This is another reason to use MSI or MSI-X if it's available.
463MSI and MSI-X are defined to be exclusive interrupts and thus
464are not susceptible to the "screaming interrupt" problem.
465
466
4674.2 Release the IRQ
468~~~~~~~~~~~~~~~~~~~
469Once the device is quiesced (no more IRQs), one can call free_irq().
470This function will return control once any pending IRQs are handled,
471"unhook" the drivers IRQ handler from that IRQ, and finally release
472the IRQ if no one else is using it.
473
474
4754.3 Stop all DMA activity
476~~~~~~~~~~~~~~~~~~~~~~~~~
477It's extremely important to stop all DMA operations BEFORE attempting
478to deallocate DMA control data. Failure to do so can result in memory
479corruption, hangs, and on some chip-sets a hard crash.
187 480
1884. How to access PCI config space 481Stopping DMA after stopping the IRQs can avoid races where the
482IRQ handler might restart DMA engines.
483
484While this step sounds obvious and trivial, several "mature" drivers
485didn't get this step right in the past.
486
487
4884.4 Release DMA buffers
489~~~~~~~~~~~~~~~~~~~~~~~
490Once DMA is stopped, clean up streaming DMA first.
491I.e. unmap data buffers and return buffers to "upstream"
492owners if there is one.
493
494Then clean up "consistent" buffers which contain the control data.
495
496See Documentation/DMA-API.txt for details on unmapping interfaces.
497
498
4994.5 Unregister from other subsystems
500~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
501Most low level PCI device drivers support some other subsystem
502like USB, ALSA, SCSI, NetDev, Infiniband, etc. Make sure your
503driver isn't losing resources from that other subsystem.
504If this happens, typically the symptom is an Oops (panic) when
505the subsystem attempts to call into a driver that has been unloaded.
506
507
5084.6 Disable Device from responding to MMIO/IO Port addresses
509~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
510io_unmap() MMIO or IO Port resources and then call pci_disable_device().
511This is the symmetric opposite of pci_enable_device().
512Do not access device registers after calling pci_disable_device().
513
514
5154.7 Release MMIO/IO Port Resource(s)
516~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
517Call pci_release_region() to mark the MMIO or IO Port range as available.
518Failure to do so usually results in the inability to reload the driver.
519
520
521
5225. How to access PCI config space
189~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 523~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
190 You can use pci_(read|write)_config_(byte|word|dword) to access the config 524
525You can use pci_(read|write)_config_(byte|word|dword) to access the config
191space of a device represented by struct pci_dev *. All these functions return 0 526space of a device represented by struct pci_dev *. All these functions return 0
192when successful or an error code (PCIBIOS_...) which can be translated to a text 527when successful or an error code (PCIBIOS_...) which can be translated to a text
193string by pcibios_strerror. Most drivers expect that accesses to valid PCI 528string by pcibios_strerror. Most drivers expect that accesses to valid PCI
194devices don't fail. 529devices don't fail.
195 530
196 If you don't have a struct pci_dev available, you can call 531If you don't have a struct pci_dev available, you can call
197pci_bus_(read|write)_config_(byte|word|dword) to access a given device 532pci_bus_(read|write)_config_(byte|word|dword) to access a given device
198and function on that bus. 533and function on that bus.
199 534
200 If you access fields in the standard portion of the config header, please 535If you access fields in the standard portion of the config header, please
201use symbolic names of locations and bits declared in <linux/pci.h>. 536use symbolic names of locations and bits declared in <linux/pci.h>.
202 537
203 If you need to access Extended PCI Capability registers, just call 538If you need to access Extended PCI Capability registers, just call
204pci_find_capability() for the particular capability and it will find the 539pci_find_capability() for the particular capability and it will find the
205corresponding register block for you. 540corresponding register block for you.
206 541
207 542
2085. Addresses and interrupts
209~~~~~~~~~~~~~~~~~~~~~~~~~~~
210 Memory and port addresses and interrupt numbers should NOT be read from the
211config space. You should use the values in the pci_dev structure as they might
212have been remapped by the kernel.
213
214 See Documentation/IO-mapping.txt for how to access device memory.
215
216 The device driver needs to call pci_request_region() to make sure
217no other device is already using the same resource. The driver is expected
218to determine MMIO and IO Port resource availability _before_ calling
219pci_enable_device(). Conversely, drivers should call pci_release_region()
220_after_ calling pci_disable_device(). The idea is to prevent two devices
221colliding on the same address range.
222
223Generic flavors of pci_request_region() are request_mem_region()
224(for MMIO ranges) and request_region() (for IO Port ranges).
225Use these for address resources that are not described by "normal" PCI
226interfaces (e.g. BAR).
227
228 All interrupt handlers should be registered with IRQF_SHARED and use the devid
229to map IRQs to devices (remember that all PCI interrupts are shared).
230
231 543
2326. Other interesting functions 5446. Other interesting functions
233~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 545~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
546
234pci_find_slot() Find pci_dev corresponding to given bus and 547pci_find_slot() Find pci_dev corresponding to given bus and
235 slot numbers. 548 slot numbers.
236pci_set_power_state() Set PCI Power Management state (0=D0 ... 3=D3) 549pci_set_power_state() Set PCI Power Management state (0=D0 ... 3=D3)
@@ -247,11 +560,12 @@ pci_set_mwi() Enable Memory-Write-Invalidate transactions.
247pci_clear_mwi() Disable Memory-Write-Invalidate transactions. 560pci_clear_mwi() Disable Memory-Write-Invalidate transactions.
248 561
249 562
563
2507. Miscellaneous hints 5647. Miscellaneous hints
251~~~~~~~~~~~~~~~~~~~~~~ 565~~~~~~~~~~~~~~~~~~~~~~
252When displaying PCI slot names to the user (for example when a driver wants 566
253to tell the user what card has it found), please use pci_name(pci_dev) 567When displaying PCI device names to the user (for example when a driver wants
254for this purpose. 568to tell the user what card has it found), please use pci_name(pci_dev).
255 569
256Always refer to the PCI devices by a pointer to the pci_dev structure. 570Always refer to the PCI devices by a pointer to the pci_dev structure.
257All PCI layer functions use this identification and it's the only 571All PCI layer functions use this identification and it's the only
@@ -259,31 +573,113 @@ reasonable one. Don't use bus/slot/function numbers except for very
259special purposes -- on systems with multiple primary buses their semantics 573special purposes -- on systems with multiple primary buses their semantics
260can be pretty complex. 574can be pretty complex.
261 575
262If you're going to use PCI bus mastering DMA, take a look at
263Documentation/DMA-mapping.txt.
264
265Don't try to turn on Fast Back to Back writes in your driver. All devices 576Don't try to turn on Fast Back to Back writes in your driver. All devices
266on the bus need to be capable of doing it, so this is something which needs 577on the bus need to be capable of doing it, so this is something which needs
267to be handled by platform and generic code, not individual drivers. 578to be handled by platform and generic code, not individual drivers.
268 579
269 580
581
2708. Vendor and device identifications 5828. Vendor and device identifications
271~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 583~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
272For the future, let's avoid adding device ids to include/linux/pci_ids.h.
273 584
274PCI_VENDOR_ID_xxx for vendors, and a hex constant for device ids. 585One is not not required to add new device ids to include/linux/pci_ids.h.
586Please add PCI_VENDOR_ID_xxx for vendors and a hex constant for device ids.
587
588PCI_VENDOR_ID_xxx constants are re-used. The device ids are arbitrary
589hex numbers (vendor controlled) and normally used only in a single
590location, the pci_device_id table.
591
592Please DO submit new vendor/device ids to pciids.sourceforge.net project.
593
275 594
276Rationale: PCI_VENDOR_ID_xxx constants are re-used, but device ids are not.
277 Further, device ids are arbitrary hex numbers, normally used only in a
278 single location, the pci_device_id table.
279 595
2809. Obsolete functions 5969. Obsolete functions
281~~~~~~~~~~~~~~~~~~~~~ 597~~~~~~~~~~~~~~~~~~~~~
598
282There are several functions which you might come across when trying to 599There are several functions which you might come across when trying to
283port an old driver to the new PCI interface. They are no longer present 600port an old driver to the new PCI interface. They are no longer present
284in the kernel as they aren't compatible with hotplug or PCI domains or 601in the kernel as they aren't compatible with hotplug or PCI domains or
285having sane locking. 602having sane locking.
286 603
287pci_find_device() Superseded by pci_get_device() 604pci_find_device() Superseded by pci_get_device()
288pci_find_subsys() Superseded by pci_get_subsys() 605pci_find_subsys() Superseded by pci_get_subsys()
289pci_find_slot() Superseded by pci_get_slot() 606pci_find_slot() Superseded by pci_get_slot()
607
608
609The alternative is the traditional PCI device driver that walks PCI
610device lists. This is still possible but discouraged.
611
612
613
61410. pci_enable_device_bars() and Legacy I/O Port space
615~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
616
617Large servers may not be able to provide I/O port resources to all PCI
618devices. I/O Port space is only 64KB on Intel Architecture[1] and is
619likely also fragmented since the I/O base register of PCI-to-PCI
620bridge will usually be aligned to a 4KB boundary[2]. On such systems,
621pci_enable_device() and pci_request_region() will fail when
622attempting to enable I/O Port regions that don't have I/O Port
623resources assigned.
624
625Fortunately, many PCI devices which request I/O Port resources also
626provide access to the same registers via MMIO BARs. These devices can
627be handled without using I/O port space and the drivers typically
628offer a CONFIG_ option to only use MMIO regions
629(e.g. CONFIG_TULIP_MMIO). PCI devices typically provide I/O port
630interface for legacy OSes and will work when I/O port resources are not
631assigned. The "PCI Local Bus Specification Revision 3.0" discusses
632this on p.44, "IMPLEMENTATION NOTE".
633
634If your PCI device driver doesn't need I/O port resources assigned to
635I/O Port BARs, you should use pci_enable_device_bars() instead of
636pci_enable_device() in order not to enable I/O port regions for the
637corresponding devices. In addition, you should use
638pci_request_selected_regions() and pci_release_selected_regions()
639instead of pci_request_regions()/pci_release_regions() in order not to
640request/release I/O port regions for the corresponding devices.
641
642[1] Some systems support 64KB I/O port space per PCI segment.
643[2] Some PCI-to-PCI bridges support optional 1KB aligned I/O base.
644
645
646
64711. MMIO Space and "Write Posting"
648~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
649
650Converting a driver from using I/O Port space to using MMIO space
651often requires some additional changes. Specifically, "write posting"
652needs to be handled. Many drivers (e.g. tg3, acenic, sym53c8xx_2)
653already do this. I/O Port space guarantees write transactions reach the PCI
654device before the CPU can continue. Writes to MMIO space allow the CPU
655to continue before the transaction reaches the PCI device. HW weenies
656call this "Write Posting" because the write completion is "posted" to
657the CPU before the transaction has reached its destination.
658
659Thus, timing sensitive code should add readl() where the CPU is
660expected to wait before doing other work. The classic "bit banging"
661sequence works fine for I/O Port space:
662
663 for (i = 8; --i; val >>= 1) {
664 outb(val & 1, ioport_reg); /* write bit */
665 udelay(10);
666 }
667
668The same sequence for MMIO space should be:
669
670 for (i = 8; --i; val >>= 1) {
671 writeb(val & 1, mmio_reg); /* write bit */
672 readb(safe_mmio_reg); /* flush posted write */
673 udelay(10);
674 }
675
676It is important that "safe_mmio_reg" not have any side effects that
677interferes with the correct operation of the device.
678
679Another case to watch out for is when resetting a PCI device. Use PCI
680Configuration space reads to flush the writel(). This will gracefully
681handle the PCI master abort on all platforms if the PCI device is
682expected to not respond to a readl(). Most x86 platforms will allow
683MMIO reads to master abort (a.k.a. "Soft Fail") and return garbage
684(e.g. ~0). But many RISC platforms will crash (a.k.a."Hard Fail").
685
diff --git a/Documentation/powerpc/mpc52xx-device-tree-bindings.txt b/Documentation/powerpc/mpc52xx-device-tree-bindings.txt
index 7fb3b8a44eb6..69f016f02bb0 100644
--- a/Documentation/powerpc/mpc52xx-device-tree-bindings.txt
+++ b/Documentation/powerpc/mpc52xx-device-tree-bindings.txt
@@ -4,6 +4,12 @@ MPC52xx Device Tree Bindings
4(c) 2006 Secret Lab Technologies Ltd 4(c) 2006 Secret Lab Technologies Ltd
5Grant Likely <grant.likely at secretlab.ca> 5Grant Likely <grant.likely at secretlab.ca>
6 6
7********** DRAFT ***********
8* WARNING: Do not depend on the stability of these bindings just yet.
9* The MPC5200 device tree conventions are still in flux
10* Keep an eye on the linuxppc-dev mailing list for more details
11********** DRAFT ***********
12
7I - Introduction 13I - Introduction
8================ 14================
9Boards supported by the arch/powerpc architecture require device tree be 15Boards supported by the arch/powerpc architecture require device tree be
diff --git a/Documentation/scsi/aacraid.txt b/Documentation/scsi/aacraid.txt
index 3367130e64f6..dc8e44fc650f 100644
--- a/Documentation/scsi/aacraid.txt
+++ b/Documentation/scsi/aacraid.txt
@@ -11,43 +11,42 @@ the original).
11Supported Cards/Chipsets 11Supported Cards/Chipsets
12------------------------- 12-------------------------
13 PCI ID (pci.ids) OEM Product 13 PCI ID (pci.ids) OEM Product
14 9005:0283:9005:0283 Adaptec Catapult (3210S with arc firmware)
15 9005:0284:9005:0284 Adaptec Tomcat (3410S with arc firmware)
16 9005:0285:9005:0285 Adaptec 2200S (Vulcan) 14 9005:0285:9005:0285 Adaptec 2200S (Vulcan)
17 9005:0285:9005:0286 Adaptec 2120S (Crusader) 15 9005:0285:9005:0286 Adaptec 2120S (Crusader)
18 9005:0285:9005:0287 Adaptec 2200S (Vulcan-2m) 16 9005:0285:9005:0287 Adaptec 2200S (Vulcan-2m)
19 9005:0285:9005:0288 Adaptec 3230S (Harrier) 17 9005:0285:9005:0288 Adaptec 3230S (Harrier)
20 9005:0285:9005:0289 Adaptec 3240S (Tornado) 18 9005:0285:9005:0289 Adaptec 3240S (Tornado)
21 9005:0285:9005:028a Adaptec 2020ZCR (Skyhawk) 19 9005:0285:9005:028a Adaptec 2020ZCR (Skyhawk)
22 9005:0285:9005:028b Adaptec 2025ZCR (Terminator) 20 9005:0285:9005:028b Adaptec 2025ZCR (Terminator)
23 9005:0286:9005:028c Adaptec 2230S (Lancer) 21 9005:0286:9005:028c Adaptec 2230S (Lancer)
24 9005:0286:9005:028c Adaptec 2230SLP (Lancer) 22 9005:0286:9005:028c Adaptec 2230SLP (Lancer)
25 9005:0286:9005:028d Adaptec 2130S (Lancer) 23 9005:0286:9005:028d Adaptec 2130S (Lancer)
26 9005:0285:9005:028e Adaptec 2020SA (Skyhawk) 24 9005:0285:9005:028e Adaptec 2020SA (Skyhawk)
27 9005:0285:9005:028f Adaptec 2025SA (Terminator) 25 9005:0285:9005:028f Adaptec 2025SA (Terminator)
28 9005:0285:9005:0290 Adaptec 2410SA (Jaguar) 26 9005:0285:9005:0290 Adaptec 2410SA (Jaguar)
29 9005:0285:103c:3227 Adaptec 2610SA (Bearcat HP release) 27 9005:0285:103c:3227 Adaptec 2610SA (Bearcat HP release)
30 9005:0285:9005:0293 Adaptec 21610SA (Corsair-16) 28 9005:0285:9005:0293 Adaptec 21610SA (Corsair-16)
31 9005:0285:9005:0296 Adaptec 2240S (SabreExpress) 29 9005:0285:9005:0296 Adaptec 2240S (SabreExpress)
32 9005:0285:9005:0292 Adaptec 2810SA (Corsair-8) 30 9005:0285:9005:0292 Adaptec 2810SA (Corsair-8)
33 9005:0285:9005:0294 Adaptec Prowler 31 9005:0285:9005:0297 Adaptec 4005 (AvonPark)
34 9005:0285:9005:0297 Adaptec 4005SAS (AvonPark) 32 9005:0285:9005:0298 Adaptec 4000 (BlackBird)
35 9005:0285:9005:0298 Adaptec 4000SAS (BlackBird)
36 9005:0285:9005:0299 Adaptec 4800SAS (Marauder-X) 33 9005:0285:9005:0299 Adaptec 4800SAS (Marauder-X)
37 9005:0285:9005:029a Adaptec 4805SAS (Marauder-E) 34 9005:0285:9005:029a Adaptec 4805SAS (Marauder-E)
38 9005:0286:9005:029b Adaptec 2820SA (Intruder) 35 9005:0286:9005:029b Adaptec 2820SA (Intruder)
39 9005:0286:9005:029c Adaptec 2620SA (Intruder) 36 9005:0286:9005:029c Adaptec 2620SA (Intruder)
40 9005:0286:9005:029d Adaptec 2420SA (Intruder HP release) 37 9005:0286:9005:029d Adaptec 2420SA (Intruder HP release)
41 9005:0286:9005:02a2 Adaptec 3800SAS (Hurricane44) 38 9005:0286:9005:02ac Adaptec 1800 (Typhoon44)
42 9005:0286:9005:02a7 Adaptec 3805SAS (Hurricane80) 39 9005:0285:9005:02b5 Adaptec 5445 (Voodoo44)
43 9005:0286:9005:02a8 Adaptec 3400SAS (Hurricane40) 40 9005:0285:9005:02b6 Adaptec 5805 (Voodoo80)
44 9005:0286:9005:02ac Adaptec 1800SAS (Typhoon44) 41 9005:0285:9005:02b7 Adaptec 5085 (Voodoo08)
45 9005:0286:9005:02b3 Adaptec 2400SAS (Hurricane40lm) 42 9005:0285:9005:02bb Adaptec 3405 (Marauder40LP)
46 9005:0285:9005:02b5 Adaptec ASR5800 (Voodoo44) 43 9005:0285:9005:02bc Adaptec 3805 (Marauder80LP)
47 9005:0285:9005:02b6 Adaptec ASR5805 (Voodoo80) 44 9005:0285:9005:02c7 Adaptec 3085 (Marauder08ELP)
48 9005:0285:9005:02b7 Adaptec ASR5808 (Voodoo08) 45 9005:0285:9005:02bd Adaptec 31205 (Marauder120)
46 9005:0285:9005:02be Adaptec 31605 (Marauder160)
47 9005:0285:9005:02c3 Adaptec 51205 (Voodoo120)
48 9005:0285:9005:02c4 Adaptec 51605 (Voodoo160)
49 1011:0046:9005:0364 Adaptec 5400S (Mustang) 49 1011:0046:9005:0364 Adaptec 5400S (Mustang)
50 1011:0046:9005:0365 Adaptec 5400S (Mustang)
51 9005:0287:9005:0800 Adaptec Themisto (Jupiter) 50 9005:0287:9005:0800 Adaptec Themisto (Jupiter)
52 9005:0200:9005:0200 Adaptec Themisto (Jupiter) 51 9005:0200:9005:0200 Adaptec Themisto (Jupiter)
53 9005:0286:9005:0800 Adaptec Callisto (Jupiter) 52 9005:0286:9005:0800 Adaptec Callisto (Jupiter)
@@ -68,21 +67,32 @@ Supported Cards/Chipsets
68 9005:0285:17aa:0287 Legend S230 (Vulcan) 67 9005:0285:17aa:0287 Legend S230 (Vulcan)
69 9005:0285:9005:0290 IBM ServeRAID 7t (Jaguar) 68 9005:0285:9005:0290 IBM ServeRAID 7t (Jaguar)
70 9005:0285:1014:02F2 IBM ServeRAID 8i (AvonPark) 69 9005:0285:1014:02F2 IBM ServeRAID 8i (AvonPark)
71 9005:0285:1014:0312 IBM ServeRAID 8i (AvonParkLite)
72 9005:0286:1014:9540 IBM ServeRAID 8k/8k-l4 (AuroraLite) 70 9005:0286:1014:9540 IBM ServeRAID 8k/8k-l4 (AuroraLite)
73 9005:0286:1014:9580 IBM ServeRAID 8k/8k-l8 (Aurora) 71 9005:0286:1014:9580 IBM ServeRAID 8k/8k-l8 (Aurora)
74 9005:0286:1014:034d IBM ServeRAID 8s (Hurricane) 72 9005:0285:1014:034d IBM ServeRAID 8s (Marauder-E)
75 9005:0286:9005:029e ICP ICP9024R0 (Lancer) 73 9005:0286:9005:029e ICP ICP9024RO (Lancer)
76 9005:0286:9005:029f ICP ICP9014R0 (Lancer) 74 9005:0286:9005:029f ICP ICP9014RO (Lancer)
77 9005:0286:9005:02a0 ICP ICP9047MA (Lancer) 75 9005:0286:9005:02a0 ICP ICP9047MA (Lancer)
78 9005:0286:9005:02a1 ICP ICP9087MA (Lancer) 76 9005:0286:9005:02a1 ICP ICP9087MA (Lancer)
79 9005:0286:9005:02a3 ICP ICP5445AU (Hurricane44) 77 9005:0285:9005:02a4 ICP ICP9085LI (Marauder-X)
80 9005:0286:9005:02a4 ICP ICP9085LI (Marauder-X) 78 9005:0285:9005:02a5 ICP ICP5085BR (Marauder-E)
81 9005:0286:9005:02a5 ICP ICP5085BR (Marauder-E)
82 9005:0286:9005:02a6 ICP ICP9067MA (Intruder-6) 79 9005:0286:9005:02a6 ICP ICP9067MA (Intruder-6)
83 9005:0286:9005:02a9 ICP ICP5085AU (Hurricane80) 80 9005:0285:9005:02b2 ICP (Voodoo 8 internal 8 external)
84 9005:0286:9005:02aa ICP ICP5045AU (Hurricane40) 81 9005:0285:9005:02b8 ICP ICP5445SL (Voodoo44)
85 9005:0286:9005:02b4 ICP ICP5045AL (Hurricane40lm) 82 9005:0285:9005:02b9 ICP ICP5085SL (Voodoo80)
83 9005:0285:9005:02ba ICP ICP5805SL (Voodoo08)
84 9005:0285:9005:02bf ICP ICP5045BL (Marauder40LP)
85 9005:0285:9005:02c0 ICP ICP5085BL (Marauder80LP)
86 9005:0285:9005:02c8 ICP ICP5805BL (Marauder08ELP)
87 9005:0285:9005:02c1 ICP ICP5125BR (Marauder120)
88 9005:0285:9005:02c2 ICP ICP5165BR (Marauder160)
89 9005:0285:9005:02c5 ICP ICP5125SL (Voodoo120)
90 9005:0285:9005:02c6 ICP ICP5165SL (Voodoo160)
91 9005:0286:9005:02ab (Typhoon40)
92 9005:0286:9005:02ad (Aurora ARK)
93 9005:0286:9005:02ae (Aurora Lite ARK)
94 9005:0285:9005:02b0 (Sunrise Lake ARK)
95 9005:0285:9005:02b1 Adaptec (Voodoo 8 internal 8 external)
86 96
87People 97People
88------------------------- 98-------------------------
diff --git a/Documentation/usb/CREDITS b/Documentation/usb/CREDITS
index 01e7f857ef35..27a721635f92 100644
--- a/Documentation/usb/CREDITS
+++ b/Documentation/usb/CREDITS
@@ -21,7 +21,7 @@ difficult to maintain, add yourself with a patch if desired.
21 Bill Ryder <bryder@sgi.com> 21 Bill Ryder <bryder@sgi.com>
22 Thomas Sailer <sailer@ife.ee.ethz.ch> 22 Thomas Sailer <sailer@ife.ee.ethz.ch>
23 Gregory P. Smith <greg@electricrain.com> 23 Gregory P. Smith <greg@electricrain.com>
24 Linus Torvalds <torvalds@osdl.org> 24 Linus Torvalds <torvalds@linux-foundation.org>
25 Roman Weissgaerber <weissg@vienna.at> 25 Roman Weissgaerber <weissg@vienna.at>
26 <Kazuki.Yasumatsu@fujixerox.co.jp> 26 <Kazuki.Yasumatsu@fujixerox.co.jp>
27 27
diff --git a/MAINTAINERS b/MAINTAINERS
index 1b1491d64ca6..d6f04a81f761 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1254,7 +1254,7 @@ S: Maintained
1254 1254
1255ETHERNET BRIDGE 1255ETHERNET BRIDGE
1256P: Stephen Hemminger 1256P: Stephen Hemminger
1257M: shemminger@osdl.org 1257M: shemminger@linux-foundation.org
1258L: bridge@osdl.org 1258L: bridge@osdl.org
1259W: http://bridge.sourceforge.net/ 1259W: http://bridge.sourceforge.net/
1260S: Maintained 1260S: Maintained
@@ -2277,7 +2277,7 @@ S: Maintained
2277 2277
2278NETEM NETWORK EMULATOR 2278NETEM NETWORK EMULATOR
2279P: Stephen Hemminger 2279P: Stephen Hemminger
2280M: shemminger@osdl.org 2280M: shemminger@linux-foundation.org
2281L: netem@osdl.org 2281L: netem@osdl.org
2282S: Maintained 2282S: Maintained
2283 2283
@@ -3081,7 +3081,7 @@ S: Maintained
3081 3081
3082SKGE, SKY2 10/100/1000 GIGABIT ETHERNET DRIVERS 3082SKGE, SKY2 10/100/1000 GIGABIT ETHERNET DRIVERS
3083P: Stephen Hemminger 3083P: Stephen Hemminger
3084M: shemminger@osdl.org 3084M: shemminger@linux-foundation.org
3085L: netdev@vger.kernel.org 3085L: netdev@vger.kernel.org
3086S: Maintained 3086S: Maintained
3087 3087
@@ -3334,9 +3334,8 @@ W: http://www.linux-usb.org/gadget
3334S: Maintained 3334S: Maintained
3335 3335
3336USB HID/HIDBP DRIVERS 3336USB HID/HIDBP DRIVERS
3337P: Vojtech Pavlik 3337P: Jiri Kosina
3338M: vojtech@suse.cz 3338M: jkosina@suse.cz
3339L: linux-usb-users@lists.sourceforge.net
3340L: linux-usb-devel@lists.sourceforge.net 3339L: linux-usb-devel@lists.sourceforge.net
3341S: Maintained 3340S: Maintained
3342 3341
diff --git a/README b/README
index c05561523029..46a66c6e76df 100644
--- a/README
+++ b/README
@@ -278,8 +278,8 @@ IF SOMETHING GOES WRONG:
278 the file MAINTAINERS to see if there is a particular person associated 278 the file MAINTAINERS to see if there is a particular person associated
279 with the part of the kernel that you are having trouble with. If there 279 with the part of the kernel that you are having trouble with. If there
280 isn't anyone listed there, then the second best thing is to mail 280 isn't anyone listed there, then the second best thing is to mail
281 them to me (torvalds@osdl.org), and possibly to any other relevant 281 them to me (torvalds@linux-foundation.org), and possibly to any other
282 mailing-list or to the newsgroup. 282 relevant mailing-list or to the newsgroup.
283 283
284 - In all bug-reports, *please* tell what kernel you are talking about, 284 - In all bug-reports, *please* tell what kernel you are talking about,
285 how to duplicate the problem, and what your setup is (use your common 285 how to duplicate the problem, and what your setup is (use your common
diff --git a/arch/i386/kernel/cpu/common.c b/arch/i386/kernel/cpu/common.c
index 8689d62abd4a..8a8bbdaaf38a 100644
--- a/arch/i386/kernel/cpu/common.c
+++ b/arch/i386/kernel/cpu/common.c
@@ -710,11 +710,8 @@ __cpuinit int init_gdt(int cpu, struct task_struct *idle)
710 return 1; 710 return 1;
711} 711}
712 712
713/* Common CPU init for both boot and secondary CPUs */ 713void __cpuinit cpu_set_gdt(int cpu)
714static void __cpuinit _cpu_init(int cpu, struct task_struct *curr)
715{ 714{
716 struct tss_struct * t = &per_cpu(init_tss, cpu);
717 struct thread_struct *thread = &curr->thread;
718 struct Xgt_desc_struct *cpu_gdt_descr = &per_cpu(cpu_gdt_descr, cpu); 715 struct Xgt_desc_struct *cpu_gdt_descr = &per_cpu(cpu_gdt_descr, cpu);
719 716
720 /* Reinit these anyway, even if they've already been done (on 717 /* Reinit these anyway, even if they've already been done (on
@@ -722,6 +719,13 @@ static void __cpuinit _cpu_init(int cpu, struct task_struct *curr)
722 the real ones). */ 719 the real ones). */
723 load_gdt(cpu_gdt_descr); 720 load_gdt(cpu_gdt_descr);
724 set_kernel_gs(); 721 set_kernel_gs();
722}
723
724/* Common CPU init for both boot and secondary CPUs */
725static void __cpuinit _cpu_init(int cpu, struct task_struct *curr)
726{
727 struct tss_struct * t = &per_cpu(init_tss, cpu);
728 struct thread_struct *thread = &curr->thread;
725 729
726 if (cpu_test_and_set(cpu, cpu_initialized)) { 730 if (cpu_test_and_set(cpu, cpu_initialized)) {
727 printk(KERN_WARNING "CPU#%d already initialized!\n", cpu); 731 printk(KERN_WARNING "CPU#%d already initialized!\n", cpu);
@@ -807,6 +811,7 @@ void __cpuinit cpu_init(void)
807 local_irq_enable(); 811 local_irq_enable();
808 } 812 }
809 813
814 cpu_set_gdt(cpu);
810 _cpu_init(cpu, curr); 815 _cpu_init(cpu, curr);
811} 816}
812 817
diff --git a/arch/i386/kernel/nmi.c b/arch/i386/kernel/nmi.c
index a5e34d655965..1a6f8bb8881c 100644
--- a/arch/i386/kernel/nmi.c
+++ b/arch/i386/kernel/nmi.c
@@ -310,13 +310,7 @@ static int __init setup_nmi_watchdog(char *str)
310 310
311 if ((nmi >= NMI_INVALID) || (nmi < NMI_NONE)) 311 if ((nmi >= NMI_INVALID) || (nmi < NMI_NONE))
312 return 0; 312 return 0;
313 /* 313
314 * If any other x86 CPU has a local APIC, then
315 * please test the NMI stuff there and send me the
316 * missing bits. Right now Intel P6/P4 and AMD K7 only.
317 */
318 if ((nmi == NMI_LOCAL_APIC) && (nmi_known_cpu() == 0))
319 return 0; /* no lapic support */
320 nmi_watchdog = nmi; 314 nmi_watchdog = nmi;
321 return 1; 315 return 1;
322} 316}
diff --git a/arch/i386/kernel/paravirt.c b/arch/i386/kernel/paravirt.c
index 3dceab5828f1..e55fd05da0f5 100644
--- a/arch/i386/kernel/paravirt.c
+++ b/arch/i386/kernel/paravirt.c
@@ -566,4 +566,11 @@ struct paravirt_ops paravirt_ops = {
566 .irq_enable_sysexit = native_irq_enable_sysexit, 566 .irq_enable_sysexit = native_irq_enable_sysexit,
567 .iret = native_iret, 567 .iret = native_iret,
568}; 568};
569EXPORT_SYMBOL(paravirt_ops); 569
570/*
571 * NOTE: CONFIG_PARAVIRT is experimental and the paravirt_ops
572 * semantics are subject to change. Hence we only do this
573 * internal-only export of this, until it gets sorted out and
574 * all lowlevel CPU ops used by modules are separately exported.
575 */
576EXPORT_SYMBOL_GPL(paravirt_ops);
diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c
index dea7ef9d3e82..8c6c8c52b95c 100644
--- a/arch/i386/kernel/smpboot.c
+++ b/arch/i386/kernel/smpboot.c
@@ -596,6 +596,12 @@ static void __cpuinit start_secondary(void *unused)
596void __devinit initialize_secondary(void) 596void __devinit initialize_secondary(void)
597{ 597{
598 /* 598 /*
599 * switch to the per CPU GDT we already set up
600 * in do_boot_cpu()
601 */
602 cpu_set_gdt(current_thread_info()->cpu);
603
604 /*
599 * We don't actually need to load the full TSS, 605 * We don't actually need to load the full TSS,
600 * basically just the stack pointer and the eip. 606 * basically just the stack pointer and the eip.
601 */ 607 */
@@ -972,9 +978,6 @@ static int __cpuinit do_boot_cpu(int apicid, int cpu)
972 /* Stack for startup_32 can be just as for start_secondary onwards */ 978 /* Stack for startup_32 can be just as for start_secondary onwards */
973 stack_start.esp = (void *) idle->thread.esp; 979 stack_start.esp = (void *) idle->thread.esp;
974 980
975 start_pda = cpu_pda(cpu);
976 cpu_gdt_descr = per_cpu(cpu_gdt_descr, cpu);
977
978 irq_ctx_init(cpu); 981 irq_ctx_init(cpu);
979 982
980 x86_cpu_to_apicid[cpu] = apicid; 983 x86_cpu_to_apicid[cpu] = apicid;
diff --git a/arch/i386/mach-voyager/voyager_smp.c b/arch/i386/mach-voyager/voyager_smp.c
index 55428e656a3f..74aeedf277f4 100644
--- a/arch/i386/mach-voyager/voyager_smp.c
+++ b/arch/i386/mach-voyager/voyager_smp.c
@@ -773,6 +773,12 @@ initialize_secondary(void)
773#endif 773#endif
774 774
775 /* 775 /*
776 * switch to the per CPU GDT we already set up
777 * in do_boot_cpu()
778 */
779 cpu_set_gdt(current_thread_info()->cpu);
780
781 /*
776 * We don't actually need to load the full TSS, 782 * We don't actually need to load the full TSS,
777 * basically just the stack pointer and the eip. 783 * basically just the stack pointer and the eip.
778 */ 784 */
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index fd2ff0698a85..bbd386f572d9 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1568,6 +1568,20 @@ config MIPS_MT_FPAFF
1568 depends on MIPS_MT 1568 depends on MIPS_MT
1569 default y 1569 default y
1570 1570
1571config MIPS_MT_SMTC_INSTANT_REPLAY
1572 bool "Low-latency Dispatch of Deferred SMTC IPIs"
1573 depends on MIPS_MT_SMTC
1574 default y
1575 help
1576 SMTC pseudo-interrupts between TCs are deferred and queued
1577 if the target TC is interrupt-inhibited (IXMT). In the first
1578 SMTC prototypes, these queued IPIs were serviced on return
1579 to user mode, or on entry into the kernel idle loop. The
1580 INSTANT_REPLAY option dispatches them as part of local_irq_restore()
1581 processing, which adds runtime overhead (hence the option to turn
1582 it off), but ensures that IPIs are handled promptly even under
1583 heavy I/O interrupt load.
1584
1571config MIPS_VPE_LOADER_TOM 1585config MIPS_VPE_LOADER_TOM
1572 bool "Load VPE program into memory hidden from linux" 1586 bool "Load VPE program into memory hidden from linux"
1573 depends on MIPS_VPE_LOADER 1587 depends on MIPS_VPE_LOADER
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c
index 802febed7df5..44238ab2fc99 100644
--- a/arch/mips/kernel/smtc.c
+++ b/arch/mips/kernel/smtc.c
@@ -261,6 +261,7 @@ void smtc_configure_tlb(void)
261 } 261 }
262 } 262 }
263 write_c0_mvpcontrol(read_c0_mvpcontrol() | MVPCONTROL_STLB); 263 write_c0_mvpcontrol(read_c0_mvpcontrol() | MVPCONTROL_STLB);
264 ehb();
264 265
265 /* 266 /*
266 * Setup kernel data structures to use software total, 267 * Setup kernel data structures to use software total,
@@ -1016,6 +1017,33 @@ void setup_cross_vpe_interrupts(void)
1016 * SMTC-specific hacks invoked from elsewhere in the kernel. 1017 * SMTC-specific hacks invoked from elsewhere in the kernel.
1017 */ 1018 */
1018 1019
1020void smtc_ipi_replay(void)
1021{
1022 /*
1023 * To the extent that we've ever turned interrupts off,
1024 * we may have accumulated deferred IPIs. This is subtle.
1025 * If we use the smtc_ipi_qdepth() macro, we'll get an
1026 * exact number - but we'll also disable interrupts
1027 * and create a window of failure where a new IPI gets
1028 * queued after we test the depth but before we re-enable
1029 * interrupts. So long as IXMT never gets set, however,
1030 * we should be OK: If we pick up something and dispatch
1031 * it here, that's great. If we see nothing, but concurrent
1032 * with this operation, another TC sends us an IPI, IXMT
1033 * is clear, and we'll handle it as a real pseudo-interrupt
1034 * and not a pseudo-pseudo interrupt.
1035 */
1036 if (IPIQ[smp_processor_id()].depth > 0) {
1037 struct smtc_ipi *pipi;
1038 extern void self_ipi(struct smtc_ipi *);
1039
1040 while ((pipi = smtc_ipi_dq(&IPIQ[smp_processor_id()]))) {
1041 self_ipi(pipi);
1042 smtc_cpu_stats[smp_processor_id()].selfipis++;
1043 }
1044 }
1045}
1046
1019void smtc_idle_loop_hook(void) 1047void smtc_idle_loop_hook(void)
1020{ 1048{
1021#ifdef SMTC_IDLE_HOOK_DEBUG 1049#ifdef SMTC_IDLE_HOOK_DEBUG
@@ -1112,29 +1140,14 @@ void smtc_idle_loop_hook(void)
1112 if (pdb_msg != &id_ho_db_msg[0]) 1140 if (pdb_msg != &id_ho_db_msg[0])
1113 printk("CPU%d: %s", smp_processor_id(), id_ho_db_msg); 1141 printk("CPU%d: %s", smp_processor_id(), id_ho_db_msg);
1114#endif /* SMTC_IDLE_HOOK_DEBUG */ 1142#endif /* SMTC_IDLE_HOOK_DEBUG */
1143
1115 /* 1144 /*
1116 * To the extent that we've ever turned interrupts off, 1145 * Replay any accumulated deferred IPIs. If "Instant Replay"
1117 * we may have accumulated deferred IPIs. This is subtle. 1146 * is in use, there should never be any.
1118 * If we use the smtc_ipi_qdepth() macro, we'll get an
1119 * exact number - but we'll also disable interrupts
1120 * and create a window of failure where a new IPI gets
1121 * queued after we test the depth but before we re-enable
1122 * interrupts. So long as IXMT never gets set, however,
1123 * we should be OK: If we pick up something and dispatch
1124 * it here, that's great. If we see nothing, but concurrent
1125 * with this operation, another TC sends us an IPI, IXMT
1126 * is clear, and we'll handle it as a real pseudo-interrupt
1127 * and not a pseudo-pseudo interrupt.
1128 */ 1147 */
1129 if (IPIQ[smp_processor_id()].depth > 0) { 1148#ifndef CONFIG_MIPS_MT_SMTC_INSTANT_REPLAY
1130 struct smtc_ipi *pipi; 1149 smtc_ipi_replay();
1131 extern void self_ipi(struct smtc_ipi *); 1150#endif /* CONFIG_MIPS_MT_SMTC_INSTANT_REPLAY */
1132
1133 if ((pipi = smtc_ipi_dq(&IPIQ[smp_processor_id()])) != NULL) {
1134 self_ipi(pipi);
1135 smtc_cpu_stats[smp_processor_id()].selfipis++;
1136 }
1137 }
1138} 1151}
1139 1152
1140void smtc_soft_dump(void) 1153void smtc_soft_dump(void)
diff --git a/arch/mips/mm/tlb-r4k.c b/arch/mips/mm/tlb-r4k.c
index 2e0e21ef433e..65160d4984d9 100644
--- a/arch/mips/mm/tlb-r4k.c
+++ b/arch/mips/mm/tlb-r4k.c
@@ -106,7 +106,6 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
106 ENTER_CRITICAL(flags); 106 ENTER_CRITICAL(flags);
107 size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT; 107 size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
108 size = (size + 1) >> 1; 108 size = (size + 1) >> 1;
109 local_irq_save(flags);
110 if (size <= current_cpu_data.tlbsize/2) { 109 if (size <= current_cpu_data.tlbsize/2) {
111 int oldpid = read_c0_entryhi(); 110 int oldpid = read_c0_entryhi();
112 int newpid = cpu_asid(cpu, mm); 111 int newpid = cpu_asid(cpu, mm);
diff --git a/arch/mips/vr41xx/common/irq.c b/arch/mips/vr41xx/common/irq.c
index 397ba94cd7ec..16decf4ac2f4 100644
--- a/arch/mips/vr41xx/common/irq.c
+++ b/arch/mips/vr41xx/common/irq.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Interrupt handing routines for NEC VR4100 series. 2 * Interrupt handing routines for NEC VR4100 series.
3 * 3 *
4 * Copyright (C) 2005 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> 4 * Copyright (C) 2005-2007 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by 7 * it under the terms of the GNU General Public License as published by
@@ -73,13 +73,19 @@ static void irq_dispatch(unsigned int irq)
73 if (cascade->get_irq != NULL) { 73 if (cascade->get_irq != NULL) {
74 unsigned int source_irq = irq; 74 unsigned int source_irq = irq;
75 desc = irq_desc + source_irq; 75 desc = irq_desc + source_irq;
76 desc->chip->ack(source_irq); 76 if (desc->chip->mask_ack)
77 desc->chip->mask_ack(source_irq);
78 else {
79 desc->chip->mask(source_irq);
80 desc->chip->ack(source_irq);
81 }
77 irq = cascade->get_irq(irq); 82 irq = cascade->get_irq(irq);
78 if (irq < 0) 83 if (irq < 0)
79 atomic_inc(&irq_err_count); 84 atomic_inc(&irq_err_count);
80 else 85 else
81 irq_dispatch(irq); 86 irq_dispatch(irq);
82 desc->chip->end(source_irq); 87 if (!(desc->status & IRQ_DISABLED) && desc->chip->unmask)
88 desc->chip->unmask(source_irq);
83 } else 89 } else
84 do_IRQ(irq); 90 do_IRQ(irq);
85} 91}
diff --git a/arch/powerpc/boot/dts/lite5200.dts b/arch/powerpc/boot/dts/lite5200.dts
index a8efb59f5dd7..186870704ad9 100644
--- a/arch/powerpc/boot/dts/lite5200.dts
+++ b/arch/powerpc/boot/dts/lite5200.dts
@@ -10,6 +10,12 @@
10 * option) any later version. 10 * option) any later version.
11 */ 11 */
12 12
13/*
14 * WARNING: Do not depend on this tree layout remaining static just yet.
15 * The MPC5200 device tree conventions are still in flux
16 * Keep an eye on the linuxppc-dev mailing list for more details
17 */
18
13/ { 19/ {
14 model = "Lite5200"; 20 model = "Lite5200";
15 compatible = "lite5200\0lite52xx\0mpc5200\0mpc52xx"; 21 compatible = "lite5200\0lite52xx\0mpc5200\0mpc52xx";
diff --git a/arch/powerpc/boot/dts/lite5200b.dts b/arch/powerpc/boot/dts/lite5200b.dts
index 1aabee432d86..5bb2760d7c30 100644
--- a/arch/powerpc/boot/dts/lite5200b.dts
+++ b/arch/powerpc/boot/dts/lite5200b.dts
@@ -10,6 +10,12 @@
10 * option) any later version. 10 * option) any later version.
11 */ 11 */
12 12
13/*
14 * WARNING: Do not depend on this tree layout remaining static just yet.
15 * The MPC5200 device tree conventions are still in flux
16 * Keep an eye on the linuxppc-dev mailing list for more details
17 */
18
13/ { 19/ {
14 model = "Lite5200b"; 20 model = "Lite5200b";
15 compatible = "lite5200b\0lite52xx\0mpc5200b\0mpc52xx"; 21 compatible = "lite5200b\0lite52xx\0mpc5200b\0mpc52xx";
diff --git a/arch/powerpc/configs/cell_defconfig b/arch/powerpc/configs/cell_defconfig
index d1d25152f74f..e956548da00c 100644
--- a/arch/powerpc/configs/cell_defconfig
+++ b/arch/powerpc/configs/cell_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.20-rc1 3# Linux kernel version: 2.6.20-rc5
4# Tue Dec 19 14:59:53 2006 4# Mon Jan 22 22:12:56 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -245,7 +245,6 @@ CONFIG_GENERIC_ISA_DMA=y
245CONFIG_PCI=y 245CONFIG_PCI=y
246CONFIG_PCI_DOMAINS=y 246CONFIG_PCI_DOMAINS=y
247CONFIG_PCIEPORTBUS=y 247CONFIG_PCIEPORTBUS=y
248# CONFIG_PCI_MULTITHREAD_PROBE is not set
249# CONFIG_PCI_DEBUG is not set 248# CONFIG_PCI_DEBUG is not set
250 249
251# 250#
@@ -854,7 +853,6 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
854CONFIG_SERIAL_CORE=y 853CONFIG_SERIAL_CORE=y
855CONFIG_SERIAL_CORE_CONSOLE=y 854CONFIG_SERIAL_CORE_CONSOLE=y
856# CONFIG_SERIAL_JSM is not set 855# CONFIG_SERIAL_JSM is not set
857CONFIG_SERIAL_OF_PLATFORM=y
858CONFIG_UNIX98_PTYS=y 856CONFIG_UNIX98_PTYS=y
859# CONFIG_LEGACY_PTYS is not set 857# CONFIG_LEGACY_PTYS is not set
860CONFIG_HVC_DRIVER=y 858CONFIG_HVC_DRIVER=y
diff --git a/arch/powerpc/configs/chrp32_defconfig b/arch/powerpc/configs/chrp32_defconfig
index fee72f8a2fb7..029c9a0e730c 100644
--- a/arch/powerpc/configs/chrp32_defconfig
+++ b/arch/powerpc/configs/chrp32_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:22:54 2006 4# Mon Jan 22 22:12:58 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -21,13 +22,14 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
21CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23CONFIG_GENERIC_TBSYNC=y 24CONFIG_GENERIC_TBSYNC=y
25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
24# CONFIG_DEFAULT_UIMAGE is not set 27# CONFIG_DEFAULT_UIMAGE is not set
25 28
26# 29#
27# Processor support 30# Processor support
28# 31#
29CONFIG_CLASSIC32=y 32CONFIG_CLASSIC32=y
30# CONFIG_PPC_52xx is not set
31# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
32# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
33# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -38,6 +40,8 @@ CONFIG_CLASSIC32=y
38# CONFIG_E200 is not set 40# CONFIG_E200 is not set
39CONFIG_6xx=y 41CONFIG_6xx=y
40CONFIG_PPC_FPU=y 42CONFIG_PPC_FPU=y
43# CONFIG_PPC_DCR_NATIVE is not set
44# CONFIG_PPC_DCR_MMIO is not set
41# CONFIG_ALTIVEC is not set 45# CONFIG_ALTIVEC is not set
42CONFIG_PPC_STD_MMU=y 46CONFIG_PPC_STD_MMU=y
43CONFIG_PPC_STD_MMU_32=y 47CONFIG_PPC_STD_MMU_32=y
@@ -59,18 +63,22 @@ CONFIG_LOCALVERSION=""
59# CONFIG_LOCALVERSION_AUTO is not set 63# CONFIG_LOCALVERSION_AUTO is not set
60CONFIG_SWAP=y 64CONFIG_SWAP=y
61CONFIG_SYSVIPC=y 65CONFIG_SYSVIPC=y
66# CONFIG_IPC_NS is not set
62CONFIG_POSIX_MQUEUE=y 67CONFIG_POSIX_MQUEUE=y
63# CONFIG_BSD_PROCESS_ACCT is not set 68# CONFIG_BSD_PROCESS_ACCT is not set
64# CONFIG_TASKSTATS is not set 69# CONFIG_TASKSTATS is not set
65CONFIG_SYSCTL=y 70# CONFIG_UTS_NS is not set
66# CONFIG_AUDIT is not set 71# CONFIG_AUDIT is not set
67CONFIG_IKCONFIG=y 72CONFIG_IKCONFIG=y
68CONFIG_IKCONFIG_PROC=y 73CONFIG_IKCONFIG_PROC=y
69# CONFIG_CPUSETS is not set 74# CONFIG_CPUSETS is not set
75CONFIG_SYSFS_DEPRECATED=y
70# CONFIG_RELAY is not set 76# CONFIG_RELAY is not set
71CONFIG_INITRAMFS_SOURCE="" 77CONFIG_INITRAMFS_SOURCE=""
72# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 78# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
79CONFIG_SYSCTL=y
73# CONFIG_EMBEDDED is not set 80# CONFIG_EMBEDDED is not set
81CONFIG_SYSCTL_SYSCALL=y
74CONFIG_KALLSYMS=y 82CONFIG_KALLSYMS=y
75# CONFIG_KALLSYMS_ALL is not set 83# CONFIG_KALLSYMS_ALL is not set
76# CONFIG_KALLSYMS_EXTRA_PASS is not set 84# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -79,12 +87,12 @@ CONFIG_PRINTK=y
79CONFIG_BUG=y 87CONFIG_BUG=y
80CONFIG_ELF_CORE=y 88CONFIG_ELF_CORE=y
81CONFIG_BASE_FULL=y 89CONFIG_BASE_FULL=y
82CONFIG_RT_MUTEXES=y
83CONFIG_FUTEX=y 90CONFIG_FUTEX=y
84CONFIG_EPOLL=y 91CONFIG_EPOLL=y
85CONFIG_SHMEM=y 92CONFIG_SHMEM=y
86CONFIG_SLAB=y 93CONFIG_SLAB=y
87CONFIG_VM_EVENT_COUNTERS=y 94CONFIG_VM_EVENT_COUNTERS=y
95CONFIG_RT_MUTEXES=y
88# CONFIG_TINY_SHMEM is not set 96# CONFIG_TINY_SHMEM is not set
89CONFIG_BASE_SMALL=0 97CONFIG_BASE_SMALL=0
90# CONFIG_SLOB is not set 98# CONFIG_SLOB is not set
@@ -103,6 +111,7 @@ CONFIG_STOP_MACHINE=y
103# 111#
104# Block layer 112# Block layer
105# 113#
114CONFIG_BLOCK=y
106CONFIG_LBD=y 115CONFIG_LBD=y
107# CONFIG_BLK_DEV_IO_TRACE is not set 116# CONFIG_BLK_DEV_IO_TRACE is not set
108# CONFIG_LSF is not set 117# CONFIG_LSF is not set
@@ -124,13 +133,16 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
124# Platform support 133# Platform support
125# 134#
126CONFIG_PPC_MULTIPLATFORM=y 135CONFIG_PPC_MULTIPLATFORM=y
127# CONFIG_PPC_ISERIES is not set
128# CONFIG_EMBEDDED6xx is not set 136# CONFIG_EMBEDDED6xx is not set
129# CONFIG_APUS is not set 137# CONFIG_APUS is not set
130CONFIG_PPC_CHRP=y 138CONFIG_PPC_CHRP=y
139# CONFIG_PPC_MPC52xx is not set
140# CONFIG_PPC_EFIKA is not set
141# CONFIG_PPC_LITE5200 is not set
131# CONFIG_PPC_PMAC is not set 142# CONFIG_PPC_PMAC is not set
132# CONFIG_PPC_CELL is not set 143# CONFIG_PPC_CELL is not set
133# CONFIG_PPC_CELL_NATIVE is not set 144# CONFIG_PPC_CELL_NATIVE is not set
145CONFIG_PPC_NATIVE=y
134# CONFIG_UDBG_RTAS_CONSOLE is not set 146# CONFIG_UDBG_RTAS_CONSOLE is not set
135CONFIG_PPC_RTAS=y 147CONFIG_PPC_RTAS=y
136# CONFIG_RTAS_ERROR_LOGGING is not set 148# CONFIG_RTAS_ERROR_LOGGING is not set
@@ -138,6 +150,8 @@ CONFIG_RTAS_PROC=y
138# CONFIG_MMIO_NVRAM is not set 150# CONFIG_MMIO_NVRAM is not set
139CONFIG_PPC_MPC106=y 151CONFIG_PPC_MPC106=y
140# CONFIG_PPC_970_NAP is not set 152# CONFIG_PPC_970_NAP is not set
153# CONFIG_PPC_INDIRECT_IO is not set
154# CONFIG_GENERIC_IOMAP is not set
141# CONFIG_CPU_FREQ is not set 155# CONFIG_CPU_FREQ is not set
142# CONFIG_TAU is not set 156# CONFIG_TAU is not set
143# CONFIG_WANT_EARLY_SERIAL is not set 157# CONFIG_WANT_EARLY_SERIAL is not set
@@ -149,6 +163,7 @@ CONFIG_MPIC=y
149CONFIG_HIGHMEM=y 163CONFIG_HIGHMEM=y
150# CONFIG_HZ_100 is not set 164# CONFIG_HZ_100 is not set
151CONFIG_HZ_250=y 165CONFIG_HZ_250=y
166# CONFIG_HZ_300 is not set
152# CONFIG_HZ_1000 is not set 167# CONFIG_HZ_1000 is not set
153CONFIG_HZ=250 168CONFIG_HZ=250
154CONFIG_PREEMPT_NONE=y 169CONFIG_PREEMPT_NONE=y
@@ -161,6 +176,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
161# CONFIG_KEXEC is not set 176# CONFIG_KEXEC is not set
162CONFIG_IRQ_ALL_CPUS=y 177CONFIG_IRQ_ALL_CPUS=y
163CONFIG_ARCH_FLATMEM_ENABLE=y 178CONFIG_ARCH_FLATMEM_ENABLE=y
179CONFIG_ARCH_POPULATES_NODE_MAP=y
164CONFIG_SELECT_MEMORY_MODEL=y 180CONFIG_SELECT_MEMORY_MODEL=y
165CONFIG_FLATMEM_MANUAL=y 181CONFIG_FLATMEM_MANUAL=y
166# CONFIG_DISCONTIGMEM_MANUAL is not set 182# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -243,10 +259,13 @@ CONFIG_SYN_COOKIES=y
243# CONFIG_INET_TUNNEL is not set 259# CONFIG_INET_TUNNEL is not set
244# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 260# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
245# CONFIG_INET_XFRM_MODE_TUNNEL is not set 261# CONFIG_INET_XFRM_MODE_TUNNEL is not set
262# CONFIG_INET_XFRM_MODE_BEET is not set
246CONFIG_INET_DIAG=y 263CONFIG_INET_DIAG=y
247CONFIG_INET_TCP_DIAG=y 264CONFIG_INET_TCP_DIAG=y
248# CONFIG_TCP_CONG_ADVANCED is not set 265# CONFIG_TCP_CONG_ADVANCED is not set
249CONFIG_TCP_CONG_BIC=y 266CONFIG_TCP_CONG_CUBIC=y
267CONFIG_DEFAULT_TCP_CONG="cubic"
268# CONFIG_TCP_MD5SIG is not set
250 269
251# 270#
252# IP: Virtual Server Configuration 271# IP: Virtual Server Configuration
@@ -263,24 +282,29 @@ CONFIG_NETFILTER=y
263# Core Netfilter Configuration 282# Core Netfilter Configuration
264# 283#
265# CONFIG_NETFILTER_NETLINK is not set 284# CONFIG_NETFILTER_NETLINK is not set
285CONFIG_NF_CONNTRACK_ENABLED=m
286CONFIG_NF_CONNTRACK_SUPPORT=y
287# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
288CONFIG_NF_CONNTRACK=m
289# CONFIG_NF_CT_ACCT is not set
290# CONFIG_NF_CONNTRACK_MARK is not set
291# CONFIG_NF_CONNTRACK_EVENTS is not set
292# CONFIG_NF_CT_PROTO_SCTP is not set
293# CONFIG_NF_CONNTRACK_AMANDA is not set
294CONFIG_NF_CONNTRACK_FTP=m
295# CONFIG_NF_CONNTRACK_H323 is not set
296CONFIG_NF_CONNTRACK_IRC=m
297# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
298# CONFIG_NF_CONNTRACK_PPTP is not set
299CONFIG_NF_CONNTRACK_SIP=m
300CONFIG_NF_CONNTRACK_TFTP=m
266# CONFIG_NETFILTER_XTABLES is not set 301# CONFIG_NETFILTER_XTABLES is not set
267 302
268# 303#
269# IP: Netfilter Configuration 304# IP: Netfilter Configuration
270# 305#
271CONFIG_IP_NF_CONNTRACK=m 306CONFIG_NF_CONNTRACK_IPV4=m
272# CONFIG_IP_NF_CT_ACCT is not set 307CONFIG_NF_CONNTRACK_PROC_COMPAT=y
273# CONFIG_IP_NF_CONNTRACK_MARK is not set
274# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
275# CONFIG_IP_NF_CT_PROTO_SCTP is not set
276CONFIG_IP_NF_FTP=m
277CONFIG_IP_NF_IRC=m
278# CONFIG_IP_NF_NETBIOS_NS is not set
279CONFIG_IP_NF_TFTP=m
280CONFIG_IP_NF_AMANDA=m
281# CONFIG_IP_NF_PPTP is not set
282# CONFIG_IP_NF_H323 is not set
283# CONFIG_IP_NF_SIP is not set
284# CONFIG_IP_NF_QUEUE is not set 308# CONFIG_IP_NF_QUEUE is not set
285 309
286# 310#
@@ -306,7 +330,6 @@ CONFIG_IP_NF_AMANDA=m
306# CONFIG_ATALK is not set 330# CONFIG_ATALK is not set
307# CONFIG_X25 is not set 331# CONFIG_X25 is not set
308# CONFIG_LAPB is not set 332# CONFIG_LAPB is not set
309# CONFIG_NET_DIVERT is not set
310# CONFIG_ECONET is not set 333# CONFIG_ECONET is not set
311# CONFIG_WAN_ROUTER is not set 334# CONFIG_WAN_ROUTER is not set
312 335
@@ -381,6 +404,12 @@ CONFIG_BLK_DEV_INITRD=y
381# CONFIG_ATA_OVER_ETH is not set 404# CONFIG_ATA_OVER_ETH is not set
382 405
383# 406#
407# Misc devices
408#
409# CONFIG_SGI_IOC4 is not set
410# CONFIG_TIFM_CORE is not set
411
412#
384# ATA/ATAPI/MFM/RLL support 413# ATA/ATAPI/MFM/RLL support
385# 414#
386CONFIG_IDE=y 415CONFIG_IDE=y
@@ -407,7 +436,6 @@ CONFIG_IDEPCI_SHARE_IRQ=y
407# CONFIG_BLK_DEV_OFFBOARD is not set 436# CONFIG_BLK_DEV_OFFBOARD is not set
408CONFIG_BLK_DEV_GENERIC=y 437CONFIG_BLK_DEV_GENERIC=y
409# CONFIG_BLK_DEV_OPTI621 is not set 438# CONFIG_BLK_DEV_OPTI621 is not set
410CONFIG_BLK_DEV_SL82C105=y
411CONFIG_BLK_DEV_IDEDMA_PCI=y 439CONFIG_BLK_DEV_IDEDMA_PCI=y
412# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 440# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
413CONFIG_IDEDMA_PCI_AUTO=y 441CONFIG_IDEDMA_PCI_AUTO=y
@@ -422,6 +450,7 @@ CONFIG_IDEDMA_PCI_AUTO=y
422# CONFIG_BLK_DEV_CS5530 is not set 450# CONFIG_BLK_DEV_CS5530 is not set
423# CONFIG_BLK_DEV_HPT34X is not set 451# CONFIG_BLK_DEV_HPT34X is not set
424# CONFIG_BLK_DEV_HPT366 is not set 452# CONFIG_BLK_DEV_HPT366 is not set
453# CONFIG_BLK_DEV_JMICRON is not set
425# CONFIG_BLK_DEV_SC1200 is not set 454# CONFIG_BLK_DEV_SC1200 is not set
426# CONFIG_BLK_DEV_PIIX is not set 455# CONFIG_BLK_DEV_PIIX is not set
427# CONFIG_BLK_DEV_IT821X is not set 456# CONFIG_BLK_DEV_IT821X is not set
@@ -430,6 +459,7 @@ CONFIG_IDEDMA_PCI_AUTO=y
430# CONFIG_BLK_DEV_PDC202XX_NEW is not set 459# CONFIG_BLK_DEV_PDC202XX_NEW is not set
431# CONFIG_BLK_DEV_SVWKS is not set 460# CONFIG_BLK_DEV_SVWKS is not set
432# CONFIG_BLK_DEV_SIIMAGE is not set 461# CONFIG_BLK_DEV_SIIMAGE is not set
462CONFIG_BLK_DEV_SL82C105=y
433# CONFIG_BLK_DEV_SLC90E66 is not set 463# CONFIG_BLK_DEV_SLC90E66 is not set
434# CONFIG_BLK_DEV_TRM290 is not set 464# CONFIG_BLK_DEV_TRM290 is not set
435CONFIG_BLK_DEV_VIA82CXXX=y 465CONFIG_BLK_DEV_VIA82CXXX=y
@@ -445,6 +475,8 @@ CONFIG_IDEDMA_AUTO=y
445# 475#
446# CONFIG_RAID_ATTRS is not set 476# CONFIG_RAID_ATTRS is not set
447CONFIG_SCSI=y 477CONFIG_SCSI=y
478# CONFIG_SCSI_TGT is not set
479# CONFIG_SCSI_NETLINK is not set
448CONFIG_SCSI_PROC_FS=y 480CONFIG_SCSI_PROC_FS=y
449 481
450# 482#
@@ -464,14 +496,16 @@ CONFIG_CHR_DEV_SG=y
464# CONFIG_SCSI_MULTI_LUN is not set 496# CONFIG_SCSI_MULTI_LUN is not set
465CONFIG_SCSI_CONSTANTS=y 497CONFIG_SCSI_CONSTANTS=y
466# CONFIG_SCSI_LOGGING is not set 498# CONFIG_SCSI_LOGGING is not set
499# CONFIG_SCSI_SCAN_ASYNC is not set
467 500
468# 501#
469# SCSI Transport Attributes 502# SCSI Transports
470# 503#
471CONFIG_SCSI_SPI_ATTRS=y 504CONFIG_SCSI_SPI_ATTRS=y
472# CONFIG_SCSI_FC_ATTRS is not set 505# CONFIG_SCSI_FC_ATTRS is not set
473# CONFIG_SCSI_ISCSI_ATTRS is not set 506# CONFIG_SCSI_ISCSI_ATTRS is not set
474# CONFIG_SCSI_SAS_ATTRS is not set 507# CONFIG_SCSI_SAS_ATTRS is not set
508# CONFIG_SCSI_SAS_LIBSAS is not set
475 509
476# 510#
477# SCSI low-level drivers 511# SCSI low-level drivers
@@ -487,12 +521,13 @@ CONFIG_SCSI_SPI_ATTRS=y
487# CONFIG_SCSI_AIC7XXX is not set 521# CONFIG_SCSI_AIC7XXX is not set
488# CONFIG_SCSI_AIC7XXX_OLD is not set 522# CONFIG_SCSI_AIC7XXX_OLD is not set
489# CONFIG_SCSI_AIC79XX is not set 523# CONFIG_SCSI_AIC79XX is not set
524# CONFIG_SCSI_AIC94XX is not set
490# CONFIG_SCSI_DPT_I2O is not set 525# CONFIG_SCSI_DPT_I2O is not set
491# CONFIG_SCSI_IN2000 is not set 526# CONFIG_SCSI_IN2000 is not set
527# CONFIG_SCSI_ARCMSR is not set
492# CONFIG_MEGARAID_NEWGEN is not set 528# CONFIG_MEGARAID_NEWGEN is not set
493# CONFIG_MEGARAID_LEGACY is not set 529# CONFIG_MEGARAID_LEGACY is not set
494# CONFIG_MEGARAID_SAS is not set 530# CONFIG_MEGARAID_SAS is not set
495# CONFIG_ATA is not set
496# CONFIG_SCSI_HPTIOP is not set 531# CONFIG_SCSI_HPTIOP is not set
497# CONFIG_SCSI_BUSLOGIC is not set 532# CONFIG_SCSI_BUSLOGIC is not set
498# CONFIG_SCSI_DMX3191D is not set 533# CONFIG_SCSI_DMX3191D is not set
@@ -506,17 +541,18 @@ CONFIG_SCSI_SPI_ATTRS=y
506# CONFIG_SCSI_INITIO is not set 541# CONFIG_SCSI_INITIO is not set
507# CONFIG_SCSI_INIA100 is not set 542# CONFIG_SCSI_INIA100 is not set
508# CONFIG_SCSI_NCR53C406A is not set 543# CONFIG_SCSI_NCR53C406A is not set
544# CONFIG_SCSI_STEX is not set
509CONFIG_SCSI_SYM53C8XX_2=y 545CONFIG_SCSI_SYM53C8XX_2=y
510CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 546CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
511CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 547CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
512CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 548CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
513CONFIG_SCSI_SYM53C8XX_MMIO=y 549CONFIG_SCSI_SYM53C8XX_MMIO=y
514# CONFIG_SCSI_IPR is not set
515# CONFIG_SCSI_PAS16 is not set 550# CONFIG_SCSI_PAS16 is not set
516# CONFIG_SCSI_PSI240I is not set 551# CONFIG_SCSI_PSI240I is not set
517# CONFIG_SCSI_QLOGIC_FAS is not set 552# CONFIG_SCSI_QLOGIC_FAS is not set
518# CONFIG_SCSI_QLOGIC_1280 is not set 553# CONFIG_SCSI_QLOGIC_1280 is not set
519# CONFIG_SCSI_QLA_FC is not set 554# CONFIG_SCSI_QLA_FC is not set
555# CONFIG_SCSI_QLA_ISCSI is not set
520# CONFIG_SCSI_LPFC is not set 556# CONFIG_SCSI_LPFC is not set
521# CONFIG_SCSI_SYM53C416 is not set 557# CONFIG_SCSI_SYM53C416 is not set
522# CONFIG_SCSI_DC395x is not set 558# CONFIG_SCSI_DC395x is not set
@@ -525,6 +561,12 @@ CONFIG_SCSI_SYM53C8XX_MMIO=y
525# CONFIG_SCSI_U14_34F is not set 561# CONFIG_SCSI_U14_34F is not set
526# CONFIG_SCSI_NSP32 is not set 562# CONFIG_SCSI_NSP32 is not set
527# CONFIG_SCSI_DEBUG is not set 563# CONFIG_SCSI_DEBUG is not set
564# CONFIG_SCSI_SRP is not set
565
566#
567# Serial ATA (prod) and Parallel ATA (experimental) drivers
568#
569# CONFIG_ATA is not set
528 570
529# 571#
530# Old CD-ROM drivers (not SCSI, not IDE) 572# Old CD-ROM drivers (not SCSI, not IDE)
@@ -557,6 +599,7 @@ CONFIG_SCSI_SYM53C8XX_MMIO=y
557# 599#
558# Macintosh device drivers 600# Macintosh device drivers
559# 601#
602# CONFIG_MAC_EMUMOUSEBTN is not set
560# CONFIG_WINDFARM is not set 603# CONFIG_WINDFARM is not set
561 604
562# 605#
@@ -607,6 +650,7 @@ CONFIG_DE4X5=y
607# CONFIG_NET_ISA is not set 650# CONFIG_NET_ISA is not set
608CONFIG_NET_PCI=y 651CONFIG_NET_PCI=y
609CONFIG_PCNET32=y 652CONFIG_PCNET32=y
653# CONFIG_PCNET32_NAPI is not set
610# CONFIG_AMD8111_ETH is not set 654# CONFIG_AMD8111_ETH is not set
611# CONFIG_ADAPTEC_STARFIRE is not set 655# CONFIG_ADAPTEC_STARFIRE is not set
612# CONFIG_AC3200 is not set 656# CONFIG_AC3200 is not set
@@ -655,6 +699,7 @@ CONFIG_MV643XX_ETH=y
655# CONFIG_MV643XX_ETH_0 is not set 699# CONFIG_MV643XX_ETH_0 is not set
656# CONFIG_MV643XX_ETH_1 is not set 700# CONFIG_MV643XX_ETH_1 is not set
657# CONFIG_MV643XX_ETH_2 is not set 701# CONFIG_MV643XX_ETH_2 is not set
702# CONFIG_QLA3XXX is not set
658 703
659# 704#
660# Ethernet (10000 Mbit) 705# Ethernet (10000 Mbit)
@@ -663,6 +708,7 @@ CONFIG_MV643XX_ETH=y
663# CONFIG_IXGB is not set 708# CONFIG_IXGB is not set
664# CONFIG_S2IO is not set 709# CONFIG_S2IO is not set
665# CONFIG_MYRI10GE is not set 710# CONFIG_MYRI10GE is not set
711# CONFIG_NETXEN_NIC is not set
666 712
667# 713#
668# Token Ring devices 714# Token Ring devices
@@ -690,6 +736,7 @@ CONFIG_PPP_BSDCOMP=m
690CONFIG_PPP_MPPE=m 736CONFIG_PPP_MPPE=m
691CONFIG_PPPOE=m 737CONFIG_PPPOE=m
692# CONFIG_SLIP is not set 738# CONFIG_SLIP is not set
739CONFIG_SLHC=m
693# CONFIG_NET_FC is not set 740# CONFIG_NET_FC is not set
694# CONFIG_SHAPER is not set 741# CONFIG_SHAPER is not set
695# CONFIG_NETCONSOLE is not set 742# CONFIG_NETCONSOLE is not set
@@ -710,6 +757,7 @@ CONFIG_PPPOE=m
710# Input device support 757# Input device support
711# 758#
712CONFIG_INPUT=y 759CONFIG_INPUT=y
760# CONFIG_INPUT_FF_MEMLESS is not set
713 761
714# 762#
715# Userland interfaces 763# Userland interfaces
@@ -732,6 +780,7 @@ CONFIG_KEYBOARD_ATKBD=y
732# CONFIG_KEYBOARD_LKKBD is not set 780# CONFIG_KEYBOARD_LKKBD is not set
733# CONFIG_KEYBOARD_XTKBD is not set 781# CONFIG_KEYBOARD_XTKBD is not set
734# CONFIG_KEYBOARD_NEWTON is not set 782# CONFIG_KEYBOARD_NEWTON is not set
783# CONFIG_KEYBOARD_STOWAWAY is not set
735CONFIG_INPUT_MOUSE=y 784CONFIG_INPUT_MOUSE=y
736CONFIG_MOUSE_PS2=y 785CONFIG_MOUSE_PS2=y
737# CONFIG_MOUSE_SERIAL is not set 786# CONFIG_MOUSE_SERIAL is not set
@@ -778,12 +827,14 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
778# 827#
779# Non-8250 serial port support 828# Non-8250 serial port support
780# 829#
830# CONFIG_SERIAL_UARTLITE is not set
781CONFIG_SERIAL_CORE=y 831CONFIG_SERIAL_CORE=y
782CONFIG_SERIAL_CORE_CONSOLE=y 832CONFIG_SERIAL_CORE_CONSOLE=y
783# CONFIG_SERIAL_JSM is not set 833# CONFIG_SERIAL_JSM is not set
784CONFIG_UNIX98_PTYS=y 834CONFIG_UNIX98_PTYS=y
785CONFIG_LEGACY_PTYS=y 835CONFIG_LEGACY_PTYS=y
786CONFIG_LEGACY_PTY_COUNT=256 836CONFIG_LEGACY_PTY_COUNT=256
837CONFIG_BRIQ_PANEL=m
787# CONFIG_HVC_RTAS is not set 838# CONFIG_HVC_RTAS is not set
788 839
789# 840#
@@ -802,10 +853,6 @@ CONFIG_GEN_RTC=y
802# CONFIG_DTLK is not set 853# CONFIG_DTLK is not set
803# CONFIG_R3964 is not set 854# CONFIG_R3964 is not set
804# CONFIG_APPLICOM is not set 855# CONFIG_APPLICOM is not set
805
806#
807# Ftape, the floppy tape device driver
808#
809# CONFIG_AGP is not set 856# CONFIG_AGP is not set
810# CONFIG_DRM is not set 857# CONFIG_DRM is not set
811# CONFIG_RAW_DRIVER is not set 858# CONFIG_RAW_DRIVER is not set
@@ -814,7 +861,6 @@ CONFIG_GEN_RTC=y
814# TPM devices 861# TPM devices
815# 862#
816# CONFIG_TCG_TPM is not set 863# CONFIG_TCG_TPM is not set
817# CONFIG_TELCLOCK is not set
818 864
819# 865#
820# I2C support 866# I2C support
@@ -881,6 +927,7 @@ CONFIG_I2C_ALGOBIT=y
881# 927#
882# Dallas's 1-wire bus 928# Dallas's 1-wire bus
883# 929#
930# CONFIG_W1 is not set
884 931
885# 932#
886# Hardware Monitoring support 933# Hardware Monitoring support
@@ -889,14 +936,9 @@ CONFIG_I2C_ALGOBIT=y
889# CONFIG_HWMON_VID is not set 936# CONFIG_HWMON_VID is not set
890 937
891# 938#
892# Misc devices
893#
894
895#
896# Multimedia devices 939# Multimedia devices
897# 940#
898# CONFIG_VIDEO_DEV is not set 941# CONFIG_VIDEO_DEV is not set
899CONFIG_VIDEO_V4L2=y
900 942
901# 943#
902# Digital Video Broadcasting Devices 944# Digital Video Broadcasting Devices
@@ -909,6 +951,7 @@ CONFIG_VIDEO_V4L2=y
909# 951#
910CONFIG_FIRMWARE_EDID=y 952CONFIG_FIRMWARE_EDID=y
911CONFIG_FB=y 953CONFIG_FB=y
954CONFIG_FB_DDC=y
912CONFIG_FB_CFB_FILLRECT=y 955CONFIG_FB_CFB_FILLRECT=y
913CONFIG_FB_CFB_COPYAREA=y 956CONFIG_FB_CFB_COPYAREA=y
914CONFIG_FB_CFB_IMAGEBLIT=y 957CONFIG_FB_CFB_IMAGEBLIT=y
@@ -949,6 +992,7 @@ CONFIG_FB_3DFX=y
949# CONFIG_FB_3DFX_ACCEL is not set 992# CONFIG_FB_3DFX_ACCEL is not set
950# CONFIG_FB_VOODOO1 is not set 993# CONFIG_FB_VOODOO1 is not set
951# CONFIG_FB_TRIDENT is not set 994# CONFIG_FB_TRIDENT is not set
995# CONFIG_FB_IBM_GXT4500 is not set
952# CONFIG_FB_VIRTUAL is not set 996# CONFIG_FB_VIRTUAL is not set
953 997
954# 998#
@@ -979,6 +1023,11 @@ CONFIG_LOGO_LINUX_CLUT224=y
979# CONFIG_SOUND is not set 1023# CONFIG_SOUND is not set
980 1024
981# 1025#
1026# HID Devices
1027#
1028CONFIG_HID=y
1029
1030#
982# USB support 1031# USB support
983# 1032#
984CONFIG_USB_ARCH_HAS_HCD=y 1033CONFIG_USB_ARCH_HAS_HCD=y
@@ -993,6 +1042,7 @@ CONFIG_USB=y
993CONFIG_USB_DEVICEFS=y 1042CONFIG_USB_DEVICEFS=y
994# CONFIG_USB_BANDWIDTH is not set 1043# CONFIG_USB_BANDWIDTH is not set
995# CONFIG_USB_DYNAMIC_MINORS is not set 1044# CONFIG_USB_DYNAMIC_MINORS is not set
1045# CONFIG_USB_MULTITHREAD_PROBE is not set
996# CONFIG_USB_OTG is not set 1046# CONFIG_USB_OTG is not set
997 1047
998# 1048#
@@ -1034,13 +1084,13 @@ CONFIG_USB_STORAGE=m
1034# CONFIG_USB_STORAGE_JUMPSHOT is not set 1084# CONFIG_USB_STORAGE_JUMPSHOT is not set
1035# CONFIG_USB_STORAGE_ALAUDA is not set 1085# CONFIG_USB_STORAGE_ALAUDA is not set
1036# CONFIG_USB_STORAGE_ONETOUCH is not set 1086# CONFIG_USB_STORAGE_ONETOUCH is not set
1087# CONFIG_USB_STORAGE_KARMA is not set
1037# CONFIG_USB_LIBUSUAL is not set 1088# CONFIG_USB_LIBUSUAL is not set
1038 1089
1039# 1090#
1040# USB Input Devices 1091# USB Input Devices
1041# 1092#
1042CONFIG_USB_HID=y 1093CONFIG_USB_HID=y
1043CONFIG_USB_HIDINPUT=y
1044# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1094# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1045# CONFIG_HID_FF is not set 1095# CONFIG_HID_FF is not set
1046# CONFIG_USB_HIDDEV is not set 1096# CONFIG_USB_HIDDEV is not set
@@ -1070,6 +1120,7 @@ CONFIG_USB_HIDINPUT=y
1070# CONFIG_USB_KAWETH is not set 1120# CONFIG_USB_KAWETH is not set
1071# CONFIG_USB_PEGASUS is not set 1121# CONFIG_USB_PEGASUS is not set
1072# CONFIG_USB_RTL8150 is not set 1122# CONFIG_USB_RTL8150 is not set
1123# CONFIG_USB_USBNET_MII is not set
1073# CONFIG_USB_USBNET is not set 1124# CONFIG_USB_USBNET is not set
1074CONFIG_USB_MON=y 1125CONFIG_USB_MON=y
1075 1126
@@ -1087,6 +1138,7 @@ CONFIG_USB_MON=y
1087# 1138#
1088# CONFIG_USB_EMI62 is not set 1139# CONFIG_USB_EMI62 is not set
1089# CONFIG_USB_EMI26 is not set 1140# CONFIG_USB_EMI26 is not set
1141# CONFIG_USB_ADUTUX is not set
1090# CONFIG_USB_AUERSWALD is not set 1142# CONFIG_USB_AUERSWALD is not set
1091# CONFIG_USB_RIO500 is not set 1143# CONFIG_USB_RIO500 is not set
1092# CONFIG_USB_LEGOTOWER is not set 1144# CONFIG_USB_LEGOTOWER is not set
@@ -1094,12 +1146,13 @@ CONFIG_USB_MON=y
1094# CONFIG_USB_LED is not set 1146# CONFIG_USB_LED is not set
1095# CONFIG_USB_CYPRESS_CY7C63 is not set 1147# CONFIG_USB_CYPRESS_CY7C63 is not set
1096# CONFIG_USB_CYTHERM is not set 1148# CONFIG_USB_CYTHERM is not set
1097# CONFIG_USB_PHIDGETKIT is not set 1149# CONFIG_USB_PHIDGET is not set
1098# CONFIG_USB_PHIDGETSERVO is not set
1099# CONFIG_USB_IDMOUSE is not set 1150# CONFIG_USB_IDMOUSE is not set
1151# CONFIG_USB_FTDI_ELAN is not set
1100# CONFIG_USB_APPLEDISPLAY is not set 1152# CONFIG_USB_APPLEDISPLAY is not set
1101# CONFIG_USB_SISUSBVGA is not set 1153# CONFIG_USB_SISUSBVGA is not set
1102# CONFIG_USB_LD is not set 1154# CONFIG_USB_LD is not set
1155# CONFIG_USB_TRANCEVIBRATOR is not set
1103# CONFIG_USB_TEST is not set 1156# CONFIG_USB_TEST is not set
1104 1157
1105# 1158#
@@ -1157,6 +1210,10 @@ CONFIG_USB_MON=y
1157# 1210#
1158 1211
1159# 1212#
1213# Virtualization
1214#
1215
1216#
1160# File systems 1217# File systems
1161# 1218#
1162CONFIG_EXT2_FS=y 1219CONFIG_EXT2_FS=y
@@ -1166,6 +1223,7 @@ CONFIG_EXT3_FS=y
1166CONFIG_EXT3_FS_XATTR=y 1223CONFIG_EXT3_FS_XATTR=y
1167# CONFIG_EXT3_FS_POSIX_ACL is not set 1224# CONFIG_EXT3_FS_POSIX_ACL is not set
1168# CONFIG_EXT3_FS_SECURITY is not set 1225# CONFIG_EXT3_FS_SECURITY is not set
1226# CONFIG_EXT4DEV_FS is not set
1169CONFIG_JBD=y 1227CONFIG_JBD=y
1170# CONFIG_JBD_DEBUG is not set 1228# CONFIG_JBD_DEBUG is not set
1171CONFIG_FS_MBCACHE=y 1229CONFIG_FS_MBCACHE=y
@@ -1173,6 +1231,7 @@ CONFIG_FS_MBCACHE=y
1173# CONFIG_JFS_FS is not set 1231# CONFIG_JFS_FS is not set
1174# CONFIG_FS_POSIX_ACL is not set 1232# CONFIG_FS_POSIX_ACL is not set
1175# CONFIG_XFS_FS is not set 1233# CONFIG_XFS_FS is not set
1234# CONFIG_GFS2_FS is not set
1176# CONFIG_OCFS2_FS is not set 1235# CONFIG_OCFS2_FS is not set
1177# CONFIG_MINIX_FS is not set 1236# CONFIG_MINIX_FS is not set
1178# CONFIG_ROMFS_FS is not set 1237# CONFIG_ROMFS_FS is not set
@@ -1207,8 +1266,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1207# 1266#
1208CONFIG_PROC_FS=y 1267CONFIG_PROC_FS=y
1209CONFIG_PROC_KCORE=y 1268CONFIG_PROC_KCORE=y
1269CONFIG_PROC_SYSCTL=y
1210CONFIG_SYSFS=y 1270CONFIG_SYSFS=y
1211CONFIG_TMPFS=y 1271CONFIG_TMPFS=y
1272# CONFIG_TMPFS_POSIX_ACL is not set
1212# CONFIG_HUGETLB_PAGE is not set 1273# CONFIG_HUGETLB_PAGE is not set
1213CONFIG_RAMFS=y 1274CONFIG_RAMFS=y
1214# CONFIG_CONFIGFS_FS is not set 1275# CONFIG_CONFIGFS_FS is not set
@@ -1308,17 +1369,22 @@ CONFIG_NLS_ISO8859_1=m
1308# CONFIG_NLS_UTF8 is not set 1369# CONFIG_NLS_UTF8 is not set
1309 1370
1310# 1371#
1372# Distributed Lock Manager
1373#
1374# CONFIG_DLM is not set
1375
1376#
1311# Library routines 1377# Library routines
1312# 1378#
1379CONFIG_BITREVERSE=y
1313CONFIG_CRC_CCITT=m 1380CONFIG_CRC_CCITT=m
1314# CONFIG_CRC16 is not set 1381# CONFIG_CRC16 is not set
1315CONFIG_CRC32=y 1382CONFIG_CRC32=y
1316# CONFIG_LIBCRC32C is not set 1383# CONFIG_LIBCRC32C is not set
1317CONFIG_ZLIB_INFLATE=m 1384CONFIG_ZLIB_INFLATE=m
1318CONFIG_ZLIB_DEFLATE=m 1385CONFIG_ZLIB_DEFLATE=m
1319CONFIG_TEXTSEARCH=y
1320CONFIG_TEXTSEARCH_KMP=m
1321CONFIG_PLIST=y 1386CONFIG_PLIST=y
1387CONFIG_IOMAP_COPY=y
1322 1388
1323# 1389#
1324# Instrumentation Support 1390# Instrumentation Support
@@ -1329,8 +1395,11 @@ CONFIG_PLIST=y
1329# Kernel hacking 1395# Kernel hacking
1330# 1396#
1331# CONFIG_PRINTK_TIME is not set 1397# CONFIG_PRINTK_TIME is not set
1398CONFIG_ENABLE_MUST_CHECK=y
1332CONFIG_MAGIC_SYSRQ=y 1399CONFIG_MAGIC_SYSRQ=y
1333# CONFIG_UNUSED_SYMBOLS is not set 1400# CONFIG_UNUSED_SYMBOLS is not set
1401# CONFIG_DEBUG_FS is not set
1402# CONFIG_HEADERS_CHECK is not set
1334CONFIG_DEBUG_KERNEL=y 1403CONFIG_DEBUG_KERNEL=y
1335CONFIG_LOG_BUF_SHIFT=15 1404CONFIG_LOG_BUF_SHIFT=15
1336CONFIG_DETECT_SOFTLOCKUP=y 1405CONFIG_DETECT_SOFTLOCKUP=y
@@ -1345,14 +1414,16 @@ CONFIG_DEBUG_SPINLOCK_SLEEP=y
1345# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1414# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1346# CONFIG_DEBUG_KOBJECT is not set 1415# CONFIG_DEBUG_KOBJECT is not set
1347# CONFIG_DEBUG_HIGHMEM is not set 1416# CONFIG_DEBUG_HIGHMEM is not set
1417CONFIG_DEBUG_BUGVERBOSE=y
1348# CONFIG_DEBUG_INFO is not set 1418# CONFIG_DEBUG_INFO is not set
1349# CONFIG_DEBUG_FS is not set
1350# CONFIG_DEBUG_VM is not set 1419# CONFIG_DEBUG_VM is not set
1420# CONFIG_DEBUG_LIST is not set
1351CONFIG_FORCED_INLINING=y 1421CONFIG_FORCED_INLINING=y
1352# CONFIG_RCU_TORTURE_TEST is not set 1422# CONFIG_RCU_TORTURE_TEST is not set
1353CONFIG_DEBUGGER=y 1423CONFIG_DEBUGGER=y
1354CONFIG_XMON=y 1424CONFIG_XMON=y
1355CONFIG_XMON_DEFAULT=y 1425CONFIG_XMON_DEFAULT=y
1426CONFIG_XMON_DISASSEMBLY=y
1356# CONFIG_BDI_SWITCH is not set 1427# CONFIG_BDI_SWITCH is not set
1357# CONFIG_BOOTX_TEXT is not set 1428# CONFIG_BOOTX_TEXT is not set
1358# CONFIG_PPC_EARLY_DEBUG is not set 1429# CONFIG_PPC_EARLY_DEBUG is not set
@@ -1367,7 +1438,11 @@ CONFIG_XMON_DEFAULT=y
1367# Cryptographic options 1438# Cryptographic options
1368# 1439#
1369CONFIG_CRYPTO=y 1440CONFIG_CRYPTO=y
1441CONFIG_CRYPTO_ALGAPI=m
1442CONFIG_CRYPTO_BLKCIPHER=m
1443CONFIG_CRYPTO_MANAGER=m
1370# CONFIG_CRYPTO_HMAC is not set 1444# CONFIG_CRYPTO_HMAC is not set
1445# CONFIG_CRYPTO_XCBC is not set
1371# CONFIG_CRYPTO_NULL is not set 1446# CONFIG_CRYPTO_NULL is not set
1372# CONFIG_CRYPTO_MD4 is not set 1447# CONFIG_CRYPTO_MD4 is not set
1373# CONFIG_CRYPTO_MD5 is not set 1448# CONFIG_CRYPTO_MD5 is not set
@@ -1376,6 +1451,10 @@ CONFIG_CRYPTO_SHA1=m
1376# CONFIG_CRYPTO_SHA512 is not set 1451# CONFIG_CRYPTO_SHA512 is not set
1377# CONFIG_CRYPTO_WP512 is not set 1452# CONFIG_CRYPTO_WP512 is not set
1378# CONFIG_CRYPTO_TGR192 is not set 1453# CONFIG_CRYPTO_TGR192 is not set
1454# CONFIG_CRYPTO_GF128MUL is not set
1455CONFIG_CRYPTO_ECB=m
1456CONFIG_CRYPTO_CBC=m
1457# CONFIG_CRYPTO_LRW is not set
1379# CONFIG_CRYPTO_DES is not set 1458# CONFIG_CRYPTO_DES is not set
1380# CONFIG_CRYPTO_BLOWFISH is not set 1459# CONFIG_CRYPTO_BLOWFISH is not set
1381# CONFIG_CRYPTO_TWOFISH is not set 1460# CONFIG_CRYPTO_TWOFISH is not set
diff --git a/arch/powerpc/configs/g5_defconfig b/arch/powerpc/configs/g5_defconfig
index 92d0a9dd0b8f..7724847f702a 100644
--- a/arch/powerpc/configs/g5_defconfig
+++ b/arch/powerpc/configs/g5_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:22:55 2006 4# Mon Jan 22 22:15:04 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -10,6 +10,8 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
14CONFIG_ARCH_HAS_ILOG2_U64=y
13CONFIG_GENERIC_HWEIGHT=y 15CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 16CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 17CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -22,6 +24,8 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
22CONFIG_PPC_OF=y 24CONFIG_PPC_OF=y
23# CONFIG_PPC_UDBG_16550 is not set 25# CONFIG_PPC_UDBG_16550 is not set
24CONFIG_GENERIC_TBSYNC=y 26CONFIG_GENERIC_TBSYNC=y
27CONFIG_AUDIT_ARCH=y
28CONFIG_GENERIC_BUG=y
25# CONFIG_DEFAULT_UIMAGE is not set 29# CONFIG_DEFAULT_UIMAGE is not set
26 30
27# 31#
@@ -30,6 +34,9 @@ CONFIG_GENERIC_TBSYNC=y
30CONFIG_POWER4_ONLY=y 34CONFIG_POWER4_ONLY=y
31CONFIG_POWER4=y 35CONFIG_POWER4=y
32CONFIG_PPC_FPU=y 36CONFIG_PPC_FPU=y
37# CONFIG_PPC_DCR_NATIVE is not set
38# CONFIG_PPC_DCR_MMIO is not set
39# CONFIG_PPC_OF_PLATFORM_PCI is not set
33CONFIG_ALTIVEC=y 40CONFIG_ALTIVEC=y
34CONFIG_PPC_STD_MMU=y 41CONFIG_PPC_STD_MMU=y
35CONFIG_VIRT_CPU_ACCOUNTING=y 42CONFIG_VIRT_CPU_ACCOUNTING=y
@@ -51,18 +58,22 @@ CONFIG_LOCALVERSION=""
51CONFIG_LOCALVERSION_AUTO=y 58CONFIG_LOCALVERSION_AUTO=y
52CONFIG_SWAP=y 59CONFIG_SWAP=y
53CONFIG_SYSVIPC=y 60CONFIG_SYSVIPC=y
61# CONFIG_IPC_NS is not set
54CONFIG_POSIX_MQUEUE=y 62CONFIG_POSIX_MQUEUE=y
55# CONFIG_BSD_PROCESS_ACCT is not set 63# CONFIG_BSD_PROCESS_ACCT is not set
56# CONFIG_TASKSTATS is not set 64# CONFIG_TASKSTATS is not set
57CONFIG_SYSCTL=y 65# CONFIG_UTS_NS is not set
58# CONFIG_AUDIT is not set 66# CONFIG_AUDIT is not set
59CONFIG_IKCONFIG=y 67CONFIG_IKCONFIG=y
60CONFIG_IKCONFIG_PROC=y 68CONFIG_IKCONFIG_PROC=y
61# CONFIG_CPUSETS is not set 69# CONFIG_CPUSETS is not set
70CONFIG_SYSFS_DEPRECATED=y
62# CONFIG_RELAY is not set 71# CONFIG_RELAY is not set
63CONFIG_INITRAMFS_SOURCE="" 72CONFIG_INITRAMFS_SOURCE=""
64CONFIG_CC_OPTIMIZE_FOR_SIZE=y 73CONFIG_CC_OPTIMIZE_FOR_SIZE=y
74CONFIG_SYSCTL=y
65# CONFIG_EMBEDDED is not set 75# CONFIG_EMBEDDED is not set
76CONFIG_SYSCTL_SYSCALL=y
66CONFIG_KALLSYMS=y 77CONFIG_KALLSYMS=y
67# CONFIG_KALLSYMS_ALL is not set 78# CONFIG_KALLSYMS_ALL is not set
68# CONFIG_KALLSYMS_EXTRA_PASS is not set 79# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -71,12 +82,12 @@ CONFIG_PRINTK=y
71CONFIG_BUG=y 82CONFIG_BUG=y
72CONFIG_ELF_CORE=y 83CONFIG_ELF_CORE=y
73CONFIG_BASE_FULL=y 84CONFIG_BASE_FULL=y
74CONFIG_RT_MUTEXES=y
75CONFIG_FUTEX=y 85CONFIG_FUTEX=y
76CONFIG_EPOLL=y 86CONFIG_EPOLL=y
77CONFIG_SHMEM=y 87CONFIG_SHMEM=y
78CONFIG_SLAB=y 88CONFIG_SLAB=y
79CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_RT_MUTEXES=y
80# CONFIG_TINY_SHMEM is not set 91# CONFIG_TINY_SHMEM is not set
81CONFIG_BASE_SMALL=0 92CONFIG_BASE_SMALL=0
82# CONFIG_SLOB is not set 93# CONFIG_SLOB is not set
@@ -95,6 +106,7 @@ CONFIG_STOP_MACHINE=y
95# 106#
96# Block layer 107# Block layer
97# 108#
109CONFIG_BLOCK=y
98# CONFIG_BLK_DEV_IO_TRACE is not set 110# CONFIG_BLK_DEV_IO_TRACE is not set
99 111
100# 112#
@@ -114,23 +126,28 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
114# Platform support 126# Platform support
115# 127#
116CONFIG_PPC_MULTIPLATFORM=y 128CONFIG_PPC_MULTIPLATFORM=y
117# CONFIG_PPC_ISERIES is not set
118# CONFIG_EMBEDDED6xx is not set 129# CONFIG_EMBEDDED6xx is not set
119# CONFIG_APUS is not set 130# CONFIG_APUS is not set
120# CONFIG_PPC_PSERIES is not set 131# CONFIG_PPC_PSERIES is not set
132# CONFIG_PPC_ISERIES is not set
133# CONFIG_PPC_MPC52xx is not set
121CONFIG_PPC_PMAC=y 134CONFIG_PPC_PMAC=y
122CONFIG_PPC_PMAC64=y 135CONFIG_PPC_PMAC64=y
123# CONFIG_PPC_MAPLE is not set 136# CONFIG_PPC_MAPLE is not set
137# CONFIG_PPC_PASEMI is not set
124# CONFIG_PPC_CELL is not set 138# CONFIG_PPC_CELL is not set
125# CONFIG_PPC_CELL_NATIVE is not set 139# CONFIG_PPC_CELL_NATIVE is not set
126# CONFIG_PPC_IBM_CELL_BLADE is not set 140# CONFIG_PPC_IBM_CELL_BLADE is not set
127# CONFIG_UDBG_RTAS_CONSOLE is not set 141# CONFIG_PPC_PS3 is not set
142CONFIG_PPC_NATIVE=y
128CONFIG_U3_DART=y 143CONFIG_U3_DART=y
129# CONFIG_PPC_RTAS is not set 144# CONFIG_PPC_RTAS is not set
130# CONFIG_MMIO_NVRAM is not set 145# CONFIG_MMIO_NVRAM is not set
131CONFIG_MPIC_BROKEN_U3=y 146CONFIG_MPIC_BROKEN_U3=y
132# CONFIG_PPC_MPC106 is not set 147# CONFIG_PPC_MPC106 is not set
133CONFIG_PPC_970_NAP=y 148CONFIG_PPC_970_NAP=y
149# CONFIG_PPC_INDIRECT_IO is not set
150# CONFIG_GENERIC_IOMAP is not set
134CONFIG_CPU_FREQ=y 151CONFIG_CPU_FREQ=y
135CONFIG_CPU_FREQ_TABLE=y 152CONFIG_CPU_FREQ_TABLE=y
136# CONFIG_CPU_FREQ_DEBUG is not set 153# CONFIG_CPU_FREQ_DEBUG is not set
@@ -152,6 +169,7 @@ CONFIG_MPIC=y
152# 169#
153# CONFIG_HZ_100 is not set 170# CONFIG_HZ_100 is not set
154CONFIG_HZ_250=y 171CONFIG_HZ_250=y
172# CONFIG_HZ_300 is not set
155# CONFIG_HZ_1000 is not set 173# CONFIG_HZ_1000 is not set
156CONFIG_HZ=250 174CONFIG_HZ=250
157CONFIG_PREEMPT_NONE=y 175CONFIG_PREEMPT_NONE=y
@@ -171,6 +189,7 @@ CONFIG_IRQ_ALL_CPUS=y
171CONFIG_ARCH_SELECT_MEMORY_MODEL=y 189CONFIG_ARCH_SELECT_MEMORY_MODEL=y
172CONFIG_ARCH_FLATMEM_ENABLE=y 190CONFIG_ARCH_FLATMEM_ENABLE=y
173CONFIG_ARCH_SPARSEMEM_ENABLE=y 191CONFIG_ARCH_SPARSEMEM_ENABLE=y
192CONFIG_ARCH_POPULATES_NODE_MAP=y
174CONFIG_SELECT_MEMORY_MODEL=y 193CONFIG_SELECT_MEMORY_MODEL=y
175CONFIG_FLATMEM_MANUAL=y 194CONFIG_FLATMEM_MANUAL=y
176# CONFIG_DISCONTIGMEM_MANUAL is not set 195# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -225,6 +244,7 @@ CONFIG_PACKET=y
225CONFIG_UNIX=y 244CONFIG_UNIX=y
226CONFIG_XFRM=y 245CONFIG_XFRM=y
227CONFIG_XFRM_USER=m 246CONFIG_XFRM_USER=m
247# CONFIG_XFRM_SUB_POLICY is not set
228CONFIG_NET_KEY=m 248CONFIG_NET_KEY=m
229CONFIG_INET=y 249CONFIG_INET=y
230CONFIG_IP_MULTICAST=y 250CONFIG_IP_MULTICAST=y
@@ -243,10 +263,13 @@ CONFIG_INET_XFRM_TUNNEL=m
243CONFIG_INET_TUNNEL=y 263CONFIG_INET_TUNNEL=y
244CONFIG_INET_XFRM_MODE_TRANSPORT=y 264CONFIG_INET_XFRM_MODE_TRANSPORT=y
245CONFIG_INET_XFRM_MODE_TUNNEL=y 265CONFIG_INET_XFRM_MODE_TUNNEL=y
266CONFIG_INET_XFRM_MODE_BEET=y
246CONFIG_INET_DIAG=y 267CONFIG_INET_DIAG=y
247CONFIG_INET_TCP_DIAG=y 268CONFIG_INET_TCP_DIAG=y
248# CONFIG_TCP_CONG_ADVANCED is not set 269# CONFIG_TCP_CONG_ADVANCED is not set
249CONFIG_TCP_CONG_BIC=y 270CONFIG_TCP_CONG_CUBIC=y
271CONFIG_DEFAULT_TCP_CONG="cubic"
272# CONFIG_TCP_MD5SIG is not set
250 273
251# 274#
252# IP: Virtual Server Configuration 275# IP: Virtual Server Configuration
@@ -263,24 +286,29 @@ CONFIG_NETFILTER=y
263# Core Netfilter Configuration 286# Core Netfilter Configuration
264# 287#
265# CONFIG_NETFILTER_NETLINK is not set 288# CONFIG_NETFILTER_NETLINK is not set
289CONFIG_NF_CONNTRACK_ENABLED=m
290CONFIG_NF_CONNTRACK_SUPPORT=y
291# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
292CONFIG_NF_CONNTRACK=m
293# CONFIG_NF_CT_ACCT is not set
294CONFIG_NF_CONNTRACK_MARK=y
295CONFIG_NF_CONNTRACK_EVENTS=y
296# CONFIG_NF_CT_PROTO_SCTP is not set
297# CONFIG_NF_CONNTRACK_AMANDA is not set
298CONFIG_NF_CONNTRACK_FTP=m
299# CONFIG_NF_CONNTRACK_H323 is not set
300CONFIG_NF_CONNTRACK_IRC=m
301# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
302# CONFIG_NF_CONNTRACK_PPTP is not set
303# CONFIG_NF_CONNTRACK_SIP is not set
304CONFIG_NF_CONNTRACK_TFTP=m
266# CONFIG_NETFILTER_XTABLES is not set 305# CONFIG_NETFILTER_XTABLES is not set
267 306
268# 307#
269# IP: Netfilter Configuration 308# IP: Netfilter Configuration
270# 309#
271CONFIG_IP_NF_CONNTRACK=m 310CONFIG_NF_CONNTRACK_IPV4=m
272CONFIG_IP_NF_CT_ACCT=y 311CONFIG_NF_CONNTRACK_PROC_COMPAT=y
273CONFIG_IP_NF_CONNTRACK_MARK=y
274CONFIG_IP_NF_CONNTRACK_EVENTS=y
275CONFIG_IP_NF_CT_PROTO_SCTP=m
276CONFIG_IP_NF_FTP=m
277CONFIG_IP_NF_IRC=m
278# CONFIG_IP_NF_NETBIOS_NS is not set
279CONFIG_IP_NF_TFTP=m
280CONFIG_IP_NF_AMANDA=m
281# CONFIG_IP_NF_PPTP is not set
282# CONFIG_IP_NF_H323 is not set
283# CONFIG_IP_NF_SIP is not set
284CONFIG_IP_NF_QUEUE=m 312CONFIG_IP_NF_QUEUE=m
285 313
286# 314#
@@ -307,7 +335,6 @@ CONFIG_LLC=y
307# CONFIG_ATALK is not set 335# CONFIG_ATALK is not set
308# CONFIG_X25 is not set 336# CONFIG_X25 is not set
309# CONFIG_LAPB is not set 337# CONFIG_LAPB is not set
310# CONFIG_NET_DIVERT is not set
311# CONFIG_ECONET is not set 338# CONFIG_ECONET is not set
312# CONFIG_WAN_ROUTER is not set 339# CONFIG_WAN_ROUTER is not set
313 340
@@ -382,6 +409,12 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8
382# CONFIG_ATA_OVER_ETH is not set 409# CONFIG_ATA_OVER_ETH is not set
383 410
384# 411#
412# Misc devices
413#
414# CONFIG_SGI_IOC4 is not set
415# CONFIG_TIFM_CORE is not set
416
417#
385# ATA/ATAPI/MFM/RLL support 418# ATA/ATAPI/MFM/RLL support
386# 419#
387CONFIG_IDE=y 420CONFIG_IDE=y
@@ -408,7 +441,6 @@ CONFIG_BLK_DEV_IDEPCI=y
408# CONFIG_BLK_DEV_OFFBOARD is not set 441# CONFIG_BLK_DEV_OFFBOARD is not set
409# CONFIG_BLK_DEV_GENERIC is not set 442# CONFIG_BLK_DEV_GENERIC is not set
410# CONFIG_BLK_DEV_OPTI621 is not set 443# CONFIG_BLK_DEV_OPTI621 is not set
411# CONFIG_BLK_DEV_SL82C105 is not set
412CONFIG_BLK_DEV_IDEDMA_PCI=y 444CONFIG_BLK_DEV_IDEDMA_PCI=y
413# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 445# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
414CONFIG_IDEDMA_PCI_AUTO=y 446CONFIG_IDEDMA_PCI_AUTO=y
@@ -423,6 +455,7 @@ CONFIG_IDEDMA_PCI_AUTO=y
423# CONFIG_BLK_DEV_CS5530 is not set 455# CONFIG_BLK_DEV_CS5530 is not set
424# CONFIG_BLK_DEV_HPT34X is not set 456# CONFIG_BLK_DEV_HPT34X is not set
425# CONFIG_BLK_DEV_HPT366 is not set 457# CONFIG_BLK_DEV_HPT366 is not set
458# CONFIG_BLK_DEV_JMICRON is not set
426# CONFIG_BLK_DEV_SC1200 is not set 459# CONFIG_BLK_DEV_SC1200 is not set
427# CONFIG_BLK_DEV_PIIX is not set 460# CONFIG_BLK_DEV_PIIX is not set
428# CONFIG_BLK_DEV_IT821X is not set 461# CONFIG_BLK_DEV_IT821X is not set
@@ -431,6 +464,7 @@ CONFIG_IDEDMA_PCI_AUTO=y
431# CONFIG_BLK_DEV_PDC202XX_NEW is not set 464# CONFIG_BLK_DEV_PDC202XX_NEW is not set
432# CONFIG_BLK_DEV_SVWKS is not set 465# CONFIG_BLK_DEV_SVWKS is not set
433# CONFIG_BLK_DEV_SIIMAGE is not set 466# CONFIG_BLK_DEV_SIIMAGE is not set
467# CONFIG_BLK_DEV_SL82C105 is not set
434# CONFIG_BLK_DEV_SLC90E66 is not set 468# CONFIG_BLK_DEV_SLC90E66 is not set
435# CONFIG_BLK_DEV_TRM290 is not set 469# CONFIG_BLK_DEV_TRM290 is not set
436# CONFIG_BLK_DEV_VIA82CXXX is not set 470# CONFIG_BLK_DEV_VIA82CXXX is not set
@@ -448,6 +482,8 @@ CONFIG_IDEDMA_AUTO=y
448# 482#
449# CONFIG_RAID_ATTRS is not set 483# CONFIG_RAID_ATTRS is not set
450CONFIG_SCSI=y 484CONFIG_SCSI=y
485# CONFIG_SCSI_TGT is not set
486# CONFIG_SCSI_NETLINK is not set
451CONFIG_SCSI_PROC_FS=y 487CONFIG_SCSI_PROC_FS=y
452 488
453# 489#
@@ -467,14 +503,16 @@ CONFIG_CHR_DEV_SG=y
467CONFIG_SCSI_MULTI_LUN=y 503CONFIG_SCSI_MULTI_LUN=y
468CONFIG_SCSI_CONSTANTS=y 504CONFIG_SCSI_CONSTANTS=y
469# CONFIG_SCSI_LOGGING is not set 505# CONFIG_SCSI_LOGGING is not set
506# CONFIG_SCSI_SCAN_ASYNC is not set
470 507
471# 508#
472# SCSI Transport Attributes 509# SCSI Transports
473# 510#
474CONFIG_SCSI_SPI_ATTRS=y 511CONFIG_SCSI_SPI_ATTRS=y
475# CONFIG_SCSI_FC_ATTRS is not set 512# CONFIG_SCSI_FC_ATTRS is not set
476# CONFIG_SCSI_ISCSI_ATTRS is not set 513# CONFIG_SCSI_ISCSI_ATTRS is not set
477# CONFIG_SCSI_SAS_ATTRS is not set 514# CONFIG_SCSI_SAS_ATTRS is not set
515# CONFIG_SCSI_SAS_LIBSAS is not set
478 516
479# 517#
480# SCSI low-level drivers 518# SCSI low-level drivers
@@ -487,26 +525,12 @@ CONFIG_SCSI_SPI_ATTRS=y
487# CONFIG_SCSI_AIC7XXX is not set 525# CONFIG_SCSI_AIC7XXX is not set
488# CONFIG_SCSI_AIC7XXX_OLD is not set 526# CONFIG_SCSI_AIC7XXX_OLD is not set
489# CONFIG_SCSI_AIC79XX is not set 527# CONFIG_SCSI_AIC79XX is not set
528# CONFIG_SCSI_AIC94XX is not set
529# CONFIG_SCSI_ARCMSR is not set
490# CONFIG_MEGARAID_NEWGEN is not set 530# CONFIG_MEGARAID_NEWGEN is not set
491# CONFIG_MEGARAID_LEGACY is not set 531# CONFIG_MEGARAID_LEGACY is not set
492# CONFIG_MEGARAID_SAS is not set 532# CONFIG_MEGARAID_SAS is not set
493CONFIG_ATA=y
494# CONFIG_SATA_AHCI is not set
495CONFIG_SATA_SVW=y
496# CONFIG_SCSI_ATA_PIIX is not set
497# CONFIG_SATA_MV is not set
498# CONFIG_SATA_NV is not set
499# CONFIG_SCSI_PDC_ADMA is not set
500# CONFIG_SCSI_HPTIOP is not set 533# CONFIG_SCSI_HPTIOP is not set
501# CONFIG_SATA_QSTOR is not set
502# CONFIG_SATA_PROMISE is not set
503# CONFIG_SATA_SX4 is not set
504# CONFIG_SATA_SIL is not set
505# CONFIG_SATA_SIL24 is not set
506# CONFIG_SATA_SIS is not set
507# CONFIG_SATA_ULI is not set
508# CONFIG_SATA_VIA is not set
509# CONFIG_SATA_VITESSE is not set
510# CONFIG_SCSI_BUSLOGIC is not set 534# CONFIG_SCSI_BUSLOGIC is not set
511# CONFIG_SCSI_DMX3191D is not set 535# CONFIG_SCSI_DMX3191D is not set
512# CONFIG_SCSI_EATA is not set 536# CONFIG_SCSI_EATA is not set
@@ -515,14 +539,71 @@ CONFIG_SATA_SVW=y
515# CONFIG_SCSI_IPS is not set 539# CONFIG_SCSI_IPS is not set
516# CONFIG_SCSI_INITIO is not set 540# CONFIG_SCSI_INITIO is not set
517# CONFIG_SCSI_INIA100 is not set 541# CONFIG_SCSI_INIA100 is not set
542# CONFIG_SCSI_STEX is not set
518# CONFIG_SCSI_SYM53C8XX_2 is not set 543# CONFIG_SCSI_SYM53C8XX_2 is not set
519# CONFIG_SCSI_IPR is not set 544# CONFIG_SCSI_IPR is not set
520# CONFIG_SCSI_QLOGIC_1280 is not set 545# CONFIG_SCSI_QLOGIC_1280 is not set
521# CONFIG_SCSI_QLA_FC is not set 546# CONFIG_SCSI_QLA_FC is not set
547# CONFIG_SCSI_QLA_ISCSI is not set
522# CONFIG_SCSI_LPFC is not set 548# CONFIG_SCSI_LPFC is not set
523# CONFIG_SCSI_DC395x is not set 549# CONFIG_SCSI_DC395x is not set
524# CONFIG_SCSI_DC390T is not set 550# CONFIG_SCSI_DC390T is not set
525# CONFIG_SCSI_DEBUG is not set 551# CONFIG_SCSI_DEBUG is not set
552# CONFIG_SCSI_SRP is not set
553
554#
555# Serial ATA (prod) and Parallel ATA (experimental) drivers
556#
557CONFIG_ATA=y
558# CONFIG_SATA_AHCI is not set
559CONFIG_SATA_SVW=y
560# CONFIG_ATA_PIIX is not set
561# CONFIG_SATA_MV is not set
562# CONFIG_SATA_NV is not set
563# CONFIG_PDC_ADMA is not set
564# CONFIG_SATA_QSTOR is not set
565# CONFIG_SATA_PROMISE is not set
566# CONFIG_SATA_SX4 is not set
567# CONFIG_SATA_SIL is not set
568# CONFIG_SATA_SIL24 is not set
569# CONFIG_SATA_SIS is not set
570# CONFIG_SATA_ULI is not set
571# CONFIG_SATA_VIA is not set
572# CONFIG_SATA_VITESSE is not set
573# CONFIG_PATA_ALI is not set
574# CONFIG_PATA_AMD is not set
575# CONFIG_PATA_ARTOP is not set
576# CONFIG_PATA_ATIIXP is not set
577# CONFIG_PATA_CMD64X is not set
578# CONFIG_PATA_CS5520 is not set
579# CONFIG_PATA_CS5530 is not set
580# CONFIG_PATA_CYPRESS is not set
581# CONFIG_PATA_EFAR is not set
582# CONFIG_ATA_GENERIC is not set
583# CONFIG_PATA_HPT366 is not set
584# CONFIG_PATA_HPT37X is not set
585# CONFIG_PATA_HPT3X2N is not set
586# CONFIG_PATA_HPT3X3 is not set
587# CONFIG_PATA_IT821X is not set
588# CONFIG_PATA_JMICRON is not set
589# CONFIG_PATA_TRIFLEX is not set
590# CONFIG_PATA_MARVELL is not set
591# CONFIG_PATA_MPIIX is not set
592# CONFIG_PATA_OLDPIIX is not set
593# CONFIG_PATA_NETCELL is not set
594# CONFIG_PATA_NS87410 is not set
595# CONFIG_PATA_OPTI is not set
596# CONFIG_PATA_OPTIDMA is not set
597# CONFIG_PATA_PDC_OLD is not set
598# CONFIG_PATA_RADISYS is not set
599# CONFIG_PATA_RZ1000 is not set
600# CONFIG_PATA_SC1200 is not set
601# CONFIG_PATA_SERVERWORKS is not set
602# CONFIG_PATA_PDC2027X is not set
603# CONFIG_PATA_SIL680 is not set
604# CONFIG_PATA_SIS is not set
605# CONFIG_PATA_VIA is not set
606# CONFIG_PATA_WINBOND is not set
526 607
527# 608#
528# Multi-device support (RAID and LVM) 609# Multi-device support (RAID and LVM)
@@ -537,6 +618,7 @@ CONFIG_MD_RAID10=m
537CONFIG_MD_MULTIPATH=m 618CONFIG_MD_MULTIPATH=m
538CONFIG_MD_FAULTY=m 619CONFIG_MD_FAULTY=m
539CONFIG_BLK_DEV_DM=y 620CONFIG_BLK_DEV_DM=y
621# CONFIG_DM_DEBUG is not set
540CONFIG_DM_CRYPT=m 622CONFIG_DM_CRYPT=m
541CONFIG_DM_SNAPSHOT=m 623CONFIG_DM_SNAPSHOT=m
542CONFIG_DM_MIRROR=m 624CONFIG_DM_MIRROR=m
@@ -591,11 +673,13 @@ CONFIG_IEEE1394_RAWIO=y
591CONFIG_ADB_PMU=y 673CONFIG_ADB_PMU=y
592# CONFIG_ADB_PMU_LED is not set 674# CONFIG_ADB_PMU_LED is not set
593CONFIG_PMAC_SMU=y 675CONFIG_PMAC_SMU=y
676CONFIG_MAC_EMUMOUSEBTN=y
594CONFIG_THERM_PM72=y 677CONFIG_THERM_PM72=y
595CONFIG_WINDFARM=y 678CONFIG_WINDFARM=y
596CONFIG_WINDFARM_PM81=y 679CONFIG_WINDFARM_PM81=y
597CONFIG_WINDFARM_PM91=y 680CONFIG_WINDFARM_PM91=y
598CONFIG_WINDFARM_PM112=y 681CONFIG_WINDFARM_PM112=y
682# CONFIG_PMAC_RACKMETER is not set
599 683
600# 684#
601# Network device support 685# Network device support
@@ -652,7 +736,7 @@ CONFIG_E1000=y
652# CONFIG_SK98LIN is not set 736# CONFIG_SK98LIN is not set
653CONFIG_TIGON3=y 737CONFIG_TIGON3=y
654# CONFIG_BNX2 is not set 738# CONFIG_BNX2 is not set
655# CONFIG_MV643XX_ETH is not set 739# CONFIG_QLA3XXX is not set
656 740
657# 741#
658# Ethernet (10000 Mbit) 742# Ethernet (10000 Mbit)
@@ -661,6 +745,7 @@ CONFIG_TIGON3=y
661# CONFIG_IXGB is not set 745# CONFIG_IXGB is not set
662# CONFIG_S2IO is not set 746# CONFIG_S2IO is not set
663# CONFIG_MYRI10GE is not set 747# CONFIG_MYRI10GE is not set
748# CONFIG_NETXEN_NIC is not set
664 749
665# 750#
666# Token Ring devices 751# Token Ring devices
@@ -691,6 +776,7 @@ CONFIG_PPP_BSDCOMP=m
691# CONFIG_PPP_MPPE is not set 776# CONFIG_PPP_MPPE is not set
692CONFIG_PPPOE=m 777CONFIG_PPPOE=m
693# CONFIG_SLIP is not set 778# CONFIG_SLIP is not set
779CONFIG_SLHC=m
694# CONFIG_NET_FC is not set 780# CONFIG_NET_FC is not set
695# CONFIG_SHAPER is not set 781# CONFIG_SHAPER is not set
696# CONFIG_NETCONSOLE is not set 782# CONFIG_NETCONSOLE is not set
@@ -711,6 +797,7 @@ CONFIG_PPPOE=m
711# Input device support 797# Input device support
712# 798#
713CONFIG_INPUT=y 799CONFIG_INPUT=y
800CONFIG_INPUT_FF_MEMLESS=y
714 801
715# 802#
716# Userland interfaces 803# Userland interfaces
@@ -733,6 +820,7 @@ CONFIG_INPUT_KEYBOARD=y
733# CONFIG_KEYBOARD_LKKBD is not set 820# CONFIG_KEYBOARD_LKKBD is not set
734# CONFIG_KEYBOARD_XTKBD is not set 821# CONFIG_KEYBOARD_XTKBD is not set
735# CONFIG_KEYBOARD_NEWTON is not set 822# CONFIG_KEYBOARD_NEWTON is not set
823# CONFIG_KEYBOARD_STOWAWAY is not set
736CONFIG_INPUT_MOUSE=y 824CONFIG_INPUT_MOUSE=y
737# CONFIG_MOUSE_PS2 is not set 825# CONFIG_MOUSE_PS2 is not set
738# CONFIG_MOUSE_SERIAL is not set 826# CONFIG_MOUSE_SERIAL is not set
@@ -789,13 +877,7 @@ CONFIG_GEN_RTC=y
789# CONFIG_DTLK is not set 877# CONFIG_DTLK is not set
790# CONFIG_R3964 is not set 878# CONFIG_R3964 is not set
791# CONFIG_APPLICOM is not set 879# CONFIG_APPLICOM is not set
792
793#
794# Ftape, the floppy tape device driver
795#
796CONFIG_AGP=m 880CONFIG_AGP=m
797# CONFIG_AGP_SIS is not set
798# CONFIG_AGP_VIA is not set
799CONFIG_AGP_UNINORTH=m 881CONFIG_AGP_UNINORTH=m
800# CONFIG_DRM is not set 882# CONFIG_DRM is not set
801CONFIG_RAW_DRIVER=y 883CONFIG_RAW_DRIVER=y
@@ -806,7 +888,6 @@ CONFIG_MAX_RAW_DEVS=256
806# TPM devices 888# TPM devices
807# 889#
808# CONFIG_TCG_TPM is not set 890# CONFIG_TCG_TPM is not set
809# CONFIG_TELCLOCK is not set
810 891
811# 892#
812# I2C support 893# I2C support
@@ -871,6 +952,7 @@ CONFIG_I2C_POWERMAC=y
871# 952#
872# Dallas's 1-wire bus 953# Dallas's 1-wire bus
873# 954#
955# CONFIG_W1 is not set
874 956
875# 957#
876# Hardware Monitoring support 958# Hardware Monitoring support
@@ -879,14 +961,9 @@ CONFIG_I2C_POWERMAC=y
879# CONFIG_HWMON_VID is not set 961# CONFIG_HWMON_VID is not set
880 962
881# 963#
882# Misc devices
883#
884
885#
886# Multimedia devices 964# Multimedia devices
887# 965#
888# CONFIG_VIDEO_DEV is not set 966# CONFIG_VIDEO_DEV is not set
889CONFIG_VIDEO_V4L2=y
890 967
891# 968#
892# Digital Video Broadcasting Devices 969# Digital Video Broadcasting Devices
@@ -899,6 +976,7 @@ CONFIG_VIDEO_V4L2=y
899# 976#
900CONFIG_FIRMWARE_EDID=y 977CONFIG_FIRMWARE_EDID=y
901CONFIG_FB=y 978CONFIG_FB=y
979CONFIG_FB_DDC=y
902CONFIG_FB_CFB_FILLRECT=y 980CONFIG_FB_CFB_FILLRECT=y
903CONFIG_FB_CFB_COPYAREA=y 981CONFIG_FB_CFB_COPYAREA=y
904CONFIG_FB_CFB_IMAGEBLIT=y 982CONFIG_FB_CFB_IMAGEBLIT=y
@@ -930,6 +1008,7 @@ CONFIG_FB_RADEON_I2C=y
930# CONFIG_FB_3DFX is not set 1008# CONFIG_FB_3DFX is not set
931# CONFIG_FB_VOODOO1 is not set 1009# CONFIG_FB_VOODOO1 is not set
932# CONFIG_FB_TRIDENT is not set 1010# CONFIG_FB_TRIDENT is not set
1011# CONFIG_FB_IBM_GXT4500 is not set
933# CONFIG_FB_VIRTUAL is not set 1012# CONFIG_FB_VIRTUAL is not set
934 1013
935# 1014#
@@ -1080,6 +1159,11 @@ CONFIG_SND_USB_AUDIO=m
1080# CONFIG_SOUND_PRIME is not set 1159# CONFIG_SOUND_PRIME is not set
1081 1160
1082# 1161#
1162# HID Devices
1163#
1164CONFIG_HID=y
1165
1166#
1083# USB support 1167# USB support
1084# 1168#
1085CONFIG_USB_ARCH_HAS_HCD=y 1169CONFIG_USB_ARCH_HAS_HCD=y
@@ -1094,6 +1178,7 @@ CONFIG_USB=y
1094CONFIG_USB_DEVICEFS=y 1178CONFIG_USB_DEVICEFS=y
1095# CONFIG_USB_BANDWIDTH is not set 1179# CONFIG_USB_BANDWIDTH is not set
1096# CONFIG_USB_DYNAMIC_MINORS is not set 1180# CONFIG_USB_DYNAMIC_MINORS is not set
1181# CONFIG_USB_MULTITHREAD_PROBE is not set
1097# CONFIG_USB_OTG is not set 1182# CONFIG_USB_OTG is not set
1098 1183
1099# 1184#
@@ -1135,18 +1220,19 @@ CONFIG_USB_STORAGE_SDDR55=y
1135CONFIG_USB_STORAGE_JUMPSHOT=y 1220CONFIG_USB_STORAGE_JUMPSHOT=y
1136# CONFIG_USB_STORAGE_ALAUDA is not set 1221# CONFIG_USB_STORAGE_ALAUDA is not set
1137# CONFIG_USB_STORAGE_ONETOUCH is not set 1222# CONFIG_USB_STORAGE_ONETOUCH is not set
1223# CONFIG_USB_STORAGE_KARMA is not set
1138# CONFIG_USB_LIBUSUAL is not set 1224# CONFIG_USB_LIBUSUAL is not set
1139 1225
1140# 1226#
1141# USB Input Devices 1227# USB Input Devices
1142# 1228#
1143CONFIG_USB_HID=y 1229CONFIG_USB_HID=y
1144CONFIG_USB_HIDINPUT=y
1145# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1230# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1146CONFIG_HID_FF=y 1231CONFIG_HID_FF=y
1147CONFIG_HID_PID=y 1232CONFIG_HID_PID=y
1148CONFIG_LOGITECH_FF=y 1233CONFIG_LOGITECH_FF=y
1149CONFIG_THRUSTMASTER_FF=y 1234CONFIG_THRUSTMASTER_FF=y
1235# CONFIG_ZEROPLUS_FF is not set
1150CONFIG_USB_HIDDEV=y 1236CONFIG_USB_HIDDEV=y
1151# CONFIG_USB_AIPTEK is not set 1237# CONFIG_USB_AIPTEK is not set
1152# CONFIG_USB_WACOM is not set 1238# CONFIG_USB_WACOM is not set
@@ -1174,12 +1260,14 @@ CONFIG_USB_CATC=m
1174CONFIG_USB_KAWETH=m 1260CONFIG_USB_KAWETH=m
1175CONFIG_USB_PEGASUS=m 1261CONFIG_USB_PEGASUS=m
1176CONFIG_USB_RTL8150=m 1262CONFIG_USB_RTL8150=m
1263# CONFIG_USB_USBNET_MII is not set
1177CONFIG_USB_USBNET=m 1264CONFIG_USB_USBNET=m
1178# CONFIG_USB_NET_AX8817X is not set 1265# CONFIG_USB_NET_AX8817X is not set
1179CONFIG_USB_NET_CDCETHER=m 1266CONFIG_USB_NET_CDCETHER=m
1180# CONFIG_USB_NET_GL620A is not set 1267# CONFIG_USB_NET_GL620A is not set
1181# CONFIG_USB_NET_NET1080 is not set 1268# CONFIG_USB_NET_NET1080 is not set
1182# CONFIG_USB_NET_PLUSB is not set 1269# CONFIG_USB_NET_PLUSB is not set
1270# CONFIG_USB_NET_MCS7830 is not set
1183# CONFIG_USB_NET_RNDIS_HOST is not set 1271# CONFIG_USB_NET_RNDIS_HOST is not set
1184# CONFIG_USB_NET_CDC_SUBSET is not set 1272# CONFIG_USB_NET_CDC_SUBSET is not set
1185# CONFIG_USB_NET_ZAURUS is not set 1273# CONFIG_USB_NET_ZAURUS is not set
@@ -1194,6 +1282,7 @@ CONFIG_USB_MON=y
1194# 1282#
1195CONFIG_USB_SERIAL=m 1283CONFIG_USB_SERIAL=m
1196CONFIG_USB_SERIAL_GENERIC=y 1284CONFIG_USB_SERIAL_GENERIC=y
1285# CONFIG_USB_SERIAL_AIRCABLE is not set
1197# CONFIG_USB_SERIAL_AIRPRIME is not set 1286# CONFIG_USB_SERIAL_AIRPRIME is not set
1198# CONFIG_USB_SERIAL_ARK3116 is not set 1287# CONFIG_USB_SERIAL_ARK3116 is not set
1199CONFIG_USB_SERIAL_BELKIN=m 1288CONFIG_USB_SERIAL_BELKIN=m
@@ -1228,6 +1317,8 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
1228CONFIG_USB_SERIAL_KLSI=m 1317CONFIG_USB_SERIAL_KLSI=m
1229CONFIG_USB_SERIAL_KOBIL_SCT=m 1318CONFIG_USB_SERIAL_KOBIL_SCT=m
1230CONFIG_USB_SERIAL_MCT_U232=m 1319CONFIG_USB_SERIAL_MCT_U232=m
1320# CONFIG_USB_SERIAL_MOS7720 is not set
1321# CONFIG_USB_SERIAL_MOS7840 is not set
1231# CONFIG_USB_SERIAL_NAVMAN is not set 1322# CONFIG_USB_SERIAL_NAVMAN is not set
1232CONFIG_USB_SERIAL_PL2303=m 1323CONFIG_USB_SERIAL_PL2303=m
1233# CONFIG_USB_SERIAL_HP4X is not set 1324# CONFIG_USB_SERIAL_HP4X is not set
@@ -1239,6 +1330,7 @@ CONFIG_USB_SERIAL_CYBERJACK=m
1239CONFIG_USB_SERIAL_XIRCOM=m 1330CONFIG_USB_SERIAL_XIRCOM=m
1240# CONFIG_USB_SERIAL_OPTION is not set 1331# CONFIG_USB_SERIAL_OPTION is not set
1241CONFIG_USB_SERIAL_OMNINET=m 1332CONFIG_USB_SERIAL_OMNINET=m
1333# CONFIG_USB_SERIAL_DEBUG is not set
1242CONFIG_USB_EZUSB=y 1334CONFIG_USB_EZUSB=y
1243 1335
1244# 1336#
@@ -1246,6 +1338,7 @@ CONFIG_USB_EZUSB=y
1246# 1338#
1247# CONFIG_USB_EMI62 is not set 1339# CONFIG_USB_EMI62 is not set
1248# CONFIG_USB_EMI26 is not set 1340# CONFIG_USB_EMI26 is not set
1341# CONFIG_USB_ADUTUX is not set
1249# CONFIG_USB_AUERSWALD is not set 1342# CONFIG_USB_AUERSWALD is not set
1250# CONFIG_USB_RIO500 is not set 1343# CONFIG_USB_RIO500 is not set
1251# CONFIG_USB_LEGOTOWER is not set 1344# CONFIG_USB_LEGOTOWER is not set
@@ -1253,12 +1346,13 @@ CONFIG_USB_EZUSB=y
1253# CONFIG_USB_LED is not set 1346# CONFIG_USB_LED is not set
1254# CONFIG_USB_CYPRESS_CY7C63 is not set 1347# CONFIG_USB_CYPRESS_CY7C63 is not set
1255# CONFIG_USB_CYTHERM is not set 1348# CONFIG_USB_CYTHERM is not set
1256# CONFIG_USB_PHIDGETKIT is not set 1349# CONFIG_USB_PHIDGET is not set
1257# CONFIG_USB_PHIDGETSERVO is not set
1258# CONFIG_USB_IDMOUSE is not set 1350# CONFIG_USB_IDMOUSE is not set
1351# CONFIG_USB_FTDI_ELAN is not set
1259CONFIG_USB_APPLEDISPLAY=m 1352CONFIG_USB_APPLEDISPLAY=m
1260# CONFIG_USB_SISUSBVGA is not set 1353# CONFIG_USB_SISUSBVGA is not set
1261# CONFIG_USB_LD is not set 1354# CONFIG_USB_LD is not set
1355# CONFIG_USB_TRANCEVIBRATOR is not set
1262# CONFIG_USB_TEST is not set 1356# CONFIG_USB_TEST is not set
1263 1357
1264# 1358#
@@ -1316,6 +1410,10 @@ CONFIG_USB_APPLEDISPLAY=m
1316# 1410#
1317 1411
1318# 1412#
1413# Virtualization
1414#
1415
1416#
1319# File systems 1417# File systems
1320# 1418#
1321CONFIG_EXT2_FS=y 1419CONFIG_EXT2_FS=y
@@ -1328,6 +1426,7 @@ CONFIG_EXT3_FS=y
1328CONFIG_EXT3_FS_XATTR=y 1426CONFIG_EXT3_FS_XATTR=y
1329CONFIG_EXT3_FS_POSIX_ACL=y 1427CONFIG_EXT3_FS_POSIX_ACL=y
1330CONFIG_EXT3_FS_SECURITY=y 1428CONFIG_EXT3_FS_SECURITY=y
1429# CONFIG_EXT4DEV_FS is not set
1331CONFIG_JBD=y 1430CONFIG_JBD=y
1332# CONFIG_JBD_DEBUG is not set 1431# CONFIG_JBD_DEBUG is not set
1333CONFIG_FS_MBCACHE=y 1432CONFIG_FS_MBCACHE=y
@@ -1344,6 +1443,7 @@ CONFIG_XFS_FS=m
1344CONFIG_XFS_SECURITY=y 1443CONFIG_XFS_SECURITY=y
1345CONFIG_XFS_POSIX_ACL=y 1444CONFIG_XFS_POSIX_ACL=y
1346# CONFIG_XFS_RT is not set 1445# CONFIG_XFS_RT is not set
1446# CONFIG_GFS2_FS is not set
1347# CONFIG_OCFS2_FS is not set 1447# CONFIG_OCFS2_FS is not set
1348# CONFIG_MINIX_FS is not set 1448# CONFIG_MINIX_FS is not set
1349# CONFIG_ROMFS_FS is not set 1449# CONFIG_ROMFS_FS is not set
@@ -1380,8 +1480,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1380# 1480#
1381CONFIG_PROC_FS=y 1481CONFIG_PROC_FS=y
1382CONFIG_PROC_KCORE=y 1482CONFIG_PROC_KCORE=y
1483CONFIG_PROC_SYSCTL=y
1383CONFIG_SYSFS=y 1484CONFIG_SYSFS=y
1384CONFIG_TMPFS=y 1485CONFIG_TMPFS=y
1486# CONFIG_TMPFS_POSIX_ACL is not set
1385CONFIG_HUGETLBFS=y 1487CONFIG_HUGETLBFS=y
1386CONFIG_HUGETLB_PAGE=y 1488CONFIG_HUGETLB_PAGE=y
1387CONFIG_RAMFS=y 1489CONFIG_RAMFS=y
@@ -1505,17 +1607,22 @@ CONFIG_NLS_ISO8859_15=y
1505CONFIG_NLS_UTF8=y 1607CONFIG_NLS_UTF8=y
1506 1608
1507# 1609#
1610# Distributed Lock Manager
1611#
1612# CONFIG_DLM is not set
1613
1614#
1508# Library routines 1615# Library routines
1509# 1616#
1617CONFIG_BITREVERSE=y
1510CONFIG_CRC_CCITT=m 1618CONFIG_CRC_CCITT=m
1511# CONFIG_CRC16 is not set 1619# CONFIG_CRC16 is not set
1512CONFIG_CRC32=y 1620CONFIG_CRC32=y
1513CONFIG_LIBCRC32C=m 1621CONFIG_LIBCRC32C=m
1514CONFIG_ZLIB_INFLATE=y 1622CONFIG_ZLIB_INFLATE=y
1515CONFIG_ZLIB_DEFLATE=m 1623CONFIG_ZLIB_DEFLATE=m
1516CONFIG_TEXTSEARCH=y
1517CONFIG_TEXTSEARCH_KMP=m
1518CONFIG_PLIST=y 1624CONFIG_PLIST=y
1625CONFIG_IOMAP_COPY=y
1519 1626
1520# 1627#
1521# Instrumentation Support 1628# Instrumentation Support
@@ -1528,8 +1635,11 @@ CONFIG_OPROFILE=y
1528# Kernel hacking 1635# Kernel hacking
1529# 1636#
1530# CONFIG_PRINTK_TIME is not set 1637# CONFIG_PRINTK_TIME is not set
1638CONFIG_ENABLE_MUST_CHECK=y
1531CONFIG_MAGIC_SYSRQ=y 1639CONFIG_MAGIC_SYSRQ=y
1532# CONFIG_UNUSED_SYMBOLS is not set 1640# CONFIG_UNUSED_SYMBOLS is not set
1641CONFIG_DEBUG_FS=y
1642# CONFIG_HEADERS_CHECK is not set
1533CONFIG_DEBUG_KERNEL=y 1643CONFIG_DEBUG_KERNEL=y
1534CONFIG_LOG_BUF_SHIFT=17 1644CONFIG_LOG_BUF_SHIFT=17
1535CONFIG_DETECT_SOFTLOCKUP=y 1645CONFIG_DETECT_SOFTLOCKUP=y
@@ -1543,9 +1653,10 @@ CONFIG_DEBUG_MUTEXES=y
1543# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1653# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1544# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1654# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1545# CONFIG_DEBUG_KOBJECT is not set 1655# CONFIG_DEBUG_KOBJECT is not set
1656CONFIG_DEBUG_BUGVERBOSE=y
1546# CONFIG_DEBUG_INFO is not set 1657# CONFIG_DEBUG_INFO is not set
1547CONFIG_DEBUG_FS=y
1548# CONFIG_DEBUG_VM is not set 1658# CONFIG_DEBUG_VM is not set
1659# CONFIG_DEBUG_LIST is not set
1549CONFIG_FORCED_INLINING=y 1660CONFIG_FORCED_INLINING=y
1550# CONFIG_RCU_TORTURE_TEST is not set 1661# CONFIG_RCU_TORTURE_TEST is not set
1551# CONFIG_DEBUG_STACKOVERFLOW is not set 1662# CONFIG_DEBUG_STACKOVERFLOW is not set
@@ -1565,7 +1676,12 @@ CONFIG_BOOTX_TEXT=y
1565# Cryptographic options 1676# Cryptographic options
1566# 1677#
1567CONFIG_CRYPTO=y 1678CONFIG_CRYPTO=y
1679CONFIG_CRYPTO_ALGAPI=y
1680CONFIG_CRYPTO_BLKCIPHER=y
1681CONFIG_CRYPTO_HASH=y
1682CONFIG_CRYPTO_MANAGER=y
1568CONFIG_CRYPTO_HMAC=y 1683CONFIG_CRYPTO_HMAC=y
1684# CONFIG_CRYPTO_XCBC is not set
1569CONFIG_CRYPTO_NULL=m 1685CONFIG_CRYPTO_NULL=m
1570CONFIG_CRYPTO_MD4=m 1686CONFIG_CRYPTO_MD4=m
1571CONFIG_CRYPTO_MD5=y 1687CONFIG_CRYPTO_MD5=y
@@ -1574,9 +1690,14 @@ CONFIG_CRYPTO_SHA256=m
1574CONFIG_CRYPTO_SHA512=m 1690CONFIG_CRYPTO_SHA512=m
1575CONFIG_CRYPTO_WP512=m 1691CONFIG_CRYPTO_WP512=m
1576# CONFIG_CRYPTO_TGR192 is not set 1692# CONFIG_CRYPTO_TGR192 is not set
1693# CONFIG_CRYPTO_GF128MUL is not set
1694CONFIG_CRYPTO_ECB=m
1695CONFIG_CRYPTO_CBC=y
1696# CONFIG_CRYPTO_LRW is not set
1577CONFIG_CRYPTO_DES=y 1697CONFIG_CRYPTO_DES=y
1578CONFIG_CRYPTO_BLOWFISH=m 1698CONFIG_CRYPTO_BLOWFISH=m
1579CONFIG_CRYPTO_TWOFISH=m 1699CONFIG_CRYPTO_TWOFISH=m
1700CONFIG_CRYPTO_TWOFISH_COMMON=m
1580CONFIG_CRYPTO_SERPENT=m 1701CONFIG_CRYPTO_SERPENT=m
1581CONFIG_CRYPTO_AES=m 1702CONFIG_CRYPTO_AES=m
1582CONFIG_CRYPTO_CAST5=m 1703CONFIG_CRYPTO_CAST5=m
diff --git a/arch/powerpc/configs/iseries_defconfig b/arch/powerpc/configs/iseries_defconfig
index b5005506c2f8..5fc87448704c 100644
--- a/arch/powerpc/configs/iseries_defconfig
+++ b/arch/powerpc/configs/iseries_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.19-rc1 3# Linux kernel version: 2.6.20-rc5
4# Fri Oct 6 13:25:04 2006 4# Mon Jan 22 22:16:44 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -10,6 +10,8 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
14CONFIG_ARCH_HAS_ILOG2_U64=y
13CONFIG_GENERIC_HWEIGHT=y 15CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 16CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 17CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -23,6 +25,7 @@ CONFIG_PPC_OF=y
23# CONFIG_PPC_UDBG_16550 is not set 25# CONFIG_PPC_UDBG_16550 is not set
24# CONFIG_GENERIC_TBSYNC is not set 26# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y 27CONFIG_AUDIT_ARCH=y
28CONFIG_GENERIC_BUG=y
26# CONFIG_DEFAULT_UIMAGE is not set 29# CONFIG_DEFAULT_UIMAGE is not set
27 30
28# 31#
@@ -32,6 +35,9 @@ CONFIG_AUDIT_ARCH=y
32CONFIG_POWER3=y 35CONFIG_POWER3=y
33CONFIG_POWER4=y 36CONFIG_POWER4=y
34CONFIG_PPC_FPU=y 37CONFIG_PPC_FPU=y
38# CONFIG_PPC_DCR_NATIVE is not set
39# CONFIG_PPC_DCR_MMIO is not set
40# CONFIG_PPC_OF_PLATFORM_PCI is not set
35# CONFIG_ALTIVEC is not set 41# CONFIG_ALTIVEC is not set
36CONFIG_PPC_STD_MMU=y 42CONFIG_PPC_STD_MMU=y
37CONFIG_VIRT_CPU_ACCOUNTING=y 43CONFIG_VIRT_CPU_ACCOUNTING=y
@@ -63,12 +69,13 @@ CONFIG_AUDITSYSCALL=y
63CONFIG_IKCONFIG=y 69CONFIG_IKCONFIG=y
64CONFIG_IKCONFIG_PROC=y 70CONFIG_IKCONFIG_PROC=y
65# CONFIG_CPUSETS is not set 71# CONFIG_CPUSETS is not set
72CONFIG_SYSFS_DEPRECATED=y
66# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
67CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
68CONFIG_CC_OPTIMIZE_FOR_SIZE=y 75CONFIG_CC_OPTIMIZE_FOR_SIZE=y
69CONFIG_SYSCTL=y 76CONFIG_SYSCTL=y
70# CONFIG_EMBEDDED is not set 77# CONFIG_EMBEDDED is not set
71# CONFIG_SYSCTL_SYSCALL is not set 78CONFIG_SYSCTL_SYSCALL=y
72CONFIG_KALLSYMS=y 79CONFIG_KALLSYMS=y
73# CONFIG_KALLSYMS_ALL is not set 80# CONFIG_KALLSYMS_ALL is not set
74# CONFIG_KALLSYMS_EXTRA_PASS is not set 81# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -125,18 +132,22 @@ CONFIG_PPC_MULTIPLATFORM=y
125# CONFIG_APUS is not set 132# CONFIG_APUS is not set
126# CONFIG_PPC_PSERIES is not set 133# CONFIG_PPC_PSERIES is not set
127CONFIG_PPC_ISERIES=y 134CONFIG_PPC_ISERIES=y
135# CONFIG_PPC_MPC52xx is not set
128# CONFIG_PPC_PMAC is not set 136# CONFIG_PPC_PMAC is not set
129# CONFIG_PPC_MAPLE is not set 137# CONFIG_PPC_MAPLE is not set
130# CONFIG_PPC_PASEMI is not set 138# CONFIG_PPC_PASEMI is not set
131# CONFIG_PPC_CELL is not set 139# CONFIG_PPC_CELL is not set
132# CONFIG_PPC_CELL_NATIVE is not set 140# CONFIG_PPC_CELL_NATIVE is not set
133# CONFIG_PPC_IBM_CELL_BLADE is not set 141# CONFIG_PPC_IBM_CELL_BLADE is not set
142# CONFIG_PPC_PS3 is not set
134# CONFIG_U3_DART is not set 143# CONFIG_U3_DART is not set
135# CONFIG_PPC_RTAS is not set 144# CONFIG_PPC_RTAS is not set
136# CONFIG_MMIO_NVRAM is not set 145# CONFIG_MMIO_NVRAM is not set
137CONFIG_IBMVIO=y 146CONFIG_IBMVIO=y
138# CONFIG_PPC_MPC106 is not set 147# CONFIG_PPC_MPC106 is not set
139# CONFIG_PPC_970_NAP is not set 148# CONFIG_PPC_970_NAP is not set
149CONFIG_PPC_INDIRECT_IO=y
150CONFIG_GENERIC_IOMAP=y
140# CONFIG_CPU_FREQ is not set 151# CONFIG_CPU_FREQ is not set
141# CONFIG_WANT_EARLY_SERIAL is not set 152# CONFIG_WANT_EARLY_SERIAL is not set
142# CONFIG_MPIC is not set 153# CONFIG_MPIC is not set
@@ -146,6 +157,7 @@ CONFIG_IBMVIO=y
146# 157#
147# CONFIG_HZ_100 is not set 158# CONFIG_HZ_100 is not set
148CONFIG_HZ_250=y 159CONFIG_HZ_250=y
160# CONFIG_HZ_300 is not set
149# CONFIG_HZ_1000 is not set 161# CONFIG_HZ_1000 is not set
150CONFIG_HZ=250 162CONFIG_HZ=250
151CONFIG_PREEMPT_NONE=y 163CONFIG_PREEMPT_NONE=y
@@ -178,6 +190,7 @@ CONFIG_RESOURCES_64BIT=y
178# CONFIG_PPC_64K_PAGES is not set 190# CONFIG_PPC_64K_PAGES is not set
179# CONFIG_SCHED_SMT is not set 191# CONFIG_SCHED_SMT is not set
180CONFIG_PROC_DEVICETREE=y 192CONFIG_PROC_DEVICETREE=y
193# CONFIG_CMDLINE_BOOL is not set
181# CONFIG_PM is not set 194# CONFIG_PM is not set
182CONFIG_SECCOMP=y 195CONFIG_SECCOMP=y
183CONFIG_ISA_DMA_API=y 196CONFIG_ISA_DMA_API=y
@@ -192,7 +205,6 @@ CONFIG_GENERIC_ISA_DMA=y
192CONFIG_PCI=y 205CONFIG_PCI=y
193CONFIG_PCI_DOMAINS=y 206CONFIG_PCI_DOMAINS=y
194# CONFIG_PCIEPORTBUS is not set 207# CONFIG_PCIEPORTBUS is not set
195# CONFIG_PCI_MULTITHREAD_PROBE is not set
196# CONFIG_PCI_DEBUG is not set 208# CONFIG_PCI_DEBUG is not set
197 209
198# 210#
@@ -245,6 +257,7 @@ CONFIG_INET_TCP_DIAG=y
245# CONFIG_TCP_CONG_ADVANCED is not set 257# CONFIG_TCP_CONG_ADVANCED is not set
246CONFIG_TCP_CONG_CUBIC=y 258CONFIG_TCP_CONG_CUBIC=y
247CONFIG_DEFAULT_TCP_CONG="cubic" 259CONFIG_DEFAULT_TCP_CONG="cubic"
260# CONFIG_TCP_MD5SIG is not set
248 261
249# 262#
250# IP: Virtual Server Configuration 263# IP: Virtual Server Configuration
@@ -261,21 +274,37 @@ CONFIG_NETFILTER=y
261# Core Netfilter Configuration 274# Core Netfilter Configuration
262# 275#
263# CONFIG_NETFILTER_NETLINK is not set 276# CONFIG_NETFILTER_NETLINK is not set
277CONFIG_NF_CONNTRACK_ENABLED=m
278CONFIG_NF_CONNTRACK_SUPPORT=y
279# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
280CONFIG_NF_CONNTRACK=m
281# CONFIG_NF_CT_ACCT is not set
282CONFIG_NF_CONNTRACK_MARK=y
283CONFIG_NF_CONNTRACK_EVENTS=y
284# CONFIG_NF_CT_PROTO_SCTP is not set
285# CONFIG_NF_CONNTRACK_AMANDA is not set
286CONFIG_NF_CONNTRACK_FTP=m
287# CONFIG_NF_CONNTRACK_H323 is not set
288CONFIG_NF_CONNTRACK_IRC=m
289# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
290# CONFIG_NF_CONNTRACK_PPTP is not set
291# CONFIG_NF_CONNTRACK_SIP is not set
292CONFIG_NF_CONNTRACK_TFTP=m
264CONFIG_NETFILTER_XTABLES=m 293CONFIG_NETFILTER_XTABLES=m
265CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 294CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
266CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 295CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
267CONFIG_NETFILTER_XT_TARGET_DSCP=m 296CONFIG_NETFILTER_XT_TARGET_DSCP=m
268CONFIG_NETFILTER_XT_TARGET_MARK=m 297CONFIG_NETFILTER_XT_TARGET_MARK=m
269CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 298CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
270CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 299# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
300# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
271CONFIG_NETFILTER_XT_MATCH_COMMENT=m 301CONFIG_NETFILTER_XT_MATCH_COMMENT=m
272CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
273CONFIG_NETFILTER_XT_MATCH_CONNMARK=m 302CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
274CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 303CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
275# CONFIG_NETFILTER_XT_MATCH_DCCP is not set 304# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
276CONFIG_NETFILTER_XT_MATCH_DSCP=m 305CONFIG_NETFILTER_XT_MATCH_DSCP=m
277# CONFIG_NETFILTER_XT_MATCH_ESP is not set 306# CONFIG_NETFILTER_XT_MATCH_ESP is not set
278CONFIG_NETFILTER_XT_MATCH_HELPER=m 307# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
279CONFIG_NETFILTER_XT_MATCH_LENGTH=m 308CONFIG_NETFILTER_XT_MATCH_LENGTH=m
280CONFIG_NETFILTER_XT_MATCH_LIMIT=m 309CONFIG_NETFILTER_XT_MATCH_LIMIT=m
281CONFIG_NETFILTER_XT_MATCH_MAC=m 310CONFIG_NETFILTER_XT_MATCH_MAC=m
@@ -286,27 +315,17 @@ CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
286# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set 315# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
287CONFIG_NETFILTER_XT_MATCH_REALM=m 316CONFIG_NETFILTER_XT_MATCH_REALM=m
288CONFIG_NETFILTER_XT_MATCH_SCTP=m 317CONFIG_NETFILTER_XT_MATCH_SCTP=m
289CONFIG_NETFILTER_XT_MATCH_STATE=m 318# CONFIG_NETFILTER_XT_MATCH_STATE is not set
290# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set 319# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
291CONFIG_NETFILTER_XT_MATCH_STRING=m 320CONFIG_NETFILTER_XT_MATCH_STRING=m
292CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 321CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
322# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
293 323
294# 324#
295# IP: Netfilter Configuration 325# IP: Netfilter Configuration
296# 326#
297CONFIG_IP_NF_CONNTRACK=m 327CONFIG_NF_CONNTRACK_IPV4=m
298CONFIG_IP_NF_CT_ACCT=y 328CONFIG_NF_CONNTRACK_PROC_COMPAT=y
299CONFIG_IP_NF_CONNTRACK_MARK=y
300CONFIG_IP_NF_CONNTRACK_EVENTS=y
301CONFIG_IP_NF_CT_PROTO_SCTP=m
302CONFIG_IP_NF_FTP=m
303CONFIG_IP_NF_IRC=m
304# CONFIG_IP_NF_NETBIOS_NS is not set
305CONFIG_IP_NF_TFTP=m
306CONFIG_IP_NF_AMANDA=m
307# CONFIG_IP_NF_PPTP is not set
308# CONFIG_IP_NF_H323 is not set
309# CONFIG_IP_NF_SIP is not set
310CONFIG_IP_NF_QUEUE=m 329CONFIG_IP_NF_QUEUE=m
311CONFIG_IP_NF_IPTABLES=m 330CONFIG_IP_NF_IPTABLES=m
312CONFIG_IP_NF_MATCH_IPRANGE=m 331CONFIG_IP_NF_MATCH_IPRANGE=m
@@ -317,23 +336,25 @@ CONFIG_IP_NF_MATCH_ECN=m
317CONFIG_IP_NF_MATCH_TTL=m 336CONFIG_IP_NF_MATCH_TTL=m
318CONFIG_IP_NF_MATCH_OWNER=m 337CONFIG_IP_NF_MATCH_OWNER=m
319CONFIG_IP_NF_MATCH_ADDRTYPE=m 338CONFIG_IP_NF_MATCH_ADDRTYPE=m
320CONFIG_IP_NF_MATCH_HASHLIMIT=m
321CONFIG_IP_NF_FILTER=m 339CONFIG_IP_NF_FILTER=m
322CONFIG_IP_NF_TARGET_REJECT=m 340CONFIG_IP_NF_TARGET_REJECT=m
323CONFIG_IP_NF_TARGET_LOG=m 341CONFIG_IP_NF_TARGET_LOG=m
324CONFIG_IP_NF_TARGET_ULOG=m 342CONFIG_IP_NF_TARGET_ULOG=m
325CONFIG_IP_NF_TARGET_TCPMSS=m 343CONFIG_IP_NF_TARGET_TCPMSS=m
326CONFIG_IP_NF_NAT=m 344CONFIG_NF_NAT=m
327CONFIG_IP_NF_NAT_NEEDED=y 345CONFIG_NF_NAT_NEEDED=y
328CONFIG_IP_NF_TARGET_MASQUERADE=m 346CONFIG_IP_NF_TARGET_MASQUERADE=m
329CONFIG_IP_NF_TARGET_REDIRECT=m 347CONFIG_IP_NF_TARGET_REDIRECT=m
330CONFIG_IP_NF_TARGET_NETMAP=m 348CONFIG_IP_NF_TARGET_NETMAP=m
331CONFIG_IP_NF_TARGET_SAME=m 349CONFIG_IP_NF_TARGET_SAME=m
332CONFIG_IP_NF_NAT_SNMP_BASIC=m 350# CONFIG_NF_NAT_SNMP_BASIC is not set
333CONFIG_IP_NF_NAT_IRC=m 351CONFIG_NF_NAT_FTP=m
334CONFIG_IP_NF_NAT_FTP=m 352CONFIG_NF_NAT_IRC=m
335CONFIG_IP_NF_NAT_TFTP=m 353CONFIG_NF_NAT_TFTP=m
336CONFIG_IP_NF_NAT_AMANDA=m 354# CONFIG_NF_NAT_AMANDA is not set
355# CONFIG_NF_NAT_PPTP is not set
356# CONFIG_NF_NAT_H323 is not set
357# CONFIG_NF_NAT_SIP is not set
337CONFIG_IP_NF_MANGLE=m 358CONFIG_IP_NF_MANGLE=m
338CONFIG_IP_NF_TARGET_TOS=m 359CONFIG_IP_NF_TARGET_TOS=m
339CONFIG_IP_NF_TARGET_ECN=m 360CONFIG_IP_NF_TARGET_ECN=m
@@ -440,6 +461,12 @@ CONFIG_BLK_DEV_INITRD=y
440# CONFIG_ATA_OVER_ETH is not set 461# CONFIG_ATA_OVER_ETH is not set
441 462
442# 463#
464# Misc devices
465#
466# CONFIG_SGI_IOC4 is not set
467# CONFIG_TIFM_CORE is not set
468
469#
443# ATA/ATAPI/MFM/RLL support 470# ATA/ATAPI/MFM/RLL support
444# 471#
445# CONFIG_IDE is not set 472# CONFIG_IDE is not set
@@ -449,6 +476,7 @@ CONFIG_BLK_DEV_INITRD=y
449# 476#
450# CONFIG_RAID_ATTRS is not set 477# CONFIG_RAID_ATTRS is not set
451CONFIG_SCSI=y 478CONFIG_SCSI=y
479# CONFIG_SCSI_TGT is not set
452CONFIG_SCSI_NETLINK=y 480CONFIG_SCSI_NETLINK=y
453CONFIG_SCSI_PROC_FS=y 481CONFIG_SCSI_PROC_FS=y
454 482
@@ -469,6 +497,7 @@ CONFIG_CHR_DEV_SG=y
469CONFIG_SCSI_MULTI_LUN=y 497CONFIG_SCSI_MULTI_LUN=y
470CONFIG_SCSI_CONSTANTS=y 498CONFIG_SCSI_CONSTANTS=y
471# CONFIG_SCSI_LOGGING is not set 499# CONFIG_SCSI_LOGGING is not set
500# CONFIG_SCSI_SCAN_ASYNC is not set
472 501
473# 502#
474# SCSI Transports 503# SCSI Transports
@@ -515,6 +544,7 @@ CONFIG_SCSI_IBMVSCSI=m
515# CONFIG_SCSI_DC395x is not set 544# CONFIG_SCSI_DC395x is not set
516# CONFIG_SCSI_DC390T is not set 545# CONFIG_SCSI_DC390T is not set
517# CONFIG_SCSI_DEBUG is not set 546# CONFIG_SCSI_DEBUG is not set
547# CONFIG_SCSI_SRP is not set
518 548
519# 549#
520# Serial ATA (prod) and Parallel ATA (experimental) drivers 550# Serial ATA (prod) and Parallel ATA (experimental) drivers
@@ -562,6 +592,7 @@ CONFIG_DM_ZERO=m
562# 592#
563# Macintosh device drivers 593# Macintosh device drivers
564# 594#
595# CONFIG_MAC_EMUMOUSEBTN is not set
565# CONFIG_WINDFARM is not set 596# CONFIG_WINDFARM is not set
566 597
567# 598#
@@ -647,6 +678,7 @@ CONFIG_E1000=m
647# CONFIG_IXGB is not set 678# CONFIG_IXGB is not set
648# CONFIG_S2IO is not set 679# CONFIG_S2IO is not set
649# CONFIG_MYRI10GE is not set 680# CONFIG_MYRI10GE is not set
681# CONFIG_NETXEN_NIC is not set
650 682
651# 683#
652# Token Ring devices 684# Token Ring devices
@@ -765,10 +797,6 @@ CONFIG_GEN_RTC=y
765# CONFIG_DTLK is not set 797# CONFIG_DTLK is not set
766# CONFIG_R3964 is not set 798# CONFIG_R3964 is not set
767# CONFIG_APPLICOM is not set 799# CONFIG_APPLICOM is not set
768
769#
770# Ftape, the floppy tape device driver
771#
772# CONFIG_AGP is not set 800# CONFIG_AGP is not set
773# CONFIG_DRM is not set 801# CONFIG_DRM is not set
774CONFIG_RAW_DRIVER=y 802CONFIG_RAW_DRIVER=y
@@ -779,7 +807,6 @@ CONFIG_MAX_RAW_DEVS=256
779# TPM devices 807# TPM devices
780# 808#
781# CONFIG_TCG_TPM is not set 809# CONFIG_TCG_TPM is not set
782# CONFIG_TELCLOCK is not set
783 810
784# 811#
785# I2C support 812# I2C support
@@ -795,6 +822,7 @@ CONFIG_MAX_RAW_DEVS=256
795# 822#
796# Dallas's 1-wire bus 823# Dallas's 1-wire bus
797# 824#
825# CONFIG_W1 is not set
798 826
799# 827#
800# Hardware Monitoring support 828# Hardware Monitoring support
@@ -803,11 +831,6 @@ CONFIG_MAX_RAW_DEVS=256
803# CONFIG_HWMON_VID is not set 831# CONFIG_HWMON_VID is not set
804 832
805# 833#
806# Misc devices
807#
808# CONFIG_TIFM_CORE is not set
809
810#
811# Multimedia devices 834# Multimedia devices
812# 835#
813# CONFIG_VIDEO_DEV is not set 836# CONFIG_VIDEO_DEV is not set
@@ -822,6 +845,7 @@ CONFIG_MAX_RAW_DEVS=256
822# 845#
823CONFIG_FIRMWARE_EDID=y 846CONFIG_FIRMWARE_EDID=y
824# CONFIG_FB is not set 847# CONFIG_FB is not set
848# CONFIG_FB_IBM_GXT4500 is not set
825# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 849# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
826 850
827# 851#
@@ -830,6 +854,11 @@ CONFIG_FIRMWARE_EDID=y
830# CONFIG_SOUND is not set 854# CONFIG_SOUND is not set
831 855
832# 856#
857# HID Devices
858#
859# CONFIG_HID is not set
860
861#
833# USB support 862# USB support
834# 863#
835CONFIG_USB_ARCH_HAS_HCD=y 864CONFIG_USB_ARCH_HAS_HCD=y
@@ -892,6 +921,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
892# 921#
893 922
894# 923#
924# Virtualization
925#
926
927#
895# File systems 928# File systems
896# 929#
897CONFIG_EXT2_FS=y 930CONFIG_EXT2_FS=y
@@ -904,6 +937,7 @@ CONFIG_EXT3_FS=y
904CONFIG_EXT3_FS_XATTR=y 937CONFIG_EXT3_FS_XATTR=y
905CONFIG_EXT3_FS_POSIX_ACL=y 938CONFIG_EXT3_FS_POSIX_ACL=y
906CONFIG_EXT3_FS_SECURITY=y 939CONFIG_EXT3_FS_SECURITY=y
940# CONFIG_EXT4DEV_FS is not set
907CONFIG_JBD=y 941CONFIG_JBD=y
908# CONFIG_JBD_DEBUG is not set 942# CONFIG_JBD_DEBUG is not set
909CONFIG_FS_MBCACHE=y 943CONFIG_FS_MBCACHE=y
@@ -937,6 +971,7 @@ CONFIG_DNOTIFY=y
937CONFIG_AUTOFS_FS=m 971CONFIG_AUTOFS_FS=m
938# CONFIG_AUTOFS4_FS is not set 972# CONFIG_AUTOFS4_FS is not set
939# CONFIG_FUSE_FS is not set 973# CONFIG_FUSE_FS is not set
974CONFIG_GENERIC_ACL=y
940 975
941# 976#
942# CD-ROM/DVD Filesystems 977# CD-ROM/DVD Filesystems
@@ -1024,7 +1059,6 @@ CONFIG_CIFS_POSIX=y
1024# CONFIG_CODA_FS is not set 1059# CONFIG_CODA_FS is not set
1025# CONFIG_AFS_FS is not set 1060# CONFIG_AFS_FS is not set
1026# CONFIG_9P_FS is not set 1061# CONFIG_9P_FS is not set
1027CONFIG_GENERIC_ACL=y
1028 1062
1029# 1063#
1030# Partition Types 1064# Partition Types
@@ -1080,6 +1114,8 @@ CONFIG_NLS_ISO8859_1=y
1080# Distributed Lock Manager 1114# Distributed Lock Manager
1081# 1115#
1082CONFIG_DLM=m 1116CONFIG_DLM=m
1117CONFIG_DLM_TCP=y
1118# CONFIG_DLM_SCTP is not set
1083# CONFIG_DLM_DEBUG is not set 1119# CONFIG_DLM_DEBUG is not set
1084 1120
1085# 1121#
@@ -1094,6 +1130,7 @@ CONFIG_VIOPATH=y
1094# 1130#
1095# Library routines 1131# Library routines
1096# 1132#
1133CONFIG_BITREVERSE=y
1097CONFIG_CRC_CCITT=m 1134CONFIG_CRC_CCITT=m
1098# CONFIG_CRC16 is not set 1135# CONFIG_CRC16 is not set
1099CONFIG_CRC32=y 1136CONFIG_CRC32=y
@@ -1105,6 +1142,7 @@ CONFIG_TEXTSEARCH_KMP=m
1105CONFIG_TEXTSEARCH_BM=m 1142CONFIG_TEXTSEARCH_BM=m
1106CONFIG_TEXTSEARCH_FSM=m 1143CONFIG_TEXTSEARCH_FSM=m
1107CONFIG_PLIST=y 1144CONFIG_PLIST=y
1145CONFIG_IOMAP_COPY=y
1108 1146
1109# 1147#
1110# Instrumentation Support 1148# Instrumentation Support
@@ -1119,6 +1157,8 @@ CONFIG_PLIST=y
1119CONFIG_ENABLE_MUST_CHECK=y 1157CONFIG_ENABLE_MUST_CHECK=y
1120CONFIG_MAGIC_SYSRQ=y 1158CONFIG_MAGIC_SYSRQ=y
1121# CONFIG_UNUSED_SYMBOLS is not set 1159# CONFIG_UNUSED_SYMBOLS is not set
1160CONFIG_DEBUG_FS=y
1161# CONFIG_HEADERS_CHECK is not set
1122CONFIG_DEBUG_KERNEL=y 1162CONFIG_DEBUG_KERNEL=y
1123CONFIG_LOG_BUF_SHIFT=17 1163CONFIG_LOG_BUF_SHIFT=17
1124CONFIG_DETECT_SOFTLOCKUP=y 1164CONFIG_DETECT_SOFTLOCKUP=y
@@ -1132,8 +1172,8 @@ CONFIG_DETECT_SOFTLOCKUP=y
1132# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1172# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1133# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1173# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1134# CONFIG_DEBUG_KOBJECT is not set 1174# CONFIG_DEBUG_KOBJECT is not set
1175CONFIG_DEBUG_BUGVERBOSE=y
1135# CONFIG_DEBUG_INFO is not set 1176# CONFIG_DEBUG_INFO is not set
1136CONFIG_DEBUG_FS=y
1137# CONFIG_DEBUG_VM is not set 1177# CONFIG_DEBUG_VM is not set
1138# CONFIG_DEBUG_LIST is not set 1178# CONFIG_DEBUG_LIST is not set
1139# CONFIG_FORCED_INLINING is not set 1179# CONFIG_FORCED_INLINING is not set
@@ -1142,6 +1182,7 @@ CONFIG_DEBUG_STACKOVERFLOW=y
1142CONFIG_DEBUG_STACK_USAGE=y 1182CONFIG_DEBUG_STACK_USAGE=y
1143# CONFIG_DEBUGGER is not set 1183# CONFIG_DEBUGGER is not set
1144CONFIG_IRQSTACKS=y 1184CONFIG_IRQSTACKS=y
1185# CONFIG_BOOTX_TEXT is not set
1145# CONFIG_PPC_EARLY_DEBUG is not set 1186# CONFIG_PPC_EARLY_DEBUG is not set
1146 1187
1147# 1188#
@@ -1155,10 +1196,11 @@ CONFIG_IRQSTACKS=y
1155# 1196#
1156CONFIG_CRYPTO=y 1197CONFIG_CRYPTO=y
1157CONFIG_CRYPTO_ALGAPI=y 1198CONFIG_CRYPTO_ALGAPI=y
1158CONFIG_CRYPTO_BLKCIPHER=m 1199CONFIG_CRYPTO_BLKCIPHER=y
1159CONFIG_CRYPTO_HASH=y 1200CONFIG_CRYPTO_HASH=y
1160CONFIG_CRYPTO_MANAGER=m 1201CONFIG_CRYPTO_MANAGER=y
1161CONFIG_CRYPTO_HMAC=y 1202CONFIG_CRYPTO_HMAC=y
1203# CONFIG_CRYPTO_XCBC is not set
1162CONFIG_CRYPTO_NULL=m 1204CONFIG_CRYPTO_NULL=m
1163CONFIG_CRYPTO_MD4=m 1205CONFIG_CRYPTO_MD4=m
1164CONFIG_CRYPTO_MD5=y 1206CONFIG_CRYPTO_MD5=y
@@ -1167,8 +1209,10 @@ CONFIG_CRYPTO_SHA256=m
1167CONFIG_CRYPTO_SHA512=m 1209CONFIG_CRYPTO_SHA512=m
1168CONFIG_CRYPTO_WP512=m 1210CONFIG_CRYPTO_WP512=m
1169CONFIG_CRYPTO_TGR192=m 1211CONFIG_CRYPTO_TGR192=m
1212# CONFIG_CRYPTO_GF128MUL is not set
1170CONFIG_CRYPTO_ECB=m 1213CONFIG_CRYPTO_ECB=m
1171CONFIG_CRYPTO_CBC=m 1214CONFIG_CRYPTO_CBC=y
1215# CONFIG_CRYPTO_LRW is not set
1172CONFIG_CRYPTO_DES=y 1216CONFIG_CRYPTO_DES=y
1173CONFIG_CRYPTO_BLOWFISH=m 1217CONFIG_CRYPTO_BLOWFISH=m
1174CONFIG_CRYPTO_TWOFISH=m 1218CONFIG_CRYPTO_TWOFISH=m
diff --git a/arch/powerpc/configs/linkstation_defconfig b/arch/powerpc/configs/linkstation_defconfig
index 23fd210eb56a..405c1c908213 100644
--- a/arch/powerpc/configs/linkstation_defconfig
+++ b/arch/powerpc/configs/linkstation_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.19-rc4 3# Linux kernel version: 2.6.20-rc5
4# Wed Nov 15 20:36:30 2006 4# Mon Jan 22 22:17:58 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -22,13 +23,13 @@ CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
24CONFIG_AUDIT_ARCH=y 25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
25# CONFIG_DEFAULT_UIMAGE is not set 27# CONFIG_DEFAULT_UIMAGE is not set
26 28
27# 29#
28# Processor support 30# Processor support
29# 31#
30CONFIG_CLASSIC32=y 32CONFIG_CLASSIC32=y
31# CONFIG_PPC_52xx is not set
32# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
33# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
34# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -69,12 +70,13 @@ CONFIG_POSIX_MQUEUE=y
69# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
70CONFIG_IKCONFIG=y 71CONFIG_IKCONFIG=y
71CONFIG_IKCONFIG_PROC=y 72CONFIG_IKCONFIG_PROC=y
73CONFIG_SYSFS_DEPRECATED=y
72# CONFIG_RELAY is not set 74# CONFIG_RELAY is not set
73CONFIG_INITRAMFS_SOURCE="" 75CONFIG_INITRAMFS_SOURCE=""
74# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 76# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
75CONFIG_SYSCTL=y 77CONFIG_SYSCTL=y
76# CONFIG_EMBEDDED is not set 78# CONFIG_EMBEDDED is not set
77# CONFIG_SYSCTL_SYSCALL is not set 79CONFIG_SYSCTL_SYSCALL=y
78CONFIG_KALLSYMS=y 80CONFIG_KALLSYMS=y
79# CONFIG_KALLSYMS_ALL is not set 81# CONFIG_KALLSYMS_ALL is not set
80# CONFIG_KALLSYMS_EXTRA_PASS is not set 82# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -130,6 +132,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
130# CONFIG_PPC_MULTIPLATFORM is not set 132# CONFIG_PPC_MULTIPLATFORM is not set
131CONFIG_EMBEDDED6xx=y 133CONFIG_EMBEDDED6xx=y
132# CONFIG_APUS is not set 134# CONFIG_APUS is not set
135# CONFIG_PPC_MPC52xx is not set
133# CONFIG_PPC_CELL is not set 136# CONFIG_PPC_CELL is not set
134# CONFIG_PPC_CELL_NATIVE is not set 137# CONFIG_PPC_CELL_NATIVE is not set
135# CONFIG_PPC_RTAS is not set 138# CONFIG_PPC_RTAS is not set
@@ -166,7 +169,6 @@ CONFIG_LINKSTATION=y
166# CONFIG_TQM8260 is not set 169# CONFIG_TQM8260 is not set
167# CONFIG_ADS8272 is not set 170# CONFIG_ADS8272 is not set
168# CONFIG_PQ2FADS is not set 171# CONFIG_PQ2FADS is not set
169# CONFIG_LITE5200 is not set
170# CONFIG_EV64360 is not set 172# CONFIG_EV64360 is not set
171CONFIG_PPC_GEN550=y 173CONFIG_PPC_GEN550=y
172CONFIG_MPC10X_BRIDGE=y 174CONFIG_MPC10X_BRIDGE=y
@@ -181,6 +183,7 @@ CONFIG_MPIC=y
181# CONFIG_HIGHMEM is not set 183# CONFIG_HIGHMEM is not set
182CONFIG_HZ_100=y 184CONFIG_HZ_100=y
183# CONFIG_HZ_250 is not set 185# CONFIG_HZ_250 is not set
186# CONFIG_HZ_300 is not set
184# CONFIG_HZ_1000 is not set 187# CONFIG_HZ_1000 is not set
185CONFIG_HZ=100 188CONFIG_HZ=100
186CONFIG_PREEMPT_NONE=y 189CONFIG_PREEMPT_NONE=y
@@ -217,7 +220,6 @@ CONFIG_FSL_SOC=y
217CONFIG_PCI=y 220CONFIG_PCI=y
218CONFIG_PCI_DOMAINS=y 221CONFIG_PCI_DOMAINS=y
219# CONFIG_PCIEPORTBUS is not set 222# CONFIG_PCIEPORTBUS is not set
220# CONFIG_PCI_MULTITHREAD_PROBE is not set
221# CONFIG_PCI_DEBUG is not set 223# CONFIG_PCI_DEBUG is not set
222 224
223# 225#
@@ -286,6 +288,7 @@ CONFIG_INET_TCP_DIAG=y
286# CONFIG_TCP_CONG_ADVANCED is not set 288# CONFIG_TCP_CONG_ADVANCED is not set
287CONFIG_TCP_CONG_CUBIC=y 289CONFIG_TCP_CONG_CUBIC=y
288CONFIG_DEFAULT_TCP_CONG="cubic" 290CONFIG_DEFAULT_TCP_CONG="cubic"
291# CONFIG_TCP_MD5SIG is not set
289 292
290# 293#
291# IP: Virtual Server Configuration 294# IP: Virtual Server Configuration
@@ -302,18 +305,35 @@ CONFIG_NETFILTER=y
302# Core Netfilter Configuration 305# Core Netfilter Configuration
303# 306#
304# CONFIG_NETFILTER_NETLINK is not set 307# CONFIG_NETFILTER_NETLINK is not set
308CONFIG_NF_CONNTRACK_ENABLED=m
309CONFIG_NF_CONNTRACK_SUPPORT=y
310# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
311CONFIG_NF_CONNTRACK=m
312# CONFIG_NF_CT_ACCT is not set
313# CONFIG_NF_CONNTRACK_MARK is not set
314# CONFIG_NF_CONNTRACK_EVENTS is not set
315# CONFIG_NF_CT_PROTO_SCTP is not set
316# CONFIG_NF_CONNTRACK_AMANDA is not set
317CONFIG_NF_CONNTRACK_FTP=m
318# CONFIG_NF_CONNTRACK_H323 is not set
319CONFIG_NF_CONNTRACK_IRC=m
320# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
321# CONFIG_NF_CONNTRACK_PPTP is not set
322# CONFIG_NF_CONNTRACK_SIP is not set
323CONFIG_NF_CONNTRACK_TFTP=m
305CONFIG_NETFILTER_XTABLES=m 324CONFIG_NETFILTER_XTABLES=m
306CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 325CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
307# CONFIG_NETFILTER_XT_TARGET_DSCP is not set 326# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
308CONFIG_NETFILTER_XT_TARGET_MARK=m 327CONFIG_NETFILTER_XT_TARGET_MARK=m
309# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set 328# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
329CONFIG_NETFILTER_XT_TARGET_NFLOG=m
310# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set 330# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
311# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set 331# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
312CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 332CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
313# CONFIG_NETFILTER_XT_MATCH_DCCP is not set 333# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
314# CONFIG_NETFILTER_XT_MATCH_DSCP is not set 334# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
315CONFIG_NETFILTER_XT_MATCH_ESP=m 335CONFIG_NETFILTER_XT_MATCH_ESP=m
316# CONFIG_NETFILTER_XT_MATCH_HELPER is not set 336CONFIG_NETFILTER_XT_MATCH_HELPER=m
317CONFIG_NETFILTER_XT_MATCH_LENGTH=m 337CONFIG_NETFILTER_XT_MATCH_LENGTH=m
318CONFIG_NETFILTER_XT_MATCH_LIMIT=m 338CONFIG_NETFILTER_XT_MATCH_LIMIT=m
319CONFIG_NETFILTER_XT_MATCH_MAC=m 339CONFIG_NETFILTER_XT_MATCH_MAC=m
@@ -324,27 +344,17 @@ CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
324# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set 344# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
325# CONFIG_NETFILTER_XT_MATCH_REALM is not set 345# CONFIG_NETFILTER_XT_MATCH_REALM is not set
326# CONFIG_NETFILTER_XT_MATCH_SCTP is not set 346# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
327CONFIG_NETFILTER_XT_MATCH_STATE=m 347# CONFIG_NETFILTER_XT_MATCH_STATE is not set
328# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set 348# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
329# CONFIG_NETFILTER_XT_MATCH_STRING is not set 349# CONFIG_NETFILTER_XT_MATCH_STRING is not set
330# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set 350# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
351# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
331 352
332# 353#
333# IP: Netfilter Configuration 354# IP: Netfilter Configuration
334# 355#
335CONFIG_IP_NF_CONNTRACK=m 356CONFIG_NF_CONNTRACK_IPV4=m
336# CONFIG_IP_NF_CT_ACCT is not set 357CONFIG_NF_CONNTRACK_PROC_COMPAT=y
337# CONFIG_IP_NF_CONNTRACK_MARK is not set
338# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
339# CONFIG_IP_NF_CT_PROTO_SCTP is not set
340CONFIG_IP_NF_FTP=m
341CONFIG_IP_NF_IRC=m
342# CONFIG_IP_NF_NETBIOS_NS is not set
343CONFIG_IP_NF_TFTP=m
344# CONFIG_IP_NF_AMANDA is not set
345# CONFIG_IP_NF_PPTP is not set
346# CONFIG_IP_NF_H323 is not set
347# CONFIG_IP_NF_SIP is not set
348# CONFIG_IP_NF_QUEUE is not set 358# CONFIG_IP_NF_QUEUE is not set
349CONFIG_IP_NF_IPTABLES=m 359CONFIG_IP_NF_IPTABLES=m
350CONFIG_IP_NF_MATCH_IPRANGE=m 360CONFIG_IP_NF_MATCH_IPRANGE=m
@@ -355,22 +365,25 @@ CONFIG_IP_NF_MATCH_IPRANGE=m
355# CONFIG_IP_NF_MATCH_TTL is not set 365# CONFIG_IP_NF_MATCH_TTL is not set
356# CONFIG_IP_NF_MATCH_OWNER is not set 366# CONFIG_IP_NF_MATCH_OWNER is not set
357# CONFIG_IP_NF_MATCH_ADDRTYPE is not set 367# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
358# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
359CONFIG_IP_NF_FILTER=m 368CONFIG_IP_NF_FILTER=m
360CONFIG_IP_NF_TARGET_REJECT=m 369CONFIG_IP_NF_TARGET_REJECT=m
361# CONFIG_IP_NF_TARGET_LOG is not set 370# CONFIG_IP_NF_TARGET_LOG is not set
362# CONFIG_IP_NF_TARGET_ULOG is not set 371# CONFIG_IP_NF_TARGET_ULOG is not set
363# CONFIG_IP_NF_TARGET_TCPMSS is not set 372# CONFIG_IP_NF_TARGET_TCPMSS is not set
364CONFIG_IP_NF_NAT=m 373CONFIG_NF_NAT=m
365CONFIG_IP_NF_NAT_NEEDED=y 374CONFIG_NF_NAT_NEEDED=y
366CONFIG_IP_NF_TARGET_MASQUERADE=m 375CONFIG_IP_NF_TARGET_MASQUERADE=m
367CONFIG_IP_NF_TARGET_REDIRECT=m 376CONFIG_IP_NF_TARGET_REDIRECT=m
368CONFIG_IP_NF_TARGET_NETMAP=m 377CONFIG_IP_NF_TARGET_NETMAP=m
369CONFIG_IP_NF_TARGET_SAME=m 378CONFIG_IP_NF_TARGET_SAME=m
370# CONFIG_IP_NF_NAT_SNMP_BASIC is not set 379# CONFIG_NF_NAT_SNMP_BASIC is not set
371CONFIG_IP_NF_NAT_IRC=m 380CONFIG_NF_NAT_FTP=m
372CONFIG_IP_NF_NAT_FTP=m 381CONFIG_NF_NAT_IRC=m
373CONFIG_IP_NF_NAT_TFTP=m 382CONFIG_NF_NAT_TFTP=m
383# CONFIG_NF_NAT_AMANDA is not set
384# CONFIG_NF_NAT_PPTP is not set
385# CONFIG_NF_NAT_H323 is not set
386# CONFIG_NF_NAT_SIP is not set
374CONFIG_IP_NF_MANGLE=m 387CONFIG_IP_NF_MANGLE=m
375CONFIG_IP_NF_TARGET_TOS=m 388CONFIG_IP_NF_TARGET_TOS=m
376CONFIG_IP_NF_TARGET_ECN=m 389CONFIG_IP_NF_TARGET_ECN=m
@@ -580,6 +593,7 @@ CONFIG_BLK_DEV_INITRD=y
580# 593#
581# CONFIG_RAID_ATTRS is not set 594# CONFIG_RAID_ATTRS is not set
582CONFIG_SCSI=y 595CONFIG_SCSI=y
596# CONFIG_SCSI_TGT is not set
583# CONFIG_SCSI_NETLINK is not set 597# CONFIG_SCSI_NETLINK is not set
584CONFIG_SCSI_PROC_FS=y 598CONFIG_SCSI_PROC_FS=y
585 599
@@ -599,6 +613,7 @@ CONFIG_CHR_DEV_SG=y
599CONFIG_SCSI_MULTI_LUN=y 613CONFIG_SCSI_MULTI_LUN=y
600# CONFIG_SCSI_CONSTANTS is not set 614# CONFIG_SCSI_CONSTANTS is not set
601# CONFIG_SCSI_LOGGING is not set 615# CONFIG_SCSI_LOGGING is not set
616# CONFIG_SCSI_SCAN_ASYNC is not set
602 617
603# 618#
604# SCSI Transports 619# SCSI Transports
@@ -646,6 +661,7 @@ CONFIG_SCSI_MULTI_LUN=y
646# CONFIG_SCSI_DC390T is not set 661# CONFIG_SCSI_DC390T is not set
647# CONFIG_SCSI_NSP32 is not set 662# CONFIG_SCSI_NSP32 is not set
648# CONFIG_SCSI_DEBUG is not set 663# CONFIG_SCSI_DEBUG is not set
664# CONFIG_SCSI_SRP is not set
649 665
650# 666#
651# Serial ATA (prod) and Parallel ATA (experimental) drivers 667# Serial ATA (prod) and Parallel ATA (experimental) drivers
@@ -683,6 +699,7 @@ CONFIG_ATA=y
683# CONFIG_PATA_IT821X is not set 699# CONFIG_PATA_IT821X is not set
684# CONFIG_PATA_JMICRON is not set 700# CONFIG_PATA_JMICRON is not set
685# CONFIG_PATA_TRIFLEX is not set 701# CONFIG_PATA_TRIFLEX is not set
702# CONFIG_PATA_MARVELL is not set
686# CONFIG_PATA_MPIIX is not set 703# CONFIG_PATA_MPIIX is not set
687# CONFIG_PATA_OLDPIIX is not set 704# CONFIG_PATA_OLDPIIX is not set
688# CONFIG_PATA_NETCELL is not set 705# CONFIG_PATA_NETCELL is not set
@@ -726,6 +743,7 @@ CONFIG_PATA_SIL680=y
726# 743#
727# Macintosh device drivers 744# Macintosh device drivers
728# 745#
746# CONFIG_MAC_EMUMOUSEBTN is not set
729# CONFIG_WINDFARM is not set 747# CONFIG_WINDFARM is not set
730 748
731# 749#
@@ -777,6 +795,7 @@ CONFIG_R8169=y
777# CONFIG_IXGB is not set 795# CONFIG_IXGB is not set
778# CONFIG_S2IO is not set 796# CONFIG_S2IO is not set
779# CONFIG_MYRI10GE is not set 797# CONFIG_MYRI10GE is not set
798# CONFIG_NETXEN_NIC is not set
780 799
781# 800#
782# Token Ring devices 801# Token Ring devices
@@ -899,6 +918,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
899# 918#
900# Non-8250 serial port support 919# Non-8250 serial port support
901# 920#
921# CONFIG_SERIAL_UARTLITE is not set
902CONFIG_SERIAL_CORE=y 922CONFIG_SERIAL_CORE=y
903CONFIG_SERIAL_CORE_CONSOLE=y 923CONFIG_SERIAL_CORE_CONSOLE=y
904# CONFIG_SERIAL_JSM is not set 924# CONFIG_SERIAL_JSM is not set
@@ -921,10 +941,6 @@ CONFIG_HW_RANDOM=y
921# CONFIG_DTLK is not set 941# CONFIG_DTLK is not set
922# CONFIG_R3964 is not set 942# CONFIG_R3964 is not set
923# CONFIG_APPLICOM is not set 943# CONFIG_APPLICOM is not set
924
925#
926# Ftape, the floppy tape device driver
927#
928# CONFIG_AGP is not set 944# CONFIG_AGP is not set
929# CONFIG_DRM is not set 945# CONFIG_DRM is not set
930# CONFIG_RAW_DRIVER is not set 946# CONFIG_RAW_DRIVER is not set
@@ -1032,6 +1048,7 @@ CONFIG_HWMON=y
1032# CONFIG_SENSORS_LM92 is not set 1048# CONFIG_SENSORS_LM92 is not set
1033# CONFIG_SENSORS_MAX1619 is not set 1049# CONFIG_SENSORS_MAX1619 is not set
1034# CONFIG_SENSORS_PC87360 is not set 1050# CONFIG_SENSORS_PC87360 is not set
1051# CONFIG_SENSORS_PC87427 is not set
1035# CONFIG_SENSORS_SIS5595 is not set 1052# CONFIG_SENSORS_SIS5595 is not set
1036# CONFIG_SENSORS_SMSC47M1 is not set 1053# CONFIG_SENSORS_SMSC47M1 is not set
1037# CONFIG_SENSORS_SMSC47M192 is not set 1054# CONFIG_SENSORS_SMSC47M192 is not set
@@ -1042,6 +1059,7 @@ CONFIG_HWMON=y
1042# CONFIG_SENSORS_W83781D is not set 1059# CONFIG_SENSORS_W83781D is not set
1043# CONFIG_SENSORS_W83791D is not set 1060# CONFIG_SENSORS_W83791D is not set
1044# CONFIG_SENSORS_W83792D is not set 1061# CONFIG_SENSORS_W83792D is not set
1062# CONFIG_SENSORS_W83793 is not set
1045# CONFIG_SENSORS_W83L785TS is not set 1063# CONFIG_SENSORS_W83L785TS is not set
1046# CONFIG_SENSORS_W83627HF is not set 1064# CONFIG_SENSORS_W83627HF is not set
1047# CONFIG_SENSORS_W83627EHF is not set 1065# CONFIG_SENSORS_W83627EHF is not set
@@ -1063,6 +1081,7 @@ CONFIG_HWMON=y
1063# 1081#
1064CONFIG_FIRMWARE_EDID=y 1082CONFIG_FIRMWARE_EDID=y
1065# CONFIG_FB is not set 1083# CONFIG_FB is not set
1084# CONFIG_FB_IBM_GXT4500 is not set
1066 1085
1067# 1086#
1068# Console display driver support 1087# Console display driver support
@@ -1077,6 +1096,11 @@ CONFIG_DUMMY_CONSOLE=y
1077# CONFIG_SOUND is not set 1096# CONFIG_SOUND is not set
1078 1097
1079# 1098#
1099# HID Devices
1100#
1101CONFIG_HID=y
1102
1103#
1080# USB support 1104# USB support
1081# 1105#
1082CONFIG_USB_ARCH_HAS_HCD=y 1106CONFIG_USB_ARCH_HAS_HCD=y
@@ -1091,6 +1115,7 @@ CONFIG_USB=y
1091CONFIG_USB_DEVICEFS=y 1115CONFIG_USB_DEVICEFS=y
1092# CONFIG_USB_BANDWIDTH is not set 1116# CONFIG_USB_BANDWIDTH is not set
1093# CONFIG_USB_DYNAMIC_MINORS is not set 1117# CONFIG_USB_DYNAMIC_MINORS is not set
1118# CONFIG_USB_MULTITHREAD_PROBE is not set
1094# CONFIG_USB_OTG is not set 1119# CONFIG_USB_OTG is not set
1095 1120
1096# 1121#
@@ -1170,6 +1195,7 @@ CONFIG_USB_STORAGE=m
1170# CONFIG_USB_KAWETH is not set 1195# CONFIG_USB_KAWETH is not set
1171# CONFIG_USB_PEGASUS is not set 1196# CONFIG_USB_PEGASUS is not set
1172# CONFIG_USB_RTL8150 is not set 1197# CONFIG_USB_RTL8150 is not set
1198# CONFIG_USB_USBNET_MII is not set
1173# CONFIG_USB_USBNET is not set 1199# CONFIG_USB_USBNET is not set
1174CONFIG_USB_MON=y 1200CONFIG_USB_MON=y
1175 1201
@@ -1218,6 +1244,7 @@ CONFIG_USB_SERIAL_FTDI_SIO=y
1218# CONFIG_USB_SERIAL_XIRCOM is not set 1244# CONFIG_USB_SERIAL_XIRCOM is not set
1219# CONFIG_USB_SERIAL_OPTION is not set 1245# CONFIG_USB_SERIAL_OPTION is not set
1220# CONFIG_USB_SERIAL_OMNINET is not set 1246# CONFIG_USB_SERIAL_OMNINET is not set
1247# CONFIG_USB_SERIAL_DEBUG is not set
1221 1248
1222# 1249#
1223# USB Miscellaneous drivers 1250# USB Miscellaneous drivers
@@ -1324,6 +1351,10 @@ CONFIG_RTC_DRV_RS5C372=y
1324# 1351#
1325 1352
1326# 1353#
1354# Virtualization
1355#
1356
1357#
1327# File systems 1358# File systems
1328# 1359#
1329CONFIG_EXT2_FS=y 1360CONFIG_EXT2_FS=y
@@ -1398,7 +1429,6 @@ CONFIG_RAMFS=y
1398# CONFIG_BEFS_FS is not set 1429# CONFIG_BEFS_FS is not set
1399# CONFIG_BFS_FS is not set 1430# CONFIG_BFS_FS is not set
1400# CONFIG_EFS_FS is not set 1431# CONFIG_EFS_FS is not set
1401# CONFIG_JFFS_FS is not set
1402# CONFIG_JFFS2_FS is not set 1432# CONFIG_JFFS2_FS is not set
1403# CONFIG_CRAMFS is not set 1433# CONFIG_CRAMFS is not set
1404# CONFIG_VXFS_FS is not set 1434# CONFIG_VXFS_FS is not set
@@ -1488,8 +1518,14 @@ CONFIG_NLS_ISO8859_1=m
1488CONFIG_NLS_UTF8=m 1518CONFIG_NLS_UTF8=m
1489 1519
1490# 1520#
1521# Distributed Lock Manager
1522#
1523# CONFIG_DLM is not set
1524
1525#
1491# Library routines 1526# Library routines
1492# 1527#
1528CONFIG_BITREVERSE=y
1493# CONFIG_CRC_CCITT is not set 1529# CONFIG_CRC_CCITT is not set
1494# CONFIG_CRC16 is not set 1530# CONFIG_CRC16 is not set
1495CONFIG_CRC32=y 1531CONFIG_CRC32=y
@@ -1497,6 +1533,7 @@ CONFIG_LIBCRC32C=m
1497CONFIG_ZLIB_INFLATE=m 1533CONFIG_ZLIB_INFLATE=m
1498CONFIG_ZLIB_DEFLATE=m 1534CONFIG_ZLIB_DEFLATE=m
1499CONFIG_PLIST=y 1535CONFIG_PLIST=y
1536CONFIG_IOMAP_COPY=y
1500 1537
1501# 1538#
1502# Instrumentation Support 1539# Instrumentation Support
@@ -1511,6 +1548,8 @@ CONFIG_OPROFILE=m
1511CONFIG_ENABLE_MUST_CHECK=y 1548CONFIG_ENABLE_MUST_CHECK=y
1512CONFIG_MAGIC_SYSRQ=y 1549CONFIG_MAGIC_SYSRQ=y
1513# CONFIG_UNUSED_SYMBOLS is not set 1550# CONFIG_UNUSED_SYMBOLS is not set
1551# CONFIG_DEBUG_FS is not set
1552# CONFIG_HEADERS_CHECK is not set
1514CONFIG_DEBUG_KERNEL=y 1553CONFIG_DEBUG_KERNEL=y
1515CONFIG_LOG_BUF_SHIFT=14 1554CONFIG_LOG_BUF_SHIFT=14
1516CONFIG_DETECT_SOFTLOCKUP=y 1555CONFIG_DETECT_SOFTLOCKUP=y
@@ -1524,12 +1563,11 @@ CONFIG_DETECT_SOFTLOCKUP=y
1524# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1563# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1525# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1564# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1526# CONFIG_DEBUG_KOBJECT is not set 1565# CONFIG_DEBUG_KOBJECT is not set
1566CONFIG_DEBUG_BUGVERBOSE=y
1527# CONFIG_DEBUG_INFO is not set 1567# CONFIG_DEBUG_INFO is not set
1528# CONFIG_DEBUG_FS is not set
1529# CONFIG_DEBUG_VM is not set 1568# CONFIG_DEBUG_VM is not set
1530# CONFIG_DEBUG_LIST is not set 1569# CONFIG_DEBUG_LIST is not set
1531CONFIG_FORCED_INLINING=y 1570CONFIG_FORCED_INLINING=y
1532# CONFIG_HEADERS_CHECK is not set
1533# CONFIG_RCU_TORTURE_TEST is not set 1571# CONFIG_RCU_TORTURE_TEST is not set
1534# CONFIG_DEBUGGER is not set 1572# CONFIG_DEBUGGER is not set
1535# CONFIG_BDI_SWITCH is not set 1573# CONFIG_BDI_SWITCH is not set
@@ -1551,6 +1589,7 @@ CONFIG_CRYPTO_ALGAPI=y
1551CONFIG_CRYPTO_BLKCIPHER=y 1589CONFIG_CRYPTO_BLKCIPHER=y
1552CONFIG_CRYPTO_MANAGER=y 1590CONFIG_CRYPTO_MANAGER=y
1553# CONFIG_CRYPTO_HMAC is not set 1591# CONFIG_CRYPTO_HMAC is not set
1592# CONFIG_CRYPTO_XCBC is not set
1554# CONFIG_CRYPTO_NULL is not set 1593# CONFIG_CRYPTO_NULL is not set
1555CONFIG_CRYPTO_MD4=m 1594CONFIG_CRYPTO_MD4=m
1556CONFIG_CRYPTO_MD5=y 1595CONFIG_CRYPTO_MD5=y
@@ -1559,8 +1598,10 @@ CONFIG_CRYPTO_SHA1=m
1559# CONFIG_CRYPTO_SHA512 is not set 1598# CONFIG_CRYPTO_SHA512 is not set
1560# CONFIG_CRYPTO_WP512 is not set 1599# CONFIG_CRYPTO_WP512 is not set
1561# CONFIG_CRYPTO_TGR192 is not set 1600# CONFIG_CRYPTO_TGR192 is not set
1601# CONFIG_CRYPTO_GF128MUL is not set
1562CONFIG_CRYPTO_ECB=m 1602CONFIG_CRYPTO_ECB=m
1563CONFIG_CRYPTO_CBC=y 1603CONFIG_CRYPTO_CBC=y
1604# CONFIG_CRYPTO_LRW is not set
1564CONFIG_CRYPTO_DES=y 1605CONFIG_CRYPTO_DES=y
1565CONFIG_CRYPTO_BLOWFISH=m 1606CONFIG_CRYPTO_BLOWFISH=m
1566CONFIG_CRYPTO_TWOFISH=m 1607CONFIG_CRYPTO_TWOFISH=m
diff --git a/arch/powerpc/configs/lite5200_defconfig b/arch/powerpc/configs/lite5200_defconfig
index ee7655776d45..8cbd87ded6b4 100644
--- a/arch/powerpc/configs/lite5200_defconfig
+++ b/arch/powerpc/configs/lite5200_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.19-rc6 3# Linux kernel version: 2.6.20-rc5
4# Mon Nov 27 11:08:20 2006 4# Mon Jan 22 22:18:18 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -22,13 +23,13 @@ CONFIG_PPC_OF=y
22# CONFIG_PPC_UDBG_16550 is not set 23# CONFIG_PPC_UDBG_16550 is not set
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
24CONFIG_AUDIT_ARCH=y 25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
25# CONFIG_DEFAULT_UIMAGE is not set 27# CONFIG_DEFAULT_UIMAGE is not set
26 28
27# 29#
28# Processor support 30# Processor support
29# 31#
30CONFIG_CLASSIC32=y 32CONFIG_CLASSIC32=y
31# CONFIG_PPC_52xx is not set
32# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
33# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
34# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -68,6 +69,7 @@ CONFIG_SYSVIPC=y
68# CONFIG_UTS_NS is not set 69# CONFIG_UTS_NS is not set
69# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
70# CONFIG_IKCONFIG is not set 71# CONFIG_IKCONFIG is not set
72CONFIG_SYSFS_DEPRECATED=y
71# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
72CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
73# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -151,6 +153,7 @@ CONFIG_PPC_LITE5200=y
151# CONFIG_HIGHMEM is not set 153# CONFIG_HIGHMEM is not set
152# CONFIG_HZ_100 is not set 154# CONFIG_HZ_100 is not set
153CONFIG_HZ_250=y 155CONFIG_HZ_250=y
156# CONFIG_HZ_300 is not set
154# CONFIG_HZ_1000 is not set 157# CONFIG_HZ_1000 is not set
155CONFIG_HZ=250 158CONFIG_HZ=250
156CONFIG_PREEMPT_NONE=y 159CONFIG_PREEMPT_NONE=y
@@ -259,6 +262,7 @@ CONFIG_INET_TCP_DIAG=y
259# CONFIG_TCP_CONG_ADVANCED is not set 262# CONFIG_TCP_CONG_ADVANCED is not set
260CONFIG_TCP_CONG_CUBIC=y 263CONFIG_TCP_CONG_CUBIC=y
261CONFIG_DEFAULT_TCP_CONG="cubic" 264CONFIG_DEFAULT_TCP_CONG="cubic"
265# CONFIG_TCP_MD5SIG is not set
262# CONFIG_IPV6 is not set 266# CONFIG_IPV6 is not set
263# CONFIG_INET6_XFRM_TUNNEL is not set 267# CONFIG_INET6_XFRM_TUNNEL is not set
264# CONFIG_INET6_TUNNEL is not set 268# CONFIG_INET6_TUNNEL is not set
@@ -374,6 +378,7 @@ CONFIG_BLK_DEV_INITRD=y
374# 378#
375# CONFIG_RAID_ATTRS is not set 379# CONFIG_RAID_ATTRS is not set
376CONFIG_SCSI=y 380CONFIG_SCSI=y
381# CONFIG_SCSI_TGT is not set
377# CONFIG_SCSI_NETLINK is not set 382# CONFIG_SCSI_NETLINK is not set
378# CONFIG_SCSI_PROC_FS is not set 383# CONFIG_SCSI_PROC_FS is not set
379 384
@@ -393,6 +398,7 @@ CONFIG_SCSI=y
393# CONFIG_SCSI_MULTI_LUN is not set 398# CONFIG_SCSI_MULTI_LUN is not set
394# CONFIG_SCSI_CONSTANTS is not set 399# CONFIG_SCSI_CONSTANTS is not set
395# CONFIG_SCSI_LOGGING is not set 400# CONFIG_SCSI_LOGGING is not set
401# CONFIG_SCSI_SCAN_ASYNC is not set
396 402
397# 403#
398# SCSI Transports 404# SCSI Transports
@@ -440,6 +446,7 @@ CONFIG_SCSI=y
440# CONFIG_SCSI_DC390T is not set 446# CONFIG_SCSI_DC390T is not set
441# CONFIG_SCSI_NSP32 is not set 447# CONFIG_SCSI_NSP32 is not set
442# CONFIG_SCSI_DEBUG is not set 448# CONFIG_SCSI_DEBUG is not set
449# CONFIG_SCSI_SRP is not set
443 450
444# 451#
445# Serial ATA (prod) and Parallel ATA (experimental) drivers 452# Serial ATA (prod) and Parallel ATA (experimental) drivers
@@ -477,7 +484,7 @@ CONFIG_ATA=y
477# CONFIG_PATA_IT821X is not set 484# CONFIG_PATA_IT821X is not set
478# CONFIG_PATA_JMICRON is not set 485# CONFIG_PATA_JMICRON is not set
479# CONFIG_PATA_TRIFLEX is not set 486# CONFIG_PATA_TRIFLEX is not set
480CONFIG_PATA_MPC52xx=y 487# CONFIG_PATA_MARVELL is not set
481# CONFIG_PATA_MPIIX is not set 488# CONFIG_PATA_MPIIX is not set
482# CONFIG_PATA_OLDPIIX is not set 489# CONFIG_PATA_OLDPIIX is not set
483# CONFIG_PATA_NETCELL is not set 490# CONFIG_PATA_NETCELL is not set
@@ -494,6 +501,7 @@ CONFIG_PATA_MPC52xx=y
494# CONFIG_PATA_SIS is not set 501# CONFIG_PATA_SIS is not set
495# CONFIG_PATA_VIA is not set 502# CONFIG_PATA_VIA is not set
496# CONFIG_PATA_WINBOND is not set 503# CONFIG_PATA_WINBOND is not set
504# CONFIG_PATA_PLATFORM is not set
497 505
498# 506#
499# Multi-device support (RAID and LVM) 507# Multi-device support (RAID and LVM)
@@ -521,6 +529,7 @@ CONFIG_PATA_MPC52xx=y
521# 529#
522# Macintosh device drivers 530# Macintosh device drivers
523# 531#
532# CONFIG_MAC_EMUMOUSEBTN is not set
524# CONFIG_WINDFARM is not set 533# CONFIG_WINDFARM is not set
525 534
526# 535#
@@ -572,6 +581,7 @@ CONFIG_NETDEVICES=y
572# CONFIG_IXGB is not set 581# CONFIG_IXGB is not set
573# CONFIG_S2IO is not set 582# CONFIG_S2IO is not set
574# CONFIG_MYRI10GE is not set 583# CONFIG_MYRI10GE is not set
584# CONFIG_NETXEN_NIC is not set
575 585
576# 586#
577# Token Ring devices 587# Token Ring devices
@@ -632,6 +642,7 @@ CONFIG_NETDEVICES=y
632# 642#
633# Non-8250 serial port support 643# Non-8250 serial port support
634# 644#
645# CONFIG_SERIAL_UARTLITE is not set
635CONFIG_SERIAL_CORE=y 646CONFIG_SERIAL_CORE=y
636CONFIG_SERIAL_CORE_CONSOLE=y 647CONFIG_SERIAL_CORE_CONSOLE=y
637CONFIG_SERIAL_MPC52xx=y 648CONFIG_SERIAL_MPC52xx=y
@@ -657,10 +668,6 @@ CONFIG_LEGACY_PTY_COUNT=256
657# CONFIG_DTLK is not set 668# CONFIG_DTLK is not set
658# CONFIG_R3964 is not set 669# CONFIG_R3964 is not set
659# CONFIG_APPLICOM is not set 670# CONFIG_APPLICOM is not set
660
661#
662# Ftape, the floppy tape device driver
663#
664# CONFIG_AGP is not set 671# CONFIG_AGP is not set
665# CONFIG_DRM is not set 672# CONFIG_DRM is not set
666# CONFIG_RAW_DRIVER is not set 673# CONFIG_RAW_DRIVER is not set
@@ -707,6 +714,7 @@ CONFIG_LEGACY_PTY_COUNT=256
707# 714#
708# CONFIG_FIRMWARE_EDID is not set 715# CONFIG_FIRMWARE_EDID is not set
709# CONFIG_FB is not set 716# CONFIG_FB is not set
717# CONFIG_FB_IBM_GXT4500 is not set
710# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 718# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
711 719
712# 720#
@@ -777,6 +785,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
777# 785#
778 786
779# 787#
788# Virtualization
789#
790
791#
780# File systems 792# File systems
781# 793#
782CONFIG_EXT2_FS=y 794CONFIG_EXT2_FS=y
@@ -873,6 +885,11 @@ CONFIG_MSDOS_PARTITION=y
873# CONFIG_NLS is not set 885# CONFIG_NLS is not set
874 886
875# 887#
888# Distributed Lock Manager
889#
890# CONFIG_DLM is not set
891
892#
876# Library routines 893# Library routines
877# 894#
878# CONFIG_CRC_CCITT is not set 895# CONFIG_CRC_CCITT is not set
@@ -880,6 +897,7 @@ CONFIG_MSDOS_PARTITION=y
880# CONFIG_CRC32 is not set 897# CONFIG_CRC32 is not set
881# CONFIG_LIBCRC32C is not set 898# CONFIG_LIBCRC32C is not set
882CONFIG_PLIST=y 899CONFIG_PLIST=y
900CONFIG_IOMAP_COPY=y
883 901
884# 902#
885# Instrumentation Support 903# Instrumentation Support
@@ -893,6 +911,8 @@ CONFIG_PRINTK_TIME=y
893CONFIG_ENABLE_MUST_CHECK=y 911CONFIG_ENABLE_MUST_CHECK=y
894# CONFIG_MAGIC_SYSRQ is not set 912# CONFIG_MAGIC_SYSRQ is not set
895# CONFIG_UNUSED_SYMBOLS is not set 913# CONFIG_UNUSED_SYMBOLS is not set
914# CONFIG_DEBUG_FS is not set
915# CONFIG_HEADERS_CHECK is not set
896CONFIG_DEBUG_KERNEL=y 916CONFIG_DEBUG_KERNEL=y
897CONFIG_LOG_BUF_SHIFT=14 917CONFIG_LOG_BUF_SHIFT=14
898CONFIG_DETECT_SOFTLOCKUP=y 918CONFIG_DETECT_SOFTLOCKUP=y
@@ -906,12 +926,11 @@ CONFIG_DETECT_SOFTLOCKUP=y
906# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 926# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
907# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 927# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
908# CONFIG_DEBUG_KOBJECT is not set 928# CONFIG_DEBUG_KOBJECT is not set
929# CONFIG_DEBUG_BUGVERBOSE is not set
909CONFIG_DEBUG_INFO=y 930CONFIG_DEBUG_INFO=y
910# CONFIG_DEBUG_FS is not set
911# CONFIG_DEBUG_VM is not set 931# CONFIG_DEBUG_VM is not set
912# CONFIG_DEBUG_LIST is not set 932# CONFIG_DEBUG_LIST is not set
913CONFIG_FORCED_INLINING=y 933CONFIG_FORCED_INLINING=y
914# CONFIG_HEADERS_CHECK is not set
915# CONFIG_RCU_TORTURE_TEST is not set 934# CONFIG_RCU_TORTURE_TEST is not set
916# CONFIG_DEBUGGER is not set 935# CONFIG_DEBUGGER is not set
917# CONFIG_BDI_SWITCH is not set 936# CONFIG_BDI_SWITCH is not set
diff --git a/arch/powerpc/configs/maple_defconfig b/arch/powerpc/configs/maple_defconfig
index ae96a5b2f00d..de97f2f0ae96 100644
--- a/arch/powerpc/configs/maple_defconfig
+++ b/arch/powerpc/configs/maple_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18 3# Linux kernel version: 2.6.20-rc5
4# Mon Oct 9 11:59:34 2006 4# Mon Jan 22 22:19:02 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -10,6 +10,8 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
14CONFIG_ARCH_HAS_ILOG2_U64=y
13CONFIG_GENERIC_HWEIGHT=y 15CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 16CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 17CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -23,6 +25,7 @@ CONFIG_PPC_OF=y
23CONFIG_PPC_UDBG_16550=y 25CONFIG_PPC_UDBG_16550=y
24CONFIG_GENERIC_TBSYNC=y 26CONFIG_GENERIC_TBSYNC=y
25CONFIG_AUDIT_ARCH=y 27CONFIG_AUDIT_ARCH=y
28CONFIG_GENERIC_BUG=y
26# CONFIG_DEFAULT_UIMAGE is not set 29# CONFIG_DEFAULT_UIMAGE is not set
27 30
28# 31#
@@ -31,6 +34,9 @@ CONFIG_AUDIT_ARCH=y
31CONFIG_POWER4_ONLY=y 34CONFIG_POWER4_ONLY=y
32CONFIG_POWER4=y 35CONFIG_POWER4=y
33CONFIG_PPC_FPU=y 36CONFIG_PPC_FPU=y
37# CONFIG_PPC_DCR_NATIVE is not set
38# CONFIG_PPC_DCR_MMIO is not set
39# CONFIG_PPC_OF_PLATFORM_PCI is not set
34# CONFIG_ALTIVEC is not set 40# CONFIG_ALTIVEC is not set
35CONFIG_PPC_STD_MMU=y 41CONFIG_PPC_STD_MMU=y
36CONFIG_VIRT_CPU_ACCOUNTING=y 42CONFIG_VIRT_CPU_ACCOUNTING=y
@@ -61,12 +67,13 @@ CONFIG_POSIX_MQUEUE=y
61CONFIG_IKCONFIG=y 67CONFIG_IKCONFIG=y
62CONFIG_IKCONFIG_PROC=y 68CONFIG_IKCONFIG_PROC=y
63# CONFIG_CPUSETS is not set 69# CONFIG_CPUSETS is not set
70CONFIG_SYSFS_DEPRECATED=y
64# CONFIG_RELAY is not set 71# CONFIG_RELAY is not set
65CONFIG_INITRAMFS_SOURCE="" 72CONFIG_INITRAMFS_SOURCE=""
66CONFIG_CC_OPTIMIZE_FOR_SIZE=y 73CONFIG_CC_OPTIMIZE_FOR_SIZE=y
67CONFIG_SYSCTL=y 74CONFIG_SYSCTL=y
68# CONFIG_EMBEDDED is not set 75# CONFIG_EMBEDDED is not set
69# CONFIG_SYSCTL_SYSCALL is not set 76CONFIG_SYSCTL_SYSCALL=y
70CONFIG_KALLSYMS=y 77CONFIG_KALLSYMS=y
71CONFIG_KALLSYMS_ALL=y 78CONFIG_KALLSYMS_ALL=y
72# CONFIG_KALLSYMS_EXTRA_PASS is not set 79# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -123,18 +130,27 @@ CONFIG_PPC_MULTIPLATFORM=y
123# CONFIG_APUS is not set 130# CONFIG_APUS is not set
124# CONFIG_PPC_PSERIES is not set 131# CONFIG_PPC_PSERIES is not set
125# CONFIG_PPC_ISERIES is not set 132# CONFIG_PPC_ISERIES is not set
133# CONFIG_PPC_MPC52xx is not set
126# CONFIG_PPC_PMAC is not set 134# CONFIG_PPC_PMAC is not set
127CONFIG_PPC_MAPLE=y 135CONFIG_PPC_MAPLE=y
128# CONFIG_PPC_PASEMI is not set 136# CONFIG_PPC_PASEMI is not set
129# CONFIG_PPC_CELL is not set 137# CONFIG_PPC_CELL is not set
130# CONFIG_PPC_CELL_NATIVE is not set 138# CONFIG_PPC_CELL_NATIVE is not set
131# CONFIG_PPC_IBM_CELL_BLADE is not set 139# CONFIG_PPC_IBM_CELL_BLADE is not set
140# CONFIG_PPC_PS3 is not set
141CONFIG_PPC_NATIVE=y
142CONFIG_UDBG_RTAS_CONSOLE=y
132CONFIG_U3_DART=y 143CONFIG_U3_DART=y
133# CONFIG_PPC_RTAS is not set 144CONFIG_PPC_RTAS=y
145# CONFIG_RTAS_ERROR_LOGGING is not set
146CONFIG_RTAS_PROC=y
147# CONFIG_RTAS_FLASH is not set
134# CONFIG_MMIO_NVRAM is not set 148# CONFIG_MMIO_NVRAM is not set
135CONFIG_MPIC_BROKEN_U3=y 149CONFIG_MPIC_BROKEN_U3=y
136# CONFIG_PPC_MPC106 is not set 150# CONFIG_PPC_MPC106 is not set
137CONFIG_PPC_970_NAP=y 151CONFIG_PPC_970_NAP=y
152# CONFIG_PPC_INDIRECT_IO is not set
153# CONFIG_GENERIC_IOMAP is not set
138# CONFIG_CPU_FREQ is not set 154# CONFIG_CPU_FREQ is not set
139# CONFIG_WANT_EARLY_SERIAL is not set 155# CONFIG_WANT_EARLY_SERIAL is not set
140CONFIG_MPIC=y 156CONFIG_MPIC=y
@@ -144,6 +160,7 @@ CONFIG_MPIC=y
144# 160#
145# CONFIG_HZ_100 is not set 161# CONFIG_HZ_100 is not set
146CONFIG_HZ_250=y 162CONFIG_HZ_250=y
163# CONFIG_HZ_300 is not set
147# CONFIG_HZ_1000 is not set 164# CONFIG_HZ_1000 is not set
148CONFIG_HZ=250 165CONFIG_HZ=250
149CONFIG_PREEMPT_NONE=y 166CONFIG_PREEMPT_NONE=y
@@ -190,7 +207,6 @@ CONFIG_GENERIC_ISA_DMA=y
190CONFIG_PCI=y 207CONFIG_PCI=y
191CONFIG_PCI_DOMAINS=y 208CONFIG_PCI_DOMAINS=y
192# CONFIG_PCIEPORTBUS is not set 209# CONFIG_PCIEPORTBUS is not set
193# CONFIG_PCI_MULTITHREAD_PROBE is not set
194# CONFIG_PCI_DEBUG is not set 210# CONFIG_PCI_DEBUG is not set
195 211
196# 212#
@@ -246,6 +262,7 @@ CONFIG_INET_TCP_DIAG=y
246# CONFIG_TCP_CONG_ADVANCED is not set 262# CONFIG_TCP_CONG_ADVANCED is not set
247CONFIG_TCP_CONG_CUBIC=y 263CONFIG_TCP_CONG_CUBIC=y
248CONFIG_DEFAULT_TCP_CONG="cubic" 264CONFIG_DEFAULT_TCP_CONG="cubic"
265# CONFIG_TCP_MD5SIG is not set
249# CONFIG_IPV6 is not set 266# CONFIG_IPV6 is not set
250# CONFIG_INET6_XFRM_TUNNEL is not set 267# CONFIG_INET6_XFRM_TUNNEL is not set
251# CONFIG_INET6_TUNNEL is not set 268# CONFIG_INET6_TUNNEL is not set
@@ -346,6 +363,12 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
346# CONFIG_ATA_OVER_ETH is not set 363# CONFIG_ATA_OVER_ETH is not set
347 364
348# 365#
366# Misc devices
367#
368# CONFIG_SGI_IOC4 is not set
369# CONFIG_TIFM_CORE is not set
370
371#
349# ATA/ATAPI/MFM/RLL support 372# ATA/ATAPI/MFM/RLL support
350# 373#
351CONFIG_IDE=y 374CONFIG_IDE=y
@@ -371,7 +394,6 @@ CONFIG_IDEPCI_SHARE_IRQ=y
371# CONFIG_BLK_DEV_OFFBOARD is not set 394# CONFIG_BLK_DEV_OFFBOARD is not set
372CONFIG_BLK_DEV_GENERIC=y 395CONFIG_BLK_DEV_GENERIC=y
373# CONFIG_BLK_DEV_OPTI621 is not set 396# CONFIG_BLK_DEV_OPTI621 is not set
374# CONFIG_BLK_DEV_SL82C105 is not set
375CONFIG_BLK_DEV_IDEDMA_PCI=y 397CONFIG_BLK_DEV_IDEDMA_PCI=y
376# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 398# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
377CONFIG_IDEDMA_PCI_AUTO=y 399CONFIG_IDEDMA_PCI_AUTO=y
@@ -395,6 +417,7 @@ CONFIG_BLK_DEV_AMD74XX=y
395# CONFIG_BLK_DEV_PDC202XX_NEW is not set 417# CONFIG_BLK_DEV_PDC202XX_NEW is not set
396# CONFIG_BLK_DEV_SVWKS is not set 418# CONFIG_BLK_DEV_SVWKS is not set
397# CONFIG_BLK_DEV_SIIMAGE is not set 419# CONFIG_BLK_DEV_SIIMAGE is not set
420# CONFIG_BLK_DEV_SL82C105 is not set
398# CONFIG_BLK_DEV_SLC90E66 is not set 421# CONFIG_BLK_DEV_SLC90E66 is not set
399# CONFIG_BLK_DEV_TRM290 is not set 422# CONFIG_BLK_DEV_TRM290 is not set
400# CONFIG_BLK_DEV_VIA82CXXX is not set 423# CONFIG_BLK_DEV_VIA82CXXX is not set
@@ -439,6 +462,7 @@ CONFIG_IDEDMA_AUTO=y
439# 462#
440# Macintosh device drivers 463# Macintosh device drivers
441# 464#
465# CONFIG_MAC_EMUMOUSEBTN is not set
442# CONFIG_WINDFARM is not set 466# CONFIG_WINDFARM is not set
443 467
444# 468#
@@ -523,6 +547,7 @@ CONFIG_TIGON3=y
523# CONFIG_IXGB is not set 547# CONFIG_IXGB is not set
524# CONFIG_S2IO is not set 548# CONFIG_S2IO is not set
525# CONFIG_MYRI10GE is not set 549# CONFIG_MYRI10GE is not set
550# CONFIG_NETXEN_NIC is not set
526 551
527# 552#
528# Token Ring devices 553# Token Ring devices
@@ -618,6 +643,8 @@ CONFIG_SERIAL_CORE_CONSOLE=y
618CONFIG_UNIX98_PTYS=y 643CONFIG_UNIX98_PTYS=y
619CONFIG_LEGACY_PTYS=y 644CONFIG_LEGACY_PTYS=y
620CONFIG_LEGACY_PTY_COUNT=256 645CONFIG_LEGACY_PTY_COUNT=256
646CONFIG_HVC_DRIVER=y
647CONFIG_HVC_RTAS=y
621 648
622# 649#
623# IPMI 650# IPMI
@@ -634,10 +661,6 @@ CONFIG_GEN_RTC=y
634# CONFIG_DTLK is not set 661# CONFIG_DTLK is not set
635# CONFIG_R3964 is not set 662# CONFIG_R3964 is not set
636# CONFIG_APPLICOM is not set 663# CONFIG_APPLICOM is not set
637
638#
639# Ftape, the floppy tape device driver
640#
641# CONFIG_AGP is not set 664# CONFIG_AGP is not set
642# CONFIG_DRM is not set 665# CONFIG_DRM is not set
643# CONFIG_RAW_DRIVER is not set 666# CONFIG_RAW_DRIVER is not set
@@ -647,7 +670,6 @@ CONFIG_GEN_RTC=y
647# TPM devices 670# TPM devices
648# 671#
649# CONFIG_TCG_TPM is not set 672# CONFIG_TCG_TPM is not set
650# CONFIG_TELCLOCK is not set
651 673
652# 674#
653# I2C support 675# I2C support
@@ -711,6 +733,7 @@ CONFIG_I2C_AMD8111=y
711# 733#
712# Dallas's 1-wire bus 734# Dallas's 1-wire bus
713# 735#
736# CONFIG_W1 is not set
714 737
715# 738#
716# Hardware Monitoring support 739# Hardware Monitoring support
@@ -719,15 +742,9 @@ CONFIG_I2C_AMD8111=y
719# CONFIG_HWMON_VID is not set 742# CONFIG_HWMON_VID is not set
720 743
721# 744#
722# Misc devices
723#
724# CONFIG_TIFM_CORE is not set
725
726#
727# Multimedia devices 745# Multimedia devices
728# 746#
729# CONFIG_VIDEO_DEV is not set 747# CONFIG_VIDEO_DEV is not set
730CONFIG_VIDEO_V4L2=y
731 748
732# 749#
733# Digital Video Broadcasting Devices 750# Digital Video Broadcasting Devices
@@ -740,6 +757,7 @@ CONFIG_VIDEO_V4L2=y
740# 757#
741CONFIG_FIRMWARE_EDID=y 758CONFIG_FIRMWARE_EDID=y
742# CONFIG_FB is not set 759# CONFIG_FB is not set
760# CONFIG_FB_IBM_GXT4500 is not set
743 761
744# 762#
745# Console display driver support 763# Console display driver support
@@ -754,6 +772,11 @@ CONFIG_DUMMY_CONSOLE=y
754# CONFIG_SOUND is not set 772# CONFIG_SOUND is not set
755 773
756# 774#
775# HID Devices
776#
777CONFIG_HID=y
778
779#
757# USB support 780# USB support
758# 781#
759CONFIG_USB_ARCH_HAS_HCD=y 782CONFIG_USB_ARCH_HAS_HCD=y
@@ -768,6 +791,7 @@ CONFIG_USB=y
768CONFIG_USB_DEVICEFS=y 791CONFIG_USB_DEVICEFS=y
769# CONFIG_USB_BANDWIDTH is not set 792# CONFIG_USB_BANDWIDTH is not set
770# CONFIG_USB_DYNAMIC_MINORS is not set 793# CONFIG_USB_DYNAMIC_MINORS is not set
794# CONFIG_USB_MULTITHREAD_PROBE is not set
771# CONFIG_USB_OTG is not set 795# CONFIG_USB_OTG is not set
772 796
773# 797#
@@ -803,7 +827,6 @@ CONFIG_USB_UHCI_HCD=y
803# USB Input Devices 827# USB Input Devices
804# 828#
805CONFIG_USB_HID=y 829CONFIG_USB_HID=y
806CONFIG_USB_HIDINPUT=y
807# CONFIG_USB_HIDINPUT_POWERBOOK is not set 830# CONFIG_USB_HIDINPUT_POWERBOOK is not set
808# CONFIG_HID_FF is not set 831# CONFIG_HID_FF is not set
809# CONFIG_USB_HIDDEV is not set 832# CONFIG_USB_HIDDEV is not set
@@ -819,7 +842,6 @@ CONFIG_USB_HIDINPUT=y
819# CONFIG_USB_ATI_REMOTE2 is not set 842# CONFIG_USB_ATI_REMOTE2 is not set
820# CONFIG_USB_KEYSPAN_REMOTE is not set 843# CONFIG_USB_KEYSPAN_REMOTE is not set
821# CONFIG_USB_APPLETOUCH is not set 844# CONFIG_USB_APPLETOUCH is not set
822# CONFIG_USB_TRANCEVIBRATOR is not set
823 845
824# 846#
825# USB Imaging devices 847# USB Imaging devices
@@ -833,6 +855,7 @@ CONFIG_USB_HIDINPUT=y
833# CONFIG_USB_KAWETH is not set 855# CONFIG_USB_KAWETH is not set
834CONFIG_USB_PEGASUS=y 856CONFIG_USB_PEGASUS=y
835# CONFIG_USB_RTL8150 is not set 857# CONFIG_USB_RTL8150 is not set
858# CONFIG_USB_USBNET_MII is not set
836# CONFIG_USB_USBNET is not set 859# CONFIG_USB_USBNET is not set
837CONFIG_USB_MON=y 860CONFIG_USB_MON=y
838 861
@@ -881,6 +904,7 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
881# CONFIG_USB_SERIAL_KLSI is not set 904# CONFIG_USB_SERIAL_KLSI is not set
882# CONFIG_USB_SERIAL_KOBIL_SCT is not set 905# CONFIG_USB_SERIAL_KOBIL_SCT is not set
883# CONFIG_USB_SERIAL_MCT_U232 is not set 906# CONFIG_USB_SERIAL_MCT_U232 is not set
907# CONFIG_USB_SERIAL_MOS7720 is not set
884# CONFIG_USB_SERIAL_MOS7840 is not set 908# CONFIG_USB_SERIAL_MOS7840 is not set
885# CONFIG_USB_SERIAL_NAVMAN is not set 909# CONFIG_USB_SERIAL_NAVMAN is not set
886# CONFIG_USB_SERIAL_PL2303 is not set 910# CONFIG_USB_SERIAL_PL2303 is not set
@@ -892,6 +916,7 @@ CONFIG_USB_SERIAL_TI=m
892# CONFIG_USB_SERIAL_XIRCOM is not set 916# CONFIG_USB_SERIAL_XIRCOM is not set
893# CONFIG_USB_SERIAL_OPTION is not set 917# CONFIG_USB_SERIAL_OPTION is not set
894# CONFIG_USB_SERIAL_OMNINET is not set 918# CONFIG_USB_SERIAL_OMNINET is not set
919# CONFIG_USB_SERIAL_DEBUG is not set
895CONFIG_USB_EZUSB=y 920CONFIG_USB_EZUSB=y
896 921
897# 922#
@@ -913,6 +938,7 @@ CONFIG_USB_EZUSB=y
913# CONFIG_USB_APPLEDISPLAY is not set 938# CONFIG_USB_APPLEDISPLAY is not set
914# CONFIG_USB_SISUSBVGA is not set 939# CONFIG_USB_SISUSBVGA is not set
915# CONFIG_USB_LD is not set 940# CONFIG_USB_LD is not set
941# CONFIG_USB_TRANCEVIBRATOR is not set
916# CONFIG_USB_TEST is not set 942# CONFIG_USB_TEST is not set
917 943
918# 944#
@@ -970,6 +996,10 @@ CONFIG_USB_EZUSB=y
970# 996#
971 997
972# 998#
999# Virtualization
1000#
1001
1002#
973# File systems 1003# File systems
974# 1004#
975CONFIG_EXT2_FS=y 1005CONFIG_EXT2_FS=y
@@ -978,12 +1008,14 @@ CONFIG_EXT2_FS_XIP=y
978CONFIG_FS_XIP=y 1008CONFIG_FS_XIP=y
979CONFIG_EXT3_FS=y 1009CONFIG_EXT3_FS=y
980# CONFIG_EXT3_FS_XATTR is not set 1010# CONFIG_EXT3_FS_XATTR is not set
1011# CONFIG_EXT4DEV_FS is not set
981CONFIG_JBD=y 1012CONFIG_JBD=y
982# CONFIG_JBD_DEBUG is not set 1013# CONFIG_JBD_DEBUG is not set
983# CONFIG_REISERFS_FS is not set 1014# CONFIG_REISERFS_FS is not set
984# CONFIG_JFS_FS is not set 1015# CONFIG_JFS_FS is not set
985CONFIG_FS_POSIX_ACL=y 1016CONFIG_FS_POSIX_ACL=y
986# CONFIG_XFS_FS is not set 1017# CONFIG_XFS_FS is not set
1018# CONFIG_GFS2_FS is not set
987# CONFIG_OCFS2_FS is not set 1019# CONFIG_OCFS2_FS is not set
988# CONFIG_MINIX_FS is not set 1020# CONFIG_MINIX_FS is not set
989# CONFIG_ROMFS_FS is not set 1021# CONFIG_ROMFS_FS is not set
@@ -1133,14 +1165,21 @@ CONFIG_NLS_DEFAULT="utf-8"
1133CONFIG_NLS_UTF8=y 1165CONFIG_NLS_UTF8=y
1134 1166
1135# 1167#
1168# Distributed Lock Manager
1169#
1170# CONFIG_DLM is not set
1171
1172#
1136# Library routines 1173# Library routines
1137# 1174#
1175CONFIG_BITREVERSE=y
1138CONFIG_CRC_CCITT=y 1176CONFIG_CRC_CCITT=y
1139# CONFIG_CRC16 is not set 1177# CONFIG_CRC16 is not set
1140CONFIG_CRC32=y 1178CONFIG_CRC32=y
1141# CONFIG_LIBCRC32C is not set 1179# CONFIG_LIBCRC32C is not set
1142CONFIG_ZLIB_INFLATE=y 1180CONFIG_ZLIB_INFLATE=y
1143CONFIG_PLIST=y 1181CONFIG_PLIST=y
1182CONFIG_IOMAP_COPY=y
1144 1183
1145# 1184#
1146# Instrumentation Support 1185# Instrumentation Support
@@ -1155,6 +1194,8 @@ CONFIG_PLIST=y
1155CONFIG_ENABLE_MUST_CHECK=y 1194CONFIG_ENABLE_MUST_CHECK=y
1156CONFIG_MAGIC_SYSRQ=y 1195CONFIG_MAGIC_SYSRQ=y
1157# CONFIG_UNUSED_SYMBOLS is not set 1196# CONFIG_UNUSED_SYMBOLS is not set
1197CONFIG_DEBUG_FS=y
1198# CONFIG_HEADERS_CHECK is not set
1158CONFIG_DEBUG_KERNEL=y 1199CONFIG_DEBUG_KERNEL=y
1159CONFIG_LOG_BUF_SHIFT=17 1200CONFIG_LOG_BUF_SHIFT=17
1160CONFIG_DETECT_SOFTLOCKUP=y 1201CONFIG_DETECT_SOFTLOCKUP=y
@@ -1169,8 +1210,8 @@ CONFIG_DEBUG_SLAB=y
1169CONFIG_DEBUG_SPINLOCK_SLEEP=y 1210CONFIG_DEBUG_SPINLOCK_SLEEP=y
1170# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1211# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1171# CONFIG_DEBUG_KOBJECT is not set 1212# CONFIG_DEBUG_KOBJECT is not set
1213CONFIG_DEBUG_BUGVERBOSE=y
1172# CONFIG_DEBUG_INFO is not set 1214# CONFIG_DEBUG_INFO is not set
1173CONFIG_DEBUG_FS=y
1174# CONFIG_DEBUG_VM is not set 1215# CONFIG_DEBUG_VM is not set
1175# CONFIG_DEBUG_LIST is not set 1216# CONFIG_DEBUG_LIST is not set
1176# CONFIG_FORCED_INLINING is not set 1217# CONFIG_FORCED_INLINING is not set
@@ -1180,6 +1221,7 @@ CONFIG_DEBUG_STACK_USAGE=y
1180CONFIG_DEBUGGER=y 1221CONFIG_DEBUGGER=y
1181CONFIG_XMON=y 1222CONFIG_XMON=y
1182CONFIG_XMON_DEFAULT=y 1223CONFIG_XMON_DEFAULT=y
1224CONFIG_XMON_DISASSEMBLY=y
1183# CONFIG_IRQSTACKS is not set 1225# CONFIG_IRQSTACKS is not set
1184CONFIG_BOOTX_TEXT=y 1226CONFIG_BOOTX_TEXT=y
1185# CONFIG_PPC_EARLY_DEBUG is not set 1227# CONFIG_PPC_EARLY_DEBUG is not set
@@ -1195,9 +1237,10 @@ CONFIG_BOOTX_TEXT=y
1195# 1237#
1196CONFIG_CRYPTO=y 1238CONFIG_CRYPTO=y
1197CONFIG_CRYPTO_ALGAPI=y 1239CONFIG_CRYPTO_ALGAPI=y
1198CONFIG_CRYPTO_BLKCIPHER=m 1240CONFIG_CRYPTO_BLKCIPHER=y
1199CONFIG_CRYPTO_MANAGER=m 1241CONFIG_CRYPTO_MANAGER=y
1200# CONFIG_CRYPTO_HMAC is not set 1242# CONFIG_CRYPTO_HMAC is not set
1243# CONFIG_CRYPTO_XCBC is not set
1201# CONFIG_CRYPTO_NULL is not set 1244# CONFIG_CRYPTO_NULL is not set
1202# CONFIG_CRYPTO_MD4 is not set 1245# CONFIG_CRYPTO_MD4 is not set
1203CONFIG_CRYPTO_MD5=y 1246CONFIG_CRYPTO_MD5=y
@@ -1206,8 +1249,10 @@ CONFIG_CRYPTO_MD5=y
1206# CONFIG_CRYPTO_SHA512 is not set 1249# CONFIG_CRYPTO_SHA512 is not set
1207# CONFIG_CRYPTO_WP512 is not set 1250# CONFIG_CRYPTO_WP512 is not set
1208# CONFIG_CRYPTO_TGR192 is not set 1251# CONFIG_CRYPTO_TGR192 is not set
1252# CONFIG_CRYPTO_GF128MUL is not set
1209CONFIG_CRYPTO_ECB=m 1253CONFIG_CRYPTO_ECB=m
1210CONFIG_CRYPTO_CBC=m 1254CONFIG_CRYPTO_CBC=y
1255# CONFIG_CRYPTO_LRW is not set
1211CONFIG_CRYPTO_DES=y 1256CONFIG_CRYPTO_DES=y
1212# CONFIG_CRYPTO_BLOWFISH is not set 1257# CONFIG_CRYPTO_BLOWFISH is not set
1213# CONFIG_CRYPTO_TWOFISH is not set 1258# CONFIG_CRYPTO_TWOFISH is not set
diff --git a/arch/powerpc/configs/mpc7448_hpc2_defconfig b/arch/powerpc/configs/mpc7448_hpc2_defconfig
index d1811e754518..fdf09eabe6e7 100644
--- a/arch/powerpc/configs/mpc7448_hpc2_defconfig
+++ b/arch/powerpc/configs/mpc7448_hpc2_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:26:55 2006 4# Mon Jan 22 22:20:53 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -21,13 +22,14 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
21CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
24CONFIG_DEFAULT_UIMAGE=y 27CONFIG_DEFAULT_UIMAGE=y
25 28
26# 29#
27# Processor support 30# Processor support
28# 31#
29CONFIG_CLASSIC32=y 32CONFIG_CLASSIC32=y
30# CONFIG_PPC_52xx is not set
31# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
32# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
33# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -38,6 +40,8 @@ CONFIG_CLASSIC32=y
38# CONFIG_E200 is not set 40# CONFIG_E200 is not set
39CONFIG_6xx=y 41CONFIG_6xx=y
40CONFIG_PPC_FPU=y 42CONFIG_PPC_FPU=y
43# CONFIG_PPC_DCR_NATIVE is not set
44# CONFIG_PPC_DCR_MMIO is not set
41# CONFIG_ALTIVEC is not set 45# CONFIG_ALTIVEC is not set
42CONFIG_PPC_STD_MMU=y 46CONFIG_PPC_STD_MMU=y
43CONFIG_PPC_STD_MMU_32=y 47CONFIG_PPC_STD_MMU_32=y
@@ -58,16 +62,20 @@ CONFIG_LOCALVERSION=""
58CONFIG_LOCALVERSION_AUTO=y 62CONFIG_LOCALVERSION_AUTO=y
59CONFIG_SWAP=y 63CONFIG_SWAP=y
60CONFIG_SYSVIPC=y 64CONFIG_SYSVIPC=y
65# CONFIG_IPC_NS is not set
61# CONFIG_POSIX_MQUEUE is not set 66# CONFIG_POSIX_MQUEUE is not set
62# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
63# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
64CONFIG_SYSCTL=y 69# CONFIG_UTS_NS is not set
65# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
66# CONFIG_IKCONFIG is not set 71# CONFIG_IKCONFIG is not set
72CONFIG_SYSFS_DEPRECATED=y
67# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
68CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
76CONFIG_SYSCTL=y
70CONFIG_EMBEDDED=y 77CONFIG_EMBEDDED=y
78CONFIG_SYSCTL_SYSCALL=y
71CONFIG_KALLSYMS=y 79CONFIG_KALLSYMS=y
72# CONFIG_KALLSYMS_EXTRA_PASS is not set 80# CONFIG_KALLSYMS_EXTRA_PASS is not set
73CONFIG_HOTPLUG=y 81CONFIG_HOTPLUG=y
@@ -75,12 +83,12 @@ CONFIG_PRINTK=y
75CONFIG_BUG=y 83CONFIG_BUG=y
76CONFIG_ELF_CORE=y 84CONFIG_ELF_CORE=y
77CONFIG_BASE_FULL=y 85CONFIG_BASE_FULL=y
78CONFIG_RT_MUTEXES=y
79CONFIG_FUTEX=y 86CONFIG_FUTEX=y
80CONFIG_EPOLL=y 87CONFIG_EPOLL=y
81CONFIG_SHMEM=y 88CONFIG_SHMEM=y
82CONFIG_SLAB=y 89CONFIG_SLAB=y
83CONFIG_VM_EVENT_COUNTERS=y 90CONFIG_VM_EVENT_COUNTERS=y
91CONFIG_RT_MUTEXES=y
84# CONFIG_TINY_SHMEM is not set 92# CONFIG_TINY_SHMEM is not set
85CONFIG_BASE_SMALL=0 93CONFIG_BASE_SMALL=0
86# CONFIG_SLOB is not set 94# CONFIG_SLOB is not set
@@ -93,6 +101,7 @@ CONFIG_BASE_SMALL=0
93# 101#
94# Block layer 102# Block layer
95# 103#
104CONFIG_BLOCK=y
96CONFIG_LBD=y 105CONFIG_LBD=y
97# CONFIG_BLK_DEV_IO_TRACE is not set 106# CONFIG_BLK_DEV_IO_TRACE is not set
98# CONFIG_LSF is not set 107# CONFIG_LSF is not set
@@ -114,19 +123,19 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
114# Platform support 123# Platform support
115# 124#
116# CONFIG_PPC_MULTIPLATFORM is not set 125# CONFIG_PPC_MULTIPLATFORM is not set
117# CONFIG_PPC_ISERIES is not set
118CONFIG_EMBEDDED6xx=y 126CONFIG_EMBEDDED6xx=y
119# CONFIG_APUS is not set 127# CONFIG_APUS is not set
128# CONFIG_PPC_MPC52xx is not set
120# CONFIG_PPC_CELL is not set 129# CONFIG_PPC_CELL is not set
121# CONFIG_PPC_CELL_NATIVE is not set 130# CONFIG_PPC_CELL_NATIVE is not set
122# CONFIG_UDBG_RTAS_CONSOLE is not set
123# CONFIG_PPC_RTAS is not set 131# CONFIG_PPC_RTAS is not set
124# CONFIG_MMIO_NVRAM is not set 132# CONFIG_MMIO_NVRAM is not set
125# CONFIG_PPC_MPC106 is not set 133# CONFIG_PPC_MPC106 is not set
126# CONFIG_PPC_970_NAP is not set 134# CONFIG_PPC_970_NAP is not set
135# CONFIG_PPC_INDIRECT_IO is not set
136# CONFIG_GENERIC_IOMAP is not set
127# CONFIG_CPU_FREQ is not set 137# CONFIG_CPU_FREQ is not set
128# CONFIG_TAU is not set 138# CONFIG_TAU is not set
129# CONFIG_PPC_TODC is not set
130# CONFIG_KATANA is not set 139# CONFIG_KATANA is not set
131# CONFIG_WILLOW is not set 140# CONFIG_WILLOW is not set
132# CONFIG_CPCI690 is not set 141# CONFIG_CPCI690 is not set
@@ -141,6 +150,7 @@ CONFIG_EMBEDDED6xx=y
141# CONFIG_PRPMC750 is not set 150# CONFIG_PRPMC750 is not set
142# CONFIG_PRPMC800 is not set 151# CONFIG_PRPMC800 is not set
143# CONFIG_SANDPOINT is not set 152# CONFIG_SANDPOINT is not set
153# CONFIG_LINKSTATION is not set
144CONFIG_MPC7448HPC2=y 154CONFIG_MPC7448HPC2=y
145# CONFIG_RADSTONE_PPC7D is not set 155# CONFIG_RADSTONE_PPC7D is not set
146# CONFIG_PAL4 is not set 156# CONFIG_PAL4 is not set
@@ -152,7 +162,6 @@ CONFIG_MPC7448HPC2=y
152# CONFIG_TQM8260 is not set 162# CONFIG_TQM8260 is not set
153# CONFIG_ADS8272 is not set 163# CONFIG_ADS8272 is not set
154# CONFIG_PQ2FADS is not set 164# CONFIG_PQ2FADS is not set
155# CONFIG_LITE5200 is not set
156# CONFIG_EV64360 is not set 165# CONFIG_EV64360 is not set
157CONFIG_TSI108_BRIDGE=y 166CONFIG_TSI108_BRIDGE=y
158# CONFIG_WANT_EARLY_SERIAL is not set 167# CONFIG_WANT_EARLY_SERIAL is not set
@@ -164,6 +173,7 @@ CONFIG_MPIC=y
164# CONFIG_HIGHMEM is not set 173# CONFIG_HIGHMEM is not set
165# CONFIG_HZ_100 is not set 174# CONFIG_HZ_100 is not set
166CONFIG_HZ_250=y 175CONFIG_HZ_250=y
176# CONFIG_HZ_300 is not set
167# CONFIG_HZ_1000 is not set 177# CONFIG_HZ_1000 is not set
168CONFIG_HZ=250 178CONFIG_HZ=250
169CONFIG_PREEMPT_NONE=y 179CONFIG_PREEMPT_NONE=y
@@ -173,6 +183,7 @@ CONFIG_BINFMT_ELF=y
173CONFIG_BINFMT_MISC=y 183CONFIG_BINFMT_MISC=y
174CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 184CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
175CONFIG_ARCH_FLATMEM_ENABLE=y 185CONFIG_ARCH_FLATMEM_ENABLE=y
186CONFIG_ARCH_POPULATES_NODE_MAP=y
176CONFIG_SELECT_MEMORY_MODEL=y 187CONFIG_SELECT_MEMORY_MODEL=y
177CONFIG_FLATMEM_MANUAL=y 188CONFIG_FLATMEM_MANUAL=y
178# CONFIG_DISCONTIGMEM_MANUAL is not set 189# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -237,6 +248,7 @@ CONFIG_PACKET=y
237CONFIG_UNIX=y 248CONFIG_UNIX=y
238CONFIG_XFRM=y 249CONFIG_XFRM=y
239CONFIG_XFRM_USER=y 250CONFIG_XFRM_USER=y
251# CONFIG_XFRM_SUB_POLICY is not set
240# CONFIG_NET_KEY is not set 252# CONFIG_NET_KEY is not set
241CONFIG_INET=y 253CONFIG_INET=y
242CONFIG_IP_MULTICAST=y 254CONFIG_IP_MULTICAST=y
@@ -258,10 +270,13 @@ CONFIG_SYN_COOKIES=y
258# CONFIG_INET_TUNNEL is not set 270# CONFIG_INET_TUNNEL is not set
259CONFIG_INET_XFRM_MODE_TRANSPORT=y 271CONFIG_INET_XFRM_MODE_TRANSPORT=y
260CONFIG_INET_XFRM_MODE_TUNNEL=y 272CONFIG_INET_XFRM_MODE_TUNNEL=y
273CONFIG_INET_XFRM_MODE_BEET=y
261CONFIG_INET_DIAG=y 274CONFIG_INET_DIAG=y
262CONFIG_INET_TCP_DIAG=y 275CONFIG_INET_TCP_DIAG=y
263# CONFIG_TCP_CONG_ADVANCED is not set 276# CONFIG_TCP_CONG_ADVANCED is not set
264CONFIG_TCP_CONG_BIC=y 277CONFIG_TCP_CONG_CUBIC=y
278CONFIG_DEFAULT_TCP_CONG="cubic"
279# CONFIG_TCP_MD5SIG is not set
265# CONFIG_IPV6 is not set 280# CONFIG_IPV6 is not set
266# CONFIG_INET6_XFRM_TUNNEL is not set 281# CONFIG_INET6_XFRM_TUNNEL is not set
267# CONFIG_INET6_TUNNEL is not set 282# CONFIG_INET6_TUNNEL is not set
@@ -291,7 +306,6 @@ CONFIG_TCP_CONG_BIC=y
291# CONFIG_ATALK is not set 306# CONFIG_ATALK is not set
292# CONFIG_X25 is not set 307# CONFIG_X25 is not set
293# CONFIG_LAPB is not set 308# CONFIG_LAPB is not set
294# CONFIG_NET_DIVERT is not set
295# CONFIG_ECONET is not set 309# CONFIG_ECONET is not set
296# CONFIG_WAN_ROUTER is not set 310# CONFIG_WAN_ROUTER is not set
297 311
@@ -362,6 +376,12 @@ CONFIG_BLK_DEV_INITRD=y
362# CONFIG_ATA_OVER_ETH is not set 376# CONFIG_ATA_OVER_ETH is not set
363 377
364# 378#
379# Misc devices
380#
381# CONFIG_SGI_IOC4 is not set
382# CONFIG_TIFM_CORE is not set
383
384#
365# ATA/ATAPI/MFM/RLL support 385# ATA/ATAPI/MFM/RLL support
366# 386#
367# CONFIG_IDE is not set 387# CONFIG_IDE is not set
@@ -371,6 +391,8 @@ CONFIG_BLK_DEV_INITRD=y
371# 391#
372# CONFIG_RAID_ATTRS is not set 392# CONFIG_RAID_ATTRS is not set
373CONFIG_SCSI=y 393CONFIG_SCSI=y
394# CONFIG_SCSI_TGT is not set
395# CONFIG_SCSI_NETLINK is not set
374CONFIG_SCSI_PROC_FS=y 396CONFIG_SCSI_PROC_FS=y
375 397
376# 398#
@@ -389,14 +411,16 @@ CONFIG_BLK_DEV_SD=y
389# CONFIG_SCSI_MULTI_LUN is not set 411# CONFIG_SCSI_MULTI_LUN is not set
390# CONFIG_SCSI_CONSTANTS is not set 412# CONFIG_SCSI_CONSTANTS is not set
391# CONFIG_SCSI_LOGGING is not set 413# CONFIG_SCSI_LOGGING is not set
414# CONFIG_SCSI_SCAN_ASYNC is not set
392 415
393# 416#
394# SCSI Transport Attributes 417# SCSI Transports
395# 418#
396# CONFIG_SCSI_SPI_ATTRS is not set 419# CONFIG_SCSI_SPI_ATTRS is not set
397# CONFIG_SCSI_FC_ATTRS is not set 420# CONFIG_SCSI_FC_ATTRS is not set
398# CONFIG_SCSI_ISCSI_ATTRS is not set 421# CONFIG_SCSI_ISCSI_ATTRS is not set
399# CONFIG_SCSI_SAS_ATTRS is not set 422# CONFIG_SCSI_SAS_ATTRS is not set
423# CONFIG_SCSI_SAS_LIBSAS is not set
400 424
401# 425#
402# SCSI low-level drivers 426# SCSI low-level drivers
@@ -409,27 +433,13 @@ CONFIG_BLK_DEV_SD=y
409# CONFIG_SCSI_AIC7XXX is not set 433# CONFIG_SCSI_AIC7XXX is not set
410# CONFIG_SCSI_AIC7XXX_OLD is not set 434# CONFIG_SCSI_AIC7XXX_OLD is not set
411# CONFIG_SCSI_AIC79XX is not set 435# CONFIG_SCSI_AIC79XX is not set
436# CONFIG_SCSI_AIC94XX is not set
412# CONFIG_SCSI_DPT_I2O is not set 437# CONFIG_SCSI_DPT_I2O is not set
438# CONFIG_SCSI_ARCMSR is not set
413# CONFIG_MEGARAID_NEWGEN is not set 439# CONFIG_MEGARAID_NEWGEN is not set
414# CONFIG_MEGARAID_LEGACY is not set 440# CONFIG_MEGARAID_LEGACY is not set
415# CONFIG_MEGARAID_SAS is not set 441# CONFIG_MEGARAID_SAS is not set
416CONFIG_ATA=y
417# CONFIG_SATA_AHCI is not set
418# CONFIG_SATA_SVW is not set
419# CONFIG_SCSI_ATA_PIIX is not set
420CONFIG_SATA_MV=y
421# CONFIG_SATA_NV is not set
422# CONFIG_SCSI_PDC_ADMA is not set
423# CONFIG_SCSI_HPTIOP is not set 442# CONFIG_SCSI_HPTIOP is not set
424# CONFIG_SATA_QSTOR is not set
425# CONFIG_SATA_PROMISE is not set
426# CONFIG_SATA_SX4 is not set
427# CONFIG_SATA_SIL is not set
428# CONFIG_SATA_SIL24 is not set
429# CONFIG_SATA_SIS is not set
430# CONFIG_SATA_ULI is not set
431# CONFIG_SATA_VIA is not set
432# CONFIG_SATA_VITESSE is not set
433# CONFIG_SCSI_BUSLOGIC is not set 443# CONFIG_SCSI_BUSLOGIC is not set
434# CONFIG_SCSI_DMX3191D is not set 444# CONFIG_SCSI_DMX3191D is not set
435# CONFIG_SCSI_EATA is not set 445# CONFIG_SCSI_EATA is not set
@@ -438,15 +448,73 @@ CONFIG_SATA_MV=y
438# CONFIG_SCSI_IPS is not set 448# CONFIG_SCSI_IPS is not set
439# CONFIG_SCSI_INITIO is not set 449# CONFIG_SCSI_INITIO is not set
440# CONFIG_SCSI_INIA100 is not set 450# CONFIG_SCSI_INIA100 is not set
451# CONFIG_SCSI_STEX is not set
441# CONFIG_SCSI_SYM53C8XX_2 is not set 452# CONFIG_SCSI_SYM53C8XX_2 is not set
442# CONFIG_SCSI_IPR is not set 453# CONFIG_SCSI_IPR is not set
443# CONFIG_SCSI_QLOGIC_1280 is not set 454# CONFIG_SCSI_QLOGIC_1280 is not set
444# CONFIG_SCSI_QLA_FC is not set 455# CONFIG_SCSI_QLA_FC is not set
456# CONFIG_SCSI_QLA_ISCSI is not set
445# CONFIG_SCSI_LPFC is not set 457# CONFIG_SCSI_LPFC is not set
446# CONFIG_SCSI_DC395x is not set 458# CONFIG_SCSI_DC395x is not set
447# CONFIG_SCSI_DC390T is not set 459# CONFIG_SCSI_DC390T is not set
448# CONFIG_SCSI_NSP32 is not set 460# CONFIG_SCSI_NSP32 is not set
449# CONFIG_SCSI_DEBUG is not set 461# CONFIG_SCSI_DEBUG is not set
462# CONFIG_SCSI_SRP is not set
463
464#
465# Serial ATA (prod) and Parallel ATA (experimental) drivers
466#
467CONFIG_ATA=y
468# CONFIG_SATA_AHCI is not set
469# CONFIG_SATA_SVW is not set
470# CONFIG_ATA_PIIX is not set
471CONFIG_SATA_MV=y
472# CONFIG_SATA_NV is not set
473# CONFIG_PDC_ADMA is not set
474# CONFIG_SATA_QSTOR is not set
475# CONFIG_SATA_PROMISE is not set
476# CONFIG_SATA_SX4 is not set
477# CONFIG_SATA_SIL is not set
478# CONFIG_SATA_SIL24 is not set
479# CONFIG_SATA_SIS is not set
480# CONFIG_SATA_ULI is not set
481# CONFIG_SATA_VIA is not set
482# CONFIG_SATA_VITESSE is not set
483# CONFIG_PATA_ALI is not set
484# CONFIG_PATA_AMD is not set
485# CONFIG_PATA_ARTOP is not set
486# CONFIG_PATA_ATIIXP is not set
487# CONFIG_PATA_CMD64X is not set
488# CONFIG_PATA_CS5520 is not set
489# CONFIG_PATA_CS5530 is not set
490# CONFIG_PATA_CYPRESS is not set
491# CONFIG_PATA_EFAR is not set
492# CONFIG_ATA_GENERIC is not set
493# CONFIG_PATA_HPT366 is not set
494# CONFIG_PATA_HPT37X is not set
495# CONFIG_PATA_HPT3X2N is not set
496# CONFIG_PATA_HPT3X3 is not set
497# CONFIG_PATA_IT821X is not set
498# CONFIG_PATA_JMICRON is not set
499# CONFIG_PATA_TRIFLEX is not set
500# CONFIG_PATA_MARVELL is not set
501# CONFIG_PATA_MPIIX is not set
502# CONFIG_PATA_OLDPIIX is not set
503# CONFIG_PATA_NETCELL is not set
504# CONFIG_PATA_NS87410 is not set
505# CONFIG_PATA_OPTI is not set
506# CONFIG_PATA_OPTIDMA is not set
507# CONFIG_PATA_PDC_OLD is not set
508# CONFIG_PATA_RADISYS is not set
509# CONFIG_PATA_RZ1000 is not set
510# CONFIG_PATA_SC1200 is not set
511# CONFIG_PATA_SERVERWORKS is not set
512# CONFIG_PATA_PDC2027X is not set
513# CONFIG_PATA_SIL680 is not set
514# CONFIG_PATA_SIS is not set
515# CONFIG_PATA_VIA is not set
516# CONFIG_PATA_WINBOND is not set
517# CONFIG_PATA_PLATFORM is not set
450 518
451# 519#
452# Multi-device support (RAID and LVM) 520# Multi-device support (RAID and LVM)
@@ -474,6 +542,7 @@ CONFIG_SATA_MV=y
474# 542#
475# Macintosh device drivers 543# Macintosh device drivers
476# 544#
545# CONFIG_MAC_EMUMOUSEBTN is not set
477# CONFIG_WINDFARM is not set 546# CONFIG_WINDFARM is not set
478 547
479# 548#
@@ -505,6 +574,7 @@ CONFIG_PHYLIB=y
505# CONFIG_CICADA_PHY is not set 574# CONFIG_CICADA_PHY is not set
506# CONFIG_VITESSE_PHY is not set 575# CONFIG_VITESSE_PHY is not set
507# CONFIG_SMSC_PHY is not set 576# CONFIG_SMSC_PHY is not set
577# CONFIG_BROADCOM_PHY is not set
508# CONFIG_FIXED_PHY is not set 578# CONFIG_FIXED_PHY is not set
509 579
510# 580#
@@ -563,6 +633,8 @@ CONFIG_8139TOO=y
563# CONFIG_VIA_VELOCITY is not set 633# CONFIG_VIA_VELOCITY is not set
564# CONFIG_TIGON3 is not set 634# CONFIG_TIGON3 is not set
565# CONFIG_BNX2 is not set 635# CONFIG_BNX2 is not set
636CONFIG_TSI108_ETH=y
637# CONFIG_QLA3XXX is not set
566 638
567# 639#
568# Ethernet (10000 Mbit) 640# Ethernet (10000 Mbit)
@@ -571,6 +643,7 @@ CONFIG_8139TOO=y
571# CONFIG_IXGB is not set 643# CONFIG_IXGB is not set
572# CONFIG_S2IO is not set 644# CONFIG_S2IO is not set
573# CONFIG_MYRI10GE is not set 645# CONFIG_MYRI10GE is not set
646# CONFIG_NETXEN_NIC is not set
574 647
575# 648#
576# Token Ring devices 649# Token Ring devices
@@ -610,6 +683,7 @@ CONFIG_8139TOO=y
610# Input device support 683# Input device support
611# 684#
612CONFIG_INPUT=y 685CONFIG_INPUT=y
686# CONFIG_INPUT_FF_MEMLESS is not set
613 687
614# 688#
615# Userland interfaces 689# Userland interfaces
@@ -654,6 +728,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
654# 728#
655# Non-8250 serial port support 729# Non-8250 serial port support
656# 730#
731# CONFIG_SERIAL_UARTLITE is not set
657CONFIG_SERIAL_CORE=y 732CONFIG_SERIAL_CORE=y
658CONFIG_SERIAL_CORE_CONSOLE=y 733CONFIG_SERIAL_CORE_CONSOLE=y
659# CONFIG_SERIAL_JSM is not set 734# CONFIG_SERIAL_JSM is not set
@@ -677,10 +752,6 @@ CONFIG_GEN_RTC=y
677# CONFIG_DTLK is not set 752# CONFIG_DTLK is not set
678# CONFIG_R3964 is not set 753# CONFIG_R3964 is not set
679# CONFIG_APPLICOM is not set 754# CONFIG_APPLICOM is not set
680
681#
682# Ftape, the floppy tape device driver
683#
684# CONFIG_AGP is not set 755# CONFIG_AGP is not set
685# CONFIG_DRM is not set 756# CONFIG_DRM is not set
686# CONFIG_RAW_DRIVER is not set 757# CONFIG_RAW_DRIVER is not set
@@ -689,7 +760,6 @@ CONFIG_GEN_RTC=y
689# TPM devices 760# TPM devices
690# 761#
691# CONFIG_TCG_TPM is not set 762# CONFIG_TCG_TPM is not set
692# CONFIG_TELCLOCK is not set
693 763
694# 764#
695# I2C support 765# I2C support
@@ -705,6 +775,7 @@ CONFIG_GEN_RTC=y
705# 775#
706# Dallas's 1-wire bus 776# Dallas's 1-wire bus
707# 777#
778# CONFIG_W1 is not set
708 779
709# 780#
710# Hardware Monitoring support 781# Hardware Monitoring support
@@ -713,17 +784,14 @@ CONFIG_HWMON=y
713# CONFIG_HWMON_VID is not set 784# CONFIG_HWMON_VID is not set
714# CONFIG_SENSORS_ABITUGURU is not set 785# CONFIG_SENSORS_ABITUGURU is not set
715# CONFIG_SENSORS_F71805F is not set 786# CONFIG_SENSORS_F71805F is not set
787# CONFIG_SENSORS_PC87427 is not set
788# CONFIG_SENSORS_VT1211 is not set
716# CONFIG_HWMON_DEBUG_CHIP is not set 789# CONFIG_HWMON_DEBUG_CHIP is not set
717 790
718# 791#
719# Misc devices
720#
721
722#
723# Multimedia devices 792# Multimedia devices
724# 793#
725# CONFIG_VIDEO_DEV is not set 794# CONFIG_VIDEO_DEV is not set
726CONFIG_VIDEO_V4L2=y
727 795
728# 796#
729# Digital Video Broadcasting Devices 797# Digital Video Broadcasting Devices
@@ -735,6 +803,7 @@ CONFIG_VIDEO_V4L2=y
735# 803#
736CONFIG_FIRMWARE_EDID=y 804CONFIG_FIRMWARE_EDID=y
737# CONFIG_FB is not set 805# CONFIG_FB is not set
806# CONFIG_FB_IBM_GXT4500 is not set
738# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 807# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
739 808
740# 809#
@@ -743,6 +812,11 @@ CONFIG_FIRMWARE_EDID=y
743# CONFIG_SOUND is not set 812# CONFIG_SOUND is not set
744 813
745# 814#
815# HID Devices
816#
817CONFIG_HID=y
818
819#
746# USB support 820# USB support
747# 821#
748CONFIG_USB_ARCH_HAS_HCD=y 822CONFIG_USB_ARCH_HAS_HCD=y
@@ -805,6 +879,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
805# 879#
806 880
807# 881#
882# Virtualization
883#
884
885#
808# File systems 886# File systems
809# 887#
810CONFIG_EXT2_FS=y 888CONFIG_EXT2_FS=y
@@ -814,6 +892,7 @@ CONFIG_EXT3_FS=y
814CONFIG_EXT3_FS_XATTR=y 892CONFIG_EXT3_FS_XATTR=y
815# CONFIG_EXT3_FS_POSIX_ACL is not set 893# CONFIG_EXT3_FS_POSIX_ACL is not set
816# CONFIG_EXT3_FS_SECURITY is not set 894# CONFIG_EXT3_FS_SECURITY is not set
895# CONFIG_EXT4DEV_FS is not set
817CONFIG_JBD=y 896CONFIG_JBD=y
818# CONFIG_JBD_DEBUG is not set 897# CONFIG_JBD_DEBUG is not set
819CONFIG_FS_MBCACHE=y 898CONFIG_FS_MBCACHE=y
@@ -821,6 +900,7 @@ CONFIG_FS_MBCACHE=y
821# CONFIG_JFS_FS is not set 900# CONFIG_JFS_FS is not set
822# CONFIG_FS_POSIX_ACL is not set 901# CONFIG_FS_POSIX_ACL is not set
823# CONFIG_XFS_FS is not set 902# CONFIG_XFS_FS is not set
903# CONFIG_GFS2_FS is not set
824# CONFIG_OCFS2_FS is not set 904# CONFIG_OCFS2_FS is not set
825# CONFIG_MINIX_FS is not set 905# CONFIG_MINIX_FS is not set
826# CONFIG_ROMFS_FS is not set 906# CONFIG_ROMFS_FS is not set
@@ -850,8 +930,10 @@ CONFIG_DNOTIFY=y
850# 930#
851CONFIG_PROC_FS=y 931CONFIG_PROC_FS=y
852CONFIG_PROC_KCORE=y 932CONFIG_PROC_KCORE=y
933CONFIG_PROC_SYSCTL=y
853CONFIG_SYSFS=y 934CONFIG_SYSFS=y
854CONFIG_TMPFS=y 935CONFIG_TMPFS=y
936# CONFIG_TMPFS_POSIX_ACL is not set
855# CONFIG_HUGETLB_PAGE is not set 937# CONFIG_HUGETLB_PAGE is not set
856CONFIG_RAMFS=y 938CONFIG_RAMFS=y
857# CONFIG_CONFIGFS_FS is not set 939# CONFIG_CONFIGFS_FS is not set
@@ -921,13 +1003,20 @@ CONFIG_MSDOS_PARTITION=y
921# CONFIG_NLS is not set 1003# CONFIG_NLS is not set
922 1004
923# 1005#
1006# Distributed Lock Manager
1007#
1008# CONFIG_DLM is not set
1009
1010#
924# Library routines 1011# Library routines
925# 1012#
1013CONFIG_BITREVERSE=y
926# CONFIG_CRC_CCITT is not set 1014# CONFIG_CRC_CCITT is not set
927# CONFIG_CRC16 is not set 1015# CONFIG_CRC16 is not set
928CONFIG_CRC32=y 1016CONFIG_CRC32=y
929# CONFIG_LIBCRC32C is not set 1017# CONFIG_LIBCRC32C is not set
930CONFIG_PLIST=y 1018CONFIG_PLIST=y
1019CONFIG_IOMAP_COPY=y
931 1020
932# 1021#
933# Instrumentation Support 1022# Instrumentation Support
@@ -938,12 +1027,14 @@ CONFIG_PLIST=y
938# Kernel hacking 1027# Kernel hacking
939# 1028#
940# CONFIG_PRINTK_TIME is not set 1029# CONFIG_PRINTK_TIME is not set
1030CONFIG_ENABLE_MUST_CHECK=y
941# CONFIG_MAGIC_SYSRQ is not set 1031# CONFIG_MAGIC_SYSRQ is not set
942# CONFIG_UNUSED_SYMBOLS is not set 1032# CONFIG_UNUSED_SYMBOLS is not set
1033# CONFIG_DEBUG_FS is not set
1034# CONFIG_HEADERS_CHECK is not set
943# CONFIG_DEBUG_KERNEL is not set 1035# CONFIG_DEBUG_KERNEL is not set
944CONFIG_LOG_BUF_SHIFT=14 1036CONFIG_LOG_BUF_SHIFT=14
945# CONFIG_DEBUG_FS is not set 1037# CONFIG_DEBUG_BUGVERBOSE is not set
946# CONFIG_UNWIND_INFO is not set
947# CONFIG_BOOTX_TEXT is not set 1038# CONFIG_BOOTX_TEXT is not set
948# CONFIG_PPC_EARLY_DEBUG is not set 1039# CONFIG_PPC_EARLY_DEBUG is not set
949 1040
@@ -957,7 +1048,3 @@ CONFIG_LOG_BUF_SHIFT=14
957# Cryptographic options 1048# Cryptographic options
958# 1049#
959# CONFIG_CRYPTO is not set 1050# CONFIG_CRYPTO is not set
960
961#
962# Hardware crypto devices
963#
diff --git a/arch/powerpc/configs/mpc834x_itx_defconfig b/arch/powerpc/configs/mpc834x_itx_defconfig
index 0561b73a918f..45757b613702 100644
--- a/arch/powerpc/configs/mpc834x_itx_defconfig
+++ b/arch/powerpc/configs/mpc834x_itx_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18 3# Linux kernel version: 2.6.20-rc5
4# Mon Sep 25 19:41:14 2006 4# Mon Jan 22 22:23:43 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -22,13 +23,13 @@ CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
24CONFIG_AUDIT_ARCH=y 25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
25CONFIG_DEFAULT_UIMAGE=y 27CONFIG_DEFAULT_UIMAGE=y
26 28
27# 29#
28# Processor support 30# Processor support
29# 31#
30# CONFIG_CLASSIC32 is not set 32# CONFIG_CLASSIC32 is not set
31# CONFIG_PPC_52xx is not set
32# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
33CONFIG_PPC_83xx=y 34CONFIG_PPC_83xx=y
34# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -40,6 +41,8 @@ CONFIG_PPC_83xx=y
40CONFIG_6xx=y 41CONFIG_6xx=y
41CONFIG_83xx=y 42CONFIG_83xx=y
42CONFIG_PPC_FPU=y 43CONFIG_PPC_FPU=y
44# CONFIG_PPC_DCR_NATIVE is not set
45# CONFIG_PPC_DCR_MMIO is not set
43CONFIG_PPC_STD_MMU=y 46CONFIG_PPC_STD_MMU=y
44CONFIG_PPC_STD_MMU_32=y 47CONFIG_PPC_STD_MMU_32=y
45# CONFIG_SMP is not set 48# CONFIG_SMP is not set
@@ -59,16 +62,20 @@ CONFIG_LOCALVERSION=""
59CONFIG_LOCALVERSION_AUTO=y 62CONFIG_LOCALVERSION_AUTO=y
60CONFIG_SWAP=y 63CONFIG_SWAP=y
61CONFIG_SYSVIPC=y 64CONFIG_SYSVIPC=y
65# CONFIG_IPC_NS is not set
62# CONFIG_POSIX_MQUEUE is not set 66# CONFIG_POSIX_MQUEUE is not set
63# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
64# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
69# CONFIG_UTS_NS is not set
65# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
66# CONFIG_IKCONFIG is not set 71# CONFIG_IKCONFIG is not set
72CONFIG_SYSFS_DEPRECATED=y
67# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
68CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
70CONFIG_EMBEDDED=y
71CONFIG_SYSCTL=y 76CONFIG_SYSCTL=y
77CONFIG_EMBEDDED=y
78CONFIG_SYSCTL_SYSCALL=y
72# CONFIG_KALLSYMS is not set 79# CONFIG_KALLSYMS is not set
73CONFIG_HOTPLUG=y 80CONFIG_HOTPLUG=y
74CONFIG_PRINTK=y 81CONFIG_PRINTK=y
@@ -98,6 +105,7 @@ CONFIG_MODULE_UNLOAD=y
98# 105#
99# Block layer 106# Block layer
100# 107#
108CONFIG_BLOCK=y
101# CONFIG_LBD is not set 109# CONFIG_LBD is not set
102# CONFIG_BLK_DEV_IO_TRACE is not set 110# CONFIG_BLK_DEV_IO_TRACE is not set
103# CONFIG_LSF is not set 111# CONFIG_LSF is not set
@@ -120,8 +128,10 @@ CONFIG_PPC_GEN550=y
120# 128#
121# Platform support 129# Platform support
122# 130#
131# CONFIG_MPC832x_MDS is not set
123# CONFIG_MPC834x_SYS is not set 132# CONFIG_MPC834x_SYS is not set
124CONFIG_MPC834x_ITX=y 133CONFIG_MPC834x_ITX=y
134# CONFIG_MPC8360E_PB is not set
125CONFIG_MPC834x=y 135CONFIG_MPC834x=y
126# CONFIG_MPIC is not set 136# CONFIG_MPIC is not set
127 137
@@ -131,6 +141,7 @@ CONFIG_MPC834x=y
131# CONFIG_HIGHMEM is not set 141# CONFIG_HIGHMEM is not set
132# CONFIG_HZ_100 is not set 142# CONFIG_HZ_100 is not set
133CONFIG_HZ_250=y 143CONFIG_HZ_250=y
144# CONFIG_HZ_300 is not set
134# CONFIG_HZ_1000 is not set 145# CONFIG_HZ_1000 is not set
135CONFIG_HZ=250 146CONFIG_HZ=250
136CONFIG_PREEMPT_NONE=y 147CONFIG_PREEMPT_NONE=y
@@ -138,8 +149,10 @@ CONFIG_PREEMPT_NONE=y
138# CONFIG_PREEMPT is not set 149# CONFIG_PREEMPT is not set
139CONFIG_BINFMT_ELF=y 150CONFIG_BINFMT_ELF=y
140# CONFIG_BINFMT_MISC is not set 151# CONFIG_BINFMT_MISC is not set
152CONFIG_MATH_EMULATION=y
141CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 153CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
142CONFIG_ARCH_FLATMEM_ENABLE=y 154CONFIG_ARCH_FLATMEM_ENABLE=y
155CONFIG_ARCH_POPULATES_NODE_MAP=y
143CONFIG_SELECT_MEMORY_MODEL=y 156CONFIG_SELECT_MEMORY_MODEL=y
144CONFIG_FLATMEM_MANUAL=y 157CONFIG_FLATMEM_MANUAL=y
145# CONFIG_DISCONTIGMEM_MANUAL is not set 158# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -206,6 +219,7 @@ CONFIG_PACKET=y
206CONFIG_UNIX=y 219CONFIG_UNIX=y
207CONFIG_XFRM=y 220CONFIG_XFRM=y
208# CONFIG_XFRM_USER is not set 221# CONFIG_XFRM_USER is not set
222# CONFIG_XFRM_SUB_POLICY is not set
209# CONFIG_NET_KEY is not set 223# CONFIG_NET_KEY is not set
210CONFIG_INET=y 224CONFIG_INET=y
211CONFIG_IP_MULTICAST=y 225CONFIG_IP_MULTICAST=y
@@ -227,10 +241,13 @@ CONFIG_SYN_COOKIES=y
227# CONFIG_INET_TUNNEL is not set 241# CONFIG_INET_TUNNEL is not set
228CONFIG_INET_XFRM_MODE_TRANSPORT=y 242CONFIG_INET_XFRM_MODE_TRANSPORT=y
229CONFIG_INET_XFRM_MODE_TUNNEL=y 243CONFIG_INET_XFRM_MODE_TUNNEL=y
244CONFIG_INET_XFRM_MODE_BEET=y
230CONFIG_INET_DIAG=y 245CONFIG_INET_DIAG=y
231CONFIG_INET_TCP_DIAG=y 246CONFIG_INET_TCP_DIAG=y
232# CONFIG_TCP_CONG_ADVANCED is not set 247# CONFIG_TCP_CONG_ADVANCED is not set
233CONFIG_TCP_CONG_BIC=y 248CONFIG_TCP_CONG_CUBIC=y
249CONFIG_DEFAULT_TCP_CONG="cubic"
250# CONFIG_TCP_MD5SIG is not set
234# CONFIG_IPV6 is not set 251# CONFIG_IPV6 is not set
235# CONFIG_INET6_XFRM_TUNNEL is not set 252# CONFIG_INET6_XFRM_TUNNEL is not set
236# CONFIG_INET6_TUNNEL is not set 253# CONFIG_INET6_TUNNEL is not set
@@ -411,9 +428,16 @@ CONFIG_BLK_DEV_INITRD=y
411# CONFIG_ATA_OVER_ETH is not set 428# CONFIG_ATA_OVER_ETH is not set
412 429
413# 430#
431# Misc devices
432#
433# CONFIG_SGI_IOC4 is not set
434# CONFIG_TIFM_CORE is not set
435
436#
414# ATA/ATAPI/MFM/RLL support 437# ATA/ATAPI/MFM/RLL support
415# 438#
416CONFIG_IDE=y 439CONFIG_IDE=y
440CONFIG_IDE_MAX_HWIFS=4
417# CONFIG_BLK_DEV_IDE is not set 441# CONFIG_BLK_DEV_IDE is not set
418# CONFIG_BLK_DEV_HD_ONLY is not set 442# CONFIG_BLK_DEV_HD_ONLY is not set
419# CONFIG_BLK_DEV_HD is not set 443# CONFIG_BLK_DEV_HD is not set
@@ -423,6 +447,8 @@ CONFIG_IDE=y
423# 447#
424# CONFIG_RAID_ATTRS is not set 448# CONFIG_RAID_ATTRS is not set
425CONFIG_SCSI=y 449CONFIG_SCSI=y
450# CONFIG_SCSI_TGT is not set
451# CONFIG_SCSI_NETLINK is not set
426CONFIG_SCSI_PROC_FS=y 452CONFIG_SCSI_PROC_FS=y
427 453
428# 454#
@@ -441,14 +467,16 @@ CONFIG_CHR_DEV_SG=y
441# CONFIG_SCSI_MULTI_LUN is not set 467# CONFIG_SCSI_MULTI_LUN is not set
442# CONFIG_SCSI_CONSTANTS is not set 468# CONFIG_SCSI_CONSTANTS is not set
443# CONFIG_SCSI_LOGGING is not set 469# CONFIG_SCSI_LOGGING is not set
470# CONFIG_SCSI_SCAN_ASYNC is not set
444 471
445# 472#
446# SCSI Transport Attributes 473# SCSI Transports
447# 474#
448CONFIG_SCSI_SPI_ATTRS=y 475CONFIG_SCSI_SPI_ATTRS=y
449# CONFIG_SCSI_FC_ATTRS is not set 476# CONFIG_SCSI_FC_ATTRS is not set
450# CONFIG_SCSI_ISCSI_ATTRS is not set 477# CONFIG_SCSI_ISCSI_ATTRS is not set
451# CONFIG_SCSI_SAS_ATTRS is not set 478# CONFIG_SCSI_SAS_ATTRS is not set
479# CONFIG_SCSI_SAS_LIBSAS is not set
452 480
453# 481#
454# SCSI low-level drivers 482# SCSI low-level drivers
@@ -461,27 +489,13 @@ CONFIG_SCSI_SPI_ATTRS=y
461# CONFIG_SCSI_AIC7XXX is not set 489# CONFIG_SCSI_AIC7XXX is not set
462# CONFIG_SCSI_AIC7XXX_OLD is not set 490# CONFIG_SCSI_AIC7XXX_OLD is not set
463# CONFIG_SCSI_AIC79XX is not set 491# CONFIG_SCSI_AIC79XX is not set
492# CONFIG_SCSI_AIC94XX is not set
464# CONFIG_SCSI_DPT_I2O is not set 493# CONFIG_SCSI_DPT_I2O is not set
494# CONFIG_SCSI_ARCMSR is not set
465# CONFIG_MEGARAID_NEWGEN is not set 495# CONFIG_MEGARAID_NEWGEN is not set
466# CONFIG_MEGARAID_LEGACY is not set 496# CONFIG_MEGARAID_LEGACY is not set
467# CONFIG_MEGARAID_SAS is not set 497# CONFIG_MEGARAID_SAS is not set
468CONFIG_ATA=y
469# CONFIG_SATA_AHCI is not set
470# CONFIG_SATA_SVW is not set
471# CONFIG_SCSI_ATA_PIIX is not set
472# CONFIG_SATA_MV is not set
473# CONFIG_SATA_NV is not set
474# CONFIG_SCSI_PDC_ADMA is not set
475# CONFIG_SCSI_HPTIOP is not set 498# CONFIG_SCSI_HPTIOP is not set
476# CONFIG_SATA_QSTOR is not set
477# CONFIG_SATA_PROMISE is not set
478# CONFIG_SATA_SX4 is not set
479CONFIG_SATA_SIL=y
480# CONFIG_SATA_SIL24 is not set
481# CONFIG_SATA_SIS is not set
482# CONFIG_SATA_ULI is not set
483# CONFIG_SATA_VIA is not set
484# CONFIG_SATA_VITESSE is not set
485# CONFIG_SCSI_BUSLOGIC is not set 499# CONFIG_SCSI_BUSLOGIC is not set
486# CONFIG_SCSI_DMX3191D is not set 500# CONFIG_SCSI_DMX3191D is not set
487# CONFIG_SCSI_EATA is not set 501# CONFIG_SCSI_EATA is not set
@@ -490,15 +504,73 @@ CONFIG_SATA_SIL=y
490# CONFIG_SCSI_IPS is not set 504# CONFIG_SCSI_IPS is not set
491# CONFIG_SCSI_INITIO is not set 505# CONFIG_SCSI_INITIO is not set
492# CONFIG_SCSI_INIA100 is not set 506# CONFIG_SCSI_INIA100 is not set
507# CONFIG_SCSI_STEX is not set
493# CONFIG_SCSI_SYM53C8XX_2 is not set 508# CONFIG_SCSI_SYM53C8XX_2 is not set
494# CONFIG_SCSI_IPR is not set 509# CONFIG_SCSI_IPR is not set
495# CONFIG_SCSI_QLOGIC_1280 is not set 510# CONFIG_SCSI_QLOGIC_1280 is not set
496# CONFIG_SCSI_QLA_FC is not set 511# CONFIG_SCSI_QLA_FC is not set
512# CONFIG_SCSI_QLA_ISCSI is not set
497# CONFIG_SCSI_LPFC is not set 513# CONFIG_SCSI_LPFC is not set
498# CONFIG_SCSI_DC395x is not set 514# CONFIG_SCSI_DC395x is not set
499# CONFIG_SCSI_DC390T is not set 515# CONFIG_SCSI_DC390T is not set
500# CONFIG_SCSI_NSP32 is not set 516# CONFIG_SCSI_NSP32 is not set
501# CONFIG_SCSI_DEBUG is not set 517# CONFIG_SCSI_DEBUG is not set
518# CONFIG_SCSI_SRP is not set
519
520#
521# Serial ATA (prod) and Parallel ATA (experimental) drivers
522#
523CONFIG_ATA=y
524# CONFIG_SATA_AHCI is not set
525# CONFIG_SATA_SVW is not set
526# CONFIG_ATA_PIIX is not set
527# CONFIG_SATA_MV is not set
528# CONFIG_SATA_NV is not set
529# CONFIG_PDC_ADMA is not set
530# CONFIG_SATA_QSTOR is not set
531# CONFIG_SATA_PROMISE is not set
532# CONFIG_SATA_SX4 is not set
533CONFIG_SATA_SIL=y
534# CONFIG_SATA_SIL24 is not set
535# CONFIG_SATA_SIS is not set
536# CONFIG_SATA_ULI is not set
537# CONFIG_SATA_VIA is not set
538# CONFIG_SATA_VITESSE is not set
539# CONFIG_PATA_ALI is not set
540# CONFIG_PATA_AMD is not set
541# CONFIG_PATA_ARTOP is not set
542# CONFIG_PATA_ATIIXP is not set
543# CONFIG_PATA_CMD64X is not set
544# CONFIG_PATA_CS5520 is not set
545# CONFIG_PATA_CS5530 is not set
546# CONFIG_PATA_CYPRESS is not set
547# CONFIG_PATA_EFAR is not set
548# CONFIG_ATA_GENERIC is not set
549# CONFIG_PATA_HPT366 is not set
550# CONFIG_PATA_HPT37X is not set
551# CONFIG_PATA_HPT3X2N is not set
552# CONFIG_PATA_HPT3X3 is not set
553# CONFIG_PATA_IT821X is not set
554# CONFIG_PATA_JMICRON is not set
555# CONFIG_PATA_TRIFLEX is not set
556# CONFIG_PATA_MARVELL is not set
557# CONFIG_PATA_MPIIX is not set
558# CONFIG_PATA_OLDPIIX is not set
559# CONFIG_PATA_NETCELL is not set
560# CONFIG_PATA_NS87410 is not set
561# CONFIG_PATA_OPTI is not set
562# CONFIG_PATA_OPTIDMA is not set
563# CONFIG_PATA_PDC_OLD is not set
564# CONFIG_PATA_RADISYS is not set
565# CONFIG_PATA_RZ1000 is not set
566# CONFIG_PATA_SC1200 is not set
567# CONFIG_PATA_SERVERWORKS is not set
568# CONFIG_PATA_PDC2027X is not set
569# CONFIG_PATA_SIL680 is not set
570# CONFIG_PATA_SIS is not set
571# CONFIG_PATA_VIA is not set
572# CONFIG_PATA_WINBOND is not set
573# CONFIG_PATA_PLATFORM is not set
502 574
503# 575#
504# Multi-device support (RAID and LVM) 576# Multi-device support (RAID and LVM)
@@ -535,6 +607,7 @@ CONFIG_MD_RAID1=y
535# 607#
536# Macintosh device drivers 608# Macintosh device drivers
537# 609#
610# CONFIG_MAC_EMUMOUSEBTN is not set
538# CONFIG_WINDFARM is not set 611# CONFIG_WINDFARM is not set
539 612
540# 613#
@@ -566,6 +639,7 @@ CONFIG_PHYLIB=y
566CONFIG_CICADA_PHY=y 639CONFIG_CICADA_PHY=y
567# CONFIG_VITESSE_PHY is not set 640# CONFIG_VITESSE_PHY is not set
568# CONFIG_SMSC_PHY is not set 641# CONFIG_SMSC_PHY is not set
642# CONFIG_BROADCOM_PHY is not set
569# CONFIG_FIXED_PHY is not set 643# CONFIG_FIXED_PHY is not set
570 644
571# 645#
@@ -622,6 +696,7 @@ CONFIG_E100=y
622# CONFIG_BNX2 is not set 696# CONFIG_BNX2 is not set
623CONFIG_GIANFAR=y 697CONFIG_GIANFAR=y
624CONFIG_GFAR_NAPI=y 698CONFIG_GFAR_NAPI=y
699# CONFIG_QLA3XXX is not set
625 700
626# 701#
627# Ethernet (10000 Mbit) 702# Ethernet (10000 Mbit)
@@ -630,6 +705,7 @@ CONFIG_GFAR_NAPI=y
630# CONFIG_IXGB is not set 705# CONFIG_IXGB is not set
631# CONFIG_S2IO is not set 706# CONFIG_S2IO is not set
632# CONFIG_MYRI10GE is not set 707# CONFIG_MYRI10GE is not set
708# CONFIG_NETXEN_NIC is not set
633 709
634# 710#
635# Token Ring devices 711# Token Ring devices
@@ -669,6 +745,7 @@ CONFIG_GFAR_NAPI=y
669# Input device support 745# Input device support
670# 746#
671CONFIG_INPUT=y 747CONFIG_INPUT=y
748# CONFIG_INPUT_FF_MEMLESS is not set
672 749
673# 750#
674# Userland interfaces 751# Userland interfaces
@@ -713,6 +790,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
713# 790#
714# Non-8250 serial port support 791# Non-8250 serial port support
715# 792#
793# CONFIG_SERIAL_UARTLITE is not set
716CONFIG_SERIAL_CORE=y 794CONFIG_SERIAL_CORE=y
717CONFIG_SERIAL_CORE_CONSOLE=y 795CONFIG_SERIAL_CORE_CONSOLE=y
718# CONFIG_SERIAL_JSM is not set 796# CONFIG_SERIAL_JSM is not set
@@ -753,10 +831,6 @@ CONFIG_HW_RANDOM=y
753# CONFIG_DTLK is not set 831# CONFIG_DTLK is not set
754# CONFIG_R3964 is not set 832# CONFIG_R3964 is not set
755# CONFIG_APPLICOM is not set 833# CONFIG_APPLICOM is not set
756
757#
758# Ftape, the floppy tape device driver
759#
760# CONFIG_AGP is not set 834# CONFIG_AGP is not set
761# CONFIG_DRM is not set 835# CONFIG_DRM is not set
762# CONFIG_RAW_DRIVER is not set 836# CONFIG_RAW_DRIVER is not set
@@ -765,7 +839,6 @@ CONFIG_HW_RANDOM=y
765# TPM devices 839# TPM devices
766# 840#
767# CONFIG_TCG_TPM is not set 841# CONFIG_TCG_TPM is not set
768# CONFIG_TELCLOCK is not set
769 842
770# 843#
771# I2C support 844# I2C support
@@ -842,6 +915,7 @@ CONFIG_SPI_MPC83xx=y
842# 915#
843# Dallas's 1-wire bus 916# Dallas's 1-wire bus
844# 917#
918# CONFIG_W1 is not set
845 919
846# 920#
847# Hardware Monitoring support 921# Hardware Monitoring support
@@ -876,29 +950,27 @@ CONFIG_HWMON=y
876# CONFIG_SENSORS_LM92 is not set 950# CONFIG_SENSORS_LM92 is not set
877# CONFIG_SENSORS_MAX1619 is not set 951# CONFIG_SENSORS_MAX1619 is not set
878# CONFIG_SENSORS_PC87360 is not set 952# CONFIG_SENSORS_PC87360 is not set
953# CONFIG_SENSORS_PC87427 is not set
879# CONFIG_SENSORS_SIS5595 is not set 954# CONFIG_SENSORS_SIS5595 is not set
880# CONFIG_SENSORS_SMSC47M1 is not set 955# CONFIG_SENSORS_SMSC47M1 is not set
881# CONFIG_SENSORS_SMSC47M192 is not set 956# CONFIG_SENSORS_SMSC47M192 is not set
882# CONFIG_SENSORS_SMSC47B397 is not set 957# CONFIG_SENSORS_SMSC47B397 is not set
883# CONFIG_SENSORS_VIA686A is not set 958# CONFIG_SENSORS_VIA686A is not set
959# CONFIG_SENSORS_VT1211 is not set
884# CONFIG_SENSORS_VT8231 is not set 960# CONFIG_SENSORS_VT8231 is not set
885# CONFIG_SENSORS_W83781D is not set 961# CONFIG_SENSORS_W83781D is not set
886# CONFIG_SENSORS_W83791D is not set 962# CONFIG_SENSORS_W83791D is not set
887# CONFIG_SENSORS_W83792D is not set 963# CONFIG_SENSORS_W83792D is not set
964# CONFIG_SENSORS_W83793 is not set
888# CONFIG_SENSORS_W83L785TS is not set 965# CONFIG_SENSORS_W83L785TS is not set
889# CONFIG_SENSORS_W83627HF is not set 966# CONFIG_SENSORS_W83627HF is not set
890# CONFIG_SENSORS_W83627EHF is not set 967# CONFIG_SENSORS_W83627EHF is not set
891# CONFIG_HWMON_DEBUG_CHIP is not set 968# CONFIG_HWMON_DEBUG_CHIP is not set
892 969
893# 970#
894# Misc devices
895#
896
897#
898# Multimedia devices 971# Multimedia devices
899# 972#
900# CONFIG_VIDEO_DEV is not set 973# CONFIG_VIDEO_DEV is not set
901CONFIG_VIDEO_V4L2=y
902 974
903# 975#
904# Digital Video Broadcasting Devices 976# Digital Video Broadcasting Devices
@@ -911,6 +983,7 @@ CONFIG_VIDEO_V4L2=y
911# 983#
912CONFIG_FIRMWARE_EDID=y 984CONFIG_FIRMWARE_EDID=y
913# CONFIG_FB is not set 985# CONFIG_FB is not set
986# CONFIG_FB_IBM_GXT4500 is not set
914# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 987# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
915 988
916# 989#
@@ -919,6 +992,11 @@ CONFIG_FIRMWARE_EDID=y
919# CONFIG_SOUND is not set 992# CONFIG_SOUND is not set
920 993
921# 994#
995# HID Devices
996#
997CONFIG_HID=y
998
999#
922# USB support 1000# USB support
923# 1001#
924CONFIG_USB_ARCH_HAS_HCD=y 1002CONFIG_USB_ARCH_HAS_HCD=y
@@ -933,6 +1011,7 @@ CONFIG_USB=y
933CONFIG_USB_DEVICEFS=y 1011CONFIG_USB_DEVICEFS=y
934# CONFIG_USB_BANDWIDTH is not set 1012# CONFIG_USB_BANDWIDTH is not set
935# CONFIG_USB_DYNAMIC_MINORS is not set 1013# CONFIG_USB_DYNAMIC_MINORS is not set
1014# CONFIG_USB_MULTITHREAD_PROBE is not set
936# CONFIG_USB_OTG is not set 1015# CONFIG_USB_OTG is not set
937 1016
938# 1017#
@@ -972,6 +1051,7 @@ CONFIG_USB_STORAGE=y
972# CONFIG_USB_STORAGE_SDDR55 is not set 1051# CONFIG_USB_STORAGE_SDDR55 is not set
973# CONFIG_USB_STORAGE_JUMPSHOT is not set 1052# CONFIG_USB_STORAGE_JUMPSHOT is not set
974# CONFIG_USB_STORAGE_ALAUDA is not set 1053# CONFIG_USB_STORAGE_ALAUDA is not set
1054# CONFIG_USB_STORAGE_KARMA is not set
975# CONFIG_USB_LIBUSUAL is not set 1055# CONFIG_USB_LIBUSUAL is not set
976 1056
977# 1057#
@@ -1010,6 +1090,7 @@ CONFIG_USB_STORAGE=y
1010# CONFIG_USB_KAWETH is not set 1090# CONFIG_USB_KAWETH is not set
1011# CONFIG_USB_PEGASUS is not set 1091# CONFIG_USB_PEGASUS is not set
1012# CONFIG_USB_RTL8150 is not set 1092# CONFIG_USB_RTL8150 is not set
1093# CONFIG_USB_USBNET_MII is not set
1013# CONFIG_USB_USBNET is not set 1094# CONFIG_USB_USBNET is not set
1014CONFIG_USB_MON=y 1095CONFIG_USB_MON=y
1015 1096
@@ -1027,6 +1108,7 @@ CONFIG_USB_MON=y
1027# 1108#
1028# CONFIG_USB_EMI62 is not set 1109# CONFIG_USB_EMI62 is not set
1029# CONFIG_USB_EMI26 is not set 1110# CONFIG_USB_EMI26 is not set
1111# CONFIG_USB_ADUTUX is not set
1030# CONFIG_USB_AUERSWALD is not set 1112# CONFIG_USB_AUERSWALD is not set
1031# CONFIG_USB_RIO500 is not set 1113# CONFIG_USB_RIO500 is not set
1032# CONFIG_USB_LEGOTOWER is not set 1114# CONFIG_USB_LEGOTOWER is not set
@@ -1034,12 +1116,13 @@ CONFIG_USB_MON=y
1034# CONFIG_USB_LED is not set 1116# CONFIG_USB_LED is not set
1035# CONFIG_USB_CYPRESS_CY7C63 is not set 1117# CONFIG_USB_CYPRESS_CY7C63 is not set
1036# CONFIG_USB_CYTHERM is not set 1118# CONFIG_USB_CYTHERM is not set
1037# CONFIG_USB_PHIDGETKIT is not set 1119# CONFIG_USB_PHIDGET is not set
1038# CONFIG_USB_PHIDGETSERVO is not set
1039# CONFIG_USB_IDMOUSE is not set 1120# CONFIG_USB_IDMOUSE is not set
1121# CONFIG_USB_FTDI_ELAN is not set
1040# CONFIG_USB_APPLEDISPLAY is not set 1122# CONFIG_USB_APPLEDISPLAY is not set
1041# CONFIG_USB_SISUSBVGA is not set 1123# CONFIG_USB_SISUSBVGA is not set
1042# CONFIG_USB_LD is not set 1124# CONFIG_USB_LD is not set
1125# CONFIG_USB_TRANCEVIBRATOR is not set
1043# CONFIG_USB_TEST is not set 1126# CONFIG_USB_TEST is not set
1044 1127
1045# 1128#
@@ -1067,6 +1150,7 @@ CONFIG_USB_ETH_RNDIS=y
1067# CONFIG_USB_GADGETFS is not set 1150# CONFIG_USB_GADGETFS is not set
1068# CONFIG_USB_FILE_STORAGE is not set 1151# CONFIG_USB_FILE_STORAGE is not set
1069# CONFIG_USB_G_SERIAL is not set 1152# CONFIG_USB_G_SERIAL is not set
1153# CONFIG_USB_MIDI_GADGET is not set
1070 1154
1071# 1155#
1072# MMC/SD Card support 1156# MMC/SD Card support
@@ -1102,6 +1186,7 @@ CONFIG_RTC_LIB=y
1102CONFIG_RTC_CLASS=y 1186CONFIG_RTC_CLASS=y
1103CONFIG_RTC_HCTOSYS=y 1187CONFIG_RTC_HCTOSYS=y
1104CONFIG_RTC_HCTOSYS_DEVICE="rtc0" 1188CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1189# CONFIG_RTC_DEBUG is not set
1105 1190
1106# 1191#
1107# RTC interfaces 1192# RTC interfaces
@@ -1145,6 +1230,10 @@ CONFIG_NET_DMA=y
1145CONFIG_INTEL_IOATDMA=y 1230CONFIG_INTEL_IOATDMA=y
1146 1231
1147# 1232#
1233# Virtualization
1234#
1235
1236#
1148# File systems 1237# File systems
1149# 1238#
1150CONFIG_EXT2_FS=y 1239CONFIG_EXT2_FS=y
@@ -1154,6 +1243,7 @@ CONFIG_EXT3_FS=y
1154CONFIG_EXT3_FS_XATTR=y 1243CONFIG_EXT3_FS_XATTR=y
1155# CONFIG_EXT3_FS_POSIX_ACL is not set 1244# CONFIG_EXT3_FS_POSIX_ACL is not set
1156# CONFIG_EXT3_FS_SECURITY is not set 1245# CONFIG_EXT3_FS_SECURITY is not set
1246# CONFIG_EXT4DEV_FS is not set
1157CONFIG_JBD=y 1247CONFIG_JBD=y
1158# CONFIG_JBD_DEBUG is not set 1248# CONFIG_JBD_DEBUG is not set
1159CONFIG_FS_MBCACHE=y 1249CONFIG_FS_MBCACHE=y
@@ -1161,6 +1251,7 @@ CONFIG_FS_MBCACHE=y
1161# CONFIG_JFS_FS is not set 1251# CONFIG_JFS_FS is not set
1162# CONFIG_FS_POSIX_ACL is not set 1252# CONFIG_FS_POSIX_ACL is not set
1163# CONFIG_XFS_FS is not set 1253# CONFIG_XFS_FS is not set
1254# CONFIG_GFS2_FS is not set
1164# CONFIG_OCFS2_FS is not set 1255# CONFIG_OCFS2_FS is not set
1165# CONFIG_MINIX_FS is not set 1256# CONFIG_MINIX_FS is not set
1166# CONFIG_ROMFS_FS is not set 1257# CONFIG_ROMFS_FS is not set
@@ -1190,8 +1281,10 @@ CONFIG_DNOTIFY=y
1190# 1281#
1191CONFIG_PROC_FS=y 1282CONFIG_PROC_FS=y
1192CONFIG_PROC_KCORE=y 1283CONFIG_PROC_KCORE=y
1284CONFIG_PROC_SYSCTL=y
1193CONFIG_SYSFS=y 1285CONFIG_SYSFS=y
1194CONFIG_TMPFS=y 1286CONFIG_TMPFS=y
1287# CONFIG_TMPFS_POSIX_ACL is not set
1195# CONFIG_HUGETLB_PAGE is not set 1288# CONFIG_HUGETLB_PAGE is not set
1196CONFIG_RAMFS=y 1289CONFIG_RAMFS=y
1197# CONFIG_CONFIGFS_FS is not set 1290# CONFIG_CONFIGFS_FS is not set
@@ -1206,7 +1299,6 @@ CONFIG_RAMFS=y
1206# CONFIG_BEFS_FS is not set 1299# CONFIG_BEFS_FS is not set
1207# CONFIG_BFS_FS is not set 1300# CONFIG_BFS_FS is not set
1208# CONFIG_EFS_FS is not set 1301# CONFIG_EFS_FS is not set
1209# CONFIG_JFFS_FS is not set
1210# CONFIG_JFFS2_FS is not set 1302# CONFIG_JFFS2_FS is not set
1211# CONFIG_CRAMFS is not set 1303# CONFIG_CRAMFS is not set
1212# CONFIG_VXFS_FS is not set 1304# CONFIG_VXFS_FS is not set
@@ -1249,6 +1341,10 @@ CONFIG_PARTITION_ADVANCED=y
1249# CONFIG_ATARI_PARTITION is not set 1341# CONFIG_ATARI_PARTITION is not set
1250# CONFIG_MAC_PARTITION is not set 1342# CONFIG_MAC_PARTITION is not set
1251CONFIG_MSDOS_PARTITION=y 1343CONFIG_MSDOS_PARTITION=y
1344# CONFIG_BSD_DISKLABEL is not set
1345# CONFIG_MINIX_SUBPARTITION is not set
1346# CONFIG_SOLARIS_X86_PARTITION is not set
1347# CONFIG_UNIXWARE_DISKLABEL is not set
1252# CONFIG_LDM_PARTITION is not set 1348# CONFIG_LDM_PARTITION is not set
1253# CONFIG_SGI_PARTITION is not set 1349# CONFIG_SGI_PARTITION is not set
1254# CONFIG_ULTRIX_PARTITION is not set 1350# CONFIG_ULTRIX_PARTITION is not set
@@ -1262,13 +1358,20 @@ CONFIG_MSDOS_PARTITION=y
1262# CONFIG_NLS is not set 1358# CONFIG_NLS is not set
1263 1359
1264# 1360#
1361# Distributed Lock Manager
1362#
1363# CONFIG_DLM is not set
1364
1365#
1265# Library routines 1366# Library routines
1266# 1367#
1368CONFIG_BITREVERSE=y
1267# CONFIG_CRC_CCITT is not set 1369# CONFIG_CRC_CCITT is not set
1268# CONFIG_CRC16 is not set 1370# CONFIG_CRC16 is not set
1269CONFIG_CRC32=y 1371CONFIG_CRC32=y
1270# CONFIG_LIBCRC32C is not set 1372# CONFIG_LIBCRC32C is not set
1271CONFIG_PLIST=y 1373CONFIG_PLIST=y
1374CONFIG_IOMAP_COPY=y
1272 1375
1273# 1376#
1274# Instrumentation Support 1377# Instrumentation Support
@@ -1279,8 +1382,11 @@ CONFIG_PLIST=y
1279# Kernel hacking 1382# Kernel hacking
1280# 1383#
1281# CONFIG_PRINTK_TIME is not set 1384# CONFIG_PRINTK_TIME is not set
1385CONFIG_ENABLE_MUST_CHECK=y
1282# CONFIG_MAGIC_SYSRQ is not set 1386# CONFIG_MAGIC_SYSRQ is not set
1283# CONFIG_UNUSED_SYMBOLS is not set 1387# CONFIG_UNUSED_SYMBOLS is not set
1388# CONFIG_DEBUG_FS is not set
1389# CONFIG_HEADERS_CHECK is not set
1284CONFIG_DEBUG_KERNEL=y 1390CONFIG_DEBUG_KERNEL=y
1285CONFIG_LOG_BUF_SHIFT=14 1391CONFIG_LOG_BUF_SHIFT=14
1286CONFIG_DETECT_SOFTLOCKUP=y 1392CONFIG_DETECT_SOFTLOCKUP=y
@@ -1294,9 +1400,10 @@ CONFIG_DETECT_SOFTLOCKUP=y
1294# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1400# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1295# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1401# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1296# CONFIG_DEBUG_KOBJECT is not set 1402# CONFIG_DEBUG_KOBJECT is not set
1403# CONFIG_DEBUG_BUGVERBOSE is not set
1297# CONFIG_DEBUG_INFO is not set 1404# CONFIG_DEBUG_INFO is not set
1298# CONFIG_DEBUG_FS is not set
1299# CONFIG_DEBUG_VM is not set 1405# CONFIG_DEBUG_VM is not set
1406# CONFIG_DEBUG_LIST is not set
1300CONFIG_FORCED_INLINING=y 1407CONFIG_FORCED_INLINING=y
1301# CONFIG_RCU_TORTURE_TEST is not set 1408# CONFIG_RCU_TORTURE_TEST is not set
1302# CONFIG_DEBUGGER is not set 1409# CONFIG_DEBUGGER is not set
@@ -1316,8 +1423,10 @@ CONFIG_FORCED_INLINING=y
1316# 1423#
1317CONFIG_CRYPTO=y 1424CONFIG_CRYPTO=y
1318CONFIG_CRYPTO_ALGAPI=y 1425CONFIG_CRYPTO_ALGAPI=y
1319# CONFIG_CRYPTO_MANAGER is not set 1426CONFIG_CRYPTO_BLKCIPHER=y
1427CONFIG_CRYPTO_MANAGER=y
1320# CONFIG_CRYPTO_HMAC is not set 1428# CONFIG_CRYPTO_HMAC is not set
1429# CONFIG_CRYPTO_XCBC is not set
1321# CONFIG_CRYPTO_NULL is not set 1430# CONFIG_CRYPTO_NULL is not set
1322# CONFIG_CRYPTO_MD4 is not set 1431# CONFIG_CRYPTO_MD4 is not set
1323CONFIG_CRYPTO_MD5=y 1432CONFIG_CRYPTO_MD5=y
@@ -1326,8 +1435,10 @@ CONFIG_CRYPTO_MD5=y
1326# CONFIG_CRYPTO_SHA512 is not set 1435# CONFIG_CRYPTO_SHA512 is not set
1327# CONFIG_CRYPTO_WP512 is not set 1436# CONFIG_CRYPTO_WP512 is not set
1328# CONFIG_CRYPTO_TGR192 is not set 1437# CONFIG_CRYPTO_TGR192 is not set
1438# CONFIG_CRYPTO_GF128MUL is not set
1329# CONFIG_CRYPTO_ECB is not set 1439# CONFIG_CRYPTO_ECB is not set
1330# CONFIG_CRYPTO_CBC is not set 1440CONFIG_CRYPTO_CBC=y
1441# CONFIG_CRYPTO_LRW is not set
1331CONFIG_CRYPTO_DES=y 1442CONFIG_CRYPTO_DES=y
1332# CONFIG_CRYPTO_BLOWFISH is not set 1443# CONFIG_CRYPTO_BLOWFISH is not set
1333# CONFIG_CRYPTO_TWOFISH is not set 1444# CONFIG_CRYPTO_TWOFISH is not set
diff --git a/arch/powerpc/configs/mpc834x_mds_defconfig b/arch/powerpc/configs/mpc834x_mds_defconfig
index 9eefab967898..c24db58be457 100644
--- a/arch/powerpc/configs/mpc834x_mds_defconfig
+++ b/arch/powerpc/configs/mpc834x_mds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:28:54 2006 4# Mon Jan 22 22:24:10 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -21,13 +22,14 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
21CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
24CONFIG_DEFAULT_UIMAGE=y 27CONFIG_DEFAULT_UIMAGE=y
25 28
26# 29#
27# Processor support 30# Processor support
28# 31#
29# CONFIG_CLASSIC32 is not set 32# CONFIG_CLASSIC32 is not set
30# CONFIG_PPC_52xx is not set
31# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
32CONFIG_PPC_83xx=y 34CONFIG_PPC_83xx=y
33# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -39,6 +41,8 @@ CONFIG_PPC_83xx=y
39CONFIG_6xx=y 41CONFIG_6xx=y
40CONFIG_83xx=y 42CONFIG_83xx=y
41CONFIG_PPC_FPU=y 43CONFIG_PPC_FPU=y
44# CONFIG_PPC_DCR_NATIVE is not set
45# CONFIG_PPC_DCR_MMIO is not set
42CONFIG_PPC_STD_MMU=y 46CONFIG_PPC_STD_MMU=y
43CONFIG_PPC_STD_MMU_32=y 47CONFIG_PPC_STD_MMU_32=y
44# CONFIG_SMP is not set 48# CONFIG_SMP is not set
@@ -58,28 +62,32 @@ CONFIG_LOCALVERSION=""
58CONFIG_LOCALVERSION_AUTO=y 62CONFIG_LOCALVERSION_AUTO=y
59CONFIG_SWAP=y 63CONFIG_SWAP=y
60CONFIG_SYSVIPC=y 64CONFIG_SYSVIPC=y
65# CONFIG_IPC_NS is not set
61# CONFIG_POSIX_MQUEUE is not set 66# CONFIG_POSIX_MQUEUE is not set
62# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
63# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
64CONFIG_SYSCTL=y 69# CONFIG_UTS_NS is not set
65# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
66# CONFIG_IKCONFIG is not set 71# CONFIG_IKCONFIG is not set
72CONFIG_SYSFS_DEPRECATED=y
67# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
68CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
76CONFIG_SYSCTL=y
70CONFIG_EMBEDDED=y 77CONFIG_EMBEDDED=y
78CONFIG_SYSCTL_SYSCALL=y
71# CONFIG_KALLSYMS is not set 79# CONFIG_KALLSYMS is not set
72CONFIG_HOTPLUG=y 80CONFIG_HOTPLUG=y
73CONFIG_PRINTK=y 81CONFIG_PRINTK=y
74CONFIG_BUG=y 82CONFIG_BUG=y
75CONFIG_ELF_CORE=y 83CONFIG_ELF_CORE=y
76CONFIG_BASE_FULL=y 84CONFIG_BASE_FULL=y
77CONFIG_RT_MUTEXES=y
78CONFIG_FUTEX=y 85CONFIG_FUTEX=y
79# CONFIG_EPOLL is not set 86# CONFIG_EPOLL is not set
80CONFIG_SHMEM=y 87CONFIG_SHMEM=y
81CONFIG_SLAB=y 88CONFIG_SLAB=y
82CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_RT_MUTEXES=y
83# CONFIG_TINY_SHMEM is not set 91# CONFIG_TINY_SHMEM is not set
84CONFIG_BASE_SMALL=0 92CONFIG_BASE_SMALL=0
85# CONFIG_SLOB is not set 93# CONFIG_SLOB is not set
@@ -97,6 +105,7 @@ CONFIG_MODULE_UNLOAD=y
97# 105#
98# Block layer 106# Block layer
99# 107#
108CONFIG_BLOCK=y
100# CONFIG_LBD is not set 109# CONFIG_LBD is not set
101# CONFIG_BLK_DEV_IO_TRACE is not set 110# CONFIG_BLK_DEV_IO_TRACE is not set
102# CONFIG_LSF is not set 111# CONFIG_LSF is not set
@@ -119,8 +128,10 @@ CONFIG_PPC_GEN550=y
119# 128#
120# Platform support 129# Platform support
121# 130#
131# CONFIG_MPC832x_MDS is not set
122CONFIG_MPC834x_SYS=y 132CONFIG_MPC834x_SYS=y
123# CONFIG_MPC834x_ITX is not set 133# CONFIG_MPC834x_ITX is not set
134# CONFIG_MPC8360E_PB is not set
124CONFIG_MPC834x=y 135CONFIG_MPC834x=y
125# CONFIG_MPIC is not set 136# CONFIG_MPIC is not set
126 137
@@ -130,6 +141,7 @@ CONFIG_MPC834x=y
130# CONFIG_HIGHMEM is not set 141# CONFIG_HIGHMEM is not set
131# CONFIG_HZ_100 is not set 142# CONFIG_HZ_100 is not set
132CONFIG_HZ_250=y 143CONFIG_HZ_250=y
144# CONFIG_HZ_300 is not set
133# CONFIG_HZ_1000 is not set 145# CONFIG_HZ_1000 is not set
134CONFIG_HZ=250 146CONFIG_HZ=250
135CONFIG_PREEMPT_NONE=y 147CONFIG_PREEMPT_NONE=y
@@ -137,8 +149,10 @@ CONFIG_PREEMPT_NONE=y
137# CONFIG_PREEMPT is not set 149# CONFIG_PREEMPT is not set
138CONFIG_BINFMT_ELF=y 150CONFIG_BINFMT_ELF=y
139# CONFIG_BINFMT_MISC is not set 151# CONFIG_BINFMT_MISC is not set
152CONFIG_MATH_EMULATION=y
140CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 153CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
141CONFIG_ARCH_FLATMEM_ENABLE=y 154CONFIG_ARCH_FLATMEM_ENABLE=y
155CONFIG_ARCH_POPULATES_NODE_MAP=y
142CONFIG_SELECT_MEMORY_MODEL=y 156CONFIG_SELECT_MEMORY_MODEL=y
143CONFIG_FLATMEM_MANUAL=y 157CONFIG_FLATMEM_MANUAL=y
144# CONFIG_DISCONTIGMEM_MANUAL is not set 158# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -204,6 +218,7 @@ CONFIG_PACKET=y
204CONFIG_UNIX=y 218CONFIG_UNIX=y
205CONFIG_XFRM=y 219CONFIG_XFRM=y
206CONFIG_XFRM_USER=m 220CONFIG_XFRM_USER=m
221# CONFIG_XFRM_SUB_POLICY is not set
207# CONFIG_NET_KEY is not set 222# CONFIG_NET_KEY is not set
208CONFIG_INET=y 223CONFIG_INET=y
209CONFIG_IP_MULTICAST=y 224CONFIG_IP_MULTICAST=y
@@ -225,10 +240,13 @@ CONFIG_SYN_COOKIES=y
225# CONFIG_INET_TUNNEL is not set 240# CONFIG_INET_TUNNEL is not set
226CONFIG_INET_XFRM_MODE_TRANSPORT=y 241CONFIG_INET_XFRM_MODE_TRANSPORT=y
227CONFIG_INET_XFRM_MODE_TUNNEL=y 242CONFIG_INET_XFRM_MODE_TUNNEL=y
243CONFIG_INET_XFRM_MODE_BEET=y
228CONFIG_INET_DIAG=y 244CONFIG_INET_DIAG=y
229CONFIG_INET_TCP_DIAG=y 245CONFIG_INET_TCP_DIAG=y
230# CONFIG_TCP_CONG_ADVANCED is not set 246# CONFIG_TCP_CONG_ADVANCED is not set
231CONFIG_TCP_CONG_BIC=y 247CONFIG_TCP_CONG_CUBIC=y
248CONFIG_DEFAULT_TCP_CONG="cubic"
249# CONFIG_TCP_MD5SIG is not set
232# CONFIG_IPV6 is not set 250# CONFIG_IPV6 is not set
233# CONFIG_INET6_XFRM_TUNNEL is not set 251# CONFIG_INET6_XFRM_TUNNEL is not set
234# CONFIG_INET6_TUNNEL is not set 252# CONFIG_INET6_TUNNEL is not set
@@ -258,7 +276,6 @@ CONFIG_TCP_CONG_BIC=y
258# CONFIG_ATALK is not set 276# CONFIG_ATALK is not set
259# CONFIG_X25 is not set 277# CONFIG_X25 is not set
260# CONFIG_LAPB is not set 278# CONFIG_LAPB is not set
261# CONFIG_NET_DIVERT is not set
262# CONFIG_ECONET is not set 279# CONFIG_ECONET is not set
263# CONFIG_WAN_ROUTER is not set 280# CONFIG_WAN_ROUTER is not set
264 281
@@ -329,6 +346,12 @@ CONFIG_BLK_DEV_INITRD=y
329# CONFIG_ATA_OVER_ETH is not set 346# CONFIG_ATA_OVER_ETH is not set
330 347
331# 348#
349# Misc devices
350#
351# CONFIG_SGI_IOC4 is not set
352# CONFIG_TIFM_CORE is not set
353
354#
332# ATA/ATAPI/MFM/RLL support 355# ATA/ATAPI/MFM/RLL support
333# 356#
334# CONFIG_IDE is not set 357# CONFIG_IDE is not set
@@ -338,6 +361,12 @@ CONFIG_BLK_DEV_INITRD=y
338# 361#
339# CONFIG_RAID_ATTRS is not set 362# CONFIG_RAID_ATTRS is not set
340# CONFIG_SCSI is not set 363# CONFIG_SCSI is not set
364# CONFIG_SCSI_NETLINK is not set
365
366#
367# Serial ATA (prod) and Parallel ATA (experimental) drivers
368#
369# CONFIG_ATA is not set
341 370
342# 371#
343# Multi-device support (RAID and LVM) 372# Multi-device support (RAID and LVM)
@@ -362,6 +391,7 @@ CONFIG_BLK_DEV_INITRD=y
362# 391#
363# Macintosh device drivers 392# Macintosh device drivers
364# 393#
394# CONFIG_MAC_EMUMOUSEBTN is not set
365# CONFIG_WINDFARM is not set 395# CONFIG_WINDFARM is not set
366 396
367# 397#
@@ -393,6 +423,7 @@ CONFIG_MARVELL_PHY=y
393# CONFIG_CICADA_PHY is not set 423# CONFIG_CICADA_PHY is not set
394# CONFIG_VITESSE_PHY is not set 424# CONFIG_VITESSE_PHY is not set
395# CONFIG_SMSC_PHY is not set 425# CONFIG_SMSC_PHY is not set
426# CONFIG_BROADCOM_PHY is not set
396# CONFIG_FIXED_PHY is not set 427# CONFIG_FIXED_PHY is not set
397 428
398# 429#
@@ -449,6 +480,7 @@ CONFIG_E100=y
449# CONFIG_BNX2 is not set 480# CONFIG_BNX2 is not set
450CONFIG_GIANFAR=y 481CONFIG_GIANFAR=y
451# CONFIG_GFAR_NAPI is not set 482# CONFIG_GFAR_NAPI is not set
483# CONFIG_QLA3XXX is not set
452 484
453# 485#
454# Ethernet (10000 Mbit) 486# Ethernet (10000 Mbit)
@@ -457,6 +489,7 @@ CONFIG_GIANFAR=y
457# CONFIG_IXGB is not set 489# CONFIG_IXGB is not set
458# CONFIG_S2IO is not set 490# CONFIG_S2IO is not set
459# CONFIG_MYRI10GE is not set 491# CONFIG_MYRI10GE is not set
492# CONFIG_NETXEN_NIC is not set
460 493
461# 494#
462# Token Ring devices 495# Token Ring devices
@@ -495,6 +528,7 @@ CONFIG_GIANFAR=y
495# Input device support 528# Input device support
496# 529#
497CONFIG_INPUT=y 530CONFIG_INPUT=y
531# CONFIG_INPUT_FF_MEMLESS is not set
498 532
499# 533#
500# Userland interfaces 534# Userland interfaces
@@ -539,6 +573,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
539# 573#
540# Non-8250 serial port support 574# Non-8250 serial port support
541# 575#
576# CONFIG_SERIAL_UARTLITE is not set
542CONFIG_SERIAL_CORE=y 577CONFIG_SERIAL_CORE=y
543CONFIG_SERIAL_CORE_CONSOLE=y 578CONFIG_SERIAL_CORE_CONSOLE=y
544# CONFIG_SERIAL_JSM is not set 579# CONFIG_SERIAL_JSM is not set
@@ -575,10 +610,6 @@ CONFIG_GEN_RTC=y
575# CONFIG_DTLK is not set 610# CONFIG_DTLK is not set
576# CONFIG_R3964 is not set 611# CONFIG_R3964 is not set
577# CONFIG_APPLICOM is not set 612# CONFIG_APPLICOM is not set
578
579#
580# Ftape, the floppy tape device driver
581#
582# CONFIG_AGP is not set 613# CONFIG_AGP is not set
583# CONFIG_DRM is not set 614# CONFIG_DRM is not set
584# CONFIG_RAW_DRIVER is not set 615# CONFIG_RAW_DRIVER is not set
@@ -587,7 +618,6 @@ CONFIG_GEN_RTC=y
587# TPM devices 618# TPM devices
588# 619#
589# CONFIG_TCG_TPM is not set 620# CONFIG_TCG_TPM is not set
590# CONFIG_TELCLOCK is not set
591 621
592# 622#
593# I2C support 623# I2C support
@@ -653,6 +683,7 @@ CONFIG_I2C_MPC=y
653# 683#
654# Dallas's 1-wire bus 684# Dallas's 1-wire bus
655# 685#
686# CONFIG_W1 is not set
656 687
657# 688#
658# Hardware Monitoring support 689# Hardware Monitoring support
@@ -686,29 +717,27 @@ CONFIG_HWMON=y
686# CONFIG_SENSORS_LM92 is not set 717# CONFIG_SENSORS_LM92 is not set
687# CONFIG_SENSORS_MAX1619 is not set 718# CONFIG_SENSORS_MAX1619 is not set
688# CONFIG_SENSORS_PC87360 is not set 719# CONFIG_SENSORS_PC87360 is not set
720# CONFIG_SENSORS_PC87427 is not set
689# CONFIG_SENSORS_SIS5595 is not set 721# CONFIG_SENSORS_SIS5595 is not set
690# CONFIG_SENSORS_SMSC47M1 is not set 722# CONFIG_SENSORS_SMSC47M1 is not set
691# CONFIG_SENSORS_SMSC47M192 is not set 723# CONFIG_SENSORS_SMSC47M192 is not set
692# CONFIG_SENSORS_SMSC47B397 is not set 724# CONFIG_SENSORS_SMSC47B397 is not set
693# CONFIG_SENSORS_VIA686A is not set 725# CONFIG_SENSORS_VIA686A is not set
726# CONFIG_SENSORS_VT1211 is not set
694# CONFIG_SENSORS_VT8231 is not set 727# CONFIG_SENSORS_VT8231 is not set
695# CONFIG_SENSORS_W83781D is not set 728# CONFIG_SENSORS_W83781D is not set
696# CONFIG_SENSORS_W83791D is not set 729# CONFIG_SENSORS_W83791D is not set
697# CONFIG_SENSORS_W83792D is not set 730# CONFIG_SENSORS_W83792D is not set
731# CONFIG_SENSORS_W83793 is not set
698# CONFIG_SENSORS_W83L785TS is not set 732# CONFIG_SENSORS_W83L785TS is not set
699# CONFIG_SENSORS_W83627HF is not set 733# CONFIG_SENSORS_W83627HF is not set
700# CONFIG_SENSORS_W83627EHF is not set 734# CONFIG_SENSORS_W83627EHF is not set
701# CONFIG_HWMON_DEBUG_CHIP is not set 735# CONFIG_HWMON_DEBUG_CHIP is not set
702 736
703# 737#
704# Misc devices
705#
706
707#
708# Multimedia devices 738# Multimedia devices
709# 739#
710# CONFIG_VIDEO_DEV is not set 740# CONFIG_VIDEO_DEV is not set
711CONFIG_VIDEO_V4L2=y
712 741
713# 742#
714# Digital Video Broadcasting Devices 743# Digital Video Broadcasting Devices
@@ -720,6 +749,7 @@ CONFIG_VIDEO_V4L2=y
720# 749#
721CONFIG_FIRMWARE_EDID=y 750CONFIG_FIRMWARE_EDID=y
722# CONFIG_FB is not set 751# CONFIG_FB is not set
752# CONFIG_FB_IBM_GXT4500 is not set
723# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 753# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
724 754
725# 755#
@@ -728,6 +758,11 @@ CONFIG_FIRMWARE_EDID=y
728# CONFIG_SOUND is not set 758# CONFIG_SOUND is not set
729 759
730# 760#
761# HID Devices
762#
763CONFIG_HID=y
764
765#
731# USB support 766# USB support
732# 767#
733CONFIG_USB_ARCH_HAS_HCD=y 768CONFIG_USB_ARCH_HAS_HCD=y
@@ -790,6 +825,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
790# 825#
791 826
792# 827#
828# Virtualization
829#
830
831#
793# File systems 832# File systems
794# 833#
795CONFIG_EXT2_FS=y 834CONFIG_EXT2_FS=y
@@ -799,6 +838,7 @@ CONFIG_EXT3_FS=y
799CONFIG_EXT3_FS_XATTR=y 838CONFIG_EXT3_FS_XATTR=y
800# CONFIG_EXT3_FS_POSIX_ACL is not set 839# CONFIG_EXT3_FS_POSIX_ACL is not set
801# CONFIG_EXT3_FS_SECURITY is not set 840# CONFIG_EXT3_FS_SECURITY is not set
841# CONFIG_EXT4DEV_FS is not set
802CONFIG_JBD=y 842CONFIG_JBD=y
803# CONFIG_JBD_DEBUG is not set 843# CONFIG_JBD_DEBUG is not set
804CONFIG_FS_MBCACHE=y 844CONFIG_FS_MBCACHE=y
@@ -806,6 +846,7 @@ CONFIG_FS_MBCACHE=y
806# CONFIG_JFS_FS is not set 846# CONFIG_JFS_FS is not set
807# CONFIG_FS_POSIX_ACL is not set 847# CONFIG_FS_POSIX_ACL is not set
808# CONFIG_XFS_FS is not set 848# CONFIG_XFS_FS is not set
849# CONFIG_GFS2_FS is not set
809# CONFIG_OCFS2_FS is not set 850# CONFIG_OCFS2_FS is not set
810# CONFIG_MINIX_FS is not set 851# CONFIG_MINIX_FS is not set
811# CONFIG_ROMFS_FS is not set 852# CONFIG_ROMFS_FS is not set
@@ -835,8 +876,10 @@ CONFIG_DNOTIFY=y
835# 876#
836CONFIG_PROC_FS=y 877CONFIG_PROC_FS=y
837CONFIG_PROC_KCORE=y 878CONFIG_PROC_KCORE=y
879CONFIG_PROC_SYSCTL=y
838CONFIG_SYSFS=y 880CONFIG_SYSFS=y
839CONFIG_TMPFS=y 881CONFIG_TMPFS=y
882# CONFIG_TMPFS_POSIX_ACL is not set
840# CONFIG_HUGETLB_PAGE is not set 883# CONFIG_HUGETLB_PAGE is not set
841CONFIG_RAMFS=y 884CONFIG_RAMFS=y
842# CONFIG_CONFIGFS_FS is not set 885# CONFIG_CONFIGFS_FS is not set
@@ -905,13 +948,20 @@ CONFIG_PARTITION_ADVANCED=y
905# CONFIG_NLS is not set 948# CONFIG_NLS is not set
906 949
907# 950#
951# Distributed Lock Manager
952#
953# CONFIG_DLM is not set
954
955#
908# Library routines 956# Library routines
909# 957#
958CONFIG_BITREVERSE=y
910# CONFIG_CRC_CCITT is not set 959# CONFIG_CRC_CCITT is not set
911# CONFIG_CRC16 is not set 960# CONFIG_CRC16 is not set
912CONFIG_CRC32=y 961CONFIG_CRC32=y
913# CONFIG_LIBCRC32C is not set 962# CONFIG_LIBCRC32C is not set
914CONFIG_PLIST=y 963CONFIG_PLIST=y
964CONFIG_IOMAP_COPY=y
915 965
916# 966#
917# Instrumentation Support 967# Instrumentation Support
@@ -922,11 +972,14 @@ CONFIG_PLIST=y
922# Kernel hacking 972# Kernel hacking
923# 973#
924# CONFIG_PRINTK_TIME is not set 974# CONFIG_PRINTK_TIME is not set
975CONFIG_ENABLE_MUST_CHECK=y
925# CONFIG_MAGIC_SYSRQ is not set 976# CONFIG_MAGIC_SYSRQ is not set
926# CONFIG_UNUSED_SYMBOLS is not set 977# CONFIG_UNUSED_SYMBOLS is not set
978# CONFIG_DEBUG_FS is not set
979# CONFIG_HEADERS_CHECK is not set
927# CONFIG_DEBUG_KERNEL is not set 980# CONFIG_DEBUG_KERNEL is not set
928CONFIG_LOG_BUF_SHIFT=14 981CONFIG_LOG_BUF_SHIFT=14
929# CONFIG_DEBUG_FS is not set 982# CONFIG_DEBUG_BUGVERBOSE is not set
930# CONFIG_BOOTX_TEXT is not set 983# CONFIG_BOOTX_TEXT is not set
931# CONFIG_SERIAL_TEXT_DEBUG is not set 984# CONFIG_SERIAL_TEXT_DEBUG is not set
932# CONFIG_PPC_EARLY_DEBUG is not set 985# CONFIG_PPC_EARLY_DEBUG is not set
@@ -941,7 +994,11 @@ CONFIG_LOG_BUF_SHIFT=14
941# Cryptographic options 994# Cryptographic options
942# 995#
943CONFIG_CRYPTO=y 996CONFIG_CRYPTO=y
997CONFIG_CRYPTO_ALGAPI=y
998CONFIG_CRYPTO_BLKCIPHER=y
999CONFIG_CRYPTO_MANAGER=y
944# CONFIG_CRYPTO_HMAC is not set 1000# CONFIG_CRYPTO_HMAC is not set
1001# CONFIG_CRYPTO_XCBC is not set
945# CONFIG_CRYPTO_NULL is not set 1002# CONFIG_CRYPTO_NULL is not set
946# CONFIG_CRYPTO_MD4 is not set 1003# CONFIG_CRYPTO_MD4 is not set
947CONFIG_CRYPTO_MD5=y 1004CONFIG_CRYPTO_MD5=y
@@ -950,6 +1007,10 @@ CONFIG_CRYPTO_MD5=y
950# CONFIG_CRYPTO_SHA512 is not set 1007# CONFIG_CRYPTO_SHA512 is not set
951# CONFIG_CRYPTO_WP512 is not set 1008# CONFIG_CRYPTO_WP512 is not set
952# CONFIG_CRYPTO_TGR192 is not set 1009# CONFIG_CRYPTO_TGR192 is not set
1010# CONFIG_CRYPTO_GF128MUL is not set
1011CONFIG_CRYPTO_ECB=m
1012CONFIG_CRYPTO_CBC=y
1013# CONFIG_CRYPTO_LRW is not set
953CONFIG_CRYPTO_DES=y 1014CONFIG_CRYPTO_DES=y
954# CONFIG_CRYPTO_BLOWFISH is not set 1015# CONFIG_CRYPTO_BLOWFISH is not set
955# CONFIG_CRYPTO_TWOFISH is not set 1016# CONFIG_CRYPTO_TWOFISH is not set
diff --git a/arch/powerpc/configs/mpc8360emds_defconfig b/arch/powerpc/configs/mpc8360emds_defconfig
index c0703415d608..58e6795dbfe5 100644
--- a/arch/powerpc/configs/mpc8360emds_defconfig
+++ b/arch/powerpc/configs/mpc8360emds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18 3# Linux kernel version: 2.6.20-rc5
4# Thu Sep 21 18:14:27 2006 4# Mon Jan 22 22:24:40 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -22,13 +23,13 @@ CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
24CONFIG_AUDIT_ARCH=y 25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
25CONFIG_DEFAULT_UIMAGE=y 27CONFIG_DEFAULT_UIMAGE=y
26 28
27# 29#
28# Processor support 30# Processor support
29# 31#
30# CONFIG_CLASSIC32 is not set 32# CONFIG_CLASSIC32 is not set
31# CONFIG_PPC_52xx is not set
32# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
33CONFIG_PPC_83xx=y 34CONFIG_PPC_83xx=y
34# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -40,6 +41,8 @@ CONFIG_PPC_83xx=y
40CONFIG_6xx=y 41CONFIG_6xx=y
41CONFIG_83xx=y 42CONFIG_83xx=y
42CONFIG_PPC_FPU=y 43CONFIG_PPC_FPU=y
44# CONFIG_PPC_DCR_NATIVE is not set
45# CONFIG_PPC_DCR_MMIO is not set
43CONFIG_PPC_STD_MMU=y 46CONFIG_PPC_STD_MMU=y
44CONFIG_PPC_STD_MMU_32=y 47CONFIG_PPC_STD_MMU_32=y
45# CONFIG_SMP is not set 48# CONFIG_SMP is not set
@@ -59,16 +62,20 @@ CONFIG_LOCALVERSION=""
59CONFIG_LOCALVERSION_AUTO=y 62CONFIG_LOCALVERSION_AUTO=y
60CONFIG_SWAP=y 63CONFIG_SWAP=y
61CONFIG_SYSVIPC=y 64CONFIG_SYSVIPC=y
65# CONFIG_IPC_NS is not set
62# CONFIG_POSIX_MQUEUE is not set 66# CONFIG_POSIX_MQUEUE is not set
63# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
64# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
69# CONFIG_UTS_NS is not set
65# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
66# CONFIG_IKCONFIG is not set 71# CONFIG_IKCONFIG is not set
72CONFIG_SYSFS_DEPRECATED=y
67# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
68CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
70CONFIG_EMBEDDED=y
71CONFIG_SYSCTL=y 76CONFIG_SYSCTL=y
77CONFIG_EMBEDDED=y
78CONFIG_SYSCTL_SYSCALL=y
72# CONFIG_KALLSYMS is not set 79# CONFIG_KALLSYMS is not set
73CONFIG_HOTPLUG=y 80CONFIG_HOTPLUG=y
74CONFIG_PRINTK=y 81CONFIG_PRINTK=y
@@ -98,6 +105,7 @@ CONFIG_MODULE_UNLOAD=y
98# 105#
99# Block layer 106# Block layer
100# 107#
108CONFIG_BLOCK=y
101# CONFIG_LBD is not set 109# CONFIG_LBD is not set
102# CONFIG_BLK_DEV_IO_TRACE is not set 110# CONFIG_BLK_DEV_IO_TRACE is not set
103# CONFIG_LSF is not set 111# CONFIG_LSF is not set
@@ -121,6 +129,7 @@ CONFIG_PPC_GEN550=y
121# 129#
122# Platform support 130# Platform support
123# 131#
132# CONFIG_MPC832x_MDS is not set
124# CONFIG_MPC834x_SYS is not set 133# CONFIG_MPC834x_SYS is not set
125# CONFIG_MPC834x_ITX is not set 134# CONFIG_MPC834x_ITX is not set
126CONFIG_MPC8360E_PB=y 135CONFIG_MPC8360E_PB=y
@@ -133,6 +142,7 @@ CONFIG_PPC_MPC836x=y
133# CONFIG_HIGHMEM is not set 142# CONFIG_HIGHMEM is not set
134# CONFIG_HZ_100 is not set 143# CONFIG_HZ_100 is not set
135CONFIG_HZ_250=y 144CONFIG_HZ_250=y
145# CONFIG_HZ_300 is not set
136# CONFIG_HZ_1000 is not set 146# CONFIG_HZ_1000 is not set
137CONFIG_HZ=250 147CONFIG_HZ=250
138CONFIG_PREEMPT_NONE=y 148CONFIG_PREEMPT_NONE=y
@@ -140,8 +150,10 @@ CONFIG_PREEMPT_NONE=y
140# CONFIG_PREEMPT is not set 150# CONFIG_PREEMPT is not set
141CONFIG_BINFMT_ELF=y 151CONFIG_BINFMT_ELF=y
142# CONFIG_BINFMT_MISC is not set 152# CONFIG_BINFMT_MISC is not set
153CONFIG_MATH_EMULATION=y
143CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 154CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
144CONFIG_ARCH_FLATMEM_ENABLE=y 155CONFIG_ARCH_FLATMEM_ENABLE=y
156CONFIG_ARCH_POPULATES_NODE_MAP=y
145CONFIG_SELECT_MEMORY_MODEL=y 157CONFIG_SELECT_MEMORY_MODEL=y
146CONFIG_FLATMEM_MANUAL=y 158CONFIG_FLATMEM_MANUAL=y
147# CONFIG_DISCONTIGMEM_MANUAL is not set 159# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -207,6 +219,7 @@ CONFIG_PACKET=y
207CONFIG_UNIX=y 219CONFIG_UNIX=y
208CONFIG_XFRM=y 220CONFIG_XFRM=y
209# CONFIG_XFRM_USER is not set 221# CONFIG_XFRM_USER is not set
222# CONFIG_XFRM_SUB_POLICY is not set
210# CONFIG_NET_KEY is not set 223# CONFIG_NET_KEY is not set
211CONFIG_INET=y 224CONFIG_INET=y
212CONFIG_IP_MULTICAST=y 225CONFIG_IP_MULTICAST=y
@@ -228,10 +241,13 @@ CONFIG_SYN_COOKIES=y
228# CONFIG_INET_TUNNEL is not set 241# CONFIG_INET_TUNNEL is not set
229CONFIG_INET_XFRM_MODE_TRANSPORT=y 242CONFIG_INET_XFRM_MODE_TRANSPORT=y
230CONFIG_INET_XFRM_MODE_TUNNEL=y 243CONFIG_INET_XFRM_MODE_TUNNEL=y
244CONFIG_INET_XFRM_MODE_BEET=y
231CONFIG_INET_DIAG=y 245CONFIG_INET_DIAG=y
232CONFIG_INET_TCP_DIAG=y 246CONFIG_INET_TCP_DIAG=y
233# CONFIG_TCP_CONG_ADVANCED is not set 247# CONFIG_TCP_CONG_ADVANCED is not set
234CONFIG_TCP_CONG_BIC=y 248CONFIG_TCP_CONG_CUBIC=y
249CONFIG_DEFAULT_TCP_CONG="cubic"
250# CONFIG_TCP_MD5SIG is not set
235# CONFIG_IPV6 is not set 251# CONFIG_IPV6 is not set
236# CONFIG_INET6_XFRM_TUNNEL is not set 252# CONFIG_INET6_XFRM_TUNNEL is not set
237# CONFIG_INET6_TUNNEL is not set 253# CONFIG_INET6_TUNNEL is not set
@@ -331,6 +347,12 @@ CONFIG_BLK_DEV_INITRD=y
331# CONFIG_ATA_OVER_ETH is not set 347# CONFIG_ATA_OVER_ETH is not set
332 348
333# 349#
350# Misc devices
351#
352# CONFIG_SGI_IOC4 is not set
353# CONFIG_TIFM_CORE is not set
354
355#
334# ATA/ATAPI/MFM/RLL support 356# ATA/ATAPI/MFM/RLL support
335# 357#
336# CONFIG_IDE is not set 358# CONFIG_IDE is not set
@@ -340,6 +362,8 @@ CONFIG_BLK_DEV_INITRD=y
340# 362#
341# CONFIG_RAID_ATTRS is not set 363# CONFIG_RAID_ATTRS is not set
342CONFIG_SCSI=y 364CONFIG_SCSI=y
365# CONFIG_SCSI_TGT is not set
366# CONFIG_SCSI_NETLINK is not set
343CONFIG_SCSI_PROC_FS=y 367CONFIG_SCSI_PROC_FS=y
344 368
345# 369#
@@ -358,14 +382,16 @@ CONFIG_SCSI_PROC_FS=y
358# CONFIG_SCSI_MULTI_LUN is not set 382# CONFIG_SCSI_MULTI_LUN is not set
359# CONFIG_SCSI_CONSTANTS is not set 383# CONFIG_SCSI_CONSTANTS is not set
360# CONFIG_SCSI_LOGGING is not set 384# CONFIG_SCSI_LOGGING is not set
385# CONFIG_SCSI_SCAN_ASYNC is not set
361 386
362# 387#
363# SCSI Transport Attributes 388# SCSI Transports
364# 389#
365# CONFIG_SCSI_SPI_ATTRS is not set 390# CONFIG_SCSI_SPI_ATTRS is not set
366# CONFIG_SCSI_FC_ATTRS is not set 391# CONFIG_SCSI_FC_ATTRS is not set
367# CONFIG_SCSI_ISCSI_ATTRS is not set 392# CONFIG_SCSI_ISCSI_ATTRS is not set
368# CONFIG_SCSI_SAS_ATTRS is not set 393# CONFIG_SCSI_SAS_ATTRS is not set
394# CONFIG_SCSI_SAS_LIBSAS is not set
369 395
370# 396#
371# SCSI low-level drivers 397# SCSI low-level drivers
@@ -378,11 +404,12 @@ CONFIG_SCSI_PROC_FS=y
378# CONFIG_SCSI_AIC7XXX is not set 404# CONFIG_SCSI_AIC7XXX is not set
379# CONFIG_SCSI_AIC7XXX_OLD is not set 405# CONFIG_SCSI_AIC7XXX_OLD is not set
380# CONFIG_SCSI_AIC79XX is not set 406# CONFIG_SCSI_AIC79XX is not set
407# CONFIG_SCSI_AIC94XX is not set
381# CONFIG_SCSI_DPT_I2O is not set 408# CONFIG_SCSI_DPT_I2O is not set
409# CONFIG_SCSI_ARCMSR is not set
382# CONFIG_MEGARAID_NEWGEN is not set 410# CONFIG_MEGARAID_NEWGEN is not set
383# CONFIG_MEGARAID_LEGACY is not set 411# CONFIG_MEGARAID_LEGACY is not set
384# CONFIG_MEGARAID_SAS is not set 412# CONFIG_MEGARAID_SAS is not set
385# CONFIG_SCSI_SATA is not set
386# CONFIG_SCSI_HPTIOP is not set 413# CONFIG_SCSI_HPTIOP is not set
387# CONFIG_SCSI_BUSLOGIC is not set 414# CONFIG_SCSI_BUSLOGIC is not set
388# CONFIG_SCSI_DMX3191D is not set 415# CONFIG_SCSI_DMX3191D is not set
@@ -392,15 +419,22 @@ CONFIG_SCSI_PROC_FS=y
392# CONFIG_SCSI_IPS is not set 419# CONFIG_SCSI_IPS is not set
393# CONFIG_SCSI_INITIO is not set 420# CONFIG_SCSI_INITIO is not set
394# CONFIG_SCSI_INIA100 is not set 421# CONFIG_SCSI_INIA100 is not set
422# CONFIG_SCSI_STEX is not set
395# CONFIG_SCSI_SYM53C8XX_2 is not set 423# CONFIG_SCSI_SYM53C8XX_2 is not set
396# CONFIG_SCSI_IPR is not set
397# CONFIG_SCSI_QLOGIC_1280 is not set 424# CONFIG_SCSI_QLOGIC_1280 is not set
398# CONFIG_SCSI_QLA_FC is not set 425# CONFIG_SCSI_QLA_FC is not set
426# CONFIG_SCSI_QLA_ISCSI is not set
399# CONFIG_SCSI_LPFC is not set 427# CONFIG_SCSI_LPFC is not set
400# CONFIG_SCSI_DC395x is not set 428# CONFIG_SCSI_DC395x is not set
401# CONFIG_SCSI_DC390T is not set 429# CONFIG_SCSI_DC390T is not set
402# CONFIG_SCSI_NSP32 is not set 430# CONFIG_SCSI_NSP32 is not set
403# CONFIG_SCSI_DEBUG is not set 431# CONFIG_SCSI_DEBUG is not set
432# CONFIG_SCSI_SRP is not set
433
434#
435# Serial ATA (prod) and Parallel ATA (experimental) drivers
436#
437# CONFIG_ATA is not set
404 438
405# 439#
406# Multi-device support (RAID and LVM) 440# Multi-device support (RAID and LVM)
@@ -428,6 +462,7 @@ CONFIG_SCSI_PROC_FS=y
428# 462#
429# Macintosh device drivers 463# Macintosh device drivers
430# 464#
465# CONFIG_MAC_EMUMOUSEBTN is not set
431# CONFIG_WINDFARM is not set 466# CONFIG_WINDFARM is not set
432 467
433# 468#
@@ -488,6 +523,7 @@ CONFIG_UCC_GETH=y
488# CONFIG_UGETH_MAGIC_PACKET is not set 523# CONFIG_UGETH_MAGIC_PACKET is not set
489# CONFIG_UGETH_FILTERING is not set 524# CONFIG_UGETH_FILTERING is not set
490# CONFIG_UGETH_TX_ON_DEMOND is not set 525# CONFIG_UGETH_TX_ON_DEMOND is not set
526# CONFIG_QLA3XXX is not set
491 527
492# 528#
493# Ethernet (10000 Mbit) 529# Ethernet (10000 Mbit)
@@ -496,6 +532,7 @@ CONFIG_UCC_GETH=y
496# CONFIG_IXGB is not set 532# CONFIG_IXGB is not set
497# CONFIG_S2IO is not set 533# CONFIG_S2IO is not set
498# CONFIG_MYRI10GE is not set 534# CONFIG_MYRI10GE is not set
535# CONFIG_NETXEN_NIC is not set
499 536
500# 537#
501# Token Ring devices 538# Token Ring devices
@@ -535,6 +572,7 @@ CONFIG_UCC_GETH=y
535# Input device support 572# Input device support
536# 573#
537CONFIG_INPUT=y 574CONFIG_INPUT=y
575# CONFIG_INPUT_FF_MEMLESS is not set
538 576
539# 577#
540# Userland interfaces 578# Userland interfaces
@@ -579,6 +617,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
579# 617#
580# Non-8250 serial port support 618# Non-8250 serial port support
581# 619#
620# CONFIG_SERIAL_UARTLITE is not set
582CONFIG_SERIAL_CORE=y 621CONFIG_SERIAL_CORE=y
583CONFIG_SERIAL_CORE_CONSOLE=y 622CONFIG_SERIAL_CORE_CONSOLE=y
584# CONFIG_SERIAL_JSM is not set 623# CONFIG_SERIAL_JSM is not set
@@ -615,10 +654,6 @@ CONFIG_GEN_RTC=y
615# CONFIG_DTLK is not set 654# CONFIG_DTLK is not set
616# CONFIG_R3964 is not set 655# CONFIG_R3964 is not set
617# CONFIG_APPLICOM is not set 656# CONFIG_APPLICOM is not set
618
619#
620# Ftape, the floppy tape device driver
621#
622# CONFIG_AGP is not set 657# CONFIG_AGP is not set
623# CONFIG_DRM is not set 658# CONFIG_DRM is not set
624# CONFIG_RAW_DRIVER is not set 659# CONFIG_RAW_DRIVER is not set
@@ -627,7 +662,6 @@ CONFIG_GEN_RTC=y
627# TPM devices 662# TPM devices
628# 663#
629# CONFIG_TCG_TPM is not set 664# CONFIG_TCG_TPM is not set
630# CONFIG_TELCLOCK is not set
631 665
632# 666#
633# I2C support 667# I2C support
@@ -693,6 +727,7 @@ CONFIG_I2C_MPC=y
693# 727#
694# Dallas's 1-wire bus 728# Dallas's 1-wire bus
695# 729#
730# CONFIG_W1 is not set
696 731
697# 732#
698# Hardware Monitoring support 733# Hardware Monitoring support
@@ -726,29 +761,27 @@ CONFIG_HWMON=y
726# CONFIG_SENSORS_LM92 is not set 761# CONFIG_SENSORS_LM92 is not set
727# CONFIG_SENSORS_MAX1619 is not set 762# CONFIG_SENSORS_MAX1619 is not set
728# CONFIG_SENSORS_PC87360 is not set 763# CONFIG_SENSORS_PC87360 is not set
764# CONFIG_SENSORS_PC87427 is not set
729# CONFIG_SENSORS_SIS5595 is not set 765# CONFIG_SENSORS_SIS5595 is not set
730# CONFIG_SENSORS_SMSC47M1 is not set 766# CONFIG_SENSORS_SMSC47M1 is not set
731# CONFIG_SENSORS_SMSC47M192 is not set 767# CONFIG_SENSORS_SMSC47M192 is not set
732# CONFIG_SENSORS_SMSC47B397 is not set 768# CONFIG_SENSORS_SMSC47B397 is not set
733# CONFIG_SENSORS_VIA686A is not set 769# CONFIG_SENSORS_VIA686A is not set
770# CONFIG_SENSORS_VT1211 is not set
734# CONFIG_SENSORS_VT8231 is not set 771# CONFIG_SENSORS_VT8231 is not set
735# CONFIG_SENSORS_W83781D is not set 772# CONFIG_SENSORS_W83781D is not set
736# CONFIG_SENSORS_W83791D is not set 773# CONFIG_SENSORS_W83791D is not set
737# CONFIG_SENSORS_W83792D is not set 774# CONFIG_SENSORS_W83792D is not set
775# CONFIG_SENSORS_W83793 is not set
738# CONFIG_SENSORS_W83L785TS is not set 776# CONFIG_SENSORS_W83L785TS is not set
739# CONFIG_SENSORS_W83627HF is not set 777# CONFIG_SENSORS_W83627HF is not set
740# CONFIG_SENSORS_W83627EHF is not set 778# CONFIG_SENSORS_W83627EHF is not set
741# CONFIG_HWMON_DEBUG_CHIP is not set 779# CONFIG_HWMON_DEBUG_CHIP is not set
742 780
743# 781#
744# Misc devices
745#
746
747#
748# Multimedia devices 782# Multimedia devices
749# 783#
750# CONFIG_VIDEO_DEV is not set 784# CONFIG_VIDEO_DEV is not set
751CONFIG_VIDEO_V4L2=y
752 785
753# 786#
754# Digital Video Broadcasting Devices 787# Digital Video Broadcasting Devices
@@ -760,6 +793,7 @@ CONFIG_VIDEO_V4L2=y
760# 793#
761CONFIG_FIRMWARE_EDID=y 794CONFIG_FIRMWARE_EDID=y
762# CONFIG_FB is not set 795# CONFIG_FB is not set
796# CONFIG_FB_IBM_GXT4500 is not set
763# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 797# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
764 798
765# 799#
@@ -768,6 +802,11 @@ CONFIG_FIRMWARE_EDID=y
768# CONFIG_SOUND is not set 802# CONFIG_SOUND is not set
769 803
770# 804#
805# HID Devices
806#
807CONFIG_HID=y
808
809#
771# USB support 810# USB support
772# 811#
773CONFIG_USB_ARCH_HAS_HCD=y 812CONFIG_USB_ARCH_HAS_HCD=y
@@ -830,6 +869,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
830# 869#
831 870
832# 871#
872# Virtualization
873#
874
875#
833# File systems 876# File systems
834# 877#
835CONFIG_EXT2_FS=y 878CONFIG_EXT2_FS=y
@@ -839,6 +882,7 @@ CONFIG_EXT3_FS=y
839CONFIG_EXT3_FS_XATTR=y 882CONFIG_EXT3_FS_XATTR=y
840# CONFIG_EXT3_FS_POSIX_ACL is not set 883# CONFIG_EXT3_FS_POSIX_ACL is not set
841# CONFIG_EXT3_FS_SECURITY is not set 884# CONFIG_EXT3_FS_SECURITY is not set
885# CONFIG_EXT4DEV_FS is not set
842CONFIG_JBD=y 886CONFIG_JBD=y
843# CONFIG_JBD_DEBUG is not set 887# CONFIG_JBD_DEBUG is not set
844CONFIG_FS_MBCACHE=y 888CONFIG_FS_MBCACHE=y
@@ -846,6 +890,7 @@ CONFIG_FS_MBCACHE=y
846# CONFIG_JFS_FS is not set 890# CONFIG_JFS_FS is not set
847# CONFIG_FS_POSIX_ACL is not set 891# CONFIG_FS_POSIX_ACL is not set
848# CONFIG_XFS_FS is not set 892# CONFIG_XFS_FS is not set
893# CONFIG_GFS2_FS is not set
849# CONFIG_OCFS2_FS is not set 894# CONFIG_OCFS2_FS is not set
850# CONFIG_MINIX_FS is not set 895# CONFIG_MINIX_FS is not set
851# CONFIG_ROMFS_FS is not set 896# CONFIG_ROMFS_FS is not set
@@ -875,8 +920,10 @@ CONFIG_DNOTIFY=y
875# 920#
876CONFIG_PROC_FS=y 921CONFIG_PROC_FS=y
877CONFIG_PROC_KCORE=y 922CONFIG_PROC_KCORE=y
923CONFIG_PROC_SYSCTL=y
878CONFIG_SYSFS=y 924CONFIG_SYSFS=y
879CONFIG_TMPFS=y 925CONFIG_TMPFS=y
926# CONFIG_TMPFS_POSIX_ACL is not set
880# CONFIG_HUGETLB_PAGE is not set 927# CONFIG_HUGETLB_PAGE is not set
881CONFIG_RAMFS=y 928CONFIG_RAMFS=y
882# CONFIG_CONFIGFS_FS is not set 929# CONFIG_CONFIGFS_FS is not set
@@ -945,20 +992,27 @@ CONFIG_PARTITION_ADVANCED=y
945# CONFIG_NLS is not set 992# CONFIG_NLS is not set
946 993
947# 994#
995# Distributed Lock Manager
996#
997# CONFIG_DLM is not set
998
999#
948# QE Options 1000# QE Options
949# 1001#
950# CONFIG_UCC_SLOW is not set 1002CONFIG_UCC_SLOW=y
951CONFIG_UCC_FAST=y 1003CONFIG_UCC_FAST=y
952CONFIG_UCC=y 1004CONFIG_UCC=y
953 1005
954# 1006#
955# Library routines 1007# Library routines
956# 1008#
1009CONFIG_BITREVERSE=y
957# CONFIG_CRC_CCITT is not set 1010# CONFIG_CRC_CCITT is not set
958# CONFIG_CRC16 is not set 1011# CONFIG_CRC16 is not set
959CONFIG_CRC32=y 1012CONFIG_CRC32=y
960# CONFIG_LIBCRC32C is not set 1013# CONFIG_LIBCRC32C is not set
961CONFIG_PLIST=y 1014CONFIG_PLIST=y
1015CONFIG_IOMAP_COPY=y
962 1016
963# 1017#
964# Instrumentation Support 1018# Instrumentation Support
@@ -969,11 +1023,14 @@ CONFIG_PLIST=y
969# Kernel hacking 1023# Kernel hacking
970# 1024#
971# CONFIG_PRINTK_TIME is not set 1025# CONFIG_PRINTK_TIME is not set
1026CONFIG_ENABLE_MUST_CHECK=y
972# CONFIG_MAGIC_SYSRQ is not set 1027# CONFIG_MAGIC_SYSRQ is not set
973# CONFIG_UNUSED_SYMBOLS is not set 1028# CONFIG_UNUSED_SYMBOLS is not set
1029# CONFIG_DEBUG_FS is not set
1030# CONFIG_HEADERS_CHECK is not set
974# CONFIG_DEBUG_KERNEL is not set 1031# CONFIG_DEBUG_KERNEL is not set
975CONFIG_LOG_BUF_SHIFT=14 1032CONFIG_LOG_BUF_SHIFT=14
976# CONFIG_DEBUG_FS is not set 1033# CONFIG_DEBUG_BUGVERBOSE is not set
977# CONFIG_BOOTX_TEXT is not set 1034# CONFIG_BOOTX_TEXT is not set
978# CONFIG_SERIAL_TEXT_DEBUG is not set 1035# CONFIG_SERIAL_TEXT_DEBUG is not set
979# CONFIG_PPC_EARLY_DEBUG is not set 1036# CONFIG_PPC_EARLY_DEBUG is not set
@@ -988,7 +1045,11 @@ CONFIG_LOG_BUF_SHIFT=14
988# Cryptographic options 1045# Cryptographic options
989# 1046#
990CONFIG_CRYPTO=y 1047CONFIG_CRYPTO=y
1048CONFIG_CRYPTO_ALGAPI=y
1049CONFIG_CRYPTO_BLKCIPHER=y
1050CONFIG_CRYPTO_MANAGER=y
991# CONFIG_CRYPTO_HMAC is not set 1051# CONFIG_CRYPTO_HMAC is not set
1052# CONFIG_CRYPTO_XCBC is not set
992# CONFIG_CRYPTO_NULL is not set 1053# CONFIG_CRYPTO_NULL is not set
993# CONFIG_CRYPTO_MD4 is not set 1054# CONFIG_CRYPTO_MD4 is not set
994CONFIG_CRYPTO_MD5=y 1055CONFIG_CRYPTO_MD5=y
@@ -997,6 +1058,10 @@ CONFIG_CRYPTO_MD5=y
997# CONFIG_CRYPTO_SHA512 is not set 1058# CONFIG_CRYPTO_SHA512 is not set
998# CONFIG_CRYPTO_WP512 is not set 1059# CONFIG_CRYPTO_WP512 is not set
999# CONFIG_CRYPTO_TGR192 is not set 1060# CONFIG_CRYPTO_TGR192 is not set
1061# CONFIG_CRYPTO_GF128MUL is not set
1062CONFIG_CRYPTO_ECB=m
1063CONFIG_CRYPTO_CBC=y
1064# CONFIG_CRYPTO_LRW is not set
1000CONFIG_CRYPTO_DES=y 1065CONFIG_CRYPTO_DES=y
1001# CONFIG_CRYPTO_BLOWFISH is not set 1066# CONFIG_CRYPTO_BLOWFISH is not set
1002# CONFIG_CRYPTO_TWOFISH is not set 1067# CONFIG_CRYPTO_TWOFISH is not set
diff --git a/arch/powerpc/configs/mpc8540_ads_defconfig b/arch/powerpc/configs/mpc8540_ads_defconfig
index 67e7d0b5793d..17120c472304 100644
--- a/arch/powerpc/configs/mpc8540_ads_defconfig
+++ b/arch/powerpc/configs/mpc8540_ads_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:29:23 2006 4# Mon Jan 22 22:25:24 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -21,13 +22,14 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
21CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
24CONFIG_DEFAULT_UIMAGE=y 27CONFIG_DEFAULT_UIMAGE=y
25 28
26# 29#
27# Processor support 30# Processor support
28# 31#
29# CONFIG_CLASSIC32 is not set 32# CONFIG_CLASSIC32 is not set
30# CONFIG_PPC_52xx is not set
31# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
32# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
33CONFIG_PPC_85xx=y 35CONFIG_PPC_85xx=y
@@ -38,6 +40,8 @@ CONFIG_PPC_85xx=y
38# CONFIG_E200 is not set 40# CONFIG_E200 is not set
39CONFIG_85xx=y 41CONFIG_85xx=y
40CONFIG_E500=y 42CONFIG_E500=y
43# CONFIG_PPC_DCR_NATIVE is not set
44# CONFIG_PPC_DCR_MMIO is not set
41CONFIG_BOOKE=y 45CONFIG_BOOKE=y
42CONFIG_FSL_BOOKE=y 46CONFIG_FSL_BOOKE=y
43# CONFIG_PHYS_64BIT is not set 47# CONFIG_PHYS_64BIT is not set
@@ -58,16 +62,20 @@ CONFIG_LOCALVERSION=""
58CONFIG_LOCALVERSION_AUTO=y 62CONFIG_LOCALVERSION_AUTO=y
59CONFIG_SWAP=y 63CONFIG_SWAP=y
60CONFIG_SYSVIPC=y 64CONFIG_SYSVIPC=y
65# CONFIG_IPC_NS is not set
61# CONFIG_POSIX_MQUEUE is not set 66# CONFIG_POSIX_MQUEUE is not set
62# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
63# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
64CONFIG_SYSCTL=y 69# CONFIG_UTS_NS is not set
65# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
66# CONFIG_IKCONFIG is not set 71# CONFIG_IKCONFIG is not set
72CONFIG_SYSFS_DEPRECATED=y
67# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
68CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
76CONFIG_SYSCTL=y
70CONFIG_EMBEDDED=y 77CONFIG_EMBEDDED=y
78CONFIG_SYSCTL_SYSCALL=y
71CONFIG_KALLSYMS=y 79CONFIG_KALLSYMS=y
72# CONFIG_KALLSYMS_ALL is not set 80# CONFIG_KALLSYMS_ALL is not set
73# CONFIG_KALLSYMS_EXTRA_PASS is not set 81# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -76,12 +84,12 @@ CONFIG_PRINTK=y
76CONFIG_BUG=y 84CONFIG_BUG=y
77CONFIG_ELF_CORE=y 85CONFIG_ELF_CORE=y
78CONFIG_BASE_FULL=y 86CONFIG_BASE_FULL=y
79CONFIG_RT_MUTEXES=y
80CONFIG_FUTEX=y 87CONFIG_FUTEX=y
81CONFIG_EPOLL=y 88CONFIG_EPOLL=y
82CONFIG_SHMEM=y 89CONFIG_SHMEM=y
83CONFIG_SLAB=y 90CONFIG_SLAB=y
84CONFIG_VM_EVENT_COUNTERS=y 91CONFIG_VM_EVENT_COUNTERS=y
92CONFIG_RT_MUTEXES=y
85# CONFIG_TINY_SHMEM is not set 93# CONFIG_TINY_SHMEM is not set
86CONFIG_BASE_SMALL=0 94CONFIG_BASE_SMALL=0
87# CONFIG_SLOB is not set 95# CONFIG_SLOB is not set
@@ -94,6 +102,7 @@ CONFIG_BASE_SMALL=0
94# 102#
95# Block layer 103# Block layer
96# 104#
105CONFIG_BLOCK=y
97# CONFIG_LBD is not set 106# CONFIG_LBD is not set
98# CONFIG_BLK_DEV_IO_TRACE is not set 107# CONFIG_BLK_DEV_IO_TRACE is not set
99# CONFIG_LSF is not set 108# CONFIG_LSF is not set
@@ -116,6 +125,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
116# Platform support 125# Platform support
117# 126#
118CONFIG_MPC8540_ADS=y 127CONFIG_MPC8540_ADS=y
128# CONFIG_MPC8560_ADS is not set
119# CONFIG_MPC85xx_CDS is not set 129# CONFIG_MPC85xx_CDS is not set
120CONFIG_MPC8540=y 130CONFIG_MPC8540=y
121CONFIG_PPC_INDIRECT_PCI_BE=y 131CONFIG_PPC_INDIRECT_PCI_BE=y
@@ -127,6 +137,7 @@ CONFIG_MPIC=y
127# CONFIG_HIGHMEM is not set 137# CONFIG_HIGHMEM is not set
128# CONFIG_HZ_100 is not set 138# CONFIG_HZ_100 is not set
129CONFIG_HZ_250=y 139CONFIG_HZ_250=y
140# CONFIG_HZ_300 is not set
130# CONFIG_HZ_1000 is not set 141# CONFIG_HZ_1000 is not set
131CONFIG_HZ=250 142CONFIG_HZ=250
132CONFIG_PREEMPT_NONE=y 143CONFIG_PREEMPT_NONE=y
@@ -137,6 +148,7 @@ CONFIG_BINFMT_MISC=y
137CONFIG_MATH_EMULATION=y 148CONFIG_MATH_EMULATION=y
138CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 149CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
139CONFIG_ARCH_FLATMEM_ENABLE=y 150CONFIG_ARCH_FLATMEM_ENABLE=y
151CONFIG_ARCH_POPULATES_NODE_MAP=y
140CONFIG_SELECT_MEMORY_MODEL=y 152CONFIG_SELECT_MEMORY_MODEL=y
141CONFIG_FLATMEM_MANUAL=y 153CONFIG_FLATMEM_MANUAL=y
142# CONFIG_DISCONTIGMEM_MANUAL is not set 154# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -199,6 +211,7 @@ CONFIG_PACKET=y
199CONFIG_UNIX=y 211CONFIG_UNIX=y
200CONFIG_XFRM=y 212CONFIG_XFRM=y
201CONFIG_XFRM_USER=y 213CONFIG_XFRM_USER=y
214# CONFIG_XFRM_SUB_POLICY is not set
202# CONFIG_NET_KEY is not set 215# CONFIG_NET_KEY is not set
203CONFIG_INET=y 216CONFIG_INET=y
204CONFIG_IP_MULTICAST=y 217CONFIG_IP_MULTICAST=y
@@ -220,10 +233,13 @@ CONFIG_SYN_COOKIES=y
220# CONFIG_INET_TUNNEL is not set 233# CONFIG_INET_TUNNEL is not set
221CONFIG_INET_XFRM_MODE_TRANSPORT=y 234CONFIG_INET_XFRM_MODE_TRANSPORT=y
222CONFIG_INET_XFRM_MODE_TUNNEL=y 235CONFIG_INET_XFRM_MODE_TUNNEL=y
236CONFIG_INET_XFRM_MODE_BEET=y
223CONFIG_INET_DIAG=y 237CONFIG_INET_DIAG=y
224CONFIG_INET_TCP_DIAG=y 238CONFIG_INET_TCP_DIAG=y
225# CONFIG_TCP_CONG_ADVANCED is not set 239# CONFIG_TCP_CONG_ADVANCED is not set
226CONFIG_TCP_CONG_BIC=y 240CONFIG_TCP_CONG_CUBIC=y
241CONFIG_DEFAULT_TCP_CONG="cubic"
242# CONFIG_TCP_MD5SIG is not set
227# CONFIG_IPV6 is not set 243# CONFIG_IPV6 is not set
228# CONFIG_INET6_XFRM_TUNNEL is not set 244# CONFIG_INET6_XFRM_TUNNEL is not set
229# CONFIG_INET6_TUNNEL is not set 245# CONFIG_INET6_TUNNEL is not set
@@ -253,7 +269,6 @@ CONFIG_TCP_CONG_BIC=y
253# CONFIG_ATALK is not set 269# CONFIG_ATALK is not set
254# CONFIG_X25 is not set 270# CONFIG_X25 is not set
255# CONFIG_LAPB is not set 271# CONFIG_LAPB is not set
256# CONFIG_NET_DIVERT is not set
257# CONFIG_ECONET is not set 272# CONFIG_ECONET is not set
258# CONFIG_WAN_ROUTER is not set 273# CONFIG_WAN_ROUTER is not set
259 274
@@ -320,6 +335,11 @@ CONFIG_BLK_DEV_INITRD=y
320# CONFIG_ATA_OVER_ETH is not set 335# CONFIG_ATA_OVER_ETH is not set
321 336
322# 337#
338# Misc devices
339#
340# CONFIG_TIFM_CORE is not set
341
342#
323# ATA/ATAPI/MFM/RLL support 343# ATA/ATAPI/MFM/RLL support
324# 344#
325# CONFIG_IDE is not set 345# CONFIG_IDE is not set
@@ -329,6 +349,12 @@ CONFIG_BLK_DEV_INITRD=y
329# 349#
330# CONFIG_RAID_ATTRS is not set 350# CONFIG_RAID_ATTRS is not set
331# CONFIG_SCSI is not set 351# CONFIG_SCSI is not set
352# CONFIG_SCSI_NETLINK is not set
353
354#
355# Serial ATA (prod) and Parallel ATA (experimental) drivers
356#
357# CONFIG_ATA is not set
332 358
333# 359#
334# Multi-device support (RAID and LVM) 360# Multi-device support (RAID and LVM)
@@ -351,6 +377,7 @@ CONFIG_BLK_DEV_INITRD=y
351# 377#
352# Macintosh device drivers 378# Macintosh device drivers
353# 379#
380# CONFIG_MAC_EMUMOUSEBTN is not set
354# CONFIG_WINDFARM is not set 381# CONFIG_WINDFARM is not set
355 382
356# 383#
@@ -377,6 +404,7 @@ CONFIG_PHYLIB=y
377# CONFIG_CICADA_PHY is not set 404# CONFIG_CICADA_PHY is not set
378# CONFIG_VITESSE_PHY is not set 405# CONFIG_VITESSE_PHY is not set
379# CONFIG_SMSC_PHY is not set 406# CONFIG_SMSC_PHY is not set
407# CONFIG_BROADCOM_PHY is not set
380# CONFIG_FIXED_PHY is not set 408# CONFIG_FIXED_PHY is not set
381 409
382# 410#
@@ -429,6 +457,7 @@ CONFIG_GFAR_NAPI=y
429# Input device support 457# Input device support
430# 458#
431CONFIG_INPUT=y 459CONFIG_INPUT=y
460# CONFIG_INPUT_FF_MEMLESS is not set
432 461
433# 462#
434# Userland interfaces 463# Userland interfaces
@@ -472,6 +501,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
472# 501#
473# Non-8250 serial port support 502# Non-8250 serial port support
474# 503#
504# CONFIG_SERIAL_UARTLITE is not set
475CONFIG_SERIAL_CORE=y 505CONFIG_SERIAL_CORE=y
476CONFIG_SERIAL_CORE_CONSOLE=y 506CONFIG_SERIAL_CORE_CONSOLE=y
477CONFIG_UNIX98_PTYS=y 507CONFIG_UNIX98_PTYS=y
@@ -493,17 +523,12 @@ CONFIG_GEN_RTC=y
493# CONFIG_GEN_RTC_X is not set 523# CONFIG_GEN_RTC_X is not set
494# CONFIG_DTLK is not set 524# CONFIG_DTLK is not set
495# CONFIG_R3964 is not set 525# CONFIG_R3964 is not set
496
497#
498# Ftape, the floppy tape device driver
499#
500# CONFIG_RAW_DRIVER is not set 526# CONFIG_RAW_DRIVER is not set
501 527
502# 528#
503# TPM devices 529# TPM devices
504# 530#
505# CONFIG_TCG_TPM is not set 531# CONFIG_TCG_TPM is not set
506# CONFIG_TELCLOCK is not set
507 532
508# 533#
509# I2C support 534# I2C support
@@ -519,6 +544,7 @@ CONFIG_GEN_RTC=y
519# 544#
520# Dallas's 1-wire bus 545# Dallas's 1-wire bus
521# 546#
547# CONFIG_W1 is not set
522 548
523# 549#
524# Hardware Monitoring support 550# Hardware Monitoring support
@@ -527,17 +553,14 @@ CONFIG_HWMON=y
527# CONFIG_HWMON_VID is not set 553# CONFIG_HWMON_VID is not set
528# CONFIG_SENSORS_ABITUGURU is not set 554# CONFIG_SENSORS_ABITUGURU is not set
529# CONFIG_SENSORS_F71805F is not set 555# CONFIG_SENSORS_F71805F is not set
556# CONFIG_SENSORS_PC87427 is not set
557# CONFIG_SENSORS_VT1211 is not set
530# CONFIG_HWMON_DEBUG_CHIP is not set 558# CONFIG_HWMON_DEBUG_CHIP is not set
531 559
532# 560#
533# Misc devices
534#
535
536#
537# Multimedia devices 561# Multimedia devices
538# 562#
539# CONFIG_VIDEO_DEV is not set 563# CONFIG_VIDEO_DEV is not set
540CONFIG_VIDEO_V4L2=y
541 564
542# 565#
543# Digital Video Broadcasting Devices 566# Digital Video Broadcasting Devices
@@ -549,6 +572,7 @@ CONFIG_VIDEO_V4L2=y
549# 572#
550CONFIG_FIRMWARE_EDID=y 573CONFIG_FIRMWARE_EDID=y
551# CONFIG_FB is not set 574# CONFIG_FB is not set
575# CONFIG_FB_IBM_GXT4500 is not set
552# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 576# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
553 577
554# 578#
@@ -557,6 +581,11 @@ CONFIG_FIRMWARE_EDID=y
557# CONFIG_SOUND is not set 581# CONFIG_SOUND is not set
558 582
559# 583#
584# HID Devices
585#
586CONFIG_HID=y
587
588#
560# USB support 589# USB support
561# 590#
562# CONFIG_USB_ARCH_HAS_HCD is not set 591# CONFIG_USB_ARCH_HAS_HCD is not set
@@ -617,6 +646,10 @@ CONFIG_FIRMWARE_EDID=y
617# 646#
618 647
619# 648#
649# Virtualization
650#
651
652#
620# File systems 653# File systems
621# 654#
622CONFIG_EXT2_FS=y 655CONFIG_EXT2_FS=y
@@ -626,6 +659,7 @@ CONFIG_EXT3_FS=y
626CONFIG_EXT3_FS_XATTR=y 659CONFIG_EXT3_FS_XATTR=y
627# CONFIG_EXT3_FS_POSIX_ACL is not set 660# CONFIG_EXT3_FS_POSIX_ACL is not set
628# CONFIG_EXT3_FS_SECURITY is not set 661# CONFIG_EXT3_FS_SECURITY is not set
662# CONFIG_EXT4DEV_FS is not set
629CONFIG_JBD=y 663CONFIG_JBD=y
630# CONFIG_JBD_DEBUG is not set 664# CONFIG_JBD_DEBUG is not set
631CONFIG_FS_MBCACHE=y 665CONFIG_FS_MBCACHE=y
@@ -633,6 +667,7 @@ CONFIG_FS_MBCACHE=y
633# CONFIG_JFS_FS is not set 667# CONFIG_JFS_FS is not set
634# CONFIG_FS_POSIX_ACL is not set 668# CONFIG_FS_POSIX_ACL is not set
635# CONFIG_XFS_FS is not set 669# CONFIG_XFS_FS is not set
670# CONFIG_GFS2_FS is not set
636# CONFIG_OCFS2_FS is not set 671# CONFIG_OCFS2_FS is not set
637# CONFIG_MINIX_FS is not set 672# CONFIG_MINIX_FS is not set
638# CONFIG_ROMFS_FS is not set 673# CONFIG_ROMFS_FS is not set
@@ -662,8 +697,10 @@ CONFIG_DNOTIFY=y
662# 697#
663CONFIG_PROC_FS=y 698CONFIG_PROC_FS=y
664CONFIG_PROC_KCORE=y 699CONFIG_PROC_KCORE=y
700CONFIG_PROC_SYSCTL=y
665CONFIG_SYSFS=y 701CONFIG_SYSFS=y
666CONFIG_TMPFS=y 702CONFIG_TMPFS=y
703# CONFIG_TMPFS_POSIX_ACL is not set
667# CONFIG_HUGETLB_PAGE is not set 704# CONFIG_HUGETLB_PAGE is not set
668CONFIG_RAMFS=y 705CONFIG_RAMFS=y
669# CONFIG_CONFIGFS_FS is not set 706# CONFIG_CONFIGFS_FS is not set
@@ -729,13 +766,20 @@ CONFIG_PARTITION_ADVANCED=y
729# CONFIG_NLS is not set 766# CONFIG_NLS is not set
730 767
731# 768#
769# Distributed Lock Manager
770#
771# CONFIG_DLM is not set
772
773#
732# Library routines 774# Library routines
733# 775#
776CONFIG_BITREVERSE=y
734# CONFIG_CRC_CCITT is not set 777# CONFIG_CRC_CCITT is not set
735# CONFIG_CRC16 is not set 778# CONFIG_CRC16 is not set
736CONFIG_CRC32=y 779CONFIG_CRC32=y
737# CONFIG_LIBCRC32C is not set 780# CONFIG_LIBCRC32C is not set
738CONFIG_PLIST=y 781CONFIG_PLIST=y
782CONFIG_IOMAP_COPY=y
739 783
740# 784#
741# Instrumentation Support 785# Instrumentation Support
@@ -746,8 +790,11 @@ CONFIG_PLIST=y
746# Kernel hacking 790# Kernel hacking
747# 791#
748# CONFIG_PRINTK_TIME is not set 792# CONFIG_PRINTK_TIME is not set
793CONFIG_ENABLE_MUST_CHECK=y
749# CONFIG_MAGIC_SYSRQ is not set 794# CONFIG_MAGIC_SYSRQ is not set
750# CONFIG_UNUSED_SYMBOLS is not set 795# CONFIG_UNUSED_SYMBOLS is not set
796# CONFIG_DEBUG_FS is not set
797# CONFIG_HEADERS_CHECK is not set
751CONFIG_DEBUG_KERNEL=y 798CONFIG_DEBUG_KERNEL=y
752CONFIG_LOG_BUF_SHIFT=14 799CONFIG_LOG_BUF_SHIFT=14
753CONFIG_DETECT_SOFTLOCKUP=y 800CONFIG_DETECT_SOFTLOCKUP=y
@@ -761,10 +808,10 @@ CONFIG_DEBUG_MUTEXES=y
761# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 808# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
762# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 809# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
763# CONFIG_DEBUG_KOBJECT is not set 810# CONFIG_DEBUG_KOBJECT is not set
811# CONFIG_DEBUG_BUGVERBOSE is not set
764# CONFIG_DEBUG_INFO is not set 812# CONFIG_DEBUG_INFO is not set
765# CONFIG_DEBUG_FS is not set
766# CONFIG_DEBUG_VM is not set 813# CONFIG_DEBUG_VM is not set
767# CONFIG_UNWIND_INFO is not set 814# CONFIG_DEBUG_LIST is not set
768CONFIG_FORCED_INLINING=y 815CONFIG_FORCED_INLINING=y
769# CONFIG_RCU_TORTURE_TEST is not set 816# CONFIG_RCU_TORTURE_TEST is not set
770# CONFIG_DEBUGGER is not set 817# CONFIG_DEBUGGER is not set
@@ -782,7 +829,3 @@ CONFIG_FORCED_INLINING=y
782# Cryptographic options 829# Cryptographic options
783# 830#
784# CONFIG_CRYPTO is not set 831# CONFIG_CRYPTO is not set
785
786#
787# Hardware crypto devices
788#
diff --git a/arch/powerpc/configs/mpc8560_ads_defconfig b/arch/powerpc/configs/mpc8560_ads_defconfig
index ddc2a7b07ba0..ecaa267a853c 100644
--- a/arch/powerpc/configs/mpc8560_ads_defconfig
+++ b/arch/powerpc/configs/mpc8560_ads_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc4 3# Linux kernel version: 2.6.20-rc5
4# Fri Aug 11 16:45:05 2006 4# Mon Jan 22 22:25:53 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -21,13 +22,14 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
21CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
22# CONFIG_PPC_UDBG_16550 is not set 23# CONFIG_PPC_UDBG_16550 is not set
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
24CONFIG_DEFAULT_UIMAGE=y 27CONFIG_DEFAULT_UIMAGE=y
25 28
26# 29#
27# Processor support 30# Processor support
28# 31#
29# CONFIG_CLASSIC32 is not set 32# CONFIG_CLASSIC32 is not set
30# CONFIG_PPC_52xx is not set
31# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
32# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
33CONFIG_PPC_85xx=y 35CONFIG_PPC_85xx=y
@@ -38,6 +40,8 @@ CONFIG_PPC_85xx=y
38# CONFIG_E200 is not set 40# CONFIG_E200 is not set
39CONFIG_85xx=y 41CONFIG_85xx=y
40CONFIG_E500=y 42CONFIG_E500=y
43# CONFIG_PPC_DCR_NATIVE is not set
44# CONFIG_PPC_DCR_MMIO is not set
41CONFIG_BOOKE=y 45CONFIG_BOOKE=y
42CONFIG_FSL_BOOKE=y 46CONFIG_FSL_BOOKE=y
43# CONFIG_PHYS_64BIT is not set 47# CONFIG_PHYS_64BIT is not set
@@ -58,16 +62,20 @@ CONFIG_LOCALVERSION=""
58CONFIG_LOCALVERSION_AUTO=y 62CONFIG_LOCALVERSION_AUTO=y
59CONFIG_SWAP=y 63CONFIG_SWAP=y
60CONFIG_SYSVIPC=y 64CONFIG_SYSVIPC=y
65# CONFIG_IPC_NS is not set
61# CONFIG_POSIX_MQUEUE is not set 66# CONFIG_POSIX_MQUEUE is not set
62# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
63# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
64CONFIG_SYSCTL=y 69# CONFIG_UTS_NS is not set
65# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
66# CONFIG_IKCONFIG is not set 71# CONFIG_IKCONFIG is not set
72CONFIG_SYSFS_DEPRECATED=y
67# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
68CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
76CONFIG_SYSCTL=y
70CONFIG_EMBEDDED=y 77CONFIG_EMBEDDED=y
78CONFIG_SYSCTL_SYSCALL=y
71CONFIG_KALLSYMS=y 79CONFIG_KALLSYMS=y
72# CONFIG_KALLSYMS_ALL is not set 80# CONFIG_KALLSYMS_ALL is not set
73# CONFIG_KALLSYMS_EXTRA_PASS is not set 81# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -76,12 +84,12 @@ CONFIG_PRINTK=y
76CONFIG_BUG=y 84CONFIG_BUG=y
77CONFIG_ELF_CORE=y 85CONFIG_ELF_CORE=y
78CONFIG_BASE_FULL=y 86CONFIG_BASE_FULL=y
79CONFIG_RT_MUTEXES=y
80CONFIG_FUTEX=y 87CONFIG_FUTEX=y
81CONFIG_EPOLL=y 88CONFIG_EPOLL=y
82CONFIG_SHMEM=y 89CONFIG_SHMEM=y
83CONFIG_SLAB=y 90CONFIG_SLAB=y
84CONFIG_VM_EVENT_COUNTERS=y 91CONFIG_VM_EVENT_COUNTERS=y
92CONFIG_RT_MUTEXES=y
85# CONFIG_TINY_SHMEM is not set 93# CONFIG_TINY_SHMEM is not set
86CONFIG_BASE_SMALL=0 94CONFIG_BASE_SMALL=0
87# CONFIG_SLOB is not set 95# CONFIG_SLOB is not set
@@ -94,6 +102,7 @@ CONFIG_BASE_SMALL=0
94# 102#
95# Block layer 103# Block layer
96# 104#
105CONFIG_BLOCK=y
97# CONFIG_LBD is not set 106# CONFIG_LBD is not set
98# CONFIG_BLK_DEV_IO_TRACE is not set 107# CONFIG_BLK_DEV_IO_TRACE is not set
99# CONFIG_LSF is not set 108# CONFIG_LSF is not set
@@ -110,7 +119,6 @@ CONFIG_DEFAULT_AS=y
110# CONFIG_DEFAULT_CFQ is not set 119# CONFIG_DEFAULT_CFQ is not set
111# CONFIG_DEFAULT_NOOP is not set 120# CONFIG_DEFAULT_NOOP is not set
112CONFIG_DEFAULT_IOSCHED="anticipatory" 121CONFIG_DEFAULT_IOSCHED="anticipatory"
113CONFIG_MPIC=y
114CONFIG_CPM2=y 122CONFIG_CPM2=y
115# CONFIG_WANT_EARLY_SERIAL is not set 123# CONFIG_WANT_EARLY_SERIAL is not set
116 124
@@ -122,6 +130,7 @@ CONFIG_MPC8560_ADS=y
122# CONFIG_MPC85xx_CDS is not set 130# CONFIG_MPC85xx_CDS is not set
123CONFIG_MPC8560=y 131CONFIG_MPC8560=y
124CONFIG_PPC_INDIRECT_PCI_BE=y 132CONFIG_PPC_INDIRECT_PCI_BE=y
133CONFIG_MPIC=y
125 134
126# 135#
127# Kernel options 136# Kernel options
@@ -129,6 +138,7 @@ CONFIG_PPC_INDIRECT_PCI_BE=y
129# CONFIG_HIGHMEM is not set 138# CONFIG_HIGHMEM is not set
130# CONFIG_HZ_100 is not set 139# CONFIG_HZ_100 is not set
131CONFIG_HZ_250=y 140CONFIG_HZ_250=y
141# CONFIG_HZ_300 is not set
132# CONFIG_HZ_1000 is not set 142# CONFIG_HZ_1000 is not set
133CONFIG_HZ=250 143CONFIG_HZ=250
134CONFIG_PREEMPT_NONE=y 144CONFIG_PREEMPT_NONE=y
@@ -140,6 +150,7 @@ CONFIG_BINFMT_MISC=y
140CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 150CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
141# CONFIG_PC_KEYBOARD is not set 151# CONFIG_PC_KEYBOARD is not set
142CONFIG_ARCH_FLATMEM_ENABLE=y 152CONFIG_ARCH_FLATMEM_ENABLE=y
153CONFIG_ARCH_POPULATES_NODE_MAP=y
143CONFIG_SELECT_MEMORY_MODEL=y 154CONFIG_SELECT_MEMORY_MODEL=y
144CONFIG_FLATMEM_MANUAL=y 155CONFIG_FLATMEM_MANUAL=y
145# CONFIG_DISCONTIGMEM_MANUAL is not set 156# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -152,13 +163,13 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
152# CONFIG_PROC_DEVICETREE is not set 163# CONFIG_PROC_DEVICETREE is not set
153# CONFIG_CMDLINE_BOOL is not set 164# CONFIG_CMDLINE_BOOL is not set
154# CONFIG_PM is not set 165# CONFIG_PM is not set
155# CONFIG_SOFTWARE_SUSPEND is not set
156# CONFIG_SECCOMP is not set 166# CONFIG_SECCOMP is not set
157CONFIG_ISA_DMA_API=y 167CONFIG_ISA_DMA_API=y
158 168
159# 169#
160# Bus options 170# Bus options
161# 171#
172# CONFIG_MPIC_WEIRD is not set
162# CONFIG_PPC_I8259 is not set 173# CONFIG_PPC_I8259 is not set
163CONFIG_PPC_INDIRECT_PCI=y 174CONFIG_PPC_INDIRECT_PCI=y
164CONFIG_FSL_SOC=y 175CONFIG_FSL_SOC=y
@@ -205,6 +216,7 @@ CONFIG_PACKET=y
205CONFIG_UNIX=y 216CONFIG_UNIX=y
206CONFIG_XFRM=y 217CONFIG_XFRM=y
207# CONFIG_XFRM_USER is not set 218# CONFIG_XFRM_USER is not set
219# CONFIG_XFRM_SUB_POLICY is not set
208# CONFIG_NET_KEY is not set 220# CONFIG_NET_KEY is not set
209CONFIG_INET=y 221CONFIG_INET=y
210CONFIG_IP_MULTICAST=y 222CONFIG_IP_MULTICAST=y
@@ -226,10 +238,13 @@ CONFIG_SYN_COOKIES=y
226# CONFIG_INET_TUNNEL is not set 238# CONFIG_INET_TUNNEL is not set
227CONFIG_INET_XFRM_MODE_TRANSPORT=y 239CONFIG_INET_XFRM_MODE_TRANSPORT=y
228CONFIG_INET_XFRM_MODE_TUNNEL=y 240CONFIG_INET_XFRM_MODE_TUNNEL=y
241CONFIG_INET_XFRM_MODE_BEET=y
229CONFIG_INET_DIAG=y 242CONFIG_INET_DIAG=y
230CONFIG_INET_TCP_DIAG=y 243CONFIG_INET_TCP_DIAG=y
231# CONFIG_TCP_CONG_ADVANCED is not set 244# CONFIG_TCP_CONG_ADVANCED is not set
232CONFIG_TCP_CONG_BIC=y 245CONFIG_TCP_CONG_CUBIC=y
246CONFIG_DEFAULT_TCP_CONG="cubic"
247# CONFIG_TCP_MD5SIG is not set
233# CONFIG_IPV6 is not set 248# CONFIG_IPV6 is not set
234# CONFIG_INET6_XFRM_TUNNEL is not set 249# CONFIG_INET6_XFRM_TUNNEL is not set
235# CONFIG_INET6_TUNNEL is not set 250# CONFIG_INET6_TUNNEL is not set
@@ -259,7 +274,6 @@ CONFIG_TCP_CONG_BIC=y
259# CONFIG_ATALK is not set 274# CONFIG_ATALK is not set
260# CONFIG_X25 is not set 275# CONFIG_X25 is not set
261# CONFIG_LAPB is not set 276# CONFIG_LAPB is not set
262# CONFIG_NET_DIVERT is not set
263# CONFIG_ECONET is not set 277# CONFIG_ECONET is not set
264# CONFIG_WAN_ROUTER is not set 278# CONFIG_WAN_ROUTER is not set
265 279
@@ -331,6 +345,12 @@ CONFIG_BLK_DEV_INITRD=y
331# CONFIG_ATA_OVER_ETH is not set 345# CONFIG_ATA_OVER_ETH is not set
332 346
333# 347#
348# Misc devices
349#
350# CONFIG_SGI_IOC4 is not set
351# CONFIG_TIFM_CORE is not set
352
353#
334# ATA/ATAPI/MFM/RLL support 354# ATA/ATAPI/MFM/RLL support
335# 355#
336# CONFIG_IDE is not set 356# CONFIG_IDE is not set
@@ -340,6 +360,12 @@ CONFIG_BLK_DEV_INITRD=y
340# 360#
341# CONFIG_RAID_ATTRS is not set 361# CONFIG_RAID_ATTRS is not set
342# CONFIG_SCSI is not set 362# CONFIG_SCSI is not set
363# CONFIG_SCSI_NETLINK is not set
364
365#
366# Serial ATA (prod) and Parallel ATA (experimental) drivers
367#
368# CONFIG_ATA is not set
343 369
344# 370#
345# Multi-device support (RAID and LVM) 371# Multi-device support (RAID and LVM)
@@ -364,6 +390,7 @@ CONFIG_BLK_DEV_INITRD=y
364# 390#
365# Macintosh device drivers 391# Macintosh device drivers
366# 392#
393# CONFIG_MAC_EMUMOUSEBTN is not set
367# CONFIG_WINDFARM is not set 394# CONFIG_WINDFARM is not set
368 395
369# 396#
@@ -395,6 +422,7 @@ CONFIG_DAVICOM_PHY=y
395# CONFIG_CICADA_PHY is not set 422# CONFIG_CICADA_PHY is not set
396# CONFIG_VITESSE_PHY is not set 423# CONFIG_VITESSE_PHY is not set
397# CONFIG_SMSC_PHY is not set 424# CONFIG_SMSC_PHY is not set
425# CONFIG_BROADCOM_PHY is not set
398# CONFIG_FIXED_PHY is not set 426# CONFIG_FIXED_PHY is not set
399 427
400# 428#
@@ -437,6 +465,7 @@ CONFIG_E1000_NAPI=y
437# CONFIG_BNX2 is not set 465# CONFIG_BNX2 is not set
438CONFIG_GIANFAR=y 466CONFIG_GIANFAR=y
439CONFIG_GFAR_NAPI=y 467CONFIG_GFAR_NAPI=y
468# CONFIG_QLA3XXX is not set
440 469
441# 470#
442# Ethernet (10000 Mbit) 471# Ethernet (10000 Mbit)
@@ -445,6 +474,7 @@ CONFIG_GFAR_NAPI=y
445# CONFIG_IXGB is not set 474# CONFIG_IXGB is not set
446# CONFIG_S2IO is not set 475# CONFIG_S2IO is not set
447# CONFIG_MYRI10GE is not set 476# CONFIG_MYRI10GE is not set
477# CONFIG_NETXEN_NIC is not set
448 478
449# 479#
450# Token Ring devices 480# Token Ring devices
@@ -483,6 +513,7 @@ CONFIG_GFAR_NAPI=y
483# Input device support 513# Input device support
484# 514#
485CONFIG_INPUT=y 515CONFIG_INPUT=y
516# CONFIG_INPUT_FF_MEMLESS is not set
486 517
487# 518#
488# Userland interfaces 519# Userland interfaces
@@ -522,6 +553,7 @@ CONFIG_INPUT=y
522# 553#
523# Non-8250 serial port support 554# Non-8250 serial port support
524# 555#
556# CONFIG_SERIAL_UARTLITE is not set
525CONFIG_SERIAL_CORE=y 557CONFIG_SERIAL_CORE=y
526CONFIG_SERIAL_CORE_CONSOLE=y 558CONFIG_SERIAL_CORE_CONSOLE=y
527CONFIG_SERIAL_CPM=y 559CONFIG_SERIAL_CPM=y
@@ -536,7 +568,6 @@ CONFIG_SERIAL_CPM_SCC2=y
536CONFIG_UNIX98_PTYS=y 568CONFIG_UNIX98_PTYS=y
537CONFIG_LEGACY_PTYS=y 569CONFIG_LEGACY_PTYS=y
538CONFIG_LEGACY_PTY_COUNT=256 570CONFIG_LEGACY_PTY_COUNT=256
539# CONFIG_BRIQ_PANEL is not set
540 571
541# 572#
542# IPMI 573# IPMI
@@ -554,10 +585,6 @@ CONFIG_GEN_RTC=y
554# CONFIG_DTLK is not set 585# CONFIG_DTLK is not set
555# CONFIG_R3964 is not set 586# CONFIG_R3964 is not set
556# CONFIG_APPLICOM is not set 587# CONFIG_APPLICOM is not set
557
558#
559# Ftape, the floppy tape device driver
560#
561# CONFIG_AGP is not set 588# CONFIG_AGP is not set
562# CONFIG_DRM is not set 589# CONFIG_DRM is not set
563# CONFIG_RAW_DRIVER is not set 590# CONFIG_RAW_DRIVER is not set
@@ -566,7 +593,6 @@ CONFIG_GEN_RTC=y
566# TPM devices 593# TPM devices
567# 594#
568# CONFIG_TCG_TPM is not set 595# CONFIG_TCG_TPM is not set
569# CONFIG_TELCLOCK is not set
570 596
571# 597#
572# I2C support 598# I2C support
@@ -582,6 +608,7 @@ CONFIG_GEN_RTC=y
582# 608#
583# Dallas's 1-wire bus 609# Dallas's 1-wire bus
584# 610#
611# CONFIG_W1 is not set
585 612
586# 613#
587# Hardware Monitoring support 614# Hardware Monitoring support
@@ -590,17 +617,14 @@ CONFIG_HWMON=y
590# CONFIG_HWMON_VID is not set 617# CONFIG_HWMON_VID is not set
591# CONFIG_SENSORS_ABITUGURU is not set 618# CONFIG_SENSORS_ABITUGURU is not set
592# CONFIG_SENSORS_F71805F is not set 619# CONFIG_SENSORS_F71805F is not set
620# CONFIG_SENSORS_PC87427 is not set
621# CONFIG_SENSORS_VT1211 is not set
593# CONFIG_HWMON_DEBUG_CHIP is not set 622# CONFIG_HWMON_DEBUG_CHIP is not set
594 623
595# 624#
596# Misc devices
597#
598
599#
600# Multimedia devices 625# Multimedia devices
601# 626#
602# CONFIG_VIDEO_DEV is not set 627# CONFIG_VIDEO_DEV is not set
603CONFIG_VIDEO_V4L2=y
604 628
605# 629#
606# Digital Video Broadcasting Devices 630# Digital Video Broadcasting Devices
@@ -612,6 +636,7 @@ CONFIG_VIDEO_V4L2=y
612# 636#
613CONFIG_FIRMWARE_EDID=y 637CONFIG_FIRMWARE_EDID=y
614# CONFIG_FB is not set 638# CONFIG_FB is not set
639# CONFIG_FB_IBM_GXT4500 is not set
615# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 640# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
616 641
617# 642#
@@ -620,6 +645,11 @@ CONFIG_FIRMWARE_EDID=y
620# CONFIG_SOUND is not set 645# CONFIG_SOUND is not set
621 646
622# 647#
648# HID Devices
649#
650CONFIG_HID=y
651
652#
623# USB support 653# USB support
624# 654#
625CONFIG_USB_ARCH_HAS_HCD=y 655CONFIG_USB_ARCH_HAS_HCD=y
@@ -682,6 +712,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
682# 712#
683 713
684# 714#
715# Virtualization
716#
717
718#
685# File systems 719# File systems
686# 720#
687CONFIG_EXT2_FS=y 721CONFIG_EXT2_FS=y
@@ -691,6 +725,7 @@ CONFIG_EXT3_FS=y
691CONFIG_EXT3_FS_XATTR=y 725CONFIG_EXT3_FS_XATTR=y
692# CONFIG_EXT3_FS_POSIX_ACL is not set 726# CONFIG_EXT3_FS_POSIX_ACL is not set
693# CONFIG_EXT3_FS_SECURITY is not set 727# CONFIG_EXT3_FS_SECURITY is not set
728# CONFIG_EXT4DEV_FS is not set
694CONFIG_JBD=y 729CONFIG_JBD=y
695# CONFIG_JBD_DEBUG is not set 730# CONFIG_JBD_DEBUG is not set
696CONFIG_FS_MBCACHE=y 731CONFIG_FS_MBCACHE=y
@@ -698,6 +733,7 @@ CONFIG_FS_MBCACHE=y
698# CONFIG_JFS_FS is not set 733# CONFIG_JFS_FS is not set
699# CONFIG_FS_POSIX_ACL is not set 734# CONFIG_FS_POSIX_ACL is not set
700# CONFIG_XFS_FS is not set 735# CONFIG_XFS_FS is not set
736# CONFIG_GFS2_FS is not set
701# CONFIG_OCFS2_FS is not set 737# CONFIG_OCFS2_FS is not set
702# CONFIG_MINIX_FS is not set 738# CONFIG_MINIX_FS is not set
703# CONFIG_ROMFS_FS is not set 739# CONFIG_ROMFS_FS is not set
@@ -727,8 +763,10 @@ CONFIG_DNOTIFY=y
727# 763#
728CONFIG_PROC_FS=y 764CONFIG_PROC_FS=y
729CONFIG_PROC_KCORE=y 765CONFIG_PROC_KCORE=y
766CONFIG_PROC_SYSCTL=y
730CONFIG_SYSFS=y 767CONFIG_SYSFS=y
731CONFIG_TMPFS=y 768CONFIG_TMPFS=y
769# CONFIG_TMPFS_POSIX_ACL is not set
732# CONFIG_HUGETLB_PAGE is not set 770# CONFIG_HUGETLB_PAGE is not set
733CONFIG_RAMFS=y 771CONFIG_RAMFS=y
734# CONFIG_CONFIGFS_FS is not set 772# CONFIG_CONFIGFS_FS is not set
@@ -794,13 +832,20 @@ CONFIG_PARTITION_ADVANCED=y
794# CONFIG_NLS is not set 832# CONFIG_NLS is not set
795 833
796# 834#
835# Distributed Lock Manager
836#
837# CONFIG_DLM is not set
838
839#
797# Library routines 840# Library routines
798# 841#
842CONFIG_BITREVERSE=y
799# CONFIG_CRC_CCITT is not set 843# CONFIG_CRC_CCITT is not set
800# CONFIG_CRC16 is not set 844# CONFIG_CRC16 is not set
801CONFIG_CRC32=y 845CONFIG_CRC32=y
802# CONFIG_LIBCRC32C is not set 846# CONFIG_LIBCRC32C is not set
803CONFIG_PLIST=y 847CONFIG_PLIST=y
848CONFIG_IOMAP_COPY=y
804 849
805# 850#
806# Instrumentation Support 851# Instrumentation Support
@@ -811,8 +856,11 @@ CONFIG_PLIST=y
811# Kernel hacking 856# Kernel hacking
812# 857#
813# CONFIG_PRINTK_TIME is not set 858# CONFIG_PRINTK_TIME is not set
859CONFIG_ENABLE_MUST_CHECK=y
814# CONFIG_MAGIC_SYSRQ is not set 860# CONFIG_MAGIC_SYSRQ is not set
815# CONFIG_UNUSED_SYMBOLS is not set 861# CONFIG_UNUSED_SYMBOLS is not set
862# CONFIG_DEBUG_FS is not set
863# CONFIG_HEADERS_CHECK is not set
816CONFIG_DEBUG_KERNEL=y 864CONFIG_DEBUG_KERNEL=y
817CONFIG_LOG_BUF_SHIFT=14 865CONFIG_LOG_BUF_SHIFT=14
818CONFIG_DETECT_SOFTLOCKUP=y 866CONFIG_DETECT_SOFTLOCKUP=y
@@ -826,10 +874,10 @@ CONFIG_DEBUG_MUTEXES=y
826# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 874# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
827# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 875# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
828# CONFIG_DEBUG_KOBJECT is not set 876# CONFIG_DEBUG_KOBJECT is not set
877# CONFIG_DEBUG_BUGVERBOSE is not set
829# CONFIG_DEBUG_INFO is not set 878# CONFIG_DEBUG_INFO is not set
830# CONFIG_DEBUG_FS is not set
831# CONFIG_DEBUG_VM is not set 879# CONFIG_DEBUG_VM is not set
832# CONFIG_UNWIND_INFO is not set 880# CONFIG_DEBUG_LIST is not set
833CONFIG_FORCED_INLINING=y 881CONFIG_FORCED_INLINING=y
834# CONFIG_RCU_TORTURE_TEST is not set 882# CONFIG_RCU_TORTURE_TEST is not set
835# CONFIG_DEBUGGER is not set 883# CONFIG_DEBUGGER is not set
@@ -848,7 +896,3 @@ CONFIG_FORCED_INLINING=y
848# Cryptographic options 896# Cryptographic options
849# 897#
850# CONFIG_CRYPTO is not set 898# CONFIG_CRYPTO is not set
851
852#
853# Hardware crypto devices
854#
diff --git a/arch/powerpc/configs/mpc85xx_cds_defconfig b/arch/powerpc/configs/mpc85xx_cds_defconfig
index 72edf9f66829..1f61bce33e32 100644
--- a/arch/powerpc/configs/mpc85xx_cds_defconfig
+++ b/arch/powerpc/configs/mpc85xx_cds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:29:49 2006 4# Mon Jan 22 22:26:46 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -21,13 +22,14 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
21CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
24CONFIG_DEFAULT_UIMAGE=y 27CONFIG_DEFAULT_UIMAGE=y
25 28
26# 29#
27# Processor support 30# Processor support
28# 31#
29# CONFIG_CLASSIC32 is not set 32# CONFIG_CLASSIC32 is not set
30# CONFIG_PPC_52xx is not set
31# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
32# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
33CONFIG_PPC_85xx=y 35CONFIG_PPC_85xx=y
@@ -38,6 +40,8 @@ CONFIG_PPC_85xx=y
38# CONFIG_E200 is not set 40# CONFIG_E200 is not set
39CONFIG_85xx=y 41CONFIG_85xx=y
40CONFIG_E500=y 42CONFIG_E500=y
43# CONFIG_PPC_DCR_NATIVE is not set
44# CONFIG_PPC_DCR_MMIO is not set
41CONFIG_BOOKE=y 45CONFIG_BOOKE=y
42CONFIG_FSL_BOOKE=y 46CONFIG_FSL_BOOKE=y
43# CONFIG_PHYS_64BIT is not set 47# CONFIG_PHYS_64BIT is not set
@@ -58,16 +62,20 @@ CONFIG_LOCALVERSION=""
58CONFIG_LOCALVERSION_AUTO=y 62CONFIG_LOCALVERSION_AUTO=y
59CONFIG_SWAP=y 63CONFIG_SWAP=y
60CONFIG_SYSVIPC=y 64CONFIG_SYSVIPC=y
65# CONFIG_IPC_NS is not set
61# CONFIG_POSIX_MQUEUE is not set 66# CONFIG_POSIX_MQUEUE is not set
62# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
63# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
64CONFIG_SYSCTL=y 69# CONFIG_UTS_NS is not set
65# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
66# CONFIG_IKCONFIG is not set 71# CONFIG_IKCONFIG is not set
72CONFIG_SYSFS_DEPRECATED=y
67# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
68CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
76CONFIG_SYSCTL=y
70CONFIG_EMBEDDED=y 77CONFIG_EMBEDDED=y
78CONFIG_SYSCTL_SYSCALL=y
71CONFIG_KALLSYMS=y 79CONFIG_KALLSYMS=y
72# CONFIG_KALLSYMS_ALL is not set 80# CONFIG_KALLSYMS_ALL is not set
73# CONFIG_KALLSYMS_EXTRA_PASS is not set 81# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -76,12 +84,12 @@ CONFIG_PRINTK=y
76CONFIG_BUG=y 84CONFIG_BUG=y
77CONFIG_ELF_CORE=y 85CONFIG_ELF_CORE=y
78CONFIG_BASE_FULL=y 86CONFIG_BASE_FULL=y
79CONFIG_RT_MUTEXES=y
80CONFIG_FUTEX=y 87CONFIG_FUTEX=y
81CONFIG_EPOLL=y 88CONFIG_EPOLL=y
82CONFIG_SHMEM=y 89CONFIG_SHMEM=y
83CONFIG_SLAB=y 90CONFIG_SLAB=y
84CONFIG_VM_EVENT_COUNTERS=y 91CONFIG_VM_EVENT_COUNTERS=y
92CONFIG_RT_MUTEXES=y
85# CONFIG_TINY_SHMEM is not set 93# CONFIG_TINY_SHMEM is not set
86CONFIG_BASE_SMALL=0 94CONFIG_BASE_SMALL=0
87# CONFIG_SLOB is not set 95# CONFIG_SLOB is not set
@@ -94,6 +102,7 @@ CONFIG_BASE_SMALL=0
94# 102#
95# Block layer 103# Block layer
96# 104#
105CONFIG_BLOCK=y
97# CONFIG_LBD is not set 106# CONFIG_LBD is not set
98# CONFIG_BLK_DEV_IO_TRACE is not set 107# CONFIG_BLK_DEV_IO_TRACE is not set
99# CONFIG_LSF is not set 108# CONFIG_LSF is not set
@@ -116,6 +125,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
116# Platform support 125# Platform support
117# 126#
118# CONFIG_MPC8540_ADS is not set 127# CONFIG_MPC8540_ADS is not set
128# CONFIG_MPC8560_ADS is not set
119CONFIG_MPC85xx_CDS=y 129CONFIG_MPC85xx_CDS=y
120CONFIG_MPC8540=y 130CONFIG_MPC8540=y
121CONFIG_PPC_INDIRECT_PCI_BE=y 131CONFIG_PPC_INDIRECT_PCI_BE=y
@@ -127,6 +137,7 @@ CONFIG_MPIC=y
127# CONFIG_HIGHMEM is not set 137# CONFIG_HIGHMEM is not set
128# CONFIG_HZ_100 is not set 138# CONFIG_HZ_100 is not set
129CONFIG_HZ_250=y 139CONFIG_HZ_250=y
140# CONFIG_HZ_300 is not set
130# CONFIG_HZ_1000 is not set 141# CONFIG_HZ_1000 is not set
131CONFIG_HZ=250 142CONFIG_HZ=250
132CONFIG_PREEMPT_NONE=y 143CONFIG_PREEMPT_NONE=y
@@ -137,6 +148,7 @@ CONFIG_BINFMT_MISC=y
137CONFIG_MATH_EMULATION=y 148CONFIG_MATH_EMULATION=y
138CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 149CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
139CONFIG_ARCH_FLATMEM_ENABLE=y 150CONFIG_ARCH_FLATMEM_ENABLE=y
151CONFIG_ARCH_POPULATES_NODE_MAP=y
140CONFIG_SELECT_MEMORY_MODEL=y 152CONFIG_SELECT_MEMORY_MODEL=y
141CONFIG_FLATMEM_MANUAL=y 153CONFIG_FLATMEM_MANUAL=y
142# CONFIG_DISCONTIGMEM_MANUAL is not set 154# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -202,6 +214,7 @@ CONFIG_PACKET=y
202CONFIG_UNIX=y 214CONFIG_UNIX=y
203CONFIG_XFRM=y 215CONFIG_XFRM=y
204CONFIG_XFRM_USER=y 216CONFIG_XFRM_USER=y
217# CONFIG_XFRM_SUB_POLICY is not set
205# CONFIG_NET_KEY is not set 218# CONFIG_NET_KEY is not set
206CONFIG_INET=y 219CONFIG_INET=y
207CONFIG_IP_MULTICAST=y 220CONFIG_IP_MULTICAST=y
@@ -223,10 +236,13 @@ CONFIG_SYN_COOKIES=y
223# CONFIG_INET_TUNNEL is not set 236# CONFIG_INET_TUNNEL is not set
224CONFIG_INET_XFRM_MODE_TRANSPORT=y 237CONFIG_INET_XFRM_MODE_TRANSPORT=y
225CONFIG_INET_XFRM_MODE_TUNNEL=y 238CONFIG_INET_XFRM_MODE_TUNNEL=y
239CONFIG_INET_XFRM_MODE_BEET=y
226CONFIG_INET_DIAG=y 240CONFIG_INET_DIAG=y
227CONFIG_INET_TCP_DIAG=y 241CONFIG_INET_TCP_DIAG=y
228# CONFIG_TCP_CONG_ADVANCED is not set 242# CONFIG_TCP_CONG_ADVANCED is not set
229CONFIG_TCP_CONG_BIC=y 243CONFIG_TCP_CONG_CUBIC=y
244CONFIG_DEFAULT_TCP_CONG="cubic"
245# CONFIG_TCP_MD5SIG is not set
230# CONFIG_IPV6 is not set 246# CONFIG_IPV6 is not set
231# CONFIG_INET6_XFRM_TUNNEL is not set 247# CONFIG_INET6_XFRM_TUNNEL is not set
232# CONFIG_INET6_TUNNEL is not set 248# CONFIG_INET6_TUNNEL is not set
@@ -256,7 +272,6 @@ CONFIG_TCP_CONG_BIC=y
256# CONFIG_ATALK is not set 272# CONFIG_ATALK is not set
257# CONFIG_X25 is not set 273# CONFIG_X25 is not set
258# CONFIG_LAPB is not set 274# CONFIG_LAPB is not set
259# CONFIG_NET_DIVERT is not set
260# CONFIG_ECONET is not set 275# CONFIG_ECONET is not set
261# CONFIG_WAN_ROUTER is not set 276# CONFIG_WAN_ROUTER is not set
262 277
@@ -328,9 +343,16 @@ CONFIG_BLK_DEV_INITRD=y
328# CONFIG_ATA_OVER_ETH is not set 343# CONFIG_ATA_OVER_ETH is not set
329 344
330# 345#
346# Misc devices
347#
348# CONFIG_SGI_IOC4 is not set
349# CONFIG_TIFM_CORE is not set
350
351#
331# ATA/ATAPI/MFM/RLL support 352# ATA/ATAPI/MFM/RLL support
332# 353#
333CONFIG_IDE=y 354CONFIG_IDE=y
355CONFIG_IDE_MAX_HWIFS=4
334CONFIG_BLK_DEV_IDE=y 356CONFIG_BLK_DEV_IDE=y
335 357
336# 358#
@@ -353,7 +375,6 @@ CONFIG_IDEPCI_SHARE_IRQ=y
353# CONFIG_BLK_DEV_OFFBOARD is not set 375# CONFIG_BLK_DEV_OFFBOARD is not set
354CONFIG_BLK_DEV_GENERIC=y 376CONFIG_BLK_DEV_GENERIC=y
355# CONFIG_BLK_DEV_OPTI621 is not set 377# CONFIG_BLK_DEV_OPTI621 is not set
356# CONFIG_BLK_DEV_SL82C105 is not set
357CONFIG_BLK_DEV_IDEDMA_PCI=y 378CONFIG_BLK_DEV_IDEDMA_PCI=y
358# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 379# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
359# CONFIG_IDEDMA_PCI_AUTO is not set 380# CONFIG_IDEDMA_PCI_AUTO is not set
@@ -367,6 +388,7 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
367# CONFIG_BLK_DEV_CS5530 is not set 388# CONFIG_BLK_DEV_CS5530 is not set
368# CONFIG_BLK_DEV_HPT34X is not set 389# CONFIG_BLK_DEV_HPT34X is not set
369# CONFIG_BLK_DEV_HPT366 is not set 390# CONFIG_BLK_DEV_HPT366 is not set
391# CONFIG_BLK_DEV_JMICRON is not set
370# CONFIG_BLK_DEV_SC1200 is not set 392# CONFIG_BLK_DEV_SC1200 is not set
371# CONFIG_BLK_DEV_PIIX is not set 393# CONFIG_BLK_DEV_PIIX is not set
372# CONFIG_BLK_DEV_IT821X is not set 394# CONFIG_BLK_DEV_IT821X is not set
@@ -375,6 +397,7 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
375# CONFIG_BLK_DEV_PDC202XX_NEW is not set 397# CONFIG_BLK_DEV_PDC202XX_NEW is not set
376# CONFIG_BLK_DEV_SVWKS is not set 398# CONFIG_BLK_DEV_SVWKS is not set
377# CONFIG_BLK_DEV_SIIMAGE is not set 399# CONFIG_BLK_DEV_SIIMAGE is not set
400# CONFIG_BLK_DEV_SL82C105 is not set
378# CONFIG_BLK_DEV_SLC90E66 is not set 401# CONFIG_BLK_DEV_SLC90E66 is not set
379# CONFIG_BLK_DEV_TRM290 is not set 402# CONFIG_BLK_DEV_TRM290 is not set
380CONFIG_BLK_DEV_VIA82CXXX=y 403CONFIG_BLK_DEV_VIA82CXXX=y
@@ -389,6 +412,12 @@ CONFIG_BLK_DEV_IDEDMA=y
389# 412#
390# CONFIG_RAID_ATTRS is not set 413# CONFIG_RAID_ATTRS is not set
391# CONFIG_SCSI is not set 414# CONFIG_SCSI is not set
415# CONFIG_SCSI_NETLINK is not set
416
417#
418# Serial ATA (prod) and Parallel ATA (experimental) drivers
419#
420# CONFIG_ATA is not set
392 421
393# 422#
394# Multi-device support (RAID and LVM) 423# Multi-device support (RAID and LVM)
@@ -413,6 +442,7 @@ CONFIG_BLK_DEV_IDEDMA=y
413# 442#
414# Macintosh device drivers 443# Macintosh device drivers
415# 444#
445# CONFIG_MAC_EMUMOUSEBTN is not set
416# CONFIG_WINDFARM is not set 446# CONFIG_WINDFARM is not set
417 447
418# 448#
@@ -444,6 +474,7 @@ CONFIG_PHYLIB=y
444# CONFIG_CICADA_PHY is not set 474# CONFIG_CICADA_PHY is not set
445# CONFIG_VITESSE_PHY is not set 475# CONFIG_VITESSE_PHY is not set
446# CONFIG_SMSC_PHY is not set 476# CONFIG_SMSC_PHY is not set
477# CONFIG_BROADCOM_PHY is not set
447# CONFIG_FIXED_PHY is not set 478# CONFIG_FIXED_PHY is not set
448 479
449# 480#
@@ -483,6 +514,7 @@ CONFIG_E1000_NAPI=y
483# CONFIG_BNX2 is not set 514# CONFIG_BNX2 is not set
484CONFIG_GIANFAR=y 515CONFIG_GIANFAR=y
485CONFIG_GFAR_NAPI=y 516CONFIG_GFAR_NAPI=y
517# CONFIG_QLA3XXX is not set
486 518
487# 519#
488# Ethernet (10000 Mbit) 520# Ethernet (10000 Mbit)
@@ -491,6 +523,7 @@ CONFIG_GFAR_NAPI=y
491# CONFIG_IXGB is not set 523# CONFIG_IXGB is not set
492# CONFIG_S2IO is not set 524# CONFIG_S2IO is not set
493# CONFIG_MYRI10GE is not set 525# CONFIG_MYRI10GE is not set
526# CONFIG_NETXEN_NIC is not set
494 527
495# 528#
496# Token Ring devices 529# Token Ring devices
@@ -529,6 +562,7 @@ CONFIG_GFAR_NAPI=y
529# Input device support 562# Input device support
530# 563#
531CONFIG_INPUT=y 564CONFIG_INPUT=y
565# CONFIG_INPUT_FF_MEMLESS is not set
532 566
533# 567#
534# Userland interfaces 568# Userland interfaces
@@ -573,6 +607,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
573# 607#
574# Non-8250 serial port support 608# Non-8250 serial port support
575# 609#
610# CONFIG_SERIAL_UARTLITE is not set
576CONFIG_SERIAL_CORE=y 611CONFIG_SERIAL_CORE=y
577CONFIG_SERIAL_CORE_CONSOLE=y 612CONFIG_SERIAL_CORE_CONSOLE=y
578# CONFIG_SERIAL_JSM is not set 613# CONFIG_SERIAL_JSM is not set
@@ -596,10 +631,6 @@ CONFIG_GEN_RTC=y
596# CONFIG_DTLK is not set 631# CONFIG_DTLK is not set
597# CONFIG_R3964 is not set 632# CONFIG_R3964 is not set
598# CONFIG_APPLICOM is not set 633# CONFIG_APPLICOM is not set
599
600#
601# Ftape, the floppy tape device driver
602#
603# CONFIG_AGP is not set 634# CONFIG_AGP is not set
604# CONFIG_DRM is not set 635# CONFIG_DRM is not set
605# CONFIG_RAW_DRIVER is not set 636# CONFIG_RAW_DRIVER is not set
@@ -608,7 +639,6 @@ CONFIG_GEN_RTC=y
608# TPM devices 639# TPM devices
609# 640#
610# CONFIG_TCG_TPM is not set 641# CONFIG_TCG_TPM is not set
611# CONFIG_TELCLOCK is not set
612 642
613# 643#
614# I2C support 644# I2C support
@@ -624,6 +654,7 @@ CONFIG_GEN_RTC=y
624# 654#
625# Dallas's 1-wire bus 655# Dallas's 1-wire bus
626# 656#
657# CONFIG_W1 is not set
627 658
628# 659#
629# Hardware Monitoring support 660# Hardware Monitoring support
@@ -632,17 +663,14 @@ CONFIG_HWMON=y
632# CONFIG_HWMON_VID is not set 663# CONFIG_HWMON_VID is not set
633# CONFIG_SENSORS_ABITUGURU is not set 664# CONFIG_SENSORS_ABITUGURU is not set
634# CONFIG_SENSORS_F71805F is not set 665# CONFIG_SENSORS_F71805F is not set
666# CONFIG_SENSORS_PC87427 is not set
667# CONFIG_SENSORS_VT1211 is not set
635# CONFIG_HWMON_DEBUG_CHIP is not set 668# CONFIG_HWMON_DEBUG_CHIP is not set
636 669
637# 670#
638# Misc devices
639#
640
641#
642# Multimedia devices 671# Multimedia devices
643# 672#
644# CONFIG_VIDEO_DEV is not set 673# CONFIG_VIDEO_DEV is not set
645CONFIG_VIDEO_V4L2=y
646 674
647# 675#
648# Digital Video Broadcasting Devices 676# Digital Video Broadcasting Devices
@@ -654,6 +682,7 @@ CONFIG_VIDEO_V4L2=y
654# 682#
655CONFIG_FIRMWARE_EDID=y 683CONFIG_FIRMWARE_EDID=y
656# CONFIG_FB is not set 684# CONFIG_FB is not set
685# CONFIG_FB_IBM_GXT4500 is not set
657# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 686# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
658 687
659# 688#
@@ -662,6 +691,11 @@ CONFIG_FIRMWARE_EDID=y
662# CONFIG_SOUND is not set 691# CONFIG_SOUND is not set
663 692
664# 693#
694# HID Devices
695#
696CONFIG_HID=y
697
698#
665# USB support 699# USB support
666# 700#
667CONFIG_USB_ARCH_HAS_HCD=y 701CONFIG_USB_ARCH_HAS_HCD=y
@@ -724,6 +758,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
724# 758#
725 759
726# 760#
761# Virtualization
762#
763
764#
727# File systems 765# File systems
728# 766#
729CONFIG_EXT2_FS=y 767CONFIG_EXT2_FS=y
@@ -733,6 +771,7 @@ CONFIG_EXT3_FS=y
733CONFIG_EXT3_FS_XATTR=y 771CONFIG_EXT3_FS_XATTR=y
734# CONFIG_EXT3_FS_POSIX_ACL is not set 772# CONFIG_EXT3_FS_POSIX_ACL is not set
735# CONFIG_EXT3_FS_SECURITY is not set 773# CONFIG_EXT3_FS_SECURITY is not set
774# CONFIG_EXT4DEV_FS is not set
736CONFIG_JBD=y 775CONFIG_JBD=y
737# CONFIG_JBD_DEBUG is not set 776# CONFIG_JBD_DEBUG is not set
738CONFIG_FS_MBCACHE=y 777CONFIG_FS_MBCACHE=y
@@ -740,6 +779,7 @@ CONFIG_FS_MBCACHE=y
740# CONFIG_JFS_FS is not set 779# CONFIG_JFS_FS is not set
741# CONFIG_FS_POSIX_ACL is not set 780# CONFIG_FS_POSIX_ACL is not set
742# CONFIG_XFS_FS is not set 781# CONFIG_XFS_FS is not set
782# CONFIG_GFS2_FS is not set
743# CONFIG_OCFS2_FS is not set 783# CONFIG_OCFS2_FS is not set
744# CONFIG_MINIX_FS is not set 784# CONFIG_MINIX_FS is not set
745# CONFIG_ROMFS_FS is not set 785# CONFIG_ROMFS_FS is not set
@@ -769,8 +809,10 @@ CONFIG_DNOTIFY=y
769# 809#
770CONFIG_PROC_FS=y 810CONFIG_PROC_FS=y
771CONFIG_PROC_KCORE=y 811CONFIG_PROC_KCORE=y
812CONFIG_PROC_SYSCTL=y
772CONFIG_SYSFS=y 813CONFIG_SYSFS=y
773CONFIG_TMPFS=y 814CONFIG_TMPFS=y
815# CONFIG_TMPFS_POSIX_ACL is not set
774# CONFIG_HUGETLB_PAGE is not set 816# CONFIG_HUGETLB_PAGE is not set
775CONFIG_RAMFS=y 817CONFIG_RAMFS=y
776# CONFIG_CONFIGFS_FS is not set 818# CONFIG_CONFIGFS_FS is not set
@@ -836,13 +878,20 @@ CONFIG_PARTITION_ADVANCED=y
836# CONFIG_NLS is not set 878# CONFIG_NLS is not set
837 879
838# 880#
881# Distributed Lock Manager
882#
883# CONFIG_DLM is not set
884
885#
839# Library routines 886# Library routines
840# 887#
888CONFIG_BITREVERSE=y
841# CONFIG_CRC_CCITT is not set 889# CONFIG_CRC_CCITT is not set
842# CONFIG_CRC16 is not set 890# CONFIG_CRC16 is not set
843CONFIG_CRC32=y 891CONFIG_CRC32=y
844# CONFIG_LIBCRC32C is not set 892# CONFIG_LIBCRC32C is not set
845CONFIG_PLIST=y 893CONFIG_PLIST=y
894CONFIG_IOMAP_COPY=y
846 895
847# 896#
848# Instrumentation Support 897# Instrumentation Support
@@ -853,8 +902,11 @@ CONFIG_PLIST=y
853# Kernel hacking 902# Kernel hacking
854# 903#
855# CONFIG_PRINTK_TIME is not set 904# CONFIG_PRINTK_TIME is not set
905CONFIG_ENABLE_MUST_CHECK=y
856# CONFIG_MAGIC_SYSRQ is not set 906# CONFIG_MAGIC_SYSRQ is not set
857# CONFIG_UNUSED_SYMBOLS is not set 907# CONFIG_UNUSED_SYMBOLS is not set
908# CONFIG_DEBUG_FS is not set
909# CONFIG_HEADERS_CHECK is not set
858CONFIG_DEBUG_KERNEL=y 910CONFIG_DEBUG_KERNEL=y
859CONFIG_LOG_BUF_SHIFT=14 911CONFIG_LOG_BUF_SHIFT=14
860CONFIG_DETECT_SOFTLOCKUP=y 912CONFIG_DETECT_SOFTLOCKUP=y
@@ -868,10 +920,10 @@ CONFIG_DEBUG_MUTEXES=y
868# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 920# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
869# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 921# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
870# CONFIG_DEBUG_KOBJECT is not set 922# CONFIG_DEBUG_KOBJECT is not set
923# CONFIG_DEBUG_BUGVERBOSE is not set
871# CONFIG_DEBUG_INFO is not set 924# CONFIG_DEBUG_INFO is not set
872# CONFIG_DEBUG_FS is not set
873# CONFIG_DEBUG_VM is not set 925# CONFIG_DEBUG_VM is not set
874# CONFIG_UNWIND_INFO is not set 926# CONFIG_DEBUG_LIST is not set
875CONFIG_FORCED_INLINING=y 927CONFIG_FORCED_INLINING=y
876# CONFIG_RCU_TORTURE_TEST is not set 928# CONFIG_RCU_TORTURE_TEST is not set
877# CONFIG_DEBUGGER is not set 929# CONFIG_DEBUGGER is not set
@@ -889,7 +941,3 @@ CONFIG_FORCED_INLINING=y
889# Cryptographic options 941# Cryptographic options
890# 942#
891# CONFIG_CRYPTO is not set 943# CONFIG_CRYPTO is not set
892
893#
894# Hardware crypto devices
895#
diff --git a/arch/powerpc/configs/mpc8641_hpcn_defconfig b/arch/powerpc/configs/mpc8641_hpcn_defconfig
index 92a527fccf83..53fcd6932f5b 100644
--- a/arch/powerpc/configs/mpc8641_hpcn_defconfig
+++ b/arch/powerpc/configs/mpc8641_hpcn_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:30:15 2006 4# Mon Jan 22 22:27:14 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -21,13 +22,14 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
21CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23CONFIG_GENERIC_TBSYNC=y 24CONFIG_GENERIC_TBSYNC=y
25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
24# CONFIG_DEFAULT_UIMAGE is not set 27# CONFIG_DEFAULT_UIMAGE is not set
25 28
26# 29#
27# Processor support 30# Processor support
28# 31#
29# CONFIG_CLASSIC32 is not set 32# CONFIG_CLASSIC32 is not set
30# CONFIG_PPC_52xx is not set
31# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
32# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
33# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -38,6 +40,8 @@ CONFIG_PPC_86xx=y
38# CONFIG_E200 is not set 40# CONFIG_E200 is not set
39CONFIG_6xx=y 41CONFIG_6xx=y
40CONFIG_PPC_FPU=y 42CONFIG_PPC_FPU=y
43# CONFIG_PPC_DCR_NATIVE is not set
44# CONFIG_PPC_DCR_MMIO is not set
41CONFIG_ALTIVEC=y 45CONFIG_ALTIVEC=y
42CONFIG_PPC_STD_MMU=y 46CONFIG_PPC_STD_MMU=y
43CONFIG_PPC_STD_MMU_32=y 47CONFIG_PPC_STD_MMU_32=y
@@ -62,15 +66,18 @@ CONFIG_LOCALVERSION=""
62# CONFIG_POSIX_MQUEUE is not set 66# CONFIG_POSIX_MQUEUE is not set
63# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
64# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
65CONFIG_SYSCTL=y 69# CONFIG_UTS_NS is not set
66# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
67CONFIG_IKCONFIG=y 71CONFIG_IKCONFIG=y
68CONFIG_IKCONFIG_PROC=y 72CONFIG_IKCONFIG_PROC=y
69# CONFIG_CPUSETS is not set 73# CONFIG_CPUSETS is not set
74CONFIG_SYSFS_DEPRECATED=y
70# CONFIG_RELAY is not set 75# CONFIG_RELAY is not set
71CONFIG_INITRAMFS_SOURCE="" 76CONFIG_INITRAMFS_SOURCE=""
72# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 77# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
78CONFIG_SYSCTL=y
73CONFIG_EMBEDDED=y 79CONFIG_EMBEDDED=y
80CONFIG_SYSCTL_SYSCALL=y
74CONFIG_KALLSYMS=y 81CONFIG_KALLSYMS=y
75# CONFIG_KALLSYMS_ALL is not set 82# CONFIG_KALLSYMS_ALL is not set
76CONFIG_KALLSYMS_EXTRA_PASS=y 83CONFIG_KALLSYMS_EXTRA_PASS=y
@@ -79,15 +86,15 @@ CONFIG_PRINTK=y
79CONFIG_BUG=y 86CONFIG_BUG=y
80# CONFIG_ELF_CORE is not set 87# CONFIG_ELF_CORE is not set
81CONFIG_BASE_FULL=y 88CONFIG_BASE_FULL=y
82CONFIG_RT_MUTEXES=y
83CONFIG_FUTEX=y 89CONFIG_FUTEX=y
84CONFIG_EPOLL=y 90CONFIG_EPOLL=y
85CONFIG_SHMEM=y 91CONFIG_SHMEM=y
86# CONFIG_SLAB is not set 92CONFIG_SLAB=y
87CONFIG_VM_EVENT_COUNTERS=y 93CONFIG_VM_EVENT_COUNTERS=y
94CONFIG_RT_MUTEXES=y
88# CONFIG_TINY_SHMEM is not set 95# CONFIG_TINY_SHMEM is not set
89CONFIG_BASE_SMALL=0 96CONFIG_BASE_SMALL=0
90CONFIG_SLOB=y 97# CONFIG_SLOB is not set
91 98
92# 99#
93# Loadable module support 100# Loadable module support
@@ -97,6 +104,7 @@ CONFIG_SLOB=y
97# 104#
98# Block layer 105# Block layer
99# 106#
107CONFIG_BLOCK=y
100# CONFIG_LBD is not set 108# CONFIG_LBD is not set
101# CONFIG_BLK_DEV_IO_TRACE is not set 109# CONFIG_BLK_DEV_IO_TRACE is not set
102# CONFIG_LSF is not set 110# CONFIG_LSF is not set
@@ -129,6 +137,7 @@ CONFIG_MPC8641=y
129CONFIG_HIGHMEM=y 137CONFIG_HIGHMEM=y
130# CONFIG_HZ_100 is not set 138# CONFIG_HZ_100 is not set
131# CONFIG_HZ_250 is not set 139# CONFIG_HZ_250 is not set
140# CONFIG_HZ_300 is not set
132CONFIG_HZ_1000=y 141CONFIG_HZ_1000=y
133CONFIG_HZ=1000 142CONFIG_HZ=1000
134CONFIG_PREEMPT_NONE=y 143CONFIG_PREEMPT_NONE=y
@@ -140,6 +149,7 @@ CONFIG_BINFMT_ELF=y
140CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 149CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
141# CONFIG_IRQ_ALL_CPUS is not set 150# CONFIG_IRQ_ALL_CPUS is not set
142CONFIG_ARCH_FLATMEM_ENABLE=y 151CONFIG_ARCH_FLATMEM_ENABLE=y
152CONFIG_ARCH_POPULATES_NODE_MAP=y
143CONFIG_SELECT_MEMORY_MODEL=y 153CONFIG_SELECT_MEMORY_MODEL=y
144CONFIG_FLATMEM_MANUAL=y 154CONFIG_FLATMEM_MANUAL=y
145# CONFIG_DISCONTIGMEM_MANUAL is not set 155# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -206,6 +216,7 @@ CONFIG_PACKET=y
206CONFIG_UNIX=y 216CONFIG_UNIX=y
207CONFIG_XFRM=y 217CONFIG_XFRM=y
208CONFIG_XFRM_USER=y 218CONFIG_XFRM_USER=y
219# CONFIG_XFRM_SUB_POLICY is not set
209# CONFIG_NET_KEY is not set 220# CONFIG_NET_KEY is not set
210CONFIG_INET=y 221CONFIG_INET=y
211# CONFIG_IP_MULTICAST is not set 222# CONFIG_IP_MULTICAST is not set
@@ -226,21 +237,29 @@ CONFIG_IP_PNP_RARP=y
226# CONFIG_INET_TUNNEL is not set 237# CONFIG_INET_TUNNEL is not set
227CONFIG_INET_XFRM_MODE_TRANSPORT=y 238CONFIG_INET_XFRM_MODE_TRANSPORT=y
228CONFIG_INET_XFRM_MODE_TUNNEL=y 239CONFIG_INET_XFRM_MODE_TUNNEL=y
240CONFIG_INET_XFRM_MODE_BEET=y
229CONFIG_INET_DIAG=y 241CONFIG_INET_DIAG=y
230CONFIG_INET_TCP_DIAG=y 242CONFIG_INET_TCP_DIAG=y
231# CONFIG_TCP_CONG_ADVANCED is not set 243# CONFIG_TCP_CONG_ADVANCED is not set
232CONFIG_TCP_CONG_BIC=y 244CONFIG_TCP_CONG_CUBIC=y
245CONFIG_DEFAULT_TCP_CONG="cubic"
246# CONFIG_TCP_MD5SIG is not set
233CONFIG_IPV6=y 247CONFIG_IPV6=y
234# CONFIG_IPV6_PRIVACY is not set 248# CONFIG_IPV6_PRIVACY is not set
235# CONFIG_IPV6_ROUTER_PREF is not set 249# CONFIG_IPV6_ROUTER_PREF is not set
236# CONFIG_INET6_AH is not set 250# CONFIG_INET6_AH is not set
237# CONFIG_INET6_ESP is not set 251# CONFIG_INET6_ESP is not set
238# CONFIG_INET6_IPCOMP is not set 252# CONFIG_INET6_IPCOMP is not set
253# CONFIG_IPV6_MIP6 is not set
239# CONFIG_INET6_XFRM_TUNNEL is not set 254# CONFIG_INET6_XFRM_TUNNEL is not set
240# CONFIG_INET6_TUNNEL is not set 255# CONFIG_INET6_TUNNEL is not set
241CONFIG_INET6_XFRM_MODE_TRANSPORT=y 256CONFIG_INET6_XFRM_MODE_TRANSPORT=y
242CONFIG_INET6_XFRM_MODE_TUNNEL=y 257CONFIG_INET6_XFRM_MODE_TUNNEL=y
258CONFIG_INET6_XFRM_MODE_BEET=y
259# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
260CONFIG_IPV6_SIT=y
243# CONFIG_IPV6_TUNNEL is not set 261# CONFIG_IPV6_TUNNEL is not set
262# CONFIG_IPV6_MULTIPLE_TABLES is not set
244# CONFIG_NETWORK_SECMARK is not set 263# CONFIG_NETWORK_SECMARK is not set
245# CONFIG_NETFILTER is not set 264# CONFIG_NETFILTER is not set
246 265
@@ -267,7 +286,6 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
267# CONFIG_ATALK is not set 286# CONFIG_ATALK is not set
268# CONFIG_X25 is not set 287# CONFIG_X25 is not set
269# CONFIG_LAPB is not set 288# CONFIG_LAPB is not set
270# CONFIG_NET_DIVERT is not set
271# CONFIG_ECONET is not set 289# CONFIG_ECONET is not set
272# CONFIG_WAN_ROUTER is not set 290# CONFIG_WAN_ROUTER is not set
273 291
@@ -339,6 +357,12 @@ CONFIG_BLK_DEV_INITRD=y
339# CONFIG_ATA_OVER_ETH is not set 357# CONFIG_ATA_OVER_ETH is not set
340 358
341# 359#
360# Misc devices
361#
362# CONFIG_SGI_IOC4 is not set
363# CONFIG_TIFM_CORE is not set
364
365#
342# ATA/ATAPI/MFM/RLL support 366# ATA/ATAPI/MFM/RLL support
343# 367#
344# CONFIG_IDE is not set 368# CONFIG_IDE is not set
@@ -348,6 +372,12 @@ CONFIG_BLK_DEV_INITRD=y
348# 372#
349# CONFIG_RAID_ATTRS is not set 373# CONFIG_RAID_ATTRS is not set
350# CONFIG_SCSI is not set 374# CONFIG_SCSI is not set
375# CONFIG_SCSI_NETLINK is not set
376
377#
378# Serial ATA (prod) and Parallel ATA (experimental) drivers
379#
380# CONFIG_ATA is not set
351 381
352# 382#
353# Multi-device support (RAID and LVM) 383# Multi-device support (RAID and LVM)
@@ -372,6 +402,7 @@ CONFIG_BLK_DEV_INITRD=y
372# 402#
373# Macintosh device drivers 403# Macintosh device drivers
374# 404#
405# CONFIG_MAC_EMUMOUSEBTN is not set
375# CONFIG_WINDFARM is not set 406# CONFIG_WINDFARM is not set
376 407
377# 408#
@@ -403,6 +434,7 @@ CONFIG_PHYLIB=y
403# CONFIG_CICADA_PHY is not set 434# CONFIG_CICADA_PHY is not set
404CONFIG_VITESSE_PHY=y 435CONFIG_VITESSE_PHY=y
405# CONFIG_SMSC_PHY is not set 436# CONFIG_SMSC_PHY is not set
437# CONFIG_BROADCOM_PHY is not set
406# CONFIG_FIXED_PHY is not set 438# CONFIG_FIXED_PHY is not set
407 439
408# 440#
@@ -440,6 +472,7 @@ CONFIG_MII=y
440# CONFIG_BNX2 is not set 472# CONFIG_BNX2 is not set
441CONFIG_GIANFAR=y 473CONFIG_GIANFAR=y
442# CONFIG_GFAR_NAPI is not set 474# CONFIG_GFAR_NAPI is not set
475# CONFIG_QLA3XXX is not set
443 476
444# 477#
445# Ethernet (10000 Mbit) 478# Ethernet (10000 Mbit)
@@ -448,6 +481,7 @@ CONFIG_GIANFAR=y
448# CONFIG_IXGB is not set 481# CONFIG_IXGB is not set
449# CONFIG_S2IO is not set 482# CONFIG_S2IO is not set
450# CONFIG_MYRI10GE is not set 483# CONFIG_MYRI10GE is not set
484# CONFIG_NETXEN_NIC is not set
451 485
452# 486#
453# Token Ring devices 487# Token Ring devices
@@ -486,6 +520,7 @@ CONFIG_GIANFAR=y
486# Input device support 520# Input device support
487# 521#
488CONFIG_INPUT=y 522CONFIG_INPUT=y
523# CONFIG_INPUT_FF_MEMLESS is not set
489 524
490# 525#
491# Userland interfaces 526# Userland interfaces
@@ -542,6 +577,7 @@ CONFIG_SERIAL_8250_RSA=y
542# 577#
543# Non-8250 serial port support 578# Non-8250 serial port support
544# 579#
580# CONFIG_SERIAL_UARTLITE is not set
545CONFIG_SERIAL_CORE=y 581CONFIG_SERIAL_CORE=y
546CONFIG_SERIAL_CORE_CONSOLE=y 582CONFIG_SERIAL_CORE_CONSOLE=y
547# CONFIG_SERIAL_JSM is not set 583# CONFIG_SERIAL_JSM is not set
@@ -563,10 +599,6 @@ CONFIG_UNIX98_PTYS=y
563# CONFIG_DTLK is not set 599# CONFIG_DTLK is not set
564# CONFIG_R3964 is not set 600# CONFIG_R3964 is not set
565# CONFIG_APPLICOM is not set 601# CONFIG_APPLICOM is not set
566
567#
568# Ftape, the floppy tape device driver
569#
570# CONFIG_AGP is not set 602# CONFIG_AGP is not set
571# CONFIG_DRM is not set 603# CONFIG_DRM is not set
572# CONFIG_RAW_DRIVER is not set 604# CONFIG_RAW_DRIVER is not set
@@ -575,7 +607,6 @@ CONFIG_UNIX98_PTYS=y
575# TPM devices 607# TPM devices
576# 608#
577# CONFIG_TCG_TPM is not set 609# CONFIG_TCG_TPM is not set
578# CONFIG_TELCLOCK is not set
579 610
580# 611#
581# I2C support 612# I2C support
@@ -640,6 +671,7 @@ CONFIG_SENSORS_EEPROM=y
640# 671#
641# Dallas's 1-wire bus 672# Dallas's 1-wire bus
642# 673#
674# CONFIG_W1 is not set
643 675
644# 676#
645# Hardware Monitoring support 677# Hardware Monitoring support
@@ -648,14 +680,9 @@ CONFIG_SENSORS_EEPROM=y
648# CONFIG_HWMON_VID is not set 680# CONFIG_HWMON_VID is not set
649 681
650# 682#
651# Misc devices
652#
653
654#
655# Multimedia devices 683# Multimedia devices
656# 684#
657# CONFIG_VIDEO_DEV is not set 685# CONFIG_VIDEO_DEV is not set
658CONFIG_VIDEO_V4L2=y
659 686
660# 687#
661# Digital Video Broadcasting Devices 688# Digital Video Broadcasting Devices
@@ -667,6 +694,7 @@ CONFIG_VIDEO_V4L2=y
667# 694#
668CONFIG_FIRMWARE_EDID=y 695CONFIG_FIRMWARE_EDID=y
669# CONFIG_FB is not set 696# CONFIG_FB is not set
697# CONFIG_FB_IBM_GXT4500 is not set
670 698
671# 699#
672# Console display driver support 700# Console display driver support
@@ -682,6 +710,11 @@ CONFIG_DUMMY_CONSOLE=y
682# CONFIG_SOUND is not set 710# CONFIG_SOUND is not set
683 711
684# 712#
713# HID Devices
714#
715CONFIG_HID=y
716
717#
685# USB support 718# USB support
686# 719#
687CONFIG_USB_ARCH_HAS_HCD=y 720CONFIG_USB_ARCH_HAS_HCD=y
@@ -744,6 +777,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
744# 777#
745 778
746# 779#
780# Virtualization
781#
782
783#
747# File systems 784# File systems
748# 785#
749CONFIG_EXT2_FS=y 786CONFIG_EXT2_FS=y
@@ -753,6 +790,7 @@ CONFIG_EXT3_FS=y
753CONFIG_EXT3_FS_XATTR=y 790CONFIG_EXT3_FS_XATTR=y
754# CONFIG_EXT3_FS_POSIX_ACL is not set 791# CONFIG_EXT3_FS_POSIX_ACL is not set
755# CONFIG_EXT3_FS_SECURITY is not set 792# CONFIG_EXT3_FS_SECURITY is not set
793# CONFIG_EXT4DEV_FS is not set
756CONFIG_JBD=y 794CONFIG_JBD=y
757# CONFIG_JBD_DEBUG is not set 795# CONFIG_JBD_DEBUG is not set
758CONFIG_FS_MBCACHE=y 796CONFIG_FS_MBCACHE=y
@@ -760,6 +798,7 @@ CONFIG_FS_MBCACHE=y
760# CONFIG_JFS_FS is not set 798# CONFIG_JFS_FS is not set
761# CONFIG_FS_POSIX_ACL is not set 799# CONFIG_FS_POSIX_ACL is not set
762# CONFIG_XFS_FS is not set 800# CONFIG_XFS_FS is not set
801# CONFIG_GFS2_FS is not set
763# CONFIG_OCFS2_FS is not set 802# CONFIG_OCFS2_FS is not set
764# CONFIG_MINIX_FS is not set 803# CONFIG_MINIX_FS is not set
765# CONFIG_ROMFS_FS is not set 804# CONFIG_ROMFS_FS is not set
@@ -788,8 +827,10 @@ CONFIG_FS_MBCACHE=y
788# 827#
789CONFIG_PROC_FS=y 828CONFIG_PROC_FS=y
790CONFIG_PROC_KCORE=y 829CONFIG_PROC_KCORE=y
830CONFIG_PROC_SYSCTL=y
791CONFIG_SYSFS=y 831CONFIG_SYSFS=y
792CONFIG_TMPFS=y 832CONFIG_TMPFS=y
833# CONFIG_TMPFS_POSIX_ACL is not set
793# CONFIG_HUGETLB_PAGE is not set 834# CONFIG_HUGETLB_PAGE is not set
794CONFIG_RAMFS=y 835CONFIG_RAMFS=y
795# CONFIG_CONFIGFS_FS is not set 836# CONFIG_CONFIGFS_FS is not set
@@ -904,13 +945,20 @@ CONFIG_NLS_DEFAULT="iso8859-1"
904# CONFIG_NLS_UTF8 is not set 945# CONFIG_NLS_UTF8 is not set
905 946
906# 947#
948# Distributed Lock Manager
949#
950# CONFIG_DLM is not set
951
952#
907# Library routines 953# Library routines
908# 954#
955CONFIG_BITREVERSE=y
909# CONFIG_CRC_CCITT is not set 956# CONFIG_CRC_CCITT is not set
910# CONFIG_CRC16 is not set 957# CONFIG_CRC16 is not set
911CONFIG_CRC32=y 958CONFIG_CRC32=y
912# CONFIG_LIBCRC32C is not set 959# CONFIG_LIBCRC32C is not set
913CONFIG_PLIST=y 960CONFIG_PLIST=y
961CONFIG_IOMAP_COPY=y
914 962
915# 963#
916# Instrumentation Support 964# Instrumentation Support
@@ -921,12 +969,16 @@ CONFIG_PLIST=y
921# Kernel hacking 969# Kernel hacking
922# 970#
923# CONFIG_PRINTK_TIME is not set 971# CONFIG_PRINTK_TIME is not set
972CONFIG_ENABLE_MUST_CHECK=y
924# CONFIG_MAGIC_SYSRQ is not set 973# CONFIG_MAGIC_SYSRQ is not set
925# CONFIG_UNUSED_SYMBOLS is not set 974# CONFIG_UNUSED_SYMBOLS is not set
975# CONFIG_DEBUG_FS is not set
976# CONFIG_HEADERS_CHECK is not set
926CONFIG_DEBUG_KERNEL=y 977CONFIG_DEBUG_KERNEL=y
927CONFIG_LOG_BUF_SHIFT=14 978CONFIG_LOG_BUF_SHIFT=14
928CONFIG_DETECT_SOFTLOCKUP=y 979CONFIG_DETECT_SOFTLOCKUP=y
929# CONFIG_SCHEDSTATS is not set 980# CONFIG_SCHEDSTATS is not set
981# CONFIG_DEBUG_SLAB is not set
930# CONFIG_DEBUG_RT_MUTEXES is not set 982# CONFIG_DEBUG_RT_MUTEXES is not set
931# CONFIG_RT_MUTEX_TESTER is not set 983# CONFIG_RT_MUTEX_TESTER is not set
932# CONFIG_DEBUG_SPINLOCK is not set 984# CONFIG_DEBUG_SPINLOCK is not set
@@ -936,10 +988,10 @@ CONFIG_DETECT_SOFTLOCKUP=y
936# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 988# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
937# CONFIG_DEBUG_KOBJECT is not set 989# CONFIG_DEBUG_KOBJECT is not set
938# CONFIG_DEBUG_HIGHMEM is not set 990# CONFIG_DEBUG_HIGHMEM is not set
991# CONFIG_DEBUG_BUGVERBOSE is not set
939# CONFIG_DEBUG_INFO is not set 992# CONFIG_DEBUG_INFO is not set
940# CONFIG_DEBUG_FS is not set
941# CONFIG_DEBUG_VM is not set 993# CONFIG_DEBUG_VM is not set
942# CONFIG_UNWIND_INFO is not set 994# CONFIG_DEBUG_LIST is not set
943CONFIG_FORCED_INLINING=y 995CONFIG_FORCED_INLINING=y
944# CONFIG_RCU_TORTURE_TEST is not set 996# CONFIG_RCU_TORTURE_TEST is not set
945# CONFIG_DEBUGGER is not set 997# CONFIG_DEBUGGER is not set
@@ -957,7 +1009,3 @@ CONFIG_FORCED_INLINING=y
957# Cryptographic options 1009# Cryptographic options
958# 1010#
959# CONFIG_CRYPTO is not set 1011# CONFIG_CRYPTO is not set
960
961#
962# Hardware crypto devices
963#
diff --git a/arch/powerpc/configs/pmac32_defconfig b/arch/powerpc/configs/pmac32_defconfig
index 765c8bb90ddd..f611df480fd9 100644
--- a/arch/powerpc/configs/pmac32_defconfig
+++ b/arch/powerpc/configs/pmac32_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:30:23 2006 4# Mon Jan 22 22:28:56 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -21,13 +22,14 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
21CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
22# CONFIG_PPC_UDBG_16550 is not set 23# CONFIG_PPC_UDBG_16550 is not set
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
24# CONFIG_DEFAULT_UIMAGE is not set 27# CONFIG_DEFAULT_UIMAGE is not set
25 28
26# 29#
27# Processor support 30# Processor support
28# 31#
29CONFIG_CLASSIC32=y 32CONFIG_CLASSIC32=y
30# CONFIG_PPC_52xx is not set
31# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
32# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
33# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -38,6 +40,8 @@ CONFIG_CLASSIC32=y
38# CONFIG_E200 is not set 40# CONFIG_E200 is not set
39CONFIG_6xx=y 41CONFIG_6xx=y
40CONFIG_PPC_FPU=y 42CONFIG_PPC_FPU=y
43# CONFIG_PPC_DCR_NATIVE is not set
44# CONFIG_PPC_DCR_MMIO is not set
41CONFIG_ALTIVEC=y 45CONFIG_ALTIVEC=y
42CONFIG_PPC_STD_MMU=y 46CONFIG_PPC_STD_MMU=y
43CONFIG_PPC_STD_MMU_32=y 47CONFIG_PPC_STD_MMU_32=y
@@ -58,17 +62,21 @@ CONFIG_LOCALVERSION=""
58# CONFIG_LOCALVERSION_AUTO is not set 62# CONFIG_LOCALVERSION_AUTO is not set
59CONFIG_SWAP=y 63CONFIG_SWAP=y
60CONFIG_SYSVIPC=y 64CONFIG_SYSVIPC=y
65# CONFIG_IPC_NS is not set
61CONFIG_POSIX_MQUEUE=y 66CONFIG_POSIX_MQUEUE=y
62# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
63# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
64CONFIG_SYSCTL=y 69# CONFIG_UTS_NS is not set
65# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
66CONFIG_IKCONFIG=y 71CONFIG_IKCONFIG=y
67CONFIG_IKCONFIG_PROC=y 72CONFIG_IKCONFIG_PROC=y
73CONFIG_SYSFS_DEPRECATED=y
68# CONFIG_RELAY is not set 74# CONFIG_RELAY is not set
69CONFIG_INITRAMFS_SOURCE="" 75CONFIG_INITRAMFS_SOURCE=""
70# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 76# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
77CONFIG_SYSCTL=y
71# CONFIG_EMBEDDED is not set 78# CONFIG_EMBEDDED is not set
79CONFIG_SYSCTL_SYSCALL=y
72CONFIG_KALLSYMS=y 80CONFIG_KALLSYMS=y
73# CONFIG_KALLSYMS_ALL is not set 81# CONFIG_KALLSYMS_ALL is not set
74# CONFIG_KALLSYMS_EXTRA_PASS is not set 82# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -77,12 +85,12 @@ CONFIG_PRINTK=y
77CONFIG_BUG=y 85CONFIG_BUG=y
78CONFIG_ELF_CORE=y 86CONFIG_ELF_CORE=y
79CONFIG_BASE_FULL=y 87CONFIG_BASE_FULL=y
80CONFIG_RT_MUTEXES=y
81CONFIG_FUTEX=y 88CONFIG_FUTEX=y
82CONFIG_EPOLL=y 89CONFIG_EPOLL=y
83CONFIG_SHMEM=y 90CONFIG_SHMEM=y
84CONFIG_SLAB=y 91CONFIG_SLAB=y
85CONFIG_VM_EVENT_COUNTERS=y 92CONFIG_VM_EVENT_COUNTERS=y
93CONFIG_RT_MUTEXES=y
86# CONFIG_TINY_SHMEM is not set 94# CONFIG_TINY_SHMEM is not set
87CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
88# CONFIG_SLOB is not set 96# CONFIG_SLOB is not set
@@ -100,6 +108,7 @@ CONFIG_KMOD=y
100# 108#
101# Block layer 109# Block layer
102# 110#
111CONFIG_BLOCK=y
103CONFIG_LBD=y 112CONFIG_LBD=y
104# CONFIG_BLK_DEV_IO_TRACE is not set 113# CONFIG_BLK_DEV_IO_TRACE is not set
105CONFIG_LSF=y 114CONFIG_LSF=y
@@ -121,18 +130,22 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
121# Platform support 130# Platform support
122# 131#
123CONFIG_PPC_MULTIPLATFORM=y 132CONFIG_PPC_MULTIPLATFORM=y
124# CONFIG_PPC_ISERIES is not set
125# CONFIG_EMBEDDED6xx is not set 133# CONFIG_EMBEDDED6xx is not set
126# CONFIG_APUS is not set 134# CONFIG_APUS is not set
127# CONFIG_PPC_CHRP is not set 135# CONFIG_PPC_CHRP is not set
136# CONFIG_PPC_MPC52xx is not set
137# CONFIG_PPC_EFIKA is not set
138# CONFIG_PPC_LITE5200 is not set
128CONFIG_PPC_PMAC=y 139CONFIG_PPC_PMAC=y
129# CONFIG_PPC_CELL is not set 140# CONFIG_PPC_CELL is not set
130# CONFIG_PPC_CELL_NATIVE is not set 141# CONFIG_PPC_CELL_NATIVE is not set
131# CONFIG_UDBG_RTAS_CONSOLE is not set 142CONFIG_PPC_NATIVE=y
132# CONFIG_PPC_RTAS is not set 143# CONFIG_PPC_RTAS is not set
133# CONFIG_MMIO_NVRAM is not set 144# CONFIG_MMIO_NVRAM is not set
134CONFIG_PPC_MPC106=y 145CONFIG_PPC_MPC106=y
135# CONFIG_PPC_970_NAP is not set 146# CONFIG_PPC_970_NAP is not set
147# CONFIG_PPC_INDIRECT_IO is not set
148# CONFIG_GENERIC_IOMAP is not set
136CONFIG_CPU_FREQ=y 149CONFIG_CPU_FREQ=y
137CONFIG_CPU_FREQ_TABLE=y 150CONFIG_CPU_FREQ_TABLE=y
138# CONFIG_CPU_FREQ_DEBUG is not set 151# CONFIG_CPU_FREQ_DEBUG is not set
@@ -157,6 +170,7 @@ CONFIG_MPIC=y
157# CONFIG_HIGHMEM is not set 170# CONFIG_HIGHMEM is not set
158# CONFIG_HZ_100 is not set 171# CONFIG_HZ_100 is not set
159CONFIG_HZ_250=y 172CONFIG_HZ_250=y
173# CONFIG_HZ_300 is not set
160# CONFIG_HZ_1000 is not set 174# CONFIG_HZ_1000 is not set
161CONFIG_HZ=250 175CONFIG_HZ=250
162CONFIG_PREEMPT_NONE=y 176CONFIG_PREEMPT_NONE=y
@@ -167,6 +181,7 @@ CONFIG_BINFMT_MISC=m
167CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 181CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
168# CONFIG_KEXEC is not set 182# CONFIG_KEXEC is not set
169CONFIG_ARCH_FLATMEM_ENABLE=y 183CONFIG_ARCH_FLATMEM_ENABLE=y
184CONFIG_ARCH_POPULATES_NODE_MAP=y
170CONFIG_SELECT_MEMORY_MODEL=y 185CONFIG_SELECT_MEMORY_MODEL=y
171CONFIG_FLATMEM_MANUAL=y 186CONFIG_FLATMEM_MANUAL=y
172# CONFIG_DISCONTIGMEM_MANUAL is not set 187# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -181,6 +196,8 @@ CONFIG_PROC_DEVICETREE=y
181CONFIG_PM=y 196CONFIG_PM=y
182# CONFIG_PM_LEGACY is not set 197# CONFIG_PM_LEGACY is not set
183CONFIG_PM_DEBUG=y 198CONFIG_PM_DEBUG=y
199# CONFIG_DISABLE_CONSOLE_SUSPEND is not set
200CONFIG_PM_SYSFS_DEPRECATED=y
184CONFIG_SOFTWARE_SUSPEND=y 201CONFIG_SOFTWARE_SUSPEND=y
185CONFIG_PM_STD_PARTITION="" 202CONFIG_PM_STD_PARTITION=""
186CONFIG_SECCOMP=y 203CONFIG_SECCOMP=y
@@ -254,6 +271,7 @@ CONFIG_PACKET=y
254CONFIG_UNIX=y 271CONFIG_UNIX=y
255CONFIG_XFRM=y 272CONFIG_XFRM=y
256CONFIG_XFRM_USER=y 273CONFIG_XFRM_USER=y
274# CONFIG_XFRM_SUB_POLICY is not set
257CONFIG_NET_KEY=y 275CONFIG_NET_KEY=y
258CONFIG_INET=y 276CONFIG_INET=y
259CONFIG_IP_MULTICAST=y 277CONFIG_IP_MULTICAST=y
@@ -272,10 +290,13 @@ CONFIG_INET_ESP=y
272# CONFIG_INET_TUNNEL is not set 290# CONFIG_INET_TUNNEL is not set
273# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 291# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
274# CONFIG_INET_XFRM_MODE_TUNNEL is not set 292# CONFIG_INET_XFRM_MODE_TUNNEL is not set
293CONFIG_INET_XFRM_MODE_BEET=y
275CONFIG_INET_DIAG=y 294CONFIG_INET_DIAG=y
276CONFIG_INET_TCP_DIAG=y 295CONFIG_INET_TCP_DIAG=y
277# CONFIG_TCP_CONG_ADVANCED is not set 296# CONFIG_TCP_CONG_ADVANCED is not set
278CONFIG_TCP_CONG_BIC=y 297CONFIG_TCP_CONG_CUBIC=y
298CONFIG_DEFAULT_TCP_CONG="cubic"
299# CONFIG_TCP_MD5SIG is not set
279 300
280# 301#
281# IP: Virtual Server Configuration 302# IP: Virtual Server Configuration
@@ -292,14 +313,33 @@ CONFIG_NETFILTER=y
292# Core Netfilter Configuration 313# Core Netfilter Configuration
293# 314#
294# CONFIG_NETFILTER_NETLINK is not set 315# CONFIG_NETFILTER_NETLINK is not set
316CONFIG_NF_CONNTRACK_ENABLED=m
317CONFIG_NF_CONNTRACK_SUPPORT=y
318# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
319CONFIG_NF_CONNTRACK=m
320# CONFIG_NF_CT_ACCT is not set
321# CONFIG_NF_CONNTRACK_MARK is not set
322# CONFIG_NF_CONNTRACK_EVENTS is not set
323# CONFIG_NF_CT_PROTO_SCTP is not set
324# CONFIG_NF_CONNTRACK_AMANDA is not set
325CONFIG_NF_CONNTRACK_FTP=m
326# CONFIG_NF_CONNTRACK_H323 is not set
327CONFIG_NF_CONNTRACK_IRC=m
328# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
329# CONFIG_NF_CONNTRACK_PPTP is not set
330# CONFIG_NF_CONNTRACK_SIP is not set
331CONFIG_NF_CONNTRACK_TFTP=m
295CONFIG_NETFILTER_XTABLES=m 332CONFIG_NETFILTER_XTABLES=m
296CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 333CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
334# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
297CONFIG_NETFILTER_XT_TARGET_MARK=m 335CONFIG_NETFILTER_XT_TARGET_MARK=m
298CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 336CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
337CONFIG_NETFILTER_XT_TARGET_NFLOG=m
299CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 338CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
300CONFIG_NETFILTER_XT_MATCH_COMMENT=m 339CONFIG_NETFILTER_XT_MATCH_COMMENT=m
301CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 340CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
302CONFIG_NETFILTER_XT_MATCH_DCCP=m 341CONFIG_NETFILTER_XT_MATCH_DCCP=m
342CONFIG_NETFILTER_XT_MATCH_DSCP=m
303CONFIG_NETFILTER_XT_MATCH_ESP=m 343CONFIG_NETFILTER_XT_MATCH_ESP=m
304CONFIG_NETFILTER_XT_MATCH_HELPER=m 344CONFIG_NETFILTER_XT_MATCH_HELPER=m
305CONFIG_NETFILTER_XT_MATCH_LENGTH=m 345CONFIG_NETFILTER_XT_MATCH_LENGTH=m
@@ -312,61 +352,49 @@ CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
312# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set 352# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
313CONFIG_NETFILTER_XT_MATCH_REALM=m 353CONFIG_NETFILTER_XT_MATCH_REALM=m
314CONFIG_NETFILTER_XT_MATCH_SCTP=m 354CONFIG_NETFILTER_XT_MATCH_SCTP=m
315CONFIG_NETFILTER_XT_MATCH_STATE=m 355# CONFIG_NETFILTER_XT_MATCH_STATE is not set
316# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set 356# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
317CONFIG_NETFILTER_XT_MATCH_STRING=m 357CONFIG_NETFILTER_XT_MATCH_STRING=m
318CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 358CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
359# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
319 360
320# 361#
321# IP: Netfilter Configuration 362# IP: Netfilter Configuration
322# 363#
323CONFIG_IP_NF_CONNTRACK=m 364CONFIG_NF_CONNTRACK_IPV4=m
324# CONFIG_IP_NF_CT_ACCT is not set 365CONFIG_NF_CONNTRACK_PROC_COMPAT=y
325# CONFIG_IP_NF_CONNTRACK_MARK is not set
326# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
327# CONFIG_IP_NF_CT_PROTO_SCTP is not set
328CONFIG_IP_NF_FTP=m
329CONFIG_IP_NF_IRC=m
330CONFIG_IP_NF_NETBIOS_NS=m
331CONFIG_IP_NF_TFTP=m
332CONFIG_IP_NF_AMANDA=m
333CONFIG_IP_NF_PPTP=m
334CONFIG_IP_NF_H323=m
335# CONFIG_IP_NF_SIP is not set
336# CONFIG_IP_NF_QUEUE is not set 366# CONFIG_IP_NF_QUEUE is not set
337CONFIG_IP_NF_IPTABLES=m 367CONFIG_IP_NF_IPTABLES=m
338CONFIG_IP_NF_MATCH_IPRANGE=m 368CONFIG_IP_NF_MATCH_IPRANGE=m
339CONFIG_IP_NF_MATCH_TOS=m 369CONFIG_IP_NF_MATCH_TOS=m
340CONFIG_IP_NF_MATCH_RECENT=m 370CONFIG_IP_NF_MATCH_RECENT=m
341CONFIG_IP_NF_MATCH_ECN=m 371CONFIG_IP_NF_MATCH_ECN=m
342CONFIG_IP_NF_MATCH_DSCP=m
343CONFIG_IP_NF_MATCH_AH=m 372CONFIG_IP_NF_MATCH_AH=m
344CONFIG_IP_NF_MATCH_TTL=m 373CONFIG_IP_NF_MATCH_TTL=m
345CONFIG_IP_NF_MATCH_OWNER=m 374CONFIG_IP_NF_MATCH_OWNER=m
346CONFIG_IP_NF_MATCH_ADDRTYPE=m 375CONFIG_IP_NF_MATCH_ADDRTYPE=m
347CONFIG_IP_NF_MATCH_HASHLIMIT=m
348CONFIG_IP_NF_FILTER=m 376CONFIG_IP_NF_FILTER=m
349CONFIG_IP_NF_TARGET_REJECT=m 377CONFIG_IP_NF_TARGET_REJECT=m
350CONFIG_IP_NF_TARGET_LOG=m 378CONFIG_IP_NF_TARGET_LOG=m
351CONFIG_IP_NF_TARGET_ULOG=m 379CONFIG_IP_NF_TARGET_ULOG=m
352CONFIG_IP_NF_TARGET_TCPMSS=m 380CONFIG_IP_NF_TARGET_TCPMSS=m
353CONFIG_IP_NF_NAT=m 381CONFIG_NF_NAT=m
354CONFIG_IP_NF_NAT_NEEDED=y 382CONFIG_NF_NAT_NEEDED=y
355CONFIG_IP_NF_TARGET_MASQUERADE=m 383CONFIG_IP_NF_TARGET_MASQUERADE=m
356CONFIG_IP_NF_TARGET_REDIRECT=m 384CONFIG_IP_NF_TARGET_REDIRECT=m
357CONFIG_IP_NF_TARGET_NETMAP=m 385CONFIG_IP_NF_TARGET_NETMAP=m
358CONFIG_IP_NF_TARGET_SAME=m 386CONFIG_IP_NF_TARGET_SAME=m
359CONFIG_IP_NF_NAT_SNMP_BASIC=m 387# CONFIG_NF_NAT_SNMP_BASIC is not set
360CONFIG_IP_NF_NAT_IRC=m 388CONFIG_NF_NAT_FTP=m
361CONFIG_IP_NF_NAT_FTP=m 389CONFIG_NF_NAT_IRC=m
362CONFIG_IP_NF_NAT_TFTP=m 390CONFIG_NF_NAT_TFTP=m
363CONFIG_IP_NF_NAT_AMANDA=m 391# CONFIG_NF_NAT_AMANDA is not set
364CONFIG_IP_NF_NAT_PPTP=m 392# CONFIG_NF_NAT_PPTP is not set
365CONFIG_IP_NF_NAT_H323=m 393# CONFIG_NF_NAT_H323 is not set
394# CONFIG_NF_NAT_SIP is not set
366CONFIG_IP_NF_MANGLE=m 395CONFIG_IP_NF_MANGLE=m
367CONFIG_IP_NF_TARGET_TOS=m 396CONFIG_IP_NF_TARGET_TOS=m
368CONFIG_IP_NF_TARGET_ECN=m 397CONFIG_IP_NF_TARGET_ECN=m
369CONFIG_IP_NF_TARGET_DSCP=m
370CONFIG_IP_NF_TARGET_TTL=m 398CONFIG_IP_NF_TARGET_TTL=m
371CONFIG_IP_NF_RAW=m 399CONFIG_IP_NF_RAW=m
372CONFIG_IP_NF_ARPTABLES=m 400CONFIG_IP_NF_ARPTABLES=m
@@ -384,8 +412,11 @@ CONFIG_IP_DCCP_ACKVEC=y
384# DCCP CCIDs Configuration (EXPERIMENTAL) 412# DCCP CCIDs Configuration (EXPERIMENTAL)
385# 413#
386CONFIG_IP_DCCP_CCID2=m 414CONFIG_IP_DCCP_CCID2=m
415# CONFIG_IP_DCCP_CCID2_DEBUG is not set
387CONFIG_IP_DCCP_CCID3=m 416CONFIG_IP_DCCP_CCID3=m
388CONFIG_IP_DCCP_TFRC_LIB=m 417CONFIG_IP_DCCP_TFRC_LIB=m
418# CONFIG_IP_DCCP_CCID3_DEBUG is not set
419CONFIG_IP_DCCP_CCID3_RTO=100
389 420
390# 421#
391# DCCP Kernel Hacking 422# DCCP Kernel Hacking
@@ -410,7 +441,6 @@ CONFIG_IP_DCCP_TFRC_LIB=m
410# CONFIG_ATALK is not set 441# CONFIG_ATALK is not set
411# CONFIG_X25 is not set 442# CONFIG_X25 is not set
412# CONFIG_LAPB is not set 443# CONFIG_LAPB is not set
413# CONFIG_NET_DIVERT is not set
414# CONFIG_ECONET is not set 444# CONFIG_ECONET is not set
415# CONFIG_WAN_ROUTER is not set 445# CONFIG_WAN_ROUTER is not set
416 446
@@ -567,6 +597,12 @@ CONFIG_BLK_DEV_INITRD=y
567# CONFIG_ATA_OVER_ETH is not set 597# CONFIG_ATA_OVER_ETH is not set
568 598
569# 599#
600# Misc devices
601#
602# CONFIG_SGI_IOC4 is not set
603# CONFIG_TIFM_CORE is not set
604
605#
570# ATA/ATAPI/MFM/RLL support 606# ATA/ATAPI/MFM/RLL support
571# 607#
572CONFIG_IDE=y 608CONFIG_IDE=y
@@ -594,7 +630,6 @@ CONFIG_IDEPCI_SHARE_IRQ=y
594# CONFIG_BLK_DEV_OFFBOARD is not set 630# CONFIG_BLK_DEV_OFFBOARD is not set
595CONFIG_BLK_DEV_GENERIC=y 631CONFIG_BLK_DEV_GENERIC=y
596# CONFIG_BLK_DEV_OPTI621 is not set 632# CONFIG_BLK_DEV_OPTI621 is not set
597CONFIG_BLK_DEV_SL82C105=y
598CONFIG_BLK_DEV_IDEDMA_PCI=y 633CONFIG_BLK_DEV_IDEDMA_PCI=y
599# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 634# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
600CONFIG_IDEDMA_PCI_AUTO=y 635CONFIG_IDEDMA_PCI_AUTO=y
@@ -609,6 +644,7 @@ CONFIG_IDEDMA_PCI_AUTO=y
609# CONFIG_BLK_DEV_CS5530 is not set 644# CONFIG_BLK_DEV_CS5530 is not set
610# CONFIG_BLK_DEV_HPT34X is not set 645# CONFIG_BLK_DEV_HPT34X is not set
611# CONFIG_BLK_DEV_HPT366 is not set 646# CONFIG_BLK_DEV_HPT366 is not set
647# CONFIG_BLK_DEV_JMICRON is not set
612# CONFIG_BLK_DEV_SC1200 is not set 648# CONFIG_BLK_DEV_SC1200 is not set
613# CONFIG_BLK_DEV_PIIX is not set 649# CONFIG_BLK_DEV_PIIX is not set
614# CONFIG_BLK_DEV_IT821X is not set 650# CONFIG_BLK_DEV_IT821X is not set
@@ -617,6 +653,7 @@ CONFIG_IDEDMA_PCI_AUTO=y
617CONFIG_BLK_DEV_PDC202XX_NEW=y 653CONFIG_BLK_DEV_PDC202XX_NEW=y
618# CONFIG_BLK_DEV_SVWKS is not set 654# CONFIG_BLK_DEV_SVWKS is not set
619# CONFIG_BLK_DEV_SIIMAGE is not set 655# CONFIG_BLK_DEV_SIIMAGE is not set
656CONFIG_BLK_DEV_SL82C105=y
620# CONFIG_BLK_DEV_SLC90E66 is not set 657# CONFIG_BLK_DEV_SLC90E66 is not set
621# CONFIG_BLK_DEV_TRM290 is not set 658# CONFIG_BLK_DEV_TRM290 is not set
622# CONFIG_BLK_DEV_VIA82CXXX is not set 659# CONFIG_BLK_DEV_VIA82CXXX is not set
@@ -634,6 +671,8 @@ CONFIG_IDEDMA_AUTO=y
634# 671#
635# CONFIG_RAID_ATTRS is not set 672# CONFIG_RAID_ATTRS is not set
636CONFIG_SCSI=y 673CONFIG_SCSI=y
674# CONFIG_SCSI_TGT is not set
675CONFIG_SCSI_NETLINK=y
637CONFIG_SCSI_PROC_FS=y 676CONFIG_SCSI_PROC_FS=y
638 677
639# 678#
@@ -653,14 +692,16 @@ CONFIG_CHR_DEV_SG=y
653# CONFIG_SCSI_MULTI_LUN is not set 692# CONFIG_SCSI_MULTI_LUN is not set
654CONFIG_SCSI_CONSTANTS=y 693CONFIG_SCSI_CONSTANTS=y
655# CONFIG_SCSI_LOGGING is not set 694# CONFIG_SCSI_LOGGING is not set
695# CONFIG_SCSI_SCAN_ASYNC is not set
656 696
657# 697#
658# SCSI Transport Attributes 698# SCSI Transports
659# 699#
660CONFIG_SCSI_SPI_ATTRS=y 700CONFIG_SCSI_SPI_ATTRS=y
661CONFIG_SCSI_FC_ATTRS=y 701CONFIG_SCSI_FC_ATTRS=y
662# CONFIG_SCSI_ISCSI_ATTRS is not set 702# CONFIG_SCSI_ISCSI_ATTRS is not set
663# CONFIG_SCSI_SAS_ATTRS is not set 703# CONFIG_SCSI_SAS_ATTRS is not set
704# CONFIG_SCSI_SAS_LIBSAS is not set
664 705
665# 706#
666# SCSI low-level drivers 707# SCSI low-level drivers
@@ -678,11 +719,12 @@ CONFIG_AIC7XXX_DEBUG_MASK=0
678CONFIG_AIC7XXX_REG_PRETTY_PRINT=y 719CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
679CONFIG_SCSI_AIC7XXX_OLD=m 720CONFIG_SCSI_AIC7XXX_OLD=m
680# CONFIG_SCSI_AIC79XX is not set 721# CONFIG_SCSI_AIC79XX is not set
722# CONFIG_SCSI_AIC94XX is not set
681# CONFIG_SCSI_DPT_I2O is not set 723# CONFIG_SCSI_DPT_I2O is not set
724# CONFIG_SCSI_ARCMSR is not set
682# CONFIG_MEGARAID_NEWGEN is not set 725# CONFIG_MEGARAID_NEWGEN is not set
683# CONFIG_MEGARAID_LEGACY is not set 726# CONFIG_MEGARAID_LEGACY is not set
684# CONFIG_MEGARAID_SAS is not set 727# CONFIG_MEGARAID_SAS is not set
685# CONFIG_ATA is not set
686# CONFIG_SCSI_HPTIOP is not set 728# CONFIG_SCSI_HPTIOP is not set
687# CONFIG_SCSI_BUSLOGIC is not set 729# CONFIG_SCSI_BUSLOGIC is not set
688# CONFIG_SCSI_DMX3191D is not set 730# CONFIG_SCSI_DMX3191D is not set
@@ -692,14 +734,15 @@ CONFIG_SCSI_AIC7XXX_OLD=m
692# CONFIG_SCSI_IPS is not set 734# CONFIG_SCSI_IPS is not set
693# CONFIG_SCSI_INITIO is not set 735# CONFIG_SCSI_INITIO is not set
694# CONFIG_SCSI_INIA100 is not set 736# CONFIG_SCSI_INIA100 is not set
737# CONFIG_SCSI_STEX is not set
695CONFIG_SCSI_SYM53C8XX_2=y 738CONFIG_SCSI_SYM53C8XX_2=y
696CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 739CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
697CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 740CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
698CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 741CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
699CONFIG_SCSI_SYM53C8XX_MMIO=y 742CONFIG_SCSI_SYM53C8XX_MMIO=y
700# CONFIG_SCSI_IPR is not set
701# CONFIG_SCSI_QLOGIC_1280 is not set 743# CONFIG_SCSI_QLOGIC_1280 is not set
702# CONFIG_SCSI_QLA_FC is not set 744# CONFIG_SCSI_QLA_FC is not set
745# CONFIG_SCSI_QLA_ISCSI is not set
703# CONFIG_SCSI_LPFC is not set 746# CONFIG_SCSI_LPFC is not set
704# CONFIG_SCSI_DC395x is not set 747# CONFIG_SCSI_DC395x is not set
705# CONFIG_SCSI_DC390T is not set 748# CONFIG_SCSI_DC390T is not set
@@ -709,6 +752,7 @@ CONFIG_SCSI_MESH=y
709CONFIG_SCSI_MESH_SYNC_RATE=5 752CONFIG_SCSI_MESH_SYNC_RATE=5
710CONFIG_SCSI_MESH_RESET_DELAY_MS=4000 753CONFIG_SCSI_MESH_RESET_DELAY_MS=4000
711CONFIG_SCSI_MAC53C94=y 754CONFIG_SCSI_MAC53C94=y
755# CONFIG_SCSI_SRP is not set
712 756
713# 757#
714# PCMCIA SCSI adapter support 758# PCMCIA SCSI adapter support
@@ -720,6 +764,11 @@ CONFIG_SCSI_MAC53C94=y
720# CONFIG_PCMCIA_SYM53C500 is not set 764# CONFIG_PCMCIA_SYM53C500 is not set
721 765
722# 766#
767# Serial ATA (prod) and Parallel ATA (experimental) drivers
768#
769# CONFIG_ATA is not set
770
771#
723# Multi-device support (RAID and LVM) 772# Multi-device support (RAID and LVM)
724# 773#
725CONFIG_MD=y 774CONFIG_MD=y
@@ -732,6 +781,7 @@ CONFIG_MD_RAID10=m
732CONFIG_MD_MULTIPATH=m 781CONFIG_MD_MULTIPATH=m
733CONFIG_MD_FAULTY=m 782CONFIG_MD_FAULTY=m
734CONFIG_BLK_DEV_DM=m 783CONFIG_BLK_DEV_DM=m
784# CONFIG_DM_DEBUG is not set
735CONFIG_DM_CRYPT=m 785CONFIG_DM_CRYPT=m
736CONFIG_DM_SNAPSHOT=m 786CONFIG_DM_SNAPSHOT=m
737CONFIG_DM_MIRROR=m 787CONFIG_DM_MIRROR=m
@@ -798,6 +848,7 @@ CONFIG_THERM_WINDTUNNEL=m
798CONFIG_THERM_ADT746X=m 848CONFIG_THERM_ADT746X=m
799# CONFIG_WINDFARM is not set 849# CONFIG_WINDFARM is not set
800# CONFIG_ANSLCD is not set 850# CONFIG_ANSLCD is not set
851CONFIG_PMAC_RACKMETER=m
801 852
802# 853#
803# Network device support 854# Network device support
@@ -838,6 +889,7 @@ CONFIG_SUNGEM=y
838# CONFIG_HP100 is not set 889# CONFIG_HP100 is not set
839CONFIG_NET_PCI=y 890CONFIG_NET_PCI=y
840CONFIG_PCNET32=y 891CONFIG_PCNET32=y
892# CONFIG_PCNET32_NAPI is not set
841# CONFIG_AMD8111_ETH is not set 893# CONFIG_AMD8111_ETH is not set
842# CONFIG_ADAPTEC_STARFIRE is not set 894# CONFIG_ADAPTEC_STARFIRE is not set
843# CONFIG_B44 is not set 895# CONFIG_B44 is not set
@@ -874,6 +926,7 @@ CONFIG_PCNET32=y
874# CONFIG_TIGON3 is not set 926# CONFIG_TIGON3 is not set
875# CONFIG_BNX2 is not set 927# CONFIG_BNX2 is not set
876# CONFIG_MV643XX_ETH is not set 928# CONFIG_MV643XX_ETH is not set
929# CONFIG_QLA3XXX is not set
877 930
878# 931#
879# Ethernet (10000 Mbit) 932# Ethernet (10000 Mbit)
@@ -882,6 +935,7 @@ CONFIG_PCNET32=y
882# CONFIG_IXGB is not set 935# CONFIG_IXGB is not set
883# CONFIG_S2IO is not set 936# CONFIG_S2IO is not set
884# CONFIG_MYRI10GE is not set 937# CONFIG_MYRI10GE is not set
938# CONFIG_NETXEN_NIC is not set
885 939
886# 940#
887# Token Ring devices 941# Token Ring devices
@@ -957,6 +1011,7 @@ CONFIG_PPP_BSDCOMP=m
957# CONFIG_PPP_MPPE is not set 1011# CONFIG_PPP_MPPE is not set
958# CONFIG_PPPOE is not set 1012# CONFIG_PPPOE is not set
959# CONFIG_SLIP is not set 1013# CONFIG_SLIP is not set
1014CONFIG_SLHC=y
960# CONFIG_NET_FC is not set 1015# CONFIG_NET_FC is not set
961# CONFIG_SHAPER is not set 1016# CONFIG_SHAPER is not set
962# CONFIG_NETCONSOLE is not set 1017# CONFIG_NETCONSOLE is not set
@@ -977,6 +1032,7 @@ CONFIG_PPP_BSDCOMP=m
977# Input device support 1032# Input device support
978# 1033#
979CONFIG_INPUT=y 1034CONFIG_INPUT=y
1035# CONFIG_INPUT_FF_MEMLESS is not set
980 1036
981# 1037#
982# Userland interfaces 1038# Userland interfaces
@@ -999,6 +1055,7 @@ CONFIG_INPUT_KEYBOARD=y
999# CONFIG_KEYBOARD_LKKBD is not set 1055# CONFIG_KEYBOARD_LKKBD is not set
1000# CONFIG_KEYBOARD_XTKBD is not set 1056# CONFIG_KEYBOARD_XTKBD is not set
1001# CONFIG_KEYBOARD_NEWTON is not set 1057# CONFIG_KEYBOARD_NEWTON is not set
1058# CONFIG_KEYBOARD_STOWAWAY is not set
1002CONFIG_INPUT_MOUSE=y 1059CONFIG_INPUT_MOUSE=y
1003# CONFIG_MOUSE_PS2 is not set 1060# CONFIG_MOUSE_PS2 is not set
1004# CONFIG_MOUSE_SERIAL is not set 1061# CONFIG_MOUSE_SERIAL is not set
@@ -1039,6 +1096,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
1039# 1096#
1040# Non-8250 serial port support 1097# Non-8250 serial port support
1041# 1098#
1099# CONFIG_SERIAL_UARTLITE is not set
1042CONFIG_SERIAL_CORE=m 1100CONFIG_SERIAL_CORE=m
1043CONFIG_SERIAL_PMACZILOG=m 1101CONFIG_SERIAL_PMACZILOG=m
1044# CONFIG_SERIAL_JSM is not set 1102# CONFIG_SERIAL_JSM is not set
@@ -1062,13 +1120,7 @@ CONFIG_GEN_RTC=y
1062# CONFIG_DTLK is not set 1120# CONFIG_DTLK is not set
1063# CONFIG_R3964 is not set 1121# CONFIG_R3964 is not set
1064# CONFIG_APPLICOM is not set 1122# CONFIG_APPLICOM is not set
1065
1066#
1067# Ftape, the floppy tape device driver
1068#
1069CONFIG_AGP=m 1123CONFIG_AGP=m
1070# CONFIG_AGP_SIS is not set
1071# CONFIG_AGP_VIA is not set
1072CONFIG_AGP_UNINORTH=m 1124CONFIG_AGP_UNINORTH=m
1073CONFIG_DRM=m 1125CONFIG_DRM=m
1074# CONFIG_DRM_TDFX is not set 1126# CONFIG_DRM_TDFX is not set
@@ -1091,7 +1143,6 @@ CONFIG_DRM_RADEON=m
1091# TPM devices 1143# TPM devices
1092# 1144#
1093# CONFIG_TCG_TPM is not set 1145# CONFIG_TCG_TPM is not set
1094# CONFIG_TELCLOCK is not set
1095 1146
1096# 1147#
1097# I2C support 1148# I2C support
@@ -1167,14 +1218,9 @@ CONFIG_I2C_POWERMAC=y
1167# CONFIG_HWMON_VID is not set 1218# CONFIG_HWMON_VID is not set
1168 1219
1169# 1220#
1170# Misc devices
1171#
1172
1173#
1174# Multimedia devices 1221# Multimedia devices
1175# 1222#
1176# CONFIG_VIDEO_DEV is not set 1223# CONFIG_VIDEO_DEV is not set
1177CONFIG_VIDEO_V4L2=y
1178 1224
1179# 1225#
1180# Digital Video Broadcasting Devices 1226# Digital Video Broadcasting Devices
@@ -1187,6 +1233,7 @@ CONFIG_VIDEO_V4L2=y
1187# 1233#
1188# CONFIG_FIRMWARE_EDID is not set 1234# CONFIG_FIRMWARE_EDID is not set
1189CONFIG_FB=y 1235CONFIG_FB=y
1236CONFIG_FB_DDC=y
1190CONFIG_FB_CFB_FILLRECT=y 1237CONFIG_FB_CFB_FILLRECT=y
1191CONFIG_FB_CFB_COPYAREA=y 1238CONFIG_FB_CFB_COPYAREA=y
1192CONFIG_FB_CFB_IMAGEBLIT=y 1239CONFIG_FB_CFB_IMAGEBLIT=y
@@ -1235,6 +1282,7 @@ CONFIG_FB_3DFX=y
1235# CONFIG_FB_3DFX_ACCEL is not set 1282# CONFIG_FB_3DFX_ACCEL is not set
1236# CONFIG_FB_VOODOO1 is not set 1283# CONFIG_FB_VOODOO1 is not set
1237# CONFIG_FB_TRIDENT is not set 1284# CONFIG_FB_TRIDENT is not set
1285# CONFIG_FB_IBM_GXT4500 is not set
1238# CONFIG_FB_VIRTUAL is not set 1286# CONFIG_FB_VIRTUAL is not set
1239 1287
1240# 1288#
@@ -1393,6 +1441,11 @@ CONFIG_SND_USB_AUDIO=m
1393# CONFIG_SOUND_PRIME is not set 1441# CONFIG_SOUND_PRIME is not set
1394 1442
1395# 1443#
1444# HID Devices
1445#
1446CONFIG_HID=y
1447
1448#
1396# USB support 1449# USB support
1397# 1450#
1398CONFIG_USB_ARCH_HAS_HCD=y 1451CONFIG_USB_ARCH_HAS_HCD=y
@@ -1408,6 +1461,7 @@ CONFIG_USB_DEVICEFS=y
1408# CONFIG_USB_BANDWIDTH is not set 1461# CONFIG_USB_BANDWIDTH is not set
1409CONFIG_USB_DYNAMIC_MINORS=y 1462CONFIG_USB_DYNAMIC_MINORS=y
1410# CONFIG_USB_SUSPEND is not set 1463# CONFIG_USB_SUSPEND is not set
1464# CONFIG_USB_MULTITHREAD_PROBE is not set
1411# CONFIG_USB_OTG is not set 1465# CONFIG_USB_OTG is not set
1412 1466
1413# 1467#
@@ -1448,13 +1502,13 @@ CONFIG_USB_STORAGE=m
1448# CONFIG_USB_STORAGE_SDDR55 is not set 1502# CONFIG_USB_STORAGE_SDDR55 is not set
1449# CONFIG_USB_STORAGE_JUMPSHOT is not set 1503# CONFIG_USB_STORAGE_JUMPSHOT is not set
1450# CONFIG_USB_STORAGE_ALAUDA is not set 1504# CONFIG_USB_STORAGE_ALAUDA is not set
1505# CONFIG_USB_STORAGE_KARMA is not set
1451# CONFIG_USB_LIBUSUAL is not set 1506# CONFIG_USB_LIBUSUAL is not set
1452 1507
1453# 1508#
1454# USB Input Devices 1509# USB Input Devices
1455# 1510#
1456CONFIG_USB_HID=y 1511CONFIG_USB_HID=y
1457CONFIG_USB_HIDINPUT=y
1458CONFIG_USB_HIDINPUT_POWERBOOK=y 1512CONFIG_USB_HIDINPUT_POWERBOOK=y
1459# CONFIG_HID_FF is not set 1513# CONFIG_HID_FF is not set
1460# CONFIG_USB_HIDDEV is not set 1514# CONFIG_USB_HIDDEV is not set
@@ -1484,12 +1538,14 @@ CONFIG_USB_APPLETOUCH=y
1484# CONFIG_USB_KAWETH is not set 1538# CONFIG_USB_KAWETH is not set
1485# CONFIG_USB_PEGASUS is not set 1539# CONFIG_USB_PEGASUS is not set
1486# CONFIG_USB_RTL8150 is not set 1540# CONFIG_USB_RTL8150 is not set
1541CONFIG_USB_USBNET_MII=m
1487CONFIG_USB_USBNET=m 1542CONFIG_USB_USBNET=m
1488CONFIG_USB_NET_AX8817X=m 1543CONFIG_USB_NET_AX8817X=m
1489CONFIG_USB_NET_CDCETHER=m 1544CONFIG_USB_NET_CDCETHER=m
1490# CONFIG_USB_NET_GL620A is not set 1545# CONFIG_USB_NET_GL620A is not set
1491CONFIG_USB_NET_NET1080=m 1546CONFIG_USB_NET_NET1080=m
1492# CONFIG_USB_NET_PLUSB is not set 1547# CONFIG_USB_NET_PLUSB is not set
1548# CONFIG_USB_NET_MCS7830 is not set
1493# CONFIG_USB_NET_RNDIS_HOST is not set 1549# CONFIG_USB_NET_RNDIS_HOST is not set
1494# CONFIG_USB_NET_CDC_SUBSET is not set 1550# CONFIG_USB_NET_CDC_SUBSET is not set
1495CONFIG_USB_NET_ZAURUS=m 1551CONFIG_USB_NET_ZAURUS=m
@@ -1504,6 +1560,7 @@ CONFIG_USB_MON=y
1504# 1560#
1505CONFIG_USB_SERIAL=m 1561CONFIG_USB_SERIAL=m
1506# CONFIG_USB_SERIAL_GENERIC is not set 1562# CONFIG_USB_SERIAL_GENERIC is not set
1563# CONFIG_USB_SERIAL_AIRCABLE is not set
1507# CONFIG_USB_SERIAL_AIRPRIME is not set 1564# CONFIG_USB_SERIAL_AIRPRIME is not set
1508# CONFIG_USB_SERIAL_ARK3116 is not set 1565# CONFIG_USB_SERIAL_ARK3116 is not set
1509# CONFIG_USB_SERIAL_BELKIN is not set 1566# CONFIG_USB_SERIAL_BELKIN is not set
@@ -1538,6 +1595,8 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
1538# CONFIG_USB_SERIAL_KLSI is not set 1595# CONFIG_USB_SERIAL_KLSI is not set
1539# CONFIG_USB_SERIAL_KOBIL_SCT is not set 1596# CONFIG_USB_SERIAL_KOBIL_SCT is not set
1540# CONFIG_USB_SERIAL_MCT_U232 is not set 1597# CONFIG_USB_SERIAL_MCT_U232 is not set
1598# CONFIG_USB_SERIAL_MOS7720 is not set
1599# CONFIG_USB_SERIAL_MOS7840 is not set
1541# CONFIG_USB_SERIAL_NAVMAN is not set 1600# CONFIG_USB_SERIAL_NAVMAN is not set
1542# CONFIG_USB_SERIAL_PL2303 is not set 1601# CONFIG_USB_SERIAL_PL2303 is not set
1543# CONFIG_USB_SERIAL_HP4X is not set 1602# CONFIG_USB_SERIAL_HP4X is not set
@@ -1548,6 +1607,7 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
1548# CONFIG_USB_SERIAL_XIRCOM is not set 1607# CONFIG_USB_SERIAL_XIRCOM is not set
1549# CONFIG_USB_SERIAL_OPTION is not set 1608# CONFIG_USB_SERIAL_OPTION is not set
1550# CONFIG_USB_SERIAL_OMNINET is not set 1609# CONFIG_USB_SERIAL_OMNINET is not set
1610# CONFIG_USB_SERIAL_DEBUG is not set
1551CONFIG_USB_EZUSB=y 1611CONFIG_USB_EZUSB=y
1552 1612
1553# 1613#
@@ -1555,6 +1615,7 @@ CONFIG_USB_EZUSB=y
1555# 1615#
1556# CONFIG_USB_EMI62 is not set 1616# CONFIG_USB_EMI62 is not set
1557# CONFIG_USB_EMI26 is not set 1617# CONFIG_USB_EMI26 is not set
1618# CONFIG_USB_ADUTUX is not set
1558# CONFIG_USB_AUERSWALD is not set 1619# CONFIG_USB_AUERSWALD is not set
1559# CONFIG_USB_RIO500 is not set 1620# CONFIG_USB_RIO500 is not set
1560# CONFIG_USB_LEGOTOWER is not set 1621# CONFIG_USB_LEGOTOWER is not set
@@ -1562,12 +1623,13 @@ CONFIG_USB_EZUSB=y
1562# CONFIG_USB_LED is not set 1623# CONFIG_USB_LED is not set
1563# CONFIG_USB_CYPRESS_CY7C63 is not set 1624# CONFIG_USB_CYPRESS_CY7C63 is not set
1564# CONFIG_USB_CYTHERM is not set 1625# CONFIG_USB_CYTHERM is not set
1565# CONFIG_USB_PHIDGETKIT is not set 1626# CONFIG_USB_PHIDGET is not set
1566# CONFIG_USB_PHIDGETSERVO is not set
1567# CONFIG_USB_IDMOUSE is not set 1627# CONFIG_USB_IDMOUSE is not set
1628# CONFIG_USB_FTDI_ELAN is not set
1568CONFIG_USB_APPLEDISPLAY=m 1629CONFIG_USB_APPLEDISPLAY=m
1569# CONFIG_USB_SISUSBVGA is not set 1630# CONFIG_USB_SISUSBVGA is not set
1570# CONFIG_USB_LD is not set 1631# CONFIG_USB_LD is not set
1632# CONFIG_USB_TRANCEVIBRATOR is not set
1571# CONFIG_USB_TEST is not set 1633# CONFIG_USB_TEST is not set
1572 1634
1573# 1635#
@@ -1630,6 +1692,10 @@ CONFIG_LEDS_TRIGGER_IDE_DISK=y
1630# 1692#
1631 1693
1632# 1694#
1695# Virtualization
1696#
1697
1698#
1633# File systems 1699# File systems
1634# 1700#
1635CONFIG_EXT2_FS=y 1701CONFIG_EXT2_FS=y
@@ -1639,6 +1705,7 @@ CONFIG_EXT3_FS=y
1639CONFIG_EXT3_FS_XATTR=y 1705CONFIG_EXT3_FS_XATTR=y
1640CONFIG_EXT3_FS_POSIX_ACL=y 1706CONFIG_EXT3_FS_POSIX_ACL=y
1641# CONFIG_EXT3_FS_SECURITY is not set 1707# CONFIG_EXT3_FS_SECURITY is not set
1708# CONFIG_EXT4DEV_FS is not set
1642CONFIG_JBD=y 1709CONFIG_JBD=y
1643# CONFIG_JBD_DEBUG is not set 1710# CONFIG_JBD_DEBUG is not set
1644CONFIG_FS_MBCACHE=y 1711CONFIG_FS_MBCACHE=y
@@ -1646,6 +1713,7 @@ CONFIG_FS_MBCACHE=y
1646# CONFIG_JFS_FS is not set 1713# CONFIG_JFS_FS is not set
1647CONFIG_FS_POSIX_ACL=y 1714CONFIG_FS_POSIX_ACL=y
1648# CONFIG_XFS_FS is not set 1715# CONFIG_XFS_FS is not set
1716# CONFIG_GFS2_FS is not set
1649# CONFIG_OCFS2_FS is not set 1717# CONFIG_OCFS2_FS is not set
1650# CONFIG_MINIX_FS is not set 1718# CONFIG_MINIX_FS is not set
1651# CONFIG_ROMFS_FS is not set 1719# CONFIG_ROMFS_FS is not set
@@ -1682,8 +1750,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1682# 1750#
1683CONFIG_PROC_FS=y 1751CONFIG_PROC_FS=y
1684CONFIG_PROC_KCORE=y 1752CONFIG_PROC_KCORE=y
1753CONFIG_PROC_SYSCTL=y
1685CONFIG_SYSFS=y 1754CONFIG_SYSFS=y
1686CONFIG_TMPFS=y 1755CONFIG_TMPFS=y
1756# CONFIG_TMPFS_POSIX_ACL is not set
1687# CONFIG_HUGETLB_PAGE is not set 1757# CONFIG_HUGETLB_PAGE is not set
1688CONFIG_RAMFS=y 1758CONFIG_RAMFS=y
1689# CONFIG_CONFIGFS_FS is not set 1759# CONFIG_CONFIGFS_FS is not set
@@ -1802,8 +1872,14 @@ CONFIG_NLS_ISO8859_1=m
1802CONFIG_NLS_UTF8=m 1872CONFIG_NLS_UTF8=m
1803 1873
1804# 1874#
1875# Distributed Lock Manager
1876#
1877# CONFIG_DLM is not set
1878
1879#
1805# Library routines 1880# Library routines
1806# 1881#
1882CONFIG_BITREVERSE=y
1807CONFIG_CRC_CCITT=y 1883CONFIG_CRC_CCITT=y
1808CONFIG_CRC16=y 1884CONFIG_CRC16=y
1809CONFIG_CRC32=y 1885CONFIG_CRC32=y
@@ -1815,6 +1891,7 @@ CONFIG_TEXTSEARCH_KMP=m
1815CONFIG_TEXTSEARCH_BM=m 1891CONFIG_TEXTSEARCH_BM=m
1816CONFIG_TEXTSEARCH_FSM=m 1892CONFIG_TEXTSEARCH_FSM=m
1817CONFIG_PLIST=y 1893CONFIG_PLIST=y
1894CONFIG_IOMAP_COPY=y
1818 1895
1819# 1896#
1820# Instrumentation Support 1897# Instrumentation Support
@@ -1826,8 +1903,11 @@ CONFIG_OPROFILE=y
1826# Kernel hacking 1903# Kernel hacking
1827# 1904#
1828# CONFIG_PRINTK_TIME is not set 1905# CONFIG_PRINTK_TIME is not set
1906CONFIG_ENABLE_MUST_CHECK=y
1829CONFIG_MAGIC_SYSRQ=y 1907CONFIG_MAGIC_SYSRQ=y
1830# CONFIG_UNUSED_SYMBOLS is not set 1908# CONFIG_UNUSED_SYMBOLS is not set
1909# CONFIG_DEBUG_FS is not set
1910# CONFIG_HEADERS_CHECK is not set
1831CONFIG_DEBUG_KERNEL=y 1911CONFIG_DEBUG_KERNEL=y
1832CONFIG_LOG_BUF_SHIFT=14 1912CONFIG_LOG_BUF_SHIFT=14
1833CONFIG_DETECT_SOFTLOCKUP=y 1913CONFIG_DETECT_SOFTLOCKUP=y
@@ -1841,14 +1921,16 @@ CONFIG_DETECT_SOFTLOCKUP=y
1841# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1921# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1842# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1922# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1843# CONFIG_DEBUG_KOBJECT is not set 1923# CONFIG_DEBUG_KOBJECT is not set
1924CONFIG_DEBUG_BUGVERBOSE=y
1844# CONFIG_DEBUG_INFO is not set 1925# CONFIG_DEBUG_INFO is not set
1845# CONFIG_DEBUG_FS is not set
1846# CONFIG_DEBUG_VM is not set 1926# CONFIG_DEBUG_VM is not set
1927# CONFIG_DEBUG_LIST is not set
1847# CONFIG_FORCED_INLINING is not set 1928# CONFIG_FORCED_INLINING is not set
1848# CONFIG_RCU_TORTURE_TEST is not set 1929# CONFIG_RCU_TORTURE_TEST is not set
1849CONFIG_DEBUGGER=y 1930CONFIG_DEBUGGER=y
1850CONFIG_XMON=y 1931CONFIG_XMON=y
1851CONFIG_XMON_DEFAULT=y 1932CONFIG_XMON_DEFAULT=y
1933CONFIG_XMON_DISASSEMBLY=y
1852# CONFIG_BDI_SWITCH is not set 1934# CONFIG_BDI_SWITCH is not set
1853CONFIG_BOOTX_TEXT=y 1935CONFIG_BOOTX_TEXT=y
1854# CONFIG_PPC_EARLY_DEBUG is not set 1936# CONFIG_PPC_EARLY_DEBUG is not set
@@ -1863,7 +1945,12 @@ CONFIG_BOOTX_TEXT=y
1863# Cryptographic options 1945# Cryptographic options
1864# 1946#
1865CONFIG_CRYPTO=y 1947CONFIG_CRYPTO=y
1948CONFIG_CRYPTO_ALGAPI=y
1949CONFIG_CRYPTO_BLKCIPHER=y
1950CONFIG_CRYPTO_HASH=y
1951CONFIG_CRYPTO_MANAGER=y
1866CONFIG_CRYPTO_HMAC=y 1952CONFIG_CRYPTO_HMAC=y
1953# CONFIG_CRYPTO_XCBC is not set
1867CONFIG_CRYPTO_NULL=m 1954CONFIG_CRYPTO_NULL=m
1868CONFIG_CRYPTO_MD4=m 1955CONFIG_CRYPTO_MD4=m
1869CONFIG_CRYPTO_MD5=y 1956CONFIG_CRYPTO_MD5=y
@@ -1872,9 +1959,14 @@ CONFIG_CRYPTO_SHA256=m
1872CONFIG_CRYPTO_SHA512=m 1959CONFIG_CRYPTO_SHA512=m
1873CONFIG_CRYPTO_WP512=m 1960CONFIG_CRYPTO_WP512=m
1874CONFIG_CRYPTO_TGR192=m 1961CONFIG_CRYPTO_TGR192=m
1962# CONFIG_CRYPTO_GF128MUL is not set
1963CONFIG_CRYPTO_ECB=m
1964CONFIG_CRYPTO_CBC=y
1965# CONFIG_CRYPTO_LRW is not set
1875CONFIG_CRYPTO_DES=y 1966CONFIG_CRYPTO_DES=y
1876CONFIG_CRYPTO_BLOWFISH=m 1967CONFIG_CRYPTO_BLOWFISH=m
1877CONFIG_CRYPTO_TWOFISH=m 1968CONFIG_CRYPTO_TWOFISH=m
1969CONFIG_CRYPTO_TWOFISH_COMMON=m
1878CONFIG_CRYPTO_SERPENT=m 1970CONFIG_CRYPTO_SERPENT=m
1879CONFIG_CRYPTO_AES=m 1971CONFIG_CRYPTO_AES=m
1880CONFIG_CRYPTO_CAST5=m 1972CONFIG_CRYPTO_CAST5=m
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig
index 340376a47001..debac66e8258 100644
--- a/arch/powerpc/configs/ppc64_defconfig
+++ b/arch/powerpc/configs/ppc64_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.20-rc3 3# Linux kernel version: 2.6.20-rc5
4# Tue Jan 2 15:32:44 2007 4# Mon Jan 22 22:28:58 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -246,7 +246,6 @@ CONFIG_PPC_I8259=y
246CONFIG_PCI=y 246CONFIG_PCI=y
247CONFIG_PCI_DOMAINS=y 247CONFIG_PCI_DOMAINS=y
248# CONFIG_PCIEPORTBUS is not set 248# CONFIG_PCIEPORTBUS is not set
249# CONFIG_PCI_MULTITHREAD_PROBE is not set
250# CONFIG_PCI_DEBUG is not set 249# CONFIG_PCI_DEBUG is not set
251 250
252# 251#
diff --git a/arch/powerpc/configs/ps3_defconfig b/arch/powerpc/configs/ps3_defconfig
index 70ed61337f5c..32560876c3dc 100644
--- a/arch/powerpc/configs/ps3_defconfig
+++ b/arch/powerpc/configs/ps3_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.19-rc6 3# Linux kernel version: 2.6.20-rc5
4# Tue Nov 21 19:38:53 2006 4# Mon Jan 22 22:29:11 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -10,6 +10,8 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
14CONFIG_ARCH_HAS_ILOG2_U64=y
13CONFIG_GENERIC_HWEIGHT=y 15CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 16CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 17CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -23,6 +25,7 @@ CONFIG_PPC_OF=y
23# CONFIG_PPC_UDBG_16550 is not set 25# CONFIG_PPC_UDBG_16550 is not set
24# CONFIG_GENERIC_TBSYNC is not set 26# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y 27CONFIG_AUDIT_ARCH=y
28CONFIG_GENERIC_BUG=y
26# CONFIG_DEFAULT_UIMAGE is not set 29# CONFIG_DEFAULT_UIMAGE is not set
27 30
28# 31#
@@ -64,6 +67,7 @@ CONFIG_SYSVIPC=y
64# CONFIG_AUDIT is not set 67# CONFIG_AUDIT is not set
65# CONFIG_IKCONFIG is not set 68# CONFIG_IKCONFIG is not set
66# CONFIG_CPUSETS is not set 69# CONFIG_CPUSETS is not set
70CONFIG_SYSFS_DEPRECATED=y
67# CONFIG_RELAY is not set 71# CONFIG_RELAY is not set
68CONFIG_INITRAMFS_SOURCE="" 72CONFIG_INITRAMFS_SOURCE=""
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 73# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -126,6 +130,7 @@ CONFIG_PPC_MULTIPLATFORM=y
126# CONFIG_APUS is not set 130# CONFIG_APUS is not set
127# CONFIG_PPC_PSERIES is not set 131# CONFIG_PPC_PSERIES is not set
128# CONFIG_PPC_ISERIES is not set 132# CONFIG_PPC_ISERIES is not set
133# CONFIG_PPC_MPC52xx is not set
129# CONFIG_PPC_PMAC is not set 134# CONFIG_PPC_PMAC is not set
130# CONFIG_PPC_MAPLE is not set 135# CONFIG_PPC_MAPLE is not set
131# CONFIG_PPC_PASEMI is not set 136# CONFIG_PPC_PASEMI is not set
@@ -164,6 +169,7 @@ CONFIG_PS3_VUART=y
164# 169#
165# CONFIG_HZ_100 is not set 170# CONFIG_HZ_100 is not set
166CONFIG_HZ_250=y 171CONFIG_HZ_250=y
172# CONFIG_HZ_300 is not set
167# CONFIG_HZ_1000 is not set 173# CONFIG_HZ_1000 is not set
168CONFIG_HZ=250 174CONFIG_HZ=250
169CONFIG_PREEMPT_NONE=y 175CONFIG_PREEMPT_NONE=y
@@ -261,6 +267,7 @@ CONFIG_IP_PNP_DHCP=y
261# CONFIG_TCP_CONG_ADVANCED is not set 267# CONFIG_TCP_CONG_ADVANCED is not set
262CONFIG_TCP_CONG_CUBIC=y 268CONFIG_TCP_CONG_CUBIC=y
263CONFIG_DEFAULT_TCP_CONG="cubic" 269CONFIG_DEFAULT_TCP_CONG="cubic"
270# CONFIG_TCP_MD5SIG is not set
264# CONFIG_IPV6 is not set 271# CONFIG_IPV6 is not set
265# CONFIG_INET6_XFRM_TUNNEL is not set 272# CONFIG_INET6_XFRM_TUNNEL is not set
266# CONFIG_INET6_TUNNEL is not set 273# CONFIG_INET6_TUNNEL is not set
@@ -366,6 +373,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
366# 373#
367# CONFIG_RAID_ATTRS is not set 374# CONFIG_RAID_ATTRS is not set
368CONFIG_SCSI=y 375CONFIG_SCSI=y
376# CONFIG_SCSI_TGT is not set
369# CONFIG_SCSI_NETLINK is not set 377# CONFIG_SCSI_NETLINK is not set
370CONFIG_SCSI_PROC_FS=y 378CONFIG_SCSI_PROC_FS=y
371 379
@@ -385,6 +393,7 @@ CONFIG_SCSI_PROC_FS=y
385# CONFIG_SCSI_MULTI_LUN is not set 393# CONFIG_SCSI_MULTI_LUN is not set
386# CONFIG_SCSI_CONSTANTS is not set 394# CONFIG_SCSI_CONSTANTS is not set
387# CONFIG_SCSI_LOGGING is not set 395# CONFIG_SCSI_LOGGING is not set
396# CONFIG_SCSI_SCAN_ASYNC is not set
388 397
389# 398#
390# SCSI Transports 399# SCSI Transports
@@ -427,6 +436,7 @@ CONFIG_SCSI_PROC_FS=y
427# 436#
428# Macintosh device drivers 437# Macintosh device drivers
429# 438#
439# CONFIG_MAC_EMUMOUSEBTN is not set
430# CONFIG_WINDFARM is not set 440# CONFIG_WINDFARM is not set
431 441
432# 442#
@@ -549,10 +559,6 @@ CONFIG_GEN_RTC=y
549# CONFIG_GEN_RTC_X is not set 559# CONFIG_GEN_RTC_X is not set
550# CONFIG_DTLK is not set 560# CONFIG_DTLK is not set
551# CONFIG_R3964 is not set 561# CONFIG_R3964 is not set
552
553#
554# Ftape, the floppy tape device driver
555#
556# CONFIG_RAW_DRIVER is not set 562# CONFIG_RAW_DRIVER is not set
557# CONFIG_HANGCHECK_TIMER is not set 563# CONFIG_HANGCHECK_TIMER is not set
558 564
@@ -598,6 +604,7 @@ CONFIG_GEN_RTC=y
598# 604#
599# CONFIG_FIRMWARE_EDID is not set 605# CONFIG_FIRMWARE_EDID is not set
600# CONFIG_FB is not set 606# CONFIG_FB is not set
607# CONFIG_FB_IBM_GXT4500 is not set
601 608
602# 609#
603# Console display driver support 610# Console display driver support
@@ -612,6 +619,11 @@ CONFIG_DUMMY_CONSOLE=y
612# CONFIG_SOUND is not set 619# CONFIG_SOUND is not set
613 620
614# 621#
622# HID Devices
623#
624CONFIG_HID=y
625
626#
615# USB support 627# USB support
616# 628#
617# CONFIG_USB_ARCH_HAS_HCD is not set 629# CONFIG_USB_ARCH_HAS_HCD is not set
@@ -672,6 +684,10 @@ CONFIG_DUMMY_CONSOLE=y
672# 684#
673 685
674# 686#
687# Virtualization
688#
689
690#
675# File systems 691# File systems
676# 692#
677# CONFIG_EXT2_FS is not set 693# CONFIG_EXT2_FS is not set
@@ -772,6 +788,11 @@ CONFIG_MSDOS_PARTITION=y
772# CONFIG_NLS is not set 788# CONFIG_NLS is not set
773 789
774# 790#
791# Distributed Lock Manager
792#
793# CONFIG_DLM is not set
794
795#
775# Library routines 796# Library routines
776# 797#
777# CONFIG_CRC_CCITT is not set 798# CONFIG_CRC_CCITT is not set
@@ -779,6 +800,7 @@ CONFIG_MSDOS_PARTITION=y
779# CONFIG_CRC32 is not set 800# CONFIG_CRC32 is not set
780# CONFIG_LIBCRC32C is not set 801# CONFIG_LIBCRC32C is not set
781CONFIG_PLIST=y 802CONFIG_PLIST=y
803CONFIG_IOMAP_COPY=y
782 804
783# 805#
784# Instrumentation Support 806# Instrumentation Support
@@ -793,6 +815,8 @@ CONFIG_PLIST=y
793CONFIG_ENABLE_MUST_CHECK=y 815CONFIG_ENABLE_MUST_CHECK=y
794# CONFIG_MAGIC_SYSRQ is not set 816# CONFIG_MAGIC_SYSRQ is not set
795# CONFIG_UNUSED_SYMBOLS is not set 817# CONFIG_UNUSED_SYMBOLS is not set
818# CONFIG_DEBUG_FS is not set
819# CONFIG_HEADERS_CHECK is not set
796CONFIG_DEBUG_KERNEL=y 820CONFIG_DEBUG_KERNEL=y
797CONFIG_LOG_BUF_SHIFT=17 821CONFIG_LOG_BUF_SHIFT=17
798CONFIG_DETECT_SOFTLOCKUP=y 822CONFIG_DETECT_SOFTLOCKUP=y
@@ -806,12 +830,11 @@ CONFIG_DEBUG_SPINLOCK=y
806CONFIG_DEBUG_SPINLOCK_SLEEP=y 830CONFIG_DEBUG_SPINLOCK_SLEEP=y
807# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 831# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
808# CONFIG_DEBUG_KOBJECT is not set 832# CONFIG_DEBUG_KOBJECT is not set
833# CONFIG_DEBUG_BUGVERBOSE is not set
809CONFIG_DEBUG_INFO=y 834CONFIG_DEBUG_INFO=y
810# CONFIG_DEBUG_FS is not set
811# CONFIG_DEBUG_VM is not set 835# CONFIG_DEBUG_VM is not set
812CONFIG_DEBUG_LIST=y 836CONFIG_DEBUG_LIST=y
813CONFIG_FORCED_INLINING=y 837CONFIG_FORCED_INLINING=y
814# CONFIG_HEADERS_CHECK is not set
815# CONFIG_RCU_TORTURE_TEST is not set 838# CONFIG_RCU_TORTURE_TEST is not set
816# CONFIG_DEBUG_STACKOVERFLOW is not set 839# CONFIG_DEBUG_STACKOVERFLOW is not set
817# CONFIG_DEBUG_STACK_USAGE is not set 840# CONFIG_DEBUG_STACK_USAGE is not set
diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig
index d2833c1a1f3d..1c794fe718fd 100644
--- a/arch/powerpc/configs/pseries_defconfig
+++ b/arch/powerpc/configs/pseries_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:45:12 2006 4# Mon Jan 22 22:31:27 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -10,6 +10,8 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
14CONFIG_ARCH_HAS_ILOG2_U64=y
13CONFIG_GENERIC_HWEIGHT=y 15CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 16CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 17CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -22,6 +24,8 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
22CONFIG_PPC_OF=y 24CONFIG_PPC_OF=y
23CONFIG_PPC_UDBG_16550=y 25CONFIG_PPC_UDBG_16550=y
24# CONFIG_GENERIC_TBSYNC is not set 26# CONFIG_GENERIC_TBSYNC is not set
27CONFIG_AUDIT_ARCH=y
28CONFIG_GENERIC_BUG=y
25# CONFIG_DEFAULT_UIMAGE is not set 29# CONFIG_DEFAULT_UIMAGE is not set
26 30
27# 31#
@@ -31,6 +35,9 @@ CONFIG_PPC_UDBG_16550=y
31CONFIG_POWER3=y 35CONFIG_POWER3=y
32CONFIG_POWER4=y 36CONFIG_POWER4=y
33CONFIG_PPC_FPU=y 37CONFIG_PPC_FPU=y
38# CONFIG_PPC_DCR_NATIVE is not set
39# CONFIG_PPC_DCR_MMIO is not set
40# CONFIG_PPC_OF_PLATFORM_PCI is not set
34CONFIG_ALTIVEC=y 41CONFIG_ALTIVEC=y
35CONFIG_PPC_STD_MMU=y 42CONFIG_PPC_STD_MMU=y
36CONFIG_VIRT_CPU_ACCOUNTING=y 43CONFIG_VIRT_CPU_ACCOUNTING=y
@@ -52,19 +59,22 @@ CONFIG_LOCALVERSION=""
52CONFIG_LOCALVERSION_AUTO=y 59CONFIG_LOCALVERSION_AUTO=y
53CONFIG_SWAP=y 60CONFIG_SWAP=y
54CONFIG_SYSVIPC=y 61CONFIG_SYSVIPC=y
62# CONFIG_IPC_NS is not set
55CONFIG_POSIX_MQUEUE=y 63CONFIG_POSIX_MQUEUE=y
56# CONFIG_BSD_PROCESS_ACCT is not set 64# CONFIG_BSD_PROCESS_ACCT is not set
57# CONFIG_TASKSTATS is not set 65# CONFIG_UTS_NS is not set
58CONFIG_SYSCTL=y
59CONFIG_AUDIT=y 66CONFIG_AUDIT=y
60CONFIG_AUDITSYSCALL=y 67CONFIG_AUDITSYSCALL=y
61CONFIG_IKCONFIG=y 68CONFIG_IKCONFIG=y
62CONFIG_IKCONFIG_PROC=y 69CONFIG_IKCONFIG_PROC=y
63CONFIG_CPUSETS=y 70CONFIG_CPUSETS=y
71CONFIG_SYSFS_DEPRECATED=y
64# CONFIG_RELAY is not set 72# CONFIG_RELAY is not set
65CONFIG_INITRAMFS_SOURCE="" 73CONFIG_INITRAMFS_SOURCE=""
66CONFIG_CC_OPTIMIZE_FOR_SIZE=y 74CONFIG_CC_OPTIMIZE_FOR_SIZE=y
75CONFIG_SYSCTL=y
67# CONFIG_EMBEDDED is not set 76# CONFIG_EMBEDDED is not set
77CONFIG_SYSCTL_SYSCALL=y
68CONFIG_KALLSYMS=y 78CONFIG_KALLSYMS=y
69CONFIG_KALLSYMS_ALL=y 79CONFIG_KALLSYMS_ALL=y
70# CONFIG_KALLSYMS_EXTRA_PASS is not set 80# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -73,12 +83,12 @@ CONFIG_PRINTK=y
73CONFIG_BUG=y 83CONFIG_BUG=y
74CONFIG_ELF_CORE=y 84CONFIG_ELF_CORE=y
75CONFIG_BASE_FULL=y 85CONFIG_BASE_FULL=y
76CONFIG_RT_MUTEXES=y
77CONFIG_FUTEX=y 86CONFIG_FUTEX=y
78CONFIG_EPOLL=y 87CONFIG_EPOLL=y
79CONFIG_SHMEM=y 88CONFIG_SHMEM=y
80CONFIG_SLAB=y 89CONFIG_SLAB=y
81CONFIG_VM_EVENT_COUNTERS=y 90CONFIG_VM_EVENT_COUNTERS=y
91CONFIG_RT_MUTEXES=y
82# CONFIG_TINY_SHMEM is not set 92# CONFIG_TINY_SHMEM is not set
83CONFIG_BASE_SMALL=0 93CONFIG_BASE_SMALL=0
84# CONFIG_SLOB is not set 94# CONFIG_SLOB is not set
@@ -97,6 +107,7 @@ CONFIG_STOP_MACHINE=y
97# 107#
98# Block layer 108# Block layer
99# 109#
110CONFIG_BLOCK=y
100# CONFIG_BLK_DEV_IO_TRACE is not set 111# CONFIG_BLK_DEV_IO_TRACE is not set
101 112
102# 113#
@@ -116,15 +127,19 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
116# Platform support 127# Platform support
117# 128#
118CONFIG_PPC_MULTIPLATFORM=y 129CONFIG_PPC_MULTIPLATFORM=y
119# CONFIG_PPC_ISERIES is not set
120# CONFIG_EMBEDDED6xx is not set 130# CONFIG_EMBEDDED6xx is not set
121# CONFIG_APUS is not set 131# CONFIG_APUS is not set
122CONFIG_PPC_PSERIES=y 132CONFIG_PPC_PSERIES=y
133# CONFIG_PPC_ISERIES is not set
134# CONFIG_PPC_MPC52xx is not set
123# CONFIG_PPC_PMAC is not set 135# CONFIG_PPC_PMAC is not set
124# CONFIG_PPC_MAPLE is not set 136# CONFIG_PPC_MAPLE is not set
137# CONFIG_PPC_PASEMI is not set
125# CONFIG_PPC_CELL is not set 138# CONFIG_PPC_CELL is not set
126# CONFIG_PPC_CELL_NATIVE is not set 139# CONFIG_PPC_CELL_NATIVE is not set
127# CONFIG_PPC_IBM_CELL_BLADE is not set 140# CONFIG_PPC_IBM_CELL_BLADE is not set
141# CONFIG_PPC_PS3 is not set
142CONFIG_PPC_NATIVE=y
128# CONFIG_UDBG_RTAS_CONSOLE is not set 143# CONFIG_UDBG_RTAS_CONSOLE is not set
129CONFIG_XICS=y 144CONFIG_XICS=y
130# CONFIG_U3_DART is not set 145# CONFIG_U3_DART is not set
@@ -137,6 +152,8 @@ CONFIG_IBMVIO=y
137CONFIG_IBMEBUS=y 152CONFIG_IBMEBUS=y
138# CONFIG_PPC_MPC106 is not set 153# CONFIG_PPC_MPC106 is not set
139# CONFIG_PPC_970_NAP is not set 154# CONFIG_PPC_970_NAP is not set
155# CONFIG_PPC_INDIRECT_IO is not set
156# CONFIG_GENERIC_IOMAP is not set
140# CONFIG_CPU_FREQ is not set 157# CONFIG_CPU_FREQ is not set
141# CONFIG_WANT_EARLY_SERIAL is not set 158# CONFIG_WANT_EARLY_SERIAL is not set
142CONFIG_MPIC=y 159CONFIG_MPIC=y
@@ -146,6 +163,7 @@ CONFIG_MPIC=y
146# 163#
147# CONFIG_HZ_100 is not set 164# CONFIG_HZ_100 is not set
148CONFIG_HZ_250=y 165CONFIG_HZ_250=y
166# CONFIG_HZ_300 is not set
149# CONFIG_HZ_1000 is not set 167# CONFIG_HZ_1000 is not set
150CONFIG_HZ=250 168CONFIG_HZ=250
151CONFIG_PREEMPT_NONE=y 169CONFIG_PREEMPT_NONE=y
@@ -170,6 +188,7 @@ CONFIG_NODES_SHIFT=4
170CONFIG_ARCH_SELECT_MEMORY_MODEL=y 188CONFIG_ARCH_SELECT_MEMORY_MODEL=y
171CONFIG_ARCH_SPARSEMEM_ENABLE=y 189CONFIG_ARCH_SPARSEMEM_ENABLE=y
172CONFIG_ARCH_SPARSEMEM_DEFAULT=y 190CONFIG_ARCH_SPARSEMEM_DEFAULT=y
191CONFIG_ARCH_POPULATES_NODE_MAP=y
173CONFIG_SELECT_MEMORY_MODEL=y 192CONFIG_SELECT_MEMORY_MODEL=y
174# CONFIG_FLATMEM_MANUAL is not set 193# CONFIG_FLATMEM_MANUAL is not set
175# CONFIG_DISCONTIGMEM_MANUAL is not set 194# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -183,7 +202,6 @@ CONFIG_SPARSEMEM_EXTREME=y
183CONFIG_SPLIT_PTLOCK_CPUS=4 202CONFIG_SPLIT_PTLOCK_CPUS=4
184CONFIG_MIGRATION=y 203CONFIG_MIGRATION=y
185CONFIG_RESOURCES_64BIT=y 204CONFIG_RESOURCES_64BIT=y
186CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
187CONFIG_NODES_SPAN_OTHER_NODES=y 205CONFIG_NODES_SPAN_OTHER_NODES=y
188# CONFIG_PPC_64K_PAGES is not set 206# CONFIG_PPC_64K_PAGES is not set
189CONFIG_SCHED_SMT=y 207CONFIG_SCHED_SMT=y
@@ -235,6 +253,7 @@ CONFIG_PACKET=y
235CONFIG_UNIX=y 253CONFIG_UNIX=y
236CONFIG_XFRM=y 254CONFIG_XFRM=y
237CONFIG_XFRM_USER=m 255CONFIG_XFRM_USER=m
256# CONFIG_XFRM_SUB_POLICY is not set
238CONFIG_NET_KEY=m 257CONFIG_NET_KEY=m
239CONFIG_INET=y 258CONFIG_INET=y
240CONFIG_IP_MULTICAST=y 259CONFIG_IP_MULTICAST=y
@@ -253,10 +272,13 @@ CONFIG_INET_XFRM_TUNNEL=m
253CONFIG_INET_TUNNEL=y 272CONFIG_INET_TUNNEL=y
254CONFIG_INET_XFRM_MODE_TRANSPORT=y 273CONFIG_INET_XFRM_MODE_TRANSPORT=y
255CONFIG_INET_XFRM_MODE_TUNNEL=y 274CONFIG_INET_XFRM_MODE_TUNNEL=y
275CONFIG_INET_XFRM_MODE_BEET=y
256CONFIG_INET_DIAG=y 276CONFIG_INET_DIAG=y
257CONFIG_INET_TCP_DIAG=y 277CONFIG_INET_TCP_DIAG=y
258# CONFIG_TCP_CONG_ADVANCED is not set 278# CONFIG_TCP_CONG_ADVANCED is not set
259CONFIG_TCP_CONG_BIC=y 279CONFIG_TCP_CONG_CUBIC=y
280CONFIG_DEFAULT_TCP_CONG="cubic"
281# CONFIG_TCP_MD5SIG is not set
260 282
261# 283#
262# IP: Virtual Server Configuration 284# IP: Virtual Server Configuration
@@ -275,25 +297,30 @@ CONFIG_NETFILTER=y
275CONFIG_NETFILTER_NETLINK=y 297CONFIG_NETFILTER_NETLINK=y
276CONFIG_NETFILTER_NETLINK_QUEUE=m 298CONFIG_NETFILTER_NETLINK_QUEUE=m
277CONFIG_NETFILTER_NETLINK_LOG=m 299CONFIG_NETFILTER_NETLINK_LOG=m
300CONFIG_NF_CONNTRACK_ENABLED=m
301CONFIG_NF_CONNTRACK_SUPPORT=y
302# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
303CONFIG_NF_CONNTRACK=m
304# CONFIG_NF_CT_ACCT is not set
305CONFIG_NF_CONNTRACK_MARK=y
306CONFIG_NF_CONNTRACK_EVENTS=y
307# CONFIG_NF_CT_PROTO_SCTP is not set
308# CONFIG_NF_CONNTRACK_AMANDA is not set
309CONFIG_NF_CONNTRACK_FTP=m
310# CONFIG_NF_CONNTRACK_H323 is not set
311CONFIG_NF_CONNTRACK_IRC=m
312# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
313# CONFIG_NF_CONNTRACK_PPTP is not set
314# CONFIG_NF_CONNTRACK_SIP is not set
315CONFIG_NF_CONNTRACK_TFTP=m
316CONFIG_NF_CT_NETLINK=m
278# CONFIG_NETFILTER_XTABLES is not set 317# CONFIG_NETFILTER_XTABLES is not set
279 318
280# 319#
281# IP: Netfilter Configuration 320# IP: Netfilter Configuration
282# 321#
283CONFIG_IP_NF_CONNTRACK=m 322CONFIG_NF_CONNTRACK_IPV4=m
284CONFIG_IP_NF_CT_ACCT=y 323CONFIG_NF_CONNTRACK_PROC_COMPAT=y
285CONFIG_IP_NF_CONNTRACK_MARK=y
286CONFIG_IP_NF_CONNTRACK_EVENTS=y
287CONFIG_IP_NF_CONNTRACK_NETLINK=m
288CONFIG_IP_NF_CT_PROTO_SCTP=m
289CONFIG_IP_NF_FTP=m
290CONFIG_IP_NF_IRC=m
291# CONFIG_IP_NF_NETBIOS_NS is not set
292CONFIG_IP_NF_TFTP=m
293CONFIG_IP_NF_AMANDA=m
294# CONFIG_IP_NF_PPTP is not set
295# CONFIG_IP_NF_H323 is not set
296# CONFIG_IP_NF_SIP is not set
297CONFIG_IP_NF_QUEUE=m 324CONFIG_IP_NF_QUEUE=m
298 325
299# 326#
@@ -320,7 +347,6 @@ CONFIG_LLC=y
320# CONFIG_ATALK is not set 347# CONFIG_ATALK is not set
321# CONFIG_X25 is not set 348# CONFIG_X25 is not set
322# CONFIG_LAPB is not set 349# CONFIG_LAPB is not set
323# CONFIG_NET_DIVERT is not set
324# CONFIG_ECONET is not set 350# CONFIG_ECONET is not set
325# CONFIG_WAN_ROUTER is not set 351# CONFIG_WAN_ROUTER is not set
326 352
@@ -402,6 +428,12 @@ CONFIG_BLK_DEV_INITRD=y
402# CONFIG_ATA_OVER_ETH is not set 428# CONFIG_ATA_OVER_ETH is not set
403 429
404# 430#
431# Misc devices
432#
433# CONFIG_SGI_IOC4 is not set
434# CONFIG_TIFM_CORE is not set
435
436#
405# ATA/ATAPI/MFM/RLL support 437# ATA/ATAPI/MFM/RLL support
406# 438#
407CONFIG_IDE=y 439CONFIG_IDE=y
@@ -428,7 +460,6 @@ CONFIG_IDEPCI_SHARE_IRQ=y
428# CONFIG_BLK_DEV_OFFBOARD is not set 460# CONFIG_BLK_DEV_OFFBOARD is not set
429CONFIG_BLK_DEV_GENERIC=y 461CONFIG_BLK_DEV_GENERIC=y
430# CONFIG_BLK_DEV_OPTI621 is not set 462# CONFIG_BLK_DEV_OPTI621 is not set
431CONFIG_BLK_DEV_SL82C105=y
432CONFIG_BLK_DEV_IDEDMA_PCI=y 463CONFIG_BLK_DEV_IDEDMA_PCI=y
433# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 464# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
434CONFIG_IDEDMA_PCI_AUTO=y 465CONFIG_IDEDMA_PCI_AUTO=y
@@ -443,6 +474,7 @@ CONFIG_BLK_DEV_AMD74XX=y
443# CONFIG_BLK_DEV_CS5530 is not set 474# CONFIG_BLK_DEV_CS5530 is not set
444# CONFIG_BLK_DEV_HPT34X is not set 475# CONFIG_BLK_DEV_HPT34X is not set
445# CONFIG_BLK_DEV_HPT366 is not set 476# CONFIG_BLK_DEV_HPT366 is not set
477# CONFIG_BLK_DEV_JMICRON is not set
446# CONFIG_BLK_DEV_SC1200 is not set 478# CONFIG_BLK_DEV_SC1200 is not set
447# CONFIG_BLK_DEV_PIIX is not set 479# CONFIG_BLK_DEV_PIIX is not set
448# CONFIG_BLK_DEV_IT821X is not set 480# CONFIG_BLK_DEV_IT821X is not set
@@ -451,6 +483,7 @@ CONFIG_BLK_DEV_AMD74XX=y
451# CONFIG_BLK_DEV_PDC202XX_NEW is not set 483# CONFIG_BLK_DEV_PDC202XX_NEW is not set
452# CONFIG_BLK_DEV_SVWKS is not set 484# CONFIG_BLK_DEV_SVWKS is not set
453# CONFIG_BLK_DEV_SIIMAGE is not set 485# CONFIG_BLK_DEV_SIIMAGE is not set
486CONFIG_BLK_DEV_SL82C105=y
454# CONFIG_BLK_DEV_SLC90E66 is not set 487# CONFIG_BLK_DEV_SLC90E66 is not set
455# CONFIG_BLK_DEV_TRM290 is not set 488# CONFIG_BLK_DEV_TRM290 is not set
456# CONFIG_BLK_DEV_VIA82CXXX is not set 489# CONFIG_BLK_DEV_VIA82CXXX is not set
@@ -465,6 +498,8 @@ CONFIG_IDEDMA_AUTO=y
465# 498#
466# CONFIG_RAID_ATTRS is not set 499# CONFIG_RAID_ATTRS is not set
467CONFIG_SCSI=y 500CONFIG_SCSI=y
501# CONFIG_SCSI_TGT is not set
502CONFIG_SCSI_NETLINK=y
468CONFIG_SCSI_PROC_FS=y 503CONFIG_SCSI_PROC_FS=y
469 504
470# 505#
@@ -484,14 +519,16 @@ CONFIG_CHR_DEV_SG=y
484CONFIG_SCSI_MULTI_LUN=y 519CONFIG_SCSI_MULTI_LUN=y
485CONFIG_SCSI_CONSTANTS=y 520CONFIG_SCSI_CONSTANTS=y
486# CONFIG_SCSI_LOGGING is not set 521# CONFIG_SCSI_LOGGING is not set
522# CONFIG_SCSI_SCAN_ASYNC is not set
487 523
488# 524#
489# SCSI Transport Attributes 525# SCSI Transports
490# 526#
491CONFIG_SCSI_SPI_ATTRS=y 527CONFIG_SCSI_SPI_ATTRS=y
492CONFIG_SCSI_FC_ATTRS=y 528CONFIG_SCSI_FC_ATTRS=y
493CONFIG_SCSI_ISCSI_ATTRS=m 529CONFIG_SCSI_ISCSI_ATTRS=m
494CONFIG_SCSI_SAS_ATTRS=m 530CONFIG_SCSI_SAS_ATTRS=m
531# CONFIG_SCSI_SAS_LIBSAS is not set
495 532
496# 533#
497# SCSI low-level drivers 534# SCSI low-level drivers
@@ -504,10 +541,11 @@ CONFIG_SCSI_SAS_ATTRS=m
504# CONFIG_SCSI_AIC7XXX is not set 541# CONFIG_SCSI_AIC7XXX is not set
505# CONFIG_SCSI_AIC7XXX_OLD is not set 542# CONFIG_SCSI_AIC7XXX_OLD is not set
506# CONFIG_SCSI_AIC79XX is not set 543# CONFIG_SCSI_AIC79XX is not set
544# CONFIG_SCSI_AIC94XX is not set
545# CONFIG_SCSI_ARCMSR is not set
507# CONFIG_MEGARAID_NEWGEN is not set 546# CONFIG_MEGARAID_NEWGEN is not set
508# CONFIG_MEGARAID_LEGACY is not set 547# CONFIG_MEGARAID_LEGACY is not set
509# CONFIG_MEGARAID_SAS is not set 548# CONFIG_MEGARAID_SAS is not set
510CONFIG_ATA=y
511# CONFIG_SCSI_HPTIOP is not set 549# CONFIG_SCSI_HPTIOP is not set
512# CONFIG_SCSI_BUSLOGIC is not set 550# CONFIG_SCSI_BUSLOGIC is not set
513# CONFIG_SCSI_DMX3191D is not set 551# CONFIG_SCSI_DMX3191D is not set
@@ -520,6 +558,7 @@ CONFIG_SCSI_IBMVSCSI=y
520# CONFIG_SCSI_INIA100 is not set 558# CONFIG_SCSI_INIA100 is not set
521# CONFIG_SCSI_PPA is not set 559# CONFIG_SCSI_PPA is not set
522# CONFIG_SCSI_IMM is not set 560# CONFIG_SCSI_IMM is not set
561# CONFIG_SCSI_STEX is not set
523CONFIG_SCSI_SYM53C8XX_2=y 562CONFIG_SCSI_SYM53C8XX_2=y
524CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 563CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
525CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 564CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
@@ -530,10 +569,66 @@ CONFIG_SCSI_IPR_TRACE=y
530CONFIG_SCSI_IPR_DUMP=y 569CONFIG_SCSI_IPR_DUMP=y
531# CONFIG_SCSI_QLOGIC_1280 is not set 570# CONFIG_SCSI_QLOGIC_1280 is not set
532CONFIG_SCSI_QLA_FC=m 571CONFIG_SCSI_QLA_FC=m
572# CONFIG_SCSI_QLA_ISCSI is not set
533CONFIG_SCSI_LPFC=m 573CONFIG_SCSI_LPFC=m
534# CONFIG_SCSI_DC395x is not set 574# CONFIG_SCSI_DC395x is not set
535# CONFIG_SCSI_DC390T is not set 575# CONFIG_SCSI_DC390T is not set
536# CONFIG_SCSI_DEBUG is not set 576# CONFIG_SCSI_DEBUG is not set
577# CONFIG_SCSI_SRP is not set
578
579#
580# Serial ATA (prod) and Parallel ATA (experimental) drivers
581#
582CONFIG_ATA=y
583# CONFIG_SATA_AHCI is not set
584# CONFIG_SATA_SVW is not set
585# CONFIG_ATA_PIIX is not set
586# CONFIG_SATA_MV is not set
587# CONFIG_SATA_NV is not set
588# CONFIG_PDC_ADMA is not set
589# CONFIG_SATA_QSTOR is not set
590# CONFIG_SATA_PROMISE is not set
591# CONFIG_SATA_SX4 is not set
592# CONFIG_SATA_SIL is not set
593# CONFIG_SATA_SIL24 is not set
594# CONFIG_SATA_SIS is not set
595# CONFIG_SATA_ULI is not set
596# CONFIG_SATA_VIA is not set
597# CONFIG_SATA_VITESSE is not set
598# CONFIG_PATA_ALI is not set
599# CONFIG_PATA_AMD is not set
600# CONFIG_PATA_ARTOP is not set
601# CONFIG_PATA_ATIIXP is not set
602# CONFIG_PATA_CMD64X is not set
603# CONFIG_PATA_CS5520 is not set
604# CONFIG_PATA_CS5530 is not set
605# CONFIG_PATA_CYPRESS is not set
606# CONFIG_PATA_EFAR is not set
607# CONFIG_ATA_GENERIC is not set
608# CONFIG_PATA_HPT366 is not set
609# CONFIG_PATA_HPT37X is not set
610# CONFIG_PATA_HPT3X2N is not set
611# CONFIG_PATA_HPT3X3 is not set
612# CONFIG_PATA_IT821X is not set
613# CONFIG_PATA_JMICRON is not set
614# CONFIG_PATA_TRIFLEX is not set
615# CONFIG_PATA_MARVELL is not set
616# CONFIG_PATA_MPIIX is not set
617# CONFIG_PATA_OLDPIIX is not set
618# CONFIG_PATA_NETCELL is not set
619# CONFIG_PATA_NS87410 is not set
620# CONFIG_PATA_OPTI is not set
621# CONFIG_PATA_OPTIDMA is not set
622# CONFIG_PATA_PDC_OLD is not set
623# CONFIG_PATA_RADISYS is not set
624# CONFIG_PATA_RZ1000 is not set
625# CONFIG_PATA_SC1200 is not set
626# CONFIG_PATA_SERVERWORKS is not set
627# CONFIG_PATA_PDC2027X is not set
628# CONFIG_PATA_SIL680 is not set
629# CONFIG_PATA_SIS is not set
630# CONFIG_PATA_VIA is not set
631# CONFIG_PATA_WINBOND is not set
537 632
538# 633#
539# Multi-device support (RAID and LVM) 634# Multi-device support (RAID and LVM)
@@ -548,6 +643,7 @@ CONFIG_MD_RAID10=m
548CONFIG_MD_MULTIPATH=m 643CONFIG_MD_MULTIPATH=m
549CONFIG_MD_FAULTY=m 644CONFIG_MD_FAULTY=m
550CONFIG_BLK_DEV_DM=y 645CONFIG_BLK_DEV_DM=y
646# CONFIG_DM_DEBUG is not set
551CONFIG_DM_CRYPT=m 647CONFIG_DM_CRYPT=m
552CONFIG_DM_SNAPSHOT=m 648CONFIG_DM_SNAPSHOT=m
553CONFIG_DM_MIRROR=m 649CONFIG_DM_MIRROR=m
@@ -576,6 +672,7 @@ CONFIG_DM_MULTIPATH_EMC=m
576# 672#
577# Macintosh device drivers 673# Macintosh device drivers
578# 674#
675# CONFIG_MAC_EMUMOUSEBTN is not set
579# CONFIG_WINDFARM is not set 676# CONFIG_WINDFARM is not set
580 677
581# 678#
@@ -617,6 +714,7 @@ CONFIG_VORTEX=y
617CONFIG_IBMVETH=y 714CONFIG_IBMVETH=y
618CONFIG_NET_PCI=y 715CONFIG_NET_PCI=y
619CONFIG_PCNET32=y 716CONFIG_PCNET32=y
717# CONFIG_PCNET32_NAPI is not set
620# CONFIG_AMD8111_ETH is not set 718# CONFIG_AMD8111_ETH is not set
621# CONFIG_ADAPTEC_STARFIRE is not set 719# CONFIG_ADAPTEC_STARFIRE is not set
622# CONFIG_B44 is not set 720# CONFIG_B44 is not set
@@ -655,17 +753,19 @@ CONFIG_E1000=y
655# CONFIG_VIA_VELOCITY is not set 753# CONFIG_VIA_VELOCITY is not set
656CONFIG_TIGON3=y 754CONFIG_TIGON3=y
657# CONFIG_BNX2 is not set 755# CONFIG_BNX2 is not set
658# CONFIG_MV643XX_ETH is not set 756# CONFIG_QLA3XXX is not set
659 757
660# 758#
661# Ethernet (10000 Mbit) 759# Ethernet (10000 Mbit)
662# 760#
663# CONFIG_CHELSIO_T1 is not set 761# CONFIG_CHELSIO_T1 is not set
762CONFIG_EHEA=m
664CONFIG_IXGB=m 763CONFIG_IXGB=m
665# CONFIG_IXGB_NAPI is not set 764# CONFIG_IXGB_NAPI is not set
666CONFIG_S2IO=m 765CONFIG_S2IO=m
667# CONFIG_S2IO_NAPI is not set 766# CONFIG_S2IO_NAPI is not set
668# CONFIG_MYRI10GE is not set 767# CONFIG_MYRI10GE is not set
768# CONFIG_NETXEN_NIC is not set
669 769
670# 770#
671# Token Ring devices 771# Token Ring devices
@@ -697,6 +797,7 @@ CONFIG_PPP_BSDCOMP=m
697# CONFIG_PPP_MPPE is not set 797# CONFIG_PPP_MPPE is not set
698CONFIG_PPPOE=m 798CONFIG_PPPOE=m
699# CONFIG_SLIP is not set 799# CONFIG_SLIP is not set
800CONFIG_SLHC=m
700# CONFIG_NET_FC is not set 801# CONFIG_NET_FC is not set
701# CONFIG_SHAPER is not set 802# CONFIG_SHAPER is not set
702CONFIG_NETCONSOLE=y 803CONFIG_NETCONSOLE=y
@@ -719,6 +820,7 @@ CONFIG_NET_POLL_CONTROLLER=y
719# Input device support 820# Input device support
720# 821#
721CONFIG_INPUT=y 822CONFIG_INPUT=y
823# CONFIG_INPUT_FF_MEMLESS is not set
722 824
723# 825#
724# Userland interfaces 826# Userland interfaces
@@ -741,6 +843,7 @@ CONFIG_KEYBOARD_ATKBD=y
741# CONFIG_KEYBOARD_LKKBD is not set 843# CONFIG_KEYBOARD_LKKBD is not set
742# CONFIG_KEYBOARD_XTKBD is not set 844# CONFIG_KEYBOARD_XTKBD is not set
743# CONFIG_KEYBOARD_NEWTON is not set 845# CONFIG_KEYBOARD_NEWTON is not set
846# CONFIG_KEYBOARD_STOWAWAY is not set
744CONFIG_INPUT_MOUSE=y 847CONFIG_INPUT_MOUSE=y
745CONFIG_MOUSE_PS2=y 848CONFIG_MOUSE_PS2=y
746# CONFIG_MOUSE_SERIAL is not set 849# CONFIG_MOUSE_SERIAL is not set
@@ -815,10 +918,6 @@ CONFIG_GEN_RTC=y
815# CONFIG_DTLK is not set 918# CONFIG_DTLK is not set
816# CONFIG_R3964 is not set 919# CONFIG_R3964 is not set
817# CONFIG_APPLICOM is not set 920# CONFIG_APPLICOM is not set
818
819#
820# Ftape, the floppy tape device driver
821#
822# CONFIG_AGP is not set 921# CONFIG_AGP is not set
823# CONFIG_DRM is not set 922# CONFIG_DRM is not set
824CONFIG_RAW_DRIVER=y 923CONFIG_RAW_DRIVER=y
@@ -829,7 +928,6 @@ CONFIG_MAX_RAW_DEVS=1024
829# TPM devices 928# TPM devices
830# 929#
831# CONFIG_TCG_TPM is not set 930# CONFIG_TCG_TPM is not set
832# CONFIG_TELCLOCK is not set
833 931
834# 932#
835# I2C support 933# I2C support
@@ -894,6 +992,7 @@ CONFIG_I2C_ALGOBIT=y
894# 992#
895# Dallas's 1-wire bus 993# Dallas's 1-wire bus
896# 994#
995# CONFIG_W1 is not set
897 996
898# 997#
899# Hardware Monitoring support 998# Hardware Monitoring support
@@ -902,14 +1001,9 @@ CONFIG_I2C_ALGOBIT=y
902# CONFIG_HWMON_VID is not set 1001# CONFIG_HWMON_VID is not set
903 1002
904# 1003#
905# Misc devices
906#
907
908#
909# Multimedia devices 1004# Multimedia devices
910# 1005#
911# CONFIG_VIDEO_DEV is not set 1006# CONFIG_VIDEO_DEV is not set
912CONFIG_VIDEO_V4L2=y
913 1007
914# 1008#
915# Digital Video Broadcasting Devices 1009# Digital Video Broadcasting Devices
@@ -922,6 +1016,7 @@ CONFIG_VIDEO_V4L2=y
922# 1016#
923CONFIG_FIRMWARE_EDID=y 1017CONFIG_FIRMWARE_EDID=y
924CONFIG_FB=y 1018CONFIG_FB=y
1019CONFIG_FB_DDC=y
925CONFIG_FB_CFB_FILLRECT=y 1020CONFIG_FB_CFB_FILLRECT=y
926CONFIG_FB_CFB_COPYAREA=y 1021CONFIG_FB_CFB_COPYAREA=y
927CONFIG_FB_CFB_IMAGEBLIT=y 1022CONFIG_FB_CFB_IMAGEBLIT=y
@@ -957,6 +1052,7 @@ CONFIG_FB_RADEON_I2C=y
957# CONFIG_FB_3DFX is not set 1052# CONFIG_FB_3DFX is not set
958# CONFIG_FB_VOODOO1 is not set 1053# CONFIG_FB_VOODOO1 is not set
959# CONFIG_FB_TRIDENT is not set 1054# CONFIG_FB_TRIDENT is not set
1055CONFIG_FB_IBM_GXT4500=y
960# CONFIG_FB_VIRTUAL is not set 1056# CONFIG_FB_VIRTUAL is not set
961 1057
962# 1058#
@@ -989,6 +1085,11 @@ CONFIG_LCD_DEVICE=y
989# CONFIG_SOUND is not set 1085# CONFIG_SOUND is not set
990 1086
991# 1087#
1088# HID Devices
1089#
1090CONFIG_HID=y
1091
1092#
992# USB support 1093# USB support
993# 1094#
994CONFIG_USB_ARCH_HAS_HCD=y 1095CONFIG_USB_ARCH_HAS_HCD=y
@@ -1003,6 +1104,7 @@ CONFIG_USB=y
1003CONFIG_USB_DEVICEFS=y 1104CONFIG_USB_DEVICEFS=y
1004# CONFIG_USB_BANDWIDTH is not set 1105# CONFIG_USB_BANDWIDTH is not set
1005# CONFIG_USB_DYNAMIC_MINORS is not set 1106# CONFIG_USB_DYNAMIC_MINORS is not set
1107# CONFIG_USB_MULTITHREAD_PROBE is not set
1006# CONFIG_USB_OTG is not set 1108# CONFIG_USB_OTG is not set
1007 1109
1008# 1110#
@@ -1043,13 +1145,13 @@ CONFIG_USB_STORAGE=y
1043# CONFIG_USB_STORAGE_SDDR55 is not set 1145# CONFIG_USB_STORAGE_SDDR55 is not set
1044# CONFIG_USB_STORAGE_JUMPSHOT is not set 1146# CONFIG_USB_STORAGE_JUMPSHOT is not set
1045# CONFIG_USB_STORAGE_ALAUDA is not set 1147# CONFIG_USB_STORAGE_ALAUDA is not set
1148# CONFIG_USB_STORAGE_KARMA is not set
1046# CONFIG_USB_LIBUSUAL is not set 1149# CONFIG_USB_LIBUSUAL is not set
1047 1150
1048# 1151#
1049# USB Input Devices 1152# USB Input Devices
1050# 1153#
1051CONFIG_USB_HID=y 1154CONFIG_USB_HID=y
1052CONFIG_USB_HIDINPUT=y
1053# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1155# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1054# CONFIG_HID_FF is not set 1156# CONFIG_HID_FF is not set
1055CONFIG_USB_HIDDEV=y 1157CONFIG_USB_HIDDEV=y
@@ -1079,6 +1181,7 @@ CONFIG_USB_HIDDEV=y
1079# CONFIG_USB_KAWETH is not set 1181# CONFIG_USB_KAWETH is not set
1080# CONFIG_USB_PEGASUS is not set 1182# CONFIG_USB_PEGASUS is not set
1081# CONFIG_USB_RTL8150 is not set 1183# CONFIG_USB_RTL8150 is not set
1184# CONFIG_USB_USBNET_MII is not set
1082# CONFIG_USB_USBNET is not set 1185# CONFIG_USB_USBNET is not set
1083CONFIG_USB_MON=y 1186CONFIG_USB_MON=y
1084 1187
@@ -1097,6 +1200,7 @@ CONFIG_USB_MON=y
1097# 1200#
1098# CONFIG_USB_EMI62 is not set 1201# CONFIG_USB_EMI62 is not set
1099# CONFIG_USB_EMI26 is not set 1202# CONFIG_USB_EMI26 is not set
1203# CONFIG_USB_ADUTUX is not set
1100# CONFIG_USB_AUERSWALD is not set 1204# CONFIG_USB_AUERSWALD is not set
1101# CONFIG_USB_RIO500 is not set 1205# CONFIG_USB_RIO500 is not set
1102# CONFIG_USB_LEGOTOWER is not set 1206# CONFIG_USB_LEGOTOWER is not set
@@ -1104,12 +1208,13 @@ CONFIG_USB_MON=y
1104# CONFIG_USB_LED is not set 1208# CONFIG_USB_LED is not set
1105# CONFIG_USB_CYPRESS_CY7C63 is not set 1209# CONFIG_USB_CYPRESS_CY7C63 is not set
1106# CONFIG_USB_CYTHERM is not set 1210# CONFIG_USB_CYTHERM is not set
1107# CONFIG_USB_PHIDGETKIT is not set 1211# CONFIG_USB_PHIDGET is not set
1108# CONFIG_USB_PHIDGETSERVO is not set
1109# CONFIG_USB_IDMOUSE is not set 1212# CONFIG_USB_IDMOUSE is not set
1213# CONFIG_USB_FTDI_ELAN is not set
1110# CONFIG_USB_APPLEDISPLAY is not set 1214# CONFIG_USB_APPLEDISPLAY is not set
1111# CONFIG_USB_SISUSBVGA is not set 1215# CONFIG_USB_SISUSBVGA is not set
1112# CONFIG_USB_LD is not set 1216# CONFIG_USB_LD is not set
1217# CONFIG_USB_TRANCEVIBRATOR is not set
1113# CONFIG_USB_TEST is not set 1218# CONFIG_USB_TEST is not set
1114 1219
1115# 1220#
@@ -1148,6 +1253,9 @@ CONFIG_INFINIBAND_USER_ACCESS=m
1148CONFIG_INFINIBAND_ADDR_TRANS=y 1253CONFIG_INFINIBAND_ADDR_TRANS=y
1149CONFIG_INFINIBAND_MTHCA=m 1254CONFIG_INFINIBAND_MTHCA=m
1150CONFIG_INFINIBAND_MTHCA_DEBUG=y 1255CONFIG_INFINIBAND_MTHCA_DEBUG=y
1256CONFIG_INFINIBAND_EHCA=m
1257CONFIG_INFINIBAND_EHCA_SCALING=y
1258# CONFIG_INFINIBAND_AMSO1100 is not set
1151CONFIG_INFINIBAND_IPOIB=m 1259CONFIG_INFINIBAND_IPOIB=m
1152CONFIG_INFINIBAND_IPOIB_DEBUG=y 1260CONFIG_INFINIBAND_IPOIB_DEBUG=y
1153# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set 1261# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
@@ -1177,6 +1285,10 @@ CONFIG_INFINIBAND_SRP=m
1177# 1285#
1178 1286
1179# 1287#
1288# Virtualization
1289#
1290
1291#
1180# File systems 1292# File systems
1181# 1293#
1182CONFIG_EXT2_FS=y 1294CONFIG_EXT2_FS=y
@@ -1189,6 +1301,7 @@ CONFIG_EXT3_FS=y
1189CONFIG_EXT3_FS_XATTR=y 1301CONFIG_EXT3_FS_XATTR=y
1190CONFIG_EXT3_FS_POSIX_ACL=y 1302CONFIG_EXT3_FS_POSIX_ACL=y
1191CONFIG_EXT3_FS_SECURITY=y 1303CONFIG_EXT3_FS_SECURITY=y
1304# CONFIG_EXT4DEV_FS is not set
1192CONFIG_JBD=y 1305CONFIG_JBD=y
1193# CONFIG_JBD_DEBUG is not set 1306# CONFIG_JBD_DEBUG is not set
1194CONFIG_FS_MBCACHE=y 1307CONFIG_FS_MBCACHE=y
@@ -1209,6 +1322,7 @@ CONFIG_XFS_FS=m
1209CONFIG_XFS_SECURITY=y 1322CONFIG_XFS_SECURITY=y
1210CONFIG_XFS_POSIX_ACL=y 1323CONFIG_XFS_POSIX_ACL=y
1211# CONFIG_XFS_RT is not set 1324# CONFIG_XFS_RT is not set
1325# CONFIG_GFS2_FS is not set
1212CONFIG_OCFS2_FS=m 1326CONFIG_OCFS2_FS=m
1213CONFIG_OCFS2_DEBUG_MASKLOG=y 1327CONFIG_OCFS2_DEBUG_MASKLOG=y
1214# CONFIG_MINIX_FS is not set 1328# CONFIG_MINIX_FS is not set
@@ -1246,8 +1360,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1246# 1360#
1247CONFIG_PROC_FS=y 1361CONFIG_PROC_FS=y
1248CONFIG_PROC_KCORE=y 1362CONFIG_PROC_KCORE=y
1363CONFIG_PROC_SYSCTL=y
1249CONFIG_SYSFS=y 1364CONFIG_SYSFS=y
1250CONFIG_TMPFS=y 1365CONFIG_TMPFS=y
1366# CONFIG_TMPFS_POSIX_ACL is not set
1251CONFIG_HUGETLBFS=y 1367CONFIG_HUGETLBFS=y
1252CONFIG_HUGETLB_PAGE=y 1368CONFIG_HUGETLB_PAGE=y
1253CONFIG_RAMFS=y 1369CONFIG_RAMFS=y
@@ -1357,17 +1473,22 @@ CONFIG_NLS_ISO8859_1=y
1357# CONFIG_NLS_UTF8 is not set 1473# CONFIG_NLS_UTF8 is not set
1358 1474
1359# 1475#
1476# Distributed Lock Manager
1477#
1478# CONFIG_DLM is not set
1479
1480#
1360# Library routines 1481# Library routines
1361# 1482#
1483CONFIG_BITREVERSE=y
1362CONFIG_CRC_CCITT=m 1484CONFIG_CRC_CCITT=m
1363# CONFIG_CRC16 is not set 1485# CONFIG_CRC16 is not set
1364CONFIG_CRC32=y 1486CONFIG_CRC32=y
1365CONFIG_LIBCRC32C=m 1487CONFIG_LIBCRC32C=m
1366CONFIG_ZLIB_INFLATE=y 1488CONFIG_ZLIB_INFLATE=y
1367CONFIG_ZLIB_DEFLATE=m 1489CONFIG_ZLIB_DEFLATE=m
1368CONFIG_TEXTSEARCH=y
1369CONFIG_TEXTSEARCH_KMP=m
1370CONFIG_PLIST=y 1490CONFIG_PLIST=y
1491CONFIG_IOMAP_COPY=y
1371 1492
1372# 1493#
1373# Instrumentation Support 1494# Instrumentation Support
@@ -1380,8 +1501,11 @@ CONFIG_KPROBES=y
1380# Kernel hacking 1501# Kernel hacking
1381# 1502#
1382# CONFIG_PRINTK_TIME is not set 1503# CONFIG_PRINTK_TIME is not set
1504CONFIG_ENABLE_MUST_CHECK=y
1383CONFIG_MAGIC_SYSRQ=y 1505CONFIG_MAGIC_SYSRQ=y
1384# CONFIG_UNUSED_SYMBOLS is not set 1506# CONFIG_UNUSED_SYMBOLS is not set
1507CONFIG_DEBUG_FS=y
1508# CONFIG_HEADERS_CHECK is not set
1385CONFIG_DEBUG_KERNEL=y 1509CONFIG_DEBUG_KERNEL=y
1386CONFIG_LOG_BUF_SHIFT=17 1510CONFIG_LOG_BUF_SHIFT=17
1387CONFIG_DETECT_SOFTLOCKUP=y 1511CONFIG_DETECT_SOFTLOCKUP=y
@@ -1395,16 +1519,20 @@ CONFIG_DETECT_SOFTLOCKUP=y
1395# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1519# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1396# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1520# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1397# CONFIG_DEBUG_KOBJECT is not set 1521# CONFIG_DEBUG_KOBJECT is not set
1522CONFIG_DEBUG_BUGVERBOSE=y
1398# CONFIG_DEBUG_INFO is not set 1523# CONFIG_DEBUG_INFO is not set
1399CONFIG_DEBUG_FS=y
1400# CONFIG_DEBUG_VM is not set 1524# CONFIG_DEBUG_VM is not set
1525# CONFIG_DEBUG_LIST is not set
1401CONFIG_FORCED_INLINING=y 1526CONFIG_FORCED_INLINING=y
1402# CONFIG_RCU_TORTURE_TEST is not set 1527# CONFIG_RCU_TORTURE_TEST is not set
1528# CONFIG_LKDTM is not set
1403CONFIG_DEBUG_STACKOVERFLOW=y 1529CONFIG_DEBUG_STACKOVERFLOW=y
1404# CONFIG_DEBUG_STACK_USAGE is not set 1530# CONFIG_DEBUG_STACK_USAGE is not set
1531CONFIG_HCALL_STATS=y
1405CONFIG_DEBUGGER=y 1532CONFIG_DEBUGGER=y
1406CONFIG_XMON=y 1533CONFIG_XMON=y
1407CONFIG_XMON_DEFAULT=y 1534CONFIG_XMON_DEFAULT=y
1535CONFIG_XMON_DISASSEMBLY=y
1408CONFIG_IRQSTACKS=y 1536CONFIG_IRQSTACKS=y
1409# CONFIG_BOOTX_TEXT is not set 1537# CONFIG_BOOTX_TEXT is not set
1410# CONFIG_PPC_EARLY_DEBUG is not set 1538# CONFIG_PPC_EARLY_DEBUG is not set
@@ -1419,7 +1547,12 @@ CONFIG_IRQSTACKS=y
1419# Cryptographic options 1547# Cryptographic options
1420# 1548#
1421CONFIG_CRYPTO=y 1549CONFIG_CRYPTO=y
1550CONFIG_CRYPTO_ALGAPI=y
1551CONFIG_CRYPTO_BLKCIPHER=y
1552CONFIG_CRYPTO_HASH=y
1553CONFIG_CRYPTO_MANAGER=y
1422CONFIG_CRYPTO_HMAC=y 1554CONFIG_CRYPTO_HMAC=y
1555# CONFIG_CRYPTO_XCBC is not set
1423CONFIG_CRYPTO_NULL=m 1556CONFIG_CRYPTO_NULL=m
1424CONFIG_CRYPTO_MD4=m 1557CONFIG_CRYPTO_MD4=m
1425CONFIG_CRYPTO_MD5=y 1558CONFIG_CRYPTO_MD5=y
@@ -1428,9 +1561,14 @@ CONFIG_CRYPTO_SHA256=m
1428CONFIG_CRYPTO_SHA512=m 1561CONFIG_CRYPTO_SHA512=m
1429CONFIG_CRYPTO_WP512=m 1562CONFIG_CRYPTO_WP512=m
1430CONFIG_CRYPTO_TGR192=m 1563CONFIG_CRYPTO_TGR192=m
1564# CONFIG_CRYPTO_GF128MUL is not set
1565CONFIG_CRYPTO_ECB=m
1566CONFIG_CRYPTO_CBC=y
1567# CONFIG_CRYPTO_LRW is not set
1431CONFIG_CRYPTO_DES=y 1568CONFIG_CRYPTO_DES=y
1432CONFIG_CRYPTO_BLOWFISH=m 1569CONFIG_CRYPTO_BLOWFISH=m
1433CONFIG_CRYPTO_TWOFISH=m 1570CONFIG_CRYPTO_TWOFISH=m
1571CONFIG_CRYPTO_TWOFISH_COMMON=m
1434CONFIG_CRYPTO_SERPENT=m 1572CONFIG_CRYPTO_SERPENT=m
1435CONFIG_CRYPTO_AES=m 1573CONFIG_CRYPTO_AES=m
1436CONFIG_CRYPTO_CAST5=m 1574CONFIG_CRYPTO_CAST5=m
diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c
index 2847cd51a2d7..c54f3639c5ad 100644
--- a/arch/powerpc/kernel/pci_32.c
+++ b/arch/powerpc/kernel/pci_32.c
@@ -775,11 +775,6 @@ static struct device_node *scan_OF_for_pci_bus(struct pci_bus *bus)
775 np = scan_OF_for_pci_dev(parent, bus->self->devfn); 775 np = scan_OF_for_pci_dev(parent, bus->self->devfn);
776 of_node_put(parent); 776 of_node_put(parent);
777 777
778 /* sanity check */
779 if (strcmp(np->type, "pci") != 0)
780 printk(KERN_WARNING "pci: wrong type \"%s\" for bridge %s\n",
781 np->type, np->full_name);
782
783 return np; 778 return np;
784} 779}
785 780
diff --git a/arch/powerpc/platforms/83xx/mpc832x_mds.c b/arch/powerpc/platforms/83xx/mpc832x_mds.c
index f58c9780b66f..4d471190be8d 100644
--- a/arch/powerpc/platforms/83xx/mpc832x_mds.c
+++ b/arch/powerpc/platforms/83xx/mpc832x_mds.c
@@ -103,7 +103,7 @@ static void __init mpc832x_sys_setup_arch(void)
103#ifdef CONFIG_QUICC_ENGINE 103#ifdef CONFIG_QUICC_ENGINE
104 qe_reset(); 104 qe_reset();
105 105
106 if ((np = of_find_node_by_name(np, "par_io")) != NULL) { 106 if ((np = of_find_node_by_name(NULL, "par_io")) != NULL) {
107 par_io_init(np); 107 par_io_init(np);
108 of_node_put(np); 108 of_node_put(np);
109 109
diff --git a/arch/powerpc/platforms/83xx/mpc8360e_pb.c b/arch/powerpc/platforms/83xx/mpc8360e_pb.c
index 7bfd47ad7233..53b92a904e8e 100644
--- a/arch/powerpc/platforms/83xx/mpc8360e_pb.c
+++ b/arch/powerpc/platforms/83xx/mpc8360e_pb.c
@@ -108,7 +108,7 @@ static void __init mpc8360_sys_setup_arch(void)
108#ifdef CONFIG_QUICC_ENGINE 108#ifdef CONFIG_QUICC_ENGINE
109 qe_reset(); 109 qe_reset();
110 110
111 if ((np = of_find_node_by_name(np, "par_io")) != NULL) { 111 if ((np = of_find_node_by_name(NULL, "par_io")) != NULL) {
112 par_io_init(np); 112 par_io_init(np);
113 of_node_put(np); 113 of_node_put(np);
114 114
diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c
index 3c95392f4f41..e6653a868b91 100644
--- a/arch/powerpc/platforms/pseries/iommu.c
+++ b/arch/powerpc/platforms/pseries/iommu.c
@@ -459,7 +459,8 @@ static void pci_dma_dev_setup_pSeries(struct pci_dev *dev)
459 tbl = kmalloc_node(sizeof(struct iommu_table), GFP_KERNEL, 459 tbl = kmalloc_node(sizeof(struct iommu_table), GFP_KERNEL,
460 phb->node); 460 phb->node);
461 iommu_table_setparms(phb, dn, tbl); 461 iommu_table_setparms(phb, dn, tbl);
462 dev->dev.archdata.dma_data = iommu_init_table(tbl, phb->node); 462 PCI_DN(dn)->iommu_table = iommu_init_table(tbl, phb->node);
463 dev->dev.archdata.dma_data = PCI_DN(dn)->iommu_table;
463 return; 464 return;
464 } 465 }
465 466
diff --git a/arch/powerpc/sysdev/mmio_nvram.c b/arch/powerpc/sysdev/mmio_nvram.c
index ff23f5a4d4b9..e073e246293d 100644
--- a/arch/powerpc/sysdev/mmio_nvram.c
+++ b/arch/powerpc/sysdev/mmio_nvram.c
@@ -80,33 +80,39 @@ static ssize_t mmio_nvram_get_size(void)
80int __init mmio_nvram_init(void) 80int __init mmio_nvram_init(void)
81{ 81{
82 struct device_node *nvram_node; 82 struct device_node *nvram_node;
83 const unsigned long *buffer;
84 int proplen;
85 unsigned long nvram_addr; 83 unsigned long nvram_addr;
84 struct resource r;
86 int ret; 85 int ret;
87 86
88 ret = -ENODEV;
89 nvram_node = of_find_node_by_type(NULL, "nvram"); 87 nvram_node = of_find_node_by_type(NULL, "nvram");
90 if (!nvram_node) 88 if (!nvram_node) {
89 printk(KERN_WARNING "nvram: no node found in device-tree\n");
90 return -ENODEV;
91 }
92
93 ret = of_address_to_resource(nvram_node, 0, &r);
94 if (ret) {
95 printk(KERN_WARNING "nvram: failed to get address (err %d)\n",
96 ret);
91 goto out; 97 goto out;
92 98 }
93 ret = -EIO; 99 nvram_addr = r.start;
94 buffer = get_property(nvram_node, "reg", &proplen); 100 mmio_nvram_len = r.end - r.start + 1;
95 if (proplen != 2*sizeof(unsigned long)) 101 if ( (!mmio_nvram_len) || (!nvram_addr) ) {
96 goto out; 102 printk(KERN_WARNING "nvram: address or lenght is 0\n");
97 103 ret = -EIO;
98 ret = -ENODEV;
99 nvram_addr = buffer[0];
100 mmio_nvram_len = buffer[1];
101 if ( (!mmio_nvram_len) || (!nvram_addr) )
102 goto out; 104 goto out;
105 }
103 106
104 mmio_nvram_start = ioremap(nvram_addr, mmio_nvram_len); 107 mmio_nvram_start = ioremap(nvram_addr, mmio_nvram_len);
105 if (!mmio_nvram_start) 108 if (!mmio_nvram_start) {
109 printk(KERN_WARNING "nvram: failed to ioremap\n");
110 ret = -ENOMEM;
106 goto out; 111 goto out;
112 }
107 113
108 printk(KERN_INFO "mmio NVRAM, %luk mapped to %p\n", 114 printk(KERN_INFO "mmio NVRAM, %luk at 0x%lx mapped to %p\n",
109 mmio_nvram_len >> 10, mmio_nvram_start); 115 mmio_nvram_len >> 10, nvram_addr, mmio_nvram_start);
110 116
111 ppc_md.nvram_read = mmio_nvram_read; 117 ppc_md.nvram_read = mmio_nvram_read;
112 ppc_md.nvram_write = mmio_nvram_write; 118 ppc_md.nvram_write = mmio_nvram_write;
diff --git a/arch/ppc/platforms/ev64360.c b/arch/ppc/platforms/ev64360.c
index 90ed375c9b90..f87e06f6bab9 100644
--- a/arch/ppc/platforms/ev64360.c
+++ b/arch/ppc/platforms/ev64360.c
@@ -358,13 +358,12 @@ ev64360_setup_mtd(void)
358 358
359 ptbl_entries = 3; 359 ptbl_entries = 3;
360 360
361 if ((ptbl = kmalloc(ptbl_entries * sizeof(struct mtd_partition), 361 if ((ptbl = kzalloc(ptbl_entries * sizeof(struct mtd_partition),
362 GFP_KERNEL)) == NULL) { 362 GFP_KERNEL)) == NULL) {
363 363
364 printk(KERN_WARNING "Can't alloc MTD partition table\n"); 364 printk(KERN_WARNING "Can't alloc MTD partition table\n");
365 return -ENOMEM; 365 return -ENOMEM;
366 } 366 }
367 memset(ptbl, 0, ptbl_entries * sizeof(struct mtd_partition));
368 367
369 ptbl[0].name = "reserved"; 368 ptbl[0].name = "reserved";
370 ptbl[0].offset = 0; 369 ptbl[0].offset = 0;
diff --git a/arch/x86_64/kernel/nmi.c b/arch/x86_64/kernel/nmi.c
index 186aebbae32d..9cb42ecb7f89 100644
--- a/arch/x86_64/kernel/nmi.c
+++ b/arch/x86_64/kernel/nmi.c
@@ -302,8 +302,6 @@ int __init setup_nmi_watchdog(char *str)
302 if ((nmi >= NMI_INVALID) || (nmi < NMI_NONE)) 302 if ((nmi >= NMI_INVALID) || (nmi < NMI_NONE))
303 return 0; 303 return 0;
304 304
305 if ((nmi == NMI_LOCAL_APIC) && (nmi_known_cpu() == 0))
306 return 0; /* no lapic support */
307 nmi_watchdog = nmi; 305 nmi_watchdog = nmi;
308 return 1; 306 return 1;
309} 307}
diff --git a/block/elevator.c b/block/elevator.c
index 536be740ba4e..f6dafa8c7c4d 100644
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -590,6 +590,12 @@ void elv_insert(request_queue_t *q, struct request *rq, int where)
590 */ 590 */
591 rq->cmd_flags |= REQ_SOFTBARRIER; 591 rq->cmd_flags |= REQ_SOFTBARRIER;
592 592
593 /*
594 * Most requeues happen because of a busy condition,
595 * don't force unplug of the queue for that case.
596 */
597 unplug_it = 0;
598
593 if (q->ordseq == 0) { 599 if (q->ordseq == 0) {
594 list_add(&rq->queuelist, &q->queue_head); 600 list_add(&rq->queuelist, &q->queue_head);
595 break; 601 break;
@@ -604,11 +610,6 @@ void elv_insert(request_queue_t *q, struct request *rq, int where)
604 } 610 }
605 611
606 list_add_tail(&rq->queuelist, pos); 612 list_add_tail(&rq->queuelist, pos);
607 /*
608 * most requeues happen because of a busy condition, don't
609 * force unplug of the queue for that case.
610 */
611 unplug_it = 0;
612 break; 613 break;
613 614
614 default: 615 default:
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 36b37d755dbc..3d54680d0333 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -1677,8 +1677,6 @@ static void acpi_video_device_notify(acpi_handle handle, u32 event, void *data)
1677 struct acpi_video_device *video_device = data; 1677 struct acpi_video_device *video_device = data;
1678 struct acpi_device *device = NULL; 1678 struct acpi_device *device = NULL;
1679 1679
1680
1681 printk("video device notify\n");
1682 if (!video_device) 1680 if (!video_device)
1683 return; 1681 return;
1684 1682
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index 08ad44b3e48f..56cf59b60ec4 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -1979,6 +1979,10 @@ static int ata_eh_recover(struct ata_port *ap, ata_prereset_fn_t prereset,
1979 1979
1980 ehc->tries[dev->devno] = ATA_EH_DEV_TRIES; 1980 ehc->tries[dev->devno] = ATA_EH_DEV_TRIES;
1981 1981
1982 /* collect port action mask recorded in dev actions */
1983 ehc->i.action |= ehc->i.dev_action[i] & ~ATA_EH_PERDEV_MASK;
1984 ehc->i.dev_action[i] &= ATA_EH_PERDEV_MASK;
1985
1982 /* process hotplug request */ 1986 /* process hotplug request */
1983 if (dev->flags & ATA_DFLAG_DETACH) 1987 if (dev->flags & ATA_DFLAG_DETACH)
1984 ata_eh_detach_dev(dev); 1988 ata_eh_detach_dev(dev);
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index 1b8e0eb9e032..aae0b5201c1e 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -523,8 +523,7 @@ static const struct ata_port_info mv_port_info[] = {
523 }, 523 },
524 { /* chip_7042 */ 524 { /* chip_7042 */
525 .sht = &mv_sht, 525 .sht = &mv_sht,
526 .flags = (MV_COMMON_FLAGS | MV_6XXX_FLAGS | 526 .flags = (MV_COMMON_FLAGS | MV_6XXX_FLAGS),
527 MV_FLAG_DUAL_HC),
528 .pio_mask = 0x1f, /* pio0-4 */ 527 .pio_mask = 0x1f, /* pio0-4 */
529 .udma_mask = 0x7f, /* udma0-6 */ 528 .udma_mask = 0x7f, /* udma0-6 */
530 .port_ops = &mv_iie_ops, 529 .port_ops = &mv_iie_ops,
@@ -545,6 +544,8 @@ static const struct pci_device_id mv_pci_tbl[] = {
545 544
546 { PCI_VDEVICE(ADAPTEC2, 0x0241), chip_604x }, 545 { PCI_VDEVICE(ADAPTEC2, 0x0241), chip_604x },
547 546
547 { PCI_VDEVICE(TTI, 0x2310), chip_7042 },
548
548 { } /* terminate list */ 549 { } /* terminate list */
549}; 550};
550 551
diff --git a/drivers/ata/sata_via.c b/drivers/ata/sata_via.c
index 1c7f19aecc25..88f0565c8883 100644
--- a/drivers/ata/sata_via.c
+++ b/drivers/ata/sata_via.c
@@ -77,6 +77,7 @@ static void svia_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val);
77static void vt6420_error_handler(struct ata_port *ap); 77static void vt6420_error_handler(struct ata_port *ap);
78 78
79static const struct pci_device_id svia_pci_tbl[] = { 79static const struct pci_device_id svia_pci_tbl[] = {
80 { PCI_VDEVICE(VIA, 0x5337), vt6420 },
80 { PCI_VDEVICE(VIA, 0x0591), vt6420 }, 81 { PCI_VDEVICE(VIA, 0x0591), vt6420 },
81 { PCI_VDEVICE(VIA, 0x3149), vt6420 }, 82 { PCI_VDEVICE(VIA, 0x3149), vt6420 },
82 { PCI_VDEVICE(VIA, 0x3249), vt6421 }, 83 { PCI_VDEVICE(VIA, 0x3249), vt6421 },
diff --git a/drivers/atm/horizon.c b/drivers/atm/horizon.c
index 4dc10105d610..f96446c358ba 100644
--- a/drivers/atm/horizon.c
+++ b/drivers/atm/horizon.c
@@ -1845,7 +1845,7 @@ static u16 __devinit read_bia (const hrz_dev * dev, u16 addr)
1845 1845
1846/********** initialise a card **********/ 1846/********** initialise a card **********/
1847 1847
1848static int __init hrz_init (hrz_dev * dev) { 1848static int __devinit hrz_init (hrz_dev * dev) {
1849 int onefivefive; 1849 int onefivefive;
1850 1850
1851 u16 chan; 1851 u16 chan;
diff --git a/drivers/char/mem.c b/drivers/char/mem.c
index 4f1813e04754..f5c160caf9f4 100644
--- a/drivers/char/mem.c
+++ b/drivers/char/mem.c
@@ -293,8 +293,8 @@ static int mmap_kmem(struct file * file, struct vm_area_struct * vma)
293{ 293{
294 unsigned long pfn; 294 unsigned long pfn;
295 295
296 /* Turn a pfn offset into an absolute pfn */ 296 /* Turn a kernel-virtual address into a physical page frame */
297 pfn = PFN_DOWN(virt_to_phys((void *)PAGE_OFFSET)) + vma->vm_pgoff; 297 pfn = __pa((u64)vma->vm_pgoff << PAGE_SHIFT) >> PAGE_SHIFT;
298 298
299 /* 299 /*
300 * RED-PEN: on some architectures there is more mapped memory 300 * RED-PEN: on some architectures there is more mapped memory
diff --git a/drivers/char/tlclk.c b/drivers/char/tlclk.c
index 448d5083c381..4fac2bdf6215 100644
--- a/drivers/char/tlclk.c
+++ b/drivers/char/tlclk.c
@@ -186,6 +186,7 @@ static int got_event; /* if events processing have been done */
186static void switchover_timeout(unsigned long data); 186static void switchover_timeout(unsigned long data);
187static struct timer_list switchover_timer = 187static struct timer_list switchover_timer =
188 TIMER_INITIALIZER(switchover_timeout , 0, 0); 188 TIMER_INITIALIZER(switchover_timeout , 0, 0);
189static unsigned long tlclk_timer_data;
189 190
190static struct tlclk_alarms *alarm_events; 191static struct tlclk_alarms *alarm_events;
191 192
@@ -197,10 +198,19 @@ static irqreturn_t tlclk_interrupt(int irq, void *dev_id);
197 198
198static DECLARE_WAIT_QUEUE_HEAD(wq); 199static DECLARE_WAIT_QUEUE_HEAD(wq);
199 200
201static unsigned long useflags;
202static DEFINE_MUTEX(tlclk_mutex);
203
200static int tlclk_open(struct inode *inode, struct file *filp) 204static int tlclk_open(struct inode *inode, struct file *filp)
201{ 205{
202 int result; 206 int result;
203 207
208 if (test_and_set_bit(0, &useflags))
209 return -EBUSY;
210 /* this legacy device is always one per system and it doesn't
211 * know how to handle multiple concurrent clients.
212 */
213
204 /* Make sure there is no interrupt pending while 214 /* Make sure there is no interrupt pending while
205 * initialising interrupt handler */ 215 * initialising interrupt handler */
206 inb(TLCLK_REG6); 216 inb(TLCLK_REG6);
@@ -221,6 +231,7 @@ static int tlclk_open(struct inode *inode, struct file *filp)
221static int tlclk_release(struct inode *inode, struct file *filp) 231static int tlclk_release(struct inode *inode, struct file *filp)
222{ 232{
223 free_irq(telclk_interrupt, tlclk_interrupt); 233 free_irq(telclk_interrupt, tlclk_interrupt);
234 clear_bit(0, &useflags);
224 235
225 return 0; 236 return 0;
226} 237}
@@ -230,26 +241,25 @@ static ssize_t tlclk_read(struct file *filp, char __user *buf, size_t count,
230{ 241{
231 if (count < sizeof(struct tlclk_alarms)) 242 if (count < sizeof(struct tlclk_alarms))
232 return -EIO; 243 return -EIO;
244 if (mutex_lock_interruptible(&tlclk_mutex))
245 return -EINTR;
246
233 247
234 wait_event_interruptible(wq, got_event); 248 wait_event_interruptible(wq, got_event);
235 if (copy_to_user(buf, alarm_events, sizeof(struct tlclk_alarms))) 249 if (copy_to_user(buf, alarm_events, sizeof(struct tlclk_alarms))) {
250 mutex_unlock(&tlclk_mutex);
236 return -EFAULT; 251 return -EFAULT;
252 }
237 253
238 memset(alarm_events, 0, sizeof(struct tlclk_alarms)); 254 memset(alarm_events, 0, sizeof(struct tlclk_alarms));
239 got_event = 0; 255 got_event = 0;
240 256
257 mutex_unlock(&tlclk_mutex);
241 return sizeof(struct tlclk_alarms); 258 return sizeof(struct tlclk_alarms);
242} 259}
243 260
244static ssize_t tlclk_write(struct file *filp, const char __user *buf, size_t count,
245 loff_t *f_pos)
246{
247 return 0;
248}
249
250static const struct file_operations tlclk_fops = { 261static const struct file_operations tlclk_fops = {
251 .read = tlclk_read, 262 .read = tlclk_read,
252 .write = tlclk_write,
253 .open = tlclk_open, 263 .open = tlclk_open,
254 .release = tlclk_release, 264 .release = tlclk_release,
255 265
@@ -540,7 +550,7 @@ static ssize_t store_select_amcb1_transmit_clock(struct device *d,
540 SET_PORT_BITS(TLCLK_REG3, 0xf8, 0x7); 550 SET_PORT_BITS(TLCLK_REG3, 0xf8, 0x7);
541 switch (val) { 551 switch (val) {
542 case CLK_8_592MHz: 552 case CLK_8_592MHz:
543 SET_PORT_BITS(TLCLK_REG0, 0xfc, 1); 553 SET_PORT_BITS(TLCLK_REG0, 0xfc, 2);
544 break; 554 break;
545 case CLK_11_184MHz: 555 case CLK_11_184MHz:
546 SET_PORT_BITS(TLCLK_REG0, 0xfc, 0); 556 SET_PORT_BITS(TLCLK_REG0, 0xfc, 0);
@@ -549,7 +559,7 @@ static ssize_t store_select_amcb1_transmit_clock(struct device *d,
549 SET_PORT_BITS(TLCLK_REG0, 0xfc, 3); 559 SET_PORT_BITS(TLCLK_REG0, 0xfc, 3);
550 break; 560 break;
551 case CLK_44_736MHz: 561 case CLK_44_736MHz:
552 SET_PORT_BITS(TLCLK_REG0, 0xfc, 2); 562 SET_PORT_BITS(TLCLK_REG0, 0xfc, 1);
553 break; 563 break;
554 } 564 }
555 } else 565 } else
@@ -839,11 +849,13 @@ static void __exit tlclk_cleanup(void)
839 849
840static void switchover_timeout(unsigned long data) 850static void switchover_timeout(unsigned long data)
841{ 851{
842 if ((data & 1)) { 852 unsigned long flags = *(unsigned long *) data;
843 if ((inb(TLCLK_REG1) & 0x08) != (data & 0x08)) 853
854 if ((flags & 1)) {
855 if ((inb(TLCLK_REG1) & 0x08) != (flags & 0x08))
844 alarm_events->switchover_primary++; 856 alarm_events->switchover_primary++;
845 } else { 857 } else {
846 if ((inb(TLCLK_REG1) & 0x08) != (data & 0x08)) 858 if ((inb(TLCLK_REG1) & 0x08) != (flags & 0x08))
847 alarm_events->switchover_secondary++; 859 alarm_events->switchover_secondary++;
848 } 860 }
849 861
@@ -901,8 +913,9 @@ static irqreturn_t tlclk_interrupt(int irq, void *dev_id)
901 913
902 /* TIMEOUT in ~10ms */ 914 /* TIMEOUT in ~10ms */
903 switchover_timer.expires = jiffies + msecs_to_jiffies(10); 915 switchover_timer.expires = jiffies + msecs_to_jiffies(10);
904 switchover_timer.data = inb(TLCLK_REG1); 916 tlclk_timer_data = inb(TLCLK_REG1);
905 add_timer(&switchover_timer); 917 switchover_timer.data = (unsigned long) &tlclk_timer_data;
918 mod_timer(&switchover_timer, switchover_timer.expires);
906 } else { 919 } else {
907 got_event = 1; 920 got_event = 1;
908 wake_up(&wq); 921 wake_up(&wq);
diff --git a/drivers/char/vr41xx_giu.c b/drivers/char/vr41xx_giu.c
index a744dad9cf45..0cea8d4907df 100644
--- a/drivers/char/vr41xx_giu.c
+++ b/drivers/char/vr41xx_giu.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * Copyright (C) 2002 MontaVista Software Inc. 4 * Copyright (C) 2002 MontaVista Software Inc.
5 * Author: Yoichi Yuasa <yyuasa@mvista.com or source@mvista.com> 5 * Author: Yoichi Yuasa <yyuasa@mvista.com or source@mvista.com>
6 * Copyright (C) 2003-2005 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> 6 * Copyright (C) 2003-2007 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
7 * 7 *
8 * This program is free software; you can redistribute it and/or modify 8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by 9 * it under the terms of the GNU General Public License as published by
@@ -125,30 +125,17 @@ static inline uint16_t giu_clear(uint16_t offset, uint16_t clear)
125 return data; 125 return data;
126} 126}
127 127
128static unsigned int startup_giuint_low_irq(unsigned int irq) 128static void ack_giuint_low(unsigned int irq)
129{ 129{
130 unsigned int pin; 130 giu_write(GIUINTSTATL, 1 << GPIO_PIN_OF_IRQ(irq));
131
132 pin = GPIO_PIN_OF_IRQ(irq);
133 giu_write(GIUINTSTATL, 1 << pin);
134 giu_set(GIUINTENL, 1 << pin);
135
136 return 0;
137} 131}
138 132
139static void shutdown_giuint_low_irq(unsigned int irq) 133static void mask_giuint_low(unsigned int irq)
140{ 134{
141 giu_clear(GIUINTENL, 1 << GPIO_PIN_OF_IRQ(irq)); 135 giu_clear(GIUINTENL, 1 << GPIO_PIN_OF_IRQ(irq));
142} 136}
143 137
144static void enable_giuint_low_irq(unsigned int irq) 138static void mask_ack_giuint_low(unsigned int irq)
145{
146 giu_set(GIUINTENL, 1 << GPIO_PIN_OF_IRQ(irq));
147}
148
149#define disable_giuint_low_irq shutdown_giuint_low_irq
150
151static void ack_giuint_low_irq(unsigned int irq)
152{ 139{
153 unsigned int pin; 140 unsigned int pin;
154 141
@@ -157,46 +144,30 @@ static void ack_giuint_low_irq(unsigned int irq)
157 giu_write(GIUINTSTATL, 1 << pin); 144 giu_write(GIUINTSTATL, 1 << pin);
158} 145}
159 146
160static void end_giuint_low_irq(unsigned int irq) 147static void unmask_giuint_low(unsigned int irq)
161{ 148{
162 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) 149 giu_set(GIUINTENL, 1 << GPIO_PIN_OF_IRQ(irq));
163 giu_set(GIUINTENL, 1 << GPIO_PIN_OF_IRQ(irq));
164} 150}
165 151
166static struct hw_interrupt_type giuint_low_irq_type = { 152static struct irq_chip giuint_low_irq_chip = {
167 .typename = "GIUINTL", 153 .name = "GIUINTL",
168 .startup = startup_giuint_low_irq, 154 .ack = ack_giuint_low,
169 .shutdown = shutdown_giuint_low_irq, 155 .mask = mask_giuint_low,
170 .enable = enable_giuint_low_irq, 156 .mask_ack = mask_ack_giuint_low,
171 .disable = disable_giuint_low_irq, 157 .unmask = unmask_giuint_low,
172 .ack = ack_giuint_low_irq,
173 .end = end_giuint_low_irq,
174}; 158};
175 159
176static unsigned int startup_giuint_high_irq(unsigned int irq) 160static void ack_giuint_high(unsigned int irq)
177{ 161{
178 unsigned int pin; 162 giu_write(GIUINTSTATH, 1 << (GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET));
179
180 pin = GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET;
181 giu_write(GIUINTSTATH, 1 << pin);
182 giu_set(GIUINTENH, 1 << pin);
183
184 return 0;
185} 163}
186 164
187static void shutdown_giuint_high_irq(unsigned int irq) 165static void mask_giuint_high(unsigned int irq)
188{ 166{
189 giu_clear(GIUINTENH, 1 << (GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET)); 167 giu_clear(GIUINTENH, 1 << (GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET));
190} 168}
191 169
192static void enable_giuint_high_irq(unsigned int irq) 170static void mask_ack_giuint_high(unsigned int irq)
193{
194 giu_set(GIUINTENH, 1 << (GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET));
195}
196
197#define disable_giuint_high_irq shutdown_giuint_high_irq
198
199static void ack_giuint_high_irq(unsigned int irq)
200{ 171{
201 unsigned int pin; 172 unsigned int pin;
202 173
@@ -205,20 +176,17 @@ static void ack_giuint_high_irq(unsigned int irq)
205 giu_write(GIUINTSTATH, 1 << pin); 176 giu_write(GIUINTSTATH, 1 << pin);
206} 177}
207 178
208static void end_giuint_high_irq(unsigned int irq) 179static void unmask_giuint_high(unsigned int irq)
209{ 180{
210 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) 181 giu_set(GIUINTENH, 1 << (GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET));
211 giu_set(GIUINTENH, 1 << (GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET));
212} 182}
213 183
214static struct hw_interrupt_type giuint_high_irq_type = { 184static struct irq_chip giuint_high_irq_chip = {
215 .typename = "GIUINTH", 185 .name = "GIUINTH",
216 .startup = startup_giuint_high_irq, 186 .ack = ack_giuint_high,
217 .shutdown = shutdown_giuint_high_irq, 187 .mask = mask_giuint_high,
218 .enable = enable_giuint_high_irq, 188 .mask_ack = mask_ack_giuint_high,
219 .disable = disable_giuint_high_irq, 189 .unmask = unmask_giuint_high,
220 .ack = ack_giuint_high_irq,
221 .end = end_giuint_high_irq,
222}; 190};
223 191
224static int giu_get_irq(unsigned int irq) 192static int giu_get_irq(unsigned int irq)
@@ -282,9 +250,15 @@ void vr41xx_set_irq_trigger(unsigned int pin, irq_trigger_t trigger, irq_signal_
282 break; 250 break;
283 } 251 }
284 } 252 }
253 set_irq_chip_and_handler(GIU_IRQ(pin),
254 &giuint_low_irq_chip,
255 handle_edge_irq);
285 } else { 256 } else {
286 giu_clear(GIUINTTYPL, mask); 257 giu_clear(GIUINTTYPL, mask);
287 giu_clear(GIUINTHTSELL, mask); 258 giu_clear(GIUINTHTSELL, mask);
259 set_irq_chip_and_handler(GIU_IRQ(pin),
260 &giuint_low_irq_chip,
261 handle_level_irq);
288 } 262 }
289 giu_write(GIUINTSTATL, mask); 263 giu_write(GIUINTSTATL, mask);
290 } else if (pin < GIUINT_HIGH_MAX) { 264 } else if (pin < GIUINT_HIGH_MAX) {
@@ -311,9 +285,15 @@ void vr41xx_set_irq_trigger(unsigned int pin, irq_trigger_t trigger, irq_signal_
311 break; 285 break;
312 } 286 }
313 } 287 }
288 set_irq_chip_and_handler(GIU_IRQ(pin),
289 &giuint_high_irq_chip,
290 handle_edge_irq);
314 } else { 291 } else {
315 giu_clear(GIUINTTYPH, mask); 292 giu_clear(GIUINTTYPH, mask);
316 giu_clear(GIUINTHTSELH, mask); 293 giu_clear(GIUINTHTSELH, mask);
294 set_irq_chip_and_handler(GIU_IRQ(pin),
295 &giuint_high_irq_chip,
296 handle_level_irq);
317 } 297 }
318 giu_write(GIUINTSTATH, mask); 298 giu_write(GIUINTSTATH, mask);
319 } 299 }
@@ -617,10 +597,11 @@ static const struct file_operations gpio_fops = {
617static int __devinit giu_probe(struct platform_device *dev) 597static int __devinit giu_probe(struct platform_device *dev)
618{ 598{
619 unsigned long start, size, flags = 0; 599 unsigned long start, size, flags = 0;
620 unsigned int nr_pins = 0; 600 unsigned int nr_pins = 0, trigger, i, pin;
621 struct resource *res1, *res2 = NULL; 601 struct resource *res1, *res2 = NULL;
622 void *base; 602 void *base;
623 int retval, i; 603 struct irq_chip *chip;
604 int retval;
624 605
625 switch (current_cpu_data.cputype) { 606 switch (current_cpu_data.cputype) {
626 case CPU_VR4111: 607 case CPU_VR4111:
@@ -688,11 +669,20 @@ static int __devinit giu_probe(struct platform_device *dev)
688 giu_write(GIUINTENL, 0); 669 giu_write(GIUINTENL, 0);
689 giu_write(GIUINTENH, 0); 670 giu_write(GIUINTENH, 0);
690 671
672 trigger = giu_read(GIUINTTYPH) << 16;
673 trigger |= giu_read(GIUINTTYPL);
691 for (i = GIU_IRQ_BASE; i <= GIU_IRQ_LAST; i++) { 674 for (i = GIU_IRQ_BASE; i <= GIU_IRQ_LAST; i++) {
692 if (i < GIU_IRQ(GIUINT_HIGH_OFFSET)) 675 pin = GPIO_PIN_OF_IRQ(i);
693 irq_desc[i].chip = &giuint_low_irq_type; 676 if (pin < GIUINT_HIGH_OFFSET)
677 chip = &giuint_low_irq_chip;
694 else 678 else
695 irq_desc[i].chip = &giuint_high_irq_type; 679 chip = &giuint_high_irq_chip;
680
681 if (trigger & (1 << pin))
682 set_irq_chip_and_handler(i, chip, handle_edge_irq);
683 else
684 set_irq_chip_and_handler(i, chip, handle_level_irq);
685
696 } 686 }
697 687
698 return cascade_irq(GIUINT_IRQ, giu_get_irq); 688 return cascade_irq(GIUINT_IRQ, giu_get_irq);
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 1e1a7770a6b9..b8cf50fcd64d 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -880,6 +880,10 @@ static void hid_output_field(struct hid_field *field, __u8 *data)
880 unsigned size = field->report_size; 880 unsigned size = field->report_size;
881 unsigned n; 881 unsigned n;
882 882
883 /* make sure the unused bits in the last byte are zeros */
884 if (count > 0 && size > 0)
885 data[(count*size-1)/8] = 0;
886
883 for (n = 0; n < count; n++) { 887 for (n = 0; n < count; n++) {
884 if (field->logical_minimum < 0) /* signed values */ 888 if (field->logical_minimum < 0) /* signed values */
885 implement(data, offset + n * size, size, s32ton(field->value[n], size)); 889 implement(data, offset + n * size, size, s32ton(field->value[n], size));
@@ -947,7 +951,7 @@ int hid_input_report(struct hid_device *hid, int type, u8 *data, int size, int i
947 } 951 }
948 952
949#ifdef DEBUG_DATA 953#ifdef DEBUG_DATA
950 printk(KERN_DEBUG __FILE__ ": report (size %u) (%snumbered)\n", len, report_enum->numbered ? "" : "un"); 954 printk(KERN_DEBUG __FILE__ ": report (size %u) (%snumbered)\n", size, report_enum->numbered ? "" : "un");
951#endif 955#endif
952 956
953 n = 0; /* Normally report number is 0 */ 957 n = 0; /* Normally report number is 0 */
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index 28689e3eb552..9cf591a1bda3 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -30,7 +30,6 @@
30#include <linux/module.h> 30#include <linux/module.h>
31#include <linux/slab.h> 31#include <linux/slab.h>
32#include <linux/kernel.h> 32#include <linux/kernel.h>
33#include <linux/usb/input.h>
34 33
35#undef DEBUG 34#undef DEBUG
36 35
@@ -364,9 +363,22 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
364 break; 363 break;
365 364
366 case HID_UP_LED: 365 case HID_UP_LED:
367 if (((usage->hid - 1) & 0xffff) >= LED_MAX) 366
368 goto ignore; 367 switch (usage->hid & 0xffff) { /* HID-Value: */
369 map_led((usage->hid - 1) & 0xffff); 368 case 0x01: map_led (LED_NUML); break; /* "Num Lock" */
369 case 0x02: map_led (LED_CAPSL); break; /* "Caps Lock" */
370 case 0x03: map_led (LED_SCROLLL); break; /* "Scroll Lock" */
371 case 0x04: map_led (LED_COMPOSE); break; /* "Compose" */
372 case 0x05: map_led (LED_KANA); break; /* "Kana" */
373 case 0x27: map_led (LED_SLEEP); break; /* "Stand-By" */
374 case 0x4c: map_led (LED_SUSPEND); break; /* "System Suspend" */
375 case 0x09: map_led (LED_MUTE); break; /* "Mute" */
376 case 0x4b: map_led (LED_MISC); break; /* "Generic Indicator" */
377 case 0x19: map_led (LED_MAIL); break; /* "Message Waiting" */
378 case 0x4d: map_led (LED_CHARGING); break; /* "External Power Connected" */
379
380 default: goto ignore;
381 }
370 break; 382 break;
371 383
372 case HID_UP_DIGITIZER: 384 case HID_UP_DIGITIZER:
diff --git a/drivers/hwmon/hwmon-vid.c b/drivers/hwmon/hwmon-vid.c
index 31c42002708f..b80f6ed5acfc 100644
--- a/drivers/hwmon/hwmon-vid.c
+++ b/drivers/hwmon/hwmon-vid.c
@@ -93,7 +93,7 @@ int vid_from_reg(int val, u8 vrm)
93 case 110: /* Intel Conroe */ 93 case 110: /* Intel Conroe */
94 /* compute in uV, round to mV */ 94 /* compute in uV, round to mV */
95 val &= 0xff; 95 val &= 0xff;
96 if(((val & 0x7e) == 0xfe) || (!(val & 0x7e))) 96 if (val < 0x02 || val > 0xb2)
97 return 0; 97 return 0;
98 return((1600000 - (val - 2) * 6250 + 500) / 1000); 98 return((1600000 - (val - 2) * 6250 + 500) / 1000);
99 case 24: /* Opteron processor */ 99 case 24: /* Opteron processor */
diff --git a/drivers/hwmon/w83793.c b/drivers/hwmon/w83793.c
index c12ac5abc2bb..253ffaf1568a 100644
--- a/drivers/hwmon/w83793.c
+++ b/drivers/hwmon/w83793.c
@@ -117,6 +117,7 @@ static const u16 W83793_REG_IN[][3] = {
117/* Low Bits of Vcore A/B Vtt Read/High/Low */ 117/* Low Bits of Vcore A/B Vtt Read/High/Low */
118static const u16 W83793_REG_IN_LOW_BITS[] = { 0x1b, 0x68, 0x69 }; 118static const u16 W83793_REG_IN_LOW_BITS[] = { 0x1b, 0x68, 0x69 };
119static u8 scale_in[] = { 2, 2, 2, 16, 16, 16, 8, 24, 24, 16 }; 119static u8 scale_in[] = { 2, 2, 2, 16, 16, 16, 8, 24, 24, 16 };
120static u8 scale_in_add[] = { 0, 0, 0, 0, 0, 0, 0, 150, 150, 0 };
120 121
121#define W83793_REG_FAN(index) (0x23 + 2 * (index)) /* High byte */ 122#define W83793_REG_FAN(index) (0x23 + 2 * (index)) /* High byte */
122#define W83793_REG_FAN_MIN(index) (0x90 + 2 * (index)) /* High byte */ 123#define W83793_REG_FAN_MIN(index) (0x90 + 2 * (index)) /* High byte */
@@ -203,6 +204,8 @@ struct w83793_data {
203 u8 temp_fan_map[6]; /* Temp controls which pwm fan, bit field */ 204 u8 temp_fan_map[6]; /* Temp controls which pwm fan, bit field */
204 205
205 u8 has_pwm; 206 u8 has_pwm;
207 u8 has_temp;
208 u8 has_vid;
206 u8 pwm_enable; /* Register value, each Temp has 1 bit */ 209 u8 pwm_enable; /* Register value, each Temp has 1 bit */
207 u8 pwm_uptime; /* Register value */ 210 u8 pwm_uptime; /* Register value */
208 u8 pwm_downtime; /* Register value */ 211 u8 pwm_downtime; /* Register value */
@@ -500,7 +503,7 @@ store_temp(struct device *dev, struct device_attribute *attr,
500 each has 4 mode:(2 bits) 503 each has 4 mode:(2 bits)
501 0: Stop monitor 504 0: Stop monitor
502 1: Use internal temp sensor(default) 505 1: Use internal temp sensor(default)
503 2: Use sensor in AMD CPU and get result by AMDSI 506 2: Reserved
504 3: Use sensor in Intel CPU and get result by PECI 507 3: Use sensor in Intel CPU and get result by PECI
505 508
506 TR1-TR2 509 TR1-TR2
@@ -509,8 +512,8 @@ store_temp(struct device *dev, struct device_attribute *attr,
509 1: To enable temp sensors monitor 512 1: To enable temp sensors monitor
510*/ 513*/
511 514
512/* 0 disable, 5 AMDSI, 6 PECI */ 515/* 0 disable, 6 PECI */
513static u8 TO_TEMP_MODE[] = { 0, 0, 5, 6 }; 516static u8 TO_TEMP_MODE[] = { 0, 0, 0, 6 };
514 517
515static ssize_t 518static ssize_t
516show_temp_mode(struct device *dev, struct device_attribute *attr, char *buf) 519show_temp_mode(struct device *dev, struct device_attribute *attr, char *buf)
@@ -550,11 +553,10 @@ store_temp_mode(struct device *dev, struct device_attribute *attr,
550 u8 val = simple_strtoul(buf, NULL, 10); 553 u8 val = simple_strtoul(buf, NULL, 10);
551 554
552 /* transform the sysfs interface values into table above */ 555 /* transform the sysfs interface values into table above */
553 if ((val == 5 || val == 6) && (index < 4)) { 556 if ((val == 6) && (index < 4)) {
554 val -= 3; 557 val -= 3;
555 } else if ((val == 3 && index < 4) 558 } else if ((val == 3 && index < 4)
556 || (val == 4 && index >= 4) 559 || (val == 4 && index >= 4)) {
557 || val == 0) {
558 /* transform diode or thermistor into internal enable */ 560 /* transform diode or thermistor into internal enable */
559 val = !!val; 561 val = !!val;
560 } else { 562 } else {
@@ -839,7 +841,9 @@ show_in(struct device *dev, struct device_attribute *attr, char *buf)
839 val <<= 2; 841 val <<= 2;
840 val += (data->in_low_bits[nr] >> (index * 2)) & 0x3; 842 val += (data->in_low_bits[nr] >> (index * 2)) & 0x3;
841 } 843 }
842 return sprintf(buf, "%d\n", val * scale_in[index]); 844 /* voltage inputs 5VDD and 5VSB needs 150mV offset */
845 val = val * scale_in[index] + scale_in_add[index];
846 return sprintf(buf, "%d\n", val);
843} 847}
844 848
845static ssize_t 849static ssize_t
@@ -859,6 +863,10 @@ store_in(struct device *dev, struct device_attribute *attr,
859 scale_in[index] / 2) / scale_in[index]; 863 scale_in[index] / 2) / scale_in[index];
860 mutex_lock(&data->update_lock); 864 mutex_lock(&data->update_lock);
861 if (index > 2) { 865 if (index > 2) {
866 /* fix the limit values of 5VDD and 5VSB to ALARM mechanism */
867 if (1 == nr || 2 == nr) {
868 val -= scale_in_add[index] / scale_in[index];
869 }
862 val = SENSORS_LIMIT(val, 0, 255); 870 val = SENSORS_LIMIT(val, 0, 255);
863 } else { 871 } else {
864 val = SENSORS_LIMIT(val, 0, 0x3FF); 872 val = SENSORS_LIMIT(val, 0, 0x3FF);
@@ -979,12 +987,6 @@ static struct sensor_device_attribute_2 w83793_sensor_attr_2[] = {
979 SENSOR_ATTR_IN(7), 987 SENSOR_ATTR_IN(7),
980 SENSOR_ATTR_IN(8), 988 SENSOR_ATTR_IN(8),
981 SENSOR_ATTR_IN(9), 989 SENSOR_ATTR_IN(9),
982 SENSOR_ATTR_TEMP(1),
983 SENSOR_ATTR_TEMP(2),
984 SENSOR_ATTR_TEMP(3),
985 SENSOR_ATTR_TEMP(4),
986 SENSOR_ATTR_TEMP(5),
987 SENSOR_ATTR_TEMP(6),
988 SENSOR_ATTR_FAN(1), 990 SENSOR_ATTR_FAN(1),
989 SENSOR_ATTR_FAN(2), 991 SENSOR_ATTR_FAN(2),
990 SENSOR_ATTR_FAN(3), 992 SENSOR_ATTR_FAN(3),
@@ -995,6 +997,15 @@ static struct sensor_device_attribute_2 w83793_sensor_attr_2[] = {
995 SENSOR_ATTR_PWM(3), 997 SENSOR_ATTR_PWM(3),
996}; 998};
997 999
1000static struct sensor_device_attribute_2 w83793_temp[] = {
1001 SENSOR_ATTR_TEMP(1),
1002 SENSOR_ATTR_TEMP(2),
1003 SENSOR_ATTR_TEMP(3),
1004 SENSOR_ATTR_TEMP(4),
1005 SENSOR_ATTR_TEMP(5),
1006 SENSOR_ATTR_TEMP(6),
1007};
1008
998/* Fan6-Fan12 */ 1009/* Fan6-Fan12 */
999static struct sensor_device_attribute_2 w83793_left_fan[] = { 1010static struct sensor_device_attribute_2 w83793_left_fan[] = {
1000 SENSOR_ATTR_FAN(6), 1011 SENSOR_ATTR_FAN(6),
@@ -1015,9 +1026,12 @@ static struct sensor_device_attribute_2 w83793_left_pwm[] = {
1015 SENSOR_ATTR_PWM(8), 1026 SENSOR_ATTR_PWM(8),
1016}; 1027};
1017 1028
1018static struct sensor_device_attribute_2 sda_single_files[] = { 1029static struct sensor_device_attribute_2 w83793_vid[] = {
1019 SENSOR_ATTR_2(cpu0_vid, S_IRUGO, show_vid, NULL, NOT_USED, 0), 1030 SENSOR_ATTR_2(cpu0_vid, S_IRUGO, show_vid, NULL, NOT_USED, 0),
1020 SENSOR_ATTR_2(cpu1_vid, S_IRUGO, show_vid, NULL, NOT_USED, 1), 1031 SENSOR_ATTR_2(cpu1_vid, S_IRUGO, show_vid, NULL, NOT_USED, 1),
1032};
1033
1034static struct sensor_device_attribute_2 sda_single_files[] = {
1021 SENSOR_ATTR_2(vrm, S_IWUSR | S_IRUGO, show_vrm, store_vrm, 1035 SENSOR_ATTR_2(vrm, S_IWUSR | S_IRUGO, show_vrm, store_vrm,
1022 NOT_USED, NOT_USED), 1036 NOT_USED, NOT_USED),
1023 SENSOR_ATTR_2(chassis, S_IWUSR | S_IRUGO, show_alarm_beep, 1037 SENSOR_ATTR_2(chassis, S_IWUSR | S_IRUGO, show_alarm_beep,
@@ -1070,11 +1084,17 @@ static int w83793_detach_client(struct i2c_client *client)
1070 for (i = 0; i < ARRAY_SIZE(sda_single_files); i++) 1084 for (i = 0; i < ARRAY_SIZE(sda_single_files); i++)
1071 device_remove_file(dev, &sda_single_files[i].dev_attr); 1085 device_remove_file(dev, &sda_single_files[i].dev_attr);
1072 1086
1087 for (i = 0; i < ARRAY_SIZE(w83793_vid); i++)
1088 device_remove_file(dev, &w83793_vid[i].dev_attr);
1089
1073 for (i = 0; i < ARRAY_SIZE(w83793_left_fan); i++) 1090 for (i = 0; i < ARRAY_SIZE(w83793_left_fan); i++)
1074 device_remove_file(dev, &w83793_left_fan[i].dev_attr); 1091 device_remove_file(dev, &w83793_left_fan[i].dev_attr);
1075 1092
1076 for (i = 0; i < ARRAY_SIZE(w83793_left_pwm); i++) 1093 for (i = 0; i < ARRAY_SIZE(w83793_left_pwm); i++)
1077 device_remove_file(dev, &w83793_left_pwm[i].dev_attr); 1094 device_remove_file(dev, &w83793_left_pwm[i].dev_attr);
1095
1096 for (i = 0; i < ARRAY_SIZE(w83793_temp); i++)
1097 device_remove_file(dev, &w83793_temp[i].dev_attr);
1078 } 1098 }
1079 1099
1080 if ((err = i2c_detach_client(client))) 1100 if ((err = i2c_detach_client(client)))
@@ -1187,6 +1207,7 @@ static int w83793_detect(struct i2c_adapter *adapter, int address, int kind)
1187 struct w83793_data *data; 1207 struct w83793_data *data;
1188 int files_fan = ARRAY_SIZE(w83793_left_fan) / 7; 1208 int files_fan = ARRAY_SIZE(w83793_left_fan) / 7;
1189 int files_pwm = ARRAY_SIZE(w83793_left_pwm) / 5; 1209 int files_pwm = ARRAY_SIZE(w83793_left_pwm) / 5;
1210 int files_temp = ARRAY_SIZE(w83793_temp) / 6;
1190 int err = 0; 1211 int err = 0;
1191 1212
1192 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) { 1213 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) {
@@ -1313,6 +1334,44 @@ static int w83793_detect(struct i2c_adapter *adapter, int address, int kind)
1313 data->has_pwm |= 0x80; 1334 data->has_pwm |= 0x80;
1314 } 1335 }
1315 1336
1337 tmp = w83793_read_value(client, W83793_REG_FANIN_SEL);
1338 if ((tmp & 0x01) && (val & 0x08)) { /* fan 9, second location */
1339 data->has_fan |= 0x100;
1340 }
1341 if ((tmp & 0x02) && (val & 0x10)) { /* fan 10, second location */
1342 data->has_fan |= 0x200;
1343 }
1344 if ((tmp & 0x04) && (val & 0x20)) { /* fan 11, second location */
1345 data->has_fan |= 0x400;
1346 }
1347 if ((tmp & 0x08) && (val & 0x40)) { /* fan 12, second location */
1348 data->has_fan |= 0x800;
1349 }
1350
1351 /* check the temp1-6 mode, ignore former AMDSI selected inputs */
1352 tmp = w83793_read_value(client,W83793_REG_TEMP_MODE[0]);
1353 if (tmp & 0x01)
1354 data->has_temp |= 0x01;
1355 if (tmp & 0x04)
1356 data->has_temp |= 0x02;
1357 if (tmp & 0x10)
1358 data->has_temp |= 0x04;
1359 if (tmp & 0x40)
1360 data->has_temp |= 0x08;
1361
1362 tmp = w83793_read_value(client,W83793_REG_TEMP_MODE[1]);
1363 if (tmp & 0x01)
1364 data->has_temp |= 0x10;
1365 if (tmp & 0x02)
1366 data->has_temp |= 0x20;
1367
1368 /* Detect the VID usage and ignore unused input */
1369 tmp = w83793_read_value(client, W83793_REG_MFC);
1370 if (!(tmp & 0x29))
1371 data->has_vid |= 0x1; /* has VIDA */
1372 if (tmp & 0x80)
1373 data->has_vid |= 0x2; /* has VIDB */
1374
1316 /* Register sysfs hooks */ 1375 /* Register sysfs hooks */
1317 for (i = 0; i < ARRAY_SIZE(w83793_sensor_attr_2); i++) { 1376 for (i = 0; i < ARRAY_SIZE(w83793_sensor_attr_2); i++) {
1318 err = device_create_file(dev, 1377 err = device_create_file(dev,
@@ -1321,6 +1380,14 @@ static int w83793_detect(struct i2c_adapter *adapter, int address, int kind)
1321 goto exit_remove; 1380 goto exit_remove;
1322 } 1381 }
1323 1382
1383 for (i = 0; i < ARRAY_SIZE(w83793_vid); i++) {
1384 if (!(data->has_vid & (1 << i)))
1385 continue;
1386 err = device_create_file(dev, &w83793_vid[i].dev_attr);
1387 if (err)
1388 goto exit_remove;
1389 }
1390
1324 for (i = 0; i < ARRAY_SIZE(sda_single_files); i++) { 1391 for (i = 0; i < ARRAY_SIZE(sda_single_files); i++) {
1325 err = device_create_file(dev, &sda_single_files[i].dev_attr); 1392 err = device_create_file(dev, &sda_single_files[i].dev_attr);
1326 if (err) 1393 if (err)
@@ -1328,6 +1395,19 @@ static int w83793_detect(struct i2c_adapter *adapter, int address, int kind)
1328 1395
1329 } 1396 }
1330 1397
1398 for (i = 0; i < 6; i++) {
1399 int j;
1400 if (!(data->has_temp & (1 << i)))
1401 continue;
1402 for (j = 0; j < files_temp; j++) {
1403 err = device_create_file(dev,
1404 &w83793_temp[(i) * files_temp
1405 + j].dev_attr);
1406 if (err)
1407 goto exit_remove;
1408 }
1409 }
1410
1331 for (i = 5; i < 12; i++) { 1411 for (i = 5; i < 12; i++) {
1332 int j; 1412 int j;
1333 if (!(data->has_fan & (1 << i))) 1413 if (!(data->has_fan & (1 << i)))
@@ -1371,12 +1451,18 @@ exit_remove:
1371 for (i = 0; i < ARRAY_SIZE(sda_single_files); i++) 1451 for (i = 0; i < ARRAY_SIZE(sda_single_files); i++)
1372 device_remove_file(dev, &sda_single_files[i].dev_attr); 1452 device_remove_file(dev, &sda_single_files[i].dev_attr);
1373 1453
1454 for (i = 0; i < ARRAY_SIZE(w83793_vid); i++)
1455 device_remove_file(dev, &w83793_vid[i].dev_attr);
1456
1374 for (i = 0; i < ARRAY_SIZE(w83793_left_fan); i++) 1457 for (i = 0; i < ARRAY_SIZE(w83793_left_fan); i++)
1375 device_remove_file(dev, &w83793_left_fan[i].dev_attr); 1458 device_remove_file(dev, &w83793_left_fan[i].dev_attr);
1376 1459
1377 for (i = 0; i < ARRAY_SIZE(w83793_left_pwm); i++) 1460 for (i = 0; i < ARRAY_SIZE(w83793_left_pwm); i++)
1378 device_remove_file(dev, &w83793_left_pwm[i].dev_attr); 1461 device_remove_file(dev, &w83793_left_pwm[i].dev_attr);
1379 1462
1463 for (i = 0; i < ARRAY_SIZE(w83793_temp); i++)
1464 device_remove_file(dev, &w83793_temp[i].dev_attr);
1465
1380 if (data->lm75[0] != NULL) { 1466 if (data->lm75[0] != NULL) {
1381 i2c_detach_client(data->lm75[0]); 1467 i2c_detach_client(data->lm75[0]);
1382 kfree(data->lm75[0]); 1468 kfree(data->lm75[0]);
@@ -1428,6 +1514,8 @@ static void w83793_update_nonvolatile(struct device *dev)
1428 } 1514 }
1429 1515
1430 for (i = 0; i < ARRAY_SIZE(data->temp_fan_map); i++) { 1516 for (i = 0; i < ARRAY_SIZE(data->temp_fan_map); i++) {
1517 if (!(data->has_temp & (1 << i)))
1518 continue;
1431 data->temp_fan_map[i] = 1519 data->temp_fan_map[i] =
1432 w83793_read_value(client, W83793_REG_TEMP_FAN_MAP(i)); 1520 w83793_read_value(client, W83793_REG_TEMP_FAN_MAP(i));
1433 for (j = 1; j < 5; j++) { 1521 for (j = 1; j < 5; j++) {
@@ -1510,9 +1598,12 @@ static struct w83793_data *w83793_update_device(struct device *dev)
1510 w83793_read_value(client, W83793_REG_FAN(i) + 1); 1598 w83793_read_value(client, W83793_REG_FAN(i) + 1);
1511 } 1599 }
1512 1600
1513 for (i = 0; i < ARRAY_SIZE(data->temp); i++) 1601 for (i = 0; i < ARRAY_SIZE(data->temp); i++) {
1602 if (!(data->has_temp & (1 << i)))
1603 continue;
1514 data->temp[i][TEMP_READ] = 1604 data->temp[i][TEMP_READ] =
1515 w83793_read_value(client, W83793_REG_TEMP[i][TEMP_READ]); 1605 w83793_read_value(client, W83793_REG_TEMP[i][TEMP_READ]);
1606 }
1516 1607
1517 data->temp_low_bits = 1608 data->temp_low_bits =
1518 w83793_read_value(client, W83793_REG_TEMP_LOW_BITS); 1609 w83793_read_value(client, W83793_REG_TEMP_LOW_BITS);
@@ -1527,8 +1618,10 @@ static struct w83793_data *w83793_update_device(struct device *dev)
1527 for (i = 0; i < ARRAY_SIZE(data->alarms); i++) 1618 for (i = 0; i < ARRAY_SIZE(data->alarms); i++)
1528 data->alarms[i] = 1619 data->alarms[i] =
1529 w83793_read_value(client, W83793_REG_ALARM(i)); 1620 w83793_read_value(client, W83793_REG_ALARM(i));
1530 data->vid[0] = w83793_read_value(client, W83793_REG_VID_INA); 1621 if (data->has_vid & 0x01)
1531 data->vid[1] = w83793_read_value(client, W83793_REG_VID_INB); 1622 data->vid[0] = w83793_read_value(client, W83793_REG_VID_INA);
1623 if (data->has_vid & 0x02)
1624 data->vid[1] = w83793_read_value(client, W83793_REG_VID_INB);
1532 w83793_update_nonvolatile(dev); 1625 w83793_update_nonvolatile(dev);
1533 data->last_updated = jiffies; 1626 data->last_updated = jiffies;
1534 data->valid = 1; 1627 data->valid = 1;
diff --git a/drivers/infiniband/hw/ehca/ehca_cq.c b/drivers/infiniband/hw/ehca/ehca_cq.c
index 93995b658d94..6074c897f51c 100644
--- a/drivers/infiniband/hw/ehca/ehca_cq.c
+++ b/drivers/infiniband/hw/ehca/ehca_cq.c
@@ -344,8 +344,11 @@ int ehca_destroy_cq(struct ib_cq *cq)
344 unsigned long flags; 344 unsigned long flags;
345 345
346 spin_lock_irqsave(&ehca_cq_idr_lock, flags); 346 spin_lock_irqsave(&ehca_cq_idr_lock, flags);
347 while (my_cq->nr_callbacks) 347 while (my_cq->nr_callbacks) {
348 spin_unlock_irqrestore(&ehca_cq_idr_lock, flags);
348 yield(); 349 yield();
350 spin_lock_irqsave(&ehca_cq_idr_lock, flags);
351 }
349 352
350 idr_remove(&ehca_cq_idr, my_cq->token); 353 idr_remove(&ehca_cq_idr, my_cq->token);
351 spin_unlock_irqrestore(&ehca_cq_idr_lock, flags); 354 spin_unlock_irqrestore(&ehca_cq_idr_lock, flags);
diff --git a/drivers/infiniband/hw/ehca/ehca_irq.c b/drivers/infiniband/hw/ehca/ehca_irq.c
index e7209afb4250..c069be8cbcb2 100644
--- a/drivers/infiniband/hw/ehca/ehca_irq.c
+++ b/drivers/infiniband/hw/ehca/ehca_irq.c
@@ -440,7 +440,8 @@ void ehca_tasklet_eq(unsigned long data)
440 cq = idr_find(&ehca_cq_idr, token); 440 cq = idr_find(&ehca_cq_idr, token);
441 441
442 if (cq == NULL) { 442 if (cq == NULL) {
443 spin_unlock(&ehca_cq_idr_lock); 443 spin_unlock_irqrestore(&ehca_cq_idr_lock,
444 flags);
444 break; 445 break;
445 } 446 }
446 447
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
index cdecbf5911c8..72611fd15103 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.c
+++ b/drivers/infiniband/ulp/srp/ib_srp.c
@@ -1621,18 +1621,30 @@ static int srp_parse_options(const char *buf, struct srp_target_port *target)
1621 switch (token) { 1621 switch (token) {
1622 case SRP_OPT_ID_EXT: 1622 case SRP_OPT_ID_EXT:
1623 p = match_strdup(args); 1623 p = match_strdup(args);
1624 if (!p) {
1625 ret = -ENOMEM;
1626 goto out;
1627 }
1624 target->id_ext = cpu_to_be64(simple_strtoull(p, NULL, 16)); 1628 target->id_ext = cpu_to_be64(simple_strtoull(p, NULL, 16));
1625 kfree(p); 1629 kfree(p);
1626 break; 1630 break;
1627 1631
1628 case SRP_OPT_IOC_GUID: 1632 case SRP_OPT_IOC_GUID:
1629 p = match_strdup(args); 1633 p = match_strdup(args);
1634 if (!p) {
1635 ret = -ENOMEM;
1636 goto out;
1637 }
1630 target->ioc_guid = cpu_to_be64(simple_strtoull(p, NULL, 16)); 1638 target->ioc_guid = cpu_to_be64(simple_strtoull(p, NULL, 16));
1631 kfree(p); 1639 kfree(p);
1632 break; 1640 break;
1633 1641
1634 case SRP_OPT_DGID: 1642 case SRP_OPT_DGID:
1635 p = match_strdup(args); 1643 p = match_strdup(args);
1644 if (!p) {
1645 ret = -ENOMEM;
1646 goto out;
1647 }
1636 if (strlen(p) != 32) { 1648 if (strlen(p) != 32) {
1637 printk(KERN_WARNING PFX "bad dest GID parameter '%s'\n", p); 1649 printk(KERN_WARNING PFX "bad dest GID parameter '%s'\n", p);
1638 kfree(p); 1650 kfree(p);
@@ -1656,6 +1668,10 @@ static int srp_parse_options(const char *buf, struct srp_target_port *target)
1656 1668
1657 case SRP_OPT_SERVICE_ID: 1669 case SRP_OPT_SERVICE_ID:
1658 p = match_strdup(args); 1670 p = match_strdup(args);
1671 if (!p) {
1672 ret = -ENOMEM;
1673 goto out;
1674 }
1659 target->service_id = cpu_to_be64(simple_strtoull(p, NULL, 16)); 1675 target->service_id = cpu_to_be64(simple_strtoull(p, NULL, 16));
1660 kfree(p); 1676 kfree(p);
1661 break; 1677 break;
@@ -1693,6 +1709,10 @@ static int srp_parse_options(const char *buf, struct srp_target_port *target)
1693 1709
1694 case SRP_OPT_INITIATOR_EXT: 1710 case SRP_OPT_INITIATOR_EXT:
1695 p = match_strdup(args); 1711 p = match_strdup(args);
1712 if (!p) {
1713 ret = -ENOMEM;
1714 goto out;
1715 }
1696 target->initiator_ext = cpu_to_be64(simple_strtoull(p, NULL, 16)); 1716 target->initiator_ext = cpu_to_be64(simple_strtoull(p, NULL, 16));
1697 kfree(p); 1717 kfree(p);
1698 break; 1718 break;
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
index 67c1154960f0..be4651abe72c 100644
--- a/drivers/kvm/kvm_main.c
+++ b/drivers/kvm/kvm_main.c
@@ -272,7 +272,9 @@ static void kvm_free_physmem(struct kvm *kvm)
272 272
273static void kvm_free_vcpu(struct kvm_vcpu *vcpu) 273static void kvm_free_vcpu(struct kvm_vcpu *vcpu)
274{ 274{
275 vcpu_load(vcpu->kvm, vcpu_slot(vcpu));
275 kvm_mmu_destroy(vcpu); 276 kvm_mmu_destroy(vcpu);
277 vcpu_put(vcpu);
276 kvm_arch_ops->vcpu_free(vcpu); 278 kvm_arch_ops->vcpu_free(vcpu);
277} 279}
278 280
diff --git a/drivers/kvm/paging_tmpl.h b/drivers/kvm/paging_tmpl.h
index 2dbf4307ed9e..6bc41950fbb3 100644
--- a/drivers/kvm/paging_tmpl.h
+++ b/drivers/kvm/paging_tmpl.h
@@ -274,7 +274,7 @@ static int FNAME(fix_write_pf)(struct kvm_vcpu *vcpu,
274 struct kvm_mmu_page *page; 274 struct kvm_mmu_page *page;
275 275
276 if (is_writeble_pte(*shadow_ent)) 276 if (is_writeble_pte(*shadow_ent))
277 return 0; 277 return !user || (*shadow_ent & PT_USER_MASK);
278 278
279 writable_shadow = *shadow_ent & PT_SHADOW_WRITABLE_MASK; 279 writable_shadow = *shadow_ent & PT_SHADOW_WRITABLE_MASK;
280 if (user) { 280 if (user) {
diff --git a/drivers/kvm/svm.c b/drivers/kvm/svm.c
index 714f6a7841cd..7397bfbbcb1c 100644
--- a/drivers/kvm/svm.c
+++ b/drivers/kvm/svm.c
@@ -1407,7 +1407,8 @@ static int svm_vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
1407 int r; 1407 int r;
1408 1408
1409again: 1409again:
1410 do_interrupt_requests(vcpu, kvm_run); 1410 if (!vcpu->mmio_read_completed)
1411 do_interrupt_requests(vcpu, kvm_run);
1411 1412
1412 clgi(); 1413 clgi();
1413 1414
diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c
index ce219e3f557f..27f2751c3baa 100644
--- a/drivers/kvm/vmx.c
+++ b/drivers/kvm/vmx.c
@@ -1717,7 +1717,8 @@ again:
1717 vmcs_writel(HOST_GS_BASE, segment_base(gs_sel)); 1717 vmcs_writel(HOST_GS_BASE, segment_base(gs_sel));
1718#endif 1718#endif
1719 1719
1720 do_interrupt_requests(vcpu, kvm_run); 1720 if (!vcpu->mmio_read_completed)
1721 do_interrupt_requests(vcpu, kvm_run);
1721 1722
1722 if (vcpu->guest_debug.enabled) 1723 if (vcpu->guest_debug.enabled)
1723 kvm_guest_debug_pre(vcpu); 1724 kvm_guest_debug_pre(vcpu);
@@ -1824,7 +1825,7 @@ again:
1824#endif 1825#endif
1825 "setbe %0 \n\t" 1826 "setbe %0 \n\t"
1826 "popf \n\t" 1827 "popf \n\t"
1827 : "=g" (fail) 1828 : "=q" (fail)
1828 : "r"(vcpu->launched), "d"((unsigned long)HOST_RSP), 1829 : "r"(vcpu->launched), "d"((unsigned long)HOST_RSP),
1829 "c"(vcpu), 1830 "c"(vcpu),
1830 [rax]"i"(offsetof(struct kvm_vcpu, regs[VCPU_REGS_RAX])), 1831 [rax]"i"(offsetof(struct kvm_vcpu, regs[VCPU_REGS_RAX])),
diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
index be70795b4822..7513cddb929f 100644
--- a/drivers/kvm/x86_emulate.c
+++ b/drivers/kvm/x86_emulate.c
@@ -61,6 +61,7 @@
61#define ModRM (1<<6) 61#define ModRM (1<<6)
62/* Destination is only written; never read. */ 62/* Destination is only written; never read. */
63#define Mov (1<<7) 63#define Mov (1<<7)
64#define BitOp (1<<8)
64 65
65static u8 opcode_table[256] = { 66static u8 opcode_table[256] = {
66 /* 0x00 - 0x07 */ 67 /* 0x00 - 0x07 */
@@ -148,7 +149,7 @@ static u8 opcode_table[256] = {
148 0, 0, ByteOp | DstMem | SrcNone | ModRM, DstMem | SrcNone | ModRM 149 0, 0, ByteOp | DstMem | SrcNone | ModRM, DstMem | SrcNone | ModRM
149}; 150};
150 151
151static u8 twobyte_table[256] = { 152static u16 twobyte_table[256] = {
152 /* 0x00 - 0x0F */ 153 /* 0x00 - 0x0F */
153 0, SrcMem | ModRM | DstReg, 0, 0, 0, 0, ImplicitOps, 0, 154 0, SrcMem | ModRM | DstReg, 0, 0, 0, 0, ImplicitOps, 0,
154 0, 0, 0, 0, 0, ImplicitOps | ModRM, 0, 0, 155 0, 0, 0, 0, 0, ImplicitOps | ModRM, 0, 0,
@@ -180,16 +181,16 @@ static u8 twobyte_table[256] = {
180 /* 0x90 - 0x9F */ 181 /* 0x90 - 0x9F */
181 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
182 /* 0xA0 - 0xA7 */ 183 /* 0xA0 - 0xA7 */
183 0, 0, 0, DstMem | SrcReg | ModRM, 0, 0, 0, 0, 184 0, 0, 0, DstMem | SrcReg | ModRM | BitOp, 0, 0, 0, 0,
184 /* 0xA8 - 0xAF */ 185 /* 0xA8 - 0xAF */
185 0, 0, 0, DstMem | SrcReg | ModRM, 0, 0, 0, 0, 186 0, 0, 0, DstMem | SrcReg | ModRM | BitOp, 0, 0, 0, 0,
186 /* 0xB0 - 0xB7 */ 187 /* 0xB0 - 0xB7 */
187 ByteOp | DstMem | SrcReg | ModRM, DstMem | SrcReg | ModRM, 0, 188 ByteOp | DstMem | SrcReg | ModRM, DstMem | SrcReg | ModRM, 0,
188 DstMem | SrcReg | ModRM, 189 DstMem | SrcReg | ModRM | BitOp,
189 0, 0, ByteOp | DstReg | SrcMem | ModRM | Mov, 190 0, 0, ByteOp | DstReg | SrcMem | ModRM | Mov,
190 DstReg | SrcMem16 | ModRM | Mov, 191 DstReg | SrcMem16 | ModRM | Mov,
191 /* 0xB8 - 0xBF */ 192 /* 0xB8 - 0xBF */
192 0, 0, DstMem | SrcImmByte | ModRM, DstMem | SrcReg | ModRM, 193 0, 0, DstMem | SrcImmByte | ModRM, DstMem | SrcReg | ModRM | BitOp,
193 0, 0, ByteOp | DstReg | SrcMem | ModRM | Mov, 194 0, 0, ByteOp | DstReg | SrcMem | ModRM | Mov,
194 DstReg | SrcMem16 | ModRM | Mov, 195 DstReg | SrcMem16 | ModRM | Mov,
195 /* 0xC0 - 0xCF */ 196 /* 0xC0 - 0xCF */
@@ -469,7 +470,8 @@ static int read_descriptor(struct x86_emulate_ctxt *ctxt,
469int 470int
470x86_emulate_memop(struct x86_emulate_ctxt *ctxt, struct x86_emulate_ops *ops) 471x86_emulate_memop(struct x86_emulate_ctxt *ctxt, struct x86_emulate_ops *ops)
471{ 472{
472 u8 b, d, sib, twobyte = 0, rex_prefix = 0; 473 unsigned d;
474 u8 b, sib, twobyte = 0, rex_prefix = 0;
473 u8 modrm, modrm_mod = 0, modrm_reg = 0, modrm_rm = 0; 475 u8 modrm, modrm_mod = 0, modrm_reg = 0, modrm_rm = 0;
474 unsigned long *override_base = NULL; 476 unsigned long *override_base = NULL;
475 unsigned int op_bytes, ad_bytes, lock_prefix = 0, rep_prefix = 0, i; 477 unsigned int op_bytes, ad_bytes, lock_prefix = 0, rep_prefix = 0, i;
@@ -726,46 +728,6 @@ done_prefixes:
726 ; 728 ;
727 } 729 }
728 730
729 /* Decode and fetch the destination operand: register or memory. */
730 switch (d & DstMask) {
731 case ImplicitOps:
732 /* Special instructions do their own operand decoding. */
733 goto special_insn;
734 case DstReg:
735 dst.type = OP_REG;
736 if ((d & ByteOp)
737 && !(twobyte_table && (b == 0xb6 || b == 0xb7))) {
738 dst.ptr = decode_register(modrm_reg, _regs,
739 (rex_prefix == 0));
740 dst.val = *(u8 *) dst.ptr;
741 dst.bytes = 1;
742 } else {
743 dst.ptr = decode_register(modrm_reg, _regs, 0);
744 switch ((dst.bytes = op_bytes)) {
745 case 2:
746 dst.val = *(u16 *)dst.ptr;
747 break;
748 case 4:
749 dst.val = *(u32 *)dst.ptr;
750 break;
751 case 8:
752 dst.val = *(u64 *)dst.ptr;
753 break;
754 }
755 }
756 break;
757 case DstMem:
758 dst.type = OP_MEM;
759 dst.ptr = (unsigned long *)cr2;
760 dst.bytes = (d & ByteOp) ? 1 : op_bytes;
761 if (!(d & Mov) && /* optimisation - avoid slow emulated read */
762 ((rc = ops->read_emulated((unsigned long)dst.ptr,
763 &dst.val, dst.bytes, ctxt)) != 0))
764 goto done;
765 break;
766 }
767 dst.orig_val = dst.val;
768
769 /* 731 /*
770 * Decode and fetch the source operand: register, memory 732 * Decode and fetch the source operand: register, memory
771 * or immediate. 733 * or immediate.
@@ -838,6 +800,50 @@ done_prefixes:
838 break; 800 break;
839 } 801 }
840 802
803 /* Decode and fetch the destination operand: register or memory. */
804 switch (d & DstMask) {
805 case ImplicitOps:
806 /* Special instructions do their own operand decoding. */
807 goto special_insn;
808 case DstReg:
809 dst.type = OP_REG;
810 if ((d & ByteOp)
811 && !(twobyte_table && (b == 0xb6 || b == 0xb7))) {
812 dst.ptr = decode_register(modrm_reg, _regs,
813 (rex_prefix == 0));
814 dst.val = *(u8 *) dst.ptr;
815 dst.bytes = 1;
816 } else {
817 dst.ptr = decode_register(modrm_reg, _regs, 0);
818 switch ((dst.bytes = op_bytes)) {
819 case 2:
820 dst.val = *(u16 *)dst.ptr;
821 break;
822 case 4:
823 dst.val = *(u32 *)dst.ptr;
824 break;
825 case 8:
826 dst.val = *(u64 *)dst.ptr;
827 break;
828 }
829 }
830 break;
831 case DstMem:
832 dst.type = OP_MEM;
833 dst.ptr = (unsigned long *)cr2;
834 dst.bytes = (d & ByteOp) ? 1 : op_bytes;
835 if (d & BitOp) {
836 dst.ptr += src.val / BITS_PER_LONG;
837 dst.bytes = sizeof(long);
838 }
839 if (!(d & Mov) && /* optimisation - avoid slow emulated read */
840 ((rc = ops->read_emulated((unsigned long)dst.ptr,
841 &dst.val, dst.bytes, ctxt)) != 0))
842 goto done;
843 break;
844 }
845 dst.orig_val = dst.val;
846
841 if (twobyte) 847 if (twobyte)
842 goto twobyte_insn; 848 goto twobyte_insn;
843 849
diff --git a/drivers/media/video/cx88/cx88-tvaudio.c b/drivers/media/video/cx88/cx88-tvaudio.c
index 3482e0114d43..2bd84d351a18 100644
--- a/drivers/media/video/cx88/cx88-tvaudio.c
+++ b/drivers/media/video/cx88/cx88-tvaudio.c
@@ -38,6 +38,7 @@
38#include <linux/module.h> 38#include <linux/module.h>
39#include <linux/moduleparam.h> 39#include <linux/moduleparam.h>
40#include <linux/errno.h> 40#include <linux/errno.h>
41#include <linux/freezer.h>
41#include <linux/kernel.h> 42#include <linux/kernel.h>
42#include <linux/slab.h> 43#include <linux/slab.h>
43#include <linux/mm.h> 44#include <linux/mm.h>
@@ -961,6 +962,7 @@ int cx88_audio_thread(void *data)
961 msleep_interruptible(1000); 962 msleep_interruptible(1000);
962 if (kthread_should_stop()) 963 if (kthread_should_stop())
963 break; 964 break;
965 try_to_freeze();
964 966
965 /* just monitor the audio status for now ... */ 967 /* just monitor the audio status for now ... */
966 memset(&t, 0, sizeof(t)); 968 memset(&t, 0, sizeof(t));
diff --git a/drivers/media/video/ks0127.c b/drivers/media/video/ks0127.c
index c1a377f797d9..b6cd21e6dab9 100644
--- a/drivers/media/video/ks0127.c
+++ b/drivers/media/video/ks0127.c
@@ -712,13 +712,13 @@ static int ks0127_command(struct i2c_client *client,
712 *iarg = 0; 712 *iarg = 0;
713 status = ks0127_read(ks, KS_STAT); 713 status = ks0127_read(ks, KS_STAT);
714 if (!(status & 0x20)) /* NOVID not set */ 714 if (!(status & 0x20)) /* NOVID not set */
715 *iarg = (*iarg & DECODER_STATUS_GOOD); 715 *iarg = (*iarg | DECODER_STATUS_GOOD);
716 if ((status & 0x01)) /* CLOCK set */ 716 if ((status & 0x01)) /* CLOCK set */
717 *iarg = (*iarg & DECODER_STATUS_COLOR); 717 *iarg = (*iarg | DECODER_STATUS_COLOR);
718 if ((status & 0x08)) /* PALDET set */ 718 if ((status & 0x08)) /* PALDET set */
719 *iarg = (*iarg & DECODER_STATUS_PAL); 719 *iarg = (*iarg | DECODER_STATUS_PAL);
720 else 720 else
721 *iarg = (*iarg & DECODER_STATUS_NTSC); 721 *iarg = (*iarg | DECODER_STATUS_NTSC);
722 break; 722 break;
723 723
724 //Catch any unknown command 724 //Catch any unknown command
diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c
index 4dead84aff46..ae984bbe36b6 100644
--- a/drivers/media/video/saa7134/saa7134-cards.c
+++ b/drivers/media/video/saa7134/saa7134-cards.c
@@ -2570,6 +2570,7 @@ struct saa7134_board saa7134_boards[] = {
2570 .radio_type = UNSET, 2570 .radio_type = UNSET,
2571 .tuner_addr = ADDR_UNSET, 2571 .tuner_addr = ADDR_UNSET,
2572 .radio_addr = ADDR_UNSET, 2572 .radio_addr = ADDR_UNSET,
2573 .gpiomask = 1 << 21,
2573 .inputs = {{ 2574 .inputs = {{
2574 .name = name_tv, 2575 .name = name_tv,
2575 .vmux = 1, 2576 .vmux = 1,
@@ -2578,15 +2579,20 @@ struct saa7134_board saa7134_boards[] = {
2578 },{ 2579 },{
2579 .name = name_comp1, 2580 .name = name_comp1,
2580 .vmux = 3, 2581 .vmux = 3,
2581 .amux = LINE1, 2582 .amux = LINE2, /* unconfirmed, taken from Philips driver */
2583 },{
2584 .name = name_comp2,
2585 .vmux = 0, /* untested, Composite over S-Video */
2586 .amux = LINE2,
2582 },{ 2587 },{
2583 .name = name_svideo, 2588 .name = name_svideo,
2584 .vmux = 0, 2589 .vmux = 8,
2585 .amux = LINE1, 2590 .amux = LINE2,
2586 }}, 2591 }},
2587 .radio = { 2592 .radio = {
2588 .name = name_radio, 2593 .name = name_radio,
2589 .amux = LINE1, 2594 .amux = TV,
2595 .gpio = 0x0200000,
2590 }, 2596 },
2591 }, 2597 },
2592 [SAA7134_BOARD_CINERGY250PCI] = { 2598 [SAA7134_BOARD_CINERGY250PCI] = {
diff --git a/drivers/media/video/tveeprom.c b/drivers/media/video/tveeprom.c
index 2624e3f7dd29..4e7c1fa668d3 100644
--- a/drivers/media/video/tveeprom.c
+++ b/drivers/media/video/tveeprom.c
@@ -184,7 +184,7 @@ hauppauge_tuner[] =
184 { TUNER_ABSENT, "Thompson DTT757"}, 184 { TUNER_ABSENT, "Thompson DTT757"},
185 /* 80-89 */ 185 /* 80-89 */
186 { TUNER_ABSENT, "Philips FQ1216LME MK3"}, 186 { TUNER_ABSENT, "Philips FQ1216LME MK3"},
187 { TUNER_ABSENT, "LG TAPC G701D"}, 187 { TUNER_LG_PAL_NEW_TAPC, "LG TAPC G701D"},
188 { TUNER_LG_NTSC_NEW_TAPC, "LG TAPC H791F"}, 188 { TUNER_LG_NTSC_NEW_TAPC, "LG TAPC H791F"},
189 { TUNER_LG_PAL_NEW_TAPC, "TCL 2002MB 3"}, 189 { TUNER_LG_PAL_NEW_TAPC, "TCL 2002MB 3"},
190 { TUNER_LG_PAL_NEW_TAPC, "TCL 2002MI 3"}, 190 { TUNER_LG_PAL_NEW_TAPC, "TCL 2002MI 3"},
diff --git a/drivers/media/video/usbvideo/quickcam_messenger.h b/drivers/media/video/usbvideo/quickcam_messenger.h
index baab9c081b52..17ace394d981 100644
--- a/drivers/media/video/usbvideo/quickcam_messenger.h
+++ b/drivers/media/video/usbvideo/quickcam_messenger.h
@@ -35,27 +35,13 @@ struct rgb {
35}; 35};
36 36
37struct bayL0 { 37struct bayL0 {
38#ifdef __BIG_ENDIAN
39 u8 r;
40 u8 g;
41#elif __LITTLE_ENDIAN
42 u8 g; 38 u8 g;
43 u8 r; 39 u8 r;
44#else
45#error not byte order defined
46#endif
47}; 40};
48 41
49struct bayL1 { 42struct bayL1 {
50#ifdef __BIG_ENDIAN
51 u8 g;
52 u8 b;
53#elif __LITTLE_ENDIAN
54 u8 b; 43 u8 b;
55 u8 g; 44 u8 g;
56#else
57#error not byte order defined
58#endif
59}; 45};
60 46
61struct cam_size { 47struct cam_size {
diff --git a/drivers/media/video/usbvision/usbvision-video.c b/drivers/media/video/usbvision/usbvision-video.c
index 8c7eba2a728e..7243337b771a 100644
--- a/drivers/media/video/usbvision/usbvision-video.c
+++ b/drivers/media/video/usbvision/usbvision-video.c
@@ -1080,7 +1080,6 @@ static ssize_t usbvision_v4l2_read(struct file *file, char *buf,
1080 int noblock = file->f_flags & O_NONBLOCK; 1080 int noblock = file->f_flags & O_NONBLOCK;
1081 unsigned long lock_flags; 1081 unsigned long lock_flags;
1082 1082
1083 int frmx = -1;
1084 int ret,i; 1083 int ret,i;
1085 struct usbvision_frame *frame; 1084 struct usbvision_frame *frame;
1086 1085
@@ -1155,7 +1154,7 @@ static ssize_t usbvision_v4l2_read(struct file *file, char *buf,
1155 frame->bytes_read = 0; 1154 frame->bytes_read = 0;
1156 1155
1157 /* Mark it as available to be used again. */ 1156 /* Mark it as available to be used again. */
1158 usbvision->frame[frmx].grabstate = FrameState_Unused; 1157 frame->grabstate = FrameState_Unused;
1159/* } */ 1158/* } */
1160 1159
1161 return count; 1160 return count;
diff --git a/drivers/media/video/v4l2-common.c b/drivers/media/video/v4l2-common.c
index 752c82c37f55..b87d571e0463 100644
--- a/drivers/media/video/v4l2-common.c
+++ b/drivers/media/video/v4l2-common.c
@@ -90,8 +90,15 @@ MODULE_LICENSE("GPL");
90char *v4l2_norm_to_name(v4l2_std_id id) 90char *v4l2_norm_to_name(v4l2_std_id id)
91{ 91{
92 char *name; 92 char *name;
93 u32 myid = id;
93 94
94 switch (id) { 95 /* HACK: ppc32 architecture doesn't have __ucmpdi2 function to handle
96 64 bit comparations. So, on that architecture, with some gcc variants,
97 compilation fails. Currently, the max value is 30bit wide.
98 */
99 BUG_ON(myid != id);
100
101 switch (myid) {
95 case V4L2_STD_PAL: 102 case V4L2_STD_PAL:
96 name="PAL"; break; 103 name="PAL"; break;
97 case V4L2_STD_PAL_BG: 104 case V4L2_STD_PAL_BG:
diff --git a/drivers/media/video/video-buf.c b/drivers/media/video/video-buf.c
index f429f49901b9..6504a5866849 100644
--- a/drivers/media/video/video-buf.c
+++ b/drivers/media/video/video-buf.c
@@ -700,6 +700,7 @@ videobuf_qbuf(struct videobuf_queue *q,
700 goto done; 700 goto done;
701 } 701 }
702 if (buf->state == STATE_QUEUED || 702 if (buf->state == STATE_QUEUED ||
703 buf->state == STATE_PREPARED ||
703 buf->state == STATE_ACTIVE) { 704 buf->state == STATE_ACTIVE) {
704 dprintk(1,"qbuf: buffer is already queued or active.\n"); 705 dprintk(1,"qbuf: buffer is already queued or active.\n");
705 goto done; 706 goto done;
@@ -1229,7 +1230,7 @@ videobuf_vm_nopage(struct vm_area_struct *vma, unsigned long vaddr,
1229 vaddr,vma->vm_start,vma->vm_end); 1230 vaddr,vma->vm_start,vma->vm_end);
1230 if (vaddr > vma->vm_end) 1231 if (vaddr > vma->vm_end)
1231 return NOPAGE_SIGBUS; 1232 return NOPAGE_SIGBUS;
1232 page = alloc_page(GFP_USER); 1233 page = alloc_page(GFP_USER | __GFP_DMA32);
1233 if (!page) 1234 if (!page)
1234 return NOPAGE_OOM; 1235 return NOPAGE_OOM;
1235 clear_user_page(page_address(page), vaddr, page); 1236 clear_user_page(page_address(page), vaddr, page);
diff --git a/drivers/media/video/vivi.c b/drivers/media/video/vivi.c
index bacb311b4f24..d4cf55666731 100644
--- a/drivers/media/video/vivi.c
+++ b/drivers/media/video/vivi.c
@@ -270,10 +270,15 @@ static void gen_line(struct sg_to_addr to_addr[],int inipos,int pages,int wmax,
270 char *p,*s,*basep; 270 char *p,*s,*basep;
271 struct page *pg; 271 struct page *pg;
272 u8 chr,r,g,b,color; 272 u8 chr,r,g,b,color;
273 unsigned long flags;
274 spinlock_t spinlock;
275
276 spin_lock_init(&spinlock);
273 277
274 /* Get first addr pointed to pixel position */ 278 /* Get first addr pointed to pixel position */
275 oldpg=get_addr_pos(pos,pages,to_addr); 279 oldpg=get_addr_pos(pos,pages,to_addr);
276 pg=pfn_to_page(sg_dma_address(to_addr[oldpg].sg) >> PAGE_SHIFT); 280 pg=pfn_to_page(sg_dma_address(to_addr[oldpg].sg) >> PAGE_SHIFT);
281 spin_lock_irqsave(&spinlock,flags);
277 basep = kmap_atomic(pg, KM_BOUNCE_READ)+to_addr[oldpg].sg->offset; 282 basep = kmap_atomic(pg, KM_BOUNCE_READ)+to_addr[oldpg].sg->offset;
278 283
279 /* We will just duplicate the second pixel at the packet */ 284 /* We will just duplicate the second pixel at the packet */
@@ -376,6 +381,8 @@ static void gen_line(struct sg_to_addr to_addr[],int inipos,int pages,int wmax,
376 381
377end: 382end:
378 kunmap_atomic(basep, KM_BOUNCE_READ); 383 kunmap_atomic(basep, KM_BOUNCE_READ);
384 spin_unlock_irqrestore(&spinlock,flags);
385
379} 386}
380static void vivi_fillbuff(struct vivi_dev *dev,struct vivi_buffer *buf) 387static void vivi_fillbuff(struct vivi_dev *dev,struct vivi_buffer *buf)
381{ 388{
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index 6e068cf1049b..b3f28a03b6a9 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -5,7 +5,7 @@
5 * For use with LSI Logic PCI chip/adapter(s) 5 * For use with LSI Logic PCI chip/adapter(s)
6 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 6 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
7 * 7 *
8 * Copyright (c) 1999-2005 LSI Logic Corporation 8 * Copyright (c) 1999-2007 LSI Logic Corporation
9 * (mailto:mpt_linux_developer@lsil.com) 9 * (mailto:mpt_linux_developer@lsil.com)
10 * 10 *
11 */ 11 */
@@ -73,6 +73,7 @@
73MODULE_AUTHOR(MODULEAUTHOR); 73MODULE_AUTHOR(MODULEAUTHOR);
74MODULE_DESCRIPTION(my_NAME); 74MODULE_DESCRIPTION(my_NAME);
75MODULE_LICENSE("GPL"); 75MODULE_LICENSE("GPL");
76MODULE_VERSION(my_VERSION);
76 77
77/* 78/*
78 * cmd line parameters 79 * cmd line parameters
diff --git a/drivers/message/fusion/mptbase.h b/drivers/message/fusion/mptbase.h
index a4afad4ecab2..e316708f76bd 100644
--- a/drivers/message/fusion/mptbase.h
+++ b/drivers/message/fusion/mptbase.h
@@ -5,7 +5,7 @@
5 * LSIFC9xx/LSI409xx Fibre Channel 5 * LSIFC9xx/LSI409xx Fibre Channel
6 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 6 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
7 * 7 *
8 * Copyright (c) 1999-2005 LSI Logic Corporation 8 * Copyright (c) 1999-2007 LSI Logic Corporation
9 * (mailto:mpt_linux_developer@lsil.com) 9 * (mailto:mpt_linux_developer@lsil.com)
10 * 10 *
11 */ 11 */
@@ -72,11 +72,11 @@
72#endif 72#endif
73 73
74#ifndef COPYRIGHT 74#ifndef COPYRIGHT
75#define COPYRIGHT "Copyright (c) 1999-2005 " MODULEAUTHOR 75#define COPYRIGHT "Copyright (c) 1999-2007 " MODULEAUTHOR
76#endif 76#endif
77 77
78#define MPT_LINUX_VERSION_COMMON "3.04.02" 78#define MPT_LINUX_VERSION_COMMON "3.04.03"
79#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.04.02" 79#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.04.03"
80#define WHAT_MAGIC_STRING "@" "(" "#" ")" 80#define WHAT_MAGIC_STRING "@" "(" "#" ")"
81 81
82#define show_mptmod_ver(s,ver) \ 82#define show_mptmod_ver(s,ver) \
@@ -1059,7 +1059,7 @@ extern int mpt_stm_index; /* needed by mptstm.c */
1059/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 1059/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
1060#endif /* } __KERNEL__ */ 1060#endif /* } __KERNEL__ */
1061 1061
1062#if defined(__alpha__) || defined(__sparc_v9__) || defined(__ia64__) || defined(__x86_64__) 1062#if defined(__alpha__) || defined(__sparc_v9__) || defined(__ia64__) || defined(__x86_64__) || defined(__powerpc__)
1063#define CAST_U32_TO_PTR(x) ((void *)(u64)x) 1063#define CAST_U32_TO_PTR(x) ((void *)(u64)x)
1064#define CAST_PTR_TO_U32(x) ((u32)(u64)x) 1064#define CAST_PTR_TO_U32(x) ((u32)(u64)x)
1065#else 1065#else
diff --git a/drivers/message/fusion/mptctl.c b/drivers/message/fusion/mptctl.c
index 30975ccd9947..504632da4347 100644
--- a/drivers/message/fusion/mptctl.c
+++ b/drivers/message/fusion/mptctl.c
@@ -4,7 +4,7 @@
4 * For use with LSI Logic PCI chip/adapters 4 * For use with LSI Logic PCI chip/adapters
5 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 5 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
6 * 6 *
7 * Copyright (c) 1999-2005 LSI Logic Corporation 7 * Copyright (c) 1999-2007 LSI Logic Corporation
8 * (mailto:mpt_linux_developer@lsil.com) 8 * (mailto:mpt_linux_developer@lsil.com)
9 * 9 *
10 */ 10 */
@@ -66,7 +66,7 @@
66#include <scsi/scsi_host.h> 66#include <scsi/scsi_host.h>
67#include <scsi/scsi_tcq.h> 67#include <scsi/scsi_tcq.h>
68 68
69#define COPYRIGHT "Copyright (c) 1999-2005 LSI Logic Corporation" 69#define COPYRIGHT "Copyright (c) 1999-2007 LSI Logic Corporation"
70#define MODULEAUTHOR "LSI Logic Corporation" 70#define MODULEAUTHOR "LSI Logic Corporation"
71#include "mptbase.h" 71#include "mptbase.h"
72#include "mptctl.h" 72#include "mptctl.h"
@@ -79,6 +79,7 @@
79MODULE_AUTHOR(MODULEAUTHOR); 79MODULE_AUTHOR(MODULEAUTHOR);
80MODULE_DESCRIPTION(my_NAME); 80MODULE_DESCRIPTION(my_NAME);
81MODULE_LICENSE("GPL"); 81MODULE_LICENSE("GPL");
82MODULE_VERSION(my_VERSION);
82 83
83/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 84/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
84 85
diff --git a/drivers/message/fusion/mptctl.h b/drivers/message/fusion/mptctl.h
index 043941882c6e..e65a1cf5eb0b 100644
--- a/drivers/message/fusion/mptctl.h
+++ b/drivers/message/fusion/mptctl.h
@@ -5,7 +5,7 @@
5 * LSIFC9xx/LSI409xx Fibre Channel 5 * LSIFC9xx/LSI409xx Fibre Channel
6 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 6 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
7 * 7 *
8 * Copyright (c) 1999-2005 LSI Logic Corporation 8 * Copyright (c) 1999-2007 LSI Logic Corporation
9 * (mailto:mpt_linux_developer@lsil.com) 9 * (mailto:mpt_linux_developer@lsil.com)
10 * 10 *
11 */ 11 */
diff --git a/drivers/message/fusion/mptfc.c b/drivers/message/fusion/mptfc.c
index ca2f9107f145..c819c23b55b1 100644
--- a/drivers/message/fusion/mptfc.c
+++ b/drivers/message/fusion/mptfc.c
@@ -3,7 +3,7 @@
3 * For use with LSI Logic PCI chip/adapter(s) 3 * For use with LSI Logic PCI chip/adapter(s)
4 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 4 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
5 * 5 *
6 * Copyright (c) 1999-2005 LSI Logic Corporation 6 * Copyright (c) 1999-2007 LSI Logic Corporation
7 * (mailto:mpt_linux_developer@lsil.com) 7 * (mailto:mpt_linux_developer@lsil.com)
8 * 8 *
9 */ 9 */
@@ -75,6 +75,7 @@
75MODULE_AUTHOR(MODULEAUTHOR); 75MODULE_AUTHOR(MODULEAUTHOR);
76MODULE_DESCRIPTION(my_NAME); 76MODULE_DESCRIPTION(my_NAME);
77MODULE_LICENSE("GPL"); 77MODULE_LICENSE("GPL");
78MODULE_VERSION(my_VERSION);
78 79
79/* Command line args */ 80/* Command line args */
80#define MPTFC_DEV_LOSS_TMO (60) 81#define MPTFC_DEV_LOSS_TMO (60)
diff --git a/drivers/message/fusion/mptlan.c b/drivers/message/fusion/mptlan.c
index b7c4407c5e3f..2936204d8ad6 100644
--- a/drivers/message/fusion/mptlan.c
+++ b/drivers/message/fusion/mptlan.c
@@ -4,7 +4,7 @@
4 * For use with LSI Logic Fibre Channel PCI chip/adapters 4 * For use with LSI Logic Fibre Channel PCI chip/adapters
5 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 5 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
6 * 6 *
7 * Copyright (c) 2000-2005 LSI Logic Corporation 7 * Copyright (c) 2000-2007 LSI Logic Corporation
8 * 8 *
9 */ 9 */
10/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 10/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
@@ -56,9 +56,11 @@
56#include <linux/module.h> 56#include <linux/module.h>
57#include <linux/fs.h> 57#include <linux/fs.h>
58 58
59#define my_VERSION MPT_LINUX_VERSION_COMMON
59#define MYNAM "mptlan" 60#define MYNAM "mptlan"
60 61
61MODULE_LICENSE("GPL"); 62MODULE_LICENSE("GPL");
63MODULE_VERSION(my_VERSION);
62 64
63/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 65/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
64/* 66/*
diff --git a/drivers/message/fusion/mptlan.h b/drivers/message/fusion/mptlan.h
index 3726ecba5707..70ab75e7c263 100644
--- a/drivers/message/fusion/mptlan.h
+++ b/drivers/message/fusion/mptlan.h
@@ -4,7 +4,7 @@
4 * For use with LSI Logic Fibre Channel PCI chip/adapters 4 * For use with LSI Logic Fibre Channel PCI chip/adapters
5 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 5 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
6 * 6 *
7 * Copyright (c) 2000-2005 LSI Logic Corporation 7 * Copyright (c) 2000-2007 LSI Logic Corporation
8 * 8 *
9 */ 9 */
10/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 10/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
index 4f0c530e47b0..09e9a9d96410 100644
--- a/drivers/message/fusion/mptsas.c
+++ b/drivers/message/fusion/mptsas.c
@@ -3,9 +3,9 @@
3 * For use with LSI Logic PCI chip/adapter(s) 3 * For use with LSI Logic PCI chip/adapter(s)
4 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 4 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
5 * 5 *
6 * Copyright (c) 1999-2005 LSI Logic Corporation 6 * Copyright (c) 1999-2007 LSI Logic Corporation
7 * (mailto:mpt_linux_developer@lsil.com) 7 * (mailto:mpt_linux_developer@lsil.com)
8 * Copyright (c) 2005-2006 Dell 8 * Copyright (c) 2005-2007 Dell
9 */ 9 */
10/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 10/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
11/* 11/*
@@ -75,6 +75,7 @@
75MODULE_AUTHOR(MODULEAUTHOR); 75MODULE_AUTHOR(MODULEAUTHOR);
76MODULE_DESCRIPTION(my_NAME); 76MODULE_DESCRIPTION(my_NAME);
77MODULE_LICENSE("GPL"); 77MODULE_LICENSE("GPL");
78MODULE_VERSION(my_VERSION);
78 79
79static int mpt_pt_clear; 80static int mpt_pt_clear;
80module_param(mpt_pt_clear, int, 0); 81module_param(mpt_pt_clear, int, 0);
@@ -245,7 +246,8 @@ static void mptsas_print_device_pg0(SasDevicePage0_t *pg0)
245 printk("Parent Handle=0x%X\n" ,le16_to_cpu(pg0->ParentDevHandle)); 246 printk("Parent Handle=0x%X\n" ,le16_to_cpu(pg0->ParentDevHandle));
246 printk("Enclosure Handle=0x%X\n", le16_to_cpu(pg0->EnclosureHandle)); 247 printk("Enclosure Handle=0x%X\n", le16_to_cpu(pg0->EnclosureHandle));
247 printk("Slot=0x%X\n", le16_to_cpu(pg0->Slot)); 248 printk("Slot=0x%X\n", le16_to_cpu(pg0->Slot));
248 printk("SAS Address=0x%llX\n", le64_to_cpu(sas_address)); 249 printk("SAS Address=0x%llX\n", (unsigned long long)
250 le64_to_cpu(sas_address));
249 printk("Target ID=0x%X\n", pg0->TargetID); 251 printk("Target ID=0x%X\n", pg0->TargetID);
250 printk("Bus=0x%X\n", pg0->Bus); 252 printk("Bus=0x%X\n", pg0->Bus);
251 /* The PhyNum field specifies the PHY number of the parent 253 /* The PhyNum field specifies the PHY number of the parent
@@ -349,9 +351,9 @@ mptsas_port_delete(struct mptsas_portinfo_details * port_details)
349 phy_info = port_info->phy_info; 351 phy_info = port_info->phy_info;
350 352
351 dsaswideprintk((KERN_DEBUG "%s: [%p]: num_phys=%02d " 353 dsaswideprintk((KERN_DEBUG "%s: [%p]: num_phys=%02d "
352 "bitmask=0x%016llX\n", 354 "bitmask=0x%016llX\n", __FUNCTION__, port_details,
353 __FUNCTION__, port_details, port_details->num_phys, 355 port_details->num_phys, (unsigned long long)
354 port_details->phy_bitmask)); 356 port_details->phy_bitmask));
355 357
356 for (i = 0; i < port_info->num_phys; i++, phy_info++) { 358 for (i = 0; i < port_info->num_phys; i++, phy_info++) {
357 if(phy_info->port_details != port_details) 359 if(phy_info->port_details != port_details)
@@ -476,7 +478,7 @@ mptsas_setup_wide_ports(MPT_ADAPTER *ioc, struct mptsas_portinfo *port_info)
476 for (i = 0 ; i < port_info->num_phys ; i++, phy_info++) { 478 for (i = 0 ; i < port_info->num_phys ; i++, phy_info++) {
477 sas_address = phy_info->attached.sas_address; 479 sas_address = phy_info->attached.sas_address;
478 dsaswideprintk((KERN_DEBUG "phy_id=%d sas_address=0x%018llX\n", 480 dsaswideprintk((KERN_DEBUG "phy_id=%d sas_address=0x%018llX\n",
479 i, sas_address)); 481 i, (unsigned long long)sas_address));
480 if (!sas_address) 482 if (!sas_address)
481 continue; 483 continue;
482 port_details = phy_info->port_details; 484 port_details = phy_info->port_details;
@@ -495,8 +497,8 @@ mptsas_setup_wide_ports(MPT_ADAPTER *ioc, struct mptsas_portinfo *port_info)
495 (1 << phy_info->phy_id); 497 (1 << phy_info->phy_id);
496 phy_info->sas_port_add_phy=1; 498 phy_info->sas_port_add_phy=1;
497 dsaswideprintk((KERN_DEBUG "\t\tForming port\n\t\t" 499 dsaswideprintk((KERN_DEBUG "\t\tForming port\n\t\t"
498 "phy_id=%d sas_address=0x%018llX\n", 500 "phy_id=%d sas_address=0x%018llX\n",
499 i, sas_address)); 501 i, (unsigned long long)sas_address));
500 phy_info->port_details = port_details; 502 phy_info->port_details = port_details;
501 } 503 }
502 504
@@ -512,8 +514,9 @@ mptsas_setup_wide_ports(MPT_ADAPTER *ioc, struct mptsas_portinfo *port_info)
512 if (phy_info_cmp->port_details == port_details ) 514 if (phy_info_cmp->port_details == port_details )
513 continue; 515 continue;
514 dsaswideprintk((KERN_DEBUG 516 dsaswideprintk((KERN_DEBUG
515 "\t\tphy_id=%d sas_address=0x%018llX\n", 517 "\t\tphy_id=%d sas_address=0x%018llX\n",
516 j, phy_info_cmp->attached.sas_address)); 518 j, (unsigned long long)
519 phy_info_cmp->attached.sas_address));
517 if (phy_info_cmp->port_details) { 520 if (phy_info_cmp->port_details) {
518 port_details->rphy = 521 port_details->rphy =
519 mptsas_get_rphy(phy_info_cmp); 522 mptsas_get_rphy(phy_info_cmp);
@@ -546,11 +549,10 @@ mptsas_setup_wide_ports(MPT_ADAPTER *ioc, struct mptsas_portinfo *port_info)
546 if (!port_details) 549 if (!port_details)
547 continue; 550 continue;
548 dsaswideprintk((KERN_DEBUG 551 dsaswideprintk((KERN_DEBUG
549 "%s: [%p]: phy_id=%02d num_phys=%02d " 552 "%s: [%p]: phy_id=%02d num_phys=%02d "
550 "bitmask=0x%016llX\n", 553 "bitmask=0x%016llX\n", __FUNCTION__,
551 __FUNCTION__, 554 port_details, i, port_details->num_phys,
552 port_details, i, port_details->num_phys, 555 (unsigned long long)port_details->phy_bitmask));
553 port_details->phy_bitmask));
554 dsaswideprintk((KERN_DEBUG"\t\tport = %p rphy=%p\n", 556 dsaswideprintk((KERN_DEBUG"\t\tport = %p rphy=%p\n",
555 port_details->port, port_details->rphy)); 557 port_details->port, port_details->rphy));
556 } 558 }
@@ -2079,8 +2081,10 @@ mptsas_persist_clear_table(struct work_struct *work)
2079static void 2081static void
2080mptsas_reprobe_lun(struct scsi_device *sdev, void *data) 2082mptsas_reprobe_lun(struct scsi_device *sdev, void *data)
2081{ 2083{
2084 int rc;
2085
2082 sdev->no_uld_attach = data ? 1 : 0; 2086 sdev->no_uld_attach = data ? 1 : 0;
2083 scsi_device_reprobe(sdev); 2087 rc = scsi_device_reprobe(sdev);
2084} 2088}
2085 2089
2086static void 2090static void
diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
index 2c72c36b8171..f0cca3ea93b2 100644
--- a/drivers/message/fusion/mptscsih.c
+++ b/drivers/message/fusion/mptscsih.c
@@ -3,7 +3,7 @@
3 * For use with LSI Logic PCI chip/adapter(s) 3 * For use with LSI Logic PCI chip/adapter(s)
4 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 4 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
5 * 5 *
6 * Copyright (c) 1999-2005 LSI Logic Corporation 6 * Copyright (c) 1999-2007 LSI Logic Corporation
7 * (mailto:mpt_linux_developer@lsil.com) 7 * (mailto:mpt_linux_developer@lsil.com)
8 * 8 *
9 */ 9 */
@@ -76,6 +76,7 @@
76MODULE_AUTHOR(MODULEAUTHOR); 76MODULE_AUTHOR(MODULEAUTHOR);
77MODULE_DESCRIPTION(my_NAME); 77MODULE_DESCRIPTION(my_NAME);
78MODULE_LICENSE("GPL"); 78MODULE_LICENSE("GPL");
79MODULE_VERSION(my_VERSION);
79 80
80/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 81/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
81 82
@@ -701,6 +702,17 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
701 break; 702 break;
702 } 703 }
703 } 704 }
705 } else if (ioc->bus_type == FC) {
706 /*
707 * The FC IOC may kill a request for variety of
708 * reasons, some of which may be recovered by a
709 * retry, some which are unlikely to be
710 * recovered. Return DID_ERROR instead of
711 * DID_RESET to permit retry of the command,
712 * just not an infinite number of them
713 */
714 sc->result = DID_ERROR << 16;
715 break;
704 } 716 }
705 717
706 /* 718 /*
@@ -2688,7 +2700,8 @@ mptscsih_initTarget(MPT_SCSI_HOST *hd, VirtTarget *vtarget,
2688 struct scsi_device *sdev) 2700 struct scsi_device *sdev)
2689{ 2701{
2690 dinitprintk((MYIOC_s_INFO_FMT "initTarget bus=%d id=%d lun=%d hd=%p\n", 2702 dinitprintk((MYIOC_s_INFO_FMT "initTarget bus=%d id=%d lun=%d hd=%p\n",
2691 hd->ioc->name, vtarget->bus_id, vtarget->target_id, lun, hd)); 2703 hd->ioc->name, vtarget->bus_id, vtarget->target_id,
2704 sdev->lun, hd));
2692 2705
2693 /* Is LUN supported? If so, upper 2 bits will be 0 2706 /* Is LUN supported? If so, upper 2 bits will be 0
2694 * in first byte of inquiry data. 2707 * in first byte of inquiry data.
@@ -2770,7 +2783,7 @@ mptscsih_setTargetNegoParms(MPT_SCSI_HOST *hd, VirtTarget *target,
2770 else { 2783 else {
2771 factor = MPT_ULTRA320; 2784 factor = MPT_ULTRA320;
2772 if (scsi_device_qas(sdev)) { 2785 if (scsi_device_qas(sdev)) {
2773 ddvtprintk((KERN_INFO "Enabling QAS due to byte56=%02x on id=%d!\n", byte56, id)); 2786 ddvtprintk((KERN_INFO "Enabling QAS due to byte56=%02x on id=%d!\n", scsi_device_qas(sdev), id));
2774 noQas = 0; 2787 noQas = 0;
2775 } 2788 }
2776 if (sdev->type == TYPE_TAPE && 2789 if (sdev->type == TYPE_TAPE &&
diff --git a/drivers/message/fusion/mptscsih.h b/drivers/message/fusion/mptscsih.h
index 14a5b6c2e2bd..187c8af0890b 100644
--- a/drivers/message/fusion/mptscsih.h
+++ b/drivers/message/fusion/mptscsih.h
@@ -5,7 +5,7 @@
5 * LSIFC9xx/LSI409xx Fibre Channel 5 * LSIFC9xx/LSI409xx Fibre Channel
6 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 6 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
7 * 7 *
8 * Copyright (c) 1999-2005 LSI Logic Corporation 8 * Copyright (c) 1999-2007 LSI Logic Corporation
9 * (mailto:mpt_linux_developer@lsil.com) 9 * (mailto:mpt_linux_developer@lsil.com)
10 * 10 *
11 */ 11 */
diff --git a/drivers/message/fusion/mptspi.c b/drivers/message/fusion/mptspi.c
index 36641da59289..203c661d2c79 100644
--- a/drivers/message/fusion/mptspi.c
+++ b/drivers/message/fusion/mptspi.c
@@ -3,7 +3,7 @@
3 * For use with LSI Logic PCI chip/adapter(s) 3 * For use with LSI Logic PCI chip/adapter(s)
4 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 4 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
5 * 5 *
6 * Copyright (c) 1999-2005 LSI Logic Corporation 6 * Copyright (c) 1999-2007 LSI Logic Corporation
7 * (mailto:mpt_linux_developer@lsil.com) 7 * (mailto:mpt_linux_developer@lsil.com)
8 * 8 *
9 */ 9 */
@@ -77,6 +77,7 @@
77MODULE_AUTHOR(MODULEAUTHOR); 77MODULE_AUTHOR(MODULEAUTHOR);
78MODULE_DESCRIPTION(my_NAME); 78MODULE_DESCRIPTION(my_NAME);
79MODULE_LICENSE("GPL"); 79MODULE_LICENSE("GPL");
80MODULE_VERSION(my_VERSION);
80 81
81/* Command line args */ 82/* Command line args */
82static int mpt_saf_te = MPTSCSIH_SAF_TE; 83static int mpt_saf_te = MPTSCSIH_SAF_TE;
diff --git a/drivers/mmc/imxmmc.c b/drivers/mmc/imxmmc.c
index 06e7fcd19221..bfb9ff693208 100644
--- a/drivers/mmc/imxmmc.c
+++ b/drivers/mmc/imxmmc.c
@@ -351,9 +351,6 @@ static void imxmci_start_cmd(struct imxmci_host *host, struct mmc_command *cmd,
351 case MMC_RSP_R3: /* short */ 351 case MMC_RSP_R3: /* short */
352 cmdat |= CMD_DAT_CONT_RESPONSE_FORMAT_R3; 352 cmdat |= CMD_DAT_CONT_RESPONSE_FORMAT_R3;
353 break; 353 break;
354 case MMC_RSP_R6: /* short CRC */
355 cmdat |= CMD_DAT_CONT_RESPONSE_FORMAT_R6;
356 break;
357 default: 354 default:
358 break; 355 break;
359 } 356 }
diff --git a/drivers/mmc/omap.c b/drivers/mmc/omap.c
index 9488408308fb..d30540b27614 100644
--- a/drivers/mmc/omap.c
+++ b/drivers/mmc/omap.c
@@ -91,7 +91,6 @@
91 91
92 92
93#define DRIVER_NAME "mmci-omap" 93#define DRIVER_NAME "mmci-omap"
94#define RSP_TYPE(x) ((x) & ~(MMC_RSP_BUSY|MMC_RSP_OPCODE))
95 94
96/* Specifies how often in millisecs to poll for card status changes 95/* Specifies how often in millisecs to poll for card status changes
97 * when the cover switch is open */ 96 * when the cover switch is open */
@@ -204,18 +203,22 @@ mmc_omap_start_command(struct mmc_omap_host *host, struct mmc_command *cmd)
204 cmdtype = 0; 203 cmdtype = 0;
205 204
206 /* Our hardware needs to know exact type */ 205 /* Our hardware needs to know exact type */
207 switch (RSP_TYPE(mmc_resp_type(cmd))) { 206 switch (mmc_resp_type(cmd)) {
208 case RSP_TYPE(MMC_RSP_R1): 207 case MMC_RSP_NONE:
209 /* resp 1, resp 1b */ 208 break;
209 case MMC_RSP_R1:
210 case MMC_RSP_R1B:
211 /* resp 1, 1b, 6, 7 */
210 resptype = 1; 212 resptype = 1;
211 break; 213 break;
212 case RSP_TYPE(MMC_RSP_R2): 214 case MMC_RSP_R2:
213 resptype = 2; 215 resptype = 2;
214 break; 216 break;
215 case RSP_TYPE(MMC_RSP_R3): 217 case MMC_RSP_R3:
216 resptype = 3; 218 resptype = 3;
217 break; 219 break;
218 default: 220 default:
221 dev_err(mmc_dev(host->mmc), "Invalid response type: %04x\n", mmc_resp_type(cmd));
219 break; 222 break;
220 } 223 }
221 224
diff --git a/drivers/mmc/pxamci.c b/drivers/mmc/pxamci.c
index 45a9283ce498..6073d998b11f 100644
--- a/drivers/mmc/pxamci.c
+++ b/drivers/mmc/pxamci.c
@@ -171,7 +171,7 @@ static void pxamci_start_cmd(struct pxamci_host *host, struct mmc_command *cmd,
171 171
172#define RSP_TYPE(x) ((x) & ~(MMC_RSP_BUSY|MMC_RSP_OPCODE)) 172#define RSP_TYPE(x) ((x) & ~(MMC_RSP_BUSY|MMC_RSP_OPCODE))
173 switch (RSP_TYPE(mmc_resp_type(cmd))) { 173 switch (RSP_TYPE(mmc_resp_type(cmd))) {
174 case RSP_TYPE(MMC_RSP_R1): /* r1, r1b, r6 */ 174 case RSP_TYPE(MMC_RSP_R1): /* r1, r1b, r6, r7 */
175 cmdat |= CMDAT_RESP_SHORT; 175 cmdat |= CMDAT_RESP_SHORT;
176 break; 176 break;
177 case RSP_TYPE(MMC_RSP_R3): 177 case RSP_TYPE(MMC_RSP_R3):
diff --git a/drivers/mmc/tifm_sd.c b/drivers/mmc/tifm_sd.c
index f18ad998b3cb..fa4a52886b97 100644
--- a/drivers/mmc/tifm_sd.c
+++ b/drivers/mmc/tifm_sd.c
@@ -173,9 +173,6 @@ static unsigned int tifm_sd_op_flags(struct mmc_command *cmd)
173 case MMC_RSP_R3: 173 case MMC_RSP_R3:
174 rc |= TIFM_MMCSD_RSP_R3; 174 rc |= TIFM_MMCSD_RSP_R3;
175 break; 175 break;
176 case MMC_RSP_R6:
177 rc |= TIFM_MMCSD_RSP_R6;
178 break;
179 default: 176 default:
180 BUG(); 177 BUG();
181 } 178 }
diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
index a304b34c2632..26f75c299440 100644
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
@@ -164,9 +164,15 @@ config MTD_CHAR
164 memory chips, and also use ioctl() to obtain information about 164 memory chips, and also use ioctl() to obtain information about
165 the device, or to erase parts of it. 165 the device, or to erase parts of it.
166 166
167config MTD_BLKDEVS
168 tristate "Common interface to block layer for MTD 'translation layers'"
169 depends on MTD && BLOCK
170 default n
171
167config MTD_BLOCK 172config MTD_BLOCK
168 tristate "Caching block device access to MTD devices" 173 tristate "Caching block device access to MTD devices"
169 depends on MTD && BLOCK 174 depends on MTD && BLOCK
175 select MTD_BLKDEVS
170 ---help--- 176 ---help---
171 Although most flash chips have an erase size too large to be useful 177 Although most flash chips have an erase size too large to be useful
172 as block devices, it is possible to use MTD devices which are based 178 as block devices, it is possible to use MTD devices which are based
@@ -189,6 +195,7 @@ config MTD_BLOCK
189config MTD_BLOCK_RO 195config MTD_BLOCK_RO
190 tristate "Readonly block device access to MTD devices" 196 tristate "Readonly block device access to MTD devices"
191 depends on MTD_BLOCK!=y && MTD && BLOCK 197 depends on MTD_BLOCK!=y && MTD && BLOCK
198 select MTD_BLKDEVS
192 help 199 help
193 This allows you to mount read-only file systems (such as cramfs) 200 This allows you to mount read-only file systems (such as cramfs)
194 from an MTD device, without the overhead (and danger) of the caching 201 from an MTD device, without the overhead (and danger) of the caching
@@ -200,6 +207,7 @@ config MTD_BLOCK_RO
200config FTL 207config FTL
201 tristate "FTL (Flash Translation Layer) support" 208 tristate "FTL (Flash Translation Layer) support"
202 depends on MTD && BLOCK 209 depends on MTD && BLOCK
210 select MTD_BLKDEVS
203 ---help--- 211 ---help---
204 This provides support for the original Flash Translation Layer which 212 This provides support for the original Flash Translation Layer which
205 is part of the PCMCIA specification. It uses a kind of pseudo- 213 is part of the PCMCIA specification. It uses a kind of pseudo-
@@ -216,6 +224,7 @@ config FTL
216config NFTL 224config NFTL
217 tristate "NFTL (NAND Flash Translation Layer) support" 225 tristate "NFTL (NAND Flash Translation Layer) support"
218 depends on MTD && BLOCK 226 depends on MTD && BLOCK
227 select MTD_BLKDEVS
219 ---help--- 228 ---help---
220 This provides support for the NAND Flash Translation Layer which is 229 This provides support for the NAND Flash Translation Layer which is
221 used on M-Systems' DiskOnChip devices. It uses a kind of pseudo- 230 used on M-Systems' DiskOnChip devices. It uses a kind of pseudo-
@@ -239,6 +248,7 @@ config NFTL_RW
239config INFTL 248config INFTL
240 tristate "INFTL (Inverse NAND Flash Translation Layer) support" 249 tristate "INFTL (Inverse NAND Flash Translation Layer) support"
241 depends on MTD && BLOCK 250 depends on MTD && BLOCK
251 select MTD_BLKDEVS
242 ---help--- 252 ---help---
243 This provides support for the Inverse NAND Flash Translation 253 This provides support for the Inverse NAND Flash Translation
244 Layer which is used on M-Systems' newer DiskOnChip devices. It 254 Layer which is used on M-Systems' newer DiskOnChip devices. It
@@ -256,6 +266,7 @@ config INFTL
256config RFD_FTL 266config RFD_FTL
257 tristate "Resident Flash Disk (Flash Translation Layer) support" 267 tristate "Resident Flash Disk (Flash Translation Layer) support"
258 depends on MTD && BLOCK 268 depends on MTD && BLOCK
269 select MTD_BLKDEVS
259 ---help--- 270 ---help---
260 This provides support for the flash translation layer known 271 This provides support for the flash translation layer known
261 as the Resident Flash Disk (RFD), as used by the Embedded BIOS 272 as the Resident Flash Disk (RFD), as used by the Embedded BIOS
@@ -265,8 +276,8 @@ config RFD_FTL
265 276
266config SSFDC 277config SSFDC
267 tristate "NAND SSFDC (SmartMedia) read only translation layer" 278 tristate "NAND SSFDC (SmartMedia) read only translation layer"
268 depends on MTD 279 depends on MTD && BLOCK
269 default n 280 select MTD_BLKDEVS
270 help 281 help
271 This enables read only access to SmartMedia formatted NAND 282 This enables read only access to SmartMedia formatted NAND
272 flash. You can mount it with FAT file system. 283 flash. You can mount it with FAT file system.
diff --git a/drivers/mtd/Makefile b/drivers/mtd/Makefile
index 1e36b9aed98b..c130e6261adf 100644
--- a/drivers/mtd/Makefile
+++ b/drivers/mtd/Makefile
@@ -15,13 +15,14 @@ obj-$(CONFIG_MTD_AFS_PARTS) += afs.o
15 15
16# 'Users' - code which presents functionality to userspace. 16# 'Users' - code which presents functionality to userspace.
17obj-$(CONFIG_MTD_CHAR) += mtdchar.o 17obj-$(CONFIG_MTD_CHAR) += mtdchar.o
18obj-$(CONFIG_MTD_BLOCK) += mtdblock.o mtd_blkdevs.o 18obj-$(CONFIG_MTD_BLKDEVS) += mtd_blkdevs.o
19obj-$(CONFIG_MTD_BLOCK_RO) += mtdblock_ro.o mtd_blkdevs.o 19obj-$(CONFIG_MTD_BLOCK) += mtdblock.o
20obj-$(CONFIG_FTL) += ftl.o mtd_blkdevs.o 20obj-$(CONFIG_MTD_BLOCK_RO) += mtdblock_ro.o
21obj-$(CONFIG_NFTL) += nftl.o mtd_blkdevs.o 21obj-$(CONFIG_FTL) += ftl.o
22obj-$(CONFIG_INFTL) += inftl.o mtd_blkdevs.o 22obj-$(CONFIG_NFTL) += nftl.o
23obj-$(CONFIG_RFD_FTL) += rfd_ftl.o mtd_blkdevs.o 23obj-$(CONFIG_INFTL) += inftl.o
24obj-$(CONFIG_SSFDC) += ssfdc.o mtd_blkdevs.o 24obj-$(CONFIG_RFD_FTL) += rfd_ftl.o
25obj-$(CONFIG_SSFDC) += ssfdc.o
25 26
26nftl-objs := nftlcore.o nftlmount.o 27nftl-objs := nftlcore.o nftlmount.o
27inftl-objs := inftlcore.o inftlmount.o 28inftl-objs := inftlcore.o inftlmount.o
diff --git a/drivers/mtd/afs.c b/drivers/mtd/afs.c
index 6a45be04564b..52d51eb91c16 100644
--- a/drivers/mtd/afs.c
+++ b/drivers/mtd/afs.c
@@ -207,11 +207,10 @@ static int parse_afs_partitions(struct mtd_info *mtd,
207 if (!sz) 207 if (!sz)
208 return ret; 208 return ret;
209 209
210 parts = kmalloc(sz, GFP_KERNEL); 210 parts = kzalloc(sz, GFP_KERNEL);
211 if (!parts) 211 if (!parts)
212 return -ENOMEM; 212 return -ENOMEM;
213 213
214 memset(parts, 0, sz);
215 str = (char *)(parts + idx); 214 str = (char *)(parts + idx);
216 215
217 /* 216 /*
diff --git a/drivers/mtd/chips/amd_flash.c b/drivers/mtd/chips/amd_flash.c
index 16eaca69fb5a..e7999f15d85a 100644
--- a/drivers/mtd/chips/amd_flash.c
+++ b/drivers/mtd/chips/amd_flash.c
@@ -643,13 +643,12 @@ static struct mtd_info *amd_flash_probe(struct map_info *map)
643 int reg_idx; 643 int reg_idx;
644 int offset; 644 int offset;
645 645
646 mtd = (struct mtd_info*)kmalloc(sizeof(*mtd), GFP_KERNEL); 646 mtd = kzalloc(sizeof(*mtd), GFP_KERNEL);
647 if (!mtd) { 647 if (!mtd) {
648 printk(KERN_WARNING 648 printk(KERN_WARNING
649 "%s: kmalloc failed for info structure\n", map->name); 649 "%s: kmalloc failed for info structure\n", map->name);
650 return NULL; 650 return NULL;
651 } 651 }
652 memset(mtd, 0, sizeof(*mtd));
653 mtd->priv = map; 652 mtd->priv = map;
654 653
655 memset(&temp, 0, sizeof(temp)); 654 memset(&temp, 0, sizeof(temp));
diff --git a/drivers/mtd/chips/cfi_cmdset_0001.c b/drivers/mtd/chips/cfi_cmdset_0001.c
index 296159ec5189..f69184a92eb2 100644
--- a/drivers/mtd/chips/cfi_cmdset_0001.c
+++ b/drivers/mtd/chips/cfi_cmdset_0001.c
@@ -337,12 +337,11 @@ struct mtd_info *cfi_cmdset_0001(struct map_info *map, int primary)
337 struct mtd_info *mtd; 337 struct mtd_info *mtd;
338 int i; 338 int i;
339 339
340 mtd = kmalloc(sizeof(*mtd), GFP_KERNEL); 340 mtd = kzalloc(sizeof(*mtd), GFP_KERNEL);
341 if (!mtd) { 341 if (!mtd) {
342 printk(KERN_ERR "Failed to allocate memory for MTD device\n"); 342 printk(KERN_ERR "Failed to allocate memory for MTD device\n");
343 return NULL; 343 return NULL;
344 } 344 }
345 memset(mtd, 0, sizeof(*mtd));
346 mtd->priv = map; 345 mtd->priv = map;
347 mtd->type = MTD_NORFLASH; 346 mtd->type = MTD_NORFLASH;
348 347
@@ -2224,6 +2223,8 @@ static int cfi_intelext_suspend(struct mtd_info *mtd)
2224 case FL_CFI_QUERY: 2223 case FL_CFI_QUERY:
2225 case FL_JEDEC_QUERY: 2224 case FL_JEDEC_QUERY:
2226 if (chip->oldstate == FL_READY) { 2225 if (chip->oldstate == FL_READY) {
2226 /* place the chip in a known state before suspend */
2227 map_write(map, CMD(0xFF), cfi->chips[i].start);
2227 chip->oldstate = chip->state; 2228 chip->oldstate = chip->state;
2228 chip->state = FL_PM_SUSPENDED; 2229 chip->state = FL_PM_SUSPENDED;
2229 /* No need to wake_up() on this state change - 2230 /* No need to wake_up() on this state change -
diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c
index 702ae4cd8691..e3acd398fb37 100644
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
@@ -48,6 +48,7 @@
48#define MANUFACTURER_ATMEL 0x001F 48#define MANUFACTURER_ATMEL 0x001F
49#define MANUFACTURER_SST 0x00BF 49#define MANUFACTURER_SST 0x00BF
50#define SST49LF004B 0x0060 50#define SST49LF004B 0x0060
51#define SST49LF040B 0x0050
51#define SST49LF008A 0x005a 52#define SST49LF008A 0x005a
52#define AT49BV6416 0x00d6 53#define AT49BV6416 0x00d6
53 54
@@ -233,6 +234,7 @@ static struct cfi_fixup cfi_fixup_table[] = {
233}; 234};
234static struct cfi_fixup jedec_fixup_table[] = { 235static struct cfi_fixup jedec_fixup_table[] = {
235 { MANUFACTURER_SST, SST49LF004B, fixup_use_fwh_lock, NULL, }, 236 { MANUFACTURER_SST, SST49LF004B, fixup_use_fwh_lock, NULL, },
237 { MANUFACTURER_SST, SST49LF040B, fixup_use_fwh_lock, NULL, },
236 { MANUFACTURER_SST, SST49LF008A, fixup_use_fwh_lock, NULL, }, 238 { MANUFACTURER_SST, SST49LF008A, fixup_use_fwh_lock, NULL, },
237 { 0, 0, NULL, NULL } 239 { 0, 0, NULL, NULL }
238}; 240};
@@ -255,12 +257,11 @@ struct mtd_info *cfi_cmdset_0002(struct map_info *map, int primary)
255 struct mtd_info *mtd; 257 struct mtd_info *mtd;
256 int i; 258 int i;
257 259
258 mtd = kmalloc(sizeof(*mtd), GFP_KERNEL); 260 mtd = kzalloc(sizeof(*mtd), GFP_KERNEL);
259 if (!mtd) { 261 if (!mtd) {
260 printk(KERN_WARNING "Failed to allocate memory for MTD device\n"); 262 printk(KERN_WARNING "Failed to allocate memory for MTD device\n");
261 return NULL; 263 return NULL;
262 } 264 }
263 memset(mtd, 0, sizeof(*mtd));
264 mtd->priv = map; 265 mtd->priv = map;
265 mtd->type = MTD_NORFLASH; 266 mtd->type = MTD_NORFLASH;
266 267
@@ -519,10 +520,12 @@ static int get_chip(struct map_info *map, struct flchip *chip, unsigned long adr
519 if (mode == FL_WRITING) /* FIXME: Erase-suspend-program appears broken. */ 520 if (mode == FL_WRITING) /* FIXME: Erase-suspend-program appears broken. */
520 goto sleep; 521 goto sleep;
521 522
522 if (!(mode == FL_READY || mode == FL_POINT 523 if (!( mode == FL_READY
524 || mode == FL_POINT
523 || !cfip 525 || !cfip
524 || (mode == FL_WRITING && (cfip->EraseSuspend & 0x2)) 526 || (mode == FL_WRITING && (cfip->EraseSuspend & 0x2))
525 || (mode == FL_WRITING && (cfip->EraseSuspend & 0x1)))) 527 || (mode == FL_WRITING && (cfip->EraseSuspend & 0x1)
528 )))
526 goto sleep; 529 goto sleep;
527 530
528 /* We could check to see if we're trying to access the sector 531 /* We could check to see if we're trying to access the sector
diff --git a/drivers/mtd/chips/cfi_cmdset_0020.c b/drivers/mtd/chips/cfi_cmdset_0020.c
index fae70a5db540..d56849f5f107 100644
--- a/drivers/mtd/chips/cfi_cmdset_0020.c
+++ b/drivers/mtd/chips/cfi_cmdset_0020.c
@@ -172,7 +172,7 @@ static struct mtd_info *cfi_staa_setup(struct map_info *map)
172 int i,j; 172 int i,j;
173 unsigned long devsize = (1<<cfi->cfiq->DevSize) * cfi->interleave; 173 unsigned long devsize = (1<<cfi->cfiq->DevSize) * cfi->interleave;
174 174
175 mtd = kmalloc(sizeof(*mtd), GFP_KERNEL); 175 mtd = kzalloc(sizeof(*mtd), GFP_KERNEL);
176 //printk(KERN_DEBUG "number of CFI chips: %d\n", cfi->numchips); 176 //printk(KERN_DEBUG "number of CFI chips: %d\n", cfi->numchips);
177 177
178 if (!mtd) { 178 if (!mtd) {
@@ -181,7 +181,6 @@ static struct mtd_info *cfi_staa_setup(struct map_info *map)
181 return NULL; 181 return NULL;
182 } 182 }
183 183
184 memset(mtd, 0, sizeof(*mtd));
185 mtd->priv = map; 184 mtd->priv = map;
186 mtd->type = MTD_NORFLASH; 185 mtd->type = MTD_NORFLASH;
187 mtd->size = devsize * cfi->numchips; 186 mtd->size = devsize * cfi->numchips;
diff --git a/drivers/mtd/chips/gen_probe.c b/drivers/mtd/chips/gen_probe.c
index cdb0f590b40c..2eb696d7b97b 100644
--- a/drivers/mtd/chips/gen_probe.c
+++ b/drivers/mtd/chips/gen_probe.c
@@ -40,7 +40,7 @@ struct mtd_info *mtd_do_chip_probe(struct map_info *map, struct chip_probe *cp)
40 if (mtd) { 40 if (mtd) {
41 if (mtd->size > map->size) { 41 if (mtd->size > map->size) {
42 printk(KERN_WARNING "Reducing visibility of %ldKiB chip to %ldKiB\n", 42 printk(KERN_WARNING "Reducing visibility of %ldKiB chip to %ldKiB\n",
43 (unsigned long)mtd->size >> 10, 43 (unsigned long)mtd->size >> 10,
44 (unsigned long)map->size >> 10); 44 (unsigned long)map->size >> 10);
45 mtd->size = map->size; 45 mtd->size = map->size;
46 } 46 }
@@ -113,13 +113,12 @@ static struct cfi_private *genprobe_ident_chips(struct map_info *map, struct chi
113 } 113 }
114 114
115 mapsize = (max_chips + BITS_PER_LONG-1) / BITS_PER_LONG; 115 mapsize = (max_chips + BITS_PER_LONG-1) / BITS_PER_LONG;
116 chip_map = kmalloc(mapsize, GFP_KERNEL); 116 chip_map = kzalloc(mapsize, GFP_KERNEL);
117 if (!chip_map) { 117 if (!chip_map) {
118 printk(KERN_WARNING "%s: kmalloc failed for CFI chip map\n", map->name); 118 printk(KERN_WARNING "%s: kmalloc failed for CFI chip map\n", map->name);
119 kfree(cfi.cfiq); 119 kfree(cfi.cfiq);
120 return NULL; 120 return NULL;
121 } 121 }
122 memset (chip_map, 0, mapsize);
123 122
124 set_bit(0, chip_map); /* Mark first chip valid */ 123 set_bit(0, chip_map); /* Mark first chip valid */
125 124
diff --git a/drivers/mtd/chips/jedec.c b/drivers/mtd/chips/jedec.c
index 2c3f019197c1..14e57b2bf842 100644
--- a/drivers/mtd/chips/jedec.c
+++ b/drivers/mtd/chips/jedec.c
@@ -116,11 +116,10 @@ static struct mtd_info *jedec_probe(struct map_info *map)
116 char Part[200]; 116 char Part[200];
117 memset(&priv,0,sizeof(priv)); 117 memset(&priv,0,sizeof(priv));
118 118
119 MTD = kmalloc(sizeof(struct mtd_info) + sizeof(struct jedec_private), GFP_KERNEL); 119 MTD = kzalloc(sizeof(struct mtd_info) + sizeof(struct jedec_private), GFP_KERNEL);
120 if (!MTD) 120 if (!MTD)
121 return NULL; 121 return NULL;
122 122
123 memset(MTD, 0, sizeof(struct mtd_info) + sizeof(struct jedec_private));
124 priv = (struct jedec_private *)&MTD[1]; 123 priv = (struct jedec_private *)&MTD[1];
125 124
126 my_bank_size = map->size; 125 my_bank_size = map->size;
diff --git a/drivers/mtd/chips/jedec_probe.c b/drivers/mtd/chips/jedec_probe.c
index 1154dac715aa..58e561e87699 100644
--- a/drivers/mtd/chips/jedec_probe.c
+++ b/drivers/mtd/chips/jedec_probe.c
@@ -154,6 +154,7 @@
154#define SST39SF010A 0x00B5 154#define SST39SF010A 0x00B5
155#define SST39SF020A 0x00B6 155#define SST39SF020A 0x00B6
156#define SST49LF004B 0x0060 156#define SST49LF004B 0x0060
157#define SST49LF040B 0x0050
157#define SST49LF008A 0x005a 158#define SST49LF008A 0x005a
158#define SST49LF030A 0x001C 159#define SST49LF030A 0x001C
159#define SST49LF040A 0x0051 160#define SST49LF040A 0x0051
@@ -1401,6 +1402,20 @@ static const struct amd_flash_info jedec_table[] = {
1401 } 1402 }
1402 }, { 1403 }, {
1403 .mfr_id = MANUFACTURER_SST, 1404 .mfr_id = MANUFACTURER_SST,
1405 .dev_id = SST49LF040B,
1406 .name = "SST 49LF040B",
1407 .uaddr = {
1408 [0] = MTD_UADDR_0x5555_0x2AAA /* x8 */
1409 },
1410 .DevSize = SIZE_512KiB,
1411 .CmdSet = P_ID_AMD_STD,
1412 .NumEraseRegions= 1,
1413 .regions = {
1414 ERASEINFO(0x01000,128),
1415 }
1416 }, {
1417
1418 .mfr_id = MANUFACTURER_SST,
1404 .dev_id = SST49LF004B, 1419 .dev_id = SST49LF004B,
1405 .name = "SST 49LF004B", 1420 .name = "SST 49LF004B",
1406 .uaddr = { 1421 .uaddr = {
@@ -1874,7 +1889,7 @@ static int cfi_jedec_setup(struct cfi_private *p_cfi, int index)
1874 1889
1875 1890
1876/* 1891/*
1877 * There is a BIG problem properly ID'ing the JEDEC devic and guaranteeing 1892 * There is a BIG problem properly ID'ing the JEDEC device and guaranteeing
1878 * the mapped address, unlock addresses, and proper chip ID. This function 1893 * the mapped address, unlock addresses, and proper chip ID. This function
1879 * attempts to minimize errors. It is doubtfull that this probe will ever 1894 * attempts to minimize errors. It is doubtfull that this probe will ever
1880 * be perfect - consequently there should be some module parameters that 1895 * be perfect - consequently there should be some module parameters that
diff --git a/drivers/mtd/chips/map_absent.c b/drivers/mtd/chips/map_absent.c
index ac01a949b687..fc478c0f93f5 100644
--- a/drivers/mtd/chips/map_absent.c
+++ b/drivers/mtd/chips/map_absent.c
@@ -47,13 +47,11 @@ static struct mtd_info *map_absent_probe(struct map_info *map)
47{ 47{
48 struct mtd_info *mtd; 48 struct mtd_info *mtd;
49 49
50 mtd = kmalloc(sizeof(*mtd), GFP_KERNEL); 50 mtd = kzalloc(sizeof(*mtd), GFP_KERNEL);
51 if (!mtd) { 51 if (!mtd) {
52 return NULL; 52 return NULL;
53 } 53 }
54 54
55 memset(mtd, 0, sizeof(*mtd));
56
57 map->fldrv = &map_absent_chipdrv; 55 map->fldrv = &map_absent_chipdrv;
58 mtd->priv = map; 56 mtd->priv = map;
59 mtd->name = map->name; 57 mtd->name = map->name;
diff --git a/drivers/mtd/chips/map_ram.c b/drivers/mtd/chips/map_ram.c
index 3a66680abfd0..5cb6d5263661 100644
--- a/drivers/mtd/chips/map_ram.c
+++ b/drivers/mtd/chips/map_ram.c
@@ -55,12 +55,10 @@ static struct mtd_info *map_ram_probe(struct map_info *map)
55#endif 55#endif
56 /* OK. It seems to be RAM. */ 56 /* OK. It seems to be RAM. */
57 57
58 mtd = kmalloc(sizeof(*mtd), GFP_KERNEL); 58 mtd = kzalloc(sizeof(*mtd), GFP_KERNEL);
59 if (!mtd) 59 if (!mtd)
60 return NULL; 60 return NULL;
61 61
62 memset(mtd, 0, sizeof(*mtd));
63
64 map->fldrv = &mapram_chipdrv; 62 map->fldrv = &mapram_chipdrv;
65 mtd->priv = map; 63 mtd->priv = map;
66 mtd->name = map->name; 64 mtd->name = map->name;
diff --git a/drivers/mtd/chips/map_rom.c b/drivers/mtd/chips/map_rom.c
index 1b328b1378fd..cb27f855074c 100644
--- a/drivers/mtd/chips/map_rom.c
+++ b/drivers/mtd/chips/map_rom.c
@@ -31,12 +31,10 @@ static struct mtd_info *map_rom_probe(struct map_info *map)
31{ 31{
32 struct mtd_info *mtd; 32 struct mtd_info *mtd;
33 33
34 mtd = kmalloc(sizeof(*mtd), GFP_KERNEL); 34 mtd = kzalloc(sizeof(*mtd), GFP_KERNEL);
35 if (!mtd) 35 if (!mtd)
36 return NULL; 36 return NULL;
37 37
38 memset(mtd, 0, sizeof(*mtd));
39
40 map->fldrv = &maprom_chipdrv; 38 map->fldrv = &maprom_chipdrv;
41 mtd->priv = map; 39 mtd->priv = map;
42 mtd->name = map->name; 40 mtd->name = map->name;
diff --git a/drivers/mtd/chips/sharp.c b/drivers/mtd/chips/sharp.c
index 967abbecdff9..c9cd3d21ccfa 100644
--- a/drivers/mtd/chips/sharp.c
+++ b/drivers/mtd/chips/sharp.c
@@ -112,18 +112,16 @@ static struct mtd_info *sharp_probe(struct map_info *map)
112 struct sharp_info *sharp = NULL; 112 struct sharp_info *sharp = NULL;
113 int width; 113 int width;
114 114
115 mtd = kmalloc(sizeof(*mtd), GFP_KERNEL); 115 mtd = kzalloc(sizeof(*mtd), GFP_KERNEL);
116 if(!mtd) 116 if(!mtd)
117 return NULL; 117 return NULL;
118 118
119 sharp = kmalloc(sizeof(*sharp), GFP_KERNEL); 119 sharp = kzalloc(sizeof(*sharp), GFP_KERNEL);
120 if(!sharp) { 120 if(!sharp) {
121 kfree(mtd); 121 kfree(mtd);
122 return NULL; 122 return NULL;
123 } 123 }
124 124
125 memset(mtd, 0, sizeof(*mtd));
126
127 width = sharp_probe_map(map,mtd); 125 width = sharp_probe_map(map,mtd);
128 if(!width){ 126 if(!width){
129 kfree(mtd); 127 kfree(mtd);
@@ -143,7 +141,6 @@ static struct mtd_info *sharp_probe(struct map_info *map)
143 mtd->writesize = 1; 141 mtd->writesize = 1;
144 mtd->name = map->name; 142 mtd->name = map->name;
145 143
146 memset(sharp, 0, sizeof(*sharp));
147 sharp->chipshift = 23; 144 sharp->chipshift = 23;
148 sharp->numchips = 1; 145 sharp->numchips = 1;
149 sharp->chips[0].start = 0; 146 sharp->chips[0].start = 0;
diff --git a/drivers/mtd/cmdlinepart.c b/drivers/mtd/cmdlinepart.c
index a7a7bfe33879..23fab14f1637 100644
--- a/drivers/mtd/cmdlinepart.c
+++ b/drivers/mtd/cmdlinepart.c
@@ -163,13 +163,12 @@ static struct mtd_partition * newpart(char *s,
163 *num_parts = this_part + 1; 163 *num_parts = this_part + 1;
164 alloc_size = *num_parts * sizeof(struct mtd_partition) + 164 alloc_size = *num_parts * sizeof(struct mtd_partition) +
165 extra_mem_size; 165 extra_mem_size;
166 parts = kmalloc(alloc_size, GFP_KERNEL); 166 parts = kzalloc(alloc_size, GFP_KERNEL);
167 if (!parts) 167 if (!parts)
168 { 168 {
169 printk(KERN_ERR ERRP "out of memory\n"); 169 printk(KERN_ERR ERRP "out of memory\n");
170 return NULL; 170 return NULL;
171 } 171 }
172 memset(parts, 0, alloc_size);
173 extra_mem = (unsigned char *)(parts + *num_parts); 172 extra_mem = (unsigned char *)(parts + *num_parts);
174 } 173 }
175 /* enter this partition (offset will be calculated later if it is zero at this point) */ 174 /* enter this partition (offset will be calculated later if it is zero at this point) */
@@ -346,7 +345,7 @@ static int parse_cmdline_partitions(struct mtd_info *master,
346 * 345 *
347 * This function needs to be visible for bootloaders. 346 * This function needs to be visible for bootloaders.
348 */ 347 */
349int mtdpart_setup(char *s) 348static int mtdpart_setup(char *s)
350{ 349{
351 cmdline = s; 350 cmdline = s;
352 return 1; 351 return 1;
diff --git a/drivers/mtd/devices/block2mtd.c b/drivers/mtd/devices/block2mtd.c
index 401c6a294baa..6d917a4daa9d 100644
--- a/drivers/mtd/devices/block2mtd.c
+++ b/drivers/mtd/devices/block2mtd.c
@@ -295,10 +295,9 @@ static struct block2mtd_dev *add_device(char *devname, int erase_size)
295 if (!devname) 295 if (!devname)
296 return NULL; 296 return NULL;
297 297
298 dev = kmalloc(sizeof(struct block2mtd_dev), GFP_KERNEL); 298 dev = kzalloc(sizeof(struct block2mtd_dev), GFP_KERNEL);
299 if (!dev) 299 if (!dev)
300 return NULL; 300 return NULL;
301 memset(dev, 0, sizeof(*dev));
302 301
303 /* Get a handle on the device */ 302 /* Get a handle on the device */
304 bdev = open_bdev_excl(devname, O_RDWR, NULL); 303 bdev = open_bdev_excl(devname, O_RDWR, NULL);
diff --git a/drivers/mtd/devices/ms02-nv.c b/drivers/mtd/devices/ms02-nv.c
index 08dfb899b272..9cff119a2024 100644
--- a/drivers/mtd/devices/ms02-nv.c
+++ b/drivers/mtd/devices/ms02-nv.c
@@ -131,11 +131,10 @@ static int __init ms02nv_init_one(ulong addr)
131 int ret = -ENODEV; 131 int ret = -ENODEV;
132 132
133 /* The module decodes 8MiB of address space. */ 133 /* The module decodes 8MiB of address space. */
134 mod_res = kmalloc(sizeof(*mod_res), GFP_KERNEL); 134 mod_res = kzalloc(sizeof(*mod_res), GFP_KERNEL);
135 if (!mod_res) 135 if (!mod_res)
136 return -ENOMEM; 136 return -ENOMEM;
137 137
138 memset(mod_res, 0, sizeof(*mod_res));
139 mod_res->name = ms02nv_name; 138 mod_res->name = ms02nv_name;
140 mod_res->start = addr; 139 mod_res->start = addr;
141 mod_res->end = addr + MS02NV_SLOT_SIZE - 1; 140 mod_res->end = addr + MS02NV_SLOT_SIZE - 1;
@@ -153,24 +152,21 @@ static int __init ms02nv_init_one(ulong addr)
153 } 152 }
154 153
155 ret = -ENOMEM; 154 ret = -ENOMEM;
156 mtd = kmalloc(sizeof(*mtd), GFP_KERNEL); 155 mtd = kzalloc(sizeof(*mtd), GFP_KERNEL);
157 if (!mtd) 156 if (!mtd)
158 goto err_out_mod_res_rel; 157 goto err_out_mod_res_rel;
159 memset(mtd, 0, sizeof(*mtd)); 158 mp = kzalloc(sizeof(*mp), GFP_KERNEL);
160 mp = kmalloc(sizeof(*mp), GFP_KERNEL);
161 if (!mp) 159 if (!mp)
162 goto err_out_mtd; 160 goto err_out_mtd;
163 memset(mp, 0, sizeof(*mp));
164 161
165 mtd->priv = mp; 162 mtd->priv = mp;
166 mp->resource.module = mod_res; 163 mp->resource.module = mod_res;
167 164
168 /* Firmware's diagnostic NVRAM area. */ 165 /* Firmware's diagnostic NVRAM area. */
169 diag_res = kmalloc(sizeof(*diag_res), GFP_KERNEL); 166 diag_res = kzalloc(sizeof(*diag_res), GFP_KERNEL);
170 if (!diag_res) 167 if (!diag_res)
171 goto err_out_mp; 168 goto err_out_mp;
172 169
173 memset(diag_res, 0, sizeof(*diag_res));
174 diag_res->name = ms02nv_res_diag_ram; 170 diag_res->name = ms02nv_res_diag_ram;
175 diag_res->start = addr; 171 diag_res->start = addr;
176 diag_res->end = addr + MS02NV_RAM - 1; 172 diag_res->end = addr + MS02NV_RAM - 1;
@@ -180,11 +176,10 @@ static int __init ms02nv_init_one(ulong addr)
180 mp->resource.diag_ram = diag_res; 176 mp->resource.diag_ram = diag_res;
181 177
182 /* User-available general-purpose NVRAM area. */ 178 /* User-available general-purpose NVRAM area. */
183 user_res = kmalloc(sizeof(*user_res), GFP_KERNEL); 179 user_res = kzalloc(sizeof(*user_res), GFP_KERNEL);
184 if (!user_res) 180 if (!user_res)
185 goto err_out_diag_res; 181 goto err_out_diag_res;
186 182
187 memset(user_res, 0, sizeof(*user_res));
188 user_res->name = ms02nv_res_user_ram; 183 user_res->name = ms02nv_res_user_ram;
189 user_res->start = addr + MS02NV_RAM; 184 user_res->start = addr + MS02NV_RAM;
190 user_res->end = addr + size - 1; 185 user_res->end = addr + size - 1;
@@ -194,11 +189,10 @@ static int __init ms02nv_init_one(ulong addr)
194 mp->resource.user_ram = user_res; 189 mp->resource.user_ram = user_res;
195 190
196 /* Control and status register. */ 191 /* Control and status register. */
197 csr_res = kmalloc(sizeof(*csr_res), GFP_KERNEL); 192 csr_res = kzalloc(sizeof(*csr_res), GFP_KERNEL);
198 if (!csr_res) 193 if (!csr_res)
199 goto err_out_user_res; 194 goto err_out_user_res;
200 195
201 memset(csr_res, 0, sizeof(*csr_res));
202 csr_res->name = ms02nv_res_csr; 196 csr_res->name = ms02nv_res_csr;
203 csr_res->start = addr + MS02NV_CSR; 197 csr_res->start = addr + MS02NV_CSR;
204 csr_res->end = addr + MS02NV_CSR + 3; 198 csr_res->end = addr + MS02NV_CSR + 3;
diff --git a/drivers/mtd/devices/mtd_dataflash.c b/drivers/mtd/devices/mtd_dataflash.c
index 910e4061dfd2..a987e917f4e0 100644
--- a/drivers/mtd/devices/mtd_dataflash.c
+++ b/drivers/mtd/devices/mtd_dataflash.c
@@ -480,7 +480,7 @@ add_dataflash(struct spi_device *spi, char *name,
480 device->writesize = pagesize; 480 device->writesize = pagesize;
481 device->owner = THIS_MODULE; 481 device->owner = THIS_MODULE;
482 device->type = MTD_DATAFLASH; 482 device->type = MTD_DATAFLASH;
483 device->flags = MTD_CAP_NORFLASH; 483 device->flags = MTD_WRITEABLE;
484 device->erase = dataflash_erase; 484 device->erase = dataflash_erase;
485 device->read = dataflash_read; 485 device->read = dataflash_read;
486 device->write = dataflash_write; 486 device->write = dataflash_write;
diff --git a/drivers/mtd/devices/phram.c b/drivers/mtd/devices/phram.c
index 6c7337f9ebbb..56cc1ca7ffd5 100644
--- a/drivers/mtd/devices/phram.c
+++ b/drivers/mtd/devices/phram.c
@@ -126,12 +126,10 @@ static int register_device(char *name, unsigned long start, unsigned long len)
126 struct phram_mtd_list *new; 126 struct phram_mtd_list *new;
127 int ret = -ENOMEM; 127 int ret = -ENOMEM;
128 128
129 new = kmalloc(sizeof(*new), GFP_KERNEL); 129 new = kzalloc(sizeof(*new), GFP_KERNEL);
130 if (!new) 130 if (!new)
131 goto out0; 131 goto out0;
132 132
133 memset(new, 0, sizeof(*new));
134
135 ret = -EIO; 133 ret = -EIO;
136 new->mtd.priv = ioremap(start, len); 134 new->mtd.priv = ioremap(start, len);
137 if (!new->mtd.priv) { 135 if (!new->mtd.priv) {
diff --git a/drivers/mtd/devices/slram.c b/drivers/mtd/devices/slram.c
index 542a0c009006..5f49248a4856 100644
--- a/drivers/mtd/devices/slram.c
+++ b/drivers/mtd/devices/slram.c
@@ -168,19 +168,16 @@ static int register_device(char *name, unsigned long start, unsigned long length
168 E("slram: Cannot allocate new MTD device.\n"); 168 E("slram: Cannot allocate new MTD device.\n");
169 return(-ENOMEM); 169 return(-ENOMEM);
170 } 170 }
171 (*curmtd)->mtdinfo = kmalloc(sizeof(struct mtd_info), GFP_KERNEL); 171 (*curmtd)->mtdinfo = kzalloc(sizeof(struct mtd_info), GFP_KERNEL);
172 (*curmtd)->next = NULL; 172 (*curmtd)->next = NULL;
173 173
174 if ((*curmtd)->mtdinfo) { 174 if ((*curmtd)->mtdinfo) {
175 memset((char *)(*curmtd)->mtdinfo, 0, sizeof(struct mtd_info));
176 (*curmtd)->mtdinfo->priv = 175 (*curmtd)->mtdinfo->priv =
177 kmalloc(sizeof(slram_priv_t), GFP_KERNEL); 176 kzalloc(sizeof(slram_priv_t), GFP_KERNEL);
178 177
179 if (!(*curmtd)->mtdinfo->priv) { 178 if (!(*curmtd)->mtdinfo->priv) {
180 kfree((*curmtd)->mtdinfo); 179 kfree((*curmtd)->mtdinfo);
181 (*curmtd)->mtdinfo = NULL; 180 (*curmtd)->mtdinfo = NULL;
182 } else {
183 memset((*curmtd)->mtdinfo->priv,0,sizeof(slram_priv_t));
184 } 181 }
185 } 182 }
186 183
diff --git a/drivers/mtd/ftl.c b/drivers/mtd/ftl.c
index 8a878b34eca0..24235d4f1d23 100644
--- a/drivers/mtd/ftl.c
+++ b/drivers/mtd/ftl.c
@@ -1033,7 +1033,7 @@ static void ftl_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd)
1033{ 1033{
1034 partition_t *partition; 1034 partition_t *partition;
1035 1035
1036 partition = kmalloc(sizeof(partition_t), GFP_KERNEL); 1036 partition = kzalloc(sizeof(partition_t), GFP_KERNEL);
1037 1037
1038 if (!partition) { 1038 if (!partition) {
1039 printk(KERN_WARNING "No memory to scan for FTL on %s\n", 1039 printk(KERN_WARNING "No memory to scan for FTL on %s\n",
@@ -1041,8 +1041,6 @@ static void ftl_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd)
1041 return; 1041 return;
1042 } 1042 }
1043 1043
1044 memset(partition, 0, sizeof(partition_t));
1045
1046 partition->mbd.mtd = mtd; 1044 partition->mbd.mtd = mtd;
1047 1045
1048 if ((scan_header(partition) == 0) && 1046 if ((scan_header(partition) == 0) &&
@@ -1054,7 +1052,7 @@ static void ftl_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd)
1054 le32_to_cpu(partition->header.FormattedSize) >> 10); 1052 le32_to_cpu(partition->header.FormattedSize) >> 10);
1055#endif 1053#endif
1056 partition->mbd.size = le32_to_cpu(partition->header.FormattedSize) >> 9; 1054 partition->mbd.size = le32_to_cpu(partition->header.FormattedSize) >> 9;
1057 partition->mbd.blksize = SECTOR_SIZE; 1055
1058 partition->mbd.tr = tr; 1056 partition->mbd.tr = tr;
1059 partition->mbd.devnum = -1; 1057 partition->mbd.devnum = -1;
1060 if (!add_mtd_blktrans_dev((void *)partition)) 1058 if (!add_mtd_blktrans_dev((void *)partition))
@@ -1076,6 +1074,7 @@ struct mtd_blktrans_ops ftl_tr = {
1076 .name = "ftl", 1074 .name = "ftl",
1077 .major = FTL_MAJOR, 1075 .major = FTL_MAJOR,
1078 .part_bits = PART_BITS, 1076 .part_bits = PART_BITS,
1077 .blksize = SECTOR_SIZE,
1079 .readsect = ftl_readsect, 1078 .readsect = ftl_readsect,
1080 .writesect = ftl_writesect, 1079 .writesect = ftl_writesect,
1081 .getgeo = ftl_getgeo, 1080 .getgeo = ftl_getgeo,
diff --git a/drivers/mtd/inftlcore.c b/drivers/mtd/inftlcore.c
index 4116535805f1..b0e396504e67 100644
--- a/drivers/mtd/inftlcore.c
+++ b/drivers/mtd/inftlcore.c
@@ -67,17 +67,16 @@ static void inftl_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd)
67 67
68 DEBUG(MTD_DEBUG_LEVEL3, "INFTL: add_mtd for %s\n", mtd->name); 68 DEBUG(MTD_DEBUG_LEVEL3, "INFTL: add_mtd for %s\n", mtd->name);
69 69
70 inftl = kmalloc(sizeof(*inftl), GFP_KERNEL); 70 inftl = kzalloc(sizeof(*inftl), GFP_KERNEL);
71 71
72 if (!inftl) { 72 if (!inftl) {
73 printk(KERN_WARNING "INFTL: Out of memory for data structures\n"); 73 printk(KERN_WARNING "INFTL: Out of memory for data structures\n");
74 return; 74 return;
75 } 75 }
76 memset(inftl, 0, sizeof(*inftl));
77 76
78 inftl->mbd.mtd = mtd; 77 inftl->mbd.mtd = mtd;
79 inftl->mbd.devnum = -1; 78 inftl->mbd.devnum = -1;
80 inftl->mbd.blksize = 512; 79
81 inftl->mbd.tr = tr; 80 inftl->mbd.tr = tr;
82 81
83 if (INFTL_mount(inftl) < 0) { 82 if (INFTL_mount(inftl) < 0) {
@@ -163,10 +162,9 @@ int inftl_read_oob(struct mtd_info *mtd, loff_t offs, size_t len,
163 ops.ooblen = len; 162 ops.ooblen = len;
164 ops.oobbuf = buf; 163 ops.oobbuf = buf;
165 ops.datbuf = NULL; 164 ops.datbuf = NULL;
166 ops.len = len;
167 165
168 res = mtd->read_oob(mtd, offs & ~(mtd->writesize - 1), &ops); 166 res = mtd->read_oob(mtd, offs & ~(mtd->writesize - 1), &ops);
169 *retlen = ops.retlen; 167 *retlen = ops.oobretlen;
170 return res; 168 return res;
171} 169}
172 170
@@ -184,10 +182,9 @@ int inftl_write_oob(struct mtd_info *mtd, loff_t offs, size_t len,
184 ops.ooblen = len; 182 ops.ooblen = len;
185 ops.oobbuf = buf; 183 ops.oobbuf = buf;
186 ops.datbuf = NULL; 184 ops.datbuf = NULL;
187 ops.len = len;
188 185
189 res = mtd->write_oob(mtd, offs & ~(mtd->writesize - 1), &ops); 186 res = mtd->write_oob(mtd, offs & ~(mtd->writesize - 1), &ops);
190 *retlen = ops.retlen; 187 *retlen = ops.oobretlen;
191 return res; 188 return res;
192} 189}
193 190
@@ -945,6 +942,7 @@ static struct mtd_blktrans_ops inftl_tr = {
945 .name = "inftl", 942 .name = "inftl",
946 .major = INFTL_MAJOR, 943 .major = INFTL_MAJOR,
947 .part_bits = INFTL_PARTN_BITS, 944 .part_bits = INFTL_PARTN_BITS,
945 .blksize = 512,
948 .getgeo = inftl_getgeo, 946 .getgeo = inftl_getgeo,
949 .readsect = inftl_readblock, 947 .readsect = inftl_readblock,
950 .writesect = inftl_writeblock, 948 .writesect = inftl_writeblock,
diff --git a/drivers/mtd/maps/Kconfig b/drivers/mtd/maps/Kconfig
index d132ed571f13..f457315579db 100644
--- a/drivers/mtd/maps/Kconfig
+++ b/drivers/mtd/maps/Kconfig
@@ -60,6 +60,15 @@ config MTD_PHYSMAP_BANKWIDTH
60 Ignore this option if you use run-time physmap configuration 60 Ignore this option if you use run-time physmap configuration
61 (i.e., run-time calling physmap_configure()). 61 (i.e., run-time calling physmap_configure()).
62 62
63config MTD_PHYSMAP_OF
64 tristate "Flash device in physical memory map based on OF descirption"
65 depends on PPC_OF && (MTD_CFI || MTD_JEDECPROBE || MTD_ROM)
66 help
67 This provides a 'mapping' driver which allows the NOR Flash and
68 ROM driver code to communicate with chips which are mapped
69 physically into the CPU's memory. The mapping description here is
70 taken from OF device tree.
71
63config MTD_SUN_UFLASH 72config MTD_SUN_UFLASH
64 tristate "Sun Microsystems userflash support" 73 tristate "Sun Microsystems userflash support"
65 depends on SPARC && MTD_CFI 74 depends on SPARC && MTD_CFI
@@ -184,6 +193,24 @@ config MTD_ICHXROM
184 193
185 BE VERY CAREFUL. 194 BE VERY CAREFUL.
186 195
196config MTD_ESB2ROM
197 tristate "BIOS flash chip on Intel ESB Controller Hub 2"
198 depends on X86 && MTD_JEDECPROBE && PCI
199 help
200 Support for treating the BIOS flash chip on ESB2 motherboards
201 as an MTD device - with this you can reprogram your BIOS.
202
203 BE VERY CAREFUL.
204
205config MTD_CK804XROM
206 tristate "BIOS flash chip on Nvidia CK804"
207 depends on X86 && MTD_JEDECPROBE
208 help
209 Support for treating the BIOS flash chip on nvidia motherboards
210 as an MTD device - with this you can reprogram your BIOS.
211
212 BE VERY CAREFUL.
213
187config MTD_SCB2_FLASH 214config MTD_SCB2_FLASH
188 tristate "BIOS flash chip on Intel SCB2 boards" 215 tristate "BIOS flash chip on Intel SCB2 boards"
189 depends on X86 && MTD_JEDECPROBE 216 depends on X86 && MTD_JEDECPROBE
@@ -355,50 +382,6 @@ config MTD_TQM834x
355 TQ Components TQM834x boards. If you have one of these boards 382 TQ Components TQM834x boards. If you have one of these boards
356 and would like to use the flash chips on it, say 'Y'. 383 and would like to use the flash chips on it, say 'Y'.
357 384
358config MTD_CSTM_MIPS_IXX
359 tristate "Flash chip mapping on ITE QED-4N-S01B, Globespan IVR or custom board"
360 depends on MIPS && MTD_CFI && MTD_JEDECPROBE && MTD_PARTITIONS
361 help
362 This provides a mapping driver for the Integrated Technology
363 Express, Inc (ITE) QED-4N-S01B eval board and the Globespan IVR
364 Reference Board. It provides the necessary addressing, length,
365 buswidth, vpp code and addition setup of the flash device for
366 these boards. In addition, this mapping driver can be used for
367 other boards via setting of the CONFIG_MTD_CSTM_MIPS_IXX_START/
368 LEN/BUSWIDTH parameters. This mapping will provide one mtd device
369 using one partition. The start address can be offset from the
370 beginning of flash and the len can be less than the total flash
371 device size to allow a window into the flash. Both CFI and JEDEC
372 probes are called.
373
374config MTD_CSTM_MIPS_IXX_START
375 hex "Physical start address of flash mapping"
376 depends on MTD_CSTM_MIPS_IXX
377 default "0x8000000"
378 help
379 This is the physical memory location that the MTD driver will
380 use for the flash chips on your particular target board.
381 Refer to the memory map which should hopefully be in the
382 documentation for your board.
383
384config MTD_CSTM_MIPS_IXX_LEN
385 hex "Physical length of flash mapping"
386 depends on MTD_CSTM_MIPS_IXX
387 default "0x4000000"
388 help
389 This is the total length that the MTD driver will use for the
390 flash chips on your particular board. Refer to the memory
391 map which should hopefully be in the documentation for your
392 board.
393
394config MTD_CSTM_MIPS_IXX_BUSWIDTH
395 int "Bus width in octets"
396 depends on MTD_CSTM_MIPS_IXX
397 default "2"
398 help
399 This is the total bus width of the mapping of the flash chips
400 on your particular board.
401
402config MTD_OCELOT 385config MTD_OCELOT
403 tristate "Momenco Ocelot boot flash device" 386 tristate "Momenco Ocelot boot flash device"
404 depends on MIPS && MOMENCO_OCELOT 387 depends on MIPS && MOMENCO_OCELOT
diff --git a/drivers/mtd/maps/Makefile b/drivers/mtd/maps/Makefile
index 191c1928bbec..071d0bf922b6 100644
--- a/drivers/mtd/maps/Makefile
+++ b/drivers/mtd/maps/Makefile
@@ -12,12 +12,13 @@ obj-$(CONFIG_MTD_CDB89712) += cdb89712.o
12obj-$(CONFIG_MTD_ARM_INTEGRATOR)+= integrator-flash.o 12obj-$(CONFIG_MTD_ARM_INTEGRATOR)+= integrator-flash.o
13obj-$(CONFIG_MTD_BAST) += bast-flash.o 13obj-$(CONFIG_MTD_BAST) += bast-flash.o
14obj-$(CONFIG_MTD_CFI_FLAGADM) += cfi_flagadm.o 14obj-$(CONFIG_MTD_CFI_FLAGADM) += cfi_flagadm.o
15obj-$(CONFIG_MTD_CSTM_MIPS_IXX) += cstm_mips_ixx.o
16obj-$(CONFIG_MTD_DC21285) += dc21285.o 15obj-$(CONFIG_MTD_DC21285) += dc21285.o
17obj-$(CONFIG_MTD_DILNETPC) += dilnetpc.o 16obj-$(CONFIG_MTD_DILNETPC) += dilnetpc.o
18obj-$(CONFIG_MTD_L440GX) += l440gx.o 17obj-$(CONFIG_MTD_L440GX) += l440gx.o
19obj-$(CONFIG_MTD_AMD76XROM) += amd76xrom.o 18obj-$(CONFIG_MTD_AMD76XROM) += amd76xrom.o
19obj-$(CONFIG_MTD_ESB2ROM) += esb2rom.o
20obj-$(CONFIG_MTD_ICHXROM) += ichxrom.o 20obj-$(CONFIG_MTD_ICHXROM) += ichxrom.o
21obj-$(CONFIG_MTD_CK804XROM) += ck804xrom.o
21obj-$(CONFIG_MTD_TSUNAMI) += tsunami_flash.o 22obj-$(CONFIG_MTD_TSUNAMI) += tsunami_flash.o
22obj-$(CONFIG_MTD_LUBBOCK) += lubbock-flash.o 23obj-$(CONFIG_MTD_LUBBOCK) += lubbock-flash.o
23obj-$(CONFIG_MTD_MAINSTONE) += mainstone-flash.o 24obj-$(CONFIG_MTD_MAINSTONE) += mainstone-flash.o
@@ -25,6 +26,7 @@ obj-$(CONFIG_MTD_MBX860) += mbx860.o
25obj-$(CONFIG_MTD_CEIVA) += ceiva.o 26obj-$(CONFIG_MTD_CEIVA) += ceiva.o
26obj-$(CONFIG_MTD_OCTAGON) += octagon-5066.o 27obj-$(CONFIG_MTD_OCTAGON) += octagon-5066.o
27obj-$(CONFIG_MTD_PHYSMAP) += physmap.o 28obj-$(CONFIG_MTD_PHYSMAP) += physmap.o
29obj-$(CONFIG_MTD_PHYSMAP_OF) += physmap_of.o
28obj-$(CONFIG_MTD_PNC2000) += pnc2000.o 30obj-$(CONFIG_MTD_PNC2000) += pnc2000.o
29obj-$(CONFIG_MTD_PCMCIA) += pcmciamtd.o 31obj-$(CONFIG_MTD_PCMCIA) += pcmciamtd.o
30obj-$(CONFIG_MTD_RPXLITE) += rpxlite.o 32obj-$(CONFIG_MTD_RPXLITE) += rpxlite.o
diff --git a/drivers/mtd/maps/amd76xrom.c b/drivers/mtd/maps/amd76xrom.c
index 797caffb20b1..78b671172bb2 100644
--- a/drivers/mtd/maps/amd76xrom.c
+++ b/drivers/mtd/maps/amd76xrom.c
@@ -7,6 +7,7 @@
7 7
8#include <linux/module.h> 8#include <linux/module.h>
9#include <linux/types.h> 9#include <linux/types.h>
10#include <linux/version.h>
10#include <linux/kernel.h> 11#include <linux/kernel.h>
11#include <linux/init.h> 12#include <linux/init.h>
12#include <asm/io.h> 13#include <asm/io.h>
@@ -44,6 +45,23 @@ struct amd76xrom_map_info {
44 char map_name[sizeof(MOD_NAME) + 2 + ADDRESS_NAME_LEN]; 45 char map_name[sizeof(MOD_NAME) + 2 + ADDRESS_NAME_LEN];
45}; 46};
46 47
48/* The 2 bits controlling the window size are often set to allow reading
49 * the BIOS, but too small to allow writing, since the lock registers are
50 * 4MiB lower in the address space than the data.
51 *
52 * This is intended to prevent flashing the bios, perhaps accidentally.
53 *
54 * This parameter allows the normal driver to over-ride the BIOS settings.
55 *
56 * The bits are 6 and 7. If both bits are set, it is a 5MiB window.
57 * If only the 7 Bit is set, it is a 4MiB window. Otherwise, a
58 * 64KiB window.
59 *
60 */
61static uint win_size_bits;
62module_param(win_size_bits, uint, 0);
63MODULE_PARM_DESC(win_size_bits, "ROM window size bits override for 0x43 byte, normally set by BIOS.");
64
47static struct amd76xrom_window amd76xrom_window = { 65static struct amd76xrom_window amd76xrom_window = {
48 .maps = LIST_HEAD_INIT(amd76xrom_window.maps), 66 .maps = LIST_HEAD_INIT(amd76xrom_window.maps),
49}; 67};
@@ -95,6 +113,16 @@ static int __devinit amd76xrom_init_one (struct pci_dev *pdev,
95 /* Remember the pci dev I find the window in - already have a ref */ 113 /* Remember the pci dev I find the window in - already have a ref */
96 window->pdev = pdev; 114 window->pdev = pdev;
97 115
116 /* Enable the selected rom window. This is often incorrectly
117 * set up by the BIOS, and the 4MiB offset for the lock registers
118 * requires the full 5MiB of window space.
119 *
120 * This 'write, then read' approach leaves the bits for
121 * other uses of the hardware info.
122 */
123 pci_read_config_byte(pdev, 0x43, &byte);
124 pci_write_config_byte(pdev, 0x43, byte | win_size_bits );
125
98 /* Assume the rom window is properly setup, and find it's size */ 126 /* Assume the rom window is properly setup, and find it's size */
99 pci_read_config_byte(pdev, 0x43, &byte); 127 pci_read_config_byte(pdev, 0x43, &byte);
100 if ((byte & ((1<<7)|(1<<6))) == ((1<<7)|(1<<6))) { 128 if ((byte & ((1<<7)|(1<<6))) == ((1<<7)|(1<<6))) {
@@ -129,12 +157,6 @@ static int __devinit amd76xrom_init_one (struct pci_dev *pdev,
129 (unsigned long long)window->rsrc.end); 157 (unsigned long long)window->rsrc.end);
130 } 158 }
131 159
132#if 0
133
134 /* Enable the selected rom window */
135 pci_read_config_byte(pdev, 0x43, &byte);
136 pci_write_config_byte(pdev, 0x43, byte | rwindow->segen_bits);
137#endif
138 160
139 /* Enable writes through the rom window */ 161 /* Enable writes through the rom window */
140 pci_read_config_byte(pdev, 0x40, &byte); 162 pci_read_config_byte(pdev, 0x40, &byte);
diff --git a/drivers/mtd/maps/bast-flash.c b/drivers/mtd/maps/bast-flash.c
index e074bb6787d2..fc3b2672d1e2 100644
--- a/drivers/mtd/maps/bast-flash.c
+++ b/drivers/mtd/maps/bast-flash.c
@@ -131,7 +131,7 @@ static int bast_flash_probe(struct platform_device *pdev)
131 131
132 info->map.phys = res->start; 132 info->map.phys = res->start;
133 info->map.size = res->end - res->start + 1; 133 info->map.size = res->end - res->start + 1;
134 info->map.name = pdev->dev.bus_id; 134 info->map.name = pdev->dev.bus_id;
135 info->map.bankwidth = 2; 135 info->map.bankwidth = 2;
136 136
137 if (info->map.size > AREA_MAXSIZE) 137 if (info->map.size > AREA_MAXSIZE)
diff --git a/drivers/mtd/maps/ceiva.c b/drivers/mtd/maps/ceiva.c
index 0402c21e291d..629e6e2641a8 100644
--- a/drivers/mtd/maps/ceiva.c
+++ b/drivers/mtd/maps/ceiva.c
@@ -122,10 +122,9 @@ static int __init clps_setup_mtd(struct clps_info *clps, int nr, struct mtd_info
122 /* 122 /*
123 * Allocate the map_info structs in one go. 123 * Allocate the map_info structs in one go.
124 */ 124 */
125 maps = kmalloc(sizeof(struct map_info) * nr, GFP_KERNEL); 125 maps = kzalloc(sizeof(struct map_info) * nr, GFP_KERNEL);
126 if (!maps) 126 if (!maps)
127 return -ENOMEM; 127 return -ENOMEM;
128 memset(maps, 0, sizeof(struct map_info) * nr);
129 /* 128 /*
130 * Claim and then map the memory regions. 129 * Claim and then map the memory regions.
131 */ 130 */
diff --git a/drivers/mtd/maps/ck804xrom.c b/drivers/mtd/maps/ck804xrom.c
new file mode 100644
index 000000000000..238d42e88ec5
--- /dev/null
+++ b/drivers/mtd/maps/ck804xrom.c
@@ -0,0 +1,356 @@
1/*
2 * ck804xrom.c
3 *
4 * Normal mappings of chips in physical memory
5 *
6 * Dave Olsen <dolsen@lnxi.com>
7 * Ryan Jackson <rjackson@lnxi.com>
8 */
9
10#include <linux/module.h>
11#include <linux/types.h>
12#include <linux/version.h>
13#include <linux/kernel.h>
14#include <linux/init.h>
15#include <asm/io.h>
16#include <linux/mtd/mtd.h>
17#include <linux/mtd/map.h>
18#include <linux/mtd/cfi.h>
19#include <linux/mtd/flashchip.h>
20#include <linux/pci.h>
21#include <linux/pci_ids.h>
22#include <linux/list.h>
23
24
25#define MOD_NAME KBUILD_BASENAME
26
27#define ADDRESS_NAME_LEN 18
28
29#define ROM_PROBE_STEP_SIZE (64*1024)
30
31struct ck804xrom_window {
32 void __iomem *virt;
33 unsigned long phys;
34 unsigned long size;
35 struct list_head maps;
36 struct resource rsrc;
37 struct pci_dev *pdev;
38};
39
40struct ck804xrom_map_info {
41 struct list_head list;
42 struct map_info map;
43 struct mtd_info *mtd;
44 struct resource rsrc;
45 char map_name[sizeof(MOD_NAME) + 2 + ADDRESS_NAME_LEN];
46};
47
48
49/* The 2 bits controlling the window size are often set to allow reading
50 * the BIOS, but too small to allow writing, since the lock registers are
51 * 4MiB lower in the address space than the data.
52 *
53 * This is intended to prevent flashing the bios, perhaps accidentally.
54 *
55 * This parameter allows the normal driver to override the BIOS settings.
56 *
57 * The bits are 6 and 7. If both bits are set, it is a 5MiB window.
58 * If only the 7 Bit is set, it is a 4MiB window. Otherwise, a
59 * 64KiB window.
60 *
61 */
62static uint win_size_bits = 0;
63module_param(win_size_bits, uint, 0);
64MODULE_PARM_DESC(win_size_bits, "ROM window size bits override for 0x88 byte, normally set by BIOS.");
65
66static struct ck804xrom_window ck804xrom_window = {
67 .maps = LIST_HEAD_INIT(ck804xrom_window.maps),
68};
69
70static void ck804xrom_cleanup(struct ck804xrom_window *window)
71{
72 struct ck804xrom_map_info *map, *scratch;
73 u8 byte;
74
75 if (window->pdev) {
76 /* Disable writes through the rom window */
77 pci_read_config_byte(window->pdev, 0x6d, &byte);
78 pci_write_config_byte(window->pdev, 0x6d, byte & ~1);
79 }
80
81 /* Free all of the mtd devices */
82 list_for_each_entry_safe(map, scratch, &window->maps, list) {
83 if (map->rsrc.parent)
84 release_resource(&map->rsrc);
85
86 del_mtd_device(map->mtd);
87 map_destroy(map->mtd);
88 list_del(&map->list);
89 kfree(map);
90 }
91 if (window->rsrc.parent)
92 release_resource(&window->rsrc);
93
94 if (window->virt) {
95 iounmap(window->virt);
96 window->virt = NULL;
97 window->phys = 0;
98 window->size = 0;
99 }
100 pci_dev_put(window->pdev);
101}
102
103
104static int __devinit ck804xrom_init_one (struct pci_dev *pdev,
105 const struct pci_device_id *ent)
106{
107 static char *rom_probe_types[] = { "cfi_probe", "jedec_probe", NULL };
108 u8 byte;
109 struct ck804xrom_window *window = &ck804xrom_window;
110 struct ck804xrom_map_info *map = NULL;
111 unsigned long map_top;
112
113 /* Remember the pci dev I find the window in */
114 window->pdev = pci_dev_get(pdev);
115
116 /* Enable the selected rom window. This is often incorrectly
117 * set up by the BIOS, and the 4MiB offset for the lock registers
118 * requires the full 5MiB of window space.
119 *
120 * This 'write, then read' approach leaves the bits for
121 * other uses of the hardware info.
122 */
123 pci_read_config_byte(pdev, 0x88, &byte);
124 pci_write_config_byte(pdev, 0x88, byte | win_size_bits );
125
126
127 /* Assume the rom window is properly setup, and find it's size */
128 pci_read_config_byte(pdev, 0x88, &byte);
129
130 if ((byte & ((1<<7)|(1<<6))) == ((1<<7)|(1<<6)))
131 window->phys = 0xffb00000; /* 5MiB */
132 else if ((byte & (1<<7)) == (1<<7))
133 window->phys = 0xffc00000; /* 4MiB */
134 else
135 window->phys = 0xffff0000; /* 64KiB */
136
137 window->size = 0xffffffffUL - window->phys + 1UL;
138
139 /*
140 * Try to reserve the window mem region. If this fails then
141 * it is likely due to a fragment of the window being
142 * "reserved" by the BIOS. In the case that the
143 * request_mem_region() fails then once the rom size is
144 * discovered we will try to reserve the unreserved fragment.
145 */
146 window->rsrc.name = MOD_NAME;
147 window->rsrc.start = window->phys;
148 window->rsrc.end = window->phys + window->size - 1;
149 window->rsrc.flags = IORESOURCE_MEM | IORESOURCE_BUSY;
150 if (request_resource(&iomem_resource, &window->rsrc)) {
151 window->rsrc.parent = NULL;
152 printk(KERN_ERR MOD_NAME
153 " %s(): Unable to register resource"
154 " 0x%.016llx-0x%.016llx - kernel bug?\n",
155 __func__,
156 (unsigned long long)window->rsrc.start,
157 (unsigned long long)window->rsrc.end);
158 }
159
160
161 /* Enable writes through the rom window */
162 pci_read_config_byte(pdev, 0x6d, &byte);
163 pci_write_config_byte(pdev, 0x6d, byte | 1);
164
165 /* FIXME handle registers 0x80 - 0x8C the bios region locks */
166
167 /* For write accesses caches are useless */
168 window->virt = ioremap_nocache(window->phys, window->size);
169 if (!window->virt) {
170 printk(KERN_ERR MOD_NAME ": ioremap(%08lx, %08lx) failed\n",
171 window->phys, window->size);
172 goto out;
173 }
174
175 /* Get the first address to look for a rom chip at */
176 map_top = window->phys;
177#if 1
178 /* The probe sequence run over the firmware hub lock
179 * registers sets them to 0x7 (no access).
180 * Probe at most the last 4MiB of the address space.
181 */
182 if (map_top < 0xffc00000)
183 map_top = 0xffc00000;
184#endif
185 /* Loop through and look for rom chips. Since we don't know the
186 * starting address for each chip, probe every ROM_PROBE_STEP_SIZE
187 * bytes from the starting address of the window.
188 */
189 while((map_top - 1) < 0xffffffffUL) {
190 struct cfi_private *cfi;
191 unsigned long offset;
192 int i;
193
194 if (!map)
195 map = kmalloc(sizeof(*map), GFP_KERNEL);
196
197 if (!map) {
198 printk(KERN_ERR MOD_NAME ": kmalloc failed");
199 goto out;
200 }
201 memset(map, 0, sizeof(*map));
202 INIT_LIST_HEAD(&map->list);
203 map->map.name = map->map_name;
204 map->map.phys = map_top;
205 offset = map_top - window->phys;
206 map->map.virt = (void __iomem *)
207 (((unsigned long)(window->virt)) + offset);
208 map->map.size = 0xffffffffUL - map_top + 1UL;
209 /* Set the name of the map to the address I am trying */
210 sprintf(map->map_name, "%s @%08lx",
211 MOD_NAME, map->map.phys);
212
213 /* There is no generic VPP support */
214 for(map->map.bankwidth = 32; map->map.bankwidth;
215 map->map.bankwidth >>= 1)
216 {
217 char **probe_type;
218 /* Skip bankwidths that are not supported */
219 if (!map_bankwidth_supported(map->map.bankwidth))
220 continue;
221
222 /* Setup the map methods */
223 simple_map_init(&map->map);
224
225 /* Try all of the probe methods */
226 probe_type = rom_probe_types;
227 for(; *probe_type; probe_type++) {
228 map->mtd = do_map_probe(*probe_type, &map->map);
229 if (map->mtd)
230 goto found;
231 }
232 }
233 map_top += ROM_PROBE_STEP_SIZE;
234 continue;
235 found:
236 /* Trim the size if we are larger than the map */
237 if (map->mtd->size > map->map.size) {
238 printk(KERN_WARNING MOD_NAME
239 " rom(%u) larger than window(%lu). fixing...\n",
240 map->mtd->size, map->map.size);
241 map->mtd->size = map->map.size;
242 }
243 if (window->rsrc.parent) {
244 /*
245 * Registering the MTD device in iomem may not be possible
246 * if there is a BIOS "reserved" and BUSY range. If this
247 * fails then continue anyway.
248 */
249 map->rsrc.name = map->map_name;
250 map->rsrc.start = map->map.phys;
251 map->rsrc.end = map->map.phys + map->mtd->size - 1;
252 map->rsrc.flags = IORESOURCE_MEM | IORESOURCE_BUSY;
253 if (request_resource(&window->rsrc, &map->rsrc)) {
254 printk(KERN_ERR MOD_NAME
255 ": cannot reserve MTD resource\n");
256 map->rsrc.parent = NULL;
257 }
258 }
259
260 /* Make the whole region visible in the map */
261 map->map.virt = window->virt;
262 map->map.phys = window->phys;
263 cfi = map->map.fldrv_priv;
264 for(i = 0; i < cfi->numchips; i++)
265 cfi->chips[i].start += offset;
266
267 /* Now that the mtd devices is complete claim and export it */
268 map->mtd->owner = THIS_MODULE;
269 if (add_mtd_device(map->mtd)) {
270 map_destroy(map->mtd);
271 map->mtd = NULL;
272 goto out;
273 }
274
275
276 /* Calculate the new value of map_top */
277 map_top += map->mtd->size;
278
279 /* File away the map structure */
280 list_add(&map->list, &window->maps);
281 map = NULL;
282 }
283
284 out:
285 /* Free any left over map structures */
286 if (map)
287 kfree(map);
288
289 /* See if I have any map structures */
290 if (list_empty(&window->maps)) {
291 ck804xrom_cleanup(window);
292 return -ENODEV;
293 }
294 return 0;
295}
296
297
298static void __devexit ck804xrom_remove_one (struct pci_dev *pdev)
299{
300 struct ck804xrom_window *window = &ck804xrom_window;
301
302 ck804xrom_cleanup(window);
303}
304
305static struct pci_device_id ck804xrom_pci_tbl[] = {
306 { PCI_VENDOR_ID_NVIDIA, 0x0051,
307 PCI_ANY_ID, PCI_ANY_ID, }, /* nvidia ck804 */
308 { 0, }
309};
310
311MODULE_DEVICE_TABLE(pci, ck804xrom_pci_tbl);
312
313#if 0
314static struct pci_driver ck804xrom_driver = {
315 .name = MOD_NAME,
316 .id_table = ck804xrom_pci_tbl,
317 .probe = ck804xrom_init_one,
318 .remove = ck804xrom_remove_one,
319};
320#endif
321
322static int __init init_ck804xrom(void)
323{
324 struct pci_dev *pdev;
325 struct pci_device_id *id;
326 int retVal;
327 pdev = NULL;
328
329 for(id = ck804xrom_pci_tbl; id->vendor; id++) {
330 pdev = pci_find_device(id->vendor, id->device, NULL);
331 if (pdev)
332 break;
333 }
334 if (pdev) {
335 retVal = ck804xrom_init_one(pdev, &ck804xrom_pci_tbl[0]);
336 pci_dev_put(pdev);
337 return retVal;
338 }
339 return -ENXIO;
340#if 0
341 return pci_module_init(&ck804xrom_driver);
342#endif
343}
344
345static void __exit cleanup_ck804xrom(void)
346{
347 ck804xrom_remove_one(ck804xrom_window.pdev);
348}
349
350module_init(init_ck804xrom);
351module_exit(cleanup_ck804xrom);
352
353MODULE_LICENSE("GPL");
354MODULE_AUTHOR("Eric Biederman <ebiederman@lnxi.com>, Dave Olsen <dolsen@lnxi.com>");
355MODULE_DESCRIPTION("MTD map driver for BIOS chips on the Nvidia ck804 southbridge");
356
diff --git a/drivers/mtd/maps/cstm_mips_ixx.c b/drivers/mtd/maps/cstm_mips_ixx.c
deleted file mode 100644
index df2c38ef105a..000000000000
--- a/drivers/mtd/maps/cstm_mips_ixx.c
+++ /dev/null
@@ -1,283 +0,0 @@
1/*
2 * $Id: cstm_mips_ixx.c,v 1.14 2005/11/07 11:14:26 gleixner Exp $
3 *
4 * Mapping of a custom board with both AMD CFI and JEDEC flash in partitions.
5 * Config with both CFI and JEDEC device support.
6 *
7 * Basically physmap.c with the addition of partitions and
8 * an array of mapping info to accomodate more than one flash type per board.
9 *
10 * Copyright 2000 MontaVista Software Inc.
11 *
12 * This program is free software; you can redistribute it and/or modify it
13 * under the terms of the GNU General Public License as published by the
14 * Free Software Foundation; either version 2 of the License, or (at your
15 * option) any later version.
16 *
17 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
18 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
20 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
24 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 * You should have received a copy of the GNU General Public License along
29 * with this program; if not, write to the Free Software Foundation, Inc.,
30 * 675 Mass Ave, Cambridge, MA 02139, USA.
31 */
32
33#include <linux/module.h>
34#include <linux/types.h>
35#include <linux/kernel.h>
36#include <linux/init.h>
37#include <asm/io.h>
38#include <linux/mtd/mtd.h>
39#include <linux/mtd/map.h>
40#include <linux/mtd/partitions.h>
41#include <linux/delay.h>
42
43#if defined(CONFIG_MIPS_ITE8172) || defined(CONFIG_MIPS_IVR)
44#define CC_GCR 0xB4013818
45#define CC_GPBCR 0xB401380A
46#define CC_GPBDR 0xB4013808
47#define CC_M68K_DEVICE 1
48#define CC_M68K_FUNCTION 6
49#define CC_CONFADDR 0xB8004000
50#define CC_CONFDATA 0xB8004004
51#define CC_FC_FCR 0xB8002004
52#define CC_FC_DCR 0xB8002008
53#define CC_GPACR 0xB4013802
54#define CC_GPAICR 0xB4013804
55#endif /* defined(CONFIG_MIPS_ITE8172) || defined(CONFIG_MIPS_IVR) */
56
57#if defined(CONFIG_MIPS_ITE8172) || defined(CONFIG_MIPS_IVR)
58void cstm_mips_ixx_set_vpp(struct map_info *map,int vpp)
59{
60 static DEFINE_SPINLOCK(vpp_lock);
61 static int vpp_count = 0;
62 unsigned long flags;
63
64 spin_lock_irqsave(&vpp_lock, flags);
65
66 if (vpp) {
67 if (!vpp_count++) {
68 __u16 data;
69 __u8 data1;
70 static u8 first = 1;
71
72 // Set GPIO port B pin3 to high
73 data = *(__u16 *)(CC_GPBCR);
74 data = (data & 0xff0f) | 0x0040;
75 *(__u16 *)CC_GPBCR = data;
76 *(__u8 *)CC_GPBDR = (*(__u8*)CC_GPBDR) | 0x08;
77 if (first) {
78 first = 0;
79 /* need to have this delay for first
80 enabling vpp after powerup */
81 udelay(40);
82 }
83 }
84 } else {
85 if (!--vpp_count) {
86 __u16 data;
87
88 // Set GPIO port B pin3 to high
89 data = *(__u16 *)(CC_GPBCR);
90 data = (data & 0xff3f) | 0x0040;
91 *(__u16 *)CC_GPBCR = data;
92 *(__u8 *)CC_GPBDR = (*(__u8*)CC_GPBDR) & 0xf7;
93 }
94 }
95 spin_unlock_irqrestore(&vpp_lock, flags);
96}
97#endif
98
99/* board and partition description */
100
101#define MAX_PHYSMAP_PARTITIONS 8
102struct cstm_mips_ixx_info {
103 char *name;
104 unsigned long window_addr;
105 unsigned long window_size;
106 int bankwidth;
107 int num_partitions;
108};
109
110#if defined(CONFIG_MIPS_ITE8172) || defined(CONFIG_MIPS_IVR)
111#define PHYSMAP_NUMBER 1 // number of board desc structs needed, one per contiguous flash type
112const struct cstm_mips_ixx_info cstm_mips_ixx_board_desc[PHYSMAP_NUMBER] =
113{
114 { // 28F128J3A in 2x16 configuration
115 "big flash", // name
116 0x08000000, // window_addr
117 0x02000000, // window_size
118 4, // bankwidth
119 1, // num_partitions
120 }
121
122};
123static struct mtd_partition cstm_mips_ixx_partitions[PHYSMAP_NUMBER][MAX_PHYSMAP_PARTITIONS] = {
124{ // 28F128J3A in 2x16 configuration
125 {
126 .name = "main partition ",
127 .size = 0x02000000, // 128 x 2 x 128k byte sectors
128 .offset = 0,
129 },
130},
131};
132#else /* defined(CONFIG_MIPS_ITE8172) || defined(CONFIG_MIPS_IVR) */
133#define PHYSMAP_NUMBER 1 // number of board desc structs needed, one per contiguous flash type
134const struct cstm_mips_ixx_info cstm_mips_ixx_board_desc[PHYSMAP_NUMBER] =
135{
136 {
137 "MTD flash", // name
138 CONFIG_MTD_CSTM_MIPS_IXX_START, // window_addr
139 CONFIG_MTD_CSTM_MIPS_IXX_LEN, // window_size
140 CONFIG_MTD_CSTM_MIPS_IXX_BUSWIDTH, // bankwidth
141 1, // num_partitions
142 },
143
144};
145static struct mtd_partition cstm_mips_ixx_partitions[PHYSMAP_NUMBER][MAX_PHYSMAP_PARTITIONS] = {
146{
147 {
148 .name = "main partition",
149 .size = CONFIG_MTD_CSTM_MIPS_IXX_LEN,
150 .offset = 0,
151 },
152},
153};
154#endif /* defined(CONFIG_MIPS_ITE8172) || defined(CONFIG_MIPS_IVR) */
155
156struct map_info cstm_mips_ixx_map[PHYSMAP_NUMBER];
157
158int __init init_cstm_mips_ixx(void)
159{
160 int i;
161 int jedec;
162 struct mtd_info *mymtd;
163 struct mtd_partition *parts;
164
165 /* Initialize mapping */
166 for (i=0;i<PHYSMAP_NUMBER;i++) {
167 printk(KERN_NOTICE "cstm_mips_ixx flash device: 0x%lx at 0x%lx\n",
168 cstm_mips_ixx_board_desc[i].window_size, cstm_mips_ixx_board_desc[i].window_addr);
169
170
171 cstm_mips_ixx_map[i].phys = cstm_mips_ixx_board_desc[i].window_addr;
172 cstm_mips_ixx_map[i].virt = ioremap(cstm_mips_ixx_board_desc[i].window_addr, cstm_mips_ixx_board_desc[i].window_size);
173 if (!cstm_mips_ixx_map[i].virt) {
174 int j = 0;
175 printk(KERN_WARNING "Failed to ioremap\n");
176 for (j = 0; j < i; j++) {
177 if (cstm_mips_ixx_map[j].virt) {
178 iounmap(cstm_mips_ixx_map[j].virt);
179 cstm_mips_ixx_map[j].virt = NULL;
180 }
181 }
182 return -EIO;
183 }
184 cstm_mips_ixx_map[i].name = cstm_mips_ixx_board_desc[i].name;
185 cstm_mips_ixx_map[i].size = cstm_mips_ixx_board_desc[i].window_size;
186 cstm_mips_ixx_map[i].bankwidth = cstm_mips_ixx_board_desc[i].bankwidth;
187#if defined(CONFIG_MIPS_ITE8172) || defined(CONFIG_MIPS_IVR)
188 cstm_mips_ixx_map[i].set_vpp = cstm_mips_ixx_set_vpp;
189#endif
190 simple_map_init(&cstm_mips_ixx_map[i]);
191 //printk(KERN_NOTICE "cstm_mips_ixx: ioremap is %x\n",(unsigned int)(cstm_mips_ixx_map[i].virt));
192 }
193
194#if defined(CONFIG_MIPS_ITE8172) || defined(CONFIG_MIPS_IVR)
195 setup_ITE_IVR_flash();
196#endif /* defined(CONFIG_MIPS_ITE8172) || defined(CONFIG_MIPS_IVR) */
197
198 for (i=0;i<PHYSMAP_NUMBER;i++) {
199 parts = &cstm_mips_ixx_partitions[i][0];
200 jedec = 0;
201 mymtd = (struct mtd_info *)do_map_probe("cfi_probe", &cstm_mips_ixx_map[i]);
202 //printk(KERN_NOTICE "phymap %d cfi_probe: mymtd is %x\n",i,(unsigned int)mymtd);
203 if (!mymtd) {
204 jedec = 1;
205 mymtd = (struct mtd_info *)do_map_probe("jedec", &cstm_mips_ixx_map[i]);
206 printk(KERN_NOTICE "cstm_mips_ixx %d jedec: mymtd is %x\n",i,(unsigned int)mymtd);
207 }
208 if (mymtd) {
209 mymtd->owner = THIS_MODULE;
210
211 cstm_mips_ixx_map[i].map_priv_2 = (unsigned long)mymtd;
212 add_mtd_partitions(mymtd, parts, cstm_mips_ixx_board_desc[i].num_partitions);
213 }
214 else {
215 for (i = 0; i < PHYSMAP_NUMBER; i++) {
216 if (cstm_mips_ixx_map[i].virt) {
217 iounmap(cstm_mips_ixx_map[i].virt);
218 cstm_mips_ixx_map[i].virt = NULL;
219 }
220 }
221 return -ENXIO;
222 }
223 }
224 return 0;
225}
226
227static void __exit cleanup_cstm_mips_ixx(void)
228{
229 int i;
230 struct mtd_info *mymtd;
231
232 for (i=0;i<PHYSMAP_NUMBER;i++) {
233 mymtd = (struct mtd_info *)cstm_mips_ixx_map[i].map_priv_2;
234 if (mymtd) {
235 del_mtd_partitions(mymtd);
236 map_destroy(mymtd);
237 }
238 if (cstm_mips_ixx_map[i].virt) {
239 iounmap((void *)cstm_mips_ixx_map[i].virt);
240 cstm_mips_ixx_map[i].virt = 0;
241 }
242 }
243}
244#if defined(CONFIG_MIPS_ITE8172) || defined(CONFIG_MIPS_IVR)
245void PCISetULongByOffset(__u32 DevNumber, __u32 FuncNumber, __u32 Offset, __u32 data)
246{
247 __u32 offset;
248
249 offset = ( unsigned long )( 0x80000000 | ( DevNumber << 11 ) + ( FuncNumber << 8 ) + Offset) ;
250
251 *(__u32 *)CC_CONFADDR = offset;
252 *(__u32 *)CC_CONFDATA = data;
253}
254void setup_ITE_IVR_flash()
255{
256 __u32 size, base;
257
258 size = 0x0e000000; // 32MiB
259 base = (0x08000000) >> 8 >>1; // Bug: we must shift one more bit
260
261 /* need to set ITE flash to 32 bits instead of default 8 */
262#ifdef CONFIG_MIPS_IVR
263 *(__u32 *)CC_FC_FCR = 0x55;
264 *(__u32 *)CC_GPACR = 0xfffc;
265#else
266 *(__u32 *)CC_FC_FCR = 0x77;
267#endif
268 /* turn bursting off */
269 *(__u32 *)CC_FC_DCR = 0x0;
270
271 /* setup for one chip 4 byte PCI access */
272 PCISetULongByOffset(CC_M68K_DEVICE, CC_M68K_FUNCTION, 0x60, size | base);
273 PCISetULongByOffset(CC_M68K_DEVICE, CC_M68K_FUNCTION, 0x64, 0x02);
274}
275#endif /* defined(CONFIG_MIPS_ITE8172) || defined(CONFIG_MIPS_IVR) */
276
277module_init(init_cstm_mips_ixx);
278module_exit(cleanup_cstm_mips_ixx);
279
280
281MODULE_LICENSE("GPL");
282MODULE_AUTHOR("Alice Hennessy <ahennessy@mvista.com>");
283MODULE_DESCRIPTION("MTD map driver for ITE 8172G and Globespan IVR boards");
diff --git a/drivers/mtd/maps/esb2rom.c b/drivers/mtd/maps/esb2rom.c
new file mode 100644
index 000000000000..a9d808a617c9
--- /dev/null
+++ b/drivers/mtd/maps/esb2rom.c
@@ -0,0 +1,450 @@
1/*
2 * esb2rom.c
3 *
4 * Normal mappings of flash chips in physical memory
5 * through the Intel ESB2 Southbridge.
6 *
7 * This was derived from ichxrom.c in May 2006 by
8 * Lew Glendenning <lglendenning@lnxi.com>
9 *
10 * Eric Biederman, of course, was a major help in this effort.
11 */
12
13#include <linux/module.h>
14#include <linux/types.h>
15#include <linux/version.h>
16#include <linux/kernel.h>
17#include <linux/init.h>
18#include <asm/io.h>
19#include <linux/mtd/mtd.h>
20#include <linux/mtd/map.h>
21#include <linux/mtd/cfi.h>
22#include <linux/mtd/flashchip.h>
23#include <linux/pci.h>
24#include <linux/pci_ids.h>
25#include <linux/list.h>
26
27#define MOD_NAME KBUILD_BASENAME
28
29#define ADDRESS_NAME_LEN 18
30
31#define ROM_PROBE_STEP_SIZE (64*1024) /* 64KiB */
32
33#define BIOS_CNTL 0xDC
34#define BIOS_LOCK_ENABLE 0x02
35#define BIOS_WRITE_ENABLE 0x01
36
37/* This became a 16-bit register, and EN2 has disappeared */
38#define FWH_DEC_EN1 0xD8
39#define FWH_F8_EN 0x8000
40#define FWH_F0_EN 0x4000
41#define FWH_E8_EN 0x2000
42#define FWH_E0_EN 0x1000
43#define FWH_D8_EN 0x0800
44#define FWH_D0_EN 0x0400
45#define FWH_C8_EN 0x0200
46#define FWH_C0_EN 0x0100
47#define FWH_LEGACY_F_EN 0x0080
48#define FWH_LEGACY_E_EN 0x0040
49/* reserved 0x0020 and 0x0010 */
50#define FWH_70_EN 0x0008
51#define FWH_60_EN 0x0004
52#define FWH_50_EN 0x0002
53#define FWH_40_EN 0x0001
54
55/* these are 32-bit values */
56#define FWH_SEL1 0xD0
57#define FWH_SEL2 0xD4
58
59#define FWH_8MiB (FWH_F8_EN | FWH_F0_EN | FWH_E8_EN | FWH_E0_EN | \
60 FWH_D8_EN | FWH_D0_EN | FWH_C8_EN | FWH_C0_EN | \
61 FWH_70_EN | FWH_60_EN | FWH_50_EN | FWH_40_EN)
62
63#define FWH_7MiB (FWH_F8_EN | FWH_F0_EN | FWH_E8_EN | FWH_E0_EN | \
64 FWH_D8_EN | FWH_D0_EN | FWH_C8_EN | FWH_C0_EN | \
65 FWH_70_EN | FWH_60_EN | FWH_50_EN)
66
67#define FWH_6MiB (FWH_F8_EN | FWH_F0_EN | FWH_E8_EN | FWH_E0_EN | \
68 FWH_D8_EN | FWH_D0_EN | FWH_C8_EN | FWH_C0_EN | \
69 FWH_70_EN | FWH_60_EN)
70
71#define FWH_5MiB (FWH_F8_EN | FWH_F0_EN | FWH_E8_EN | FWH_E0_EN | \
72 FWH_D8_EN | FWH_D0_EN | FWH_C8_EN | FWH_C0_EN | \
73 FWH_70_EN)
74
75#define FWH_4MiB (FWH_F8_EN | FWH_F0_EN | FWH_E8_EN | FWH_E0_EN | \
76 FWH_D8_EN | FWH_D0_EN | FWH_C8_EN | FWH_C0_EN)
77
78#define FWH_3_5MiB (FWH_F8_EN | FWH_F0_EN | FWH_E8_EN | FWH_E0_EN | \
79 FWH_D8_EN | FWH_D0_EN | FWH_C8_EN)
80
81#define FWH_3MiB (FWH_F8_EN | FWH_F0_EN | FWH_E8_EN | FWH_E0_EN | \
82 FWH_D8_EN | FWH_D0_EN)
83
84#define FWH_2_5MiB (FWH_F8_EN | FWH_F0_EN | FWH_E8_EN | FWH_E0_EN | \
85 FWH_D8_EN)
86
87#define FWH_2MiB (FWH_F8_EN | FWH_F0_EN | FWH_E8_EN | FWH_E0_EN)
88
89#define FWH_1_5MiB (FWH_F8_EN | FWH_F0_EN | FWH_E8_EN)
90
91#define FWH_1MiB (FWH_F8_EN | FWH_F0_EN)
92
93#define FWH_0_5MiB (FWH_F8_EN)
94
95
96struct esb2rom_window {
97 void __iomem* virt;
98 unsigned long phys;
99 unsigned long size;
100 struct list_head maps;
101 struct resource rsrc;
102 struct pci_dev *pdev;
103};
104
105struct esb2rom_map_info {
106 struct list_head list;
107 struct map_info map;
108 struct mtd_info *mtd;
109 struct resource rsrc;
110 char map_name[sizeof(MOD_NAME) + 2 + ADDRESS_NAME_LEN];
111};
112
113static struct esb2rom_window esb2rom_window = {
114 .maps = LIST_HEAD_INIT(esb2rom_window.maps),
115};
116
117static void esb2rom_cleanup(struct esb2rom_window *window)
118{
119 struct esb2rom_map_info *map, *scratch;
120 u8 byte;
121
122 /* Disable writes through the rom window */
123 pci_read_config_byte(window->pdev, BIOS_CNTL, &byte);
124 pci_write_config_byte(window->pdev, BIOS_CNTL,
125 byte & ~BIOS_WRITE_ENABLE);
126
127 /* Free all of the mtd devices */
128 list_for_each_entry_safe(map, scratch, &window->maps, list) {
129 if (map->rsrc.parent)
130 release_resource(&map->rsrc);
131 del_mtd_device(map->mtd);
132 map_destroy(map->mtd);
133 list_del(&map->list);
134 kfree(map);
135 }
136 if (window->rsrc.parent)
137 release_resource(&window->rsrc);
138 if (window->virt) {
139 iounmap(window->virt);
140 window->virt = NULL;
141 window->phys = 0;
142 window->size = 0;
143 }
144 pci_dev_put(window->pdev);
145}
146
147static int __devinit esb2rom_init_one(struct pci_dev *pdev,
148 const struct pci_device_id *ent)
149{
150 static char *rom_probe_types[] = { "cfi_probe", "jedec_probe", NULL };
151 struct esb2rom_window *window = &esb2rom_window;
152 struct esb2rom_map_info *map = NULL;
153 unsigned long map_top;
154 u8 byte;
155 u16 word;
156
157 /* For now I just handle the ecb2 and I assume there
158 * are not a lot of resources up at the top of the address
159 * space. It is possible to handle other devices in the
160 * top 16MiB but it is very painful. Also since
161 * you can only really attach a FWH to an ICHX there
162 * a number of simplifications you can make.
163 *
164 * Also you can page firmware hubs if an 8MiB window isn't enough
165 * but don't currently handle that case either.
166 */
167 window->pdev = pci_dev_get(pdev);
168
169 /* RLG: experiment 2. Force the window registers to the widest values */
170
171/*
172 pci_read_config_word(pdev, FWH_DEC_EN1, &word);
173 printk(KERN_DEBUG "Original FWH_DEC_EN1 : %x\n", word);
174 pci_write_config_byte(pdev, FWH_DEC_EN1, 0xff);
175 pci_read_config_byte(pdev, FWH_DEC_EN1, &byte);
176 printk(KERN_DEBUG "New FWH_DEC_EN1 : %x\n", byte);
177
178 pci_read_config_byte(pdev, FWH_DEC_EN2, &byte);
179 printk(KERN_DEBUG "Original FWH_DEC_EN2 : %x\n", byte);
180 pci_write_config_byte(pdev, FWH_DEC_EN2, 0x0f);
181 pci_read_config_byte(pdev, FWH_DEC_EN2, &byte);
182 printk(KERN_DEBUG "New FWH_DEC_EN2 : %x\n", byte);
183*/
184
185 /* Find a region continuous to the end of the ROM window */
186 window->phys = 0;
187 pci_read_config_word(pdev, FWH_DEC_EN1, &word);
188 printk(KERN_DEBUG "pci_read_config_byte : %x\n", word);
189
190 if ((word & FWH_8MiB) == FWH_8MiB)
191 window->phys = 0xff400000;
192 else if ((word & FWH_7MiB) == FWH_7MiB)
193 window->phys = 0xff500000;
194 else if ((word & FWH_6MiB) == FWH_6MiB)
195 window->phys = 0xff600000;
196 else if ((word & FWH_5MiB) == FWH_5MiB)
197 window->phys = 0xFF700000;
198 else if ((word & FWH_4MiB) == FWH_4MiB)
199 window->phys = 0xffc00000;
200 else if ((word & FWH_3_5MiB) == FWH_3_5MiB)
201 window->phys = 0xffc80000;
202 else if ((word & FWH_3MiB) == FWH_3MiB)
203 window->phys = 0xffd00000;
204 else if ((word & FWH_2_5MiB) == FWH_2_5MiB)
205 window->phys = 0xffd80000;
206 else if ((word & FWH_2MiB) == FWH_2MiB)
207 window->phys = 0xffe00000;
208 else if ((word & FWH_1_5MiB) == FWH_1_5MiB)
209 window->phys = 0xffe80000;
210 else if ((word & FWH_1MiB) == FWH_1MiB)
211 window->phys = 0xfff00000;
212 else if ((word & FWH_0_5MiB) == FWH_0_5MiB)
213 window->phys = 0xfff80000;
214
215 /* reserved 0x0020 and 0x0010 */
216 window->phys -= 0x400000UL;
217 window->size = (0xffffffffUL - window->phys) + 1UL;
218
219 /* Enable writes through the rom window */
220 pci_read_config_byte(pdev, BIOS_CNTL, &byte);
221 if (!(byte & BIOS_WRITE_ENABLE) && (byte & (BIOS_LOCK_ENABLE))) {
222 /* The BIOS will generate an error if I enable
223 * this device, so don't even try.
224 */
225 printk(KERN_ERR MOD_NAME ": firmware access control, I can't enable writes\n");
226 goto out;
227 }
228 pci_write_config_byte(pdev, BIOS_CNTL, byte | BIOS_WRITE_ENABLE);
229
230 /*
231 * Try to reserve the window mem region. If this fails then
232 * it is likely due to the window being "reseved" by the BIOS.
233 */
234 window->rsrc.name = MOD_NAME;
235 window->rsrc.start = window->phys;
236 window->rsrc.end = window->phys + window->size - 1;
237 window->rsrc.flags = IORESOURCE_MEM | IORESOURCE_BUSY;
238 if (request_resource(&iomem_resource, &window->rsrc)) {
239 window->rsrc.parent = NULL;
240 printk(KERN_DEBUG MOD_NAME
241 ": %s(): Unable to register resource"
242 " 0x%.08llx-0x%.08llx - kernel bug?\n",
243 __func__,
244 (unsigned long long)window->rsrc.start,
245 (unsigned long long)window->rsrc.end);
246 }
247
248 /* Map the firmware hub into my address space. */
249 window->virt = ioremap_nocache(window->phys, window->size);
250 if (!window->virt) {
251 printk(KERN_ERR MOD_NAME ": ioremap(%08lx, %08lx) failed\n",
252 window->phys, window->size);
253 goto out;
254 }
255
256 /* Get the first address to look for an rom chip at */
257 map_top = window->phys;
258 if ((window->phys & 0x3fffff) != 0) {
259 /* if not aligned on 4MiB, look 4MiB lower in address space */
260 map_top = window->phys + 0x400000;
261 }
262#if 1
263 /* The probe sequence run over the firmware hub lock
264 * registers sets them to 0x7 (no access).
265 * (Insane hardware design, but most copied Intel's.)
266 * ==> Probe at most the last 4M of the address space.
267 */
268 if (map_top < 0xffc00000)
269 map_top = 0xffc00000;
270#endif
271 /* Loop through and look for rom chips */
272 while ((map_top - 1) < 0xffffffffUL) {
273 struct cfi_private *cfi;
274 unsigned long offset;
275 int i;
276
277 if (!map)
278 map = kmalloc(sizeof(*map), GFP_KERNEL);
279 if (!map) {
280 printk(KERN_ERR MOD_NAME ": kmalloc failed");
281 goto out;
282 }
283 memset(map, 0, sizeof(*map));
284 INIT_LIST_HEAD(&map->list);
285 map->map.name = map->map_name;
286 map->map.phys = map_top;
287 offset = map_top - window->phys;
288 map->map.virt = (void __iomem *)
289 (((unsigned long)(window->virt)) + offset);
290 map->map.size = 0xffffffffUL - map_top + 1UL;
291 /* Set the name of the map to the address I am trying */
292 sprintf(map->map_name, "%s @%08lx",
293 MOD_NAME, map->map.phys);
294
295 /* Firmware hubs only use vpp when being programmed
296 * in a factory setting. So in-place programming
297 * needs to use a different method.
298 */
299 for(map->map.bankwidth = 32; map->map.bankwidth;
300 map->map.bankwidth >>= 1) {
301 char **probe_type;
302 /* Skip bankwidths that are not supported */
303 if (!map_bankwidth_supported(map->map.bankwidth))
304 continue;
305
306 /* Setup the map methods */
307 simple_map_init(&map->map);
308
309 /* Try all of the probe methods */
310 probe_type = rom_probe_types;
311 for(; *probe_type; probe_type++) {
312 map->mtd = do_map_probe(*probe_type, &map->map);
313 if (map->mtd)
314 goto found;
315 }
316 }
317 map_top += ROM_PROBE_STEP_SIZE;
318 continue;
319 found:
320 /* Trim the size if we are larger than the map */
321 if (map->mtd->size > map->map.size) {
322 printk(KERN_WARNING MOD_NAME
323 " rom(%u) larger than window(%lu). fixing...\n",
324 map->mtd->size, map->map.size);
325 map->mtd->size = map->map.size;
326 }
327 if (window->rsrc.parent) {
328 /*
329 * Registering the MTD device in iomem may not be possible
330 * if there is a BIOS "reserved" and BUSY range. If this
331 * fails then continue anyway.
332 */
333 map->rsrc.name = map->map_name;
334 map->rsrc.start = map->map.phys;
335 map->rsrc.end = map->map.phys + map->mtd->size - 1;
336 map->rsrc.flags = IORESOURCE_MEM | IORESOURCE_BUSY;
337 if (request_resource(&window->rsrc, &map->rsrc)) {
338 printk(KERN_ERR MOD_NAME
339 ": cannot reserve MTD resource\n");
340 map->rsrc.parent = NULL;
341 }
342 }
343
344 /* Make the whole region visible in the map */
345 map->map.virt = window->virt;
346 map->map.phys = window->phys;
347 cfi = map->map.fldrv_priv;
348 for(i = 0; i < cfi->numchips; i++)
349 cfi->chips[i].start += offset;
350
351 /* Now that the mtd devices is complete claim and export it */
352 map->mtd->owner = THIS_MODULE;
353 if (add_mtd_device(map->mtd)) {
354 map_destroy(map->mtd);
355 map->mtd = NULL;
356 goto out;
357 }
358
359 /* Calculate the new value of map_top */
360 map_top += map->mtd->size;
361
362 /* File away the map structure */
363 list_add(&map->list, &window->maps);
364 map = NULL;
365 }
366
367 out:
368 /* Free any left over map structures */
369 kfree(map);
370
371 /* See if I have any map structures */
372 if (list_empty(&window->maps)) {
373 esb2rom_cleanup(window);
374 return -ENODEV;
375 }
376 return 0;
377}
378
379static void __devexit esb2rom_remove_one (struct pci_dev *pdev)
380{
381 struct esb2rom_window *window = &esb2rom_window;
382 esb2rom_cleanup(window);
383}
384
385static struct pci_device_id esb2rom_pci_tbl[] __devinitdata = {
386 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801BA_0,
387 PCI_ANY_ID, PCI_ANY_ID, },
388 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_0,
389 PCI_ANY_ID, PCI_ANY_ID, },
390 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_0,
391 PCI_ANY_ID, PCI_ANY_ID, },
392 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801EB_0,
393 PCI_ANY_ID, PCI_ANY_ID, },
394 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB_1,
395 PCI_ANY_ID, PCI_ANY_ID, },
396 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB2_0,
397 PCI_ANY_ID, PCI_ANY_ID, },
398 { 0, },
399};
400
401#if 0
402MODULE_DEVICE_TABLE(pci, esb2rom_pci_tbl);
403
404static struct pci_driver esb2rom_driver = {
405 .name = MOD_NAME,
406 .id_table = esb2rom_pci_tbl,
407 .probe = esb2rom_init_one,
408 .remove = esb2rom_remove_one,
409};
410#endif
411
412static int __init init_esb2rom(void)
413{
414 struct pci_dev *pdev;
415 struct pci_device_id *id;
416 int retVal;
417
418 pdev = NULL;
419 for (id = esb2rom_pci_tbl; id->vendor; id++) {
420 printk(KERN_DEBUG "device id = %x\n", id->device);
421 pdev = pci_get_device(id->vendor, id->device, NULL);
422 if (pdev) {
423 printk(KERN_DEBUG "matched device = %x\n", id->device);
424 break;
425 }
426 }
427 if (pdev) {
428 printk(KERN_DEBUG "matched device id %x\n", id->device);
429 retVal = esb2rom_init_one(pdev, &esb2rom_pci_tbl[0]);
430 pci_dev_put(pdev);
431 printk(KERN_DEBUG "retVal = %d\n", retVal);
432 return retVal;
433 }
434 return -ENXIO;
435#if 0
436 return pci_register_driver(&esb2rom_driver);
437#endif
438}
439
440static void __exit cleanup_esb2rom(void)
441{
442 esb2rom_remove_one(esb2rom_window.pdev);
443}
444
445module_init(init_esb2rom);
446module_exit(cleanup_esb2rom);
447
448MODULE_LICENSE("GPL");
449MODULE_AUTHOR("Lew Glendenning <lglendenning@lnxi.com>");
450MODULE_DESCRIPTION("MTD map driver for BIOS chips on the ESB2 southbridge");
diff --git a/drivers/mtd/maps/integrator-flash.c b/drivers/mtd/maps/integrator-flash.c
index c8db01b3e45f..6946d802e6f6 100644
--- a/drivers/mtd/maps/integrator-flash.c
+++ b/drivers/mtd/maps/integrator-flash.c
@@ -75,14 +75,12 @@ static int armflash_probe(struct platform_device *dev)
75 int err; 75 int err;
76 void __iomem *base; 76 void __iomem *base;
77 77
78 info = kmalloc(sizeof(struct armflash_info), GFP_KERNEL); 78 info = kzalloc(sizeof(struct armflash_info), GFP_KERNEL);
79 if (!info) { 79 if (!info) {
80 err = -ENOMEM; 80 err = -ENOMEM;
81 goto out; 81 goto out;
82 } 82 }
83 83
84 memset(info, 0, sizeof(struct armflash_info));
85
86 info->plat = plat; 84 info->plat = plat;
87 if (plat && plat->init) { 85 if (plat && plat->init) {
88 err = plat->init(); 86 err = plat->init();
diff --git a/drivers/mtd/maps/nettel.c b/drivers/mtd/maps/nettel.c
index f9e8e5bcbc33..9f53c655af3a 100644
--- a/drivers/mtd/maps/nettel.c
+++ b/drivers/mtd/maps/nettel.c
@@ -20,6 +20,7 @@
20#include <linux/mtd/partitions.h> 20#include <linux/mtd/partitions.h>
21#include <linux/mtd/cfi.h> 21#include <linux/mtd/cfi.h>
22#include <linux/reboot.h> 22#include <linux/reboot.h>
23#include <linux/err.h>
23#include <linux/kdev_t.h> 24#include <linux/kdev_t.h>
24#include <linux/root_dev.h> 25#include <linux/root_dev.h>
25#include <asm/io.h> 26#include <asm/io.h>
@@ -178,7 +179,7 @@ int nettel_eraseconfig(void)
178 179
179 init_waitqueue_head(&wait_q); 180 init_waitqueue_head(&wait_q);
180 mtd = get_mtd_device(NULL, 2); 181 mtd = get_mtd_device(NULL, 2);
181 if (mtd) { 182 if (!IS_ERR(mtd)) {
182 nettel_erase.mtd = mtd; 183 nettel_erase.mtd = mtd;
183 nettel_erase.callback = nettel_erasecallback; 184 nettel_erase.callback = nettel_erasecallback;
184 nettel_erase.callback = NULL; 185 nettel_erase.callback = NULL;
@@ -471,7 +472,7 @@ out_unmap2:
471 iounmap(nettel_amd_map.virt); 472 iounmap(nettel_amd_map.virt);
472 473
473 return(rc); 474 return(rc);
474 475
475} 476}
476 477
477/****************************************************************************/ 478/****************************************************************************/
diff --git a/drivers/mtd/maps/omap_nor.c b/drivers/mtd/maps/omap_nor.c
index 418afffb2d80..e8d9ae535673 100644
--- a/drivers/mtd/maps/omap_nor.c
+++ b/drivers/mtd/maps/omap_nor.c
@@ -78,12 +78,10 @@ static int __devinit omapflash_probe(struct platform_device *pdev)
78 struct resource *res = pdev->resource; 78 struct resource *res = pdev->resource;
79 unsigned long size = res->end - res->start + 1; 79 unsigned long size = res->end - res->start + 1;
80 80
81 info = kmalloc(sizeof(struct omapflash_info), GFP_KERNEL); 81 info = kzalloc(sizeof(struct omapflash_info), GFP_KERNEL);
82 if (!info) 82 if (!info)
83 return -ENOMEM; 83 return -ENOMEM;
84 84
85 memset(info, 0, sizeof(struct omapflash_info));
86
87 if (!request_mem_region(res->start, size, "flash")) { 85 if (!request_mem_region(res->start, size, "flash")) {
88 err = -EBUSY; 86 err = -EBUSY;
89 goto out_free_info; 87 goto out_free_info;
diff --git a/drivers/mtd/maps/pcmciamtd.c b/drivers/mtd/maps/pcmciamtd.c
index 995347b1beba..eaeb56a4070a 100644
--- a/drivers/mtd/maps/pcmciamtd.c
+++ b/drivers/mtd/maps/pcmciamtd.c
@@ -735,11 +735,10 @@ static int pcmciamtd_probe(struct pcmcia_device *link)
735 struct pcmciamtd_dev *dev; 735 struct pcmciamtd_dev *dev;
736 736
737 /* Create new memory card device */ 737 /* Create new memory card device */
738 dev = kmalloc(sizeof(*dev), GFP_KERNEL); 738 dev = kzalloc(sizeof(*dev), GFP_KERNEL);
739 if (!dev) return -ENOMEM; 739 if (!dev) return -ENOMEM;
740 DEBUG(1, "dev=0x%p", dev); 740 DEBUG(1, "dev=0x%p", dev);
741 741
742 memset(dev, 0, sizeof(*dev));
743 dev->p_dev = link; 742 dev->p_dev = link;
744 link->priv = dev; 743 link->priv = dev;
745 744
diff --git a/drivers/mtd/maps/physmap.c b/drivers/mtd/maps/physmap.c
index d1717763f719..28c5ffd75233 100644
--- a/drivers/mtd/maps/physmap.c
+++ b/drivers/mtd/maps/physmap.c
@@ -89,15 +89,14 @@ static int physmap_flash_probe(struct platform_device *dev)
89 return -ENODEV; 89 return -ENODEV;
90 90
91 printk(KERN_NOTICE "physmap platform flash device: %.8llx at %.8llx\n", 91 printk(KERN_NOTICE "physmap platform flash device: %.8llx at %.8llx\n",
92 (unsigned long long)dev->resource->end - dev->resource->start + 1, 92 (unsigned long long)(dev->resource->end - dev->resource->start + 1),
93 (unsigned long long)dev->resource->start); 93 (unsigned long long)dev->resource->start);
94 94
95 info = kmalloc(sizeof(struct physmap_flash_info), GFP_KERNEL); 95 info = kzalloc(sizeof(struct physmap_flash_info), GFP_KERNEL);
96 if (info == NULL) { 96 if (info == NULL) {
97 err = -ENOMEM; 97 err = -ENOMEM;
98 goto err_out; 98 goto err_out;
99 } 99 }
100 memset(info, 0, sizeof(*info));
101 100
102 platform_set_drvdata(dev, info); 101 platform_set_drvdata(dev, info);
103 102
diff --git a/drivers/mtd/maps/physmap_of.c b/drivers/mtd/maps/physmap_of.c
new file mode 100644
index 000000000000..7efe744ad31e
--- /dev/null
+++ b/drivers/mtd/maps/physmap_of.c
@@ -0,0 +1,255 @@
1/*
2 * Normal mappings of chips in physical memory for OF devices
3 *
4 * Copyright (C) 2006 MontaVista Software Inc.
5 * Author: Vitaly Wool <vwool@ru.mvista.com>
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation; either version 2 of the License, or (at your
10 * option) any later version.
11 */
12
13#include <linux/module.h>
14#include <linux/types.h>
15#include <linux/kernel.h>
16#include <linux/init.h>
17#include <linux/slab.h>
18#include <linux/device.h>
19#include <linux/mtd/mtd.h>
20#include <linux/mtd/map.h>
21#include <linux/mtd/partitions.h>
22#include <linux/mtd/physmap.h>
23#include <asm/io.h>
24#include <asm/prom.h>
25#include <asm/of_device.h>
26#include <asm/of_platform.h>
27
28struct physmap_flash_info {
29 struct mtd_info *mtd;
30 struct map_info map;
31 struct resource *res;
32#ifdef CONFIG_MTD_PARTITIONS
33 int nr_parts;
34 struct mtd_partition *parts;
35#endif
36};
37
38static const char *rom_probe_types[] = { "cfi_probe", "jedec_probe", "map_rom", NULL };
39#ifdef CONFIG_MTD_PARTITIONS
40static const char *part_probe_types[] = { "cmdlinepart", "RedBoot", NULL };
41#endif
42
43#ifdef CONFIG_MTD_PARTITIONS
44static int parse_flash_partitions(struct device_node *node,
45 struct mtd_partition **parts)
46{
47 int i, plen, retval = -ENOMEM;
48 const u32 *part;
49 const char *name;
50
51 part = get_property(node, "partitions", &plen);
52 if (part == NULL)
53 goto err;
54
55 retval = plen / (2 * sizeof(u32));
56 *parts = kzalloc(retval * sizeof(struct mtd_partition), GFP_KERNEL);
57 if (*parts == NULL) {
58 printk(KERN_ERR "Can't allocate the flash partition data!\n");
59 goto err;
60 }
61
62 name = get_property(node, "partition-names", &plen);
63
64 for (i = 0; i < retval; i++) {
65 (*parts)[i].offset = *part++;
66 (*parts)[i].size = *part & ~1;
67 if (*part++ & 1) /* bit 0 set signifies read only partition */
68 (*parts)[i].mask_flags = MTD_WRITEABLE;
69
70 if (name != NULL && plen > 0) {
71 int len = strlen(name) + 1;
72
73 (*parts)[i].name = (char *)name;
74 plen -= len;
75 name += len;
76 } else
77 (*parts)[i].name = "unnamed";
78 }
79err:
80 return retval;
81}
82#endif
83
84static int of_physmap_remove(struct of_device *dev)
85{
86 struct physmap_flash_info *info;
87
88 info = dev_get_drvdata(&dev->dev);
89 if (info == NULL)
90 return 0;
91 dev_set_drvdata(&dev->dev, NULL);
92
93 if (info->mtd != NULL) {
94#ifdef CONFIG_MTD_PARTITIONS
95 if (info->nr_parts) {
96 del_mtd_partitions(info->mtd);
97 kfree(info->parts);
98 } else {
99 del_mtd_device(info->mtd);
100 }
101#else
102 del_mtd_device(info->mtd);
103#endif
104 map_destroy(info->mtd);
105 }
106
107 if (info->map.virt != NULL)
108 iounmap(info->map.virt);
109
110 if (info->res != NULL) {
111 release_resource(info->res);
112 kfree(info->res);
113 }
114
115 return 0;
116}
117
118static int __devinit of_physmap_probe(struct of_device *dev, const struct of_device_id *match)
119{
120 struct device_node *dp = dev->node;
121 struct resource res;
122 struct physmap_flash_info *info;
123 const char **probe_type;
124 const char *of_probe;
125 const u32 *width;
126 int err;
127
128
129 if (of_address_to_resource(dp, 0, &res)) {
130 dev_err(&dev->dev, "Can't get the flash mapping!\n");
131 err = -EINVAL;
132 goto err_out;
133 }
134
135 dev_dbg(&dev->dev, "physmap flash device: %.8llx at %.8llx\n",
136 (unsigned long long)res.end - res.start + 1,
137 (unsigned long long)res.start);
138
139 info = kzalloc(sizeof(struct physmap_flash_info), GFP_KERNEL);
140 if (info == NULL) {
141 err = -ENOMEM;
142 goto err_out;
143 }
144 memset(info, 0, sizeof(*info));
145
146 dev_set_drvdata(&dev->dev, info);
147
148 info->res = request_mem_region(res.start, res.end - res.start + 1,
149 dev->dev.bus_id);
150 if (info->res == NULL) {
151 dev_err(&dev->dev, "Could not reserve memory region\n");
152 err = -ENOMEM;
153 goto err_out;
154 }
155
156 width = get_property(dp, "bank-width", NULL);
157 if (width == NULL) {
158 dev_err(&dev->dev, "Can't get the flash bank width!\n");
159 err = -EINVAL;
160 goto err_out;
161 }
162
163 info->map.name = dev->dev.bus_id;
164 info->map.phys = res.start;
165 info->map.size = res.end - res.start + 1;
166 info->map.bankwidth = *width;
167
168 info->map.virt = ioremap(info->map.phys, info->map.size);
169 if (info->map.virt == NULL) {
170 dev_err(&dev->dev, "Failed to ioremap flash region\n");
171 err = EIO;
172 goto err_out;
173 }
174
175 simple_map_init(&info->map);
176
177 of_probe = get_property(dp, "probe-type", NULL);
178 if (of_probe == NULL) {
179 probe_type = rom_probe_types;
180 for (; info->mtd == NULL && *probe_type != NULL; probe_type++)
181 info->mtd = do_map_probe(*probe_type, &info->map);
182 } else if (!strcmp(of_probe, "CFI"))
183 info->mtd = do_map_probe("cfi_probe", &info->map);
184 else if (!strcmp(of_probe, "JEDEC"))
185 info->mtd = do_map_probe("jedec_probe", &info->map);
186 else {
187 if (strcmp(of_probe, "ROM"))
188 dev_dbg(&dev->dev, "map_probe: don't know probe type "
189 "'%s', mapping as rom\n");
190 info->mtd = do_map_probe("mtd_rom", &info->map);
191 }
192 if (info->mtd == NULL) {
193 dev_err(&dev->dev, "map_probe failed\n");
194 err = -ENXIO;
195 goto err_out;
196 }
197 info->mtd->owner = THIS_MODULE;
198
199#ifdef CONFIG_MTD_PARTITIONS
200 err = parse_mtd_partitions(info->mtd, part_probe_types, &info->parts, 0);
201 if (err > 0) {
202 add_mtd_partitions(info->mtd, info->parts, err);
203 } else if ((err = parse_flash_partitions(dp, &info->parts)) > 0) {
204 dev_info(&dev->dev, "Using OF partition information\n");
205 add_mtd_partitions(info->mtd, info->parts, err);
206 info->nr_parts = err;
207 } else
208#endif
209
210 add_mtd_device(info->mtd);
211 return 0;
212
213err_out:
214 of_physmap_remove(dev);
215 return err;
216
217 return 0;
218
219
220}
221
222static struct of_device_id of_physmap_match[] = {
223 {
224 .type = "rom",
225 .compatible = "direct-mapped"
226 },
227 { },
228};
229
230MODULE_DEVICE_TABLE(of, of_physmap_match);
231
232
233static struct of_platform_driver of_physmap_flash_driver = {
234 .name = "physmap-flash",
235 .match_table = of_physmap_match,
236 .probe = of_physmap_probe,
237 .remove = of_physmap_remove,
238};
239
240static int __init of_physmap_init(void)
241{
242 return of_register_platform_driver(&of_physmap_flash_driver);
243}
244
245static void __exit of_physmap_exit(void)
246{
247 of_unregister_platform_driver(&of_physmap_flash_driver);
248}
249
250module_init(of_physmap_init);
251module_exit(of_physmap_exit);
252
253MODULE_LICENSE("GPL");
254MODULE_AUTHOR("Vitaly Wool <vwool@ru.mvista.com>");
255MODULE_DESCRIPTION("Configurable MTD map driver for OF");
diff --git a/drivers/mtd/maps/plat-ram.c b/drivers/mtd/maps/plat-ram.c
index 5d3c75451ca2..2b6504ecbbd1 100644
--- a/drivers/mtd/maps/plat-ram.c
+++ b/drivers/mtd/maps/plat-ram.c
@@ -147,14 +147,13 @@ static int platram_probe(struct platform_device *pdev)
147 147
148 pdata = pdev->dev.platform_data; 148 pdata = pdev->dev.platform_data;
149 149
150 info = kmalloc(sizeof(*info), GFP_KERNEL); 150 info = kzalloc(sizeof(*info), GFP_KERNEL);
151 if (info == NULL) { 151 if (info == NULL) {
152 dev_err(&pdev->dev, "no memory for flash info\n"); 152 dev_err(&pdev->dev, "no memory for flash info\n");
153 err = -ENOMEM; 153 err = -ENOMEM;
154 goto exit_error; 154 goto exit_error;
155 } 155 }
156 156
157 memset(info, 0, sizeof(*info));
158 platform_set_drvdata(pdev, info); 157 platform_set_drvdata(pdev, info);
159 158
160 info->dev = &pdev->dev; 159 info->dev = &pdev->dev;
diff --git a/drivers/mtd/maps/sa1100-flash.c b/drivers/mtd/maps/sa1100-flash.c
index 950bf1c57841..f904e6bd02e0 100644
--- a/drivers/mtd/maps/sa1100-flash.c
+++ b/drivers/mtd/maps/sa1100-flash.c
@@ -273,14 +273,12 @@ sa1100_setup_mtd(struct platform_device *pdev, struct flash_platform_data *plat)
273 /* 273 /*
274 * Allocate the map_info structs in one go. 274 * Allocate the map_info structs in one go.
275 */ 275 */
276 info = kmalloc(size, GFP_KERNEL); 276 info = kzalloc(size, GFP_KERNEL);
277 if (!info) { 277 if (!info) {
278 ret = -ENOMEM; 278 ret = -ENOMEM;
279 goto out; 279 goto out;
280 } 280 }
281 281
282 memset(info, 0, size);
283
284 if (plat->init) { 282 if (plat->init) {
285 ret = plat->init(); 283 ret = plat->init();
286 if (ret) 284 if (ret)
diff --git a/drivers/mtd/maps/tqm834x.c b/drivers/mtd/maps/tqm834x.c
index 58e5912bd381..9adc970e55e6 100644
--- a/drivers/mtd/maps/tqm834x.c
+++ b/drivers/mtd/maps/tqm834x.c
@@ -132,20 +132,16 @@ static int __init init_tqm834x_mtd(void)
132 132
133 pr_debug("%s: chip probing count %d\n", __FUNCTION__, idx); 133 pr_debug("%s: chip probing count %d\n", __FUNCTION__, idx);
134 134
135 map_banks[idx] = 135 map_banks[idx] = kzalloc(sizeof(struct map_info), GFP_KERNEL);
136 (struct map_info *)kmalloc(sizeof(struct map_info),
137 GFP_KERNEL);
138 if (map_banks[idx] == NULL) { 136 if (map_banks[idx] == NULL) {
139 ret = -ENOMEM; 137 ret = -ENOMEM;
140 goto error_mem; 138 goto error_mem;
141 } 139 }
142 memset((void *)map_banks[idx], 0, sizeof(struct map_info)); 140 map_banks[idx]->name = kzalloc(16, GFP_KERNEL);
143 map_banks[idx]->name = (char *)kmalloc(16, GFP_KERNEL);
144 if (map_banks[idx]->name == NULL) { 141 if (map_banks[idx]->name == NULL) {
145 ret = -ENOMEM; 142 ret = -ENOMEM;
146 goto error_mem; 143 goto error_mem;
147 } 144 }
148 memset((void *)map_banks[idx]->name, 0, 16);
149 145
150 sprintf(map_banks[idx]->name, "TQM834x-%d", idx); 146 sprintf(map_banks[idx]->name, "TQM834x-%d", idx);
151 map_banks[idx]->size = flash_size; 147 map_banks[idx]->size = flash_size;
diff --git a/drivers/mtd/maps/tqm8xxl.c b/drivers/mtd/maps/tqm8xxl.c
index 19578ba84ee8..37e4ded9b600 100644
--- a/drivers/mtd/maps/tqm8xxl.c
+++ b/drivers/mtd/maps/tqm8xxl.c
@@ -134,14 +134,13 @@ int __init init_tqm_mtd(void)
134 134
135 printk(KERN_INFO "%s: chip probing count %d\n", __FUNCTION__, idx); 135 printk(KERN_INFO "%s: chip probing count %d\n", __FUNCTION__, idx);
136 136
137 map_banks[idx] = (struct map_info *)kmalloc(sizeof(struct map_info), GFP_KERNEL); 137 map_banks[idx] = kzalloc(sizeof(struct map_info), GFP_KERNEL);
138 if(map_banks[idx] == NULL) { 138 if(map_banks[idx] == NULL) {
139 ret = -ENOMEM; 139 ret = -ENOMEM;
140 /* FIXME: What if some MTD devices were probed already? */ 140 /* FIXME: What if some MTD devices were probed already? */
141 goto error_mem; 141 goto error_mem;
142 } 142 }
143 143
144 memset((void *)map_banks[idx], 0, sizeof(struct map_info));
145 map_banks[idx]->name = (char *)kmalloc(16, GFP_KERNEL); 144 map_banks[idx]->name = (char *)kmalloc(16, GFP_KERNEL);
146 145
147 if (!map_banks[idx]->name) { 146 if (!map_banks[idx]->name) {
diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c
index 178b53b56be9..b879a66daa9e 100644
--- a/drivers/mtd/mtd_blkdevs.c
+++ b/drivers/mtd/mtd_blkdevs.c
@@ -42,19 +42,20 @@ static int do_blktrans_request(struct mtd_blktrans_ops *tr,
42 unsigned long block, nsect; 42 unsigned long block, nsect;
43 char *buf; 43 char *buf;
44 44
45 block = req->sector; 45 block = req->sector << 9 >> tr->blkshift;
46 nsect = req->current_nr_sectors; 46 nsect = req->current_nr_sectors << 9 >> tr->blkshift;
47
47 buf = req->buffer; 48 buf = req->buffer;
48 49
49 if (!blk_fs_request(req)) 50 if (!blk_fs_request(req))
50 return 0; 51 return 0;
51 52
52 if (block + nsect > get_capacity(req->rq_disk)) 53 if (req->sector + req->current_nr_sectors > get_capacity(req->rq_disk))
53 return 0; 54 return 0;
54 55
55 switch(rq_data_dir(req)) { 56 switch(rq_data_dir(req)) {
56 case READ: 57 case READ:
57 for (; nsect > 0; nsect--, block++, buf += 512) 58 for (; nsect > 0; nsect--, block++, buf += tr->blksize)
58 if (tr->readsect(dev, block, buf)) 59 if (tr->readsect(dev, block, buf))
59 return 0; 60 return 0;
60 return 1; 61 return 1;
@@ -63,7 +64,7 @@ static int do_blktrans_request(struct mtd_blktrans_ops *tr,
63 if (!tr->writesect) 64 if (!tr->writesect)
64 return 0; 65 return 0;
65 66
66 for (; nsect > 0; nsect--, block++, buf += 512) 67 for (; nsect > 0; nsect--, block++, buf += tr->blksize)
67 if (tr->writesect(dev, block, buf)) 68 if (tr->writesect(dev, block, buf))
68 return 0; 69 return 0;
69 return 1; 70 return 1;
@@ -297,7 +298,7 @@ int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new)
297 298
298 /* 2.5 has capacity in units of 512 bytes while still 299 /* 2.5 has capacity in units of 512 bytes while still
299 having BLOCK_SIZE_BITS set to 10. Just to keep us amused. */ 300 having BLOCK_SIZE_BITS set to 10. Just to keep us amused. */
300 set_capacity(gd, (new->size * new->blksize) >> 9); 301 set_capacity(gd, (new->size * tr->blksize) >> 9);
301 302
302 gd->private_data = new; 303 gd->private_data = new;
303 new->blkcore_priv = gd; 304 new->blkcore_priv = gd;
@@ -372,12 +373,10 @@ int register_mtd_blktrans(struct mtd_blktrans_ops *tr)
372 if (!blktrans_notifier.list.next) 373 if (!blktrans_notifier.list.next)
373 register_mtd_user(&blktrans_notifier); 374 register_mtd_user(&blktrans_notifier);
374 375
375 tr->blkcore_priv = kmalloc(sizeof(*tr->blkcore_priv), GFP_KERNEL); 376 tr->blkcore_priv = kzalloc(sizeof(*tr->blkcore_priv), GFP_KERNEL);
376 if (!tr->blkcore_priv) 377 if (!tr->blkcore_priv)
377 return -ENOMEM; 378 return -ENOMEM;
378 379
379 memset(tr->blkcore_priv, 0, sizeof(*tr->blkcore_priv));
380
381 mutex_lock(&mtd_table_mutex); 380 mutex_lock(&mtd_table_mutex);
382 381
383 ret = register_blkdev(tr->major, tr->name); 382 ret = register_blkdev(tr->major, tr->name);
@@ -401,6 +400,8 @@ int register_mtd_blktrans(struct mtd_blktrans_ops *tr)
401 } 400 }
402 401
403 tr->blkcore_priv->rq->queuedata = tr; 402 tr->blkcore_priv->rq->queuedata = tr;
403 blk_queue_hardsect_size(tr->blkcore_priv->rq, tr->blksize);
404 tr->blkshift = ffs(tr->blksize) - 1;
404 405
405 ret = kernel_thread(mtd_blktrans_thread, tr, CLONE_KERNEL); 406 ret = kernel_thread(mtd_blktrans_thread, tr, CLONE_KERNEL);
406 if (ret < 0) { 407 if (ret < 0) {
diff --git a/drivers/mtd/mtdblock.c b/drivers/mtd/mtdblock.c
index 04ed34694b14..952da30b1745 100644
--- a/drivers/mtd/mtdblock.c
+++ b/drivers/mtd/mtdblock.c
@@ -278,11 +278,10 @@ static int mtdblock_open(struct mtd_blktrans_dev *mbd)
278 } 278 }
279 279
280 /* OK, it's not open. Create cache info for it */ 280 /* OK, it's not open. Create cache info for it */
281 mtdblk = kmalloc(sizeof(struct mtdblk_dev), GFP_KERNEL); 281 mtdblk = kzalloc(sizeof(struct mtdblk_dev), GFP_KERNEL);
282 if (!mtdblk) 282 if (!mtdblk)
283 return -ENOMEM; 283 return -ENOMEM;
284 284
285 memset(mtdblk, 0, sizeof(*mtdblk));
286 mtdblk->count = 1; 285 mtdblk->count = 1;
287 mtdblk->mtd = mtd; 286 mtdblk->mtd = mtd;
288 287
@@ -339,16 +338,14 @@ static int mtdblock_flush(struct mtd_blktrans_dev *dev)
339 338
340static void mtdblock_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd) 339static void mtdblock_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd)
341{ 340{
342 struct mtd_blktrans_dev *dev = kmalloc(sizeof(*dev), GFP_KERNEL); 341 struct mtd_blktrans_dev *dev = kzalloc(sizeof(*dev), GFP_KERNEL);
343 342
344 if (!dev) 343 if (!dev)
345 return; 344 return;
346 345
347 memset(dev, 0, sizeof(*dev));
348
349 dev->mtd = mtd; 346 dev->mtd = mtd;
350 dev->devnum = mtd->index; 347 dev->devnum = mtd->index;
351 dev->blksize = 512; 348
352 dev->size = mtd->size >> 9; 349 dev->size = mtd->size >> 9;
353 dev->tr = tr; 350 dev->tr = tr;
354 351
@@ -368,6 +365,7 @@ static struct mtd_blktrans_ops mtdblock_tr = {
368 .name = "mtdblock", 365 .name = "mtdblock",
369 .major = 31, 366 .major = 31,
370 .part_bits = 0, 367 .part_bits = 0,
368 .blksize = 512,
371 .open = mtdblock_open, 369 .open = mtdblock_open,
372 .flush = mtdblock_flush, 370 .flush = mtdblock_flush,
373 .release = mtdblock_release, 371 .release = mtdblock_release,
diff --git a/drivers/mtd/mtdblock_ro.c b/drivers/mtd/mtdblock_ro.c
index 29563ed258a4..f79dbb49b1a2 100644
--- a/drivers/mtd/mtdblock_ro.c
+++ b/drivers/mtd/mtdblock_ro.c
@@ -33,16 +33,14 @@ static int mtdblock_writesect(struct mtd_blktrans_dev *dev,
33 33
34static void mtdblock_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd) 34static void mtdblock_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd)
35{ 35{
36 struct mtd_blktrans_dev *dev = kmalloc(sizeof(*dev), GFP_KERNEL); 36 struct mtd_blktrans_dev *dev = kzalloc(sizeof(*dev), GFP_KERNEL);
37 37
38 if (!dev) 38 if (!dev)
39 return; 39 return;
40 40
41 memset(dev, 0, sizeof(*dev));
42
43 dev->mtd = mtd; 41 dev->mtd = mtd;
44 dev->devnum = mtd->index; 42 dev->devnum = mtd->index;
45 dev->blksize = 512; 43
46 dev->size = mtd->size >> 9; 44 dev->size = mtd->size >> 9;
47 dev->tr = tr; 45 dev->tr = tr;
48 dev->readonly = 1; 46 dev->readonly = 1;
@@ -60,6 +58,7 @@ static struct mtd_blktrans_ops mtdblock_tr = {
60 .name = "mtdblock", 58 .name = "mtdblock",
61 .major = 31, 59 .major = 31,
62 .part_bits = 0, 60 .part_bits = 0,
61 .blksize = 512,
63 .readsect = mtdblock_readsect, 62 .readsect = mtdblock_readsect,
64 .writesect = mtdblock_writesect, 63 .writesect = mtdblock_writesect,
65 .add_mtd = mtdblock_add_mtd, 64 .add_mtd = mtdblock_add_mtd,
diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c
index 5b6acfcb2b88..3013d0883b97 100644
--- a/drivers/mtd/mtdchar.c
+++ b/drivers/mtd/mtdchar.c
@@ -7,6 +7,7 @@
7 7
8#include <linux/device.h> 8#include <linux/device.h>
9#include <linux/fs.h> 9#include <linux/fs.h>
10#include <linux/err.h>
10#include <linux/init.h> 11#include <linux/init.h>
11#include <linux/kernel.h> 12#include <linux/kernel.h>
12#include <linux/module.h> 13#include <linux/module.h>
@@ -100,8 +101,8 @@ static int mtd_open(struct inode *inode, struct file *file)
100 101
101 mtd = get_mtd_device(NULL, devnum); 102 mtd = get_mtd_device(NULL, devnum);
102 103
103 if (!mtd) 104 if (IS_ERR(mtd))
104 return -ENODEV; 105 return PTR_ERR(mtd);
105 106
106 if (MTD_ABSENT == mtd->type) { 107 if (MTD_ABSENT == mtd->type) {
107 put_mtd_device(mtd); 108 put_mtd_device(mtd);
@@ -431,7 +432,7 @@ static int mtd_ioctl(struct inode *inode, struct file *file,
431 if(!(file->f_mode & 2)) 432 if(!(file->f_mode & 2))
432 return -EPERM; 433 return -EPERM;
433 434
434 erase=kmalloc(sizeof(struct erase_info),GFP_KERNEL); 435 erase=kzalloc(sizeof(struct erase_info),GFP_KERNEL);
435 if (!erase) 436 if (!erase)
436 ret = -ENOMEM; 437 ret = -ENOMEM;
437 else { 438 else {
@@ -440,7 +441,6 @@ static int mtd_ioctl(struct inode *inode, struct file *file,
440 441
441 init_waitqueue_head(&waitq); 442 init_waitqueue_head(&waitq);
442 443
443 memset (erase,0,sizeof(struct erase_info));
444 if (copy_from_user(&erase->addr, argp, 444 if (copy_from_user(&erase->addr, argp,
445 sizeof(struct erase_info_user))) { 445 sizeof(struct erase_info_user))) {
446 kfree(erase); 446 kfree(erase);
@@ -499,13 +499,12 @@ static int mtd_ioctl(struct inode *inode, struct file *file,
499 if (ret) 499 if (ret)
500 return ret; 500 return ret;
501 501
502 ops.len = buf.length;
503 ops.ooblen = buf.length; 502 ops.ooblen = buf.length;
504 ops.ooboffs = buf.start & (mtd->oobsize - 1); 503 ops.ooboffs = buf.start & (mtd->oobsize - 1);
505 ops.datbuf = NULL; 504 ops.datbuf = NULL;
506 ops.mode = MTD_OOB_PLACE; 505 ops.mode = MTD_OOB_PLACE;
507 506
508 if (ops.ooboffs && ops.len > (mtd->oobsize - ops.ooboffs)) 507 if (ops.ooboffs && ops.ooblen > (mtd->oobsize - ops.ooboffs))
509 return -EINVAL; 508 return -EINVAL;
510 509
511 ops.oobbuf = kmalloc(buf.length, GFP_KERNEL); 510 ops.oobbuf = kmalloc(buf.length, GFP_KERNEL);
@@ -520,7 +519,7 @@ static int mtd_ioctl(struct inode *inode, struct file *file,
520 buf.start &= ~(mtd->oobsize - 1); 519 buf.start &= ~(mtd->oobsize - 1);
521 ret = mtd->write_oob(mtd, buf.start, &ops); 520 ret = mtd->write_oob(mtd, buf.start, &ops);
522 521
523 if (copy_to_user(argp + sizeof(uint32_t), &ops.retlen, 522 if (copy_to_user(argp + sizeof(uint32_t), &ops.oobretlen,
524 sizeof(uint32_t))) 523 sizeof(uint32_t)))
525 ret = -EFAULT; 524 ret = -EFAULT;
526 525
@@ -548,7 +547,6 @@ static int mtd_ioctl(struct inode *inode, struct file *file,
548 if (ret) 547 if (ret)
549 return ret; 548 return ret;
550 549
551 ops.len = buf.length;
552 ops.ooblen = buf.length; 550 ops.ooblen = buf.length;
553 ops.ooboffs = buf.start & (mtd->oobsize - 1); 551 ops.ooboffs = buf.start & (mtd->oobsize - 1);
554 ops.datbuf = NULL; 552 ops.datbuf = NULL;
@@ -564,10 +562,10 @@ static int mtd_ioctl(struct inode *inode, struct file *file,
564 buf.start &= ~(mtd->oobsize - 1); 562 buf.start &= ~(mtd->oobsize - 1);
565 ret = mtd->read_oob(mtd, buf.start, &ops); 563 ret = mtd->read_oob(mtd, buf.start, &ops);
566 564
567 if (put_user(ops.retlen, (uint32_t __user *)argp)) 565 if (put_user(ops.oobretlen, (uint32_t __user *)argp))
568 ret = -EFAULT; 566 ret = -EFAULT;
569 else if (ops.retlen && copy_to_user(buf.ptr, ops.oobbuf, 567 else if (ops.oobretlen && copy_to_user(buf.ptr, ops.oobbuf,
570 ops.retlen)) 568 ops.oobretlen))
571 ret = -EFAULT; 569 ret = -EFAULT;
572 570
573 kfree(ops.oobbuf); 571 kfree(ops.oobbuf);
@@ -616,6 +614,7 @@ static int mtd_ioctl(struct inode *inode, struct file *file,
616 memcpy(&oi.eccpos, mtd->ecclayout->eccpos, sizeof(oi.eccpos)); 614 memcpy(&oi.eccpos, mtd->ecclayout->eccpos, sizeof(oi.eccpos));
617 memcpy(&oi.oobfree, mtd->ecclayout->oobfree, 615 memcpy(&oi.oobfree, mtd->ecclayout->oobfree,
618 sizeof(oi.oobfree)); 616 sizeof(oi.oobfree));
617 oi.eccbytes = mtd->ecclayout->eccbytes;
619 618
620 if (copy_to_user(argp, &oi, sizeof(struct nand_oobinfo))) 619 if (copy_to_user(argp, &oi, sizeof(struct nand_oobinfo)))
621 return -EFAULT; 620 return -EFAULT;
@@ -715,7 +714,7 @@ static int mtd_ioctl(struct inode *inode, struct file *file,
715 if (!mtd->ecclayout) 714 if (!mtd->ecclayout)
716 return -EOPNOTSUPP; 715 return -EOPNOTSUPP;
717 716
718 if (copy_to_user(argp, &mtd->ecclayout, 717 if (copy_to_user(argp, mtd->ecclayout,
719 sizeof(struct nand_ecclayout))) 718 sizeof(struct nand_ecclayout)))
720 return -EFAULT; 719 return -EFAULT;
721 break; 720 break;
diff --git a/drivers/mtd/mtdconcat.c b/drivers/mtd/mtdconcat.c
index 1fea631b5852..06902683bc2a 100644
--- a/drivers/mtd/mtdconcat.c
+++ b/drivers/mtd/mtdconcat.c
@@ -247,7 +247,7 @@ concat_read_oob(struct mtd_info *mtd, loff_t from, struct mtd_oob_ops *ops)
247 struct mtd_oob_ops devops = *ops; 247 struct mtd_oob_ops devops = *ops;
248 int i, err, ret = 0; 248 int i, err, ret = 0;
249 249
250 ops->retlen = 0; 250 ops->retlen = ops->oobretlen = 0;
251 251
252 for (i = 0; i < concat->num_subdev; i++) { 252 for (i = 0; i < concat->num_subdev; i++) {
253 struct mtd_info *subdev = concat->subdev[i]; 253 struct mtd_info *subdev = concat->subdev[i];
@@ -263,6 +263,7 @@ concat_read_oob(struct mtd_info *mtd, loff_t from, struct mtd_oob_ops *ops)
263 263
264 err = subdev->read_oob(subdev, from, &devops); 264 err = subdev->read_oob(subdev, from, &devops);
265 ops->retlen += devops.retlen; 265 ops->retlen += devops.retlen;
266 ops->oobretlen += devops.oobretlen;
266 267
267 /* Save information about bitflips! */ 268 /* Save information about bitflips! */
268 if (unlikely(err)) { 269 if (unlikely(err)) {
@@ -278,14 +279,18 @@ concat_read_oob(struct mtd_info *mtd, loff_t from, struct mtd_oob_ops *ops)
278 return err; 279 return err;
279 } 280 }
280 281
281 devops.len = ops->len - ops->retlen; 282 if (devops.datbuf) {
282 if (!devops.len) 283 devops.len = ops->len - ops->retlen;
283 return ret; 284 if (!devops.len)
284 285 return ret;
285 if (devops.datbuf)
286 devops.datbuf += devops.retlen; 286 devops.datbuf += devops.retlen;
287 if (devops.oobbuf) 287 }
288 devops.oobbuf += devops.ooblen; 288 if (devops.oobbuf) {
289 devops.ooblen = ops->ooblen - ops->oobretlen;
290 if (!devops.ooblen)
291 return ret;
292 devops.oobbuf += ops->oobretlen;
293 }
289 294
290 from = 0; 295 from = 0;
291 } 296 }
@@ -321,14 +326,18 @@ concat_write_oob(struct mtd_info *mtd, loff_t to, struct mtd_oob_ops *ops)
321 if (err) 326 if (err)
322 return err; 327 return err;
323 328
324 devops.len = ops->len - ops->retlen; 329 if (devops.datbuf) {
325 if (!devops.len) 330 devops.len = ops->len - ops->retlen;
326 return 0; 331 if (!devops.len)
327 332 return 0;
328 if (devops.datbuf)
329 devops.datbuf += devops.retlen; 333 devops.datbuf += devops.retlen;
330 if (devops.oobbuf) 334 }
331 devops.oobbuf += devops.ooblen; 335 if (devops.oobbuf) {
336 devops.ooblen = ops->ooblen - ops->oobretlen;
337 if (!devops.ooblen)
338 return 0;
339 devops.oobbuf += devops.oobretlen;
340 }
332 to = 0; 341 to = 0;
333 } 342 }
334 return -EINVAL; 343 return -EINVAL;
@@ -699,14 +708,13 @@ struct mtd_info *mtd_concat_create(struct mtd_info *subdev[], /* subdevices to c
699 708
700 /* allocate the device structure */ 709 /* allocate the device structure */
701 size = SIZEOF_STRUCT_MTD_CONCAT(num_devs); 710 size = SIZEOF_STRUCT_MTD_CONCAT(num_devs);
702 concat = kmalloc(size, GFP_KERNEL); 711 concat = kzalloc(size, GFP_KERNEL);
703 if (!concat) { 712 if (!concat) {
704 printk 713 printk
705 ("memory allocation error while creating concatenated device \"%s\"\n", 714 ("memory allocation error while creating concatenated device \"%s\"\n",
706 name); 715 name);
707 return NULL; 716 return NULL;
708 } 717 }
709 memset(concat, 0, size);
710 concat->subdev = (struct mtd_info **) (concat + 1); 718 concat->subdev = (struct mtd_info **) (concat + 1);
711 719
712 /* 720 /*
@@ -764,6 +772,7 @@ struct mtd_info *mtd_concat_create(struct mtd_info *subdev[], /* subdevices to c
764 concat->mtd.ecc_stats.badblocks += 772 concat->mtd.ecc_stats.badblocks +=
765 subdev[i]->ecc_stats.badblocks; 773 subdev[i]->ecc_stats.badblocks;
766 if (concat->mtd.writesize != subdev[i]->writesize || 774 if (concat->mtd.writesize != subdev[i]->writesize ||
775 concat->mtd.subpage_sft != subdev[i]->subpage_sft ||
767 concat->mtd.oobsize != subdev[i]->oobsize || 776 concat->mtd.oobsize != subdev[i]->oobsize ||
768 concat->mtd.ecctype != subdev[i]->ecctype || 777 concat->mtd.ecctype != subdev[i]->ecctype ||
769 concat->mtd.eccsize != subdev[i]->eccsize || 778 concat->mtd.eccsize != subdev[i]->eccsize ||
diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
index c4d26de74349..7070110aba2a 100644
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
@@ -15,6 +15,7 @@
15#include <linux/timer.h> 15#include <linux/timer.h>
16#include <linux/major.h> 16#include <linux/major.h>
17#include <linux/fs.h> 17#include <linux/fs.h>
18#include <linux/err.h>
18#include <linux/ioctl.h> 19#include <linux/ioctl.h>
19#include <linux/init.h> 20#include <linux/init.h>
20#include <linux/mtd/compatmac.h> 21#include <linux/mtd/compatmac.h>
@@ -192,14 +193,14 @@ int unregister_mtd_user (struct mtd_notifier *old)
192 * Given a number and NULL address, return the num'th entry in the device 193 * Given a number and NULL address, return the num'th entry in the device
193 * table, if any. Given an address and num == -1, search the device table 194 * table, if any. Given an address and num == -1, search the device table
194 * for a device with that address and return if it's still present. Given 195 * for a device with that address and return if it's still present. Given
195 * both, return the num'th driver only if its address matches. Return NULL 196 * both, return the num'th driver only if its address matches. Return
196 * if not. 197 * error code if not.
197 */ 198 */
198 199
199struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num) 200struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num)
200{ 201{
201 struct mtd_info *ret = NULL; 202 struct mtd_info *ret = NULL;
202 int i; 203 int i, err = -ENODEV;
203 204
204 mutex_lock(&mtd_table_mutex); 205 mutex_lock(&mtd_table_mutex);
205 206
@@ -213,14 +214,73 @@ struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num)
213 ret = NULL; 214 ret = NULL;
214 } 215 }
215 216
216 if (ret && !try_module_get(ret->owner)) 217 if (!ret)
217 ret = NULL; 218 goto out_unlock;
219
220 if (!try_module_get(ret->owner))
221 goto out_unlock;
218 222
219 if (ret) 223 if (ret->get_device) {
220 ret->usecount++; 224 err = ret->get_device(ret);
225 if (err)
226 goto out_put;
227 }
221 228
229 ret->usecount++;
222 mutex_unlock(&mtd_table_mutex); 230 mutex_unlock(&mtd_table_mutex);
223 return ret; 231 return ret;
232
233out_put:
234 module_put(ret->owner);
235out_unlock:
236 mutex_unlock(&mtd_table_mutex);
237 return ERR_PTR(err);
238}
239
240/**
241 * get_mtd_device_nm - obtain a validated handle for an MTD device by
242 * device name
243 * @name: MTD device name to open
244 *
245 * This function returns MTD device description structure in case of
246 * success and an error code in case of failure.
247 */
248
249struct mtd_info *get_mtd_device_nm(const char *name)
250{
251 int i, err = -ENODEV;
252 struct mtd_info *mtd = NULL;
253
254 mutex_lock(&mtd_table_mutex);
255
256 for (i = 0; i < MAX_MTD_DEVICES; i++) {
257 if (mtd_table[i] && !strcmp(name, mtd_table[i]->name)) {
258 mtd = mtd_table[i];
259 break;
260 }
261 }
262
263 if (!mtd)
264 goto out_unlock;
265
266 if (!try_module_get(mtd->owner))
267 goto out_unlock;
268
269 if (mtd->get_device) {
270 err = mtd->get_device(mtd);
271 if (err)
272 goto out_put;
273 }
274
275 mtd->usecount++;
276 mutex_unlock(&mtd_table_mutex);
277 return mtd;
278
279out_put:
280 module_put(mtd->owner);
281out_unlock:
282 mutex_unlock(&mtd_table_mutex);
283 return ERR_PTR(err);
224} 284}
225 285
226void put_mtd_device(struct mtd_info *mtd) 286void put_mtd_device(struct mtd_info *mtd)
@@ -229,6 +289,8 @@ void put_mtd_device(struct mtd_info *mtd)
229 289
230 mutex_lock(&mtd_table_mutex); 290 mutex_lock(&mtd_table_mutex);
231 c = --mtd->usecount; 291 c = --mtd->usecount;
292 if (mtd->put_device)
293 mtd->put_device(mtd);
232 mutex_unlock(&mtd_table_mutex); 294 mutex_unlock(&mtd_table_mutex);
233 BUG_ON(c < 0); 295 BUG_ON(c < 0);
234 296
@@ -236,7 +298,7 @@ void put_mtd_device(struct mtd_info *mtd)
236} 298}
237 299
238/* default_mtd_writev - default mtd writev method for MTD devices that 300/* default_mtd_writev - default mtd writev method for MTD devices that
239 * dont implement their own 301 * don't implement their own
240 */ 302 */
241 303
242int default_mtd_writev(struct mtd_info *mtd, const struct kvec *vecs, 304int default_mtd_writev(struct mtd_info *mtd, const struct kvec *vecs,
@@ -264,13 +326,14 @@ int default_mtd_writev(struct mtd_info *mtd, const struct kvec *vecs,
264 return ret; 326 return ret;
265} 327}
266 328
267EXPORT_SYMBOL(add_mtd_device); 329EXPORT_SYMBOL_GPL(add_mtd_device);
268EXPORT_SYMBOL(del_mtd_device); 330EXPORT_SYMBOL_GPL(del_mtd_device);
269EXPORT_SYMBOL(get_mtd_device); 331EXPORT_SYMBOL_GPL(get_mtd_device);
270EXPORT_SYMBOL(put_mtd_device); 332EXPORT_SYMBOL_GPL(get_mtd_device_nm);
271EXPORT_SYMBOL(register_mtd_user); 333EXPORT_SYMBOL_GPL(put_mtd_device);
272EXPORT_SYMBOL(unregister_mtd_user); 334EXPORT_SYMBOL_GPL(register_mtd_user);
273EXPORT_SYMBOL(default_mtd_writev); 335EXPORT_SYMBOL_GPL(unregister_mtd_user);
336EXPORT_SYMBOL_GPL(default_mtd_writev);
274 337
275#ifdef CONFIG_PROC_FS 338#ifdef CONFIG_PROC_FS
276 339
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index 06a930372b7a..bafd2fba87bd 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -94,7 +94,7 @@ static int part_read_oob(struct mtd_info *mtd, loff_t from,
94 94
95 if (from >= mtd->size) 95 if (from >= mtd->size)
96 return -EINVAL; 96 return -EINVAL;
97 if (from + ops->len > mtd->size) 97 if (ops->datbuf && from + ops->len > mtd->size)
98 return -EINVAL; 98 return -EINVAL;
99 res = part->master->read_oob(part->master, from + part->offset, ops); 99 res = part->master->read_oob(part->master, from + part->offset, ops);
100 100
@@ -161,7 +161,7 @@ static int part_write_oob(struct mtd_info *mtd, loff_t to,
161 161
162 if (to >= mtd->size) 162 if (to >= mtd->size)
163 return -EINVAL; 163 return -EINVAL;
164 if (to + ops->len > mtd->size) 164 if (ops->datbuf && to + ops->len > mtd->size)
165 return -EINVAL; 165 return -EINVAL;
166 return part->master->write_oob(part->master, to + part->offset, ops); 166 return part->master->write_oob(part->master, to + part->offset, ops);
167} 167}
@@ -323,14 +323,13 @@ int add_mtd_partitions(struct mtd_info *master,
323 for (i = 0; i < nbparts; i++) { 323 for (i = 0; i < nbparts; i++) {
324 324
325 /* allocate the partition structure */ 325 /* allocate the partition structure */
326 slave = kmalloc (sizeof(*slave), GFP_KERNEL); 326 slave = kzalloc (sizeof(*slave), GFP_KERNEL);
327 if (!slave) { 327 if (!slave) {
328 printk ("memory allocation error while creating partitions for \"%s\"\n", 328 printk ("memory allocation error while creating partitions for \"%s\"\n",
329 master->name); 329 master->name);
330 del_mtd_partitions(master); 330 del_mtd_partitions(master);
331 return -ENOMEM; 331 return -ENOMEM;
332 } 332 }
333 memset(slave, 0, sizeof(*slave));
334 list_add(&slave->list, &mtd_partitions); 333 list_add(&slave->list, &mtd_partitions);
335 334
336 /* set up the MTD object for this partition */ 335 /* set up the MTD object for this partition */
@@ -341,6 +340,7 @@ int add_mtd_partitions(struct mtd_info *master,
341 slave->mtd.oobsize = master->oobsize; 340 slave->mtd.oobsize = master->oobsize;
342 slave->mtd.ecctype = master->ecctype; 341 slave->mtd.ecctype = master->ecctype;
343 slave->mtd.eccsize = master->eccsize; 342 slave->mtd.eccsize = master->eccsize;
343 slave->mtd.subpage_sft = master->subpage_sft;
344 344
345 slave->mtd.name = parts[i].name; 345 slave->mtd.name = parts[i].name;
346 slave->mtd.bank_size = master->bank_size; 346 slave->mtd.bank_size = master->bank_size;
diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
index 1831340e5f51..358f55a82dbe 100644
--- a/drivers/mtd/nand/Kconfig
+++ b/drivers/mtd/nand/Kconfig
@@ -90,6 +90,7 @@ config MTD_NAND_RTC_FROM4
90 depends on MTD_NAND && SH_SOLUTION_ENGINE 90 depends on MTD_NAND && SH_SOLUTION_ENGINE
91 select REED_SOLOMON 91 select REED_SOLOMON
92 select REED_SOLOMON_DEC8 92 select REED_SOLOMON_DEC8
93 select BITREVERSE
93 help 94 help
94 This enables the driver for the Renesas Technology AG-AND 95 This enables the driver for the Renesas Technology AG-AND
95 flash interface board (FROM_BOARD4) 96 flash interface board (FROM_BOARD4)
@@ -132,6 +133,7 @@ config MTD_NAND_S3C2410_HWECC
132config MTD_NAND_NDFC 133config MTD_NAND_NDFC
133 tristate "NDFC NanD Flash Controller" 134 tristate "NDFC NanD Flash Controller"
134 depends on MTD_NAND && 44x 135 depends on MTD_NAND && 44x
136 select MTD_NAND_ECC_SMC
135 help 137 help
136 NDFC Nand Flash Controllers are integrated in EP44x SoCs 138 NDFC Nand Flash Controllers are integrated in EP44x SoCs
137 139
@@ -219,6 +221,13 @@ config MTD_NAND_SHARPSL
219 tristate "Support for NAND Flash on Sharp SL Series (C7xx + others)" 221 tristate "Support for NAND Flash on Sharp SL Series (C7xx + others)"
220 depends on MTD_NAND && ARCH_PXA 222 depends on MTD_NAND && ARCH_PXA
221 223
224config MTD_NAND_CAFE
225 tristate "NAND support for OLPC CAFÉ chip"
226 depends on PCI
227 help
228 Use NAND flash attached to the CAFÉ chip designed for the $100
229 laptop.
230
222config MTD_NAND_CS553X 231config MTD_NAND_CS553X
223 tristate "NAND support for CS5535/CS5536 (AMD Geode companion chip)" 232 tristate "NAND support for CS5535/CS5536 (AMD Geode companion chip)"
224 depends on MTD_NAND && X86_32 && (X86_PC || X86_GENERICARCH) 233 depends on MTD_NAND && X86_32 && (X86_PC || X86_GENERICARCH)
@@ -232,6 +241,13 @@ config MTD_NAND_CS553X
232 241
233 If you say "m", the module will be called "cs553x_nand.ko". 242 If you say "m", the module will be called "cs553x_nand.ko".
234 243
244config MTD_NAND_AT91
245 bool "Support for NAND Flash / SmartMedia on AT91"
246 depends on MTD_NAND && ARCH_AT91
247 help
248 Enables support for NAND Flash / Smart Media Card interface
249 on Atmel AT91 processors.
250
235config MTD_NAND_NANDSIM 251config MTD_NAND_NANDSIM
236 tristate "Support for NAND Flash Simulator" 252 tristate "Support for NAND Flash Simulator"
237 depends on MTD_NAND && MTD_PARTITIONS 253 depends on MTD_NAND && MTD_PARTITIONS
diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile
index f74759351c91..f7a53f0b7017 100644
--- a/drivers/mtd/nand/Makefile
+++ b/drivers/mtd/nand/Makefile
@@ -6,6 +6,7 @@
6obj-$(CONFIG_MTD_NAND) += nand.o nand_ecc.o 6obj-$(CONFIG_MTD_NAND) += nand.o nand_ecc.o
7obj-$(CONFIG_MTD_NAND_IDS) += nand_ids.o 7obj-$(CONFIG_MTD_NAND_IDS) += nand_ids.o
8 8
9obj-$(CONFIG_MTD_NAND_CAFE) += cafe_nand.o
9obj-$(CONFIG_MTD_NAND_SPIA) += spia.o 10obj-$(CONFIG_MTD_NAND_SPIA) += spia.o
10obj-$(CONFIG_MTD_NAND_AMS_DELTA) += ams-delta.o 11obj-$(CONFIG_MTD_NAND_AMS_DELTA) += ams-delta.o
11obj-$(CONFIG_MTD_NAND_TOTO) += toto.o 12obj-$(CONFIG_MTD_NAND_TOTO) += toto.o
@@ -22,5 +23,7 @@ obj-$(CONFIG_MTD_NAND_TS7250) += ts7250.o
22obj-$(CONFIG_MTD_NAND_NANDSIM) += nandsim.o 23obj-$(CONFIG_MTD_NAND_NANDSIM) += nandsim.o
23obj-$(CONFIG_MTD_NAND_CS553X) += cs553x_nand.o 24obj-$(CONFIG_MTD_NAND_CS553X) += cs553x_nand.o
24obj-$(CONFIG_MTD_NAND_NDFC) += ndfc.o 25obj-$(CONFIG_MTD_NAND_NDFC) += ndfc.o
26obj-$(CONFIG_MTD_NAND_AT91) += at91_nand.o
25 27
26nand-objs = nand_base.o nand_bbt.o 28nand-objs := nand_base.o nand_bbt.o
29cafe_nand-objs := cafe.o cafe_ecc.o
diff --git a/drivers/mtd/nand/at91_nand.c b/drivers/mtd/nand/at91_nand.c
new file mode 100644
index 000000000000..14b80cc90a7b
--- /dev/null
+++ b/drivers/mtd/nand/at91_nand.c
@@ -0,0 +1,223 @@
1/*
2 * drivers/mtd/nand/at91_nand.c
3 *
4 * Copyright (C) 2003 Rick Bronson
5 *
6 * Derived from drivers/mtd/nand/autcpu12.c
7 * Copyright (c) 2001 Thomas Gleixner (gleixner@autronix.de)
8 *
9 * Derived from drivers/mtd/spia.c
10 * Copyright (C) 2000 Steven J. Hill (sjhill@cotw.com)
11 *
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License version 2 as
14 * published by the Free Software Foundation.
15 *
16 */
17
18#include <linux/slab.h>
19#include <linux/module.h>
20#include <linux/platform_device.h>
21#include <linux/mtd/mtd.h>
22#include <linux/mtd/nand.h>
23#include <linux/mtd/partitions.h>
24
25#include <asm/io.h>
26#include <asm/sizes.h>
27
28#include <asm/hardware.h>
29#include <asm/arch/board.h>
30#include <asm/arch/gpio.h>
31
32struct at91_nand_host {
33 struct nand_chip nand_chip;
34 struct mtd_info mtd;
35 void __iomem *io_base;
36 struct at91_nand_data *board;
37};
38
39/*
40 * Hardware specific access to control-lines
41 */
42static void at91_nand_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
43{
44 struct nand_chip *nand_chip = mtd->priv;
45 struct at91_nand_host *host = nand_chip->priv;
46
47 if (cmd == NAND_CMD_NONE)
48 return;
49
50 if (ctrl & NAND_CLE)
51 writeb(cmd, host->io_base + (1 << host->board->cle));
52 else
53 writeb(cmd, host->io_base + (1 << host->board->ale));
54}
55
56/*
57 * Read the Device Ready pin.
58 */
59static int at91_nand_device_ready(struct mtd_info *mtd)
60{
61 struct nand_chip *nand_chip = mtd->priv;
62 struct at91_nand_host *host = nand_chip->priv;
63
64 return at91_get_gpio_value(host->board->rdy_pin);
65}
66
67/*
68 * Enable NAND.
69 */
70static void at91_nand_enable(struct at91_nand_host *host)
71{
72 if (host->board->enable_pin)
73 at91_set_gpio_value(host->board->enable_pin, 0);
74}
75
76/*
77 * Disable NAND.
78 */
79static void at91_nand_disable(struct at91_nand_host *host)
80{
81 if (host->board->enable_pin)
82 at91_set_gpio_value(host->board->enable_pin, 1);
83}
84
85/*
86 * Probe for the NAND device.
87 */
88static int __init at91_nand_probe(struct platform_device *pdev)
89{
90 struct at91_nand_host *host;
91 struct mtd_info *mtd;
92 struct nand_chip *nand_chip;
93 int res;
94
95#ifdef CONFIG_MTD_PARTITIONS
96 struct mtd_partition *partitions = NULL;
97 int num_partitions = 0;
98#endif
99
100 /* Allocate memory for the device structure (and zero it) */
101 host = kzalloc(sizeof(struct at91_nand_host), GFP_KERNEL);
102 if (!host) {
103 printk(KERN_ERR "at91_nand: failed to allocate device structure.\n");
104 return -ENOMEM;
105 }
106
107 host->io_base = ioremap(pdev->resource[0].start,
108 pdev->resource[0].end - pdev->resource[0].start + 1);
109 if (host->io_base == NULL) {
110 printk(KERN_ERR "at91_nand: ioremap failed\n");
111 kfree(host);
112 return -EIO;
113 }
114
115 mtd = &host->mtd;
116 nand_chip = &host->nand_chip;
117 host->board = pdev->dev.platform_data;
118
119 nand_chip->priv = host; /* link the private data structures */
120 mtd->priv = nand_chip;
121 mtd->owner = THIS_MODULE;
122
123 /* Set address of NAND IO lines */
124 nand_chip->IO_ADDR_R = host->io_base;
125 nand_chip->IO_ADDR_W = host->io_base;
126 nand_chip->cmd_ctrl = at91_nand_cmd_ctrl;
127 nand_chip->dev_ready = at91_nand_device_ready;
128 nand_chip->ecc.mode = NAND_ECC_SOFT; /* enable ECC */
129 nand_chip->chip_delay = 20; /* 20us command delay time */
130
131 if (host->board->bus_width_16) /* 16-bit bus width */
132 nand_chip->options |= NAND_BUSWIDTH_16;
133
134 platform_set_drvdata(pdev, host);
135 at91_nand_enable(host);
136
137 if (host->board->det_pin) {
138 if (at91_get_gpio_value(host->board->det_pin)) {
139 printk ("No SmartMedia card inserted.\n");
140 res = ENXIO;
141 goto out;
142 }
143 }
144
145 /* Scan to find existance of the device */
146 if (nand_scan(mtd, 1)) {
147 res = -ENXIO;
148 goto out;
149 }
150
151#ifdef CONFIG_MTD_PARTITIONS
152 if (host->board->partition_info)
153 partitions = host->board->partition_info(mtd->size, &num_partitions);
154
155 if ((!partitions) || (num_partitions == 0)) {
156 printk(KERN_ERR "at91_nand: No parititions defined, or unsupported device.\n");
157 res = ENXIO;
158 goto release;
159 }
160
161 res = add_mtd_partitions(mtd, partitions, num_partitions);
162#else
163 res = add_mtd_device(mtd);
164#endif
165
166 if (!res)
167 return res;
168
169release:
170 nand_release(mtd);
171out:
172 at91_nand_disable(host);
173 platform_set_drvdata(pdev, NULL);
174 iounmap(host->io_base);
175 kfree(host);
176 return res;
177}
178
179/*
180 * Remove a NAND device.
181 */
182static int __devexit at91_nand_remove(struct platform_device *pdev)
183{
184 struct at91_nand_host *host = platform_get_drvdata(pdev);
185 struct mtd_info *mtd = &host->mtd;
186
187 nand_release(mtd);
188
189 at91_nand_disable(host);
190
191 iounmap(host->io_base);
192 kfree(host);
193
194 return 0;
195}
196
197static struct platform_driver at91_nand_driver = {
198 .probe = at91_nand_probe,
199 .remove = at91_nand_remove,
200 .driver = {
201 .name = "at91_nand",
202 .owner = THIS_MODULE,
203 },
204};
205
206static int __init at91_nand_init(void)
207{
208 return platform_driver_register(&at91_nand_driver);
209}
210
211
212static void __exit at91_nand_exit(void)
213{
214 platform_driver_unregister(&at91_nand_driver);
215}
216
217
218module_init(at91_nand_init);
219module_exit(at91_nand_exit);
220
221MODULE_LICENSE("GPL");
222MODULE_AUTHOR("Rick Bronson");
223MODULE_DESCRIPTION("NAND/SmartMedia driver for AT91RM9200");
diff --git a/drivers/mtd/nand/cafe.c b/drivers/mtd/nand/cafe.c
new file mode 100644
index 000000000000..b8d9b64cccc0
--- /dev/null
+++ b/drivers/mtd/nand/cafe.c
@@ -0,0 +1,770 @@
1/*
2 * Driver for One Laptop Per Child ‘CAFÉ’ controller, aka Marvell 88ALP01
3 *
4 * Copyright © 2006 Red Hat, Inc.
5 * Copyright © 2006 David Woodhouse <dwmw2@infradead.org>
6 */
7
8#define DEBUG
9
10#include <linux/device.h>
11#undef DEBUG
12#include <linux/mtd/mtd.h>
13#include <linux/mtd/nand.h>
14#include <linux/pci.h>
15#include <linux/delay.h>
16#include <linux/interrupt.h>
17#include <asm/io.h>
18
19#define CAFE_NAND_CTRL1 0x00
20#define CAFE_NAND_CTRL2 0x04
21#define CAFE_NAND_CTRL3 0x08
22#define CAFE_NAND_STATUS 0x0c
23#define CAFE_NAND_IRQ 0x10
24#define CAFE_NAND_IRQ_MASK 0x14
25#define CAFE_NAND_DATA_LEN 0x18
26#define CAFE_NAND_ADDR1 0x1c
27#define CAFE_NAND_ADDR2 0x20
28#define CAFE_NAND_TIMING1 0x24
29#define CAFE_NAND_TIMING2 0x28
30#define CAFE_NAND_TIMING3 0x2c
31#define CAFE_NAND_NONMEM 0x30
32#define CAFE_NAND_ECC_RESULT 0x3C
33#define CAFE_NAND_DMA_CTRL 0x40
34#define CAFE_NAND_DMA_ADDR0 0x44
35#define CAFE_NAND_DMA_ADDR1 0x48
36#define CAFE_NAND_ECC_SYN01 0x50
37#define CAFE_NAND_ECC_SYN23 0x54
38#define CAFE_NAND_ECC_SYN45 0x58
39#define CAFE_NAND_ECC_SYN67 0x5c
40#define CAFE_NAND_READ_DATA 0x1000
41#define CAFE_NAND_WRITE_DATA 0x2000
42
43#define CAFE_GLOBAL_CTRL 0x3004
44#define CAFE_GLOBAL_IRQ 0x3008
45#define CAFE_GLOBAL_IRQ_MASK 0x300c
46#define CAFE_NAND_RESET 0x3034
47
48int cafe_correct_ecc(unsigned char *buf,
49 unsigned short *chk_syndrome_list);
50
51struct cafe_priv {
52 struct nand_chip nand;
53 struct pci_dev *pdev;
54 void __iomem *mmio;
55 uint32_t ctl1;
56 uint32_t ctl2;
57 int datalen;
58 int nr_data;
59 int data_pos;
60 int page_addr;
61 dma_addr_t dmaaddr;
62 unsigned char *dmabuf;
63};
64
65static int usedma = 1;
66module_param(usedma, int, 0644);
67
68static int skipbbt = 0;
69module_param(skipbbt, int, 0644);
70
71static int debug = 0;
72module_param(debug, int, 0644);
73
74static int regdebug = 0;
75module_param(regdebug, int, 0644);
76
77static int checkecc = 1;
78module_param(checkecc, int, 0644);
79
80static int slowtiming = 0;
81module_param(slowtiming, int, 0644);
82
83/* Hrm. Why isn't this already conditional on something in the struct device? */
84#define cafe_dev_dbg(dev, args...) do { if (debug) dev_dbg(dev, ##args); } while(0)
85
86/* Make it easier to switch to PIO if we need to */
87#define cafe_readl(cafe, addr) readl((cafe)->mmio + CAFE_##addr)
88#define cafe_writel(cafe, datum, addr) writel(datum, (cafe)->mmio + CAFE_##addr)
89
90static int cafe_device_ready(struct mtd_info *mtd)
91{
92 struct cafe_priv *cafe = mtd->priv;
93 int result = !!(cafe_readl(cafe, NAND_STATUS) | 0x40000000);
94 uint32_t irqs = cafe_readl(cafe, NAND_IRQ);
95
96 cafe_writel(cafe, irqs, NAND_IRQ);
97
98 cafe_dev_dbg(&cafe->pdev->dev, "NAND device is%s ready, IRQ %x (%x) (%x,%x)\n",
99 result?"":" not", irqs, cafe_readl(cafe, NAND_IRQ),
100 cafe_readl(cafe, GLOBAL_IRQ), cafe_readl(cafe, GLOBAL_IRQ_MASK));
101
102 return result;
103}
104
105
106static void cafe_write_buf(struct mtd_info *mtd, const uint8_t *buf, int len)
107{
108 struct cafe_priv *cafe = mtd->priv;
109
110 if (usedma)
111 memcpy(cafe->dmabuf + cafe->datalen, buf, len);
112 else
113 memcpy_toio(cafe->mmio + CAFE_NAND_WRITE_DATA + cafe->datalen, buf, len);
114
115 cafe->datalen += len;
116
117 cafe_dev_dbg(&cafe->pdev->dev, "Copy 0x%x bytes to write buffer. datalen 0x%x\n",
118 len, cafe->datalen);
119}
120
121static void cafe_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
122{
123 struct cafe_priv *cafe = mtd->priv;
124
125 if (usedma)
126 memcpy(buf, cafe->dmabuf + cafe->datalen, len);
127 else
128 memcpy_fromio(buf, cafe->mmio + CAFE_NAND_READ_DATA + cafe->datalen, len);
129
130 cafe_dev_dbg(&cafe->pdev->dev, "Copy 0x%x bytes from position 0x%x in read buffer.\n",
131 len, cafe->datalen);
132 cafe->datalen += len;
133}
134
135static uint8_t cafe_read_byte(struct mtd_info *mtd)
136{
137 struct cafe_priv *cafe = mtd->priv;
138 uint8_t d;
139
140 cafe_read_buf(mtd, &d, 1);
141 cafe_dev_dbg(&cafe->pdev->dev, "Read %02x\n", d);
142
143 return d;
144}
145
146static void cafe_nand_cmdfunc(struct mtd_info *mtd, unsigned command,
147 int column, int page_addr)
148{
149 struct cafe_priv *cafe = mtd->priv;
150 int adrbytes = 0;
151 uint32_t ctl1;
152 uint32_t doneint = 0x80000000;
153
154 cafe_dev_dbg(&cafe->pdev->dev, "cmdfunc %02x, 0x%x, 0x%x\n",
155 command, column, page_addr);
156
157 if (command == NAND_CMD_ERASE2 || command == NAND_CMD_PAGEPROG) {
158 /* Second half of a command we already calculated */
159 cafe_writel(cafe, cafe->ctl2 | 0x100 | command, NAND_CTRL2);
160 ctl1 = cafe->ctl1;
161 cafe->ctl2 &= ~(1<<30);
162 cafe_dev_dbg(&cafe->pdev->dev, "Continue command, ctl1 %08x, #data %d\n",
163 cafe->ctl1, cafe->nr_data);
164 goto do_command;
165 }
166 /* Reset ECC engine */
167 cafe_writel(cafe, 0, NAND_CTRL2);
168
169 /* Emulate NAND_CMD_READOOB on large-page chips */
170 if (mtd->writesize > 512 &&
171 command == NAND_CMD_READOOB) {
172 column += mtd->writesize;
173 command = NAND_CMD_READ0;
174 }
175
176 /* FIXME: Do we need to send read command before sending data
177 for small-page chips, to position the buffer correctly? */
178
179 if (column != -1) {
180 cafe_writel(cafe, column, NAND_ADDR1);
181 adrbytes = 2;
182 if (page_addr != -1)
183 goto write_adr2;
184 } else if (page_addr != -1) {
185 cafe_writel(cafe, page_addr & 0xffff, NAND_ADDR1);
186 page_addr >>= 16;
187 write_adr2:
188 cafe_writel(cafe, page_addr, NAND_ADDR2);
189 adrbytes += 2;
190 if (mtd->size > mtd->writesize << 16)
191 adrbytes++;
192 }
193
194 cafe->data_pos = cafe->datalen = 0;
195
196 /* Set command valid bit */
197 ctl1 = 0x80000000 | command;
198
199 /* Set RD or WR bits as appropriate */
200 if (command == NAND_CMD_READID || command == NAND_CMD_STATUS) {
201 ctl1 |= (1<<26); /* rd */
202 /* Always 5 bytes, for now */
203 cafe->datalen = 4;
204 /* And one address cycle -- even for STATUS, since the controller doesn't work without */
205 adrbytes = 1;
206 } else if (command == NAND_CMD_READ0 || command == NAND_CMD_READ1 ||
207 command == NAND_CMD_READOOB || command == NAND_CMD_RNDOUT) {
208 ctl1 |= 1<<26; /* rd */
209 /* For now, assume just read to end of page */
210 cafe->datalen = mtd->writesize + mtd->oobsize - column;
211 } else if (command == NAND_CMD_SEQIN)
212 ctl1 |= 1<<25; /* wr */
213
214 /* Set number of address bytes */
215 if (adrbytes)
216 ctl1 |= ((adrbytes-1)|8) << 27;
217
218 if (command == NAND_CMD_SEQIN || command == NAND_CMD_ERASE1) {
219 /* Ignore the first command of a pair; the hardware
220 deals with them both at once, later */
221 cafe->ctl1 = ctl1;
222 cafe_dev_dbg(&cafe->pdev->dev, "Setup for delayed command, ctl1 %08x, dlen %x\n",
223 cafe->ctl1, cafe->datalen);
224 return;
225 }
226 /* RNDOUT and READ0 commands need a following byte */
227 if (command == NAND_CMD_RNDOUT)
228 cafe_writel(cafe, cafe->ctl2 | 0x100 | NAND_CMD_RNDOUTSTART, NAND_CTRL2);
229 else if (command == NAND_CMD_READ0 && mtd->writesize > 512)
230 cafe_writel(cafe, cafe->ctl2 | 0x100 | NAND_CMD_READSTART, NAND_CTRL2);
231
232 do_command:
233 cafe_dev_dbg(&cafe->pdev->dev, "dlen %x, ctl1 %x, ctl2 %x\n",
234 cafe->datalen, ctl1, cafe_readl(cafe, NAND_CTRL2));
235
236 /* NB: The datasheet lies -- we really should be subtracting 1 here */
237 cafe_writel(cafe, cafe->datalen, NAND_DATA_LEN);
238 cafe_writel(cafe, 0x90000000, NAND_IRQ);
239 if (usedma && (ctl1 & (3<<25))) {
240 uint32_t dmactl = 0xc0000000 + cafe->datalen;
241 /* If WR or RD bits set, set up DMA */
242 if (ctl1 & (1<<26)) {
243 /* It's a read */
244 dmactl |= (1<<29);
245 /* ... so it's done when the DMA is done, not just
246 the command. */
247 doneint = 0x10000000;
248 }
249 cafe_writel(cafe, dmactl, NAND_DMA_CTRL);
250 }
251 cafe->datalen = 0;
252
253 if (unlikely(regdebug)) {
254 int i;
255 printk("About to write command %08x to register 0\n", ctl1);
256 for (i=4; i< 0x5c; i+=4)
257 printk("Register %x: %08x\n", i, readl(cafe->mmio + i));
258 }
259
260 cafe_writel(cafe, ctl1, NAND_CTRL1);
261 /* Apply this short delay always to ensure that we do wait tWB in
262 * any case on any machine. */
263 ndelay(100);
264
265 if (1) {
266 int c = 500000;
267 uint32_t irqs;
268
269 while (c--) {
270 irqs = cafe_readl(cafe, NAND_IRQ);
271 if (irqs & doneint)
272 break;
273 udelay(1);
274 if (!(c % 100000))
275 cafe_dev_dbg(&cafe->pdev->dev, "Wait for ready, IRQ %x\n", irqs);
276 cpu_relax();
277 }
278 cafe_writel(cafe, doneint, NAND_IRQ);
279 cafe_dev_dbg(&cafe->pdev->dev, "Command %x completed after %d usec, irqs %x (%x)\n",
280 command, 500000-c, irqs, cafe_readl(cafe, NAND_IRQ));
281 }
282
283 WARN_ON(cafe->ctl2 & (1<<30));
284
285 switch (command) {
286
287 case NAND_CMD_CACHEDPROG:
288 case NAND_CMD_PAGEPROG:
289 case NAND_CMD_ERASE1:
290 case NAND_CMD_ERASE2:
291 case NAND_CMD_SEQIN:
292 case NAND_CMD_RNDIN:
293 case NAND_CMD_STATUS:
294 case NAND_CMD_DEPLETE1:
295 case NAND_CMD_RNDOUT:
296 case NAND_CMD_STATUS_ERROR:
297 case NAND_CMD_STATUS_ERROR0:
298 case NAND_CMD_STATUS_ERROR1:
299 case NAND_CMD_STATUS_ERROR2:
300 case NAND_CMD_STATUS_ERROR3:
301 cafe_writel(cafe, cafe->ctl2, NAND_CTRL2);
302 return;
303 }
304 nand_wait_ready(mtd);
305 cafe_writel(cafe, cafe->ctl2, NAND_CTRL2);
306}
307
308static void cafe_select_chip(struct mtd_info *mtd, int chipnr)
309{
310 //struct cafe_priv *cafe = mtd->priv;
311 // cafe_dev_dbg(&cafe->pdev->dev, "select_chip %d\n", chipnr);
312}
313
314static int cafe_nand_interrupt(int irq, void *id)
315{
316 struct mtd_info *mtd = id;
317 struct cafe_priv *cafe = mtd->priv;
318 uint32_t irqs = cafe_readl(cafe, NAND_IRQ);
319 cafe_writel(cafe, irqs & ~0x90000000, NAND_IRQ);
320 if (!irqs)
321 return IRQ_NONE;
322
323 cafe_dev_dbg(&cafe->pdev->dev, "irq, bits %x (%x)\n", irqs, cafe_readl(cafe, NAND_IRQ));
324 return IRQ_HANDLED;
325}
326
327static void cafe_nand_bug(struct mtd_info *mtd)
328{
329 BUG();
330}
331
332static int cafe_nand_write_oob(struct mtd_info *mtd,
333 struct nand_chip *chip, int page)
334{
335 int status = 0;
336
337 chip->cmdfunc(mtd, NAND_CMD_SEQIN, mtd->writesize, page);
338 chip->write_buf(mtd, chip->oob_poi, mtd->oobsize);
339 chip->cmdfunc(mtd, NAND_CMD_PAGEPROG, -1, -1);
340 status = chip->waitfunc(mtd, chip);
341
342 return status & NAND_STATUS_FAIL ? -EIO : 0;
343}
344
345/* Don't use -- use nand_read_oob_std for now */
346static int cafe_nand_read_oob(struct mtd_info *mtd, struct nand_chip *chip,
347 int page, int sndcmd)
348{
349 chip->cmdfunc(mtd, NAND_CMD_READOOB, 0, page);
350 chip->read_buf(mtd, chip->oob_poi, mtd->oobsize);
351 return 1;
352}
353/**
354 * cafe_nand_read_page_syndrome - {REPLACABLE] hardware ecc syndrom based page read
355 * @mtd: mtd info structure
356 * @chip: nand chip info structure
357 * @buf: buffer to store read data
358 *
359 * The hw generator calculates the error syndrome automatically. Therefor
360 * we need a special oob layout and handling.
361 */
362static int cafe_nand_read_page(struct mtd_info *mtd, struct nand_chip *chip,
363 uint8_t *buf)
364{
365 struct cafe_priv *cafe = mtd->priv;
366
367 cafe_dev_dbg(&cafe->pdev->dev, "ECC result %08x SYN1,2 %08x\n",
368 cafe_readl(cafe, NAND_ECC_RESULT),
369 cafe_readl(cafe, NAND_ECC_SYN01));
370
371 chip->read_buf(mtd, buf, mtd->writesize);
372 chip->read_buf(mtd, chip->oob_poi, mtd->oobsize);
373
374 if (checkecc && cafe_readl(cafe, NAND_ECC_RESULT) & (1<<18)) {
375 unsigned short syn[8];
376 int i;
377
378 for (i=0; i<8; i+=2) {
379 uint32_t tmp = cafe_readl(cafe, NAND_ECC_SYN01 + (i*2));
380 syn[i] = tmp & 0xfff;
381 syn[i+1] = (tmp >> 16) & 0xfff;
382 }
383
384 if ((i = cafe_correct_ecc(buf, syn)) < 0) {
385 dev_dbg(&cafe->pdev->dev, "Failed to correct ECC at %08x\n",
386 cafe_readl(cafe, NAND_ADDR2) * 2048);
387 for (i=0; i< 0x5c; i+=4)
388 printk("Register %x: %08x\n", i, readl(cafe->mmio + i));
389 mtd->ecc_stats.failed++;
390 } else {
391 dev_dbg(&cafe->pdev->dev, "Corrected %d symbol errors\n", i);
392 mtd->ecc_stats.corrected += i;
393 }
394 }
395
396
397 return 0;
398}
399
400static struct nand_ecclayout cafe_oobinfo_2048 = {
401 .eccbytes = 14,
402 .eccpos = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13},
403 .oobfree = {{14, 50}}
404};
405
406/* Ick. The BBT code really ought to be able to work this bit out
407 for itself from the above, at least for the 2KiB case */
408static uint8_t cafe_bbt_pattern_2048[] = { 'B', 'b', 't', '0' };
409static uint8_t cafe_mirror_pattern_2048[] = { '1', 't', 'b', 'B' };
410
411static uint8_t cafe_bbt_pattern_512[] = { 0xBB };
412static uint8_t cafe_mirror_pattern_512[] = { 0xBC };
413
414
415static struct nand_bbt_descr cafe_bbt_main_descr_2048 = {
416 .options = NAND_BBT_LASTBLOCK | NAND_BBT_CREATE | NAND_BBT_WRITE
417 | NAND_BBT_2BIT | NAND_BBT_VERSION | NAND_BBT_PERCHIP,
418 .offs = 14,
419 .len = 4,
420 .veroffs = 18,
421 .maxblocks = 4,
422 .pattern = cafe_bbt_pattern_2048
423};
424
425static struct nand_bbt_descr cafe_bbt_mirror_descr_2048 = {
426 .options = NAND_BBT_LASTBLOCK | NAND_BBT_CREATE | NAND_BBT_WRITE
427 | NAND_BBT_2BIT | NAND_BBT_VERSION | NAND_BBT_PERCHIP,
428 .offs = 14,
429 .len = 4,
430 .veroffs = 18,
431 .maxblocks = 4,
432 .pattern = cafe_mirror_pattern_2048
433};
434
435static struct nand_ecclayout cafe_oobinfo_512 = {
436 .eccbytes = 14,
437 .eccpos = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13},
438 .oobfree = {{14, 2}}
439};
440
441static struct nand_bbt_descr cafe_bbt_main_descr_512 = {
442 .options = NAND_BBT_LASTBLOCK | NAND_BBT_CREATE | NAND_BBT_WRITE
443 | NAND_BBT_2BIT | NAND_BBT_VERSION | NAND_BBT_PERCHIP,
444 .offs = 14,
445 .len = 1,
446 .veroffs = 15,
447 .maxblocks = 4,
448 .pattern = cafe_bbt_pattern_512
449};
450
451static struct nand_bbt_descr cafe_bbt_mirror_descr_512 = {
452 .options = NAND_BBT_LASTBLOCK | NAND_BBT_CREATE | NAND_BBT_WRITE
453 | NAND_BBT_2BIT | NAND_BBT_VERSION | NAND_BBT_PERCHIP,
454 .offs = 14,
455 .len = 1,
456 .veroffs = 15,
457 .maxblocks = 4,
458 .pattern = cafe_mirror_pattern_512
459};
460
461
462static void cafe_nand_write_page_lowlevel(struct mtd_info *mtd,
463 struct nand_chip *chip, const uint8_t *buf)
464{
465 struct cafe_priv *cafe = mtd->priv;
466
467 chip->write_buf(mtd, buf, mtd->writesize);
468 chip->write_buf(mtd, chip->oob_poi, mtd->oobsize);
469
470 /* Set up ECC autogeneration */
471 cafe->ctl2 |= (1<<30);
472}
473
474static int cafe_nand_write_page(struct mtd_info *mtd, struct nand_chip *chip,
475 const uint8_t *buf, int page, int cached, int raw)
476{
477 int status;
478
479 chip->cmdfunc(mtd, NAND_CMD_SEQIN, 0x00, page);
480
481 if (unlikely(raw))
482 chip->ecc.write_page_raw(mtd, chip, buf);
483 else
484 chip->ecc.write_page(mtd, chip, buf);
485
486 /*
487 * Cached progamming disabled for now, Not sure if its worth the
488 * trouble. The speed gain is not very impressive. (2.3->2.6Mib/s)
489 */
490 cached = 0;
491
492 if (!cached || !(chip->options & NAND_CACHEPRG)) {
493
494 chip->cmdfunc(mtd, NAND_CMD_PAGEPROG, -1, -1);
495 status = chip->waitfunc(mtd, chip);
496 /*
497 * See if operation failed and additional status checks are
498 * available
499 */
500 if ((status & NAND_STATUS_FAIL) && (chip->errstat))
501 status = chip->errstat(mtd, chip, FL_WRITING, status,
502 page);
503
504 if (status & NAND_STATUS_FAIL)
505 return -EIO;
506 } else {
507 chip->cmdfunc(mtd, NAND_CMD_CACHEDPROG, -1, -1);
508 status = chip->waitfunc(mtd, chip);
509 }
510
511#ifdef CONFIG_MTD_NAND_VERIFY_WRITE
512 /* Send command to read back the data */
513 chip->cmdfunc(mtd, NAND_CMD_READ0, 0, page);
514
515 if (chip->verify_buf(mtd, buf, mtd->writesize))
516 return -EIO;
517#endif
518 return 0;
519}
520
521static int cafe_nand_block_bad(struct mtd_info *mtd, loff_t ofs, int getchip)
522{
523 return 0;
524}
525
526static int __devinit cafe_nand_probe(struct pci_dev *pdev,
527 const struct pci_device_id *ent)
528{
529 struct mtd_info *mtd;
530 struct cafe_priv *cafe;
531 uint32_t ctrl;
532 int err = 0;
533
534 err = pci_enable_device(pdev);
535 if (err)
536 return err;
537
538 pci_set_master(pdev);
539
540 mtd = kzalloc(sizeof(*mtd) + sizeof(struct cafe_priv), GFP_KERNEL);
541 if (!mtd) {
542 dev_warn(&pdev->dev, "failed to alloc mtd_info\n");
543 return -ENOMEM;
544 }
545 cafe = (void *)(&mtd[1]);
546
547 mtd->priv = cafe;
548 mtd->owner = THIS_MODULE;
549
550 cafe->pdev = pdev;
551 cafe->mmio = pci_iomap(pdev, 0, 0);
552 if (!cafe->mmio) {
553 dev_warn(&pdev->dev, "failed to iomap\n");
554 err = -ENOMEM;
555 goto out_free_mtd;
556 }
557 cafe->dmabuf = dma_alloc_coherent(&cafe->pdev->dev, 2112 + sizeof(struct nand_buffers),
558 &cafe->dmaaddr, GFP_KERNEL);
559 if (!cafe->dmabuf) {
560 err = -ENOMEM;
561 goto out_ior;
562 }
563 cafe->nand.buffers = (void *)cafe->dmabuf + 2112;
564
565 cafe->nand.cmdfunc = cafe_nand_cmdfunc;
566 cafe->nand.dev_ready = cafe_device_ready;
567 cafe->nand.read_byte = cafe_read_byte;
568 cafe->nand.read_buf = cafe_read_buf;
569 cafe->nand.write_buf = cafe_write_buf;
570 cafe->nand.select_chip = cafe_select_chip;
571
572 cafe->nand.chip_delay = 0;
573
574 /* Enable the following for a flash based bad block table */
575 cafe->nand.options = NAND_USE_FLASH_BBT | NAND_NO_AUTOINCR | NAND_OWN_BUFFERS;
576
577 if (skipbbt) {
578 cafe->nand.options |= NAND_SKIP_BBTSCAN;
579 cafe->nand.block_bad = cafe_nand_block_bad;
580 }
581
582 /* Start off by resetting the NAND controller completely */
583 cafe_writel(cafe, 1, NAND_RESET);
584 cafe_writel(cafe, 0, NAND_RESET);
585
586 cafe_writel(cafe, 0xffffffff, NAND_IRQ_MASK);
587
588 /* Timings from Marvell's test code (not verified or calculated by us) */
589 if (!slowtiming) {
590 cafe_writel(cafe, 0x01010a0a, NAND_TIMING1);
591 cafe_writel(cafe, 0x24121212, NAND_TIMING2);
592 cafe_writel(cafe, 0x11000000, NAND_TIMING3);
593 } else {
594 cafe_writel(cafe, 0xffffffff, NAND_TIMING1);
595 cafe_writel(cafe, 0xffffffff, NAND_TIMING2);
596 cafe_writel(cafe, 0xffffffff, NAND_TIMING3);
597 }
598 cafe_writel(cafe, 0xffffffff, NAND_IRQ_MASK);
599 err = request_irq(pdev->irq, &cafe_nand_interrupt, SA_SHIRQ, "CAFE NAND", mtd);
600 if (err) {
601 dev_warn(&pdev->dev, "Could not register IRQ %d\n", pdev->irq);
602
603 goto out_free_dma;
604 }
605#if 1
606 /* Disable master reset, enable NAND clock */
607 ctrl = cafe_readl(cafe, GLOBAL_CTRL);
608 ctrl &= 0xffffeff0;
609 ctrl |= 0x00007000;
610 cafe_writel(cafe, ctrl | 0x05, GLOBAL_CTRL);
611 cafe_writel(cafe, ctrl | 0x0a, GLOBAL_CTRL);
612 cafe_writel(cafe, 0, NAND_DMA_CTRL);
613
614 cafe_writel(cafe, 0x7006, GLOBAL_CTRL);
615 cafe_writel(cafe, 0x700a, GLOBAL_CTRL);
616
617 /* Set up DMA address */
618 cafe_writel(cafe, cafe->dmaaddr & 0xffffffff, NAND_DMA_ADDR0);
619 if (sizeof(cafe->dmaaddr) > 4)
620 /* Shift in two parts to shut the compiler up */
621 cafe_writel(cafe, (cafe->dmaaddr >> 16) >> 16, NAND_DMA_ADDR1);
622 else
623 cafe_writel(cafe, 0, NAND_DMA_ADDR1);
624
625 cafe_dev_dbg(&cafe->pdev->dev, "Set DMA address to %x (virt %p)\n",
626 cafe_readl(cafe, NAND_DMA_ADDR0), cafe->dmabuf);
627
628 /* Enable NAND IRQ in global IRQ mask register */
629 cafe_writel(cafe, 0x80000007, GLOBAL_IRQ_MASK);
630 cafe_dev_dbg(&cafe->pdev->dev, "Control %x, IRQ mask %x\n",
631 cafe_readl(cafe, GLOBAL_CTRL), cafe_readl(cafe, GLOBAL_IRQ_MASK));
632#endif
633#if 1
634 mtd->writesize=2048;
635 mtd->oobsize = 0x40;
636 memset(cafe->dmabuf, 0x5a, 2112);
637 cafe->nand.cmdfunc(mtd, NAND_CMD_READID, 0, -1);
638 cafe->nand.read_byte(mtd);
639 cafe->nand.read_byte(mtd);
640 cafe->nand.read_byte(mtd);
641 cafe->nand.read_byte(mtd);
642 cafe->nand.read_byte(mtd);
643#endif
644#if 0
645 cafe->nand.cmdfunc(mtd, NAND_CMD_READ0, 0, 0);
646 // nand_wait_ready(mtd);
647 cafe->nand.read_byte(mtd);
648 cafe->nand.read_byte(mtd);
649 cafe->nand.read_byte(mtd);
650 cafe->nand.read_byte(mtd);
651#endif
652#if 0
653 writel(0x84600070, cafe->mmio);
654 udelay(10);
655 cafe_dev_dbg(&cafe->pdev->dev, "Status %x\n", cafe_readl(cafe, NAND_NONMEM));
656#endif
657 /* Scan to find existance of the device */
658 if (nand_scan_ident(mtd, 1)) {
659 err = -ENXIO;
660 goto out_irq;
661 }
662
663 cafe->ctl2 = 1<<27; /* Reed-Solomon ECC */
664 if (mtd->writesize == 2048)
665 cafe->ctl2 |= 1<<29; /* 2KiB page size */
666
667 /* Set up ECC according to the type of chip we found */
668 if (mtd->writesize == 2048) {
669 cafe->nand.ecc.layout = &cafe_oobinfo_2048;
670 cafe->nand.bbt_td = &cafe_bbt_main_descr_2048;
671 cafe->nand.bbt_md = &cafe_bbt_mirror_descr_2048;
672 } else if (mtd->writesize == 512) {
673 cafe->nand.ecc.layout = &cafe_oobinfo_512;
674 cafe->nand.bbt_td = &cafe_bbt_main_descr_512;
675 cafe->nand.bbt_md = &cafe_bbt_mirror_descr_512;
676 } else {
677 printk(KERN_WARNING "Unexpected NAND flash writesize %d. Aborting\n",
678 mtd->writesize);
679 goto out_irq;
680 }
681 cafe->nand.ecc.mode = NAND_ECC_HW_SYNDROME;
682 cafe->nand.ecc.size = mtd->writesize;
683 cafe->nand.ecc.bytes = 14;
684 cafe->nand.ecc.hwctl = (void *)cafe_nand_bug;
685 cafe->nand.ecc.calculate = (void *)cafe_nand_bug;
686 cafe->nand.ecc.correct = (void *)cafe_nand_bug;
687 cafe->nand.write_page = cafe_nand_write_page;
688 cafe->nand.ecc.write_page = cafe_nand_write_page_lowlevel;
689 cafe->nand.ecc.write_oob = cafe_nand_write_oob;
690 cafe->nand.ecc.read_page = cafe_nand_read_page;
691 cafe->nand.ecc.read_oob = cafe_nand_read_oob;
692
693 err = nand_scan_tail(mtd);
694 if (err)
695 goto out_irq;
696
697 pci_set_drvdata(pdev, mtd);
698 add_mtd_device(mtd);
699 goto out;
700
701 out_irq:
702 /* Disable NAND IRQ in global IRQ mask register */
703 cafe_writel(cafe, ~1 & cafe_readl(cafe, GLOBAL_IRQ_MASK), GLOBAL_IRQ_MASK);
704 free_irq(pdev->irq, mtd);
705 out_free_dma:
706 dma_free_coherent(&cafe->pdev->dev, 2112, cafe->dmabuf, cafe->dmaaddr);
707 out_ior:
708 pci_iounmap(pdev, cafe->mmio);
709 out_free_mtd:
710 kfree(mtd);
711 out:
712 return err;
713}
714
715static void __devexit cafe_nand_remove(struct pci_dev *pdev)
716{
717 struct mtd_info *mtd = pci_get_drvdata(pdev);
718 struct cafe_priv *cafe = mtd->priv;
719
720 del_mtd_device(mtd);
721 /* Disable NAND IRQ in global IRQ mask register */
722 cafe_writel(cafe, ~1 & cafe_readl(cafe, GLOBAL_IRQ_MASK), GLOBAL_IRQ_MASK);
723 free_irq(pdev->irq, mtd);
724 nand_release(mtd);
725 pci_iounmap(pdev, cafe->mmio);
726 dma_free_coherent(&cafe->pdev->dev, 2112, cafe->dmabuf, cafe->dmaaddr);
727 kfree(mtd);
728}
729
730static struct pci_device_id cafe_nand_tbl[] = {
731 { 0x11ab, 0x4100, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_MEMORY_FLASH << 8, 0xFFFF0 }
732};
733
734MODULE_DEVICE_TABLE(pci, cafe_nand_tbl);
735
736static struct pci_driver cafe_nand_pci_driver = {
737 .name = "CAFÉ NAND",
738 .id_table = cafe_nand_tbl,
739 .probe = cafe_nand_probe,
740 .remove = __devexit_p(cafe_nand_remove),
741#ifdef CONFIG_PMx
742 .suspend = cafe_nand_suspend,
743 .resume = cafe_nand_resume,
744#endif
745};
746
747static int cafe_nand_init(void)
748{
749 return pci_register_driver(&cafe_nand_pci_driver);
750}
751
752static void cafe_nand_exit(void)
753{
754 pci_unregister_driver(&cafe_nand_pci_driver);
755}
756module_init(cafe_nand_init);
757module_exit(cafe_nand_exit);
758
759MODULE_LICENSE("GPL");
760MODULE_AUTHOR("David Woodhouse <dwmw2@infradead.org>");
761MODULE_DESCRIPTION("NAND flash driver for OLPC CAFE chip");
762
763/* Correct ECC for 2048 bytes of 0xff:
764 41 a0 71 65 54 27 f3 93 ec a9 be ed 0b a1 */
765
766/* dwmw2's B-test board, in case of completely screwing it:
767Bad eraseblock 2394 at 0x12b40000
768Bad eraseblock 2627 at 0x14860000
769Bad eraseblock 3349 at 0x1a2a0000
770*/
diff --git a/drivers/mtd/nand/cafe_ecc.c b/drivers/mtd/nand/cafe_ecc.c
new file mode 100644
index 000000000000..1b9fa05a4474
--- /dev/null
+++ b/drivers/mtd/nand/cafe_ecc.c
@@ -0,0 +1,1381 @@
1/* Error correction for CAFÉ NAND controller
2 *
3 * © 2006 Marvell, Inc.
4 * Author: Tom Chiou
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the Free
8 * Software Foundation; either version 2 of the License, or (at your option)
9 * any later version.
10 *
11 * This program is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 * more details.
15 *
16 * You should have received a copy of the GNU General Public License along with
17 * this program; if not, write to the Free Software Foundation, Inc., 59
18 * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 */
20
21#include <linux/kernel.h>
22#include <linux/module.h>
23#include <linux/errno.h>
24
25static unsigned short gf4096_mul(unsigned short, unsigned short);
26static unsigned short gf64_mul(unsigned short, unsigned short);
27static unsigned short gf4096_inv(unsigned short);
28static unsigned short err_pos(unsigned short);
29static void find_4bit_err_coefs(unsigned short, unsigned short, unsigned short,
30 unsigned short, unsigned short, unsigned short,
31 unsigned short, unsigned short, unsigned short *);
32static void zero_4x5_col3(unsigned short[4][5]);
33static void zero_4x5_col2(unsigned short[4][5]);
34static void zero_4x5_col1(unsigned short[4][5]);
35static void swap_4x5_rows(unsigned short[4][5], int, int, int);
36static void swap_2x3_rows(unsigned short m[2][3]);
37static void solve_4x5(unsigned short m[4][5], unsigned short *, int *);
38static void sort_coefs(int *, unsigned short *, int);
39static void find_4bit_err_pats(unsigned short, unsigned short, unsigned short,
40 unsigned short, unsigned short, unsigned short,
41 unsigned short, unsigned short, unsigned short *);
42static void find_3bit_err_coefs(unsigned short, unsigned short, unsigned short,
43 unsigned short, unsigned short, unsigned short,
44 unsigned short *);
45static void zero_3x4_col2(unsigned short[3][4]);
46static void zero_3x4_col1(unsigned short[3][4]);
47static void swap_3x4_rows(unsigned short[3][4], int, int, int);
48static void solve_3x4(unsigned short[3][4], unsigned short *, int *);
49static void find_3bit_err_pats(unsigned short, unsigned short, unsigned short,
50 unsigned short, unsigned short, unsigned short,
51 unsigned short *);
52
53static void find_2bit_err_pats(unsigned short, unsigned short, unsigned short,
54 unsigned short, unsigned short *);
55static void find_2x2_soln(unsigned short, unsigned short, unsigned short,
56 unsigned short, unsigned short, unsigned short,
57 unsigned short *);
58static void solve_2x3(unsigned short[2][3], unsigned short *);
59static int chk_no_err_only(unsigned short *, unsigned short *);
60static int chk_1_err_only(unsigned short *, unsigned short *);
61static int chk_2_err_only(unsigned short *, unsigned short *);
62static int chk_3_err_only(unsigned short *, unsigned short *);
63static int chk_4_err_only(unsigned short *, unsigned short *);
64
65static unsigned short gf64_mul(unsigned short a, unsigned short b)
66{
67 unsigned short tmp1, tmp2, tmp3, tmp4, tmp5;
68 unsigned short c_bit0, c_bit1, c_bit2, c_bit3, c_bit4, c_bit5, c;
69
70 tmp1 = ((a) ^ (a >> 5));
71 tmp2 = ((a >> 4) ^ (a >> 5));
72 tmp3 = ((a >> 3) ^ (a >> 4));
73 tmp4 = ((a >> 2) ^ (a >> 3));
74 tmp5 = ((a >> 1) ^ (a >> 2));
75
76 c_bit0 = ((a & b) ^ ((a >> 5) & (b >> 1)) ^ ((a >> 4) & (b >> 2)) ^
77 ((a >> 3) & (b >> 3)) ^ ((a >> 2) & (b >> 4)) ^ ((a >> 1) & (b >> 5))) & 0x1;
78
79 c_bit1 = (((a >> 1) & b) ^ (tmp1 & (b >> 1)) ^ (tmp2 & (b >> 2)) ^
80 (tmp3 & (b >> 3)) ^ (tmp4 & (b >> 4)) ^ (tmp5 & (b >> 5))) & 0x1;
81
82 c_bit2 = (((a >> 2) & b) ^ ((a >> 1) & (b >> 1)) ^ (tmp1 & (b >> 2)) ^
83 (tmp2 & (b >> 3)) ^ (tmp3 & (b >> 4)) ^ (tmp4 & (b >> 5))) & 0x1;
84
85 c_bit3 = (((a >> 3) & b) ^ ((a >> 2) & (b >> 1)) ^ ((a >> 1) & (b >> 2)) ^
86 (tmp1 & (b >> 3)) ^ (tmp2 & (b >> 4)) ^ (tmp3 & (b >> 5))) & 0x1;
87
88 c_bit4 = (((a >> 4) & b) ^ ((a >> 3) & (b >> 1)) ^ ((a >> 2) & (b >> 2)) ^
89 ((a >> 1) & (b >> 3)) ^ (tmp1 & (b >> 4)) ^ (tmp2 & (b >> 5))) & 0x1;
90
91 c_bit5 = (((a >> 5) & b) ^ ((a >> 4) & (b >> 1)) ^ ((a >> 3) & (b >> 2)) ^
92 ((a >> 2) & (b >> 3)) ^ ((a >> 1) & (b >> 4)) ^ (tmp1 & (b >> 5))) & 0x1;
93
94 c = c_bit0 | (c_bit1 << 1) | (c_bit2 << 2) | (c_bit3 << 3) | (c_bit4 << 4) | (c_bit5 << 5);
95
96 return c;
97}
98
99static unsigned short gf4096_mul(unsigned short a, unsigned short b)
100{
101 unsigned short ah, al, bh, bl, alxah, blxbh, ablh, albl, ahbh, ahbhB, c;
102
103 ah = (a >> 6) & 0x3f;
104 al = a & 0x3f;
105 bh = (b >> 6) & 0x3f;
106 bl = b & 0x3f;
107 alxah = al ^ ah;
108 blxbh = bl ^ bh;
109
110 ablh = gf64_mul(alxah, blxbh);
111 albl = gf64_mul(al, bl);
112 ahbh = gf64_mul(ah, bh);
113
114 ahbhB = ((ahbh & 0x1) << 5) |
115 ((ahbh & 0x20) >> 1) |
116 ((ahbh & 0x10) >> 1) | ((ahbh & 0x8) >> 1) | ((ahbh & 0x4) >> 1) | (((ahbh >> 1) ^ ahbh) & 0x1);
117
118 c = ((ablh ^ albl) << 6) | (ahbhB ^ albl);
119 return c;
120}
121
122static void find_2bit_err_pats(unsigned short s0, unsigned short s1, unsigned short r0, unsigned short r1, unsigned short *pats)
123{
124 find_2x2_soln(0x1, 0x1, r0, r1, s0, s1, pats);
125}
126
127static void find_3bit_err_coefs(unsigned short s0, unsigned short s1,
128 unsigned short s2, unsigned short s3, unsigned short s4, unsigned short s5, unsigned short *coefs)
129{
130 unsigned short m[3][4];
131 int row_order[3];
132
133 row_order[0] = 0;
134 row_order[1] = 1;
135 row_order[2] = 2;
136 m[0][0] = s2;
137 m[0][1] = s1;
138 m[0][2] = s0;
139 m[0][3] = s3;
140 m[1][0] = s3;
141 m[1][1] = s2;
142 m[1][2] = s1;
143 m[1][3] = s4;
144 m[2][0] = s4;
145 m[2][1] = s3;
146 m[2][2] = s2;
147 m[2][3] = s5;
148
149 if (m[0][2] != 0x0) {
150 zero_3x4_col2(m);
151 } else if (m[1][2] != 0x0) {
152 swap_3x4_rows(m, 0, 1, 4);
153 zero_3x4_col2(m);
154 } else if (m[2][2] != 0x0) {
155 swap_3x4_rows(m, 0, 2, 4);
156 zero_3x4_col2(m);
157 } else {
158 printk(KERN_ERR "Error: find_3bit_err_coefs, s0,s1,s2 all zeros!\n");
159 }
160
161 if (m[1][1] != 0x0) {
162 zero_3x4_col1(m);
163 } else if (m[2][1] != 0x0) {
164 swap_3x4_rows(m, 1, 2, 4);
165 zero_3x4_col1(m);
166 } else {
167 printk(KERN_ERR "Error: find_3bit_err_coefs, cannot resolve col 1!\n");
168 }
169
170 /* solve coefs */
171 solve_3x4(m, coefs, row_order);
172}
173
174static void zero_3x4_col2(unsigned short m[3][4])
175{
176 unsigned short minv1, minv2;
177
178 minv1 = gf4096_mul(m[1][2], gf4096_inv(m[0][2]));
179 minv2 = gf4096_mul(m[2][2], gf4096_inv(m[0][2]));
180 m[1][0] = m[1][0] ^ gf4096_mul(m[0][0], minv1);
181 m[1][1] = m[1][1] ^ gf4096_mul(m[0][1], minv1);
182 m[1][3] = m[1][3] ^ gf4096_mul(m[0][3], minv1);
183 m[2][0] = m[2][0] ^ gf4096_mul(m[0][0], minv2);
184 m[2][1] = m[2][1] ^ gf4096_mul(m[0][1], minv2);
185 m[2][3] = m[2][3] ^ gf4096_mul(m[0][3], minv2);
186}
187
188static void zero_3x4_col1(unsigned short m[3][4])
189{
190 unsigned short minv;
191 minv = gf4096_mul(m[2][1], gf4096_inv(m[1][1]));
192 m[2][0] = m[2][0] ^ gf4096_mul(m[1][0], minv);
193 m[2][3] = m[2][3] ^ gf4096_mul(m[1][3], minv);
194}
195
196static void swap_3x4_rows(unsigned short m[3][4], int i, int j, int col_width)
197{
198 unsigned short tmp0;
199 int cnt;
200 for (cnt = 0; cnt < col_width; cnt++) {
201 tmp0 = m[i][cnt];
202 m[i][cnt] = m[j][cnt];
203 m[j][cnt] = tmp0;
204 }
205}
206
207static void solve_3x4(unsigned short m[3][4], unsigned short *coefs, int *row_order)
208{
209 unsigned short tmp[3];
210 tmp[0] = gf4096_mul(m[2][3], gf4096_inv(m[2][0]));
211 tmp[1] = gf4096_mul((gf4096_mul(tmp[0], m[1][0]) ^ m[1][3]), gf4096_inv(m[1][1]));
212 tmp[2] = gf4096_mul((gf4096_mul(tmp[0], m[0][0]) ^ gf4096_mul(tmp[1], m[0][1]) ^ m[0][3]), gf4096_inv(m[0][2]));
213 sort_coefs(row_order, tmp, 3);
214 coefs[0] = tmp[0];
215 coefs[1] = tmp[1];
216 coefs[2] = tmp[2];
217}
218
219static void find_3bit_err_pats(unsigned short s0, unsigned short s1,
220 unsigned short s2, unsigned short r0,
221 unsigned short r1, unsigned short r2,
222 unsigned short *pats)
223{
224 find_2x2_soln(r0 ^ r2, r1 ^ r2,
225 gf4096_mul(r0, r0 ^ r2), gf4096_mul(r1, r1 ^ r2),
226 gf4096_mul(s0, r2) ^ s1, gf4096_mul(s1, r2) ^ s2, pats);
227 pats[2] = s0 ^ pats[0] ^ pats[1];
228}
229
230static void find_4bit_err_coefs(unsigned short s0, unsigned short s1,
231 unsigned short s2, unsigned short s3,
232 unsigned short s4, unsigned short s5,
233 unsigned short s6, unsigned short s7,
234 unsigned short *coefs)
235{
236 unsigned short m[4][5];
237 int row_order[4];
238
239 row_order[0] = 0;
240 row_order[1] = 1;
241 row_order[2] = 2;
242 row_order[3] = 3;
243
244 m[0][0] = s3;
245 m[0][1] = s2;
246 m[0][2] = s1;
247 m[0][3] = s0;
248 m[0][4] = s4;
249 m[1][0] = s4;
250 m[1][1] = s3;
251 m[1][2] = s2;
252 m[1][3] = s1;
253 m[1][4] = s5;
254 m[2][0] = s5;
255 m[2][1] = s4;
256 m[2][2] = s3;
257 m[2][3] = s2;
258 m[2][4] = s6;
259 m[3][0] = s6;
260 m[3][1] = s5;
261 m[3][2] = s4;
262 m[3][3] = s3;
263 m[3][4] = s7;
264
265 if (m[0][3] != 0x0) {
266 zero_4x5_col3(m);
267 } else if (m[1][3] != 0x0) {
268 swap_4x5_rows(m, 0, 1, 5);
269 zero_4x5_col3(m);
270 } else if (m[2][3] != 0x0) {
271 swap_4x5_rows(m, 0, 2, 5);
272 zero_4x5_col3(m);
273 } else if (m[3][3] != 0x0) {
274 swap_4x5_rows(m, 0, 3, 5);
275 zero_4x5_col3(m);
276 } else {
277 printk(KERN_ERR "Error: find_4bit_err_coefs, s0,s1,s2,s3 all zeros!\n");
278 }
279
280 if (m[1][2] != 0x0) {
281 zero_4x5_col2(m);
282 } else if (m[2][2] != 0x0) {
283 swap_4x5_rows(m, 1, 2, 5);
284 zero_4x5_col2(m);
285 } else if (m[3][2] != 0x0) {
286 swap_4x5_rows(m, 1, 3, 5);
287 zero_4x5_col2(m);
288 } else {
289 printk(KERN_ERR "Error: find_4bit_err_coefs, cannot resolve col 2!\n");
290 }
291
292 if (m[2][1] != 0x0) {
293 zero_4x5_col1(m);
294 } else if (m[3][1] != 0x0) {
295 swap_4x5_rows(m, 2, 3, 5);
296 zero_4x5_col1(m);
297 } else {
298 printk(KERN_ERR "Error: find_4bit_err_coefs, cannot resolve col 1!\n");
299 }
300
301 solve_4x5(m, coefs, row_order);
302}
303
304static void zero_4x5_col3(unsigned short m[4][5])
305{
306 unsigned short minv1, minv2, minv3;
307
308 minv1 = gf4096_mul(m[1][3], gf4096_inv(m[0][3]));
309 minv2 = gf4096_mul(m[2][3], gf4096_inv(m[0][3]));
310 minv3 = gf4096_mul(m[3][3], gf4096_inv(m[0][3]));
311
312 m[1][0] = m[1][0] ^ gf4096_mul(m[0][0], minv1);
313 m[1][1] = m[1][1] ^ gf4096_mul(m[0][1], minv1);
314 m[1][2] = m[1][2] ^ gf4096_mul(m[0][2], minv1);
315 m[1][4] = m[1][4] ^ gf4096_mul(m[0][4], minv1);
316 m[2][0] = m[2][0] ^ gf4096_mul(m[0][0], minv2);
317 m[2][1] = m[2][1] ^ gf4096_mul(m[0][1], minv2);
318 m[2][2] = m[2][2] ^ gf4096_mul(m[0][2], minv2);
319 m[2][4] = m[2][4] ^ gf4096_mul(m[0][4], minv2);
320 m[3][0] = m[3][0] ^ gf4096_mul(m[0][0], minv3);
321 m[3][1] = m[3][1] ^ gf4096_mul(m[0][1], minv3);
322 m[3][2] = m[3][2] ^ gf4096_mul(m[0][2], minv3);
323 m[3][4] = m[3][4] ^ gf4096_mul(m[0][4], minv3);
324}
325
326static void zero_4x5_col2(unsigned short m[4][5])
327{
328 unsigned short minv2, minv3;
329
330 minv2 = gf4096_mul(m[2][2], gf4096_inv(m[1][2]));
331 minv3 = gf4096_mul(m[3][2], gf4096_inv(m[1][2]));
332
333 m[2][0] = m[2][0] ^ gf4096_mul(m[1][0], minv2);
334 m[2][1] = m[2][1] ^ gf4096_mul(m[1][1], minv2);
335 m[2][4] = m[2][4] ^ gf4096_mul(m[1][4], minv2);
336 m[3][0] = m[3][0] ^ gf4096_mul(m[1][0], minv3);
337 m[3][1] = m[3][1] ^ gf4096_mul(m[1][1], minv3);
338 m[3][4] = m[3][4] ^ gf4096_mul(m[1][4], minv3);
339}
340
341static void zero_4x5_col1(unsigned short m[4][5])
342{
343 unsigned short minv;
344
345 minv = gf4096_mul(m[3][1], gf4096_inv(m[2][1]));
346
347 m[3][0] = m[3][0] ^ gf4096_mul(m[2][0], minv);
348 m[3][4] = m[3][4] ^ gf4096_mul(m[2][4], minv);
349}
350
351static void swap_4x5_rows(unsigned short m[4][5], int i, int j, int col_width)
352{
353 unsigned short tmp0;
354 int cnt;
355
356 for (cnt = 0; cnt < col_width; cnt++) {
357 tmp0 = m[i][cnt];
358 m[i][cnt] = m[j][cnt];
359 m[j][cnt] = tmp0;
360 }
361}
362
363static void solve_4x5(unsigned short m[4][5], unsigned short *coefs, int *row_order)
364{
365 unsigned short tmp[4];
366
367 tmp[0] = gf4096_mul(m[3][4], gf4096_inv(m[3][0]));
368 tmp[1] = gf4096_mul((gf4096_mul(tmp[0], m[2][0]) ^ m[2][4]), gf4096_inv(m[2][1]));
369 tmp[2] = gf4096_mul((gf4096_mul(tmp[0], m[1][0]) ^ gf4096_mul(tmp[1], m[1][1]) ^ m[1][4]), gf4096_inv(m[1][2]));
370 tmp[3] = gf4096_mul((gf4096_mul(tmp[0], m[0][0]) ^
371 gf4096_mul(tmp[1], m[0][1]) ^ gf4096_mul(tmp[2], m[0][2]) ^ m[0][4]), gf4096_inv(m[0][3]));
372 sort_coefs(row_order, tmp, 4);
373 coefs[0] = tmp[0];
374 coefs[1] = tmp[1];
375 coefs[2] = tmp[2];
376 coefs[3] = tmp[3];
377}
378
379static void sort_coefs(int *order, unsigned short *soln, int len)
380{
381 int cnt, start_cnt, least_ord, least_cnt;
382 unsigned short tmp0;
383 for (start_cnt = 0; start_cnt < len; start_cnt++) {
384 for (cnt = start_cnt; cnt < len; cnt++) {
385 if (cnt == start_cnt) {
386 least_ord = order[cnt];
387 least_cnt = start_cnt;
388 } else {
389 if (least_ord > order[cnt]) {
390 least_ord = order[cnt];
391 least_cnt = cnt;
392 }
393 }
394 }
395 if (least_cnt != start_cnt) {
396 tmp0 = order[least_cnt];
397 order[least_cnt] = order[start_cnt];
398 order[start_cnt] = tmp0;
399 tmp0 = soln[least_cnt];
400 soln[least_cnt] = soln[start_cnt];
401 soln[start_cnt] = tmp0;
402 }
403 }
404}
405
406static void find_4bit_err_pats(unsigned short s0, unsigned short s1,
407 unsigned short s2, unsigned short s3,
408 unsigned short z1, unsigned short z2,
409 unsigned short z3, unsigned short z4,
410 unsigned short *pats)
411{
412 unsigned short z4_z1, z3z4_z3z3, z4_z2, s0z4_s1, z1z4_z1z1,
413 z4_z3, z2z4_z2z2, s1z4_s2, z3z3z4_z3z3z3, z1z1z4_z1z1z1, z2z2z4_z2z2z2, s2z4_s3;
414 unsigned short tmp0, tmp1, tmp2, tmp3;
415
416 z4_z1 = z4 ^ z1;
417 z3z4_z3z3 = gf4096_mul(z3, z4) ^ gf4096_mul(z3, z3);
418 z4_z2 = z4 ^ z2;
419 s0z4_s1 = gf4096_mul(s0, z4) ^ s1;
420 z1z4_z1z1 = gf4096_mul(z1, z4) ^ gf4096_mul(z1, z1);
421 z4_z3 = z4 ^ z3;
422 z2z4_z2z2 = gf4096_mul(z2, z4) ^ gf4096_mul(z2, z2);
423 s1z4_s2 = gf4096_mul(s1, z4) ^ s2;
424 z3z3z4_z3z3z3 = gf4096_mul(gf4096_mul(z3, z3), z4) ^ gf4096_mul(gf4096_mul(z3, z3), z3);
425 z1z1z4_z1z1z1 = gf4096_mul(gf4096_mul(z1, z1), z4) ^ gf4096_mul(gf4096_mul(z1, z1), z1);
426 z2z2z4_z2z2z2 = gf4096_mul(gf4096_mul(z2, z2), z4) ^ gf4096_mul(gf4096_mul(z2, z2), z2);
427 s2z4_s3 = gf4096_mul(s2, z4) ^ s3;
428
429 //find err pat 0,1
430 find_2x2_soln(gf4096_mul(z4_z1, z3z4_z3z3) ^
431 gf4096_mul(z1z4_z1z1, z4_z3), gf4096_mul(z4_z2,
432 z3z4_z3z3) ^
433 gf4096_mul(z2z4_z2z2, z4_z3), gf4096_mul(z1z4_z1z1,
434 z3z3z4_z3z3z3) ^
435 gf4096_mul(z1z1z4_z1z1z1, z3z4_z3z3),
436 gf4096_mul(z2z4_z2z2,
437 z3z3z4_z3z3z3) ^ gf4096_mul(z2z2z4_z2z2z2,
438 z3z4_z3z3),
439 gf4096_mul(s0z4_s1, z3z4_z3z3) ^ gf4096_mul(s1z4_s2,
440 z4_z3),
441 gf4096_mul(s1z4_s2, z3z3z4_z3z3z3) ^ gf4096_mul(s2z4_s3, z3z4_z3z3), pats);
442 tmp0 = pats[0];
443 tmp1 = pats[1];
444 tmp2 = pats[0] ^ pats[1] ^ s0;
445 tmp3 = gf4096_mul(pats[0], z1) ^ gf4096_mul(pats[1], z2) ^ s1;
446
447 //find err pat 2,3
448 find_2x2_soln(0x1, 0x1, z3, z4, tmp2, tmp3, pats);
449 pats[2] = pats[0];
450 pats[3] = pats[1];
451 pats[0] = tmp0;
452 pats[1] = tmp1;
453}
454
455static void find_2x2_soln(unsigned short c00, unsigned short c01,
456 unsigned short c10, unsigned short c11,
457 unsigned short lval0, unsigned short lval1,
458 unsigned short *soln)
459{
460 unsigned short m[2][3];
461 m[0][0] = c00;
462 m[0][1] = c01;
463 m[0][2] = lval0;
464 m[1][0] = c10;
465 m[1][1] = c11;
466 m[1][2] = lval1;
467
468 if (m[0][1] != 0x0) {
469 /* */
470 } else if (m[1][1] != 0x0) {
471 swap_2x3_rows(m);
472 } else {
473 printk(KERN_ERR "Warning: find_2bit_err_coefs, s0,s1 all zeros!\n");
474 }
475
476 solve_2x3(m, soln);
477}
478
479static void swap_2x3_rows(unsigned short m[2][3])
480{
481 unsigned short tmp0;
482 int cnt;
483
484 for (cnt = 0; cnt < 3; cnt++) {
485 tmp0 = m[0][cnt];
486 m[0][cnt] = m[1][cnt];
487 m[1][cnt] = tmp0;
488 }
489}
490
491static void solve_2x3(unsigned short m[2][3], unsigned short *coefs)
492{
493 unsigned short minv;
494
495 minv = gf4096_mul(m[1][1], gf4096_inv(m[0][1]));
496 m[1][0] = m[1][0] ^ gf4096_mul(m[0][0], minv);
497 m[1][2] = m[1][2] ^ gf4096_mul(m[0][2], minv);
498 coefs[0] = gf4096_mul(m[1][2], gf4096_inv(m[1][0]));
499 coefs[1] = gf4096_mul((gf4096_mul(coefs[0], m[0][0]) ^ m[0][2]), gf4096_inv(m[0][1]));
500}
501
502static unsigned char gf64_inv[64] = {
503 0, 1, 33, 62, 49, 43, 31, 44, 57, 37, 52, 28, 46, 40, 22, 25,
504 61, 54, 51, 39, 26, 35, 14, 24, 23, 15, 20, 34, 11, 53, 45, 6,
505 63, 2, 27, 21, 56, 9, 50, 19, 13, 47, 48, 5, 7, 30, 12, 41,
506 42, 4, 38, 18, 10, 29, 17, 60, 36, 8, 59, 58, 55, 16, 3, 32
507};
508
509static unsigned short gf4096_inv(unsigned short din)
510{
511 unsigned short alahxal, ah2B, deno, inv, bl, bh;
512 unsigned short ah, al, ahxal;
513 unsigned short dout;
514
515 ah = (din >> 6) & 0x3f;
516 al = din & 0x3f;
517 ahxal = ah ^ al;
518 ah2B = (((ah ^ (ah >> 3)) & 0x1) << 5) |
519 ((ah >> 1) & 0x10) |
520 ((((ah >> 5) ^ (ah >> 2)) & 0x1) << 3) |
521 ((ah >> 2) & 0x4) | ((((ah >> 4) ^ (ah >> 1)) & 0x1) << 1) | (ah & 0x1);
522 alahxal = gf64_mul(ahxal, al);
523 deno = alahxal ^ ah2B;
524 inv = gf64_inv[deno];
525 bl = gf64_mul(inv, ahxal);
526 bh = gf64_mul(inv, ah);
527 dout = ((bh & 0x3f) << 6) | (bl & 0x3f);
528 return (((bh & 0x3f) << 6) | (bl & 0x3f));
529}
530
531static unsigned short err_pos_lut[4096] = {
532 0xfff, 0x000, 0x451, 0xfff, 0xfff, 0x3cf, 0xfff, 0x041,
533 0xfff, 0xfff, 0xfff, 0xfff, 0x28a, 0xfff, 0x492, 0xfff,
534 0x145, 0xfff, 0xfff, 0x514, 0xfff, 0x082, 0xfff, 0xfff,
535 0xfff, 0x249, 0x38e, 0x410, 0xfff, 0x104, 0x208, 0x1c7,
536 0xfff, 0xfff, 0xfff, 0xfff, 0x2cb, 0xfff, 0xfff, 0xfff,
537 0x0c3, 0x34d, 0x4d3, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
538 0xfff, 0xfff, 0xfff, 0x186, 0xfff, 0xfff, 0xfff, 0xfff,
539 0xfff, 0x30c, 0x555, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
540 0xfff, 0xfff, 0xfff, 0x166, 0xfff, 0xfff, 0xfff, 0xfff,
541 0x385, 0x14e, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x4e1,
542 0xfff, 0xfff, 0xfff, 0xfff, 0x538, 0xfff, 0x16d, 0xfff,
543 0xfff, 0xfff, 0x45b, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
544 0xfff, 0xfff, 0xfff, 0x29c, 0x2cc, 0x30b, 0x2b3, 0xfff,
545 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x0b3, 0xfff, 0x2f7,
546 0xfff, 0x32b, 0xfff, 0xfff, 0xfff, 0xfff, 0x0a7, 0xfff,
547 0xfff, 0x2da, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
548 0xfff, 0x07e, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
549 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x11c, 0xfff, 0xfff,
550 0xfff, 0xfff, 0xfff, 0x22f, 0xfff, 0x1f4, 0xfff, 0xfff,
551 0x2b0, 0x504, 0xfff, 0x114, 0xfff, 0xfff, 0xfff, 0x21d,
552 0xfff, 0xfff, 0xfff, 0xfff, 0x00d, 0x3c4, 0x340, 0x10f,
553 0xfff, 0xfff, 0x266, 0x02e, 0xfff, 0xfff, 0xfff, 0x4f8,
554 0x337, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
555 0xfff, 0xfff, 0xfff, 0x07b, 0x168, 0xfff, 0xfff, 0x0fe,
556 0xfff, 0xfff, 0x51a, 0xfff, 0x458, 0xfff, 0x36d, 0xfff,
557 0xfff, 0xfff, 0xfff, 0x073, 0x37d, 0x415, 0x550, 0xfff,
558 0xfff, 0xfff, 0x23b, 0x4b4, 0xfff, 0xfff, 0xfff, 0x1a1,
559 0xfff, 0xfff, 0x3aa, 0xfff, 0x117, 0x04d, 0x341, 0xfff,
560 0xfff, 0xfff, 0xfff, 0x518, 0x03e, 0x0f2, 0xfff, 0xfff,
561 0xfff, 0xfff, 0xfff, 0x363, 0xfff, 0x0b9, 0xfff, 0xfff,
562 0x241, 0xfff, 0xfff, 0x049, 0xfff, 0xfff, 0xfff, 0xfff,
563 0x15f, 0x52d, 0xfff, 0xfff, 0xfff, 0x29e, 0xfff, 0xfff,
564 0xfff, 0xfff, 0x4cf, 0x0fc, 0xfff, 0x36f, 0x3d3, 0xfff,
565 0x228, 0xfff, 0xfff, 0x45e, 0xfff, 0xfff, 0xfff, 0xfff,
566 0x238, 0xfff, 0xfff, 0xfff, 0xfff, 0x47f, 0xfff, 0xfff,
567 0x43a, 0x265, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x3e8,
568 0xfff, 0xfff, 0x01a, 0xfff, 0xfff, 0xfff, 0xfff, 0x21e,
569 0x1fc, 0x40b, 0xfff, 0xfff, 0xfff, 0x2d0, 0x159, 0xfff,
570 0xfff, 0x313, 0xfff, 0xfff, 0x05c, 0x4cc, 0xfff, 0xfff,
571 0x0f6, 0x3d5, 0xfff, 0xfff, 0xfff, 0x54f, 0xfff, 0xfff,
572 0xfff, 0x172, 0x1e4, 0x07c, 0xfff, 0xfff, 0xfff, 0xfff,
573 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x53c, 0x1ad, 0x535,
574 0x19b, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
575 0xfff, 0xfff, 0x092, 0xfff, 0x2be, 0xfff, 0xfff, 0x482,
576 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x0e6, 0xfff, 0xfff,
577 0xfff, 0xfff, 0xfff, 0x476, 0xfff, 0x51d, 0xfff, 0xfff,
578 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
579 0xfff, 0xfff, 0x342, 0x2b5, 0x22e, 0x09a, 0xfff, 0x08d,
580 0x44f, 0x3ed, 0xfff, 0xfff, 0xfff, 0xfff, 0x3d1, 0xfff,
581 0xfff, 0x543, 0xfff, 0x48f, 0xfff, 0x3d2, 0xfff, 0x0d5,
582 0x113, 0x0ec, 0x427, 0xfff, 0xfff, 0xfff, 0x4c4, 0xfff,
583 0xfff, 0x50a, 0xfff, 0x144, 0xfff, 0x105, 0x39f, 0x294,
584 0x164, 0xfff, 0x31a, 0xfff, 0xfff, 0x49a, 0xfff, 0x130,
585 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
586 0x1be, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
587 0xfff, 0xfff, 0x49e, 0x371, 0xfff, 0xfff, 0xfff, 0xfff,
588 0xfff, 0xfff, 0xfff, 0xfff, 0x0e8, 0x49c, 0x0f4, 0xfff,
589 0x338, 0x1a7, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
590 0xfff, 0x36c, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
591 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
592 0xfff, 0x1ae, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
593 0xfff, 0x31b, 0xfff, 0xfff, 0x2dd, 0x522, 0xfff, 0xfff,
594 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x2f4,
595 0x3c6, 0x30d, 0xfff, 0xfff, 0xfff, 0xfff, 0x34c, 0x18f,
596 0x30a, 0xfff, 0x01f, 0x079, 0xfff, 0xfff, 0x54d, 0x46b,
597 0x28c, 0x37f, 0xfff, 0xfff, 0xfff, 0xfff, 0x355, 0xfff,
598 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x14f, 0xfff, 0xfff,
599 0xfff, 0xfff, 0xfff, 0x359, 0x3fe, 0x3c5, 0xfff, 0xfff,
600 0xfff, 0xfff, 0x423, 0xfff, 0xfff, 0x34a, 0x22c, 0xfff,
601 0x25a, 0xfff, 0xfff, 0x4ad, 0xfff, 0x28d, 0xfff, 0xfff,
602 0xfff, 0xfff, 0xfff, 0x547, 0xfff, 0xfff, 0xfff, 0xfff,
603 0x2e2, 0xfff, 0xfff, 0x1d5, 0xfff, 0x2a8, 0xfff, 0xfff,
604 0x03f, 0xfff, 0xfff, 0xfff, 0xfff, 0x3eb, 0x0fa, 0xfff,
605 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x55b, 0xfff,
606 0x08e, 0xfff, 0x3ae, 0xfff, 0x3a4, 0xfff, 0x282, 0x158,
607 0xfff, 0x382, 0xfff, 0xfff, 0x499, 0xfff, 0xfff, 0x08a,
608 0xfff, 0xfff, 0xfff, 0x456, 0x3be, 0xfff, 0x1e2, 0xfff,
609 0xfff, 0xfff, 0xfff, 0xfff, 0x559, 0xfff, 0x1a0, 0xfff,
610 0xfff, 0x0b4, 0xfff, 0xfff, 0xfff, 0x2df, 0xfff, 0xfff,
611 0xfff, 0x07f, 0x4f5, 0xfff, 0xfff, 0x27c, 0x133, 0x017,
612 0xfff, 0x3fd, 0xfff, 0xfff, 0xfff, 0x44d, 0x4cd, 0x17a,
613 0x0d7, 0x537, 0xfff, 0xfff, 0x353, 0xfff, 0xfff, 0x351,
614 0x366, 0xfff, 0x44a, 0xfff, 0x1a6, 0xfff, 0xfff, 0xfff,
615 0x291, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x1e3,
616 0xfff, 0xfff, 0xfff, 0xfff, 0x389, 0xfff, 0x07a, 0xfff,
617 0x1b6, 0x2ed, 0xfff, 0xfff, 0xfff, 0xfff, 0x24e, 0x074,
618 0xfff, 0xfff, 0x3dc, 0xfff, 0x4e3, 0xfff, 0xfff, 0xfff,
619 0xfff, 0x4eb, 0xfff, 0xfff, 0x3b8, 0x4de, 0xfff, 0x19c,
620 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x262,
621 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x076, 0x4e8, 0x3da,
622 0xfff, 0x531, 0xfff, 0xfff, 0x14a, 0xfff, 0x0a2, 0x433,
623 0x3df, 0x1e9, 0xfff, 0xfff, 0xfff, 0xfff, 0x3e7, 0x285,
624 0x2d8, 0xfff, 0xfff, 0xfff, 0x349, 0x18d, 0x098, 0xfff,
625 0x0df, 0x4bf, 0xfff, 0xfff, 0x0b2, 0xfff, 0x346, 0x24d,
626 0xfff, 0xfff, 0xfff, 0x24f, 0x4fa, 0x2f9, 0xfff, 0xfff,
627 0x3c9, 0xfff, 0x2b4, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
628 0xfff, 0x056, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
629 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
630 0xfff, 0x179, 0xfff, 0x0e9, 0x3f0, 0x33d, 0xfff, 0xfff,
631 0xfff, 0xfff, 0xfff, 0x1fd, 0xfff, 0xfff, 0x526, 0xfff,
632 0xfff, 0xfff, 0x53d, 0xfff, 0xfff, 0xfff, 0x170, 0x331,
633 0xfff, 0x068, 0xfff, 0xfff, 0xfff, 0x3f7, 0xfff, 0x3d8,
634 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
635 0xfff, 0x09f, 0x556, 0xfff, 0xfff, 0x02d, 0xfff, 0xfff,
636 0x553, 0xfff, 0xfff, 0xfff, 0x1f0, 0xfff, 0xfff, 0x4d6,
637 0x41e, 0xfff, 0xfff, 0xfff, 0xfff, 0x4d5, 0xfff, 0xfff,
638 0xfff, 0xfff, 0xfff, 0x248, 0xfff, 0xfff, 0xfff, 0x0a3,
639 0xfff, 0x217, 0xfff, 0xfff, 0xfff, 0x4f1, 0x209, 0xfff,
640 0xfff, 0x475, 0x234, 0x52b, 0x398, 0xfff, 0x08b, 0xfff,
641 0xfff, 0xfff, 0xfff, 0x2c2, 0xfff, 0xfff, 0xfff, 0xfff,
642 0xfff, 0xfff, 0x268, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
643 0xfff, 0x4a3, 0xfff, 0x0aa, 0xfff, 0x1d9, 0xfff, 0xfff,
644 0xfff, 0xfff, 0x155, 0xfff, 0xfff, 0xfff, 0xfff, 0x0bf,
645 0x539, 0xfff, 0xfff, 0x2f1, 0x545, 0xfff, 0xfff, 0xfff,
646 0xfff, 0xfff, 0xfff, 0x2a7, 0x06f, 0xfff, 0x378, 0xfff,
647 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x25e, 0xfff,
648 0xfff, 0xfff, 0xfff, 0x15d, 0x02a, 0xfff, 0xfff, 0x0bc,
649 0x235, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
650 0x150, 0xfff, 0x1a9, 0xfff, 0xfff, 0xfff, 0xfff, 0x381,
651 0xfff, 0x04e, 0x270, 0x13f, 0xfff, 0xfff, 0x405, 0xfff,
652 0x3cd, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
653 0xfff, 0x2ef, 0xfff, 0x06a, 0xfff, 0xfff, 0xfff, 0x34f,
654 0x212, 0xfff, 0xfff, 0x0e2, 0xfff, 0x083, 0x298, 0xfff,
655 0xfff, 0xfff, 0x0c2, 0xfff, 0xfff, 0x52e, 0xfff, 0x488,
656 0xfff, 0xfff, 0xfff, 0x36b, 0xfff, 0xfff, 0xfff, 0x442,
657 0x091, 0xfff, 0x41c, 0xfff, 0xfff, 0x3a5, 0xfff, 0x4e6,
658 0xfff, 0xfff, 0x40d, 0x31d, 0xfff, 0xfff, 0xfff, 0x4c1,
659 0x053, 0xfff, 0x418, 0x13c, 0xfff, 0x350, 0xfff, 0x0ae,
660 0xfff, 0xfff, 0x41f, 0xfff, 0x470, 0xfff, 0x4ca, 0xfff,
661 0xfff, 0xfff, 0x02b, 0x450, 0xfff, 0x1f8, 0xfff, 0xfff,
662 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x293, 0xfff,
663 0xfff, 0xfff, 0xfff, 0x411, 0xfff, 0xfff, 0xfff, 0xfff,
664 0xfff, 0xfff, 0xfff, 0xfff, 0x0b8, 0xfff, 0xfff, 0xfff,
665 0x3e1, 0xfff, 0xfff, 0xfff, 0xfff, 0x43c, 0xfff, 0x2b2,
666 0x2ab, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x1ec,
667 0xfff, 0xfff, 0xfff, 0x3f8, 0x034, 0xfff, 0xfff, 0xfff,
668 0xfff, 0xfff, 0xfff, 0x11a, 0xfff, 0x541, 0x45c, 0x134,
669 0x1cc, 0xfff, 0xfff, 0xfff, 0x469, 0xfff, 0xfff, 0x44b,
670 0x161, 0xfff, 0xfff, 0xfff, 0x055, 0xfff, 0xfff, 0xfff,
671 0xfff, 0x307, 0xfff, 0xfff, 0xfff, 0xfff, 0x2d1, 0xfff,
672 0xfff, 0xfff, 0x124, 0x37b, 0x26b, 0x336, 0xfff, 0xfff,
673 0x2e4, 0x3cb, 0xfff, 0xfff, 0x0f8, 0x3c8, 0xfff, 0xfff,
674 0xfff, 0x461, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x4b5,
675 0x2cf, 0xfff, 0xfff, 0xfff, 0x20f, 0xfff, 0x35a, 0xfff,
676 0x490, 0xfff, 0x185, 0xfff, 0xfff, 0xfff, 0xfff, 0x42e,
677 0xfff, 0xfff, 0xfff, 0xfff, 0x54b, 0xfff, 0xfff, 0xfff,
678 0x146, 0xfff, 0x412, 0xfff, 0xfff, 0xfff, 0x1ff, 0xfff,
679 0xfff, 0x3e0, 0xfff, 0xfff, 0xfff, 0xfff, 0x2d5, 0xfff,
680 0x4df, 0x505, 0xfff, 0x413, 0xfff, 0x1a5, 0xfff, 0x3b2,
681 0xfff, 0xfff, 0xfff, 0x35b, 0xfff, 0x116, 0xfff, 0xfff,
682 0x171, 0x4d0, 0xfff, 0x154, 0x12d, 0xfff, 0xfff, 0xfff,
683 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x468, 0x4db, 0xfff,
684 0xfff, 0x1df, 0xfff, 0xfff, 0xfff, 0xfff, 0x05a, 0xfff,
685 0x0f1, 0x403, 0xfff, 0x22b, 0x2e0, 0xfff, 0xfff, 0xfff,
686 0x2b7, 0x373, 0xfff, 0xfff, 0xfff, 0xfff, 0x13e, 0xfff,
687 0xfff, 0xfff, 0x0d0, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
688 0x329, 0x1d2, 0x3fa, 0x047, 0xfff, 0x2f2, 0xfff, 0xfff,
689 0x141, 0x0ac, 0x1d7, 0xfff, 0x07d, 0xfff, 0xfff, 0xfff,
690 0x1c1, 0xfff, 0x487, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
691 0xfff, 0xfff, 0xfff, 0x045, 0xfff, 0xfff, 0xfff, 0xfff,
692 0x288, 0x0cd, 0xfff, 0xfff, 0xfff, 0xfff, 0x226, 0x1d8,
693 0xfff, 0x153, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x4cb,
694 0x528, 0xfff, 0xfff, 0xfff, 0x20a, 0x343, 0x3a1, 0xfff,
695 0xfff, 0xfff, 0x2d7, 0x2d3, 0x1aa, 0x4c5, 0xfff, 0xfff,
696 0xfff, 0x42b, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
697 0xfff, 0xfff, 0xfff, 0xfff, 0x3e9, 0xfff, 0x20b, 0x260,
698 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x37c, 0x2fd,
699 0xfff, 0xfff, 0x2c8, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
700 0xfff, 0x31e, 0xfff, 0x335, 0xfff, 0xfff, 0xfff, 0xfff,
701 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
702 0xfff, 0xfff, 0x135, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
703 0xfff, 0xfff, 0x35c, 0x4dd, 0x129, 0xfff, 0xfff, 0xfff,
704 0xfff, 0xfff, 0x1ef, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
705 0xfff, 0x34e, 0xfff, 0xfff, 0xfff, 0xfff, 0x407, 0xfff,
706 0xfff, 0xfff, 0xfff, 0xfff, 0x3ad, 0xfff, 0xfff, 0xfff,
707 0x379, 0xfff, 0xfff, 0x1d0, 0x38d, 0xfff, 0xfff, 0x1e8,
708 0x184, 0x3c1, 0x1c4, 0xfff, 0x1f9, 0xfff, 0xfff, 0x424,
709 0xfff, 0xfff, 0xfff, 0xfff, 0x1d3, 0x0d4, 0xfff, 0x4e9,
710 0xfff, 0xfff, 0xfff, 0x530, 0x107, 0xfff, 0x106, 0x04f,
711 0xfff, 0xfff, 0x4c7, 0x503, 0xfff, 0xfff, 0xfff, 0xfff,
712 0xfff, 0x15c, 0xfff, 0x23f, 0xfff, 0xfff, 0xfff, 0xfff,
713 0xfff, 0xfff, 0xfff, 0xfff, 0x4f3, 0xfff, 0xfff, 0x3c7,
714 0xfff, 0x278, 0xfff, 0xfff, 0x0a6, 0xfff, 0xfff, 0xfff,
715 0x122, 0x1cf, 0xfff, 0x327, 0xfff, 0x2e5, 0xfff, 0x29d,
716 0xfff, 0xfff, 0x3f1, 0xfff, 0xfff, 0x48d, 0xfff, 0xfff,
717 0xfff, 0xfff, 0x054, 0xfff, 0xfff, 0xfff, 0xfff, 0x178,
718 0x27e, 0x4e0, 0x352, 0x02f, 0x09c, 0xfff, 0x2a0, 0xfff,
719 0xfff, 0x46a, 0x457, 0xfff, 0xfff, 0x501, 0xfff, 0x2ba,
720 0xfff, 0xfff, 0xfff, 0x54e, 0x2e7, 0xfff, 0xfff, 0xfff,
721 0xfff, 0xfff, 0x551, 0xfff, 0xfff, 0x1db, 0x2aa, 0xfff,
722 0xfff, 0x4bc, 0xfff, 0xfff, 0x395, 0xfff, 0x0de, 0xfff,
723 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x455, 0xfff, 0x17e,
724 0xfff, 0x221, 0x4a7, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
725 0x388, 0xfff, 0xfff, 0xfff, 0x308, 0xfff, 0xfff, 0xfff,
726 0x20e, 0x4b9, 0xfff, 0x273, 0x20c, 0x09e, 0xfff, 0x057,
727 0xfff, 0xfff, 0xfff, 0xfff, 0x3f2, 0xfff, 0x1a8, 0x3a6,
728 0x14c, 0xfff, 0xfff, 0x071, 0xfff, 0xfff, 0x53a, 0xfff,
729 0xfff, 0xfff, 0xfff, 0x109, 0xfff, 0xfff, 0x399, 0xfff,
730 0x061, 0x4f0, 0x39e, 0x244, 0xfff, 0x035, 0xfff, 0xfff,
731 0x305, 0x47e, 0x297, 0xfff, 0xfff, 0x2b8, 0xfff, 0xfff,
732 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x1bc, 0xfff, 0x2fc,
733 0xfff, 0xfff, 0x554, 0xfff, 0xfff, 0xfff, 0xfff, 0x3b6,
734 0xfff, 0xfff, 0xfff, 0x515, 0x397, 0xfff, 0xfff, 0x12f,
735 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x4e5,
736 0xfff, 0x4fc, 0xfff, 0xfff, 0x05e, 0xfff, 0xfff, 0xfff,
737 0xfff, 0xfff, 0x0a8, 0x3af, 0x015, 0xfff, 0xfff, 0xfff,
738 0xfff, 0x138, 0xfff, 0xfff, 0xfff, 0x540, 0xfff, 0xfff,
739 0xfff, 0x027, 0x523, 0x2f0, 0xfff, 0xfff, 0xfff, 0xfff,
740 0xfff, 0xfff, 0x16c, 0xfff, 0x27d, 0xfff, 0xfff, 0xfff,
741 0xfff, 0x04c, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x4dc,
742 0xfff, 0xfff, 0x059, 0x301, 0xfff, 0xfff, 0xfff, 0xfff,
743 0xfff, 0xfff, 0xfff, 0x1a3, 0xfff, 0x15a, 0xfff, 0xfff,
744 0x0a5, 0xfff, 0x435, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
745 0xfff, 0x051, 0xfff, 0xfff, 0x131, 0xfff, 0x4f4, 0xfff,
746 0xfff, 0xfff, 0xfff, 0x441, 0xfff, 0x4fb, 0xfff, 0x03b,
747 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x1ed, 0x274,
748 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x0d3, 0x55e, 0x1b3,
749 0xfff, 0x0bd, 0xfff, 0xfff, 0xfff, 0xfff, 0x225, 0xfff,
750 0xfff, 0xfff, 0xfff, 0xfff, 0x4b7, 0xfff, 0xfff, 0x2ff,
751 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x4c3, 0xfff,
752 0x383, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x2f6,
753 0xfff, 0xfff, 0x1ee, 0xfff, 0x03d, 0xfff, 0xfff, 0xfff,
754 0xfff, 0xfff, 0x26f, 0x1dc, 0xfff, 0x0db, 0xfff, 0xfff,
755 0xfff, 0xfff, 0xfff, 0x0ce, 0xfff, 0xfff, 0x127, 0x03a,
756 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x311, 0xfff,
757 0xfff, 0x13d, 0x09d, 0x47b, 0x2a6, 0x50d, 0x510, 0x19a,
758 0xfff, 0x354, 0x414, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
759 0xfff, 0xfff, 0x44c, 0x3b0, 0xfff, 0x23d, 0x429, 0xfff,
760 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
761 0x4c0, 0x416, 0xfff, 0x05b, 0xfff, 0xfff, 0x137, 0xfff,
762 0x25f, 0x49f, 0xfff, 0x279, 0x013, 0xfff, 0xfff, 0xfff,
763 0x269, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
764 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x3d0, 0xfff, 0xfff,
765 0xfff, 0xfff, 0xfff, 0xfff, 0x077, 0xfff, 0xfff, 0x3fb,
766 0xfff, 0xfff, 0xfff, 0xfff, 0x271, 0x3a0, 0xfff, 0xfff,
767 0x40f, 0xfff, 0xfff, 0x3de, 0xfff, 0xfff, 0xfff, 0xfff,
768 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x1ab, 0x26a,
769 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x489, 0xfff, 0xfff,
770 0x252, 0xfff, 0xfff, 0xfff, 0xfff, 0x1b7, 0x42f, 0xfff,
771 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x3b7,
772 0xfff, 0x2bb, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
773 0xfff, 0xfff, 0xfff, 0x0f7, 0x01d, 0xfff, 0x067, 0xfff,
774 0xfff, 0xfff, 0xfff, 0x4e2, 0xfff, 0xfff, 0x4bb, 0xfff,
775 0xfff, 0xfff, 0x17b, 0xfff, 0x0ee, 0xfff, 0xfff, 0xfff,
776 0xfff, 0xfff, 0x36e, 0xfff, 0xfff, 0xfff, 0x533, 0xfff,
777 0xfff, 0xfff, 0x4d4, 0x356, 0xfff, 0xfff, 0x375, 0xfff,
778 0xfff, 0xfff, 0xfff, 0x4a4, 0x513, 0xfff, 0xfff, 0xfff,
779 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x4ff, 0xfff, 0x2af,
780 0xfff, 0xfff, 0x026, 0xfff, 0x0ad, 0xfff, 0xfff, 0xfff,
781 0xfff, 0x26e, 0xfff, 0xfff, 0xfff, 0xfff, 0x493, 0xfff,
782 0x463, 0x4d2, 0x4be, 0xfff, 0xfff, 0xfff, 0xfff, 0x4f2,
783 0x0b6, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
784 0xfff, 0x32d, 0x315, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
785 0xfff, 0x13a, 0x4a1, 0xfff, 0x27a, 0xfff, 0xfff, 0xfff,
786 0x47a, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
787 0x334, 0xfff, 0xfff, 0xfff, 0xfff, 0x54c, 0xfff, 0xfff,
788 0xfff, 0x0c9, 0x007, 0xfff, 0xfff, 0x12e, 0xfff, 0x0ff,
789 0xfff, 0xfff, 0x3f5, 0x509, 0xfff, 0xfff, 0xfff, 0xfff,
790 0x1c3, 0x2ad, 0xfff, 0xfff, 0x47c, 0x261, 0xfff, 0xfff,
791 0xfff, 0xfff, 0xfff, 0x152, 0xfff, 0xfff, 0xfff, 0x339,
792 0xfff, 0x243, 0x1c0, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
793 0x063, 0xfff, 0xfff, 0x254, 0xfff, 0xfff, 0x173, 0xfff,
794 0x0c7, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
795 0xfff, 0x362, 0x259, 0x485, 0x374, 0x0dc, 0x3ab, 0xfff,
796 0x1c5, 0x534, 0x544, 0xfff, 0xfff, 0x508, 0xfff, 0x402,
797 0x408, 0xfff, 0x0e7, 0xfff, 0xfff, 0x00a, 0x205, 0xfff,
798 0xfff, 0x2b9, 0xfff, 0xfff, 0xfff, 0x465, 0xfff, 0xfff,
799 0xfff, 0xfff, 0xfff, 0xfff, 0x23a, 0xfff, 0xfff, 0xfff,
800 0xfff, 0x147, 0x19d, 0x115, 0x214, 0xfff, 0x090, 0x368,
801 0xfff, 0x210, 0xfff, 0xfff, 0x280, 0x52a, 0x163, 0x148,
802 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x326, 0xfff, 0xfff,
803 0xfff, 0xfff, 0xfff, 0x2de, 0xfff, 0xfff, 0xfff, 0xfff,
804 0x206, 0x2c1, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
805 0x189, 0xfff, 0xfff, 0xfff, 0xfff, 0x367, 0xfff, 0x1a4,
806 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x443, 0xfff, 0x27b,
807 0xfff, 0xfff, 0x251, 0x549, 0xfff, 0xfff, 0xfff, 0xfff,
808 0xfff, 0xfff, 0x188, 0x04b, 0xfff, 0xfff, 0xfff, 0x31f,
809 0x4a6, 0xfff, 0x246, 0x1de, 0x156, 0xfff, 0xfff, 0xfff,
810 0x3a9, 0xfff, 0xfff, 0xfff, 0x2fa, 0xfff, 0x128, 0x0d1,
811 0x449, 0x255, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
812 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
813 0xfff, 0xfff, 0xfff, 0xfff, 0x258, 0xfff, 0xfff, 0xfff,
814 0x532, 0xfff, 0xfff, 0xfff, 0x303, 0x517, 0xfff, 0xfff,
815 0x2a9, 0x24a, 0xfff, 0xfff, 0x231, 0xfff, 0xfff, 0xfff,
816 0xfff, 0xfff, 0x4b6, 0x516, 0xfff, 0xfff, 0x0e4, 0x0eb,
817 0xfff, 0x4e4, 0xfff, 0x275, 0xfff, 0xfff, 0x031, 0xfff,
818 0xfff, 0xfff, 0xfff, 0xfff, 0x025, 0x21a, 0xfff, 0x0cc,
819 0x45f, 0x3d9, 0x289, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
820 0xfff, 0xfff, 0x23e, 0xfff, 0xfff, 0xfff, 0x438, 0x097,
821 0x419, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
822 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
823 0xfff, 0xfff, 0x0a9, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
824 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
825 0x37e, 0x0e0, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x431,
826 0x372, 0xfff, 0xfff, 0xfff, 0x1ba, 0x06e, 0xfff, 0x1b1,
827 0xfff, 0xfff, 0x12a, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
828 0xfff, 0xfff, 0x193, 0xfff, 0xfff, 0xfff, 0xfff, 0x10a,
829 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x048, 0x1b4,
830 0xfff, 0xfff, 0xfff, 0xfff, 0x295, 0x140, 0x108, 0xfff,
831 0xfff, 0xfff, 0xfff, 0x16f, 0xfff, 0x0a4, 0x37a, 0xfff,
832 0x29a, 0xfff, 0x284, 0xfff, 0xfff, 0xfff, 0xfff, 0x4c6,
833 0x2a2, 0x3a3, 0xfff, 0x201, 0xfff, 0xfff, 0xfff, 0x4bd,
834 0x005, 0x54a, 0x3b5, 0x204, 0x2ee, 0x11d, 0x436, 0xfff,
835 0xfff, 0xfff, 0xfff, 0xfff, 0x3ec, 0xfff, 0xfff, 0xfff,
836 0xfff, 0xfff, 0xfff, 0xfff, 0x11f, 0x498, 0x21c, 0xfff,
837 0xfff, 0xfff, 0x3d6, 0xfff, 0x4ab, 0xfff, 0x432, 0x2eb,
838 0x542, 0x4fd, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
839 0xfff, 0xfff, 0xfff, 0x4ce, 0xfff, 0xfff, 0x2fb, 0xfff,
840 0xfff, 0x2e1, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
841 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x1b9, 0x037, 0x0dd,
842 0xfff, 0xfff, 0xfff, 0x2bf, 0x521, 0x496, 0x095, 0xfff,
843 0xfff, 0x328, 0x070, 0x1bf, 0xfff, 0x393, 0xfff, 0xfff,
844 0x102, 0xfff, 0xfff, 0x21b, 0xfff, 0x142, 0x263, 0x519,
845 0xfff, 0x2a5, 0x177, 0xfff, 0x14d, 0x471, 0x4ae, 0xfff,
846 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
847 0x1f6, 0xfff, 0x481, 0xfff, 0xfff, 0xfff, 0x151, 0xfff,
848 0xfff, 0xfff, 0x085, 0x33f, 0xfff, 0xfff, 0xfff, 0x084,
849 0xfff, 0xfff, 0xfff, 0x345, 0x3a2, 0xfff, 0xfff, 0x0a0,
850 0x0da, 0x024, 0xfff, 0xfff, 0xfff, 0x1bd, 0xfff, 0x55c,
851 0x467, 0x445, 0xfff, 0xfff, 0xfff, 0x052, 0xfff, 0xfff,
852 0xfff, 0xfff, 0x51e, 0xfff, 0xfff, 0x39d, 0xfff, 0x35f,
853 0xfff, 0x376, 0x3ee, 0xfff, 0xfff, 0xfff, 0xfff, 0x448,
854 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x16a,
855 0xfff, 0x036, 0x38f, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
856 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x211,
857 0xfff, 0xfff, 0xfff, 0x230, 0xfff, 0xfff, 0x3ba, 0xfff,
858 0xfff, 0xfff, 0x3ce, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
859 0xfff, 0xfff, 0xfff, 0x229, 0xfff, 0x176, 0xfff, 0xfff,
860 0xfff, 0xfff, 0xfff, 0x00b, 0xfff, 0x162, 0x018, 0xfff,
861 0xfff, 0x233, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
862 0x400, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
863 0xfff, 0xfff, 0xfff, 0x12b, 0xfff, 0xfff, 0xfff, 0xfff,
864 0xfff, 0x3f4, 0xfff, 0x0f0, 0xfff, 0x1ac, 0xfff, 0xfff,
865 0x119, 0xfff, 0x2c0, 0xfff, 0xfff, 0xfff, 0x49b, 0xfff,
866 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x23c, 0xfff,
867 0x4b3, 0x010, 0x064, 0xfff, 0xfff, 0x4ba, 0xfff, 0xfff,
868 0xfff, 0xfff, 0xfff, 0x3c2, 0xfff, 0xfff, 0xfff, 0xfff,
869 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x006, 0x196, 0xfff,
870 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x100, 0x191, 0xfff,
871 0x1ea, 0x29f, 0xfff, 0xfff, 0xfff, 0x276, 0xfff, 0xfff,
872 0x2b1, 0x3b9, 0xfff, 0x03c, 0xfff, 0xfff, 0xfff, 0x180,
873 0xfff, 0x08f, 0xfff, 0xfff, 0x19e, 0x019, 0xfff, 0x0b0,
874 0x0fd, 0x332, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
875 0xfff, 0x06b, 0x2e8, 0xfff, 0x446, 0xfff, 0xfff, 0x004,
876 0x247, 0x197, 0xfff, 0x112, 0x169, 0x292, 0xfff, 0x302,
877 0xfff, 0xfff, 0x33b, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
878 0xfff, 0xfff, 0xfff, 0x287, 0x21f, 0xfff, 0x3ea, 0xfff,
879 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x4e7, 0xfff, 0xfff,
880 0xfff, 0xfff, 0xfff, 0x3a8, 0xfff, 0xfff, 0x2bc, 0xfff,
881 0x484, 0x296, 0xfff, 0x1c9, 0x08c, 0x1e5, 0x48a, 0xfff,
882 0x360, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
883 0x1ca, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
884 0xfff, 0xfff, 0xfff, 0x10d, 0xfff, 0xfff, 0xfff, 0xfff,
885 0xfff, 0xfff, 0x066, 0x2ea, 0x28b, 0x25b, 0xfff, 0x072,
886 0xfff, 0xfff, 0xfff, 0xfff, 0x2b6, 0xfff, 0xfff, 0x272,
887 0xfff, 0xfff, 0x525, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
888 0x2ca, 0xfff, 0xfff, 0xfff, 0x299, 0xfff, 0xfff, 0xfff,
889 0x558, 0x41a, 0xfff, 0x4f7, 0x557, 0xfff, 0x4a0, 0x344,
890 0x12c, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x125,
891 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
892 0x40e, 0xfff, 0xfff, 0x502, 0xfff, 0x103, 0x3e6, 0xfff,
893 0x527, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
894 0xfff, 0xfff, 0xfff, 0x45d, 0xfff, 0xfff, 0xfff, 0xfff,
895 0x44e, 0xfff, 0xfff, 0xfff, 0xfff, 0x0d2, 0x4c9, 0x35e,
896 0x459, 0x2d9, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x17d,
897 0x0c4, 0xfff, 0xfff, 0xfff, 0x3ac, 0x390, 0x094, 0xfff,
898 0x483, 0x0ab, 0xfff, 0x253, 0xfff, 0x391, 0xfff, 0xfff,
899 0xfff, 0xfff, 0x123, 0x0ef, 0xfff, 0xfff, 0xfff, 0x330,
900 0x38c, 0xfff, 0xfff, 0x2ae, 0xfff, 0xfff, 0xfff, 0x042,
901 0x012, 0x06d, 0xfff, 0xfff, 0xfff, 0x32a, 0x3db, 0x364,
902 0x2dc, 0xfff, 0x30f, 0x3d7, 0x4a5, 0x050, 0xfff, 0xfff,
903 0x029, 0xfff, 0xfff, 0xfff, 0xfff, 0x1d1, 0xfff, 0xfff,
904 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x480, 0xfff,
905 0x4ed, 0x081, 0x0a1, 0xfff, 0xfff, 0xfff, 0x30e, 0x52f,
906 0x257, 0xfff, 0xfff, 0x447, 0xfff, 0xfff, 0xfff, 0xfff,
907 0xfff, 0xfff, 0xfff, 0x401, 0x3cc, 0xfff, 0xfff, 0x0fb,
908 0x2c9, 0x42a, 0x314, 0x33e, 0x3bd, 0x318, 0xfff, 0x10e,
909 0x2a1, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x24c,
910 0x506, 0xfff, 0x267, 0xfff, 0xfff, 0x219, 0xfff, 0x1eb,
911 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
912 0x309, 0x3e2, 0x46c, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
913 0x384, 0xfff, 0xfff, 0xfff, 0xfff, 0x50c, 0xfff, 0x24b,
914 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x038,
915 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x194,
916 0x143, 0x3e3, 0xfff, 0xfff, 0xfff, 0x4c2, 0xfff, 0xfff,
917 0x0e1, 0x25c, 0xfff, 0x237, 0xfff, 0x1fe, 0xfff, 0xfff,
918 0xfff, 0x065, 0x2a4, 0xfff, 0x386, 0x55a, 0x11b, 0xfff,
919 0xfff, 0x192, 0xfff, 0x183, 0x00e, 0xfff, 0xfff, 0xfff,
920 0xfff, 0xfff, 0xfff, 0x4b2, 0x18e, 0xfff, 0xfff, 0xfff,
921 0xfff, 0x486, 0x4ef, 0x0c6, 0x380, 0xfff, 0x4a8, 0xfff,
922 0x0c5, 0xfff, 0xfff, 0xfff, 0xfff, 0x093, 0x1b8, 0xfff,
923 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x2e6,
924 0xfff, 0x0f3, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
925 0x28e, 0xfff, 0x53b, 0x420, 0x22a, 0x33a, 0xfff, 0x387,
926 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x2a3, 0xfff, 0xfff,
927 0xfff, 0x428, 0x500, 0xfff, 0xfff, 0x120, 0x2c6, 0x290,
928 0x2f5, 0x0e3, 0xfff, 0x0b7, 0xfff, 0x319, 0x474, 0xfff,
929 0xfff, 0xfff, 0x529, 0x014, 0xfff, 0x41b, 0x40a, 0x18b,
930 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x0d9,
931 0xfff, 0x38a, 0xfff, 0xfff, 0xfff, 0xfff, 0x1ce, 0xfff,
932 0xfff, 0xfff, 0xfff, 0xfff, 0x3b1, 0xfff, 0xfff, 0x05d,
933 0x2c4, 0xfff, 0xfff, 0x4af, 0xfff, 0x030, 0xfff, 0xfff,
934 0x203, 0xfff, 0x277, 0x256, 0xfff, 0xfff, 0xfff, 0x4f9,
935 0xfff, 0x2c7, 0xfff, 0x466, 0x016, 0x1cd, 0xfff, 0x167,
936 0xfff, 0xfff, 0x0c8, 0xfff, 0x43d, 0xfff, 0xfff, 0x020,
937 0xfff, 0xfff, 0x232, 0x1cb, 0x1e0, 0xfff, 0xfff, 0x347,
938 0xfff, 0x478, 0xfff, 0x365, 0xfff, 0xfff, 0xfff, 0xfff,
939 0x358, 0xfff, 0x10b, 0xfff, 0x35d, 0xfff, 0xfff, 0xfff,
940 0xfff, 0xfff, 0x452, 0x22d, 0xfff, 0xfff, 0x47d, 0xfff,
941 0x2f3, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x460, 0xfff,
942 0xfff, 0xfff, 0x50b, 0xfff, 0xfff, 0xfff, 0x2ec, 0xfff,
943 0xfff, 0xfff, 0xfff, 0xfff, 0x4b1, 0x422, 0xfff, 0xfff,
944 0xfff, 0x2d4, 0xfff, 0x239, 0xfff, 0xfff, 0xfff, 0x439,
945 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
946 0xfff, 0x491, 0x075, 0xfff, 0xfff, 0xfff, 0x06c, 0xfff,
947 0xfff, 0x0f9, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
948 0xfff, 0x139, 0xfff, 0x4f6, 0xfff, 0xfff, 0x409, 0xfff,
949 0xfff, 0x15b, 0xfff, 0xfff, 0x348, 0xfff, 0xfff, 0xfff,
950 0xfff, 0x4a2, 0x49d, 0xfff, 0x033, 0x175, 0xfff, 0x039,
951 0xfff, 0x312, 0x40c, 0xfff, 0xfff, 0x325, 0xfff, 0xfff,
952 0xfff, 0xfff, 0xfff, 0xfff, 0x4aa, 0xfff, 0xfff, 0xfff,
953 0xfff, 0xfff, 0xfff, 0x165, 0x3bc, 0x48c, 0x310, 0x096,
954 0xfff, 0xfff, 0x250, 0x1a2, 0xfff, 0xfff, 0xfff, 0xfff,
955 0x20d, 0x2ac, 0xfff, 0xfff, 0x39b, 0xfff, 0x377, 0xfff,
956 0x512, 0x495, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
957 0xfff, 0xfff, 0xfff, 0xfff, 0x357, 0x4ea, 0xfff, 0xfff,
958 0xfff, 0xfff, 0x198, 0xfff, 0xfff, 0xfff, 0x434, 0x04a,
959 0xfff, 0xfff, 0xfff, 0xfff, 0x062, 0xfff, 0x1d6, 0x1c8,
960 0xfff, 0x1f3, 0x281, 0xfff, 0x462, 0xfff, 0xfff, 0xfff,
961 0x4b0, 0xfff, 0x207, 0xfff, 0xfff, 0xfff, 0xfff, 0x3dd,
962 0xfff, 0xfff, 0x55d, 0xfff, 0x552, 0x494, 0x1af, 0xfff,
963 0xfff, 0xfff, 0xfff, 0xfff, 0x227, 0xfff, 0xfff, 0x069,
964 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x43e,
965 0x0b5, 0xfff, 0x524, 0x2d2, 0xfff, 0xfff, 0xfff, 0x28f,
966 0xfff, 0x01b, 0x50e, 0xfff, 0xfff, 0x1bb, 0xfff, 0xfff,
967 0x41d, 0xfff, 0x32e, 0x48e, 0xfff, 0x1f7, 0x224, 0xfff,
968 0xfff, 0xfff, 0xfff, 0xfff, 0x394, 0xfff, 0xfff, 0xfff,
969 0xfff, 0x52c, 0xfff, 0xfff, 0xfff, 0x392, 0xfff, 0x1e7,
970 0xfff, 0xfff, 0x3f9, 0x3a7, 0xfff, 0x51f, 0xfff, 0x0bb,
971 0x118, 0x3ca, 0xfff, 0x1dd, 0xfff, 0x48b, 0xfff, 0xfff,
972 0xfff, 0xfff, 0x50f, 0xfff, 0x0d6, 0xfff, 0x1fa, 0xfff,
973 0x11e, 0xfff, 0xfff, 0xfff, 0xfff, 0x4d7, 0xfff, 0x078,
974 0x008, 0xfff, 0x25d, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
975 0x032, 0x33c, 0xfff, 0x4d9, 0x160, 0xfff, 0xfff, 0x300,
976 0x0b1, 0xfff, 0x322, 0xfff, 0x4ec, 0xfff, 0xfff, 0x200,
977 0x00c, 0x369, 0x473, 0xfff, 0xfff, 0x32c, 0xfff, 0xfff,
978 0xfff, 0xfff, 0xfff, 0xfff, 0x53e, 0x3d4, 0x417, 0xfff,
979 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
980 0x34b, 0x001, 0x39a, 0x02c, 0xfff, 0xfff, 0x2ce, 0x00f,
981 0xfff, 0x0ba, 0xfff, 0xfff, 0xfff, 0xfff, 0x060, 0xfff,
982 0x406, 0xfff, 0xfff, 0xfff, 0x4ee, 0x4ac, 0xfff, 0x43f,
983 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x29b, 0xfff, 0xfff,
984 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x216,
985 0x190, 0xfff, 0x396, 0x464, 0xfff, 0xfff, 0x323, 0xfff,
986 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x2e9, 0xfff, 0x26d,
987 0x2cd, 0x040, 0xfff, 0xfff, 0xfff, 0xfff, 0x38b, 0x3c0,
988 0xfff, 0xfff, 0xfff, 0x1f2, 0xfff, 0x0ea, 0xfff, 0xfff,
989 0x472, 0xfff, 0x1fb, 0xfff, 0xfff, 0x0af, 0x27f, 0xfff,
990 0xfff, 0xfff, 0x479, 0x023, 0xfff, 0x0d8, 0x3b3, 0xfff,
991 0xfff, 0xfff, 0x121, 0xfff, 0xfff, 0x3bf, 0xfff, 0xfff,
992 0x16b, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
993 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
994 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
995 0x45a, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
996 0xfff, 0x0be, 0xfff, 0xfff, 0xfff, 0x111, 0xfff, 0x220,
997 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
998 0xfff, 0xfff, 0x09b, 0x218, 0xfff, 0x022, 0x202, 0xfff,
999 0x4c8, 0xfff, 0x0ed, 0xfff, 0xfff, 0x182, 0xfff, 0xfff,
1000 0xfff, 0x17f, 0x213, 0xfff, 0x321, 0x36a, 0xfff, 0x086,
1001 0xfff, 0xfff, 0xfff, 0x43b, 0x088, 0xfff, 0xfff, 0xfff,
1002 0xfff, 0x26c, 0xfff, 0x2f8, 0x3b4, 0xfff, 0xfff, 0xfff,
1003 0x132, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x333, 0x444,
1004 0x0c1, 0x4d8, 0x46d, 0x264, 0xfff, 0xfff, 0xfff, 0xfff,
1005 0x426, 0xfff, 0xfff, 0xfff, 0xfff, 0x2fe, 0xfff, 0xfff,
1006 0xfff, 0xfff, 0x011, 0xfff, 0x05f, 0xfff, 0xfff, 0xfff,
1007 0xfff, 0x10c, 0x101, 0xfff, 0xfff, 0xfff, 0xfff, 0x110,
1008 0xfff, 0x044, 0x304, 0x361, 0x404, 0xfff, 0x51b, 0x099,
1009 0xfff, 0x440, 0xfff, 0xfff, 0xfff, 0x222, 0xfff, 0xfff,
1010 0xfff, 0xfff, 0x1b5, 0xfff, 0x136, 0x430, 0xfff, 0x1da,
1011 0xfff, 0xfff, 0xfff, 0x043, 0xfff, 0x17c, 0xfff, 0xfff,
1012 0xfff, 0x01c, 0xfff, 0xfff, 0xfff, 0x425, 0x236, 0xfff,
1013 0x317, 0xfff, 0xfff, 0x437, 0x3fc, 0xfff, 0x1f1, 0xfff,
1014 0x324, 0xfff, 0xfff, 0x0ca, 0x306, 0xfff, 0x548, 0xfff,
1015 0x46e, 0xfff, 0xfff, 0xfff, 0x4b8, 0x1c2, 0x286, 0xfff,
1016 0xfff, 0x087, 0x18a, 0x19f, 0xfff, 0xfff, 0xfff, 0xfff,
1017 0x18c, 0xfff, 0x215, 0xfff, 0xfff, 0xfff, 0xfff, 0x283,
1018 0xfff, 0xfff, 0xfff, 0x126, 0xfff, 0xfff, 0x370, 0xfff,
1019 0x53f, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0x31c, 0xfff,
1020 0x4d1, 0xfff, 0xfff, 0xfff, 0x021, 0xfff, 0x157, 0xfff,
1021 0xfff, 0x028, 0x16e, 0xfff, 0x421, 0xfff, 0x1c6, 0xfff,
1022 0xfff, 0x511, 0xfff, 0xfff, 0x39c, 0x46f, 0x1b2, 0xfff,
1023 0xfff, 0x316, 0xfff, 0xfff, 0x009, 0xfff, 0xfff, 0x195,
1024 0xfff, 0x240, 0x546, 0xfff, 0xfff, 0x520, 0xfff, 0xfff,
1025 0xfff, 0xfff, 0xfff, 0xfff, 0x454, 0xfff, 0xfff, 0xfff,
1026 0x3f3, 0xfff, 0xfff, 0x187, 0xfff, 0x4a9, 0xfff, 0xfff,
1027 0xfff, 0xfff, 0xfff, 0xfff, 0x51c, 0x453, 0x1e6, 0xfff,
1028 0xfff, 0xfff, 0x1b0, 0xfff, 0x477, 0xfff, 0xfff, 0xfff,
1029 0x4fe, 0xfff, 0x32f, 0xfff, 0xfff, 0x15e, 0x1d4, 0xfff,
1030 0x0e5, 0xfff, 0xfff, 0xfff, 0x242, 0x14b, 0x046, 0xfff,
1031 0x3f6, 0x3bb, 0x3e4, 0xfff, 0xfff, 0x2e3, 0xfff, 0x245,
1032 0xfff, 0x149, 0xfff, 0xfff, 0xfff, 0x2db, 0xfff, 0xfff,
1033 0x181, 0xfff, 0x089, 0x2c5, 0xfff, 0x1f5, 0xfff, 0x2d6,
1034 0x507, 0xfff, 0x42d, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
1035 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
1036 0x080, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
1037 0xfff, 0xfff, 0xfff, 0xfff, 0x3c3, 0x320, 0xfff, 0x1e1,
1038 0xfff, 0x0f5, 0x13b, 0xfff, 0xfff, 0xfff, 0x003, 0x4da,
1039 0xfff, 0xfff, 0xfff, 0x42c, 0xfff, 0xfff, 0x0cb, 0xfff,
1040 0x536, 0x2c3, 0xfff, 0xfff, 0xfff, 0xfff, 0x199, 0xfff,
1041 0xfff, 0x0c0, 0xfff, 0x01e, 0x497, 0xfff, 0xfff, 0x3e5,
1042 0xfff, 0xfff, 0xfff, 0x0cf, 0xfff, 0x2bd, 0xfff, 0x223,
1043 0xfff, 0x3ff, 0xfff, 0x058, 0x174, 0x3ef, 0xfff, 0x002
1044};
1045
1046static unsigned short err_pos(unsigned short din)
1047{
1048 BUG_ON(din > 4096);
1049 return err_pos_lut[din];
1050}
1051static int chk_no_err_only(unsigned short *chk_syndrome_list, unsigned short *err_info)
1052{
1053 if ((chk_syndrome_list[0] | chk_syndrome_list[1] |
1054 chk_syndrome_list[2] | chk_syndrome_list[3] |
1055 chk_syndrome_list[4] | chk_syndrome_list[5] |
1056 chk_syndrome_list[6] | chk_syndrome_list[7]) != 0x0) {
1057 return -EINVAL;
1058 } else {
1059 err_info[0] = 0x0;
1060 return 0;
1061 }
1062}
1063static int chk_1_err_only(unsigned short *chk_syndrome_list, unsigned short *err_info)
1064{
1065 unsigned short tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6;
1066 tmp0 = gf4096_mul(chk_syndrome_list[1], gf4096_inv(chk_syndrome_list[0]));
1067 tmp1 = gf4096_mul(chk_syndrome_list[2], gf4096_inv(chk_syndrome_list[1]));
1068 tmp2 = gf4096_mul(chk_syndrome_list[3], gf4096_inv(chk_syndrome_list[2]));
1069 tmp3 = gf4096_mul(chk_syndrome_list[4], gf4096_inv(chk_syndrome_list[3]));
1070 tmp4 = gf4096_mul(chk_syndrome_list[5], gf4096_inv(chk_syndrome_list[4]));
1071 tmp5 = gf4096_mul(chk_syndrome_list[6], gf4096_inv(chk_syndrome_list[5]));
1072 tmp6 = gf4096_mul(chk_syndrome_list[7], gf4096_inv(chk_syndrome_list[6]));
1073 if ((tmp0 == tmp1) & (tmp1 == tmp2) & (tmp2 == tmp3) & (tmp3 == tmp4) & (tmp4 == tmp5) & (tmp5 == tmp6)) {
1074 err_info[0] = 0x1; // encode 1-symbol error as 0x1
1075 err_info[1] = err_pos(tmp0);
1076 err_info[1] = (unsigned short)(0x55e - err_info[1]);
1077 err_info[5] = chk_syndrome_list[0];
1078 return 0;
1079 } else
1080 return -EINVAL;
1081}
1082static int chk_2_err_only(unsigned short *chk_syndrome_list, unsigned short *err_info)
1083{
1084 unsigned short tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
1085 unsigned short coefs[4];
1086 unsigned short err_pats[4];
1087 int found_num_root = 0;
1088 unsigned short bit2_root0, bit2_root1;
1089 unsigned short bit2_root0_inv, bit2_root1_inv;
1090 unsigned short err_loc_eqn, test_root;
1091 unsigned short bit2_loc0, bit2_loc1;
1092 unsigned short bit2_pat0, bit2_pat1;
1093
1094 find_2x2_soln(chk_syndrome_list[1],
1095 chk_syndrome_list[0],
1096 chk_syndrome_list[2], chk_syndrome_list[1], chk_syndrome_list[2], chk_syndrome_list[3], coefs);
1097 for (test_root = 0x1; test_root < 0xfff; test_root++) {
1098 err_loc_eqn =
1099 gf4096_mul(coefs[1], gf4096_mul(test_root, test_root)) ^ gf4096_mul(coefs[0], test_root) ^ 0x1;
1100 if (err_loc_eqn == 0x0) {
1101 if (found_num_root == 0) {
1102 bit2_root0 = test_root;
1103 found_num_root = 1;
1104 } else if (found_num_root == 1) {
1105 bit2_root1 = test_root;
1106 found_num_root = 2;
1107 break;
1108 }
1109 }
1110 }
1111 if (found_num_root != 2)
1112 return -EINVAL;
1113 else {
1114 bit2_root0_inv = gf4096_inv(bit2_root0);
1115 bit2_root1_inv = gf4096_inv(bit2_root1);
1116 find_2bit_err_pats(chk_syndrome_list[0],
1117 chk_syndrome_list[1], bit2_root0_inv, bit2_root1_inv, err_pats);
1118 bit2_pat0 = err_pats[0];
1119 bit2_pat1 = err_pats[1];
1120 //for(x+1)
1121 tmp0 = gf4096_mul(gf4096_mul(bit2_root0_inv, bit2_root0_inv), gf4096_mul(bit2_root0_inv, bit2_root0_inv)); //rinv0^4
1122 tmp1 = gf4096_mul(bit2_root0_inv, tmp0); //rinv0^5
1123 tmp2 = gf4096_mul(bit2_root0_inv, tmp1); //rinv0^6
1124 tmp3 = gf4096_mul(bit2_root0_inv, tmp2); //rinv0^7
1125 tmp4 = gf4096_mul(gf4096_mul(bit2_root1_inv, bit2_root1_inv), gf4096_mul(bit2_root1_inv, bit2_root1_inv)); //rinv1^4
1126 tmp5 = gf4096_mul(bit2_root1_inv, tmp4); //rinv1^5
1127 tmp6 = gf4096_mul(bit2_root1_inv, tmp5); //rinv1^6
1128 tmp7 = gf4096_mul(bit2_root1_inv, tmp6); //rinv1^7
1129 //check if only 2-bit error
1130 if ((chk_syndrome_list[4] ==
1131 (gf4096_mul(bit2_pat0, tmp0) ^
1132 gf4096_mul(bit2_pat1,
1133 tmp4))) & (chk_syndrome_list[5] ==
1134 (gf4096_mul(bit2_pat0, tmp1) ^
1135 gf4096_mul(bit2_pat1,
1136 tmp5))) &
1137 (chk_syndrome_list[6] ==
1138 (gf4096_mul(bit2_pat0, tmp2) ^
1139 gf4096_mul(bit2_pat1,
1140 tmp6))) & (chk_syndrome_list[7] ==
1141 (gf4096_mul(bit2_pat0, tmp3) ^ gf4096_mul(bit2_pat1, tmp7)))) {
1142 if ((err_pos(bit2_root0_inv) == 0xfff) | (err_pos(bit2_root1_inv) == 0xfff)) {
1143 return -EINVAL;
1144 } else {
1145 bit2_loc0 = 0x55e - err_pos(bit2_root0_inv);
1146 bit2_loc1 = 0x55e - err_pos(bit2_root1_inv);
1147 err_info[0] = 0x2; // encode 2-symbol error as 0x2
1148 err_info[1] = bit2_loc0;
1149 err_info[2] = bit2_loc1;
1150 err_info[5] = bit2_pat0;
1151 err_info[6] = bit2_pat1;
1152 return 0;
1153 }
1154 } else
1155 return -EINVAL;
1156 }
1157}
1158static int chk_3_err_only(unsigned short *chk_syndrome_list, unsigned short *err_info)
1159{
1160 unsigned short tmp0, tmp1, tmp2, tmp3, tmp4, tmp5;
1161 unsigned short coefs[4];
1162 unsigned short err_pats[4];
1163 int found_num_root = 0;
1164 unsigned short bit3_root0, bit3_root1, bit3_root2;
1165 unsigned short bit3_root0_inv, bit3_root1_inv, bit3_root2_inv;
1166 unsigned short err_loc_eqn, test_root;
1167
1168 find_3bit_err_coefs(chk_syndrome_list[0], chk_syndrome_list[1],
1169 chk_syndrome_list[2], chk_syndrome_list[3],
1170 chk_syndrome_list[4], chk_syndrome_list[5], coefs);
1171
1172 for (test_root = 0x1; test_root < 0xfff; test_root++) {
1173 err_loc_eqn = gf4096_mul(coefs[2],
1174 gf4096_mul(gf4096_mul(test_root, test_root),
1175 test_root)) ^ gf4096_mul(coefs[1], gf4096_mul(test_root, test_root))
1176 ^ gf4096_mul(coefs[0], test_root) ^ 0x1;
1177
1178 if (err_loc_eqn == 0x0) {
1179 if (found_num_root == 0) {
1180 bit3_root0 = test_root;
1181 found_num_root = 1;
1182 } else if (found_num_root == 1) {
1183 bit3_root1 = test_root;
1184 found_num_root = 2;
1185 } else if (found_num_root == 2) {
1186 bit3_root2 = test_root;
1187 found_num_root = 3;
1188 break;
1189 }
1190 }
1191 }
1192 if (found_num_root != 3)
1193 return -EINVAL;
1194 else {
1195 bit3_root0_inv = gf4096_inv(bit3_root0);
1196 bit3_root1_inv = gf4096_inv(bit3_root1);
1197 bit3_root2_inv = gf4096_inv(bit3_root2);
1198
1199 find_3bit_err_pats(chk_syndrome_list[0], chk_syndrome_list[1],
1200 chk_syndrome_list[2], bit3_root0_inv,
1201 bit3_root1_inv, bit3_root2_inv, err_pats);
1202
1203 //check if only 3-bit error
1204 tmp0 = gf4096_mul(bit3_root0_inv, bit3_root0_inv);
1205 tmp0 = gf4096_mul(tmp0, tmp0);
1206 tmp0 = gf4096_mul(tmp0, bit3_root0_inv);
1207 tmp0 = gf4096_mul(tmp0, bit3_root0_inv); //rinv0^6
1208 tmp1 = gf4096_mul(tmp0, bit3_root0_inv); //rinv0^7
1209 tmp2 = gf4096_mul(bit3_root1_inv, bit3_root1_inv);
1210 tmp2 = gf4096_mul(tmp2, tmp2);
1211 tmp2 = gf4096_mul(tmp2, bit3_root1_inv);
1212 tmp2 = gf4096_mul(tmp2, bit3_root1_inv); //rinv1^6
1213 tmp3 = gf4096_mul(tmp2, bit3_root1_inv); //rinv1^7
1214 tmp4 = gf4096_mul(bit3_root2_inv, bit3_root2_inv);
1215 tmp4 = gf4096_mul(tmp4, tmp4);
1216 tmp4 = gf4096_mul(tmp4, bit3_root2_inv);
1217 tmp4 = gf4096_mul(tmp4, bit3_root2_inv); //rinv2^6
1218 tmp5 = gf4096_mul(tmp4, bit3_root2_inv); //rinv2^7
1219
1220 //check if only 3 errors
1221 if ((chk_syndrome_list[6] == (gf4096_mul(err_pats[0], tmp0) ^
1222 gf4096_mul(err_pats[1], tmp2) ^
1223 gf4096_mul(err_pats[2], tmp4))) &
1224 (chk_syndrome_list[7] == (gf4096_mul(err_pats[0], tmp1) ^
1225 gf4096_mul(err_pats[1], tmp3) ^ gf4096_mul(err_pats[2], tmp5)))) {
1226 if ((err_pos(bit3_root0_inv) == 0xfff) |
1227 (err_pos(bit3_root1_inv) == 0xfff) | (err_pos(bit3_root2_inv) == 0xfff)) {
1228 return -EINVAL;
1229 } else {
1230 err_info[0] = 0x3;
1231 err_info[1] = (0x55e - err_pos(bit3_root0_inv));
1232 err_info[2] = (0x55e - err_pos(bit3_root1_inv));
1233 err_info[3] = (0x55e - err_pos(bit3_root2_inv));
1234 err_info[5] = err_pats[0];
1235 err_info[6] = err_pats[1];
1236 err_info[7] = err_pats[2];
1237 return 0;
1238 }
1239 } else
1240 return -EINVAL;
1241 }
1242}
1243static int chk_4_err_only(unsigned short *chk_syndrome_list, unsigned short *err_info)
1244{
1245 unsigned short coefs[4];
1246 unsigned short err_pats[4];
1247 int found_num_root = 0;
1248 unsigned short bit4_root0, bit4_root1, bit4_root2, bit4_root3;
1249 unsigned short bit4_root0_inv, bit4_root1_inv, bit4_root2_inv, bit4_root3_inv;
1250 unsigned short err_loc_eqn, test_root;
1251
1252 find_4bit_err_coefs(chk_syndrome_list[0],
1253 chk_syndrome_list[1],
1254 chk_syndrome_list[2],
1255 chk_syndrome_list[3],
1256 chk_syndrome_list[4],
1257 chk_syndrome_list[5], chk_syndrome_list[6], chk_syndrome_list[7], coefs);
1258
1259 for (test_root = 0x1; test_root < 0xfff; test_root++) {
1260 err_loc_eqn =
1261 gf4096_mul(coefs[3],
1262 gf4096_mul(gf4096_mul
1263 (gf4096_mul(test_root, test_root),
1264 test_root),
1265 test_root)) ^ gf4096_mul(coefs[2],
1266 gf4096_mul
1267 (gf4096_mul(test_root, test_root), test_root))
1268 ^ gf4096_mul(coefs[1], gf4096_mul(test_root, test_root)) ^ gf4096_mul(coefs[0], test_root)
1269 ^ 0x1;
1270 if (err_loc_eqn == 0x0) {
1271 if (found_num_root == 0) {
1272 bit4_root0 = test_root;
1273 found_num_root = 1;
1274 } else if (found_num_root == 1) {
1275 bit4_root1 = test_root;
1276 found_num_root = 2;
1277 } else if (found_num_root == 2) {
1278 bit4_root2 = test_root;
1279 found_num_root = 3;
1280 } else {
1281 found_num_root = 4;
1282 bit4_root3 = test_root;
1283 break;
1284 }
1285 }
1286 }
1287 if (found_num_root != 4) {
1288 return -EINVAL;
1289 } else {
1290 bit4_root0_inv = gf4096_inv(bit4_root0);
1291 bit4_root1_inv = gf4096_inv(bit4_root1);
1292 bit4_root2_inv = gf4096_inv(bit4_root2);
1293 bit4_root3_inv = gf4096_inv(bit4_root3);
1294 find_4bit_err_pats(chk_syndrome_list[0],
1295 chk_syndrome_list[1],
1296 chk_syndrome_list[2],
1297 chk_syndrome_list[3],
1298 bit4_root0_inv, bit4_root1_inv, bit4_root2_inv, bit4_root3_inv, err_pats);
1299 err_info[0] = 0x4;
1300 err_info[1] = (0x55e - err_pos(bit4_root0_inv));
1301 err_info[2] = (0x55e - err_pos(bit4_root1_inv));
1302 err_info[3] = (0x55e - err_pos(bit4_root2_inv));
1303 err_info[4] = (0x55e - err_pos(bit4_root3_inv));
1304 err_info[5] = err_pats[0];
1305 err_info[6] = err_pats[1];
1306 err_info[7] = err_pats[2];
1307 err_info[8] = err_pats[3];
1308 return 0;
1309 }
1310}
1311
1312void correct_12bit_symbol(unsigned char *buf, unsigned short sym,
1313 unsigned short val)
1314{
1315 if (unlikely(sym > 1366)) {
1316 printk(KERN_ERR "Error: symbol %d out of range; cannot correct\n", sym);
1317 } else if (sym == 0) {
1318 buf[0] ^= val;
1319 } else if (sym & 1) {
1320 buf[1+(3*(sym-1))/2] ^= (val >> 4);
1321 buf[2+(3*(sym-1))/2] ^= ((val & 0xf) << 4);
1322 } else {
1323 buf[2+(3*(sym-2))/2] ^= (val >> 8);
1324 buf[3+(3*(sym-2))/2] ^= (val & 0xff);
1325 }
1326}
1327
1328static int debugecc = 0;
1329module_param(debugecc, int, 0644);
1330
1331int cafe_correct_ecc(unsigned char *buf,
1332 unsigned short *chk_syndrome_list)
1333{
1334 unsigned short err_info[9];
1335 int i;
1336
1337 if (debugecc) {
1338 printk(KERN_WARNING "cafe_correct_ecc invoked. Syndromes %x %x %x %x %x %x %x %x\n",
1339 chk_syndrome_list[0], chk_syndrome_list[1],
1340 chk_syndrome_list[2], chk_syndrome_list[3],
1341 chk_syndrome_list[4], chk_syndrome_list[5],
1342 chk_syndrome_list[6], chk_syndrome_list[7]);
1343 for (i=0; i < 2048; i+=16) {
1344 printk(KERN_WARNING "D %04x: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
1345 i,
1346 buf[i], buf[i+1], buf[i+2], buf[i+3],
1347 buf[i+4], buf[i+5], buf[i+6], buf[i+7],
1348 buf[i+8], buf[i+9], buf[i+10], buf[i+11],
1349 buf[i+12], buf[i+13], buf[i+14], buf[i+15]);
1350 }
1351 for ( ; i < 2112; i+=16) {
1352 printk(KERN_WARNING "O %02x: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
1353 i - 2048,
1354 buf[i], buf[i+1], buf[i+2], buf[i+3],
1355 buf[i+4], buf[i+5], buf[i+6], buf[i+7],
1356 buf[i+8], buf[i+9], buf[i+10], buf[i+11],
1357 buf[i+12], buf[i+13], buf[i+14], buf[i+15]);
1358 }
1359 }
1360
1361
1362
1363 if (chk_no_err_only(chk_syndrome_list, err_info) &&
1364 chk_1_err_only(chk_syndrome_list, err_info) &&
1365 chk_2_err_only(chk_syndrome_list, err_info) &&
1366 chk_3_err_only(chk_syndrome_list, err_info) &&
1367 chk_4_err_only(chk_syndrome_list, err_info)) {
1368 return -EIO;
1369 }
1370
1371 for (i=0; i < err_info[0]; i++) {
1372 if (debugecc)
1373 printk(KERN_WARNING "Correct symbol %d with 0x%03x\n",
1374 err_info[1+i], err_info[5+i]);
1375
1376 correct_12bit_symbol(buf, err_info[1+i], err_info[5+i]);
1377 }
1378
1379 return err_info[0];
1380}
1381
diff --git a/drivers/mtd/nand/cs553x_nand.c b/drivers/mtd/nand/cs553x_nand.c
index 94924d52a9b9..8296305c8297 100644
--- a/drivers/mtd/nand/cs553x_nand.c
+++ b/drivers/mtd/nand/cs553x_nand.c
@@ -11,7 +11,7 @@
11 * published by the Free Software Foundation. 11 * published by the Free Software Foundation.
12 * 12 *
13 * Overview: 13 * Overview:
14 * This is a device driver for the NAND flash controller found on 14 * This is a device driver for the NAND flash controller found on
15 * the AMD CS5535/CS5536 companion chipsets for the Geode processor. 15 * the AMD CS5535/CS5536 companion chipsets for the Geode processor.
16 * 16 *
17 */ 17 */
@@ -303,7 +303,7 @@ static int __init cs553x_init(void)
303 err = cs553x_init_one(i, !!(val & FLSH_MEM_IO), val & 0xFFFFFFFF); 303 err = cs553x_init_one(i, !!(val & FLSH_MEM_IO), val & 0xFFFFFFFF);
304 } 304 }
305 305
306 /* Register all devices together here. This means we can easily hack it to 306 /* Register all devices together here. This means we can easily hack it to
307 do mtdconcat etc. if we want to. */ 307 do mtdconcat etc. if we want to. */
308 for (i = 0; i < NR_CS553X_CONTROLLERS; i++) { 308 for (i = 0; i < NR_CS553X_CONTROLLERS; i++) {
309 if (cs553x_mtd[i]) { 309 if (cs553x_mtd[i]) {
diff --git a/drivers/mtd/nand/diskonchip.c b/drivers/mtd/nand/diskonchip.c
index 6107f532855b..12608c13cce5 100644
--- a/drivers/mtd/nand/diskonchip.c
+++ b/drivers/mtd/nand/diskonchip.c
@@ -1635,13 +1635,12 @@ static int __init doc_probe(unsigned long physadr)
1635 1635
1636 len = sizeof(struct mtd_info) + 1636 len = sizeof(struct mtd_info) +
1637 sizeof(struct nand_chip) + sizeof(struct doc_priv) + (2 * sizeof(struct nand_bbt_descr)); 1637 sizeof(struct nand_chip) + sizeof(struct doc_priv) + (2 * sizeof(struct nand_bbt_descr));
1638 mtd = kmalloc(len, GFP_KERNEL); 1638 mtd = kzalloc(len, GFP_KERNEL);
1639 if (!mtd) { 1639 if (!mtd) {
1640 printk(KERN_ERR "DiskOnChip kmalloc (%d bytes) failed!\n", len); 1640 printk(KERN_ERR "DiskOnChip kmalloc (%d bytes) failed!\n", len);
1641 ret = -ENOMEM; 1641 ret = -ENOMEM;
1642 goto fail; 1642 goto fail;
1643 } 1643 }
1644 memset(mtd, 0, len);
1645 1644
1646 nand = (struct nand_chip *) (mtd + 1); 1645 nand = (struct nand_chip *) (mtd + 1);
1647 doc = (struct doc_priv *) (nand + 1); 1646 doc = (struct doc_priv *) (nand + 1);
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 41bfcae1fbf4..dfe56e03e48b 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -362,7 +362,7 @@ static int nand_default_block_markbad(struct mtd_info *mtd, loff_t ofs)
362 * access 362 * access
363 */ 363 */
364 ofs += mtd->oobsize; 364 ofs += mtd->oobsize;
365 chip->ops.len = 2; 365 chip->ops.len = chip->ops.ooblen = 2;
366 chip->ops.datbuf = NULL; 366 chip->ops.datbuf = NULL;
367 chip->ops.oobbuf = buf; 367 chip->ops.oobbuf = buf;
368 chip->ops.ooboffs = chip->badblockpos & ~0x01; 368 chip->ops.ooboffs = chip->badblockpos & ~0x01;
@@ -755,7 +755,7 @@ static int nand_read_page_raw(struct mtd_info *mtd, struct nand_chip *chip,
755} 755}
756 756
757/** 757/**
758 * nand_read_page_swecc - {REPLACABLE] software ecc based page read function 758 * nand_read_page_swecc - [REPLACABLE] software ecc based page read function
759 * @mtd: mtd info structure 759 * @mtd: mtd info structure
760 * @chip: nand chip info structure 760 * @chip: nand chip info structure
761 * @buf: buffer to store read data 761 * @buf: buffer to store read data
@@ -795,7 +795,7 @@ static int nand_read_page_swecc(struct mtd_info *mtd, struct nand_chip *chip,
795} 795}
796 796
797/** 797/**
798 * nand_read_page_hwecc - {REPLACABLE] hardware ecc based page read function 798 * nand_read_page_hwecc - [REPLACABLE] hardware ecc based page read function
799 * @mtd: mtd info structure 799 * @mtd: mtd info structure
800 * @chip: nand chip info structure 800 * @chip: nand chip info structure
801 * @buf: buffer to store read data 801 * @buf: buffer to store read data
@@ -839,7 +839,7 @@ static int nand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
839} 839}
840 840
841/** 841/**
842 * nand_read_page_syndrome - {REPLACABLE] hardware ecc syndrom based page read 842 * nand_read_page_syndrome - [REPLACABLE] hardware ecc syndrom based page read
843 * @mtd: mtd info structure 843 * @mtd: mtd info structure
844 * @chip: nand chip info structure 844 * @chip: nand chip info structure
845 * @buf: buffer to store read data 845 * @buf: buffer to store read data
@@ -897,12 +897,11 @@ static int nand_read_page_syndrome(struct mtd_info *mtd, struct nand_chip *chip,
897 * @chip: nand chip structure 897 * @chip: nand chip structure
898 * @oob: oob destination address 898 * @oob: oob destination address
899 * @ops: oob ops structure 899 * @ops: oob ops structure
900 * @len: size of oob to transfer
900 */ 901 */
901static uint8_t *nand_transfer_oob(struct nand_chip *chip, uint8_t *oob, 902static uint8_t *nand_transfer_oob(struct nand_chip *chip, uint8_t *oob,
902 struct mtd_oob_ops *ops) 903 struct mtd_oob_ops *ops, size_t len)
903{ 904{
904 size_t len = ops->ooblen;
905
906 switch(ops->mode) { 905 switch(ops->mode) {
907 906
908 case MTD_OOB_PLACE: 907 case MTD_OOB_PLACE:
@@ -960,6 +959,7 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from,
960 int sndcmd = 1; 959 int sndcmd = 1;
961 int ret = 0; 960 int ret = 0;
962 uint32_t readlen = ops->len; 961 uint32_t readlen = ops->len;
962 uint32_t oobreadlen = ops->ooblen;
963 uint8_t *bufpoi, *oob, *buf; 963 uint8_t *bufpoi, *oob, *buf;
964 964
965 stats = mtd->ecc_stats; 965 stats = mtd->ecc_stats;
@@ -971,7 +971,6 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from,
971 page = realpage & chip->pagemask; 971 page = realpage & chip->pagemask;
972 972
973 col = (int)(from & (mtd->writesize - 1)); 973 col = (int)(from & (mtd->writesize - 1));
974 chip->oob_poi = chip->buffers->oobrbuf;
975 974
976 buf = ops->datbuf; 975 buf = ops->datbuf;
977 oob = ops->oobbuf; 976 oob = ops->oobbuf;
@@ -1007,10 +1006,17 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from,
1007 1006
1008 if (unlikely(oob)) { 1007 if (unlikely(oob)) {
1009 /* Raw mode does data:oob:data:oob */ 1008 /* Raw mode does data:oob:data:oob */
1010 if (ops->mode != MTD_OOB_RAW) 1009 if (ops->mode != MTD_OOB_RAW) {
1011 oob = nand_transfer_oob(chip, oob, ops); 1010 int toread = min(oobreadlen,
1012 else 1011 chip->ecc.layout->oobavail);
1013 buf = nand_transfer_oob(chip, buf, ops); 1012 if (toread) {
1013 oob = nand_transfer_oob(chip,
1014 oob, ops, toread);
1015 oobreadlen -= toread;
1016 }
1017 } else
1018 buf = nand_transfer_oob(chip,
1019 buf, ops, mtd->oobsize);
1014 } 1020 }
1015 1021
1016 if (!(chip->options & NAND_NO_READRDY)) { 1022 if (!(chip->options & NAND_NO_READRDY)) {
@@ -1057,6 +1063,8 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from,
1057 } 1063 }
1058 1064
1059 ops->retlen = ops->len - (size_t) readlen; 1065 ops->retlen = ops->len - (size_t) readlen;
1066 if (oob)
1067 ops->oobretlen = ops->ooblen - oobreadlen;
1060 1068
1061 if (ret) 1069 if (ret)
1062 return ret; 1070 return ret;
@@ -1257,12 +1265,18 @@ static int nand_do_read_oob(struct mtd_info *mtd, loff_t from,
1257 int page, realpage, chipnr, sndcmd = 1; 1265 int page, realpage, chipnr, sndcmd = 1;
1258 struct nand_chip *chip = mtd->priv; 1266 struct nand_chip *chip = mtd->priv;
1259 int blkcheck = (1 << (chip->phys_erase_shift - chip->page_shift)) - 1; 1267 int blkcheck = (1 << (chip->phys_erase_shift - chip->page_shift)) - 1;
1260 int readlen = ops->len; 1268 int readlen = ops->ooblen;
1269 int len;
1261 uint8_t *buf = ops->oobbuf; 1270 uint8_t *buf = ops->oobbuf;
1262 1271
1263 DEBUG(MTD_DEBUG_LEVEL3, "nand_read_oob: from = 0x%08Lx, len = %i\n", 1272 DEBUG(MTD_DEBUG_LEVEL3, "nand_read_oob: from = 0x%08Lx, len = %i\n",
1264 (unsigned long long)from, readlen); 1273 (unsigned long long)from, readlen);
1265 1274
1275 if (ops->mode == MTD_OOB_RAW)
1276 len = mtd->oobsize;
1277 else
1278 len = chip->ecc.layout->oobavail;
1279
1266 chipnr = (int)(from >> chip->chip_shift); 1280 chipnr = (int)(from >> chip->chip_shift);
1267 chip->select_chip(mtd, chipnr); 1281 chip->select_chip(mtd, chipnr);
1268 1282
@@ -1270,11 +1284,11 @@ static int nand_do_read_oob(struct mtd_info *mtd, loff_t from,
1270 realpage = (int)(from >> chip->page_shift); 1284 realpage = (int)(from >> chip->page_shift);
1271 page = realpage & chip->pagemask; 1285 page = realpage & chip->pagemask;
1272 1286
1273 chip->oob_poi = chip->buffers->oobrbuf;
1274
1275 while(1) { 1287 while(1) {
1276 sndcmd = chip->ecc.read_oob(mtd, chip, page, sndcmd); 1288 sndcmd = chip->ecc.read_oob(mtd, chip, page, sndcmd);
1277 buf = nand_transfer_oob(chip, buf, ops); 1289
1290 len = min(len, readlen);
1291 buf = nand_transfer_oob(chip, buf, ops, len);
1278 1292
1279 if (!(chip->options & NAND_NO_READRDY)) { 1293 if (!(chip->options & NAND_NO_READRDY)) {
1280 /* 1294 /*
@@ -1289,7 +1303,7 @@ static int nand_do_read_oob(struct mtd_info *mtd, loff_t from,
1289 nand_wait_ready(mtd); 1303 nand_wait_ready(mtd);
1290 } 1304 }
1291 1305
1292 readlen -= ops->ooblen; 1306 readlen -= len;
1293 if (!readlen) 1307 if (!readlen)
1294 break; 1308 break;
1295 1309
@@ -1311,7 +1325,7 @@ static int nand_do_read_oob(struct mtd_info *mtd, loff_t from,
1311 sndcmd = 1; 1325 sndcmd = 1;
1312 } 1326 }
1313 1327
1314 ops->retlen = ops->len; 1328 ops->oobretlen = ops->ooblen;
1315 return 0; 1329 return 0;
1316} 1330}
1317 1331
@@ -1332,7 +1346,7 @@ static int nand_read_oob(struct mtd_info *mtd, loff_t from,
1332 ops->retlen = 0; 1346 ops->retlen = 0;
1333 1347
1334 /* Do not allow reads past end of device */ 1348 /* Do not allow reads past end of device */
1335 if ((from + ops->len) > mtd->size) { 1349 if (ops->datbuf && (from + ops->len) > mtd->size) {
1336 DEBUG(MTD_DEBUG_LEVEL0, "nand_read_oob: " 1350 DEBUG(MTD_DEBUG_LEVEL0, "nand_read_oob: "
1337 "Attempt read beyond end of device\n"); 1351 "Attempt read beyond end of device\n");
1338 return -EINVAL; 1352 return -EINVAL;
@@ -1375,7 +1389,7 @@ static void nand_write_page_raw(struct mtd_info *mtd, struct nand_chip *chip,
1375} 1389}
1376 1390
1377/** 1391/**
1378 * nand_write_page_swecc - {REPLACABLE] software ecc based page write function 1392 * nand_write_page_swecc - [REPLACABLE] software ecc based page write function
1379 * @mtd: mtd info structure 1393 * @mtd: mtd info structure
1380 * @chip: nand chip info structure 1394 * @chip: nand chip info structure
1381 * @buf: data buffer 1395 * @buf: data buffer
@@ -1401,7 +1415,7 @@ static void nand_write_page_swecc(struct mtd_info *mtd, struct nand_chip *chip,
1401} 1415}
1402 1416
1403/** 1417/**
1404 * nand_write_page_hwecc - {REPLACABLE] hardware ecc based page write function 1418 * nand_write_page_hwecc - [REPLACABLE] hardware ecc based page write function
1405 * @mtd: mtd info structure 1419 * @mtd: mtd info structure
1406 * @chip: nand chip info structure 1420 * @chip: nand chip info structure
1407 * @buf: data buffer 1421 * @buf: data buffer
@@ -1429,7 +1443,7 @@ static void nand_write_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
1429} 1443}
1430 1444
1431/** 1445/**
1432 * nand_write_page_syndrome - {REPLACABLE] hardware ecc syndrom based page write 1446 * nand_write_page_syndrome - [REPLACABLE] hardware ecc syndrom based page write
1433 * @mtd: mtd info structure 1447 * @mtd: mtd info structure
1434 * @chip: nand chip info structure 1448 * @chip: nand chip info structure
1435 * @buf: data buffer 1449 * @buf: data buffer
@@ -1577,7 +1591,7 @@ static uint8_t *nand_fill_oob(struct nand_chip *chip, uint8_t *oob,
1577 return NULL; 1591 return NULL;
1578} 1592}
1579 1593
1580#define NOTALIGNED(x) (x & (mtd->writesize-1)) != 0 1594#define NOTALIGNED(x) (x & (chip->subpagesize - 1)) != 0
1581 1595
1582/** 1596/**
1583 * nand_do_write_ops - [Internal] NAND write with ECC 1597 * nand_do_write_ops - [Internal] NAND write with ECC
@@ -1590,15 +1604,16 @@ static uint8_t *nand_fill_oob(struct nand_chip *chip, uint8_t *oob,
1590static int nand_do_write_ops(struct mtd_info *mtd, loff_t to, 1604static int nand_do_write_ops(struct mtd_info *mtd, loff_t to,
1591 struct mtd_oob_ops *ops) 1605 struct mtd_oob_ops *ops)
1592{ 1606{
1593 int chipnr, realpage, page, blockmask; 1607 int chipnr, realpage, page, blockmask, column;
1594 struct nand_chip *chip = mtd->priv; 1608 struct nand_chip *chip = mtd->priv;
1595 uint32_t writelen = ops->len; 1609 uint32_t writelen = ops->len;
1596 uint8_t *oob = ops->oobbuf; 1610 uint8_t *oob = ops->oobbuf;
1597 uint8_t *buf = ops->datbuf; 1611 uint8_t *buf = ops->datbuf;
1598 int bytes = mtd->writesize; 1612 int ret, subpage;
1599 int ret;
1600 1613
1601 ops->retlen = 0; 1614 ops->retlen = 0;
1615 if (!writelen)
1616 return 0;
1602 1617
1603 /* reject writes, which are not page aligned */ 1618 /* reject writes, which are not page aligned */
1604 if (NOTALIGNED(to) || NOTALIGNED(ops->len)) { 1619 if (NOTALIGNED(to) || NOTALIGNED(ops->len)) {
@@ -1607,8 +1622,11 @@ static int nand_do_write_ops(struct mtd_info *mtd, loff_t to,
1607 return -EINVAL; 1622 return -EINVAL;
1608 } 1623 }
1609 1624
1610 if (!writelen) 1625 column = to & (mtd->writesize - 1);
1611 return 0; 1626 subpage = column || (writelen & (mtd->writesize - 1));
1627
1628 if (subpage && oob)
1629 return -EINVAL;
1612 1630
1613 chipnr = (int)(to >> chip->chip_shift); 1631 chipnr = (int)(to >> chip->chip_shift);
1614 chip->select_chip(mtd, chipnr); 1632 chip->select_chip(mtd, chipnr);
@@ -1626,15 +1644,29 @@ static int nand_do_write_ops(struct mtd_info *mtd, loff_t to,
1626 (chip->pagebuf << chip->page_shift) < (to + ops->len)) 1644 (chip->pagebuf << chip->page_shift) < (to + ops->len))
1627 chip->pagebuf = -1; 1645 chip->pagebuf = -1;
1628 1646
1629 chip->oob_poi = chip->buffers->oobwbuf; 1647 /* If we're not given explicit OOB data, let it be 0xFF */
1648 if (likely(!oob))
1649 memset(chip->oob_poi, 0xff, mtd->oobsize);
1630 1650
1631 while(1) { 1651 while(1) {
1652 int bytes = mtd->writesize;
1632 int cached = writelen > bytes && page != blockmask; 1653 int cached = writelen > bytes && page != blockmask;
1654 uint8_t *wbuf = buf;
1655
1656 /* Partial page write ? */
1657 if (unlikely(column || writelen < (mtd->writesize - 1))) {
1658 cached = 0;
1659 bytes = min_t(int, bytes - column, (int) writelen);
1660 chip->pagebuf = -1;
1661 memset(chip->buffers->databuf, 0xff, mtd->writesize);
1662 memcpy(&chip->buffers->databuf[column], buf, bytes);
1663 wbuf = chip->buffers->databuf;
1664 }
1633 1665
1634 if (unlikely(oob)) 1666 if (unlikely(oob))
1635 oob = nand_fill_oob(chip, oob, ops); 1667 oob = nand_fill_oob(chip, oob, ops);
1636 1668
1637 ret = chip->write_page(mtd, chip, buf, page, cached, 1669 ret = chip->write_page(mtd, chip, wbuf, page, cached,
1638 (ops->mode == MTD_OOB_RAW)); 1670 (ops->mode == MTD_OOB_RAW));
1639 if (ret) 1671 if (ret)
1640 break; 1672 break;
@@ -1643,6 +1675,7 @@ static int nand_do_write_ops(struct mtd_info *mtd, loff_t to,
1643 if (!writelen) 1675 if (!writelen)
1644 break; 1676 break;
1645 1677
1678 column = 0;
1646 buf += bytes; 1679 buf += bytes;
1647 realpage++; 1680 realpage++;
1648 1681
@@ -1655,10 +1688,9 @@ static int nand_do_write_ops(struct mtd_info *mtd, loff_t to,
1655 } 1688 }
1656 } 1689 }
1657 1690
1658 if (unlikely(oob))
1659 memset(chip->oob_poi, 0xff, mtd->oobsize);
1660
1661 ops->retlen = ops->len - writelen; 1691 ops->retlen = ops->len - writelen;
1692 if (unlikely(oob))
1693 ops->oobretlen = ops->ooblen;
1662 return ret; 1694 return ret;
1663} 1695}
1664 1696
@@ -1714,10 +1746,10 @@ static int nand_do_write_oob(struct mtd_info *mtd, loff_t to,
1714 struct nand_chip *chip = mtd->priv; 1746 struct nand_chip *chip = mtd->priv;
1715 1747
1716 DEBUG(MTD_DEBUG_LEVEL3, "nand_write_oob: to = 0x%08x, len = %i\n", 1748 DEBUG(MTD_DEBUG_LEVEL3, "nand_write_oob: to = 0x%08x, len = %i\n",
1717 (unsigned int)to, (int)ops->len); 1749 (unsigned int)to, (int)ops->ooblen);
1718 1750
1719 /* Do not allow write past end of page */ 1751 /* Do not allow write past end of page */
1720 if ((ops->ooboffs + ops->len) > mtd->oobsize) { 1752 if ((ops->ooboffs + ops->ooblen) > mtd->oobsize) {
1721 DEBUG(MTD_DEBUG_LEVEL0, "nand_write_oob: " 1753 DEBUG(MTD_DEBUG_LEVEL0, "nand_write_oob: "
1722 "Attempt to write past end of page\n"); 1754 "Attempt to write past end of page\n");
1723 return -EINVAL; 1755 return -EINVAL;
@@ -1745,7 +1777,6 @@ static int nand_do_write_oob(struct mtd_info *mtd, loff_t to,
1745 if (page == chip->pagebuf) 1777 if (page == chip->pagebuf)
1746 chip->pagebuf = -1; 1778 chip->pagebuf = -1;
1747 1779
1748 chip->oob_poi = chip->buffers->oobwbuf;
1749 memset(chip->oob_poi, 0xff, mtd->oobsize); 1780 memset(chip->oob_poi, 0xff, mtd->oobsize);
1750 nand_fill_oob(chip, ops->oobbuf, ops); 1781 nand_fill_oob(chip, ops->oobbuf, ops);
1751 status = chip->ecc.write_oob(mtd, chip, page & chip->pagemask); 1782 status = chip->ecc.write_oob(mtd, chip, page & chip->pagemask);
@@ -1754,7 +1785,7 @@ static int nand_do_write_oob(struct mtd_info *mtd, loff_t to,
1754 if (status) 1785 if (status)
1755 return status; 1786 return status;
1756 1787
1757 ops->retlen = ops->len; 1788 ops->oobretlen = ops->ooblen;
1758 1789
1759 return 0; 1790 return 0;
1760} 1791}
@@ -1774,7 +1805,7 @@ static int nand_write_oob(struct mtd_info *mtd, loff_t to,
1774 ops->retlen = 0; 1805 ops->retlen = 0;
1775 1806
1776 /* Do not allow writes past end of device */ 1807 /* Do not allow writes past end of device */
1777 if ((to + ops->len) > mtd->size) { 1808 if (ops->datbuf && (to + ops->len) > mtd->size) {
1778 DEBUG(MTD_DEBUG_LEVEL0, "nand_read_oob: " 1809 DEBUG(MTD_DEBUG_LEVEL0, "nand_read_oob: "
1779 "Attempt read beyond end of device\n"); 1810 "Attempt read beyond end of device\n");
1780 return -EINVAL; 1811 return -EINVAL;
@@ -2188,8 +2219,8 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd,
2188 /* Newer devices have all the information in additional id bytes */ 2219 /* Newer devices have all the information in additional id bytes */
2189 if (!type->pagesize) { 2220 if (!type->pagesize) {
2190 int extid; 2221 int extid;
2191 /* The 3rd id byte contains non relevant data ATM */ 2222 /* The 3rd id byte holds MLC / multichip data */
2192 extid = chip->read_byte(mtd); 2223 chip->cellinfo = chip->read_byte(mtd);
2193 /* The 4th id byte is the important one */ 2224 /* The 4th id byte is the important one */
2194 extid = chip->read_byte(mtd); 2225 extid = chip->read_byte(mtd);
2195 /* Calc pagesize */ 2226 /* Calc pagesize */
@@ -2349,8 +2380,8 @@ int nand_scan_tail(struct mtd_info *mtd)
2349 if (!chip->buffers) 2380 if (!chip->buffers)
2350 return -ENOMEM; 2381 return -ENOMEM;
2351 2382
2352 /* Preset the internal oob write buffer */ 2383 /* Set the internal oob buffer location, just after the page data */
2353 memset(chip->buffers->oobwbuf, 0xff, mtd->oobsize); 2384 chip->oob_poi = chip->buffers->databuf + mtd->writesize;
2354 2385
2355 /* 2386 /*
2356 * If no default placement scheme is given, select an appropriate one 2387 * If no default placement scheme is given, select an appropriate one
@@ -2469,6 +2500,24 @@ int nand_scan_tail(struct mtd_info *mtd)
2469 } 2500 }
2470 chip->ecc.total = chip->ecc.steps * chip->ecc.bytes; 2501 chip->ecc.total = chip->ecc.steps * chip->ecc.bytes;
2471 2502
2503 /*
2504 * Allow subpage writes up to ecc.steps. Not possible for MLC
2505 * FLASH.
2506 */
2507 if (!(chip->options & NAND_NO_SUBPAGE_WRITE) &&
2508 !(chip->cellinfo & NAND_CI_CELLTYPE_MSK)) {
2509 switch(chip->ecc.steps) {
2510 case 2:
2511 mtd->subpage_sft = 1;
2512 break;
2513 case 4:
2514 case 8:
2515 mtd->subpage_sft = 2;
2516 break;
2517 }
2518 }
2519 chip->subpagesize = mtd->writesize >> mtd->subpage_sft;
2520
2472 /* Initialize state */ 2521 /* Initialize state */
2473 chip->state = FL_READY; 2522 chip->state = FL_READY;
2474 2523
diff --git a/drivers/mtd/nand/nand_bbt.c b/drivers/mtd/nand/nand_bbt.c
index 9402653eb09b..5e121ceaa598 100644
--- a/drivers/mtd/nand/nand_bbt.c
+++ b/drivers/mtd/nand/nand_bbt.c
@@ -333,7 +333,6 @@ static int scan_block_fast(struct mtd_info *mtd, struct nand_bbt_descr *bd,
333 struct mtd_oob_ops ops; 333 struct mtd_oob_ops ops;
334 int j, ret; 334 int j, ret;
335 335
336 ops.len = mtd->oobsize;
337 ops.ooblen = mtd->oobsize; 336 ops.ooblen = mtd->oobsize;
338 ops.oobbuf = buf; 337 ops.oobbuf = buf;
339 ops.ooboffs = 0; 338 ops.ooboffs = 0;
@@ -676,10 +675,10 @@ static int write_bbt(struct mtd_info *mtd, uint8_t *buf,
676 "bad block table\n"); 675 "bad block table\n");
677 } 676 }
678 /* Read oob data */ 677 /* Read oob data */
679 ops.len = (len >> this->page_shift) * mtd->oobsize; 678 ops.ooblen = (len >> this->page_shift) * mtd->oobsize;
680 ops.oobbuf = &buf[len]; 679 ops.oobbuf = &buf[len];
681 res = mtd->read_oob(mtd, to + mtd->writesize, &ops); 680 res = mtd->read_oob(mtd, to + mtd->writesize, &ops);
682 if (res < 0 || ops.retlen != ops.len) 681 if (res < 0 || ops.oobretlen != ops.ooblen)
683 goto outerr; 682 goto outerr;
684 683
685 /* Calc the byte offset in the buffer */ 684 /* Calc the byte offset in the buffer */
@@ -961,14 +960,12 @@ int nand_scan_bbt(struct mtd_info *mtd, struct nand_bbt_descr *bd)
961 struct nand_bbt_descr *md = this->bbt_md; 960 struct nand_bbt_descr *md = this->bbt_md;
962 961
963 len = mtd->size >> (this->bbt_erase_shift + 2); 962 len = mtd->size >> (this->bbt_erase_shift + 2);
964 /* Allocate memory (2bit per block) */ 963 /* Allocate memory (2bit per block) and clear the memory bad block table */
965 this->bbt = kmalloc(len, GFP_KERNEL); 964 this->bbt = kzalloc(len, GFP_KERNEL);
966 if (!this->bbt) { 965 if (!this->bbt) {
967 printk(KERN_ERR "nand_scan_bbt: Out of memory\n"); 966 printk(KERN_ERR "nand_scan_bbt: Out of memory\n");
968 return -ENOMEM; 967 return -ENOMEM;
969 } 968 }
970 /* Clear the memory bad block table */
971 memset(this->bbt, 0x00, len);
972 969
973 /* If no primary table decriptor is given, scan the device 970 /* If no primary table decriptor is given, scan the device
974 * to build a memory based bad block table 971 * to build a memory based bad block table
diff --git a/drivers/mtd/nand/nand_ecc.c b/drivers/mtd/nand/nand_ecc.c
index dd438ca47d9a..fde593e5e634 100644
--- a/drivers/mtd/nand/nand_ecc.c
+++ b/drivers/mtd/nand/nand_ecc.c
@@ -112,7 +112,7 @@ int nand_calculate_ecc(struct mtd_info *mtd, const u_char *dat,
112 tmp2 |= (reg2 & 0x01) << 0; /* B7 -> B0 */ 112 tmp2 |= (reg2 & 0x01) << 0; /* B7 -> B0 */
113 113
114 /* Calculate final ECC code */ 114 /* Calculate final ECC code */
115#ifdef CONFIG_NAND_ECC_SMC 115#ifdef CONFIG_MTD_NAND_ECC_SMC
116 ecc_code[0] = ~tmp2; 116 ecc_code[0] = ~tmp2;
117 ecc_code[1] = ~tmp1; 117 ecc_code[1] = ~tmp1;
118#else 118#else
@@ -148,7 +148,7 @@ int nand_correct_data(struct mtd_info *mtd, u_char *dat,
148{ 148{
149 uint8_t s0, s1, s2; 149 uint8_t s0, s1, s2;
150 150
151#ifdef CONFIG_NAND_ECC_SMC 151#ifdef CONFIG_MTD_NAND_ECC_SMC
152 s0 = calc_ecc[0] ^ read_ecc[0]; 152 s0 = calc_ecc[0] ^ read_ecc[0];
153 s1 = calc_ecc[1] ^ read_ecc[1]; 153 s1 = calc_ecc[1] ^ read_ecc[1];
154 s2 = calc_ecc[2] ^ read_ecc[2]; 154 s2 = calc_ecc[2] ^ read_ecc[2];
diff --git a/drivers/mtd/nand/nandsim.c b/drivers/mtd/nand/nandsim.c
index 545ff252d81e..c3bca9590ad2 100644
--- a/drivers/mtd/nand/nandsim.c
+++ b/drivers/mtd/nand/nandsim.c
@@ -37,10 +37,6 @@
37#include <linux/mtd/nand.h> 37#include <linux/mtd/nand.h>
38#include <linux/mtd/partitions.h> 38#include <linux/mtd/partitions.h>
39#include <linux/delay.h> 39#include <linux/delay.h>
40#ifdef CONFIG_NS_ABS_POS
41#include <asm/io.h>
42#endif
43
44 40
45/* Default simulator parameters values */ 41/* Default simulator parameters values */
46#if !defined(CONFIG_NANDSIM_FIRST_ID_BYTE) || \ 42#if !defined(CONFIG_NANDSIM_FIRST_ID_BYTE) || \
@@ -164,7 +160,7 @@ MODULE_PARM_DESC(dbg, "Output debug information if not zero");
164/* After a command is input, the simulator goes to one of the following states */ 160/* After a command is input, the simulator goes to one of the following states */
165#define STATE_CMD_READ0 0x00000001 /* read data from the beginning of page */ 161#define STATE_CMD_READ0 0x00000001 /* read data from the beginning of page */
166#define STATE_CMD_READ1 0x00000002 /* read data from the second half of page */ 162#define STATE_CMD_READ1 0x00000002 /* read data from the second half of page */
167#define STATE_CMD_READSTART 0x00000003 /* read data second command (large page devices) */ 163#define STATE_CMD_READSTART 0x00000003 /* read data second command (large page devices) */
168#define STATE_CMD_PAGEPROG 0x00000004 /* start page programm */ 164#define STATE_CMD_PAGEPROG 0x00000004 /* start page programm */
169#define STATE_CMD_READOOB 0x00000005 /* read OOB area */ 165#define STATE_CMD_READOOB 0x00000005 /* read OOB area */
170#define STATE_CMD_ERASE1 0x00000006 /* sector erase first command */ 166#define STATE_CMD_ERASE1 0x00000006 /* sector erase first command */
@@ -231,6 +227,14 @@ MODULE_PARM_DESC(dbg, "Output debug information if not zero");
231#define NS_MAX_PREVSTATES 1 227#define NS_MAX_PREVSTATES 1
232 228
233/* 229/*
230 * A union to represent flash memory contents and flash buffer.
231 */
232union ns_mem {
233 u_char *byte; /* for byte access */
234 uint16_t *word; /* for 16-bit word access */
235};
236
237/*
234 * The structure which describes all the internal simulator data. 238 * The structure which describes all the internal simulator data.
235 */ 239 */
236struct nandsim { 240struct nandsim {
@@ -247,17 +251,11 @@ struct nandsim {
247 uint16_t npstates; /* number of previous states saved */ 251 uint16_t npstates; /* number of previous states saved */
248 uint16_t stateidx; /* current state index */ 252 uint16_t stateidx; /* current state index */
249 253
250 /* The simulated NAND flash image */ 254 /* The simulated NAND flash pages array */
251 union flash_media { 255 union ns_mem *pages;
252 u_char *byte;
253 uint16_t *word;
254 } mem;
255 256
256 /* Internal buffer of page + OOB size bytes */ 257 /* Internal buffer of page + OOB size bytes */
257 union internal_buffer { 258 union ns_mem buf;
258 u_char *byte; /* for byte access */
259 uint16_t *word; /* for 16-bit word access */
260 } buf;
261 259
262 /* NAND flash "geometry" */ 260 /* NAND flash "geometry" */
263 struct nandsin_geometry { 261 struct nandsin_geometry {
@@ -346,12 +344,49 @@ static struct mtd_info *nsmtd;
346static u_char ns_verify_buf[NS_LARGEST_PAGE_SIZE]; 344static u_char ns_verify_buf[NS_LARGEST_PAGE_SIZE];
347 345
348/* 346/*
347 * Allocate array of page pointers and initialize the array to NULL
348 * pointers.
349 *
350 * RETURNS: 0 if success, -ENOMEM if memory alloc fails.
351 */
352static int alloc_device(struct nandsim *ns)
353{
354 int i;
355
356 ns->pages = vmalloc(ns->geom.pgnum * sizeof(union ns_mem));
357 if (!ns->pages) {
358 NS_ERR("alloc_map: unable to allocate page array\n");
359 return -ENOMEM;
360 }
361 for (i = 0; i < ns->geom.pgnum; i++) {
362 ns->pages[i].byte = NULL;
363 }
364
365 return 0;
366}
367
368/*
369 * Free any allocated pages, and free the array of page pointers.
370 */
371static void free_device(struct nandsim *ns)
372{
373 int i;
374
375 if (ns->pages) {
376 for (i = 0; i < ns->geom.pgnum; i++) {
377 if (ns->pages[i].byte)
378 kfree(ns->pages[i].byte);
379 }
380 vfree(ns->pages);
381 }
382}
383
384/*
349 * Initialize the nandsim structure. 385 * Initialize the nandsim structure.
350 * 386 *
351 * RETURNS: 0 if success, -ERRNO if failure. 387 * RETURNS: 0 if success, -ERRNO if failure.
352 */ 388 */
353static int 389static int init_nandsim(struct mtd_info *mtd)
354init_nandsim(struct mtd_info *mtd)
355{ 390{
356 struct nand_chip *chip = (struct nand_chip *)mtd->priv; 391 struct nand_chip *chip = (struct nand_chip *)mtd->priv;
357 struct nandsim *ns = (struct nandsim *)(chip->priv); 392 struct nandsim *ns = (struct nandsim *)(chip->priv);
@@ -405,7 +440,7 @@ init_nandsim(struct mtd_info *mtd)
405 } 440 }
406 } else { 441 } else {
407 if (ns->geom.totsz <= (128 << 20)) { 442 if (ns->geom.totsz <= (128 << 20)) {
408 ns->geom.pgaddrbytes = 5; 443 ns->geom.pgaddrbytes = 4;
409 ns->geom.secaddrbytes = 2; 444 ns->geom.secaddrbytes = 2;
410 } else { 445 } else {
411 ns->geom.pgaddrbytes = 5; 446 ns->geom.pgaddrbytes = 5;
@@ -439,23 +474,8 @@ init_nandsim(struct mtd_info *mtd)
439 printk("sector address bytes: %u\n", ns->geom.secaddrbytes); 474 printk("sector address bytes: %u\n", ns->geom.secaddrbytes);
440 printk("options: %#x\n", ns->options); 475 printk("options: %#x\n", ns->options);
441 476
442 /* Map / allocate and initialize the flash image */ 477 if (alloc_device(ns) != 0)
443#ifdef CONFIG_NS_ABS_POS 478 goto error;
444 ns->mem.byte = ioremap(CONFIG_NS_ABS_POS, ns->geom.totszoob);
445 if (!ns->mem.byte) {
446 NS_ERR("init_nandsim: failed to map the NAND flash image at address %p\n",
447 (void *)CONFIG_NS_ABS_POS);
448 return -ENOMEM;
449 }
450#else
451 ns->mem.byte = vmalloc(ns->geom.totszoob);
452 if (!ns->mem.byte) {
453 NS_ERR("init_nandsim: unable to allocate %u bytes for flash image\n",
454 ns->geom.totszoob);
455 return -ENOMEM;
456 }
457 memset(ns->mem.byte, 0xFF, ns->geom.totszoob);
458#endif
459 479
460 /* Allocate / initialize the internal buffer */ 480 /* Allocate / initialize the internal buffer */
461 ns->buf.byte = kmalloc(ns->geom.pgszoob, GFP_KERNEL); 481 ns->buf.byte = kmalloc(ns->geom.pgszoob, GFP_KERNEL);
@@ -474,11 +494,7 @@ init_nandsim(struct mtd_info *mtd)
474 return 0; 494 return 0;
475 495
476error: 496error:
477#ifdef CONFIG_NS_ABS_POS 497 free_device(ns);
478 iounmap(ns->mem.byte);
479#else
480 vfree(ns->mem.byte);
481#endif
482 498
483 return -ENOMEM; 499 return -ENOMEM;
484} 500}
@@ -486,16 +502,10 @@ error:
486/* 502/*
487 * Free the nandsim structure. 503 * Free the nandsim structure.
488 */ 504 */
489static void 505static void free_nandsim(struct nandsim *ns)
490free_nandsim(struct nandsim *ns)
491{ 506{
492 kfree(ns->buf.byte); 507 kfree(ns->buf.byte);
493 508 free_device(ns);
494#ifdef CONFIG_NS_ABS_POS
495 iounmap(ns->mem.byte);
496#else
497 vfree(ns->mem.byte);
498#endif
499 509
500 return; 510 return;
501} 511}
@@ -503,8 +513,7 @@ free_nandsim(struct nandsim *ns)
503/* 513/*
504 * Returns the string representation of 'state' state. 514 * Returns the string representation of 'state' state.
505 */ 515 */
506static char * 516static char *get_state_name(uint32_t state)
507get_state_name(uint32_t state)
508{ 517{
509 switch (NS_STATE(state)) { 518 switch (NS_STATE(state)) {
510 case STATE_CMD_READ0: 519 case STATE_CMD_READ0:
@@ -562,8 +571,7 @@ get_state_name(uint32_t state)
562 * 571 *
563 * RETURNS: 1 if wrong command, 0 if right. 572 * RETURNS: 1 if wrong command, 0 if right.
564 */ 573 */
565static int 574static int check_command(int cmd)
566check_command(int cmd)
567{ 575{
568 switch (cmd) { 576 switch (cmd) {
569 577
@@ -589,8 +597,7 @@ check_command(int cmd)
589/* 597/*
590 * Returns state after command is accepted by command number. 598 * Returns state after command is accepted by command number.
591 */ 599 */
592static uint32_t 600static uint32_t get_state_by_command(unsigned command)
593get_state_by_command(unsigned command)
594{ 601{
595 switch (command) { 602 switch (command) {
596 case NAND_CMD_READ0: 603 case NAND_CMD_READ0:
@@ -626,8 +633,7 @@ get_state_by_command(unsigned command)
626/* 633/*
627 * Move an address byte to the correspondent internal register. 634 * Move an address byte to the correspondent internal register.
628 */ 635 */
629static inline void 636static inline void accept_addr_byte(struct nandsim *ns, u_char bt)
630accept_addr_byte(struct nandsim *ns, u_char bt)
631{ 637{
632 uint byte = (uint)bt; 638 uint byte = (uint)bt;
633 639
@@ -645,8 +651,7 @@ accept_addr_byte(struct nandsim *ns, u_char bt)
645/* 651/*
646 * Switch to STATE_READY state. 652 * Switch to STATE_READY state.
647 */ 653 */
648static inline void 654static inline void switch_to_ready_state(struct nandsim *ns, u_char status)
649switch_to_ready_state(struct nandsim *ns, u_char status)
650{ 655{
651 NS_DBG("switch_to_ready_state: switch to %s state\n", get_state_name(STATE_READY)); 656 NS_DBG("switch_to_ready_state: switch to %s state\n", get_state_name(STATE_READY));
652 657
@@ -705,8 +710,7 @@ switch_to_ready_state(struct nandsim *ns, u_char status)
705 * -1 - several matches. 710 * -1 - several matches.
706 * 0 - operation is found. 711 * 0 - operation is found.
707 */ 712 */
708static int 713static int find_operation(struct nandsim *ns, uint32_t flag)
709find_operation(struct nandsim *ns, uint32_t flag)
710{ 714{
711 int opsfound = 0; 715 int opsfound = 0;
712 int i, j, idx = 0; 716 int i, j, idx = 0;
@@ -791,14 +795,93 @@ find_operation(struct nandsim *ns, uint32_t flag)
791} 795}
792 796
793/* 797/*
798 * Returns a pointer to the current page.
799 */
800static inline union ns_mem *NS_GET_PAGE(struct nandsim *ns)
801{
802 return &(ns->pages[ns->regs.row]);
803}
804
805/*
806 * Retuns a pointer to the current byte, within the current page.
807 */
808static inline u_char *NS_PAGE_BYTE_OFF(struct nandsim *ns)
809{
810 return NS_GET_PAGE(ns)->byte + ns->regs.column + ns->regs.off;
811}
812
813/*
814 * Fill the NAND buffer with data read from the specified page.
815 */
816static void read_page(struct nandsim *ns, int num)
817{
818 union ns_mem *mypage;
819
820 mypage = NS_GET_PAGE(ns);
821 if (mypage->byte == NULL) {
822 NS_DBG("read_page: page %d not allocated\n", ns->regs.row);
823 memset(ns->buf.byte, 0xFF, num);
824 } else {
825 NS_DBG("read_page: page %d allocated, reading from %d\n",
826 ns->regs.row, ns->regs.column + ns->regs.off);
827 memcpy(ns->buf.byte, NS_PAGE_BYTE_OFF(ns), num);
828 }
829}
830
831/*
832 * Erase all pages in the specified sector.
833 */
834static void erase_sector(struct nandsim *ns)
835{
836 union ns_mem *mypage;
837 int i;
838
839 mypage = NS_GET_PAGE(ns);
840 for (i = 0; i < ns->geom.pgsec; i++) {
841 if (mypage->byte != NULL) {
842 NS_DBG("erase_sector: freeing page %d\n", ns->regs.row+i);
843 kfree(mypage->byte);
844 mypage->byte = NULL;
845 }
846 mypage++;
847 }
848}
849
850/*
851 * Program the specified page with the contents from the NAND buffer.
852 */
853static int prog_page(struct nandsim *ns, int num)
854{
855 int i;
856 union ns_mem *mypage;
857 u_char *pg_off;
858
859 mypage = NS_GET_PAGE(ns);
860 if (mypage->byte == NULL) {
861 NS_DBG("prog_page: allocating page %d\n", ns->regs.row);
862 mypage->byte = kmalloc(ns->geom.pgszoob, GFP_KERNEL);
863 if (mypage->byte == NULL) {
864 NS_ERR("prog_page: error allocating memory for page %d\n", ns->regs.row);
865 return -1;
866 }
867 memset(mypage->byte, 0xFF, ns->geom.pgszoob);
868 }
869
870 pg_off = NS_PAGE_BYTE_OFF(ns);
871 for (i = 0; i < num; i++)
872 pg_off[i] &= ns->buf.byte[i];
873
874 return 0;
875}
876
877/*
794 * If state has any action bit, perform this action. 878 * If state has any action bit, perform this action.
795 * 879 *
796 * RETURNS: 0 if success, -1 if error. 880 * RETURNS: 0 if success, -1 if error.
797 */ 881 */
798static int 882static int do_state_action(struct nandsim *ns, uint32_t action)
799do_state_action(struct nandsim *ns, uint32_t action)
800{ 883{
801 int i, num; 884 int num;
802 int busdiv = ns->busw == 8 ? 1 : 2; 885 int busdiv = ns->busw == 8 ? 1 : 2;
803 886
804 action &= ACTION_MASK; 887 action &= ACTION_MASK;
@@ -822,7 +905,7 @@ do_state_action(struct nandsim *ns, uint32_t action)
822 break; 905 break;
823 } 906 }
824 num = ns->geom.pgszoob - ns->regs.off - ns->regs.column; 907 num = ns->geom.pgszoob - ns->regs.off - ns->regs.column;
825 memcpy(ns->buf.byte, ns->mem.byte + NS_RAW_OFFSET(ns) + ns->regs.off, num); 908 read_page(ns, num);
826 909
827 NS_DBG("do_state_action: (ACTION_CPY:) copy %d bytes to int buf, raw offset %d\n", 910 NS_DBG("do_state_action: (ACTION_CPY:) copy %d bytes to int buf, raw offset %d\n",
828 num, NS_RAW_OFFSET(ns) + ns->regs.off); 911 num, NS_RAW_OFFSET(ns) + ns->regs.off);
@@ -863,7 +946,7 @@ do_state_action(struct nandsim *ns, uint32_t action)
863 ns->regs.row, NS_RAW_OFFSET(ns)); 946 ns->regs.row, NS_RAW_OFFSET(ns));
864 NS_LOG("erase sector %d\n", ns->regs.row >> (ns->geom.secshift - ns->geom.pgshift)); 947 NS_LOG("erase sector %d\n", ns->regs.row >> (ns->geom.secshift - ns->geom.pgshift));
865 948
866 memset(ns->mem.byte + NS_RAW_OFFSET(ns), 0xFF, ns->geom.secszoob); 949 erase_sector(ns);
867 950
868 NS_MDELAY(erase_delay); 951 NS_MDELAY(erase_delay);
869 952
@@ -886,8 +969,8 @@ do_state_action(struct nandsim *ns, uint32_t action)
886 return -1; 969 return -1;
887 } 970 }
888 971
889 for (i = 0; i < num; i++) 972 if (prog_page(ns, num) == -1)
890 ns->mem.byte[NS_RAW_OFFSET(ns) + ns->regs.off + i] &= ns->buf.byte[i]; 973 return -1;
891 974
892 NS_DBG("do_state_action: copy %d bytes from int buf to (%#x, %#x), raw off = %d\n", 975 NS_DBG("do_state_action: copy %d bytes from int buf to (%#x, %#x), raw off = %d\n",
893 num, ns->regs.row, ns->regs.column, NS_RAW_OFFSET(ns) + ns->regs.off); 976 num, ns->regs.row, ns->regs.column, NS_RAW_OFFSET(ns) + ns->regs.off);
@@ -928,8 +1011,7 @@ do_state_action(struct nandsim *ns, uint32_t action)
928/* 1011/*
929 * Switch simulator's state. 1012 * Switch simulator's state.
930 */ 1013 */
931static void 1014static void switch_state(struct nandsim *ns)
932switch_state(struct nandsim *ns)
933{ 1015{
934 if (ns->op) { 1016 if (ns->op) {
935 /* 1017 /*
@@ -1070,8 +1152,7 @@ switch_state(struct nandsim *ns)
1070 } 1152 }
1071} 1153}
1072 1154
1073static u_char 1155static u_char ns_nand_read_byte(struct mtd_info *mtd)
1074ns_nand_read_byte(struct mtd_info *mtd)
1075{ 1156{
1076 struct nandsim *ns = (struct nandsim *)((struct nand_chip *)mtd->priv)->priv; 1157 struct nandsim *ns = (struct nandsim *)((struct nand_chip *)mtd->priv)->priv;
1077 u_char outb = 0x00; 1158 u_char outb = 0x00;
@@ -1144,8 +1225,7 @@ ns_nand_read_byte(struct mtd_info *mtd)
1144 return outb; 1225 return outb;
1145} 1226}
1146 1227
1147static void 1228static void ns_nand_write_byte(struct mtd_info *mtd, u_char byte)
1148ns_nand_write_byte(struct mtd_info *mtd, u_char byte)
1149{ 1229{
1150 struct nandsim *ns = (struct nandsim *)((struct nand_chip *)mtd->priv)->priv; 1230 struct nandsim *ns = (struct nandsim *)((struct nand_chip *)mtd->priv)->priv;
1151 1231
@@ -1308,15 +1388,13 @@ static void ns_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int bitmask)
1308 ns_nand_write_byte(mtd, cmd); 1388 ns_nand_write_byte(mtd, cmd);
1309} 1389}
1310 1390
1311static int 1391static int ns_device_ready(struct mtd_info *mtd)
1312ns_device_ready(struct mtd_info *mtd)
1313{ 1392{
1314 NS_DBG("device_ready\n"); 1393 NS_DBG("device_ready\n");
1315 return 1; 1394 return 1;
1316} 1395}
1317 1396
1318static uint16_t 1397static uint16_t ns_nand_read_word(struct mtd_info *mtd)
1319ns_nand_read_word(struct mtd_info *mtd)
1320{ 1398{
1321 struct nand_chip *chip = (struct nand_chip *)mtd->priv; 1399 struct nand_chip *chip = (struct nand_chip *)mtd->priv;
1322 1400
@@ -1325,8 +1403,7 @@ ns_nand_read_word(struct mtd_info *mtd)
1325 return chip->read_byte(mtd) | (chip->read_byte(mtd) << 8); 1403 return chip->read_byte(mtd) | (chip->read_byte(mtd) << 8);
1326} 1404}
1327 1405
1328static void 1406static void ns_nand_write_buf(struct mtd_info *mtd, const u_char *buf, int len)
1329ns_nand_write_buf(struct mtd_info *mtd, const u_char *buf, int len)
1330{ 1407{
1331 struct nandsim *ns = (struct nandsim *)((struct nand_chip *)mtd->priv)->priv; 1408 struct nandsim *ns = (struct nandsim *)((struct nand_chip *)mtd->priv)->priv;
1332 1409
@@ -1353,8 +1430,7 @@ ns_nand_write_buf(struct mtd_info *mtd, const u_char *buf, int len)
1353 } 1430 }
1354} 1431}
1355 1432
1356static void 1433static void ns_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len)
1357ns_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len)
1358{ 1434{
1359 struct nandsim *ns = (struct nandsim *)((struct nand_chip *)mtd->priv)->priv; 1435 struct nandsim *ns = (struct nandsim *)((struct nand_chip *)mtd->priv)->priv;
1360 1436
@@ -1407,8 +1483,7 @@ ns_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len)
1407 return; 1483 return;
1408} 1484}
1409 1485
1410static int 1486static int ns_nand_verify_buf(struct mtd_info *mtd, const u_char *buf, int len)
1411ns_nand_verify_buf(struct mtd_info *mtd, const u_char *buf, int len)
1412{ 1487{
1413 ns_nand_read_buf(mtd, (u_char *)&ns_verify_buf[0], len); 1488 ns_nand_read_buf(mtd, (u_char *)&ns_verify_buf[0], len);
1414 1489
@@ -1436,14 +1511,12 @@ static int __init ns_init_module(void)
1436 } 1511 }
1437 1512
1438 /* Allocate and initialize mtd_info, nand_chip and nandsim structures */ 1513 /* Allocate and initialize mtd_info, nand_chip and nandsim structures */
1439 nsmtd = kmalloc(sizeof(struct mtd_info) + sizeof(struct nand_chip) 1514 nsmtd = kzalloc(sizeof(struct mtd_info) + sizeof(struct nand_chip)
1440 + sizeof(struct nandsim), GFP_KERNEL); 1515 + sizeof(struct nandsim), GFP_KERNEL);
1441 if (!nsmtd) { 1516 if (!nsmtd) {
1442 NS_ERR("unable to allocate core structures.\n"); 1517 NS_ERR("unable to allocate core structures.\n");
1443 return -ENOMEM; 1518 return -ENOMEM;
1444 } 1519 }
1445 memset(nsmtd, 0, sizeof(struct mtd_info) + sizeof(struct nand_chip) +
1446 sizeof(struct nandsim));
1447 chip = (struct nand_chip *)(nsmtd + 1); 1520 chip = (struct nand_chip *)(nsmtd + 1);
1448 nsmtd->priv = (void *)chip; 1521 nsmtd->priv = (void *)chip;
1449 nand = (struct nandsim *)(chip + 1); 1522 nand = (struct nandsim *)(chip + 1);
diff --git a/drivers/mtd/nand/ndfc.c b/drivers/mtd/nand/ndfc.c
index 039c759cfbfc..fd7a8d5ba29a 100644
--- a/drivers/mtd/nand/ndfc.c
+++ b/drivers/mtd/nand/ndfc.c
@@ -56,7 +56,7 @@ static void ndfc_select_chip(struct mtd_info *mtd, int chip)
56 ccr |= NDFC_CCR_BS(chip + pchip->chip_offset); 56 ccr |= NDFC_CCR_BS(chip + pchip->chip_offset);
57 } else 57 } else
58 ccr |= NDFC_CCR_RESET_CE; 58 ccr |= NDFC_CCR_RESET_CE;
59 writel(ccr, ndfc->ndfcbase + NDFC_CCR); 59 __raw_writel(ccr, ndfc->ndfcbase + NDFC_CCR);
60} 60}
61 61
62static void ndfc_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl) 62static void ndfc_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
diff --git a/drivers/mtd/nand/rtc_from4.c b/drivers/mtd/nand/rtc_from4.c
index f8c49645324d..9189ec8f243e 100644
--- a/drivers/mtd/nand/rtc_from4.c
+++ b/drivers/mtd/nand/rtc_from4.c
@@ -24,6 +24,7 @@
24#include <linux/init.h> 24#include <linux/init.h>
25#include <linux/slab.h> 25#include <linux/slab.h>
26#include <linux/rslib.h> 26#include <linux/rslib.h>
27#include <linux/bitrev.h>
27#include <linux/module.h> 28#include <linux/module.h>
28#include <linux/mtd/compatmac.h> 29#include <linux/mtd/compatmac.h>
29#include <linux/mtd/mtd.h> 30#include <linux/mtd/mtd.h>
@@ -152,47 +153,6 @@ static struct nand_ecclayout rtc_from4_nand_oobinfo = {
152 .oobfree = {{32, 32}} 153 .oobfree = {{32, 32}}
153}; 154};
154 155
155/* Aargh. I missed the reversed bit order, when I
156 * was talking to Renesas about the FPGA.
157 *
158 * The table is used for bit reordering and inversion
159 * of the ecc byte which we get from the FPGA
160 */
161static uint8_t revbits[256] = {
162 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
163 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
164 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
165 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
166 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
167 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
168 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
169 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
170 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
171 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
172 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
173 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
174 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
175 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
176 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
177 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
178 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
179 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
180 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
181 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
182 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
183 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
184 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
185 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
186 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
187 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
188 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
189 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
190 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
191 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
192 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
193 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff,
194};
195
196#endif 156#endif
197 157
198/* 158/*
@@ -397,7 +357,7 @@ static int rtc_from4_correct_data(struct mtd_info *mtd, const u_char *buf, u_cha
397 /* Read the syndrom pattern from the FPGA and correct the bitorder */ 357 /* Read the syndrom pattern from the FPGA and correct the bitorder */
398 rs_ecc = (volatile unsigned short *)(rtc_from4_fio_base + RTC_FROM4_RS_ECC); 358 rs_ecc = (volatile unsigned short *)(rtc_from4_fio_base + RTC_FROM4_RS_ECC);
399 for (i = 0; i < 8; i++) { 359 for (i = 0; i < 8; i++) {
400 ecc[i] = revbits[(*rs_ecc) & 0xFF]; 360 ecc[i] = bitrev8(*rs_ecc);
401 rs_ecc++; 361 rs_ecc++;
402 } 362 }
403 363
@@ -496,7 +456,7 @@ static int rtc_from4_errstat(struct mtd_info *mtd, struct nand_chip *this,
496 rtn = nand_do_read(mtd, page, len, &retlen, buf); 456 rtn = nand_do_read(mtd, page, len, &retlen, buf);
497 457
498 /* if read failed or > 1-bit error corrected */ 458 /* if read failed or > 1-bit error corrected */
499 if (rtn || (mtd->ecc_stats.corrected - corrected) > 1) { 459 if (rtn || (mtd->ecc_stats.corrected - corrected) > 1)
500 er_stat |= 1 << 1; 460 er_stat |= 1 << 1;
501 kfree(buf); 461 kfree(buf);
502 } 462 }
diff --git a/drivers/mtd/nand/s3c2410.c b/drivers/mtd/nand/s3c2410.c
index ff5cef24d5bb..8b3203571eeb 100644
--- a/drivers/mtd/nand/s3c2410.c
+++ b/drivers/mtd/nand/s3c2410.c
@@ -283,7 +283,7 @@ static void s3c2410_nand_hwcontrol(struct mtd_info *mtd, int cmd,
283 unsigned int ctrl) 283 unsigned int ctrl)
284{ 284{
285 struct s3c2410_nand_info *info = s3c2410_nand_mtd_toinfo(mtd); 285 struct s3c2410_nand_info *info = s3c2410_nand_mtd_toinfo(mtd);
286 286
287 if (cmd == NAND_CMD_NONE) 287 if (cmd == NAND_CMD_NONE)
288 return; 288 return;
289 289
diff --git a/drivers/mtd/nftlcore.c b/drivers/mtd/nftlcore.c
index b5a5f8da4722..4b1ba4fcfcd3 100644
--- a/drivers/mtd/nftlcore.c
+++ b/drivers/mtd/nftlcore.c
@@ -57,17 +57,16 @@ static void nftl_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd)
57 57
58 DEBUG(MTD_DEBUG_LEVEL1, "NFTL: add_mtd for %s\n", mtd->name); 58 DEBUG(MTD_DEBUG_LEVEL1, "NFTL: add_mtd for %s\n", mtd->name);
59 59
60 nftl = kmalloc(sizeof(struct NFTLrecord), GFP_KERNEL); 60 nftl = kzalloc(sizeof(struct NFTLrecord), GFP_KERNEL);
61 61
62 if (!nftl) { 62 if (!nftl) {
63 printk(KERN_WARNING "NFTL: out of memory for data structures\n"); 63 printk(KERN_WARNING "NFTL: out of memory for data structures\n");
64 return; 64 return;
65 } 65 }
66 memset(nftl, 0, sizeof(*nftl));
67 66
68 nftl->mbd.mtd = mtd; 67 nftl->mbd.mtd = mtd;
69 nftl->mbd.devnum = -1; 68 nftl->mbd.devnum = -1;
70 nftl->mbd.blksize = 512; 69
71 nftl->mbd.tr = tr; 70 nftl->mbd.tr = tr;
72 71
73 if (NFTL_mount(nftl) < 0) { 72 if (NFTL_mount(nftl) < 0) {
@@ -147,10 +146,9 @@ int nftl_read_oob(struct mtd_info *mtd, loff_t offs, size_t len,
147 ops.ooblen = len; 146 ops.ooblen = len;
148 ops.oobbuf = buf; 147 ops.oobbuf = buf;
149 ops.datbuf = NULL; 148 ops.datbuf = NULL;
150 ops.len = len;
151 149
152 res = mtd->read_oob(mtd, offs & ~(mtd->writesize - 1), &ops); 150 res = mtd->read_oob(mtd, offs & ~(mtd->writesize - 1), &ops);
153 *retlen = ops.retlen; 151 *retlen = ops.oobretlen;
154 return res; 152 return res;
155} 153}
156 154
@@ -168,10 +166,9 @@ int nftl_write_oob(struct mtd_info *mtd, loff_t offs, size_t len,
168 ops.ooblen = len; 166 ops.ooblen = len;
169 ops.oobbuf = buf; 167 ops.oobbuf = buf;
170 ops.datbuf = NULL; 168 ops.datbuf = NULL;
171 ops.len = len;
172 169
173 res = mtd->write_oob(mtd, offs & ~(mtd->writesize - 1), &ops); 170 res = mtd->write_oob(mtd, offs & ~(mtd->writesize - 1), &ops);
174 *retlen = ops.retlen; 171 *retlen = ops.oobretlen;
175 return res; 172 return res;
176} 173}
177 174
@@ -797,6 +794,7 @@ static struct mtd_blktrans_ops nftl_tr = {
797 .name = "nftl", 794 .name = "nftl",
798 .major = NFTL_MAJOR, 795 .major = NFTL_MAJOR,
799 .part_bits = NFTL_PARTN_BITS, 796 .part_bits = NFTL_PARTN_BITS,
797 .blksize = 512,
800 .getgeo = nftl_getgeo, 798 .getgeo = nftl_getgeo,
801 .readsect = nftl_readblock, 799 .readsect = nftl_readblock,
802#ifdef CONFIG_NFTL_RW 800#ifdef CONFIG_NFTL_RW
diff --git a/drivers/mtd/onenand/generic.c b/drivers/mtd/onenand/generic.c
index af06a80f44de..3d44d040a47d 100644
--- a/drivers/mtd/onenand/generic.c
+++ b/drivers/mtd/onenand/generic.c
@@ -45,12 +45,10 @@ static int __devinit generic_onenand_probe(struct device *dev)
45 unsigned long size = res->end - res->start + 1; 45 unsigned long size = res->end - res->start + 1;
46 int err; 46 int err;
47 47
48 info = kmalloc(sizeof(struct onenand_info), GFP_KERNEL); 48 info = kzalloc(sizeof(struct onenand_info), GFP_KERNEL);
49 if (!info) 49 if (!info)
50 return -ENOMEM; 50 return -ENOMEM;
51 51
52 memset(info, 0, sizeof(struct onenand_info));
53
54 if (!request_mem_region(res->start, size, dev->driver->name)) { 52 if (!request_mem_region(res->start, size, dev->driver->name)) {
55 err = -EBUSY; 53 err = -EBUSY;
56 goto out_free_info; 54 goto out_free_info;
@@ -63,6 +61,7 @@ static int __devinit generic_onenand_probe(struct device *dev)
63 } 61 }
64 62
65 info->onenand.mmcontrol = pdata->mmcontrol; 63 info->onenand.mmcontrol = pdata->mmcontrol;
64 info->onenand.irq = platform_get_irq(pdev, 0);
66 65
67 info->mtd.name = pdev->dev.bus_id; 66 info->mtd.name = pdev->dev.bus_id;
68 info->mtd.priv = &info->onenand; 67 info->mtd.priv = &info->onenand;
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
index 8ed68b28afe3..2da6bb26353e 100644
--- a/drivers/mtd/onenand/onenand_base.c
+++ b/drivers/mtd/onenand/onenand_base.c
@@ -13,6 +13,7 @@
13#include <linux/module.h> 13#include <linux/module.h>
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/sched.h> 15#include <linux/sched.h>
16#include <linux/interrupt.h>
16#include <linux/jiffies.h> 17#include <linux/jiffies.h>
17#include <linux/mtd/mtd.h> 18#include <linux/mtd/mtd.h>
18#include <linux/mtd/onenand.h> 19#include <linux/mtd/onenand.h>
@@ -191,8 +192,6 @@ static int onenand_command(struct mtd_info *mtd, int cmd, loff_t addr, size_t le
191 struct onenand_chip *this = mtd->priv; 192 struct onenand_chip *this = mtd->priv;
192 int value, readcmd = 0, block_cmd = 0; 193 int value, readcmd = 0, block_cmd = 0;
193 int block, page; 194 int block, page;
194 /* Now we use page size operation */
195 int sectors = 4, count = 4;
196 195
197 /* Address translation */ 196 /* Address translation */
198 switch (cmd) { 197 switch (cmd) {
@@ -244,6 +243,8 @@ static int onenand_command(struct mtd_info *mtd, int cmd, loff_t addr, size_t le
244 } 243 }
245 244
246 if (page != -1) { 245 if (page != -1) {
246 /* Now we use page size operation */
247 int sectors = 4, count = 4;
247 int dataram; 248 int dataram;
248 249
249 switch (cmd) { 250 switch (cmd) {
@@ -297,7 +298,7 @@ static int onenand_wait(struct mtd_info *mtd, int state)
297 unsigned long timeout; 298 unsigned long timeout;
298 unsigned int flags = ONENAND_INT_MASTER; 299 unsigned int flags = ONENAND_INT_MASTER;
299 unsigned int interrupt = 0; 300 unsigned int interrupt = 0;
300 unsigned int ctrl, ecc; 301 unsigned int ctrl;
301 302
302 /* The 20 msec is enough */ 303 /* The 20 msec is enough */
303 timeout = jiffies + msecs_to_jiffies(20); 304 timeout = jiffies + msecs_to_jiffies(20);
@@ -309,7 +310,6 @@ static int onenand_wait(struct mtd_info *mtd, int state)
309 310
310 if (state != FL_READING) 311 if (state != FL_READING)
311 cond_resched(); 312 cond_resched();
312 touch_softlockup_watchdog();
313 } 313 }
314 /* To get correct interrupt status in timeout case */ 314 /* To get correct interrupt status in timeout case */
315 interrupt = this->read_word(this->base + ONENAND_REG_INTERRUPT); 315 interrupt = this->read_word(this->base + ONENAND_REG_INTERRUPT);
@@ -317,28 +317,126 @@ static int onenand_wait(struct mtd_info *mtd, int state)
317 ctrl = this->read_word(this->base + ONENAND_REG_CTRL_STATUS); 317 ctrl = this->read_word(this->base + ONENAND_REG_CTRL_STATUS);
318 318
319 if (ctrl & ONENAND_CTRL_ERROR) { 319 if (ctrl & ONENAND_CTRL_ERROR) {
320 /* It maybe occur at initial bad block */
321 DEBUG(MTD_DEBUG_LEVEL0, "onenand_wait: controller error = 0x%04x\n", ctrl); 320 DEBUG(MTD_DEBUG_LEVEL0, "onenand_wait: controller error = 0x%04x\n", ctrl);
322 /* Clear other interrupt bits for preventing ECC error */ 321 if (ctrl & ONENAND_CTRL_LOCK)
323 interrupt &= ONENAND_INT_MASTER; 322 DEBUG(MTD_DEBUG_LEVEL0, "onenand_wait: it's locked error.\n");
324 } 323 return ctrl;
325
326 if (ctrl & ONENAND_CTRL_LOCK) {
327 DEBUG(MTD_DEBUG_LEVEL0, "onenand_wait: it's locked error = 0x%04x\n", ctrl);
328 return -EACCES;
329 } 324 }
330 325
331 if (interrupt & ONENAND_INT_READ) { 326 if (interrupt & ONENAND_INT_READ) {
332 ecc = this->read_word(this->base + ONENAND_REG_ECC_STATUS); 327 int ecc = this->read_word(this->base + ONENAND_REG_ECC_STATUS);
333 if (ecc & ONENAND_ECC_2BIT_ALL) { 328 if (ecc) {
334 DEBUG(MTD_DEBUG_LEVEL0, "onenand_wait: ECC error = 0x%04x\n", ecc); 329 DEBUG(MTD_DEBUG_LEVEL0, "onenand_wait: ECC error = 0x%04x\n", ecc);
335 return -EBADMSG; 330 if (ecc & ONENAND_ECC_2BIT_ALL) {
331 mtd->ecc_stats.failed++;
332 return ecc;
333 } else if (ecc & ONENAND_ECC_1BIT_ALL)
334 mtd->ecc_stats.corrected++;
336 } 335 }
337 } 336 }
338 337
339 return 0; 338 return 0;
340} 339}
341 340
341/*
342 * onenand_interrupt - [DEFAULT] onenand interrupt handler
343 * @param irq onenand interrupt number
344 * @param dev_id interrupt data
345 *
346 * complete the work
347 */
348static irqreturn_t onenand_interrupt(int irq, void *data)
349{
350 struct onenand_chip *this = (struct onenand_chip *) data;
351
352 /* To handle shared interrupt */
353 if (!this->complete.done)
354 complete(&this->complete);
355
356 return IRQ_HANDLED;
357}
358
359/*
360 * onenand_interrupt_wait - [DEFAULT] wait until the command is done
361 * @param mtd MTD device structure
362 * @param state state to select the max. timeout value
363 *
364 * Wait for command done.
365 */
366static int onenand_interrupt_wait(struct mtd_info *mtd, int state)
367{
368 struct onenand_chip *this = mtd->priv;
369
370 wait_for_completion(&this->complete);
371
372 return onenand_wait(mtd, state);
373}
374
375/*
376 * onenand_try_interrupt_wait - [DEFAULT] try interrupt wait
377 * @param mtd MTD device structure
378 * @param state state to select the max. timeout value
379 *
380 * Try interrupt based wait (It is used one-time)
381 */
382static int onenand_try_interrupt_wait(struct mtd_info *mtd, int state)
383{
384 struct onenand_chip *this = mtd->priv;
385 unsigned long remain, timeout;
386
387 /* We use interrupt wait first */
388 this->wait = onenand_interrupt_wait;
389
390 timeout = msecs_to_jiffies(100);
391 remain = wait_for_completion_timeout(&this->complete, timeout);
392 if (!remain) {
393 printk(KERN_INFO "OneNAND: There's no interrupt. "
394 "We use the normal wait\n");
395
396 /* Release the irq */
397 free_irq(this->irq, this);
398
399 this->wait = onenand_wait;
400 }
401
402 return onenand_wait(mtd, state);
403}
404
405/*
406 * onenand_setup_wait - [OneNAND Interface] setup onenand wait method
407 * @param mtd MTD device structure
408 *
409 * There's two method to wait onenand work
410 * 1. polling - read interrupt status register
411 * 2. interrupt - use the kernel interrupt method
412 */
413static void onenand_setup_wait(struct mtd_info *mtd)
414{
415 struct onenand_chip *this = mtd->priv;
416 int syscfg;
417
418 init_completion(&this->complete);
419
420 if (this->irq <= 0) {
421 this->wait = onenand_wait;
422 return;
423 }
424
425 if (request_irq(this->irq, &onenand_interrupt,
426 IRQF_SHARED, "onenand", this)) {
427 /* If we can't get irq, use the normal wait */
428 this->wait = onenand_wait;
429 return;
430 }
431
432 /* Enable interrupt */
433 syscfg = this->read_word(this->base + ONENAND_REG_SYS_CFG1);
434 syscfg |= ONENAND_SYS_CFG1_IOBE;
435 this->write_word(syscfg, this->base + ONENAND_REG_SYS_CFG1);
436
437 this->wait = onenand_try_interrupt_wait;
438}
439
342/** 440/**
343 * onenand_bufferram_offset - [DEFAULT] BufferRAM offset 441 * onenand_bufferram_offset - [DEFAULT] BufferRAM offset
344 * @param mtd MTD data structure 442 * @param mtd MTD data structure
@@ -609,9 +707,10 @@ static int onenand_read(struct mtd_info *mtd, loff_t from, size_t len,
609 size_t *retlen, u_char *buf) 707 size_t *retlen, u_char *buf)
610{ 708{
611 struct onenand_chip *this = mtd->priv; 709 struct onenand_chip *this = mtd->priv;
710 struct mtd_ecc_stats stats;
612 int read = 0, column; 711 int read = 0, column;
613 int thislen; 712 int thislen;
614 int ret = 0; 713 int ret = 0, boundary = 0;
615 714
616 DEBUG(MTD_DEBUG_LEVEL3, "onenand_read: from = 0x%08x, len = %i\n", (unsigned int) from, (int) len); 715 DEBUG(MTD_DEBUG_LEVEL3, "onenand_read: from = 0x%08x, len = %i\n", (unsigned int) from, (int) len);
617 716
@@ -627,38 +726,61 @@ static int onenand_read(struct mtd_info *mtd, loff_t from, size_t len,
627 726
628 /* TODO handling oob */ 727 /* TODO handling oob */
629 728
630 while (read < len) { 729 stats = mtd->ecc_stats;
631 thislen = min_t(int, mtd->writesize, len - read); 730
632 731 /* Read-while-load method */
633 column = from & (mtd->writesize - 1); 732
634 if (column + thislen > mtd->writesize) 733 /* Do first load to bufferRAM */
635 thislen = mtd->writesize - column; 734 if (read < len) {
636 735 if (!onenand_check_bufferram(mtd, from)) {
637 if (!onenand_check_bufferram(mtd, from)) { 736 this->command(mtd, ONENAND_CMD_READ, from, mtd->writesize);
638 this->command(mtd, ONENAND_CMD_READ, from, mtd->writesize); 737 ret = this->wait(mtd, FL_READING);
639 738 onenand_update_bufferram(mtd, from, !ret);
640 ret = this->wait(mtd, FL_READING); 739 }
641 /* First copy data and check return value for ECC handling */ 740 }
642 onenand_update_bufferram(mtd, from, 1); 741
643 } 742 thislen = min_t(int, mtd->writesize, len - read);
644 743 column = from & (mtd->writesize - 1);
645 this->read_bufferram(mtd, ONENAND_DATARAM, buf, column, thislen); 744 if (column + thislen > mtd->writesize)
646 745 thislen = mtd->writesize - column;
647 read += thislen; 746
648 747 while (!ret) {
649 if (read == len) 748 /* If there is more to load then start next load */
650 break; 749 from += thislen;
651 750 if (read + thislen < len) {
652 if (ret) { 751 this->command(mtd, ONENAND_CMD_READ, from, mtd->writesize);
653 DEBUG(MTD_DEBUG_LEVEL0, "onenand_read: read failed = %d\n", ret); 752 /*
654 goto out; 753 * Chip boundary handling in DDP
655 } 754 * Now we issued chip 1 read and pointed chip 1
656 755 * bufferam so we have to point chip 0 bufferam.
657 from += thislen; 756 */
658 buf += thislen; 757 if (this->device_id & ONENAND_DEVICE_IS_DDP &&
659 } 758 unlikely(from == (this->chipsize >> 1))) {
759 this->write_word(0, this->base + ONENAND_REG_START_ADDRESS2);
760 boundary = 1;
761 } else
762 boundary = 0;
763 ONENAND_SET_PREV_BUFFERRAM(this);
764 }
765 /* While load is going, read from last bufferRAM */
766 this->read_bufferram(mtd, ONENAND_DATARAM, buf, column, thislen);
767 /* See if we are done */
768 read += thislen;
769 if (read == len)
770 break;
771 /* Set up for next read from bufferRAM */
772 if (unlikely(boundary))
773 this->write_word(0x8000, this->base + ONENAND_REG_START_ADDRESS2);
774 ONENAND_SET_NEXT_BUFFERRAM(this);
775 buf += thislen;
776 thislen = min_t(int, mtd->writesize, len - read);
777 column = 0;
778 cond_resched();
779 /* Now wait for load */
780 ret = this->wait(mtd, FL_READING);
781 onenand_update_bufferram(mtd, from, !ret);
782 }
660 783
661out:
662 /* Deselect and wake up anyone waiting on the device */ 784 /* Deselect and wake up anyone waiting on the device */
663 onenand_release_device(mtd); 785 onenand_release_device(mtd);
664 786
@@ -668,7 +790,14 @@ out:
668 * retlen == desired len and result == -EBADMSG 790 * retlen == desired len and result == -EBADMSG
669 */ 791 */
670 *retlen = read; 792 *retlen = read;
671 return ret; 793
794 if (mtd->ecc_stats.failed - stats.failed)
795 return -EBADMSG;
796
797 if (ret)
798 return ret;
799
800 return mtd->ecc_stats.corrected - stats.corrected ? -EUCLEAN : 0;
672} 801}
673 802
674/** 803/**
@@ -705,6 +834,8 @@ int onenand_do_read_oob(struct mtd_info *mtd, loff_t from, size_t len,
705 column = from & (mtd->oobsize - 1); 834 column = from & (mtd->oobsize - 1);
706 835
707 while (read < len) { 836 while (read < len) {
837 cond_resched();
838
708 thislen = mtd->oobsize - column; 839 thislen = mtd->oobsize - column;
709 thislen = min_t(int, thislen, len); 840 thislen = min_t(int, thislen, len);
710 841
@@ -717,16 +848,16 @@ int onenand_do_read_oob(struct mtd_info *mtd, loff_t from, size_t len,
717 848
718 this->read_bufferram(mtd, ONENAND_SPARERAM, buf, column, thislen); 849 this->read_bufferram(mtd, ONENAND_SPARERAM, buf, column, thislen);
719 850
851 if (ret) {
852 DEBUG(MTD_DEBUG_LEVEL0, "onenand_read_oob: read failed = 0x%x\n", ret);
853 goto out;
854 }
855
720 read += thislen; 856 read += thislen;
721 857
722 if (read == len) 858 if (read == len)
723 break; 859 break;
724 860
725 if (ret) {
726 DEBUG(MTD_DEBUG_LEVEL0, "onenand_read_oob: read failed = %d\n", ret);
727 goto out;
728 }
729
730 buf += thislen; 861 buf += thislen;
731 862
732 /* Read more? */ 863 /* Read more? */
@@ -756,8 +887,8 @@ static int onenand_read_oob(struct mtd_info *mtd, loff_t from,
756{ 887{
757 BUG_ON(ops->mode != MTD_OOB_PLACE); 888 BUG_ON(ops->mode != MTD_OOB_PLACE);
758 889
759 return onenand_do_read_oob(mtd, from + ops->ooboffs, ops->len, 890 return onenand_do_read_oob(mtd, from + ops->ooboffs, ops->ooblen,
760 &ops->retlen, ops->oobbuf); 891 &ops->oobretlen, ops->oobbuf);
761} 892}
762 893
763#ifdef CONFIG_MTD_ONENAND_VERIFY_WRITE 894#ifdef CONFIG_MTD_ONENAND_VERIFY_WRITE
@@ -804,6 +935,10 @@ static int onenand_verify_page(struct mtd_info *mtd, u_char *buf, loff_t addr)
804 void __iomem *dataram0, *dataram1; 935 void __iomem *dataram0, *dataram1;
805 int ret = 0; 936 int ret = 0;
806 937
938 /* In partial page write, just skip it */
939 if ((addr & (mtd->writesize - 1)) != 0)
940 return 0;
941
807 this->command(mtd, ONENAND_CMD_READ, addr, mtd->writesize); 942 this->command(mtd, ONENAND_CMD_READ, addr, mtd->writesize);
808 943
809 ret = this->wait(mtd, FL_READING); 944 ret = this->wait(mtd, FL_READING);
@@ -826,7 +961,7 @@ static int onenand_verify_page(struct mtd_info *mtd, u_char *buf, loff_t addr)
826#define onenand_verify_oob(...) (0) 961#define onenand_verify_oob(...) (0)
827#endif 962#endif
828 963
829#define NOTALIGNED(x) ((x & (mtd->writesize - 1)) != 0) 964#define NOTALIGNED(x) ((x & (this->subpagesize - 1)) != 0)
830 965
831/** 966/**
832 * onenand_write - [MTD Interface] write buffer to FLASH 967 * onenand_write - [MTD Interface] write buffer to FLASH
@@ -844,6 +979,7 @@ static int onenand_write(struct mtd_info *mtd, loff_t to, size_t len,
844 struct onenand_chip *this = mtd->priv; 979 struct onenand_chip *this = mtd->priv;
845 int written = 0; 980 int written = 0;
846 int ret = 0; 981 int ret = 0;
982 int column, subpage;
847 983
848 DEBUG(MTD_DEBUG_LEVEL3, "onenand_write: to = 0x%08x, len = %i\n", (unsigned int) to, (int) len); 984 DEBUG(MTD_DEBUG_LEVEL3, "onenand_write: to = 0x%08x, len = %i\n", (unsigned int) to, (int) len);
849 985
@@ -862,45 +998,63 @@ static int onenand_write(struct mtd_info *mtd, loff_t to, size_t len,
862 return -EINVAL; 998 return -EINVAL;
863 } 999 }
864 1000
1001 column = to & (mtd->writesize - 1);
1002 subpage = column || (len & (mtd->writesize - 1));
1003
865 /* Grab the lock and see if the device is available */ 1004 /* Grab the lock and see if the device is available */
866 onenand_get_device(mtd, FL_WRITING); 1005 onenand_get_device(mtd, FL_WRITING);
867 1006
868 /* Loop until all data write */ 1007 /* Loop until all data write */
869 while (written < len) { 1008 while (written < len) {
870 int thislen = min_t(int, mtd->writesize, len - written); 1009 int bytes = mtd->writesize;
871 1010 int thislen = min_t(int, bytes, len - written);
872 this->command(mtd, ONENAND_CMD_BUFFERRAM, to, mtd->writesize); 1011 u_char *wbuf = (u_char *) buf;
1012
1013 cond_resched();
1014
1015 this->command(mtd, ONENAND_CMD_BUFFERRAM, to, bytes);
1016
1017 /* Partial page write */
1018 if (subpage) {
1019 bytes = min_t(int, bytes - column, (int) len);
1020 memset(this->page_buf, 0xff, mtd->writesize);
1021 memcpy(this->page_buf + column, buf, bytes);
1022 wbuf = this->page_buf;
1023 /* Even though partial write, we need page size */
1024 thislen = mtd->writesize;
1025 }
873 1026
874 this->write_bufferram(mtd, ONENAND_DATARAM, buf, 0, thislen); 1027 this->write_bufferram(mtd, ONENAND_DATARAM, wbuf, 0, thislen);
875 this->write_bufferram(mtd, ONENAND_SPARERAM, ffchars, 0, mtd->oobsize); 1028 this->write_bufferram(mtd, ONENAND_SPARERAM, ffchars, 0, mtd->oobsize);
876 1029
877 this->command(mtd, ONENAND_CMD_PROG, to, mtd->writesize); 1030 this->command(mtd, ONENAND_CMD_PROG, to, mtd->writesize);
878 1031
879 onenand_update_bufferram(mtd, to, 1); 1032 /* In partial page write we don't update bufferram */
1033 onenand_update_bufferram(mtd, to, !subpage);
880 1034
881 ret = this->wait(mtd, FL_WRITING); 1035 ret = this->wait(mtd, FL_WRITING);
882 if (ret) { 1036 if (ret) {
883 DEBUG(MTD_DEBUG_LEVEL0, "onenand_write: write filaed %d\n", ret); 1037 DEBUG(MTD_DEBUG_LEVEL0, "onenand_write: write filaed %d\n", ret);
884 goto out; 1038 break;
885 } 1039 }
886 1040
887 written += thislen;
888
889 /* Only check verify write turn on */ 1041 /* Only check verify write turn on */
890 ret = onenand_verify_page(mtd, (u_char *) buf, to); 1042 ret = onenand_verify_page(mtd, (u_char *) wbuf, to);
891 if (ret) { 1043 if (ret) {
892 DEBUG(MTD_DEBUG_LEVEL0, "onenand_write: verify failed %d\n", ret); 1044 DEBUG(MTD_DEBUG_LEVEL0, "onenand_write: verify failed %d\n", ret);
893 goto out; 1045 break;
894 } 1046 }
895 1047
1048 written += thislen;
1049
896 if (written == len) 1050 if (written == len)
897 break; 1051 break;
898 1052
1053 column = 0;
899 to += thislen; 1054 to += thislen;
900 buf += thislen; 1055 buf += thislen;
901 } 1056 }
902 1057
903out:
904 /* Deselect and wake up anyone waiting on the device */ 1058 /* Deselect and wake up anyone waiting on the device */
905 onenand_release_device(mtd); 1059 onenand_release_device(mtd);
906 1060
@@ -944,6 +1098,8 @@ static int onenand_do_write_oob(struct mtd_info *mtd, loff_t to, size_t len,
944 while (written < len) { 1098 while (written < len) {
945 int thislen = min_t(int, mtd->oobsize, len - written); 1099 int thislen = min_t(int, mtd->oobsize, len - written);
946 1100
1101 cond_resched();
1102
947 column = to & (mtd->oobsize - 1); 1103 column = to & (mtd->oobsize - 1);
948 1104
949 this->command(mtd, ONENAND_CMD_BUFFERRAM, to, mtd->oobsize); 1105 this->command(mtd, ONENAND_CMD_BUFFERRAM, to, mtd->oobsize);
@@ -999,8 +1155,8 @@ static int onenand_write_oob(struct mtd_info *mtd, loff_t to,
999{ 1155{
1000 BUG_ON(ops->mode != MTD_OOB_PLACE); 1156 BUG_ON(ops->mode != MTD_OOB_PLACE);
1001 1157
1002 return onenand_do_write_oob(mtd, to + ops->ooboffs, ops->len, 1158 return onenand_do_write_oob(mtd, to + ops->ooboffs, ops->ooblen,
1003 &ops->retlen, ops->oobbuf); 1159 &ops->oobretlen, ops->oobbuf);
1004} 1160}
1005 1161
1006/** 1162/**
@@ -1071,6 +1227,7 @@ static int onenand_erase(struct mtd_info *mtd, struct erase_info *instr)
1071 instr->state = MTD_ERASING; 1227 instr->state = MTD_ERASING;
1072 1228
1073 while (len) { 1229 while (len) {
1230 cond_resched();
1074 1231
1075 /* Check if we have a bad block, we do not erase bad blocks */ 1232 /* Check if we have a bad block, we do not erase bad blocks */
1076 if (onenand_block_checkbad(mtd, addr, 0, 0)) { 1233 if (onenand_block_checkbad(mtd, addr, 0, 0)) {
@@ -1084,10 +1241,7 @@ static int onenand_erase(struct mtd_info *mtd, struct erase_info *instr)
1084 ret = this->wait(mtd, FL_ERASING); 1241 ret = this->wait(mtd, FL_ERASING);
1085 /* Check, if it is write protected */ 1242 /* Check, if it is write protected */
1086 if (ret) { 1243 if (ret) {
1087 if (ret == -EPERM) 1244 DEBUG(MTD_DEBUG_LEVEL0, "onenand_erase: Failed erase, block %d\n", (unsigned) (addr >> this->erase_shift));
1088 DEBUG(MTD_DEBUG_LEVEL0, "onenand_erase: Device is write protected!!!\n");
1089 else
1090 DEBUG(MTD_DEBUG_LEVEL0, "onenand_erase: Failed erase, block %d\n", (unsigned) (addr >> this->erase_shift));
1091 instr->state = MTD_ERASE_FAILED; 1245 instr->state = MTD_ERASE_FAILED;
1092 instr->fail_addr = addr; 1246 instr->fail_addr = addr;
1093 goto erase_exit; 1247 goto erase_exit;
@@ -1129,7 +1283,6 @@ static void onenand_sync(struct mtd_info *mtd)
1129 onenand_release_device(mtd); 1283 onenand_release_device(mtd);
1130} 1284}
1131 1285
1132
1133/** 1286/**
1134 * onenand_block_isbad - [MTD Interface] Check whether the block at the given offset is bad 1287 * onenand_block_isbad - [MTD Interface] Check whether the block at the given offset is bad
1135 * @param mtd MTD device structure 1288 * @param mtd MTD device structure
@@ -1196,32 +1349,38 @@ static int onenand_block_markbad(struct mtd_info *mtd, loff_t ofs)
1196} 1349}
1197 1350
1198/** 1351/**
1199 * onenand_unlock - [MTD Interface] Unlock block(s) 1352 * onenand_do_lock_cmd - [OneNAND Interface] Lock or unlock block(s)
1200 * @param mtd MTD device structure 1353 * @param mtd MTD device structure
1201 * @param ofs offset relative to mtd start 1354 * @param ofs offset relative to mtd start
1202 * @param len number of bytes to unlock 1355 * @param len number of bytes to lock or unlock
1203 * 1356 *
1204 * Unlock one or more blocks 1357 * Lock or unlock one or more blocks
1205 */ 1358 */
1206static int onenand_unlock(struct mtd_info *mtd, loff_t ofs, size_t len) 1359static int onenand_do_lock_cmd(struct mtd_info *mtd, loff_t ofs, size_t len, int cmd)
1207{ 1360{
1208 struct onenand_chip *this = mtd->priv; 1361 struct onenand_chip *this = mtd->priv;
1209 int start, end, block, value, status; 1362 int start, end, block, value, status;
1363 int wp_status_mask;
1210 1364
1211 start = ofs >> this->erase_shift; 1365 start = ofs >> this->erase_shift;
1212 end = len >> this->erase_shift; 1366 end = len >> this->erase_shift;
1213 1367
1368 if (cmd == ONENAND_CMD_LOCK)
1369 wp_status_mask = ONENAND_WP_LS;
1370 else
1371 wp_status_mask = ONENAND_WP_US;
1372
1214 /* Continuous lock scheme */ 1373 /* Continuous lock scheme */
1215 if (this->options & ONENAND_HAS_CONT_LOCK) { 1374 if (this->options & ONENAND_HAS_CONT_LOCK) {
1216 /* Set start block address */ 1375 /* Set start block address */
1217 this->write_word(start, this->base + ONENAND_REG_START_BLOCK_ADDRESS); 1376 this->write_word(start, this->base + ONENAND_REG_START_BLOCK_ADDRESS);
1218 /* Set end block address */ 1377 /* Set end block address */
1219 this->write_word(start + end - 1, this->base + ONENAND_REG_END_BLOCK_ADDRESS); 1378 this->write_word(start + end - 1, this->base + ONENAND_REG_END_BLOCK_ADDRESS);
1220 /* Write unlock command */ 1379 /* Write lock command */
1221 this->command(mtd, ONENAND_CMD_UNLOCK, 0, 0); 1380 this->command(mtd, cmd, 0, 0);
1222 1381
1223 /* There's no return value */ 1382 /* There's no return value */
1224 this->wait(mtd, FL_UNLOCKING); 1383 this->wait(mtd, FL_LOCKING);
1225 1384
1226 /* Sanity check */ 1385 /* Sanity check */
1227 while (this->read_word(this->base + ONENAND_REG_CTRL_STATUS) 1386 while (this->read_word(this->base + ONENAND_REG_CTRL_STATUS)
@@ -1230,7 +1389,7 @@ static int onenand_unlock(struct mtd_info *mtd, loff_t ofs, size_t len)
1230 1389
1231 /* Check lock status */ 1390 /* Check lock status */
1232 status = this->read_word(this->base + ONENAND_REG_WP_STATUS); 1391 status = this->read_word(this->base + ONENAND_REG_WP_STATUS);
1233 if (!(status & ONENAND_WP_US)) 1392 if (!(status & wp_status_mask))
1234 printk(KERN_ERR "wp status = 0x%x\n", status); 1393 printk(KERN_ERR "wp status = 0x%x\n", status);
1235 1394
1236 return 0; 1395 return 0;
@@ -1246,11 +1405,11 @@ static int onenand_unlock(struct mtd_info *mtd, loff_t ofs, size_t len)
1246 this->write_word(value, this->base + ONENAND_REG_START_ADDRESS2); 1405 this->write_word(value, this->base + ONENAND_REG_START_ADDRESS2);
1247 /* Set start block address */ 1406 /* Set start block address */
1248 this->write_word(block, this->base + ONENAND_REG_START_BLOCK_ADDRESS); 1407 this->write_word(block, this->base + ONENAND_REG_START_BLOCK_ADDRESS);
1249 /* Write unlock command */ 1408 /* Write lock command */
1250 this->command(mtd, ONENAND_CMD_UNLOCK, 0, 0); 1409 this->command(mtd, cmd, 0, 0);
1251 1410
1252 /* There's no return value */ 1411 /* There's no return value */
1253 this->wait(mtd, FL_UNLOCKING); 1412 this->wait(mtd, FL_LOCKING);
1254 1413
1255 /* Sanity check */ 1414 /* Sanity check */
1256 while (this->read_word(this->base + ONENAND_REG_CTRL_STATUS) 1415 while (this->read_word(this->base + ONENAND_REG_CTRL_STATUS)
@@ -1259,7 +1418,7 @@ static int onenand_unlock(struct mtd_info *mtd, loff_t ofs, size_t len)
1259 1418
1260 /* Check lock status */ 1419 /* Check lock status */
1261 status = this->read_word(this->base + ONENAND_REG_WP_STATUS); 1420 status = this->read_word(this->base + ONENAND_REG_WP_STATUS);
1262 if (!(status & ONENAND_WP_US)) 1421 if (!(status & wp_status_mask))
1263 printk(KERN_ERR "block = %d, wp status = 0x%x\n", block, status); 1422 printk(KERN_ERR "block = %d, wp status = 0x%x\n", block, status);
1264 } 1423 }
1265 1424
@@ -1267,6 +1426,32 @@ static int onenand_unlock(struct mtd_info *mtd, loff_t ofs, size_t len)
1267} 1426}
1268 1427
1269/** 1428/**
1429 * onenand_lock - [MTD Interface] Lock block(s)
1430 * @param mtd MTD device structure
1431 * @param ofs offset relative to mtd start
1432 * @param len number of bytes to unlock
1433 *
1434 * Lock one or more blocks
1435 */
1436static int onenand_lock(struct mtd_info *mtd, loff_t ofs, size_t len)
1437{
1438 return onenand_do_lock_cmd(mtd, ofs, len, ONENAND_CMD_LOCK);
1439}
1440
1441/**
1442 * onenand_unlock - [MTD Interface] Unlock block(s)
1443 * @param mtd MTD device structure
1444 * @param ofs offset relative to mtd start
1445 * @param len number of bytes to unlock
1446 *
1447 * Unlock one or more blocks
1448 */
1449static int onenand_unlock(struct mtd_info *mtd, loff_t ofs, size_t len)
1450{
1451 return onenand_do_lock_cmd(mtd, ofs, len, ONENAND_CMD_UNLOCK);
1452}
1453
1454/**
1270 * onenand_check_lock_status - [OneNAND Interface] Check lock status 1455 * onenand_check_lock_status - [OneNAND Interface] Check lock status
1271 * @param this onenand chip data structure 1456 * @param this onenand chip data structure
1272 * 1457 *
@@ -1310,7 +1495,7 @@ static int onenand_unlock_all(struct mtd_info *mtd)
1310 this->command(mtd, ONENAND_CMD_UNLOCK_ALL, 0, 0); 1495 this->command(mtd, ONENAND_CMD_UNLOCK_ALL, 0, 0);
1311 1496
1312 /* There's no return value */ 1497 /* There's no return value */
1313 this->wait(mtd, FL_UNLOCKING); 1498 this->wait(mtd, FL_LOCKING);
1314 1499
1315 /* Sanity check */ 1500 /* Sanity check */
1316 while (this->read_word(this->base + ONENAND_REG_CTRL_STATUS) 1501 while (this->read_word(this->base + ONENAND_REG_CTRL_STATUS)
@@ -1334,7 +1519,7 @@ static int onenand_unlock_all(struct mtd_info *mtd)
1334 return 0; 1519 return 0;
1335 } 1520 }
1336 1521
1337 mtd->unlock(mtd, 0x0, this->chipsize); 1522 onenand_unlock(mtd, 0x0, this->chipsize);
1338 1523
1339 return 0; 1524 return 0;
1340} 1525}
@@ -1762,7 +1947,7 @@ static int onenand_probe(struct mtd_info *mtd)
1762 /* Read manufacturer and device IDs from Register */ 1947 /* Read manufacturer and device IDs from Register */
1763 maf_id = this->read_word(this->base + ONENAND_REG_MANUFACTURER_ID); 1948 maf_id = this->read_word(this->base + ONENAND_REG_MANUFACTURER_ID);
1764 dev_id = this->read_word(this->base + ONENAND_REG_DEVICE_ID); 1949 dev_id = this->read_word(this->base + ONENAND_REG_DEVICE_ID);
1765 ver_id= this->read_word(this->base + ONENAND_REG_VERSION_ID); 1950 ver_id = this->read_word(this->base + ONENAND_REG_VERSION_ID);
1766 1951
1767 /* Check OneNAND device */ 1952 /* Check OneNAND device */
1768 if (maf_id != bram_maf_id || dev_id != bram_dev_id) 1953 if (maf_id != bram_maf_id || dev_id != bram_dev_id)
@@ -1846,7 +2031,7 @@ int onenand_scan(struct mtd_info *mtd, int maxchips)
1846 if (!this->command) 2031 if (!this->command)
1847 this->command = onenand_command; 2032 this->command = onenand_command;
1848 if (!this->wait) 2033 if (!this->wait)
1849 this->wait = onenand_wait; 2034 onenand_setup_wait(mtd);
1850 2035
1851 if (!this->read_bufferram) 2036 if (!this->read_bufferram)
1852 this->read_bufferram = onenand_read_bufferram; 2037 this->read_bufferram = onenand_read_bufferram;
@@ -1883,23 +2068,30 @@ int onenand_scan(struct mtd_info *mtd, int maxchips)
1883 init_waitqueue_head(&this->wq); 2068 init_waitqueue_head(&this->wq);
1884 spin_lock_init(&this->chip_lock); 2069 spin_lock_init(&this->chip_lock);
1885 2070
2071 /*
2072 * Allow subpage writes up to oobsize.
2073 */
1886 switch (mtd->oobsize) { 2074 switch (mtd->oobsize) {
1887 case 64: 2075 case 64:
1888 this->ecclayout = &onenand_oob_64; 2076 this->ecclayout = &onenand_oob_64;
2077 mtd->subpage_sft = 2;
1889 break; 2078 break;
1890 2079
1891 case 32: 2080 case 32:
1892 this->ecclayout = &onenand_oob_32; 2081 this->ecclayout = &onenand_oob_32;
2082 mtd->subpage_sft = 1;
1893 break; 2083 break;
1894 2084
1895 default: 2085 default:
1896 printk(KERN_WARNING "No OOB scheme defined for oobsize %d\n", 2086 printk(KERN_WARNING "No OOB scheme defined for oobsize %d\n",
1897 mtd->oobsize); 2087 mtd->oobsize);
2088 mtd->subpage_sft = 0;
1898 /* To prevent kernel oops */ 2089 /* To prevent kernel oops */
1899 this->ecclayout = &onenand_oob_32; 2090 this->ecclayout = &onenand_oob_32;
1900 break; 2091 break;
1901 } 2092 }
1902 2093
2094 this->subpagesize = mtd->writesize >> mtd->subpage_sft;
1903 mtd->ecclayout = this->ecclayout; 2095 mtd->ecclayout = this->ecclayout;
1904 2096
1905 /* Fill in remaining MTD driver data */ 2097 /* Fill in remaining MTD driver data */
@@ -1922,7 +2114,7 @@ int onenand_scan(struct mtd_info *mtd, int maxchips)
1922 mtd->lock_user_prot_reg = onenand_lock_user_prot_reg; 2114 mtd->lock_user_prot_reg = onenand_lock_user_prot_reg;
1923#endif 2115#endif
1924 mtd->sync = onenand_sync; 2116 mtd->sync = onenand_sync;
1925 mtd->lock = NULL; 2117 mtd->lock = onenand_lock;
1926 mtd->unlock = onenand_unlock; 2118 mtd->unlock = onenand_unlock;
1927 mtd->suspend = onenand_suspend; 2119 mtd->suspend = onenand_suspend;
1928 mtd->resume = onenand_resume; 2120 mtd->resume = onenand_resume;
diff --git a/drivers/mtd/onenand/onenand_bbt.c b/drivers/mtd/onenand/onenand_bbt.c
index 1b00dac3d7d6..98f8fd1c6375 100644
--- a/drivers/mtd/onenand/onenand_bbt.c
+++ b/drivers/mtd/onenand/onenand_bbt.c
@@ -93,13 +93,15 @@ static int create_bbt(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_descr
93 ret = onenand_do_read_oob(mtd, from + j * mtd->writesize + bd->offs, 93 ret = onenand_do_read_oob(mtd, from + j * mtd->writesize + bd->offs,
94 readlen, &retlen, &buf[0]); 94 readlen, &retlen, &buf[0]);
95 95
96 if (ret) 96 /* If it is a initial bad block, just ignore it */
97 if (ret && !(ret & ONENAND_CTRL_LOAD))
97 return ret; 98 return ret;
98 99
99 if (check_short_pattern(&buf[j * scanlen], scanlen, mtd->writesize, bd)) { 100 if (check_short_pattern(&buf[j * scanlen], scanlen, mtd->writesize, bd)) {
100 bbm->bbt[i >> 3] |= 0x03 << (i & 0x6); 101 bbm->bbt[i >> 3] |= 0x03 << (i & 0x6);
101 printk(KERN_WARNING "Bad eraseblock %d at 0x%08x\n", 102 printk(KERN_WARNING "Bad eraseblock %d at 0x%08x\n",
102 i >> 1, (unsigned int) from); 103 i >> 1, (unsigned int) from);
104 mtd->ecc_stats.badblocks++;
103 break; 105 break;
104 } 106 }
105 } 107 }
@@ -177,14 +179,12 @@ int onenand_scan_bbt(struct mtd_info *mtd, struct nand_bbt_descr *bd)
177 int len, ret = 0; 179 int len, ret = 0;
178 180
179 len = mtd->size >> (this->erase_shift + 2); 181 len = mtd->size >> (this->erase_shift + 2);
180 /* Allocate memory (2bit per block) */ 182 /* Allocate memory (2bit per block) and clear the memory bad block table */
181 bbm->bbt = kmalloc(len, GFP_KERNEL); 183 bbm->bbt = kzalloc(len, GFP_KERNEL);
182 if (!bbm->bbt) { 184 if (!bbm->bbt) {
183 printk(KERN_ERR "onenand_scan_bbt: Out of memory\n"); 185 printk(KERN_ERR "onenand_scan_bbt: Out of memory\n");
184 return -ENOMEM; 186 return -ENOMEM;
185 } 187 }
186 /* Clear the memory bad block table */
187 memset(bbm->bbt, 0x00, len);
188 188
189 /* Set the bad block position */ 189 /* Set the bad block position */
190 bbm->badblockpos = ONENAND_BADBLOCK_POS; 190 bbm->badblockpos = ONENAND_BADBLOCK_POS;
@@ -230,14 +230,12 @@ int onenand_default_bbt(struct mtd_info *mtd)
230 struct onenand_chip *this = mtd->priv; 230 struct onenand_chip *this = mtd->priv;
231 struct bbm_info *bbm; 231 struct bbm_info *bbm;
232 232
233 this->bbm = kmalloc(sizeof(struct bbm_info), GFP_KERNEL); 233 this->bbm = kzalloc(sizeof(struct bbm_info), GFP_KERNEL);
234 if (!this->bbm) 234 if (!this->bbm)
235 return -ENOMEM; 235 return -ENOMEM;
236 236
237 bbm = this->bbm; 237 bbm = this->bbm;
238 238
239 memset(bbm, 0, sizeof(struct bbm_info));
240
241 /* 1KB page has same configuration as 2KB page */ 239 /* 1KB page has same configuration as 2KB page */
242 if (!bbm->badblock_pattern) 240 if (!bbm->badblock_pattern)
243 bbm->badblock_pattern = &largepage_memorybased; 241 bbm->badblock_pattern = &largepage_memorybased;
diff --git a/drivers/mtd/redboot.c b/drivers/mtd/redboot.c
index 5b58523e4d4e..035cd9b0cc08 100644
--- a/drivers/mtd/redboot.c
+++ b/drivers/mtd/redboot.c
@@ -96,7 +96,19 @@ static int parse_redboot_partitions(struct mtd_info *master,
96 */ 96 */
97 if (swab32(buf[i].size) == master->erasesize) { 97 if (swab32(buf[i].size) == master->erasesize) {
98 int j; 98 int j;
99 for (j = 0; j < numslots && buf[j].name[0] != 0xff; ++j) { 99 for (j = 0; j < numslots; ++j) {
100
101 /* A single 0xff denotes a deleted entry.
102 * Two of them in a row is the end of the table.
103 */
104 if (buf[j].name[0] == 0xff) {
105 if (buf[j].name[1] == 0xff) {
106 break;
107 } else {
108 continue;
109 }
110 }
111
100 /* The unsigned long fields were written with the 112 /* The unsigned long fields were written with the
101 * wrong byte sex, name and pad have no byte sex. 113 * wrong byte sex, name and pad have no byte sex.
102 */ 114 */
@@ -110,6 +122,9 @@ static int parse_redboot_partitions(struct mtd_info *master,
110 } 122 }
111 } 123 }
112 break; 124 break;
125 } else {
126 /* re-calculate of real numslots */
127 numslots = buf[i].size / sizeof(struct fis_image_desc);
113 } 128 }
114 } 129 }
115 if (i == numslots) { 130 if (i == numslots) {
@@ -123,8 +138,13 @@ static int parse_redboot_partitions(struct mtd_info *master,
123 for (i = 0; i < numslots; i++) { 138 for (i = 0; i < numslots; i++) {
124 struct fis_list *new_fl, **prev; 139 struct fis_list *new_fl, **prev;
125 140
126 if (buf[i].name[0] == 0xff) 141 if (buf[i].name[0] == 0xff) {
127 continue; 142 if (buf[i].name[1] == 0xff) {
143 break;
144 } else {
145 continue;
146 }
147 }
128 if (!redboot_checksum(&buf[i])) 148 if (!redboot_checksum(&buf[i]))
129 break; 149 break;
130 150
@@ -165,15 +185,13 @@ static int parse_redboot_partitions(struct mtd_info *master,
165 } 185 }
166 } 186 }
167#endif 187#endif
168 parts = kmalloc(sizeof(*parts)*nrparts + nulllen + namelen, GFP_KERNEL); 188 parts = kzalloc(sizeof(*parts)*nrparts + nulllen + namelen, GFP_KERNEL);
169 189
170 if (!parts) { 190 if (!parts) {
171 ret = -ENOMEM; 191 ret = -ENOMEM;
172 goto out; 192 goto out;
173 } 193 }
174 194
175 memset(parts, 0, sizeof(*parts)*nrparts + nulllen + namelen);
176
177 nullname = (char *)&parts[nrparts]; 195 nullname = (char *)&parts[nrparts];
178#ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED 196#ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
179 if (nulllen > 0) { 197 if (nulllen > 0) {
diff --git a/drivers/mtd/rfd_ftl.c b/drivers/mtd/rfd_ftl.c
index 0f3baa5d9c2a..d4b1ba8f23ef 100644
--- a/drivers/mtd/rfd_ftl.c
+++ b/drivers/mtd/rfd_ftl.c
@@ -787,7 +787,6 @@ static void rfd_ftl_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd)
787 787
788 if (scan_header(part) == 0) { 788 if (scan_header(part) == 0) {
789 part->mbd.size = part->sector_count; 789 part->mbd.size = part->sector_count;
790 part->mbd.blksize = SECTOR_SIZE;
791 part->mbd.tr = tr; 790 part->mbd.tr = tr;
792 part->mbd.devnum = -1; 791 part->mbd.devnum = -1;
793 if (!(mtd->flags & MTD_WRITEABLE)) 792 if (!(mtd->flags & MTD_WRITEABLE))
@@ -829,6 +828,8 @@ struct mtd_blktrans_ops rfd_ftl_tr = {
829 .name = "rfd", 828 .name = "rfd",
830 .major = RFD_FTL_MAJOR, 829 .major = RFD_FTL_MAJOR,
831 .part_bits = PART_BITS, 830 .part_bits = PART_BITS,
831 .blksize = SECTOR_SIZE,
832
832 .readsect = rfd_ftl_readsect, 833 .readsect = rfd_ftl_readsect,
833 .writesect = rfd_ftl_writesect, 834 .writesect = rfd_ftl_writesect,
834 .getgeo = rfd_ftl_getgeo, 835 .getgeo = rfd_ftl_getgeo,
diff --git a/drivers/mtd/ssfdc.c b/drivers/mtd/ssfdc.c
index 79d3bb659bfe..a5f3d60047d4 100644
--- a/drivers/mtd/ssfdc.c
+++ b/drivers/mtd/ssfdc.c
@@ -172,13 +172,12 @@ static int read_raw_oob(struct mtd_info *mtd, loff_t offs, uint8_t *buf)
172 172
173 ops.mode = MTD_OOB_RAW; 173 ops.mode = MTD_OOB_RAW;
174 ops.ooboffs = 0; 174 ops.ooboffs = 0;
175 ops.ooblen = mtd->oobsize; 175 ops.ooblen = OOB_SIZE;
176 ops.len = OOB_SIZE;
177 ops.oobbuf = buf; 176 ops.oobbuf = buf;
178 ops.datbuf = NULL; 177 ops.datbuf = NULL;
179 178
180 ret = mtd->read_oob(mtd, offs, &ops); 179 ret = mtd->read_oob(mtd, offs, &ops);
181 if (ret < 0 || ops.retlen != OOB_SIZE) 180 if (ret < 0 || ops.oobretlen != OOB_SIZE)
182 return -1; 181 return -1;
183 182
184 return 0; 183 return 0;
@@ -312,7 +311,6 @@ static void ssfdcr_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd)
312 311
313 ssfdc->mbd.mtd = mtd; 312 ssfdc->mbd.mtd = mtd;
314 ssfdc->mbd.devnum = -1; 313 ssfdc->mbd.devnum = -1;
315 ssfdc->mbd.blksize = SECTOR_SIZE;
316 ssfdc->mbd.tr = tr; 314 ssfdc->mbd.tr = tr;
317 ssfdc->mbd.readonly = 1; 315 ssfdc->mbd.readonly = 1;
318 316
@@ -447,6 +445,7 @@ static struct mtd_blktrans_ops ssfdcr_tr = {
447 .name = "ssfdc", 445 .name = "ssfdc",
448 .major = SSFDCR_MAJOR, 446 .major = SSFDCR_MAJOR,
449 .part_bits = SSFDCR_PARTN_BITS, 447 .part_bits = SSFDCR_PARTN_BITS,
448 .blksize = SECTOR_SIZE,
450 .getgeo = ssfdcr_getgeo, 449 .getgeo = ssfdcr_getgeo,
451 .readsect = ssfdcr_readsect, 450 .readsect = ssfdcr_readsect,
452 .add_mtd = ssfdcr_add_mtd, 451 .add_mtd = ssfdcr_add_mtd,
diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c
index e2cb19b582a1..6f93a765e564 100644
--- a/drivers/net/8139cp.c
+++ b/drivers/net/8139cp.c
@@ -765,17 +765,18 @@ static int cp_start_xmit (struct sk_buff *skb, struct net_device *dev)
765 struct cp_private *cp = netdev_priv(dev); 765 struct cp_private *cp = netdev_priv(dev);
766 unsigned entry; 766 unsigned entry;
767 u32 eor, flags; 767 u32 eor, flags;
768 unsigned long intr_flags;
768#if CP_VLAN_TAG_USED 769#if CP_VLAN_TAG_USED
769 u32 vlan_tag = 0; 770 u32 vlan_tag = 0;
770#endif 771#endif
771 int mss = 0; 772 int mss = 0;
772 773
773 spin_lock_irq(&cp->lock); 774 spin_lock_irqsave(&cp->lock, intr_flags);
774 775
775 /* This is a hard error, log it. */ 776 /* This is a hard error, log it. */
776 if (TX_BUFFS_AVAIL(cp) <= (skb_shinfo(skb)->nr_frags + 1)) { 777 if (TX_BUFFS_AVAIL(cp) <= (skb_shinfo(skb)->nr_frags + 1)) {
777 netif_stop_queue(dev); 778 netif_stop_queue(dev);
778 spin_unlock_irq(&cp->lock); 779 spin_unlock_irqrestore(&cp->lock, intr_flags);
779 printk(KERN_ERR PFX "%s: BUG! Tx Ring full when queue awake!\n", 780 printk(KERN_ERR PFX "%s: BUG! Tx Ring full when queue awake!\n",
780 dev->name); 781 dev->name);
781 return 1; 782 return 1;
@@ -908,7 +909,7 @@ static int cp_start_xmit (struct sk_buff *skb, struct net_device *dev)
908 if (TX_BUFFS_AVAIL(cp) <= (MAX_SKB_FRAGS + 1)) 909 if (TX_BUFFS_AVAIL(cp) <= (MAX_SKB_FRAGS + 1))
909 netif_stop_queue(dev); 910 netif_stop_queue(dev);
910 911
911 spin_unlock_irq(&cp->lock); 912 spin_unlock_irqrestore(&cp->lock, intr_flags);
912 913
913 cpw8(TxPoll, NormalTxPoll); 914 cpw8(TxPoll, NormalTxPoll);
914 dev->trans_start = jiffies; 915 dev->trans_start = jiffies;
diff --git a/drivers/net/ehea/ehea.h b/drivers/net/ehea/ehea.h
index 39ad9f73d1ec..be10a3a26b5b 100644
--- a/drivers/net/ehea/ehea.h
+++ b/drivers/net/ehea/ehea.h
@@ -39,7 +39,7 @@
39#include <asm/io.h> 39#include <asm/io.h>
40 40
41#define DRV_NAME "ehea" 41#define DRV_NAME "ehea"
42#define DRV_VERSION "EHEA_0043" 42#define DRV_VERSION "EHEA_0044"
43 43
44#define EHEA_MSG_DEFAULT (NETIF_MSG_LINK | NETIF_MSG_TIMER \ 44#define EHEA_MSG_DEFAULT (NETIF_MSG_LINK | NETIF_MSG_TIMER \
45 | NETIF_MSG_RX_ERR | NETIF_MSG_TX_ERR) 45 | NETIF_MSG_RX_ERR | NETIF_MSG_TX_ERR)
diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c
index 83fa32f72398..1072e69ef85d 100644
--- a/drivers/net/ehea/ehea_main.c
+++ b/drivers/net/ehea/ehea_main.c
@@ -558,12 +558,12 @@ static irqreturn_t ehea_qp_aff_irq_handler(int irq, void *param)
558 u32 qp_token; 558 u32 qp_token;
559 559
560 eqe = ehea_poll_eq(port->qp_eq); 560 eqe = ehea_poll_eq(port->qp_eq);
561 ehea_debug("eqe=%p", eqe); 561
562 while (eqe) { 562 while (eqe) {
563 ehea_debug("*eqe=%lx", *(u64*)eqe);
564 eqe = ehea_poll_eq(port->qp_eq);
565 qp_token = EHEA_BMASK_GET(EHEA_EQE_QP_TOKEN, eqe->entry); 563 qp_token = EHEA_BMASK_GET(EHEA_EQE_QP_TOKEN, eqe->entry);
566 ehea_debug("next eqe=%p", eqe); 564 ehea_error("QP aff_err: entry=0x%lx, token=0x%x",
565 eqe->entry, qp_token);
566 eqe = ehea_poll_eq(port->qp_eq);
567 } 567 }
568 568
569 return IRQ_HANDLED; 569 return IRQ_HANDLED;
@@ -575,8 +575,9 @@ static struct ehea_port *ehea_get_port(struct ehea_adapter *adapter,
575 int i; 575 int i;
576 576
577 for (i = 0; i < adapter->num_ports; i++) 577 for (i = 0; i < adapter->num_ports; i++)
578 if (adapter->port[i]->logical_port_id == logical_port) 578 if (adapter->port[i])
579 return adapter->port[i]; 579 if (adapter->port[i]->logical_port_id == logical_port)
580 return adapter->port[i];
580 return NULL; 581 return NULL;
581} 582}
582 583
@@ -642,6 +643,8 @@ int ehea_sense_port_attr(struct ehea_port *port)
642 break; 643 break;
643 } 644 }
644 645
646 port->autoneg = 1;
647
645 /* Number of default QPs */ 648 /* Number of default QPs */
646 port->num_def_qps = cb0->num_default_qps; 649 port->num_def_qps = cb0->num_default_qps;
647 650
@@ -728,10 +731,7 @@ int ehea_set_portspeed(struct ehea_port *port, u32 port_speed)
728 } 731 }
729 } else { 732 } else {
730 if (hret == H_AUTHORITY) { 733 if (hret == H_AUTHORITY) {
731 ehea_info("Hypervisor denied setting port speed. Either" 734 ehea_info("Hypervisor denied setting port speed");
732 " this partition is not authorized to set "
733 "port speed or another partition has modified"
734 " port speed first.");
735 ret = -EPERM; 735 ret = -EPERM;
736 } else { 736 } else {
737 ret = -EIO; 737 ret = -EIO;
@@ -998,7 +998,7 @@ static int ehea_configure_port(struct ehea_port *port)
998 | EHEA_BMASK_SET(PXLY_RC_JUMBO_FRAME, 1); 998 | EHEA_BMASK_SET(PXLY_RC_JUMBO_FRAME, 1);
999 999
1000 for (i = 0; i < port->num_def_qps; i++) 1000 for (i = 0; i < port->num_def_qps; i++)
1001 cb0->default_qpn_arr[i] = port->port_res[i].qp->init_attr.qp_nr; 1001 cb0->default_qpn_arr[i] = port->port_res[0].qp->init_attr.qp_nr;
1002 1002
1003 if (netif_msg_ifup(port)) 1003 if (netif_msg_ifup(port))
1004 ehea_dump(cb0, sizeof(*cb0), "ehea_configure_port"); 1004 ehea_dump(cb0, sizeof(*cb0), "ehea_configure_port");
@@ -1485,11 +1485,12 @@ out:
1485 1485
1486static void ehea_promiscuous_error(u64 hret, int enable) 1486static void ehea_promiscuous_error(u64 hret, int enable)
1487{ 1487{
1488 ehea_info("Hypervisor denied %sabling promiscuous mode.%s", 1488 if (hret == H_AUTHORITY)
1489 enable == 1 ? "en" : "dis", 1489 ehea_info("Hypervisor denied %sabling promiscuous mode",
1490 hret != H_AUTHORITY ? "" : " Another partition owning a " 1490 enable == 1 ? "en" : "dis");
1491 "logical port on the same physical port might have altered " 1491 else
1492 "promiscuous mode first."); 1492 ehea_error("failed %sabling promiscuous mode",
1493 enable == 1 ? "en" : "dis");
1493} 1494}
1494 1495
1495static void ehea_promiscuous(struct net_device *dev, int enable) 1496static void ehea_promiscuous(struct net_device *dev, int enable)
@@ -2267,6 +2268,8 @@ static void ehea_tx_watchdog(struct net_device *dev)
2267int ehea_sense_adapter_attr(struct ehea_adapter *adapter) 2268int ehea_sense_adapter_attr(struct ehea_adapter *adapter)
2268{ 2269{
2269 struct hcp_query_ehea *cb; 2270 struct hcp_query_ehea *cb;
2271 struct device_node *lhea_dn = NULL;
2272 struct device_node *eth_dn = NULL;
2270 u64 hret; 2273 u64 hret;
2271 int ret; 2274 int ret;
2272 2275
@@ -2283,7 +2286,18 @@ int ehea_sense_adapter_attr(struct ehea_adapter *adapter)
2283 goto out_herr; 2286 goto out_herr;
2284 } 2287 }
2285 2288
2286 adapter->num_ports = cb->num_ports; 2289 /* Determine the number of available logical ports
2290 * by counting the child nodes of the lhea OFDT entry
2291 */
2292 adapter->num_ports = 0;
2293 lhea_dn = of_find_node_by_name(lhea_dn, "lhea");
2294 do {
2295 eth_dn = of_get_next_child(lhea_dn, eth_dn);
2296 if (eth_dn)
2297 adapter->num_ports++;
2298 } while ( eth_dn );
2299 of_node_put(lhea_dn);
2300
2287 adapter->max_mc_mac = cb->max_mc_mac - 1; 2301 adapter->max_mc_mac = cb->max_mc_mac - 1;
2288 ret = 0; 2302 ret = 0;
2289 2303
@@ -2334,8 +2348,6 @@ static int ehea_setup_single_port(struct ehea_port *port,
2334 2348
2335 INIT_LIST_HEAD(&port->mc_list->list); 2349 INIT_LIST_HEAD(&port->mc_list->list);
2336 2350
2337 ehea_set_portspeed(port, EHEA_SPEED_AUTONEG);
2338
2339 ret = ehea_sense_port_attr(port); 2351 ret = ehea_sense_port_attr(port);
2340 if (ret) 2352 if (ret)
2341 goto out; 2353 goto out;
@@ -2471,14 +2483,16 @@ static int __devinit ehea_probe(struct ibmebus_dev *dev,
2471 2483
2472 adapter_handle = (u64*)get_property(dev->ofdev.node, "ibm,hea-handle", 2484 adapter_handle = (u64*)get_property(dev->ofdev.node, "ibm,hea-handle",
2473 NULL); 2485 NULL);
2474 if (!adapter_handle) { 2486 if (adapter_handle)
2487 adapter->handle = *adapter_handle;
2488
2489 if (!adapter->handle) {
2475 dev_err(&dev->ofdev.dev, "failed getting handle for adapter" 2490 dev_err(&dev->ofdev.dev, "failed getting handle for adapter"
2476 " '%s'\n", dev->ofdev.node->full_name); 2491 " '%s'\n", dev->ofdev.node->full_name);
2477 ret = -ENODEV; 2492 ret = -ENODEV;
2478 goto out_free_ad; 2493 goto out_free_ad;
2479 } 2494 }
2480 2495
2481 adapter->handle = *adapter_handle;
2482 adapter->pd = EHEA_PD_ID; 2496 adapter->pd = EHEA_PD_ID;
2483 2497
2484 dev->ofdev.dev.driver_data = adapter; 2498 dev->ofdev.dev.driver_data = adapter;
diff --git a/drivers/net/ehea/ehea_phyp.c b/drivers/net/ehea/ehea_phyp.c
index 0cfc2bc1a27b..37716e05e808 100644
--- a/drivers/net/ehea/ehea_phyp.c
+++ b/drivers/net/ehea/ehea_phyp.c
@@ -94,6 +94,7 @@ static long ehea_plpar_hcall9(unsigned long opcode,
94{ 94{
95 long ret; 95 long ret;
96 int i, sleep_msecs; 96 int i, sleep_msecs;
97 u8 cb_cat;
97 98
98 for (i = 0; i < 5; i++) { 99 for (i = 0; i < 5; i++) {
99 ret = plpar_hcall9(opcode, outs, 100 ret = plpar_hcall9(opcode, outs,
@@ -106,7 +107,13 @@ static long ehea_plpar_hcall9(unsigned long opcode,
106 continue; 107 continue;
107 } 108 }
108 109
109 if (ret < H_SUCCESS) 110 cb_cat = EHEA_BMASK_GET(H_MEHEAPORT_CAT, arg2);
111
112 if ((ret < H_SUCCESS) && !(((ret == H_AUTHORITY)
113 && (opcode == H_MODIFY_HEA_PORT))
114 && (((cb_cat == H_PORT_CB4) && ((arg3 == H_PORT_CB4_JUMBO)
115 || (arg3 == H_PORT_CB4_SPEED))) || ((cb_cat == H_PORT_CB7)
116 && (arg3 == H_PORT_CB7_DUCQPN)))))
110 ehea_error("opcode=%lx ret=%lx" 117 ehea_error("opcode=%lx ret=%lx"
111 " arg1=%lx arg2=%lx arg3=%lx arg4=%lx" 118 " arg1=%lx arg2=%lx arg3=%lx arg4=%lx"
112 " arg5=%lx arg6=%lx arg7=%lx arg8=%lx" 119 " arg5=%lx arg6=%lx arg7=%lx arg8=%lx"
@@ -120,7 +127,6 @@ static long ehea_plpar_hcall9(unsigned long opcode,
120 outs[0], outs[1], outs[2], outs[3], 127 outs[0], outs[1], outs[2], outs[3],
121 outs[4], outs[5], outs[6], outs[7], 128 outs[4], outs[5], outs[6], outs[7],
122 outs[8]); 129 outs[8]);
123
124 return ret; 130 return ret;
125 } 131 }
126 132
diff --git a/drivers/net/irda/irda-usb.c b/drivers/net/irda/irda-usb.c
index 3ca1082ec776..340ee99652eb 100644
--- a/drivers/net/irda/irda-usb.c
+++ b/drivers/net/irda/irda-usb.c
@@ -441,25 +441,13 @@ static int irda_usb_hard_xmit(struct sk_buff *skb, struct net_device *netdev)
441 goto drop; 441 goto drop;
442 } 442 }
443 443
444 /* Make sure there is room for IrDA-USB header. The actual 444 memcpy(self->tx_buff + self->header_length, skb->data, skb->len);
445 * allocation will be done lower in skb_push().
446 * Also, we don't use directly skb_cow(), because it require
447 * headroom >= 16, which force unnecessary copies - Jean II */
448 if (skb_headroom(skb) < self->header_length) {
449 IRDA_DEBUG(0, "%s(), Insuficient skb headroom.\n", __FUNCTION__);
450 if (skb_cow(skb, self->header_length)) {
451 IRDA_WARNING("%s(), failed skb_cow() !!!\n", __FUNCTION__);
452 goto drop;
453 }
454 }
455 445
456 /* Change setting for next frame */ 446 /* Change setting for next frame */
457
458 if (self->capability & IUC_STIR421X) { 447 if (self->capability & IUC_STIR421X) {
459 __u8 turnaround_time; 448 __u8 turnaround_time;
460 __u8* frame; 449 __u8* frame = self->tx_buff;
461 turnaround_time = get_turnaround_time( skb ); 450 turnaround_time = get_turnaround_time( skb );
462 frame= skb_push(skb, self->header_length);
463 irda_usb_build_header(self, frame, 0); 451 irda_usb_build_header(self, frame, 0);
464 frame[2] = turnaround_time; 452 frame[2] = turnaround_time;
465 if ((skb->len != 0) && 453 if ((skb->len != 0) &&
@@ -472,17 +460,17 @@ static int irda_usb_hard_xmit(struct sk_buff *skb, struct net_device *netdev)
472 frame[1] = 0; 460 frame[1] = 0;
473 } 461 }
474 } else { 462 } else {
475 irda_usb_build_header(self, skb_push(skb, self->header_length), 0); 463 irda_usb_build_header(self, self->tx_buff, 0);
476 } 464 }
477 465
478 /* FIXME: Make macro out of this one */ 466 /* FIXME: Make macro out of this one */
479 ((struct irda_skb_cb *)skb->cb)->context = self; 467 ((struct irda_skb_cb *)skb->cb)->context = self;
480 468
481 usb_fill_bulk_urb(urb, self->usbdev, 469 usb_fill_bulk_urb(urb, self->usbdev,
482 usb_sndbulkpipe(self->usbdev, self->bulk_out_ep), 470 usb_sndbulkpipe(self->usbdev, self->bulk_out_ep),
483 skb->data, IRDA_SKB_MAX_MTU, 471 self->tx_buff, skb->len + self->header_length,
484 write_bulk_callback, skb); 472 write_bulk_callback, skb);
485 urb->transfer_buffer_length = skb->len; 473
486 /* This flag (URB_ZERO_PACKET) indicates that what we send is not 474 /* This flag (URB_ZERO_PACKET) indicates that what we send is not
487 * a continuous stream of data but separate packets. 475 * a continuous stream of data but separate packets.
488 * In this case, the USB layer will insert an empty USB frame (TD) 476 * In this case, the USB layer will insert an empty USB frame (TD)
@@ -1455,6 +1443,9 @@ static inline void irda_usb_close(struct irda_usb_cb *self)
1455 /* Remove the speed buffer */ 1443 /* Remove the speed buffer */
1456 kfree(self->speed_buff); 1444 kfree(self->speed_buff);
1457 self->speed_buff = NULL; 1445 self->speed_buff = NULL;
1446
1447 kfree(self->tx_buff);
1448 self->tx_buff = NULL;
1458} 1449}
1459 1450
1460/********************** USB CONFIG SUBROUTINES **********************/ 1451/********************** USB CONFIG SUBROUTINES **********************/
@@ -1524,8 +1515,6 @@ static inline int irda_usb_parse_endpoints(struct irda_usb_cb *self, struct usb_
1524 1515
1525 IRDA_DEBUG(0, "%s(), And our endpoints are : in=%02X, out=%02X (%d), int=%02X\n", 1516 IRDA_DEBUG(0, "%s(), And our endpoints are : in=%02X, out=%02X (%d), int=%02X\n",
1526 __FUNCTION__, self->bulk_in_ep, self->bulk_out_ep, self->bulk_out_mtu, self->bulk_int_ep); 1517 __FUNCTION__, self->bulk_in_ep, self->bulk_out_ep, self->bulk_out_mtu, self->bulk_int_ep);
1527 /* Should be 8, 16, 32 or 64 bytes */
1528 IRDA_ASSERT(self->bulk_out_mtu == 64, ;);
1529 1518
1530 return((self->bulk_in_ep != 0) && (self->bulk_out_ep != 0)); 1519 return((self->bulk_in_ep != 0) && (self->bulk_out_ep != 0));
1531} 1520}
@@ -1753,9 +1742,14 @@ static int irda_usb_probe(struct usb_interface *intf,
1753 1742
1754 memset(self->speed_buff, 0, IRDA_USB_SPEED_MTU); 1743 memset(self->speed_buff, 0, IRDA_USB_SPEED_MTU);
1755 1744
1745 self->tx_buff = kzalloc(IRDA_SKB_MAX_MTU + self->header_length,
1746 GFP_KERNEL);
1747 if (self->tx_buff == NULL)
1748 goto err_out_4;
1749
1756 ret = irda_usb_open(self); 1750 ret = irda_usb_open(self);
1757 if (ret) 1751 if (ret)
1758 goto err_out_4; 1752 goto err_out_5;
1759 1753
1760 IRDA_MESSAGE("IrDA: Registered device %s\n", net->name); 1754 IRDA_MESSAGE("IrDA: Registered device %s\n", net->name);
1761 usb_set_intfdata(intf, self); 1755 usb_set_intfdata(intf, self);
@@ -1766,14 +1760,14 @@ static int irda_usb_probe(struct usb_interface *intf,
1766 self->needspatch = (ret < 0); 1760 self->needspatch = (ret < 0);
1767 if (self->needspatch) { 1761 if (self->needspatch) {
1768 IRDA_ERROR("STIR421X: Couldn't upload patch\n"); 1762 IRDA_ERROR("STIR421X: Couldn't upload patch\n");
1769 goto err_out_5; 1763 goto err_out_6;
1770 } 1764 }
1771 1765
1772 /* replace IrDA class descriptor with what patched device is now reporting */ 1766 /* replace IrDA class descriptor with what patched device is now reporting */
1773 irda_desc = irda_usb_find_class_desc (self->usbintf); 1767 irda_desc = irda_usb_find_class_desc (self->usbintf);
1774 if (irda_desc == NULL) { 1768 if (irda_desc == NULL) {
1775 ret = -ENODEV; 1769 ret = -ENODEV;
1776 goto err_out_5; 1770 goto err_out_6;
1777 } 1771 }
1778 if (self->irda_desc) 1772 if (self->irda_desc)
1779 kfree (self->irda_desc); 1773 kfree (self->irda_desc);
@@ -1782,9 +1776,10 @@ static int irda_usb_probe(struct usb_interface *intf,
1782 } 1776 }
1783 1777
1784 return 0; 1778 return 0;
1785 1779err_out_6:
1786err_out_5:
1787 unregister_netdev(self->netdev); 1780 unregister_netdev(self->netdev);
1781err_out_5:
1782 kfree(self->tx_buff);
1788err_out_4: 1783err_out_4:
1789 kfree(self->speed_buff); 1784 kfree(self->speed_buff);
1790err_out_3: 1785err_out_3:
diff --git a/drivers/net/irda/irda-usb.h b/drivers/net/irda/irda-usb.h
index 6b2271f18e77..e846c38224a3 100644
--- a/drivers/net/irda/irda-usb.h
+++ b/drivers/net/irda/irda-usb.h
@@ -156,6 +156,7 @@ struct irda_usb_cb {
156 struct irlap_cb *irlap; /* The link layer we are binded to */ 156 struct irlap_cb *irlap; /* The link layer we are binded to */
157 struct qos_info qos; 157 struct qos_info qos;
158 char *speed_buff; /* Buffer for speed changes */ 158 char *speed_buff; /* Buffer for speed changes */
159 char *tx_buff;
159 160
160 struct timeval stamp; 161 struct timeval stamp;
161 struct timeval now; 162 struct timeval now;
diff --git a/drivers/net/irda/stir4200.c b/drivers/net/irda/stir4200.c
index c14a74634fd5..20d306fea4cb 100644
--- a/drivers/net/irda/stir4200.c
+++ b/drivers/net/irda/stir4200.c
@@ -59,7 +59,7 @@
59#include <asm/byteorder.h> 59#include <asm/byteorder.h>
60#include <asm/unaligned.h> 60#include <asm/unaligned.h>
61 61
62MODULE_AUTHOR("Stephen Hemminger <shemminger@osdl.org>"); 62MODULE_AUTHOR("Stephen Hemminger <shemminger@linux-foundation.org>");
63MODULE_DESCRIPTION("IrDA-USB Dongle Driver for SigmaTel STIr4200"); 63MODULE_DESCRIPTION("IrDA-USB Dongle Driver for SigmaTel STIr4200");
64MODULE_LICENSE("GPL"); 64MODULE_LICENSE("GPL");
65 65
diff --git a/drivers/net/irda/vlsi_ir.c b/drivers/net/irda/vlsi_ir.c
index 18c68193bf14..e2b1af618450 100644
--- a/drivers/net/irda/vlsi_ir.c
+++ b/drivers/net/irda/vlsi_ir.c
@@ -166,7 +166,7 @@ static void vlsi_proc_pdev(struct seq_file *seq, struct pci_dev *pdev)
166 unsigned i; 166 unsigned i;
167 167
168 seq_printf(seq, "\n%s (vid/did: %04x/%04x)\n", 168 seq_printf(seq, "\n%s (vid/did: %04x/%04x)\n",
169 PCIDEV_NAME(pdev), (int)pdev->vendor, (int)pdev->device); 169 pci_name(pdev), (int)pdev->vendor, (int)pdev->device);
170 seq_printf(seq, "pci-power-state: %u\n", (unsigned) pdev->current_state); 170 seq_printf(seq, "pci-power-state: %u\n", (unsigned) pdev->current_state);
171 seq_printf(seq, "resources: irq=%u / io=0x%04x / dma_mask=0x%016Lx\n", 171 seq_printf(seq, "resources: irq=%u / io=0x%04x / dma_mask=0x%016Lx\n",
172 pdev->irq, (unsigned)pci_resource_start(pdev, 0), (unsigned long long)pdev->dma_mask); 172 pdev->irq, (unsigned)pci_resource_start(pdev, 0), (unsigned long long)pdev->dma_mask);
@@ -1401,7 +1401,7 @@ static void vlsi_tx_timeout(struct net_device *ndev)
1401 1401
1402 if (vlsi_start_hw(idev)) 1402 if (vlsi_start_hw(idev))
1403 IRDA_ERROR("%s: failed to restart hw - %s(%s) unusable!\n", 1403 IRDA_ERROR("%s: failed to restart hw - %s(%s) unusable!\n",
1404 __FUNCTION__, PCIDEV_NAME(idev->pdev), ndev->name); 1404 __FUNCTION__, pci_name(idev->pdev), ndev->name);
1405 else 1405 else
1406 netif_start_queue(ndev); 1406 netif_start_queue(ndev);
1407} 1407}
@@ -1643,7 +1643,7 @@ vlsi_irda_probe(struct pci_dev *pdev, const struct pci_device_id *id)
1643 pdev->current_state = 0; /* hw must be running now */ 1643 pdev->current_state = 0; /* hw must be running now */
1644 1644
1645 IRDA_MESSAGE("%s: IrDA PCI controller %s detected\n", 1645 IRDA_MESSAGE("%s: IrDA PCI controller %s detected\n",
1646 drivername, PCIDEV_NAME(pdev)); 1646 drivername, pci_name(pdev));
1647 1647
1648 if ( !pci_resource_start(pdev,0) 1648 if ( !pci_resource_start(pdev,0)
1649 || !(pci_resource_flags(pdev,0) & IORESOURCE_IO) ) { 1649 || !(pci_resource_flags(pdev,0) & IORESOURCE_IO) ) {
@@ -1728,7 +1728,7 @@ static void __devexit vlsi_irda_remove(struct pci_dev *pdev)
1728 1728
1729 pci_set_drvdata(pdev, NULL); 1729 pci_set_drvdata(pdev, NULL);
1730 1730
1731 IRDA_MESSAGE("%s: %s removed\n", drivername, PCIDEV_NAME(pdev)); 1731 IRDA_MESSAGE("%s: %s removed\n", drivername, pci_name(pdev));
1732} 1732}
1733 1733
1734#ifdef CONFIG_PM 1734#ifdef CONFIG_PM
@@ -1748,7 +1748,7 @@ static int vlsi_irda_suspend(struct pci_dev *pdev, pm_message_t state)
1748 1748
1749 if (!ndev) { 1749 if (!ndev) {
1750 IRDA_ERROR("%s - %s: no netdevice \n", 1750 IRDA_ERROR("%s - %s: no netdevice \n",
1751 __FUNCTION__, PCIDEV_NAME(pdev)); 1751 __FUNCTION__, pci_name(pdev));
1752 return 0; 1752 return 0;
1753 } 1753 }
1754 idev = ndev->priv; 1754 idev = ndev->priv;
@@ -1759,7 +1759,7 @@ static int vlsi_irda_suspend(struct pci_dev *pdev, pm_message_t state)
1759 pdev->current_state = state.event; 1759 pdev->current_state = state.event;
1760 } 1760 }
1761 else 1761 else
1762 IRDA_ERROR("%s - %s: invalid suspend request %u -> %u\n", __FUNCTION__, PCIDEV_NAME(pdev), pdev->current_state, state.event); 1762 IRDA_ERROR("%s - %s: invalid suspend request %u -> %u\n", __FUNCTION__, pci_name(pdev), pdev->current_state, state.event);
1763 up(&idev->sem); 1763 up(&idev->sem);
1764 return 0; 1764 return 0;
1765 } 1765 }
@@ -1787,7 +1787,7 @@ static int vlsi_irda_resume(struct pci_dev *pdev)
1787 1787
1788 if (!ndev) { 1788 if (!ndev) {
1789 IRDA_ERROR("%s - %s: no netdevice \n", 1789 IRDA_ERROR("%s - %s: no netdevice \n",
1790 __FUNCTION__, PCIDEV_NAME(pdev)); 1790 __FUNCTION__, pci_name(pdev));
1791 return 0; 1791 return 0;
1792 } 1792 }
1793 idev = ndev->priv; 1793 idev = ndev->priv;
@@ -1795,7 +1795,7 @@ static int vlsi_irda_resume(struct pci_dev *pdev)
1795 if (pdev->current_state == 0) { 1795 if (pdev->current_state == 0) {
1796 up(&idev->sem); 1796 up(&idev->sem);
1797 IRDA_WARNING("%s - %s: already resumed\n", 1797 IRDA_WARNING("%s - %s: already resumed\n",
1798 __FUNCTION__, PCIDEV_NAME(pdev)); 1798 __FUNCTION__, pci_name(pdev));
1799 return 0; 1799 return 0;
1800 } 1800 }
1801 1801
diff --git a/drivers/net/irda/vlsi_ir.h b/drivers/net/irda/vlsi_ir.h
index c37f0bc4c7f9..2d3b773d8e35 100644
--- a/drivers/net/irda/vlsi_ir.h
+++ b/drivers/net/irda/vlsi_ir.h
@@ -41,39 +41,6 @@
41#define PCI_CLASS_SUBCLASS_MASK 0xffff 41#define PCI_CLASS_SUBCLASS_MASK 0xffff
42#endif 42#endif
43 43
44/* in recent 2.5 interrupt handlers have non-void return value */
45#ifndef IRQ_RETVAL
46typedef void irqreturn_t;
47#define IRQ_NONE
48#define IRQ_HANDLED
49#define IRQ_RETVAL(x)
50#endif
51
52/* some stuff need to check kernelversion. Not all 2.5 stuff was present
53 * in early 2.5.x - the test is merely to separate 2.4 from 2.5
54 */
55#include <linux/version.h>
56
57#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
58
59/* PDE() introduced in 2.5.4 */
60#ifdef CONFIG_PROC_FS
61#define PDE(inode) ((inode)->i_private)
62#endif
63
64/* irda crc16 calculation exported in 2.5.42 */
65#define irda_calc_crc16(fcs,buf,len) (GOOD_FCS)
66
67/* we use this for unified pci device name access */
68#define PCIDEV_NAME(pdev) ((pdev)->name)
69
70#else /* 2.5 or later */
71
72/* whatever we get from the associated struct device - bus:slot:dev.fn id */
73#define PCIDEV_NAME(pdev) (pci_name(pdev))
74
75#endif
76
77/* ================================================================ */ 44/* ================================================================ */
78 45
79/* non-standard PCI registers */ 46/* non-standard PCI registers */
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index 07cf574197e5..61cbd4a60446 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -71,7 +71,7 @@
71#include "myri10ge_mcp.h" 71#include "myri10ge_mcp.h"
72#include "myri10ge_mcp_gen_header.h" 72#include "myri10ge_mcp_gen_header.h"
73 73
74#define MYRI10GE_VERSION_STR "1.1.0" 74#define MYRI10GE_VERSION_STR "1.2.0"
75 75
76MODULE_DESCRIPTION("Myricom 10G driver (10GbE)"); 76MODULE_DESCRIPTION("Myricom 10G driver (10GbE)");
77MODULE_AUTHOR("Maintainer: help@myri.com"); 77MODULE_AUTHOR("Maintainer: help@myri.com");
@@ -274,6 +274,10 @@ static int myri10ge_fill_thresh = 256;
274module_param(myri10ge_fill_thresh, int, S_IRUGO | S_IWUSR); 274module_param(myri10ge_fill_thresh, int, S_IRUGO | S_IWUSR);
275MODULE_PARM_DESC(myri10ge_fill_thresh, "Number of empty rx slots allowed\n"); 275MODULE_PARM_DESC(myri10ge_fill_thresh, "Number of empty rx slots allowed\n");
276 276
277static int myri10ge_wcfifo = 1;
278module_param(myri10ge_wcfifo, int, S_IRUGO);
279MODULE_PARM_DESC(myri10ge_wcfifo, "Enable WC Fifo when WC is enabled\n");
280
277#define MYRI10GE_FW_OFFSET 1024*1024 281#define MYRI10GE_FW_OFFSET 1024*1024
278#define MYRI10GE_HIGHPART_TO_U32(X) \ 282#define MYRI10GE_HIGHPART_TO_U32(X) \
279(sizeof (X) == 8) ? ((u32)((u64)(X) >> 32)) : (0) 283(sizeof (X) == 8) ? ((u32)((u64)(X) >> 32)) : (0)
@@ -1714,7 +1718,7 @@ static int myri10ge_open(struct net_device *dev)
1714 goto abort_with_irq; 1718 goto abort_with_irq;
1715 } 1719 }
1716 1720
1717 if (mgp->mtrr >= 0) { 1721 if (myri10ge_wcfifo && mgp->mtrr >= 0) {
1718 mgp->tx.wc_fifo = (u8 __iomem *) mgp->sram + MXGEFW_ETH_SEND_4; 1722 mgp->tx.wc_fifo = (u8 __iomem *) mgp->sram + MXGEFW_ETH_SEND_4;
1719 mgp->rx_small.wc_fifo = 1723 mgp->rx_small.wc_fifo =
1720 (u8 __iomem *) mgp->sram + MXGEFW_ETH_RECV_SMALL; 1724 (u8 __iomem *) mgp->sram + MXGEFW_ETH_RECV_SMALL;
@@ -2878,7 +2882,6 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2878 netdev->hard_start_xmit = myri10ge_xmit; 2882 netdev->hard_start_xmit = myri10ge_xmit;
2879 netdev->get_stats = myri10ge_get_stats; 2883 netdev->get_stats = myri10ge_get_stats;
2880 netdev->base_addr = mgp->iomem_base; 2884 netdev->base_addr = mgp->iomem_base;
2881 netdev->irq = pdev->irq;
2882 netdev->change_mtu = myri10ge_change_mtu; 2885 netdev->change_mtu = myri10ge_change_mtu;
2883 netdev->set_multicast_list = myri10ge_set_multicast_list; 2886 netdev->set_multicast_list = myri10ge_set_multicast_list;
2884 netdev->set_mac_address = myri10ge_set_mac_address; 2887 netdev->set_mac_address = myri10ge_set_mac_address;
@@ -2888,6 +2891,15 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2888 netdev->poll = myri10ge_poll; 2891 netdev->poll = myri10ge_poll;
2889 netdev->weight = myri10ge_napi_weight; 2892 netdev->weight = myri10ge_napi_weight;
2890 2893
2894 /* make sure we can get an irq, and that MSI can be
2895 * setup (if available). Also ensure netdev->irq
2896 * is set to correct value if MSI is enabled */
2897 status = myri10ge_request_irq(mgp);
2898 if (status != 0)
2899 goto abort_with_firmware;
2900 netdev->irq = pdev->irq;
2901 myri10ge_free_irq(mgp);
2902
2891 /* Save configuration space to be restored if the 2903 /* Save configuration space to be restored if the
2892 * nic resets due to a parity error */ 2904 * nic resets due to a parity error */
2893 pci_save_state(pdev); 2905 pci_save_state(pdev);
@@ -2903,8 +2915,9 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2903 dev_err(&pdev->dev, "register_netdev failed: %d\n", status); 2915 dev_err(&pdev->dev, "register_netdev failed: %d\n", status);
2904 goto abort_with_state; 2916 goto abort_with_state;
2905 } 2917 }
2906 dev_info(dev, "%d, tx bndry %d, fw %s, WC %s\n", 2918 dev_info(dev, "%s IRQ %d, tx bndry %d, fw %s, WC %s\n",
2907 pdev->irq, mgp->tx.boundary, mgp->fw_name, 2919 (mgp->msi_enabled ? "MSI" : "xPIC"),
2920 netdev->irq, mgp->tx.boundary, mgp->fw_name,
2908 (mgp->mtrr >= 0 ? "Enabled" : "Disabled")); 2921 (mgp->mtrr >= 0 ? "Enabled" : "Disabled"));
2909 2922
2910 return 0; 2923 return 0;
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h
index 6490acf05305..59324b1693d6 100644
--- a/drivers/net/netxen/netxen_nic.h
+++ b/drivers/net/netxen/netxen_nic.h
@@ -63,12 +63,11 @@
63 63
64#include "netxen_nic_hw.h" 64#include "netxen_nic_hw.h"
65 65
66#define NETXEN_NIC_BUILD_NO "4" 66#define NETXEN_NIC_BUILD_NO "2"
67#define _NETXEN_NIC_LINUX_MAJOR 3 67#define _NETXEN_NIC_LINUX_MAJOR 3
68#define _NETXEN_NIC_LINUX_MINOR 3 68#define _NETXEN_NIC_LINUX_MINOR 3
69#define _NETXEN_NIC_LINUX_SUBVERSION 2 69#define _NETXEN_NIC_LINUX_SUBVERSION 3
70#define NETXEN_NIC_LINUX_VERSIONID "3.3.2" "-" NETXEN_NIC_BUILD_NO 70#define NETXEN_NIC_LINUX_VERSIONID "3.3.3" "-" NETXEN_NIC_BUILD_NO
71#define NETXEN_NIC_FW_VERSIONID "3.3.2"
72 71
73#define RCV_DESC_RINGSIZE \ 72#define RCV_DESC_RINGSIZE \
74 (sizeof(struct rcv_desc) * adapter->max_rx_desc_count) 73 (sizeof(struct rcv_desc) * adapter->max_rx_desc_count)
diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c
index c0c31d1914a7..191e2336e323 100644
--- a/drivers/net/netxen/netxen_nic_hw.c
+++ b/drivers/net/netxen/netxen_nic_hw.c
@@ -984,7 +984,8 @@ void netxen_nic_flash_print(struct netxen_adapter *adapter)
984 _NETXEN_NIC_LINUX_MAJOR, fw_major); 984 _NETXEN_NIC_LINUX_MAJOR, fw_major);
985 adapter->driver_mismatch = 1; 985 adapter->driver_mismatch = 1;
986 } 986 }
987 if (fw_minor != _NETXEN_NIC_LINUX_MINOR) { 987 if (fw_minor != _NETXEN_NIC_LINUX_MINOR &&
988 fw_minor != (_NETXEN_NIC_LINUX_MINOR + 1)) {
988 printk(KERN_ERR "The mismatch in driver version and firmware " 989 printk(KERN_ERR "The mismatch in driver version and firmware "
989 "version minor number\n" 990 "version minor number\n"
990 "Driver version minor number = %d \t" 991 "Driver version minor number = %d \t"
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c
index 8a5792fea774..96e1bee19ba0 100644
--- a/drivers/net/netxen/netxen_nic_main.c
+++ b/drivers/net/netxen/netxen_nic_main.c
@@ -1144,7 +1144,7 @@ static int __init netxen_init_module(void)
1144 if ((netxen_workq = create_singlethread_workqueue("netxen")) == 0) 1144 if ((netxen_workq = create_singlethread_workqueue("netxen")) == 0)
1145 return -ENOMEM; 1145 return -ENOMEM;
1146 1146
1147 return pci_module_init(&netxen_driver); 1147 return pci_register_driver(&netxen_driver);
1148} 1148}
1149 1149
1150module_init(netxen_init_module); 1150module_init(netxen_init_module);
diff --git a/drivers/net/pcmcia/3c589_cs.c b/drivers/net/pcmcia/3c589_cs.c
index 342f4062de0b..461e8274ef69 100644
--- a/drivers/net/pcmcia/3c589_cs.c
+++ b/drivers/net/pcmcia/3c589_cs.c
@@ -606,11 +606,14 @@ static int el3_start_xmit(struct sk_buff *skb, struct net_device *dev)
606{ 606{
607 kio_addr_t ioaddr = dev->base_addr; 607 kio_addr_t ioaddr = dev->base_addr;
608 struct el3_private *priv = netdev_priv(dev); 608 struct el3_private *priv = netdev_priv(dev);
609 unsigned long flags;
609 610
610 DEBUG(3, "%s: el3_start_xmit(length = %ld) called, " 611 DEBUG(3, "%s: el3_start_xmit(length = %ld) called, "
611 "status %4.4x.\n", dev->name, (long)skb->len, 612 "status %4.4x.\n", dev->name, (long)skb->len,
612 inw(ioaddr + EL3_STATUS)); 613 inw(ioaddr + EL3_STATUS));
613 614
615 spin_lock_irqsave(&priv->lock, flags);
616
614 priv->stats.tx_bytes += skb->len; 617 priv->stats.tx_bytes += skb->len;
615 618
616 /* Put out the doubleword header... */ 619 /* Put out the doubleword header... */
@@ -628,6 +631,7 @@ static int el3_start_xmit(struct sk_buff *skb, struct net_device *dev)
628 631
629 dev_kfree_skb(skb); 632 dev_kfree_skb(skb);
630 pop_tx_status(dev); 633 pop_tx_status(dev);
634 spin_unlock_irqrestore(&priv->lock, flags);
631 635
632 return 0; 636 return 0;
633} 637}
@@ -729,14 +733,13 @@ static void media_check(unsigned long arg)
729 733
730 if (!netif_device_present(dev)) goto reschedule; 734 if (!netif_device_present(dev)) goto reschedule;
731 735
732 EL3WINDOW(1);
733 /* Check for pending interrupt with expired latency timer: with 736 /* Check for pending interrupt with expired latency timer: with
734 this, we can limp along even if the interrupt is blocked */ 737 this, we can limp along even if the interrupt is blocked */
735 if ((inw(ioaddr + EL3_STATUS) & IntLatch) && 738 if ((inw(ioaddr + EL3_STATUS) & IntLatch) &&
736 (inb(ioaddr + EL3_TIMER) == 0xff)) { 739 (inb(ioaddr + EL3_TIMER) == 0xff)) {
737 if (!lp->fast_poll) 740 if (!lp->fast_poll)
738 printk(KERN_WARNING "%s: interrupt(s) dropped!\n", dev->name); 741 printk(KERN_WARNING "%s: interrupt(s) dropped!\n", dev->name);
739 el3_interrupt(dev->irq, lp); 742 el3_interrupt(dev->irq, dev);
740 lp->fast_poll = HZ; 743 lp->fast_poll = HZ;
741 } 744 }
742 if (lp->fast_poll) { 745 if (lp->fast_poll) {
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index e175f3910b18..9765fa661467 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -286,6 +286,7 @@ int phy_ethtool_sset(struct phy_device *phydev, struct ethtool_cmd *cmd)
286 286
287 return 0; 287 return 0;
288} 288}
289EXPORT_SYMBOL(phy_ethtool_sset);
289 290
290int phy_ethtool_gset(struct phy_device *phydev, struct ethtool_cmd *cmd) 291int phy_ethtool_gset(struct phy_device *phydev, struct ethtool_cmd *cmd)
291{ 292{
@@ -302,7 +303,7 @@ int phy_ethtool_gset(struct phy_device *phydev, struct ethtool_cmd *cmd)
302 303
303 return 0; 304 return 0;
304} 305}
305 306EXPORT_SYMBOL(phy_ethtool_gset);
306 307
307/* Note that this function is currently incompatible with the 308/* Note that this function is currently incompatible with the
308 * PHYCONTROL layer. It changes registers without regard to 309 * PHYCONTROL layer. It changes registers without regard to
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
index 250cdbeefdfd..1dd66b8ea0fa 100644
--- a/drivers/net/s2io.c
+++ b/drivers/net/s2io.c
@@ -556,10 +556,9 @@ static int init_shared_mem(struct s2io_nic *nic)
556 } 556 }
557 } 557 }
558 558
559 nic->ufo_in_band_v = kmalloc((sizeof(u64) * size), GFP_KERNEL); 559 nic->ufo_in_band_v = kcalloc(size, sizeof(u64), GFP_KERNEL);
560 if (!nic->ufo_in_band_v) 560 if (!nic->ufo_in_band_v)
561 return -ENOMEM; 561 return -ENOMEM;
562 memset(nic->ufo_in_band_v, 0, size);
563 562
564 /* Allocation and initialization of RXDs in Rings */ 563 /* Allocation and initialization of RXDs in Rings */
565 size = 0; 564 size = 0;
diff --git a/drivers/net/sis190.c b/drivers/net/sis190.c
index b70ed79d4121..45d91b159100 100644
--- a/drivers/net/sis190.c
+++ b/drivers/net/sis190.c
@@ -1562,7 +1562,7 @@ static int __devinit sis190_get_mac_addr_from_eeprom(struct pci_dev *pdev,
1562 for (i = 0; i < MAC_ADDR_LEN / 2; i++) { 1562 for (i = 0; i < MAC_ADDR_LEN / 2; i++) {
1563 __le16 w = sis190_read_eeprom(ioaddr, EEPROMMACAddr + i); 1563 __le16 w = sis190_read_eeprom(ioaddr, EEPROMMACAddr + i);
1564 1564
1565 ((u16 *)dev->dev_addr)[0] = le16_to_cpu(w); 1565 ((u16 *)dev->dev_addr)[i] = le16_to_cpu(w);
1566 } 1566 }
1567 1567
1568 sis190_set_rgmii(tp, sis190_read_eeprom(ioaddr, EEPROMInfo)); 1568 sis190_set_rgmii(tp, sis190_read_eeprom(ioaddr, EEPROMInfo));
diff --git a/drivers/net/skge.c b/drivers/net/skge.c
index deedfd5f8226..45283f3f95e4 100644
--- a/drivers/net/skge.c
+++ b/drivers/net/skge.c
@@ -60,7 +60,7 @@
60#define LINK_HZ (HZ/2) 60#define LINK_HZ (HZ/2)
61 61
62MODULE_DESCRIPTION("SysKonnect Gigabit Ethernet driver"); 62MODULE_DESCRIPTION("SysKonnect Gigabit Ethernet driver");
63MODULE_AUTHOR("Stephen Hemminger <shemminger@osdl.org>"); 63MODULE_AUTHOR("Stephen Hemminger <shemminger@linux-foundation.org>");
64MODULE_LICENSE("GPL"); 64MODULE_LICENSE("GPL");
65MODULE_VERSION(DRV_VERSION); 65MODULE_VERSION(DRV_VERSION);
66 66
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index a6601e8d423c..a2e804ddca6c 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -3691,6 +3691,6 @@ module_init(sky2_init_module);
3691module_exit(sky2_cleanup_module); 3691module_exit(sky2_cleanup_module);
3692 3692
3693MODULE_DESCRIPTION("Marvell Yukon 2 Gigabit Ethernet driver"); 3693MODULE_DESCRIPTION("Marvell Yukon 2 Gigabit Ethernet driver");
3694MODULE_AUTHOR("Stephen Hemminger <shemminger@osdl.org>"); 3694MODULE_AUTHOR("Stephen Hemminger <shemminger@linux-foundation.org>");
3695MODULE_LICENSE("GPL"); 3695MODULE_LICENSE("GPL");
3696MODULE_VERSION(DRV_VERSION); 3696MODULE_VERSION(DRV_VERSION);
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c
index 8243150f5b05..7e4b23c7c1ba 100644
--- a/drivers/net/ucc_geth.c
+++ b/drivers/net/ucc_geth.c
@@ -29,6 +29,7 @@
29#include <linux/fsl_devices.h> 29#include <linux/fsl_devices.h>
30#include <linux/ethtool.h> 30#include <linux/ethtool.h>
31#include <linux/mii.h> 31#include <linux/mii.h>
32#include <linux/workqueue.h>
32 33
33#include <asm/of_platform.h> 34#include <asm/of_platform.h>
34#include <asm/uaccess.h> 35#include <asm/uaccess.h>
@@ -472,7 +473,7 @@ static void put_enet_addr_container(struct enet_addr_container *enet_addr_cont)
472 kfree(enet_addr_cont); 473 kfree(enet_addr_cont);
473} 474}
474 475
475static int set_mac_addr(__be16 __iomem *reg, u8 *mac) 476static void set_mac_addr(__be16 __iomem *reg, u8 *mac)
476{ 477{
477 out_be16(&reg[0], ((u16)mac[5] << 8) | mac[4]); 478 out_be16(&reg[0], ((u16)mac[5] << 8) | mac[4]);
478 out_be16(&reg[1], ((u16)mac[3] << 8) | mac[2]); 479 out_be16(&reg[1], ((u16)mac[3] << 8) | mac[2]);
@@ -3920,10 +3921,11 @@ static irqreturn_t phy_interrupt(int irq, void *dev_id)
3920} 3921}
3921 3922
3922/* Scheduled by the phy_interrupt/timer to handle PHY changes */ 3923/* Scheduled by the phy_interrupt/timer to handle PHY changes */
3923static void ugeth_phy_change(void *data) 3924static void ugeth_phy_change(struct work_struct *work)
3924{ 3925{
3925 struct net_device *dev = (struct net_device *)data; 3926 struct ucc_geth_private *ugeth =
3926 struct ucc_geth_private *ugeth = netdev_priv(dev); 3927 container_of(work, struct ucc_geth_private, tq);
3928 struct net_device *dev = ugeth->dev;
3927 struct ucc_geth *ug_regs; 3929 struct ucc_geth *ug_regs;
3928 int result = 0; 3930 int result = 0;
3929 3931
@@ -4080,7 +4082,7 @@ static int ucc_geth_open(struct net_device *dev)
4080#endif /* CONFIG_UGETH_NAPI */ 4082#endif /* CONFIG_UGETH_NAPI */
4081 4083
4082 /* Set up the PHY change work queue */ 4084 /* Set up the PHY change work queue */
4083 INIT_WORK(&ugeth->tq, ugeth_phy_change, dev); 4085 INIT_WORK(&ugeth->tq, ugeth_phy_change);
4084 4086
4085 init_timer(&ugeth->phy_info_timer); 4087 init_timer(&ugeth->phy_info_timer);
4086 ugeth->phy_info_timer.function = &ugeth_phy_startup_timer; 4088 ugeth->phy_info_timer.function = &ugeth_phy_startup_timer;
diff --git a/drivers/net/ucc_geth_phy.c b/drivers/net/ucc_geth_phy.c
index 5360ec05eaa3..3c86592ce03c 100644
--- a/drivers/net/ucc_geth_phy.c
+++ b/drivers/net/ucc_geth_phy.c
@@ -68,8 +68,31 @@ static int gbit_config_aneg(struct ugeth_mii_info *mii_info);
68static int genmii_config_aneg(struct ugeth_mii_info *mii_info); 68static int genmii_config_aneg(struct ugeth_mii_info *mii_info);
69static int genmii_update_link(struct ugeth_mii_info *mii_info); 69static int genmii_update_link(struct ugeth_mii_info *mii_info);
70static int genmii_read_status(struct ugeth_mii_info *mii_info); 70static int genmii_read_status(struct ugeth_mii_info *mii_info);
71u16 phy_read(struct ugeth_mii_info *mii_info, u16 regnum); 71
72void phy_write(struct ugeth_mii_info *mii_info, u16 regnum, u16 val); 72static u16 ucc_geth_phy_read(struct ugeth_mii_info *mii_info, u16 regnum)
73{
74 u16 retval;
75 unsigned long flags;
76
77 ugphy_vdbg("%s: IN", __FUNCTION__);
78
79 spin_lock_irqsave(&mii_info->mdio_lock, flags);
80 retval = mii_info->mdio_read(mii_info->dev, mii_info->mii_id, regnum);
81 spin_unlock_irqrestore(&mii_info->mdio_lock, flags);
82
83 return retval;
84}
85
86static void ucc_geth_phy_write(struct ugeth_mii_info *mii_info, u16 regnum, u16 val)
87{
88 unsigned long flags;
89
90 ugphy_vdbg("%s: IN", __FUNCTION__);
91
92 spin_lock_irqsave(&mii_info->mdio_lock, flags);
93 mii_info->mdio_write(mii_info->dev, mii_info->mii_id, regnum, val);
94 spin_unlock_irqrestore(&mii_info->mdio_lock, flags);
95}
73 96
74/* Write value to the PHY for this device to the register at regnum, */ 97/* Write value to the PHY for this device to the register at regnum, */
75/* waiting until the write is done before it returns. All PHY */ 98/* waiting until the write is done before it returns. All PHY */
@@ -184,7 +207,7 @@ static void config_genmii_advert(struct ugeth_mii_info *mii_info)
184 advertise = mii_info->advertising; 207 advertise = mii_info->advertising;
185 208
186 /* Setup standard advertisement */ 209 /* Setup standard advertisement */
187 adv = phy_read(mii_info, MII_ADVERTISE); 210 adv = ucc_geth_phy_read(mii_info, MII_ADVERTISE);
188 adv &= ~(ADVERTISE_ALL | ADVERTISE_100BASE4); 211 adv &= ~(ADVERTISE_ALL | ADVERTISE_100BASE4);
189 if (advertise & ADVERTISED_10baseT_Half) 212 if (advertise & ADVERTISED_10baseT_Half)
190 adv |= ADVERTISE_10HALF; 213 adv |= ADVERTISE_10HALF;
@@ -194,7 +217,7 @@ static void config_genmii_advert(struct ugeth_mii_info *mii_info)
194 adv |= ADVERTISE_100HALF; 217 adv |= ADVERTISE_100HALF;
195 if (advertise & ADVERTISED_100baseT_Full) 218 if (advertise & ADVERTISED_100baseT_Full)
196 adv |= ADVERTISE_100FULL; 219 adv |= ADVERTISE_100FULL;
197 phy_write(mii_info, MII_ADVERTISE, adv); 220 ucc_geth_phy_write(mii_info, MII_ADVERTISE, adv);
198} 221}
199 222
200static void genmii_setup_forced(struct ugeth_mii_info *mii_info) 223static void genmii_setup_forced(struct ugeth_mii_info *mii_info)
@@ -204,7 +227,7 @@ static void genmii_setup_forced(struct ugeth_mii_info *mii_info)
204 227
205 ugphy_vdbg("%s: IN", __FUNCTION__); 228 ugphy_vdbg("%s: IN", __FUNCTION__);
206 229
207 ctrl = phy_read(mii_info, MII_BMCR); 230 ctrl = ucc_geth_phy_read(mii_info, MII_BMCR);
208 231
209 ctrl &= 232 ctrl &=
210 ~(BMCR_FULLDPLX | BMCR_SPEED100 | BMCR_SPEED1000 | BMCR_ANENABLE); 233 ~(BMCR_FULLDPLX | BMCR_SPEED100 | BMCR_SPEED1000 | BMCR_ANENABLE);
@@ -234,7 +257,7 @@ static void genmii_setup_forced(struct ugeth_mii_info *mii_info)
234 break; 257 break;
235 } 258 }
236 259
237 phy_write(mii_info, MII_BMCR, ctrl); 260 ucc_geth_phy_write(mii_info, MII_BMCR, ctrl);
238} 261}
239 262
240/* Enable and Restart Autonegotiation */ 263/* Enable and Restart Autonegotiation */
@@ -244,9 +267,9 @@ static void genmii_restart_aneg(struct ugeth_mii_info *mii_info)
244 267
245 ugphy_vdbg("%s: IN", __FUNCTION__); 268 ugphy_vdbg("%s: IN", __FUNCTION__);
246 269
247 ctl = phy_read(mii_info, MII_BMCR); 270 ctl = ucc_geth_phy_read(mii_info, MII_BMCR);
248 ctl |= (BMCR_ANENABLE | BMCR_ANRESTART); 271 ctl |= (BMCR_ANENABLE | BMCR_ANRESTART);
249 phy_write(mii_info, MII_BMCR, ctl); 272 ucc_geth_phy_write(mii_info, MII_BMCR, ctl);
250} 273}
251 274
252static int gbit_config_aneg(struct ugeth_mii_info *mii_info) 275static int gbit_config_aneg(struct ugeth_mii_info *mii_info)
@@ -261,14 +284,14 @@ static int gbit_config_aneg(struct ugeth_mii_info *mii_info)
261 config_genmii_advert(mii_info); 284 config_genmii_advert(mii_info);
262 advertise = mii_info->advertising; 285 advertise = mii_info->advertising;
263 286
264 adv = phy_read(mii_info, MII_1000BASETCONTROL); 287 adv = ucc_geth_phy_read(mii_info, MII_1000BASETCONTROL);
265 adv &= ~(MII_1000BASETCONTROL_FULLDUPLEXCAP | 288 adv &= ~(MII_1000BASETCONTROL_FULLDUPLEXCAP |
266 MII_1000BASETCONTROL_HALFDUPLEXCAP); 289 MII_1000BASETCONTROL_HALFDUPLEXCAP);
267 if (advertise & SUPPORTED_1000baseT_Half) 290 if (advertise & SUPPORTED_1000baseT_Half)
268 adv |= MII_1000BASETCONTROL_HALFDUPLEXCAP; 291 adv |= MII_1000BASETCONTROL_HALFDUPLEXCAP;
269 if (advertise & SUPPORTED_1000baseT_Full) 292 if (advertise & SUPPORTED_1000baseT_Full)
270 adv |= MII_1000BASETCONTROL_FULLDUPLEXCAP; 293 adv |= MII_1000BASETCONTROL_FULLDUPLEXCAP;
271 phy_write(mii_info, MII_1000BASETCONTROL, adv); 294 ucc_geth_phy_write(mii_info, MII_1000BASETCONTROL, adv);
272 295
273 /* Start/Restart aneg */ 296 /* Start/Restart aneg */
274 genmii_restart_aneg(mii_info); 297 genmii_restart_aneg(mii_info);
@@ -298,10 +321,10 @@ static int genmii_update_link(struct ugeth_mii_info *mii_info)
298 ugphy_vdbg("%s: IN", __FUNCTION__); 321 ugphy_vdbg("%s: IN", __FUNCTION__);
299 322
300 /* Do a fake read */ 323 /* Do a fake read */
301 phy_read(mii_info, MII_BMSR); 324 ucc_geth_phy_read(mii_info, MII_BMSR);
302 325
303 /* Read link and autonegotiation status */ 326 /* Read link and autonegotiation status */
304 status = phy_read(mii_info, MII_BMSR); 327 status = ucc_geth_phy_read(mii_info, MII_BMSR);
305 if ((status & BMSR_LSTATUS) == 0) 328 if ((status & BMSR_LSTATUS) == 0)
306 mii_info->link = 0; 329 mii_info->link = 0;
307 else 330 else
@@ -329,7 +352,7 @@ static int genmii_read_status(struct ugeth_mii_info *mii_info)
329 return err; 352 return err;
330 353
331 if (mii_info->autoneg) { 354 if (mii_info->autoneg) {
332 status = phy_read(mii_info, MII_LPA); 355 status = ucc_geth_phy_read(mii_info, MII_LPA);
333 356
334 if (status & (LPA_10FULL | LPA_100FULL)) 357 if (status & (LPA_10FULL | LPA_100FULL))
335 mii_info->duplex = DUPLEX_FULL; 358 mii_info->duplex = DUPLEX_FULL;
@@ -352,9 +375,9 @@ static int marvell_init(struct ugeth_mii_info *mii_info)
352{ 375{
353 ugphy_vdbg("%s: IN", __FUNCTION__); 376 ugphy_vdbg("%s: IN", __FUNCTION__);
354 377
355 phy_write(mii_info, 0x14, 0x0cd2); 378 ucc_geth_phy_write(mii_info, 0x14, 0x0cd2);
356 phy_write(mii_info, MII_BMCR, 379 ucc_geth_phy_write(mii_info, MII_BMCR,
357 phy_read(mii_info, MII_BMCR) | BMCR_RESET); 380 ucc_geth_phy_read(mii_info, MII_BMCR) | BMCR_RESET);
358 msleep(4000); 381 msleep(4000);
359 382
360 return 0; 383 return 0;
@@ -367,13 +390,13 @@ static int marvell_config_aneg(struct ugeth_mii_info *mii_info)
367 /* The Marvell PHY has an errata which requires 390 /* The Marvell PHY has an errata which requires
368 * that certain registers get written in order 391 * that certain registers get written in order
369 * to restart autonegotiation */ 392 * to restart autonegotiation */
370 phy_write(mii_info, MII_BMCR, BMCR_RESET); 393 ucc_geth_phy_write(mii_info, MII_BMCR, BMCR_RESET);
371 394
372 phy_write(mii_info, 0x1d, 0x1f); 395 ucc_geth_phy_write(mii_info, 0x1d, 0x1f);
373 phy_write(mii_info, 0x1e, 0x200c); 396 ucc_geth_phy_write(mii_info, 0x1e, 0x200c);
374 phy_write(mii_info, 0x1d, 0x5); 397 ucc_geth_phy_write(mii_info, 0x1d, 0x5);
375 phy_write(mii_info, 0x1e, 0); 398 ucc_geth_phy_write(mii_info, 0x1e, 0);
376 phy_write(mii_info, 0x1e, 0x100); 399 ucc_geth_phy_write(mii_info, 0x1e, 0x100);
377 400
378 gbit_config_aneg(mii_info); 401 gbit_config_aneg(mii_info);
379 402
@@ -398,7 +421,7 @@ static int marvell_read_status(struct ugeth_mii_info *mii_info)
398 * are as set */ 421 * are as set */
399 if (mii_info->autoneg && mii_info->link) { 422 if (mii_info->autoneg && mii_info->link) {
400 int speed; 423 int speed;
401 status = phy_read(mii_info, MII_M1011_PHY_SPEC_STATUS); 424 status = ucc_geth_phy_read(mii_info, MII_M1011_PHY_SPEC_STATUS);
402 425
403 /* Get the duplexity */ 426 /* Get the duplexity */
404 if (status & MII_M1011_PHY_SPEC_STATUS_FULLDUPLEX) 427 if (status & MII_M1011_PHY_SPEC_STATUS_FULLDUPLEX)
@@ -430,7 +453,7 @@ static int marvell_ack_interrupt(struct ugeth_mii_info *mii_info)
430 ugphy_vdbg("%s: IN", __FUNCTION__); 453 ugphy_vdbg("%s: IN", __FUNCTION__);
431 454
432 /* Clear the interrupts by reading the reg */ 455 /* Clear the interrupts by reading the reg */
433 phy_read(mii_info, MII_M1011_IEVENT); 456 ucc_geth_phy_read(mii_info, MII_M1011_IEVENT);
434 457
435 return 0; 458 return 0;
436} 459}
@@ -440,9 +463,9 @@ static int marvell_config_intr(struct ugeth_mii_info *mii_info)
440 ugphy_vdbg("%s: IN", __FUNCTION__); 463 ugphy_vdbg("%s: IN", __FUNCTION__);
441 464
442 if (mii_info->interrupts == MII_INTERRUPT_ENABLED) 465 if (mii_info->interrupts == MII_INTERRUPT_ENABLED)
443 phy_write(mii_info, MII_M1011_IMASK, MII_M1011_IMASK_INIT); 466 ucc_geth_phy_write(mii_info, MII_M1011_IMASK, MII_M1011_IMASK_INIT);
444 else 467 else
445 phy_write(mii_info, MII_M1011_IMASK, MII_M1011_IMASK_CLEAR); 468 ucc_geth_phy_write(mii_info, MII_M1011_IMASK, MII_M1011_IMASK_CLEAR);
446 469
447 return 0; 470 return 0;
448} 471}
@@ -451,9 +474,9 @@ static int cis820x_init(struct ugeth_mii_info *mii_info)
451{ 474{
452 ugphy_vdbg("%s: IN", __FUNCTION__); 475 ugphy_vdbg("%s: IN", __FUNCTION__);
453 476
454 phy_write(mii_info, MII_CIS8201_AUX_CONSTAT, 477 ucc_geth_phy_write(mii_info, MII_CIS8201_AUX_CONSTAT,
455 MII_CIS8201_AUXCONSTAT_INIT); 478 MII_CIS8201_AUXCONSTAT_INIT);
456 phy_write(mii_info, MII_CIS8201_EXT_CON1, MII_CIS8201_EXTCON1_INIT); 479 ucc_geth_phy_write(mii_info, MII_CIS8201_EXT_CON1, MII_CIS8201_EXTCON1_INIT);
457 480
458 return 0; 481 return 0;
459} 482}
@@ -477,7 +500,7 @@ static int cis820x_read_status(struct ugeth_mii_info *mii_info)
477 if (mii_info->autoneg && mii_info->link) { 500 if (mii_info->autoneg && mii_info->link) {
478 int speed; 501 int speed;
479 502
480 status = phy_read(mii_info, MII_CIS8201_AUX_CONSTAT); 503 status = ucc_geth_phy_read(mii_info, MII_CIS8201_AUX_CONSTAT);
481 if (status & MII_CIS8201_AUXCONSTAT_DUPLEX) 504 if (status & MII_CIS8201_AUXCONSTAT_DUPLEX)
482 mii_info->duplex = DUPLEX_FULL; 505 mii_info->duplex = DUPLEX_FULL;
483 else 506 else
@@ -505,7 +528,7 @@ static int cis820x_ack_interrupt(struct ugeth_mii_info *mii_info)
505{ 528{
506 ugphy_vdbg("%s: IN", __FUNCTION__); 529 ugphy_vdbg("%s: IN", __FUNCTION__);
507 530
508 phy_read(mii_info, MII_CIS8201_ISTAT); 531 ucc_geth_phy_read(mii_info, MII_CIS8201_ISTAT);
509 532
510 return 0; 533 return 0;
511} 534}
@@ -515,9 +538,9 @@ static int cis820x_config_intr(struct ugeth_mii_info *mii_info)
515 ugphy_vdbg("%s: IN", __FUNCTION__); 538 ugphy_vdbg("%s: IN", __FUNCTION__);
516 539
517 if (mii_info->interrupts == MII_INTERRUPT_ENABLED) 540 if (mii_info->interrupts == MII_INTERRUPT_ENABLED)
518 phy_write(mii_info, MII_CIS8201_IMASK, MII_CIS8201_IMASK_MASK); 541 ucc_geth_phy_write(mii_info, MII_CIS8201_IMASK, MII_CIS8201_IMASK_MASK);
519 else 542 else
520 phy_write(mii_info, MII_CIS8201_IMASK, 0); 543 ucc_geth_phy_write(mii_info, MII_CIS8201_IMASK, 0);
521 544
522 return 0; 545 return 0;
523} 546}
@@ -541,7 +564,7 @@ static int dm9161_read_status(struct ugeth_mii_info *mii_info)
541 /* If we aren't autonegotiating, assume speeds 564 /* If we aren't autonegotiating, assume speeds
542 * are as set */ 565 * are as set */
543 if (mii_info->autoneg && mii_info->link) { 566 if (mii_info->autoneg && mii_info->link) {
544 status = phy_read(mii_info, MII_DM9161_SCSR); 567 status = ucc_geth_phy_read(mii_info, MII_DM9161_SCSR);
545 if (status & (MII_DM9161_SCSR_100F | MII_DM9161_SCSR_100H)) 568 if (status & (MII_DM9161_SCSR_100F | MII_DM9161_SCSR_100H))
546 mii_info->speed = SPEED_100; 569 mii_info->speed = SPEED_100;
547 else 570 else
@@ -572,7 +595,7 @@ static void dm9161_timer(unsigned long data)
572{ 595{
573 struct ugeth_mii_info *mii_info = (struct ugeth_mii_info *)data; 596 struct ugeth_mii_info *mii_info = (struct ugeth_mii_info *)data;
574 struct dm9161_private *priv = mii_info->priv; 597 struct dm9161_private *priv = mii_info->priv;
575 u16 status = phy_read(mii_info, MII_BMSR); 598 u16 status = ucc_geth_phy_read(mii_info, MII_BMSR);
576 599
577 ugphy_vdbg("%s: IN", __FUNCTION__); 600 ugphy_vdbg("%s: IN", __FUNCTION__);
578 601
@@ -599,11 +622,11 @@ static int dm9161_init(struct ugeth_mii_info *mii_info)
599 /* Reset is not done yet */ 622 /* Reset is not done yet */
600 priv->resetdone = 0; 623 priv->resetdone = 0;
601 624
602 phy_write(mii_info, MII_BMCR, 625 ucc_geth_phy_write(mii_info, MII_BMCR,
603 phy_read(mii_info, MII_BMCR) | BMCR_RESET); 626 ucc_geth_phy_read(mii_info, MII_BMCR) | BMCR_RESET);
604 627
605 phy_write(mii_info, MII_BMCR, 628 ucc_geth_phy_write(mii_info, MII_BMCR,
606 phy_read(mii_info, MII_BMCR) & ~BMCR_ISOLATE); 629 ucc_geth_phy_read(mii_info, MII_BMCR) & ~BMCR_ISOLATE);
607 630
608 config_genmii_advert(mii_info); 631 config_genmii_advert(mii_info);
609 /* Start/Restart aneg */ 632 /* Start/Restart aneg */
@@ -634,7 +657,7 @@ static int dm9161_ack_interrupt(struct ugeth_mii_info *mii_info)
634 ugphy_vdbg("%s: IN", __FUNCTION__); 657 ugphy_vdbg("%s: IN", __FUNCTION__);
635 658
636 /* Clear the interrupts by reading the reg */ 659 /* Clear the interrupts by reading the reg */
637 phy_read(mii_info, MII_DM9161_INTR); 660 ucc_geth_phy_read(mii_info, MII_DM9161_INTR);
638 661
639 662
640 return 0; 663 return 0;
@@ -645,9 +668,9 @@ static int dm9161_config_intr(struct ugeth_mii_info *mii_info)
645 ugphy_vdbg("%s: IN", __FUNCTION__); 668 ugphy_vdbg("%s: IN", __FUNCTION__);
646 669
647 if (mii_info->interrupts == MII_INTERRUPT_ENABLED) 670 if (mii_info->interrupts == MII_INTERRUPT_ENABLED)
648 phy_write(mii_info, MII_DM9161_INTR, MII_DM9161_INTR_INIT); 671 ucc_geth_phy_write(mii_info, MII_DM9161_INTR, MII_DM9161_INTR_INIT);
649 else 672 else
650 phy_write(mii_info, MII_DM9161_INTR, MII_DM9161_INTR_STOP); 673 ucc_geth_phy_write(mii_info, MII_DM9161_INTR, MII_DM9161_INTR_STOP);
651 674
652 return 0; 675 return 0;
653} 676}
@@ -718,31 +741,6 @@ static struct phy_info *phy_info[] = {
718 NULL 741 NULL
719}; 742};
720 743
721u16 phy_read(struct ugeth_mii_info *mii_info, u16 regnum)
722{
723 u16 retval;
724 unsigned long flags;
725
726 ugphy_vdbg("%s: IN", __FUNCTION__);
727
728 spin_lock_irqsave(&mii_info->mdio_lock, flags);
729 retval = mii_info->mdio_read(mii_info->dev, mii_info->mii_id, regnum);
730 spin_unlock_irqrestore(&mii_info->mdio_lock, flags);
731
732 return retval;
733}
734
735void phy_write(struct ugeth_mii_info *mii_info, u16 regnum, u16 val)
736{
737 unsigned long flags;
738
739 ugphy_vdbg("%s: IN", __FUNCTION__);
740
741 spin_lock_irqsave(&mii_info->mdio_lock, flags);
742 mii_info->mdio_write(mii_info->dev, mii_info->mii_id, regnum, val);
743 spin_unlock_irqrestore(&mii_info->mdio_lock, flags);
744}
745
746/* Use the PHY ID registers to determine what type of PHY is attached 744/* Use the PHY ID registers to determine what type of PHY is attached
747 * to device dev. return a struct phy_info structure describing that PHY 745 * to device dev. return a struct phy_info structure describing that PHY
748 */ 746 */
@@ -757,11 +755,11 @@ struct phy_info *get_phy_info(struct ugeth_mii_info *mii_info)
757 ugphy_vdbg("%s: IN", __FUNCTION__); 755 ugphy_vdbg("%s: IN", __FUNCTION__);
758 756
759 /* Grab the bits from PHYIR1, and put them in the upper half */ 757 /* Grab the bits from PHYIR1, and put them in the upper half */
760 phy_reg = phy_read(mii_info, MII_PHYSID1); 758 phy_reg = ucc_geth_phy_read(mii_info, MII_PHYSID1);
761 phy_ID = (phy_reg & 0xffff) << 16; 759 phy_ID = (phy_reg & 0xffff) << 16;
762 760
763 /* Grab the bits from PHYIR2, and put them in the lower half */ 761 /* Grab the bits from PHYIR2, and put them in the lower half */
764 phy_reg = phy_read(mii_info, MII_PHYSID2); 762 phy_reg = ucc_geth_phy_read(mii_info, MII_PHYSID2);
765 phy_ID |= (phy_reg & 0xffff); 763 phy_ID |= (phy_reg & 0xffff);
766 764
767 /* loop through all the known PHY types, and find one that */ 765 /* loop through all the known PHY types, and find one that */
diff --git a/drivers/net/wireless/bcm43xx/bcm43xx_main.c b/drivers/net/wireless/bcm43xx/bcm43xx_main.c
index 2ec2e5afce67..91b752e3d07e 100644
--- a/drivers/net/wireless/bcm43xx/bcm43xx_main.c
+++ b/drivers/net/wireless/bcm43xx/bcm43xx_main.c
@@ -2701,8 +2701,8 @@ static int bcm43xx_probe_cores(struct bcm43xx_private *bcm)
2701 sb_id_hi = bcm43xx_read32(bcm, BCM43xx_CIR_SB_ID_HI); 2701 sb_id_hi = bcm43xx_read32(bcm, BCM43xx_CIR_SB_ID_HI);
2702 2702
2703 /* extract core_id, core_rev, core_vendor */ 2703 /* extract core_id, core_rev, core_vendor */
2704 core_id = (sb_id_hi & 0xFFF0) >> 4; 2704 core_id = (sb_id_hi & 0x8FF0) >> 4;
2705 core_rev = (sb_id_hi & 0xF); 2705 core_rev = ((sb_id_hi & 0xF) | ((sb_id_hi & 0x7000) >> 8));
2706 core_vendor = (sb_id_hi & 0xFFFF0000) >> 16; 2706 core_vendor = (sb_id_hi & 0xFFFF0000) >> 16;
2707 2707
2708 dprintk(KERN_INFO PFX "Core %d: ID 0x%x, rev 0x%x, vendor 0x%x\n", 2708 dprintk(KERN_INFO PFX "Core %d: ID 0x%x, rev 0x%x, vendor 0x%x\n",
@@ -2873,7 +2873,10 @@ static int bcm43xx_wireless_core_init(struct bcm43xx_private *bcm,
2873 sbimconfiglow = bcm43xx_read32(bcm, BCM43xx_CIR_SBIMCONFIGLOW); 2873 sbimconfiglow = bcm43xx_read32(bcm, BCM43xx_CIR_SBIMCONFIGLOW);
2874 sbimconfiglow &= ~ BCM43xx_SBIMCONFIGLOW_REQUEST_TOUT_MASK; 2874 sbimconfiglow &= ~ BCM43xx_SBIMCONFIGLOW_REQUEST_TOUT_MASK;
2875 sbimconfiglow &= ~ BCM43xx_SBIMCONFIGLOW_SERVICE_TOUT_MASK; 2875 sbimconfiglow &= ~ BCM43xx_SBIMCONFIGLOW_SERVICE_TOUT_MASK;
2876 sbimconfiglow |= 0x32; 2876 if (bcm->bustype == BCM43xx_BUSTYPE_PCI)
2877 sbimconfiglow |= 0x32;
2878 else
2879 sbimconfiglow |= 0x53;
2877 bcm43xx_write32(bcm, BCM43xx_CIR_SBIMCONFIGLOW, sbimconfiglow); 2880 bcm43xx_write32(bcm, BCM43xx_CIR_SBIMCONFIGLOW, sbimconfiglow);
2878 } 2881 }
2879 2882
@@ -3077,7 +3080,7 @@ static int bcm43xx_setup_backplane_pci_connection(struct bcm43xx_private *bcm,
3077 if (err) 3080 if (err)
3078 goto out; 3081 goto out;
3079 3082
3080 if (bcm->current_core->rev < 6 || 3083 if (bcm->current_core->rev < 6 &&
3081 bcm->current_core->id == BCM43xx_COREID_PCI) { 3084 bcm->current_core->id == BCM43xx_COREID_PCI) {
3082 value = bcm43xx_read32(bcm, BCM43xx_CIR_SBINTVEC); 3085 value = bcm43xx_read32(bcm, BCM43xx_CIR_SBINTVEC);
3083 value |= (1 << backplane_flag_nr); 3086 value |= (1 << backplane_flag_nr);
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
index b8d2385e29bc..92d5e8db0de7 100644
--- a/drivers/pci/pci-driver.c
+++ b/drivers/pci/pci-driver.c
@@ -150,8 +150,7 @@ const struct pci_device_id *pci_match_id(const struct pci_device_id *ids,
150} 150}
151 151
152/** 152/**
153 * pci_match_device - Tell if a PCI device structure has a matching 153 * pci_match_device - Tell if a PCI device structure has a matching PCI device id structure
154 * PCI device id structure
155 * @drv: the PCI driver to match against 154 * @drv: the PCI driver to match against
156 * @dev: the PCI device structure to match against 155 * @dev: the PCI device structure to match against
157 * 156 *
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 0a70943f8bb6..ef882a8a094e 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1002,6 +1002,11 @@ static void __init asus_hides_smbus_hostbridge(struct pci_dev *dev)
1002 case 0x186a: /* M6Ne notebook */ 1002 case 0x186a: /* M6Ne notebook */
1003 asus_hides_smbus = 1; 1003 asus_hides_smbus = 1;
1004 } 1004 }
1005 if (dev->device == PCI_DEVICE_ID_INTEL_82865_HB)
1006 switch (dev->subsystem_device) {
1007 case 0x80f2: /* P4P800-X */
1008 asus_hides_smbus = 1;
1009 }
1005 if (dev->device == PCI_DEVICE_ID_INTEL_82915GM_HB) { 1010 if (dev->device == PCI_DEVICE_ID_INTEL_82915GM_HB) {
1006 switch (dev->subsystem_device) { 1011 switch (dev->subsystem_device) {
1007 case 0x1882: /* M6V notebook */ 1012 case 0x1882: /* M6V notebook */
diff --git a/drivers/rtc/rtc-sh.c b/drivers/rtc/rtc-sh.c
index e9e0934380b8..198b9f22fbff 100644
--- a/drivers/rtc/rtc-sh.c
+++ b/drivers/rtc/rtc-sh.c
@@ -492,10 +492,10 @@ static int sh_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *wkalrm)
492 492
493 spin_lock_irq(&rtc->lock); 493 spin_lock_irq(&rtc->lock);
494 494
495 /* disable alarm interrupt and clear flag */ 495 /* disable alarm interrupt and clear the alarm flag */
496 rcr1 = readb(rtc->regbase + RCR1); 496 rcr1 = readb(rtc->regbase + RCR1);
497 rcr1 &= ~RCR1_AF; 497 rcr1 &= ~(RCR1_AF|RCR1_AIE);
498 writeb(rcr1 & ~RCR1_AIE, rtc->regbase + RCR1); 498 writeb(rcr1, rtc->regbase + RCR1);
499 499
500 rtc->rearm_aie = 0; 500 rtc->rearm_aie = 0;
501 501
@@ -510,8 +510,10 @@ static int sh_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *wkalrm)
510 mon += 1; 510 mon += 1;
511 sh_rtc_write_alarm_value(rtc, mon, RMONAR); 511 sh_rtc_write_alarm_value(rtc, mon, RMONAR);
512 512
513 /* Restore interrupt activation status */ 513 if (wkalrm->enabled) {
514 writeb(rcr1, rtc->regbase + RCR1); 514 rcr1 |= RCR1_AIE;
515 writeb(rcr1, rtc->regbase + RCR1);
516 }
515 517
516 spin_unlock_irq(&rtc->lock); 518 spin_unlock_irq(&rtc->lock);
517 519
diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c
index 99a259c5a0c0..e1b44d6c0c32 100644
--- a/drivers/scsi/3w-xxxx.c
+++ b/drivers/scsi/3w-xxxx.c
@@ -6,7 +6,7 @@
6 Arnaldo Carvalho de Melo <acme@conectiva.com.br> 6 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
7 Brad Strand <linux@3ware.com> 7 Brad Strand <linux@3ware.com>
8 8
9 Copyright (C) 1999-2005 3ware Inc. 9 Copyright (C) 1999-2007 3ware Inc.
10 10
11 Kernel compatiblity By: Andre Hedrick <andre@suse.com> 11 Kernel compatiblity By: Andre Hedrick <andre@suse.com>
12 Non-Copyright (C) 2000 Andre Hedrick <andre@suse.com> 12 Non-Copyright (C) 2000 Andre Hedrick <andre@suse.com>
@@ -191,6 +191,9 @@
191 before shutting down card. 191 before shutting down card.
192 Change to new 'change_queue_depth' api. 192 Change to new 'change_queue_depth' api.
193 Fix 'handled=1' ISR usage, remove bogus IRQ check. 193 Fix 'handled=1' ISR usage, remove bogus IRQ check.
194 1.26.02.002 - Free irq handler in __tw_shutdown().
195 Turn on RCD bit for caching mode page.
196 Serialize reset code.
194*/ 197*/
195 198
196#include <linux/module.h> 199#include <linux/module.h>
@@ -214,7 +217,7 @@
214#include "3w-xxxx.h" 217#include "3w-xxxx.h"
215 218
216/* Globals */ 219/* Globals */
217#define TW_DRIVER_VERSION "1.26.02.001" 220#define TW_DRIVER_VERSION "1.26.02.002"
218static TW_Device_Extension *tw_device_extension_list[TW_MAX_SLOT]; 221static TW_Device_Extension *tw_device_extension_list[TW_MAX_SLOT];
219static int tw_device_extension_count = 0; 222static int tw_device_extension_count = 0;
220static int twe_major = -1; 223static int twe_major = -1;
@@ -226,7 +229,7 @@ MODULE_LICENSE("GPL");
226MODULE_VERSION(TW_DRIVER_VERSION); 229MODULE_VERSION(TW_DRIVER_VERSION);
227 230
228/* Function prototypes */ 231/* Function prototypes */
229static int tw_reset_device_extension(TW_Device_Extension *tw_dev, int ioctl_reset); 232static int tw_reset_device_extension(TW_Device_Extension *tw_dev);
230 233
231/* Functions */ 234/* Functions */
232 235
@@ -984,24 +987,12 @@ static int tw_chrdev_ioctl(struct inode *inode, struct file *file, unsigned int
984 /* Now wait for the command to complete */ 987 /* Now wait for the command to complete */
985 timeout = wait_event_timeout(tw_dev->ioctl_wqueue, tw_dev->chrdev_request_id == TW_IOCTL_CHRDEV_FREE, timeout); 988 timeout = wait_event_timeout(tw_dev->ioctl_wqueue, tw_dev->chrdev_request_id == TW_IOCTL_CHRDEV_FREE, timeout);
986 989
987 /* See if we reset while waiting for the ioctl to complete */
988 if (test_bit(TW_IN_RESET, &tw_dev->flags)) {
989 clear_bit(TW_IN_RESET, &tw_dev->flags);
990 retval = -ERESTARTSYS;
991 goto out2;
992 }
993
994 /* We timed out, and didn't get an interrupt */ 990 /* We timed out, and didn't get an interrupt */
995 if (tw_dev->chrdev_request_id != TW_IOCTL_CHRDEV_FREE) { 991 if (tw_dev->chrdev_request_id != TW_IOCTL_CHRDEV_FREE) {
996 /* Now we need to reset the board */ 992 /* Now we need to reset the board */
997 printk(KERN_WARNING "3w-xxxx: scsi%d: Character ioctl (0x%x) timed out, resetting card.\n", tw_dev->host->host_no, cmd); 993 printk(KERN_WARNING "3w-xxxx: scsi%d: Character ioctl (0x%x) timed out, resetting card.\n", tw_dev->host->host_no, cmd);
998 retval = -EIO; 994 retval = -EIO;
999 spin_lock_irqsave(tw_dev->host->host_lock, flags); 995 if (tw_reset_device_extension(tw_dev)) {
1000 tw_dev->state[request_id] = TW_S_COMPLETED;
1001 tw_state_request_finish(tw_dev, request_id);
1002 tw_dev->posted_request_count--;
1003 spin_unlock_irqrestore(tw_dev->host->host_lock, flags);
1004 if (tw_reset_device_extension(tw_dev, 1)) {
1005 printk(KERN_WARNING "3w-xxxx: tw_chrdev_ioctl(): Reset failed for card %d.\n", tw_dev->host->host_no); 996 printk(KERN_WARNING "3w-xxxx: tw_chrdev_ioctl(): Reset failed for card %d.\n", tw_dev->host->host_no);
1006 } 997 }
1007 goto out2; 998 goto out2;
@@ -1336,7 +1327,7 @@ static void tw_unmap_scsi_data(struct pci_dev *pdev, struct scsi_cmnd *cmd)
1336} /* End tw_unmap_scsi_data() */ 1327} /* End tw_unmap_scsi_data() */
1337 1328
1338/* This function will reset a device extension */ 1329/* This function will reset a device extension */
1339static int tw_reset_device_extension(TW_Device_Extension *tw_dev, int ioctl_reset) 1330static int tw_reset_device_extension(TW_Device_Extension *tw_dev)
1340{ 1331{
1341 int i = 0; 1332 int i = 0;
1342 struct scsi_cmnd *srb; 1333 struct scsi_cmnd *srb;
@@ -1382,15 +1373,10 @@ static int tw_reset_device_extension(TW_Device_Extension *tw_dev, int ioctl_rese
1382 printk(KERN_WARNING "3w-xxxx: scsi%d: Reset sequence failed.\n", tw_dev->host->host_no); 1373 printk(KERN_WARNING "3w-xxxx: scsi%d: Reset sequence failed.\n", tw_dev->host->host_no);
1383 return 1; 1374 return 1;
1384 } 1375 }
1385 TW_ENABLE_AND_CLEAR_INTERRUPTS(tw_dev);
1386 1376
1387 /* Wake up any ioctl that was pending before the reset */ 1377 TW_ENABLE_AND_CLEAR_INTERRUPTS(tw_dev);
1388 if ((tw_dev->chrdev_request_id == TW_IOCTL_CHRDEV_FREE) || (ioctl_reset)) { 1378 clear_bit(TW_IN_RESET, &tw_dev->flags);
1389 clear_bit(TW_IN_RESET, &tw_dev->flags); 1379 tw_dev->chrdev_request_id = TW_IOCTL_CHRDEV_FREE;
1390 } else {
1391 tw_dev->chrdev_request_id = TW_IOCTL_CHRDEV_FREE;
1392 wake_up(&tw_dev->ioctl_wqueue);
1393 }
1394 1380
1395 return 0; 1381 return 0;
1396} /* End tw_reset_device_extension() */ 1382} /* End tw_reset_device_extension() */
@@ -1437,14 +1423,18 @@ static int tw_scsi_eh_reset(struct scsi_cmnd *SCpnt)
1437 "WARNING: Command (0x%x) timed out, resetting card.\n", 1423 "WARNING: Command (0x%x) timed out, resetting card.\n",
1438 SCpnt->cmnd[0]); 1424 SCpnt->cmnd[0]);
1439 1425
1426 /* Make sure we are not issuing an ioctl or resetting from ioctl */
1427 mutex_lock(&tw_dev->ioctl_lock);
1428
1440 /* Now reset the card and some of the device extension data */ 1429 /* Now reset the card and some of the device extension data */
1441 if (tw_reset_device_extension(tw_dev, 0)) { 1430 if (tw_reset_device_extension(tw_dev)) {
1442 printk(KERN_WARNING "3w-xxxx: scsi%d: Reset failed.\n", tw_dev->host->host_no); 1431 printk(KERN_WARNING "3w-xxxx: scsi%d: Reset failed.\n", tw_dev->host->host_no);
1443 goto out; 1432 goto out;
1444 } 1433 }
1445 1434
1446 retval = SUCCESS; 1435 retval = SUCCESS;
1447out: 1436out:
1437 mutex_unlock(&tw_dev->ioctl_lock);
1448 return retval; 1438 return retval;
1449} /* End tw_scsi_eh_reset() */ 1439} /* End tw_scsi_eh_reset() */
1450 1440
@@ -1660,9 +1650,9 @@ static int tw_scsiop_mode_sense_complete(TW_Device_Extension *tw_dev, int reques
1660 request_buffer[4] = 0x8; /* caching page */ 1650 request_buffer[4] = 0x8; /* caching page */
1661 request_buffer[5] = 0xa; /* page length */ 1651 request_buffer[5] = 0xa; /* page length */
1662 if (*flags & 0x1) 1652 if (*flags & 0x1)
1663 request_buffer[6] = 0x4; /* WCE on */ 1653 request_buffer[6] = 0x5; /* WCE on, RCD on */
1664 else 1654 else
1665 request_buffer[6] = 0x0; /* WCE off */ 1655 request_buffer[6] = 0x1; /* WCE off, RCD on */
1666 tw_transfer_internal(tw_dev, request_id, request_buffer, 1656 tw_transfer_internal(tw_dev, request_id, request_buffer,
1667 sizeof(request_buffer)); 1657 sizeof(request_buffer));
1668 1658
@@ -2012,6 +2002,10 @@ static int tw_scsi_queue(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd
2012 int retval = 1; 2002 int retval = 1;
2013 TW_Device_Extension *tw_dev = (TW_Device_Extension *)SCpnt->device->host->hostdata; 2003 TW_Device_Extension *tw_dev = (TW_Device_Extension *)SCpnt->device->host->hostdata;
2014 2004
2005 /* If we are resetting due to timed out ioctl, report as busy */
2006 if (test_bit(TW_IN_RESET, &tw_dev->flags))
2007 return SCSI_MLQUEUE_HOST_BUSY;
2008
2015 /* Save done function into Scsi_Cmnd struct */ 2009 /* Save done function into Scsi_Cmnd struct */
2016 SCpnt->scsi_done = done; 2010 SCpnt->scsi_done = done;
2017 2011
@@ -2100,6 +2094,10 @@ static irqreturn_t tw_interrupt(int irq, void *dev_instance)
2100 2094
2101 handled = 1; 2095 handled = 1;
2102 2096
2097 /* If we are resetting, bail */
2098 if (test_bit(TW_IN_RESET, &tw_dev->flags))
2099 goto tw_interrupt_bail;
2100
2103 /* Check controller for errors */ 2101 /* Check controller for errors */
2104 if (tw_check_bits(status_reg_value)) { 2102 if (tw_check_bits(status_reg_value)) {
2105 dprintk(KERN_WARNING "3w-xxxx: tw_interrupt(): Unexpected bits.\n"); 2103 dprintk(KERN_WARNING "3w-xxxx: tw_interrupt(): Unexpected bits.\n");
@@ -2276,6 +2274,9 @@ static void __tw_shutdown(TW_Device_Extension *tw_dev)
2276 /* Disable interrupts */ 2274 /* Disable interrupts */
2277 TW_DISABLE_INTERRUPTS(tw_dev); 2275 TW_DISABLE_INTERRUPTS(tw_dev);
2278 2276
2277 /* Free up the IRQ */
2278 free_irq(tw_dev->tw_pci_dev->irq, tw_dev);
2279
2279 printk(KERN_WARNING "3w-xxxx: Shutting down host %d.\n", tw_dev->host->host_no); 2280 printk(KERN_WARNING "3w-xxxx: Shutting down host %d.\n", tw_dev->host->host_no);
2280 2281
2281 /* Tell the card we are shutting down */ 2282 /* Tell the card we are shutting down */
@@ -2444,9 +2445,6 @@ static void tw_remove(struct pci_dev *pdev)
2444 twe_major = -1; 2445 twe_major = -1;
2445 } 2446 }
2446 2447
2447 /* Free up the IRQ */
2448 free_irq(tw_dev->tw_pci_dev->irq, tw_dev);
2449
2450 /* Shutdown the card */ 2448 /* Shutdown the card */
2451 __tw_shutdown(tw_dev); 2449 __tw_shutdown(tw_dev);
2452 2450
diff --git a/drivers/scsi/3w-xxxx.h b/drivers/scsi/3w-xxxx.h
index bbd654a2b9b1..0742e6846656 100644
--- a/drivers/scsi/3w-xxxx.h
+++ b/drivers/scsi/3w-xxxx.h
@@ -6,7 +6,7 @@
6 Arnaldo Carvalho de Melo <acme@conectiva.com.br> 6 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
7 Brad Strand <linux@3ware.com> 7 Brad Strand <linux@3ware.com>
8 8
9 Copyright (C) 1999-2005 3ware Inc. 9 Copyright (C) 1999-2007 3ware Inc.
10 10
11 Kernel compatiblity By: Andre Hedrick <andre@suse.com> 11 Kernel compatiblity By: Andre Hedrick <andre@suse.com>
12 Non-Copyright (C) 2000 Andre Hedrick <andre@suse.com> 12 Non-Copyright (C) 2000 Andre Hedrick <andre@suse.com>
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index 60f582727185..7869c34a4a3e 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -1303,7 +1303,7 @@ config SCSI_LPFC
1303 1303
1304config SCSI_SEAGATE 1304config SCSI_SEAGATE
1305 tristate "Seagate ST-02 and Future Domain TMC-8xx SCSI support" 1305 tristate "Seagate ST-02 and Future Domain TMC-8xx SCSI support"
1306 depends on X86 && ISA && SCSI && BROKEN 1306 depends on X86 && ISA && SCSI
1307 ---help--- 1307 ---help---
1308 These are 8-bit SCSI controllers; the ST-01 is also supported by 1308 These are 8-bit SCSI controllers; the ST-01 is also supported by
1309 this driver. It is explained in section 3.9 of the SCSI-HOWTO, 1309 this driver. It is explained in section 3.9 of the SCSI-HOWTO,
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
index 359e7ddfdb47..d2cf875af59b 100644
--- a/drivers/scsi/aacraid/linit.c
+++ b/drivers/scsi/aacraid/linit.c
@@ -117,8 +117,8 @@ static struct pci_device_id aac_pci_tbl[] = {
117 { 0x9005, 0x0286, 0x9005, 0x029b, 0, 0, 22 }, /* AAR-2820SA (Intruder) */ 117 { 0x9005, 0x0286, 0x9005, 0x029b, 0, 0, 22 }, /* AAR-2820SA (Intruder) */
118 { 0x9005, 0x0286, 0x9005, 0x029c, 0, 0, 23 }, /* AAR-2620SA (Intruder) */ 118 { 0x9005, 0x0286, 0x9005, 0x029c, 0, 0, 23 }, /* AAR-2620SA (Intruder) */
119 { 0x9005, 0x0286, 0x9005, 0x029d, 0, 0, 24 }, /* AAR-2420SA (Intruder) */ 119 { 0x9005, 0x0286, 0x9005, 0x029d, 0, 0, 24 }, /* AAR-2420SA (Intruder) */
120 { 0x9005, 0x0286, 0x9005, 0x029e, 0, 0, 25 }, /* ICP9024R0 (Lancer) */ 120 { 0x9005, 0x0286, 0x9005, 0x029e, 0, 0, 25 }, /* ICP9024RO (Lancer) */
121 { 0x9005, 0x0286, 0x9005, 0x029f, 0, 0, 26 }, /* ICP9014R0 (Lancer) */ 121 { 0x9005, 0x0286, 0x9005, 0x029f, 0, 0, 26 }, /* ICP9014RO (Lancer) */
122 { 0x9005, 0x0286, 0x9005, 0x02a0, 0, 0, 27 }, /* ICP9047MA (Lancer) */ 122 { 0x9005, 0x0286, 0x9005, 0x02a0, 0, 0, 27 }, /* ICP9047MA (Lancer) */
123 { 0x9005, 0x0286, 0x9005, 0x02a1, 0, 0, 28 }, /* ICP9087MA (Lancer) */ 123 { 0x9005, 0x0286, 0x9005, 0x02a1, 0, 0, 28 }, /* ICP9087MA (Lancer) */
124 { 0x9005, 0x0286, 0x9005, 0x02a3, 0, 0, 29 }, /* ICP5445AU (Hurricane44) */ 124 { 0x9005, 0x0286, 0x9005, 0x02a3, 0, 0, 29 }, /* ICP5445AU (Hurricane44) */
@@ -137,15 +137,15 @@ static struct pci_device_id aac_pci_tbl[] = {
137 { 0x9005, 0x0285, 0x9005, 0x0294, 0, 0, 41 }, /* ESD SO-DIMM PCI-X SATA ZCR (Prowler) */ 137 { 0x9005, 0x0285, 0x9005, 0x0294, 0, 0, 41 }, /* ESD SO-DIMM PCI-X SATA ZCR (Prowler) */
138 { 0x9005, 0x0285, 0x103C, 0x3227, 0, 0, 42 }, /* AAR-2610SA PCI SATA 6ch */ 138 { 0x9005, 0x0285, 0x103C, 0x3227, 0, 0, 42 }, /* AAR-2610SA PCI SATA 6ch */
139 { 0x9005, 0x0285, 0x9005, 0x0296, 0, 0, 43 }, /* ASR-2240S (SabreExpress) */ 139 { 0x9005, 0x0285, 0x9005, 0x0296, 0, 0, 43 }, /* ASR-2240S (SabreExpress) */
140 { 0x9005, 0x0285, 0x9005, 0x0297, 0, 0, 44 }, /* ASR-4005SAS */ 140 { 0x9005, 0x0285, 0x9005, 0x0297, 0, 0, 44 }, /* ASR-4005 */
141 { 0x9005, 0x0285, 0x1014, 0x02F2, 0, 0, 45 }, /* IBM 8i (AvonPark) */ 141 { 0x9005, 0x0285, 0x1014, 0x02F2, 0, 0, 45 }, /* IBM 8i (AvonPark) */
142 { 0x9005, 0x0285, 0x1014, 0x0312, 0, 0, 45 }, /* IBM 8i (AvonPark Lite) */ 142 { 0x9005, 0x0285, 0x1014, 0x0312, 0, 0, 45 }, /* IBM 8i (AvonPark Lite) */
143 { 0x9005, 0x0286, 0x1014, 0x9580, 0, 0, 46 }, /* IBM 8k/8k-l8 (Aurora) */ 143 { 0x9005, 0x0286, 0x1014, 0x9580, 0, 0, 46 }, /* IBM 8k/8k-l8 (Aurora) */
144 { 0x9005, 0x0286, 0x1014, 0x9540, 0, 0, 47 }, /* IBM 8k/8k-l4 (Aurora Lite) */ 144 { 0x9005, 0x0286, 0x1014, 0x9540, 0, 0, 47 }, /* IBM 8k/8k-l4 (Aurora Lite) */
145 { 0x9005, 0x0285, 0x9005, 0x0298, 0, 0, 48 }, /* ASR-4000SAS (BlackBird) */ 145 { 0x9005, 0x0285, 0x9005, 0x0298, 0, 0, 48 }, /* ASR-4000 (BlackBird) */
146 { 0x9005, 0x0285, 0x9005, 0x0299, 0, 0, 49 }, /* ASR-4800SAS (Marauder-X) */ 146 { 0x9005, 0x0285, 0x9005, 0x0299, 0, 0, 49 }, /* ASR-4800SAS (Marauder-X) */
147 { 0x9005, 0x0285, 0x9005, 0x029a, 0, 0, 50 }, /* ASR-4805SAS (Marauder-E) */ 147 { 0x9005, 0x0285, 0x9005, 0x029a, 0, 0, 50 }, /* ASR-4805SAS (Marauder-E) */
148 { 0x9005, 0x0286, 0x9005, 0x02a2, 0, 0, 51 }, /* ASR-3800SAS (Hurricane44) */ 148 { 0x9005, 0x0286, 0x9005, 0x02a2, 0, 0, 51 }, /* ASR-3800 (Hurricane44) */
149 149
150 { 0x9005, 0x0285, 0x1028, 0x0287, 0, 0, 52 }, /* Perc 320/DC*/ 150 { 0x9005, 0x0285, 0x1028, 0x0287, 0, 0, 52 }, /* Perc 320/DC*/
151 { 0x1011, 0x0046, 0x9005, 0x0365, 0, 0, 53 }, /* Adaptec 5400S (Mustang)*/ 151 { 0x1011, 0x0046, 0x9005, 0x0365, 0, 0, 53 }, /* Adaptec 5400S (Mustang)*/
@@ -193,8 +193,8 @@ static struct aac_driver_ident aac_drivers[] = {
193 { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2820SA ", 1 }, /* AAR-2820SA (Intruder) */ 193 { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2820SA ", 1 }, /* AAR-2820SA (Intruder) */
194 { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2620SA ", 1 }, /* AAR-2620SA (Intruder) */ 194 { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2620SA ", 1 }, /* AAR-2620SA (Intruder) */
195 { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2420SA ", 1 }, /* AAR-2420SA (Intruder) */ 195 { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2420SA ", 1 }, /* AAR-2420SA (Intruder) */
196 { aac_rkt_init, "aacraid", "ICP ", "ICP9024R0 ", 2 }, /* ICP9024R0 (Lancer) */ 196 { aac_rkt_init, "aacraid", "ICP ", "ICP9024RO ", 2 }, /* ICP9024RO (Lancer) */
197 { aac_rkt_init, "aacraid", "ICP ", "ICP9014R0 ", 1 }, /* ICP9014R0 (Lancer) */ 197 { aac_rkt_init, "aacraid", "ICP ", "ICP9014RO ", 1 }, /* ICP9014RO (Lancer) */
198 { aac_rkt_init, "aacraid", "ICP ", "ICP9047MA ", 1 }, /* ICP9047MA (Lancer) */ 198 { aac_rkt_init, "aacraid", "ICP ", "ICP9047MA ", 1 }, /* ICP9047MA (Lancer) */
199 { aac_rkt_init, "aacraid", "ICP ", "ICP9087MA ", 1 }, /* ICP9087MA (Lancer) */ 199 { aac_rkt_init, "aacraid", "ICP ", "ICP9087MA ", 1 }, /* ICP9087MA (Lancer) */
200 { aac_rkt_init, "aacraid", "ICP ", "ICP5445AU ", 1 }, /* ICP5445AU (Hurricane44) */ 200 { aac_rkt_init, "aacraid", "ICP ", "ICP5445AU ", 1 }, /* ICP5445AU (Hurricane44) */
@@ -212,14 +212,14 @@ static struct aac_driver_ident aac_drivers[] = {
212 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2026ZCR ", 1 }, /* ESD SO-DIMM PCI-X SATA ZCR (Prowler) */ 212 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2026ZCR ", 1 }, /* ESD SO-DIMM PCI-X SATA ZCR (Prowler) */
213 { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2610SA ", 1 }, /* SATA 6Ch (Bearcat) */ 213 { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2610SA ", 1 }, /* SATA 6Ch (Bearcat) */
214 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2240S ", 1 }, /* ASR-2240S (SabreExpress) */ 214 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2240S ", 1 }, /* ASR-2240S (SabreExpress) */
215 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4005SAS ", 1 }, /* ASR-4005SAS */ 215 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4005 ", 1 }, /* ASR-4005 */
216 { aac_rx_init, "ServeRAID","IBM ", "ServeRAID 8i ", 1 }, /* IBM 8i (AvonPark) */ 216 { aac_rx_init, "ServeRAID","IBM ", "ServeRAID 8i ", 1 }, /* IBM 8i (AvonPark) */
217 { aac_rkt_init, "ServeRAID","IBM ", "ServeRAID 8k-l8 ", 1 }, /* IBM 8k/8k-l8 (Aurora) */ 217 { aac_rkt_init, "ServeRAID","IBM ", "ServeRAID 8k-l8 ", 1 }, /* IBM 8k/8k-l8 (Aurora) */
218 { aac_rkt_init, "ServeRAID","IBM ", "ServeRAID 8k-l4 ", 1 }, /* IBM 8k/8k-l4 (Aurora Lite) */ 218 { aac_rkt_init, "ServeRAID","IBM ", "ServeRAID 8k-l4 ", 1 }, /* IBM 8k/8k-l4 (Aurora Lite) */
219 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4000SAS ", 1 }, /* ASR-4000SAS (BlackBird & AvonPark) */ 219 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4000 ", 1 }, /* ASR-4000 (BlackBird & AvonPark) */
220 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4800SAS ", 1 }, /* ASR-4800SAS (Marauder-X) */ 220 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4800SAS ", 1 }, /* ASR-4800SAS (Marauder-X) */
221 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4805SAS ", 1 }, /* ASR-4805SAS (Marauder-E) */ 221 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4805SAS ", 1 }, /* ASR-4805SAS (Marauder-E) */
222 { aac_rkt_init, "aacraid", "ADAPTEC ", "ASR-3800SAS ", 1 }, /* ASR-3800SAS (Hurricane44) */ 222 { aac_rkt_init, "aacraid", "ADAPTEC ", "ASR-3800 ", 1 }, /* ASR-3800 (Hurricane44) */
223 223
224 { aac_rx_init, "percraid", "DELL ", "PERC 320/DC ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG }, /* Perc 320/DC*/ 224 { aac_rx_init, "percraid", "DELL ", "PERC 320/DC ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG }, /* Perc 320/DC*/
225 { aac_sa_init, "aacraid", "ADAPTEC ", "Adaptec 5400S ", 4, AAC_QUIRK_34SG }, /* Adaptec 5400S (Mustang)*/ 225 { aac_sa_init, "aacraid", "ADAPTEC ", "Adaptec 5400S ", 4, AAC_QUIRK_34SG }, /* Adaptec 5400S (Mustang)*/
diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c
index 2b344356a29e..306bec355e45 100644
--- a/drivers/scsi/advansys.c
+++ b/drivers/scsi/advansys.c
@@ -18215,6 +18215,7 @@ AdvInquiryHandling(
18215} 18215}
18216MODULE_LICENSE("Dual BSD/GPL"); 18216MODULE_LICENSE("Dual BSD/GPL");
18217 18217
18218#ifdef CONFIG_PCI
18218/* PCI Devices supported by this driver */ 18219/* PCI Devices supported by this driver */
18219static struct pci_device_id advansys_pci_tbl[] __devinitdata = { 18220static struct pci_device_id advansys_pci_tbl[] __devinitdata = {
18220 { PCI_VENDOR_ID_ASP, PCI_DEVICE_ID_ASP_1200A, 18221 { PCI_VENDOR_ID_ASP, PCI_DEVICE_ID_ASP_1200A,
@@ -18232,4 +18233,4 @@ static struct pci_device_id advansys_pci_tbl[] __devinitdata = {
18232 { } 18233 { }
18233}; 18234};
18234MODULE_DEVICE_TABLE(pci, advansys_pci_tbl); 18235MODULE_DEVICE_TABLE(pci, advansys_pci_tbl);
18235 18236#endif /* CONFIG_PCI */
diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c
index d0b139cccbbc..437684084377 100644
--- a/drivers/scsi/iscsi_tcp.c
+++ b/drivers/scsi/iscsi_tcp.c
@@ -749,7 +749,7 @@ static int iscsi_scsi_data_in(struct iscsi_conn *conn)
749 if (!offset) 749 if (!offset)
750 crypto_hash_update( 750 crypto_hash_update(
751 &tcp_conn->rx_hash, 751 &tcp_conn->rx_hash,
752 &sg[i], 1); 752 &sg[i], sg[i].length);
753 else 753 else
754 partial_sg_digest_update( 754 partial_sg_digest_update(
755 &tcp_conn->rx_hash, 755 &tcp_conn->rx_hash,
@@ -1777,13 +1777,13 @@ iscsi_tcp_conn_create(struct iscsi_cls_session *cls_session, uint32_t conn_idx)
1777 tcp_conn->tx_hash.tfm = crypto_alloc_hash("crc32c", 0, 1777 tcp_conn->tx_hash.tfm = crypto_alloc_hash("crc32c", 0,
1778 CRYPTO_ALG_ASYNC); 1778 CRYPTO_ALG_ASYNC);
1779 tcp_conn->tx_hash.flags = 0; 1779 tcp_conn->tx_hash.flags = 0;
1780 if (!tcp_conn->tx_hash.tfm) 1780 if (IS_ERR(tcp_conn->tx_hash.tfm))
1781 goto free_tcp_conn; 1781 goto free_tcp_conn;
1782 1782
1783 tcp_conn->rx_hash.tfm = crypto_alloc_hash("crc32c", 0, 1783 tcp_conn->rx_hash.tfm = crypto_alloc_hash("crc32c", 0,
1784 CRYPTO_ALG_ASYNC); 1784 CRYPTO_ALG_ASYNC);
1785 tcp_conn->rx_hash.flags = 0; 1785 tcp_conn->rx_hash.flags = 0;
1786 if (!tcp_conn->rx_hash.tfm) 1786 if (IS_ERR(tcp_conn->rx_hash.tfm))
1787 goto free_tx_tfm; 1787 goto free_tx_tfm;
1788 1788
1789 return cls_conn; 1789 return cls_conn;
@@ -2044,13 +2044,11 @@ iscsi_tcp_conn_get_param(struct iscsi_cls_conn *cls_conn,
2044 sk = tcp_conn->sock->sk; 2044 sk = tcp_conn->sock->sk;
2045 if (sk->sk_family == PF_INET) { 2045 if (sk->sk_family == PF_INET) {
2046 inet = inet_sk(sk); 2046 inet = inet_sk(sk);
2047 len = sprintf(buf, "%u.%u.%u.%u\n", 2047 len = sprintf(buf, NIPQUAD_FMT "\n",
2048 NIPQUAD(inet->daddr)); 2048 NIPQUAD(inet->daddr));
2049 } else { 2049 } else {
2050 np = inet6_sk(sk); 2050 np = inet6_sk(sk);
2051 len = sprintf(buf, 2051 len = sprintf(buf, NIP6_FMT "\n", NIP6(np->daddr));
2052 "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x\n",
2053 NIP6(np->daddr));
2054 } 2052 }
2055 mutex_unlock(&conn->xmitmutex); 2053 mutex_unlock(&conn->xmitmutex);
2056 break; 2054 break;
diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c
index e11b23c641e2..d37048c96eab 100644
--- a/drivers/scsi/libiscsi.c
+++ b/drivers/scsi/libiscsi.c
@@ -260,7 +260,7 @@ static int iscsi_scsi_cmd_rsp(struct iscsi_conn *conn, struct iscsi_hdr *hdr,
260 } 260 }
261 261
262 if (rhdr->cmd_status == SAM_STAT_CHECK_CONDITION) { 262 if (rhdr->cmd_status == SAM_STAT_CHECK_CONDITION) {
263 int senselen; 263 uint16_t senselen;
264 264
265 if (datalen < 2) { 265 if (datalen < 2) {
266invalid_datalen: 266invalid_datalen:
@@ -270,12 +270,12 @@ invalid_datalen:
270 goto out; 270 goto out;
271 } 271 }
272 272
273 senselen = (data[0] << 8) | data[1]; 273 senselen = be16_to_cpu(*(uint16_t *)data);
274 if (datalen < senselen) 274 if (datalen < senselen)
275 goto invalid_datalen; 275 goto invalid_datalen;
276 276
277 memcpy(sc->sense_buffer, data + 2, 277 memcpy(sc->sense_buffer, data + 2,
278 min(senselen, SCSI_SENSE_BUFFERSIZE)); 278 min_t(uint16_t, senselen, SCSI_SENSE_BUFFERSIZE));
279 debug_scsi("copied %d bytes of sense\n", 279 debug_scsi("copied %d bytes of sense\n",
280 min(senselen, SCSI_SENSE_BUFFERSIZE)); 280 min(senselen, SCSI_SENSE_BUFFERSIZE));
281 } 281 }
diff --git a/drivers/scsi/lpfc/lpfc_mem.c b/drivers/scsi/lpfc/lpfc_mem.c
index 066292d3995a..ec3bbbde6f7a 100644
--- a/drivers/scsi/lpfc/lpfc_mem.c
+++ b/drivers/scsi/lpfc/lpfc_mem.c
@@ -56,6 +56,9 @@ lpfc_mem_alloc(struct lpfc_hba * phba)
56 56
57 pool->elements = kmalloc(sizeof(struct lpfc_dmabuf) * 57 pool->elements = kmalloc(sizeof(struct lpfc_dmabuf) *
58 LPFC_MBUF_POOL_SIZE, GFP_KERNEL); 58 LPFC_MBUF_POOL_SIZE, GFP_KERNEL);
59 if (!pool->elements)
60 goto fail_free_lpfc_mbuf_pool;
61
59 pool->max_count = 0; 62 pool->max_count = 0;
60 pool->current_count = 0; 63 pool->current_count = 0;
61 for ( i = 0; i < LPFC_MBUF_POOL_SIZE; i++) { 64 for ( i = 0; i < LPFC_MBUF_POOL_SIZE; i++) {
@@ -82,10 +85,11 @@ lpfc_mem_alloc(struct lpfc_hba * phba)
82 fail_free_mbox_pool: 85 fail_free_mbox_pool:
83 mempool_destroy(phba->mbox_mem_pool); 86 mempool_destroy(phba->mbox_mem_pool);
84 fail_free_mbuf_pool: 87 fail_free_mbuf_pool:
85 while (--i) 88 while (i--)
86 pci_pool_free(phba->lpfc_mbuf_pool, pool->elements[i].virt, 89 pci_pool_free(phba->lpfc_mbuf_pool, pool->elements[i].virt,
87 pool->elements[i].phys); 90 pool->elements[i].phys);
88 kfree(pool->elements); 91 kfree(pool->elements);
92 fail_free_lpfc_mbuf_pool:
89 pci_pool_destroy(phba->lpfc_mbuf_pool); 93 pci_pool_destroy(phba->lpfc_mbuf_pool);
90 fail_free_dma_buf_pool: 94 fail_free_dma_buf_pool:
91 pci_pool_destroy(phba->lpfc_scsi_dma_buf_pool); 95 pci_pool_destroy(phba->lpfc_scsi_dma_buf_pool);
diff --git a/drivers/scsi/megaraid/megaraid_sas.c b/drivers/scsi/megaraid/megaraid_sas.c
index 046223b4ae57..b5bdd0d7a8bf 100644
--- a/drivers/scsi/megaraid/megaraid_sas.c
+++ b/drivers/scsi/megaraid/megaraid_sas.c
@@ -13,8 +13,8 @@
13 * Version : v00.00.03.05 13 * Version : v00.00.03.05
14 * 14 *
15 * Authors: 15 * Authors:
16 * Sreenivas Bagalkote <Sreenivas.Bagalkote@lsil.com> 16 * Sreenivas Bagalkote <Sreenivas.Bagalkote@lsi.com>
17 * Sumant Patro <Sumant.Patro@lsil.com> 17 * Sumant Patro <Sumant.Patro@lsi.com>
18 * 18 *
19 * List of supported controllers 19 * List of supported controllers
20 * 20 *
@@ -45,7 +45,7 @@
45 45
46MODULE_LICENSE("GPL"); 46MODULE_LICENSE("GPL");
47MODULE_VERSION(MEGASAS_VERSION); 47MODULE_VERSION(MEGASAS_VERSION);
48MODULE_AUTHOR("sreenivas.bagalkote@lsil.com"); 48MODULE_AUTHOR("megaraidlinux@lsi.com");
49MODULE_DESCRIPTION("LSI Logic MegaRAID SAS Driver"); 49MODULE_DESCRIPTION("LSI Logic MegaRAID SAS Driver");
50 50
51/* 51/*
diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c
index 16af5b79e587..1548d42a3b43 100644
--- a/drivers/scsi/qla1280.c
+++ b/drivers/scsi/qla1280.c
@@ -1341,7 +1341,7 @@ qla1280_return_status(struct response * sts, struct scsi_cmnd *cp)
1341 int host_status = DID_ERROR; 1341 int host_status = DID_ERROR;
1342 uint16_t comp_status = le16_to_cpu(sts->comp_status); 1342 uint16_t comp_status = le16_to_cpu(sts->comp_status);
1343 uint16_t state_flags = le16_to_cpu(sts->state_flags); 1343 uint16_t state_flags = le16_to_cpu(sts->state_flags);
1344 uint16_t residual_length = le32_to_cpu(sts->residual_length); 1344 uint32_t residual_length = le32_to_cpu(sts->residual_length);
1345 uint16_t scsi_status = le16_to_cpu(sts->scsi_status); 1345 uint16_t scsi_status = le16_to_cpu(sts->scsi_status);
1346#if DEBUG_QLA1280_INTR 1346#if DEBUG_QLA1280_INTR
1347 static char *reason[] = { 1347 static char *reason[] = {
@@ -1413,8 +1413,10 @@ qla1280_return_status(struct response * sts, struct scsi_cmnd *cp)
1413 "scsi: Underflow detected - retrying " 1413 "scsi: Underflow detected - retrying "
1414 "command.\n"); 1414 "command.\n");
1415 host_status = DID_ERROR; 1415 host_status = DID_ERROR;
1416 } else 1416 } else {
1417 cp->resid = residual_length;
1417 host_status = DID_OK; 1418 host_status = DID_OK;
1419 }
1418 break; 1420 break;
1419 1421
1420 default: 1422 default:
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index c4fc40f8e8ca..2c10130d9e03 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -1602,6 +1602,7 @@ typedef struct fc_port {
1602 1602
1603#define CT_REJECT_RESPONSE 0x8001 1603#define CT_REJECT_RESPONSE 0x8001
1604#define CT_ACCEPT_RESPONSE 0x8002 1604#define CT_ACCEPT_RESPONSE 0x8002
1605#define CT_REASON_INVALID_COMMAND_CODE 0x01
1605#define CT_REASON_CANNOT_PERFORM 0x09 1606#define CT_REASON_CANNOT_PERFORM 0x09
1606#define CT_EXPL_ALREADY_REGISTERED 0x10 1607#define CT_EXPL_ALREADY_REGISTERED 0x10
1607 1608
@@ -2079,6 +2080,7 @@ typedef struct scsi_qla_host {
2079 uint32_t msi_enabled :1; 2080 uint32_t msi_enabled :1;
2080 uint32_t msix_enabled :1; 2081 uint32_t msix_enabled :1;
2081 uint32_t disable_serdes :1; 2082 uint32_t disable_serdes :1;
2083 uint32_t gpsc_supported :1;
2082 } flags; 2084 } flags;
2083 2085
2084 atomic_t loop_state; 2086 atomic_t loop_state;
diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
index 32ebeec45ff0..e4dd12f4b80e 100644
--- a/drivers/scsi/qla2xxx/qla_gbl.h
+++ b/drivers/scsi/qla2xxx/qla_gbl.h
@@ -45,7 +45,6 @@ extern void qla2x00_update_fcports(scsi_qla_host_t *);
45extern int qla2x00_abort_isp(scsi_qla_host_t *); 45extern int qla2x00_abort_isp(scsi_qla_host_t *);
46 46
47extern void qla2x00_update_fcport(scsi_qla_host_t *, fc_port_t *); 47extern void qla2x00_update_fcport(scsi_qla_host_t *, fc_port_t *);
48extern void qla2x00_reg_remote_port(scsi_qla_host_t *, fc_port_t *);
49 48
50extern void qla2x00_alloc_fw_dump(scsi_qla_host_t *); 49extern void qla2x00_alloc_fw_dump(scsi_qla_host_t *);
51extern void qla2x00_try_to_stop_firmware(scsi_qla_host_t *); 50extern void qla2x00_try_to_stop_firmware(scsi_qla_host_t *);
diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c
index 97fbc62ec669..ec5b2dd90d6a 100644
--- a/drivers/scsi/qla2xxx/qla_gs.c
+++ b/drivers/scsi/qla2xxx/qla_gs.c
@@ -127,8 +127,8 @@ qla2x00_chk_ms_status(scsi_qla_host_t *ha, ms_iocb_entry_t *ms_pkt,
127 ha->host_no, routine, ms_pkt->entry_status)); 127 ha->host_no, routine, ms_pkt->entry_status));
128 } else { 128 } else {
129 if (IS_QLA24XX(ha) || IS_QLA54XX(ha)) 129 if (IS_QLA24XX(ha) || IS_QLA54XX(ha))
130 comp_status = 130 comp_status = le16_to_cpu(
131 ((struct ct_entry_24xx *)ms_pkt)->comp_status; 131 ((struct ct_entry_24xx *)ms_pkt)->comp_status);
132 else 132 else
133 comp_status = le16_to_cpu(ms_pkt->status); 133 comp_status = le16_to_cpu(ms_pkt->status);
134 switch (comp_status) { 134 switch (comp_status) {
@@ -143,6 +143,7 @@ qla2x00_chk_ms_status(scsi_qla_host_t *ha, ms_iocb_entry_t *ms_pkt,
143 DEBUG2_3(qla2x00_dump_buffer( 143 DEBUG2_3(qla2x00_dump_buffer(
144 (uint8_t *)&ct_rsp->header, 144 (uint8_t *)&ct_rsp->header,
145 sizeof(struct ct_rsp_hdr))); 145 sizeof(struct ct_rsp_hdr)));
146 rval = QLA_INVALID_COMMAND;
146 } else 147 } else
147 rval = QLA_SUCCESS; 148 rval = QLA_SUCCESS;
148 break; 149 break;
@@ -1683,7 +1684,7 @@ qla2x00_gfpn_id(scsi_qla_host_t *ha, sw_info_t *list)
1683 memset(list[i].fabric_port_name, 0, WWN_SIZE); 1684 memset(list[i].fabric_port_name, 0, WWN_SIZE);
1684 1685
1685 /* Prepare common MS IOCB */ 1686 /* Prepare common MS IOCB */
1686 ms_pkt = qla2x00_prep_ms_iocb(ha, GFPN_ID_REQ_SIZE, 1687 ms_pkt = ha->isp_ops.prep_ms_iocb(ha, GFPN_ID_REQ_SIZE,
1687 GFPN_ID_RSP_SIZE); 1688 GFPN_ID_RSP_SIZE);
1688 1689
1689 /* Prepare CT request */ 1690 /* Prepare CT request */
@@ -1784,6 +1785,8 @@ qla2x00_gpsc(scsi_qla_host_t *ha, sw_info_t *list)
1784 1785
1785 if (!IS_QLA24XX(ha) && !IS_QLA54XX(ha)) 1786 if (!IS_QLA24XX(ha) && !IS_QLA54XX(ha))
1786 return QLA_FUNCTION_FAILED; 1787 return QLA_FUNCTION_FAILED;
1788 if (!ha->flags.gpsc_supported)
1789 return QLA_FUNCTION_FAILED;
1787 1790
1788 rval = qla2x00_mgmt_svr_login(ha); 1791 rval = qla2x00_mgmt_svr_login(ha);
1789 if (rval) 1792 if (rval)
@@ -1813,8 +1816,19 @@ qla2x00_gpsc(scsi_qla_host_t *ha, sw_info_t *list)
1813 /*EMPTY*/ 1816 /*EMPTY*/
1814 DEBUG2_3(printk("scsi(%ld): GPSC issue IOCB " 1817 DEBUG2_3(printk("scsi(%ld): GPSC issue IOCB "
1815 "failed (%d).\n", ha->host_no, rval)); 1818 "failed (%d).\n", ha->host_no, rval));
1816 } else if (qla2x00_chk_ms_status(ha, ms_pkt, ct_rsp, 1819 } else if ((rval = qla2x00_chk_ms_status(ha, ms_pkt, ct_rsp,
1817 "GPSC") != QLA_SUCCESS) { 1820 "GPSC")) != QLA_SUCCESS) {
1821 /* FM command unsupported? */
1822 if (rval == QLA_INVALID_COMMAND &&
1823 ct_rsp->header.reason_code ==
1824 CT_REASON_INVALID_COMMAND_CODE) {
1825 DEBUG2(printk("scsi(%ld): GPSC command "
1826 "unsupported, disabling query...\n",
1827 ha->host_no));
1828 ha->flags.gpsc_supported = 0;
1829 rval = QLA_FUNCTION_FAILED;
1830 break;
1831 }
1818 rval = QLA_FUNCTION_FAILED; 1832 rval = QLA_FUNCTION_FAILED;
1819 } else { 1833 } else {
1820 /* Save portname */ 1834 /* Save portname */
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index a823f0bc519d..b3dac26ddba3 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -2103,40 +2103,7 @@ qla2x00_iidma_fcport(scsi_qla_host_t *ha, fc_port_t *fcport)
2103 } 2103 }
2104} 2104}
2105 2105
2106/* 2106static void
2107 * qla2x00_update_fcport
2108 * Updates device on list.
2109 *
2110 * Input:
2111 * ha = adapter block pointer.
2112 * fcport = port structure pointer.
2113 *
2114 * Return:
2115 * 0 - Success
2116 * BIT_0 - error
2117 *
2118 * Context:
2119 * Kernel context.
2120 */
2121void
2122qla2x00_update_fcport(scsi_qla_host_t *ha, fc_port_t *fcport)
2123{
2124 fcport->ha = ha;
2125 fcport->login_retry = 0;
2126 fcport->port_login_retry_count = ha->port_down_retry_count *
2127 PORT_RETRY_TIME;
2128 atomic_set(&fcport->port_down_timer, ha->port_down_retry_count *
2129 PORT_RETRY_TIME);
2130 fcport->flags &= ~FCF_LOGIN_NEEDED;
2131
2132 qla2x00_iidma_fcport(ha, fcport);
2133
2134 atomic_set(&fcport->state, FCS_ONLINE);
2135
2136 qla2x00_reg_remote_port(ha, fcport);
2137}
2138
2139void
2140qla2x00_reg_remote_port(scsi_qla_host_t *ha, fc_port_t *fcport) 2107qla2x00_reg_remote_port(scsi_qla_host_t *ha, fc_port_t *fcport)
2141{ 2108{
2142 struct fc_rport_identifiers rport_ids; 2109 struct fc_rport_identifiers rport_ids;
@@ -2179,6 +2146,39 @@ qla2x00_reg_remote_port(scsi_qla_host_t *ha, fc_port_t *fcport)
2179} 2146}
2180 2147
2181/* 2148/*
2149 * qla2x00_update_fcport
2150 * Updates device on list.
2151 *
2152 * Input:
2153 * ha = adapter block pointer.
2154 * fcport = port structure pointer.
2155 *
2156 * Return:
2157 * 0 - Success
2158 * BIT_0 - error
2159 *
2160 * Context:
2161 * Kernel context.
2162 */
2163void
2164qla2x00_update_fcport(scsi_qla_host_t *ha, fc_port_t *fcport)
2165{
2166 fcport->ha = ha;
2167 fcport->login_retry = 0;
2168 fcport->port_login_retry_count = ha->port_down_retry_count *
2169 PORT_RETRY_TIME;
2170 atomic_set(&fcport->port_down_timer, ha->port_down_retry_count *
2171 PORT_RETRY_TIME);
2172 fcport->flags &= ~FCF_LOGIN_NEEDED;
2173
2174 qla2x00_iidma_fcport(ha, fcport);
2175
2176 atomic_set(&fcport->state, FCS_ONLINE);
2177
2178 qla2x00_reg_remote_port(ha, fcport);
2179}
2180
2181/*
2182 * qla2x00_configure_fabric 2182 * qla2x00_configure_fabric
2183 * Setup SNS devices with loop ID's. 2183 * Setup SNS devices with loop ID's.
2184 * 2184 *
@@ -3476,9 +3476,11 @@ qla24xx_nvram_config(scsi_qla_host_t *ha)
3476 3476
3477 /* Set host adapter parameters. */ 3477 /* Set host adapter parameters. */
3478 ha->flags.disable_risc_code_load = 0; 3478 ha->flags.disable_risc_code_load = 0;
3479 ha->flags.enable_lip_reset = 1; 3479 ha->flags.enable_lip_reset = 0;
3480 ha->flags.enable_lip_full_login = 1; 3480 ha->flags.enable_lip_full_login =
3481 ha->flags.enable_target_reset = 1; 3481 le32_to_cpu(nv->host_p) & BIT_10 ? 1: 0;
3482 ha->flags.enable_target_reset =
3483 le32_to_cpu(nv->host_p) & BIT_11 ? 1: 0;
3482 ha->flags.enable_led_scheme = 0; 3484 ha->flags.enable_led_scheme = 0;
3483 ha->flags.disable_serdes = le32_to_cpu(nv->host_p) & BIT_5 ? 1: 0; 3485 ha->flags.disable_serdes = le32_to_cpu(nv->host_p) & BIT_5 ? 1: 0;
3484 3486
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index d3b6df4d55c8..39fd17b05be5 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -134,11 +134,11 @@ qla2300_intr_handler(int irq, void *dev_id)
134 if (stat & HSR_RISC_PAUSED) { 134 if (stat & HSR_RISC_PAUSED) {
135 hccr = RD_REG_WORD(&reg->hccr); 135 hccr = RD_REG_WORD(&reg->hccr);
136 if (hccr & (BIT_15 | BIT_13 | BIT_11 | BIT_8)) 136 if (hccr & (BIT_15 | BIT_13 | BIT_11 | BIT_8))
137 qla_printk(KERN_INFO, ha, 137 qla_printk(KERN_INFO, ha, "Parity error -- "
138 "Parity error -- HCCR=%x.\n", hccr); 138 "HCCR=%x, Dumping firmware!\n", hccr);
139 else 139 else
140 qla_printk(KERN_INFO, ha, 140 qla_printk(KERN_INFO, ha, "RISC paused -- "
141 "RISC paused -- HCCR=%x.\n", hccr); 141 "HCCR=%x, Dumping firmware!\n", hccr);
142 142
143 /* 143 /*
144 * Issue a "HARD" reset in order for the RISC 144 * Issue a "HARD" reset in order for the RISC
@@ -147,6 +147,8 @@ qla2300_intr_handler(int irq, void *dev_id)
147 */ 147 */
148 WRT_REG_WORD(&reg->hccr, HCCR_RESET_RISC); 148 WRT_REG_WORD(&reg->hccr, HCCR_RESET_RISC);
149 RD_REG_WORD(&reg->hccr); 149 RD_REG_WORD(&reg->hccr);
150
151 ha->isp_ops.fw_dump(ha, 1);
150 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags); 152 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
151 break; 153 break;
152 } else if ((stat & HSR_RISC_INT) == 0) 154 } else if ((stat & HSR_RISC_INT) == 0)
@@ -475,6 +477,8 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb)
475 set_bit(RESET_MARKER_NEEDED, &ha->dpc_flags); 477 set_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
476 } 478 }
477 set_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags); 479 set_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags);
480
481 ha->flags.gpsc_supported = 1;
478 break; 482 break;
479 483
480 case MBA_CHG_IN_CONNECTION: /* Change in connection mode */ 484 case MBA_CHG_IN_CONNECTION: /* Change in connection mode */
@@ -1440,8 +1444,7 @@ qla24xx_intr_handler(int irq, void *dev_id)
1440 1444
1441 qla_printk(KERN_INFO, ha, "RISC paused -- HCCR=%x, " 1445 qla_printk(KERN_INFO, ha, "RISC paused -- HCCR=%x, "
1442 "Dumping firmware!\n", hccr); 1446 "Dumping firmware!\n", hccr);
1443 qla24xx_fw_dump(ha, 1); 1447 ha->isp_ops.fw_dump(ha, 1);
1444
1445 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags); 1448 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
1446 break; 1449 break;
1447 } else if ((stat & HSRX_RISC_INT) == 0) 1450 } else if ((stat & HSRX_RISC_INT) == 0)
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index 4cde76c85cb3..077e5789beeb 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -1339,9 +1339,9 @@ qla2x00_lip_reset(scsi_qla_host_t *ha)
1339 1339
1340 if (IS_QLA24XX(ha) || IS_QLA54XX(ha)) { 1340 if (IS_QLA24XX(ha) || IS_QLA54XX(ha)) {
1341 mcp->mb[0] = MBC_LIP_FULL_LOGIN; 1341 mcp->mb[0] = MBC_LIP_FULL_LOGIN;
1342 mcp->mb[1] = BIT_0; 1342 mcp->mb[1] = BIT_6;
1343 mcp->mb[2] = 0xff; 1343 mcp->mb[2] = 0;
1344 mcp->mb[3] = 0; 1344 mcp->mb[3] = ha->loop_reset_delay;
1345 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0; 1345 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
1346 } else { 1346 } else {
1347 mcp->mb[0] = MBC_LIP_RESET; 1347 mcp->mb[0] = MBC_LIP_RESET;
@@ -1823,8 +1823,8 @@ qla2x00_full_login_lip(scsi_qla_host_t *ha)
1823 ha->host_no)); 1823 ha->host_no));
1824 1824
1825 mcp->mb[0] = MBC_LIP_FULL_LOGIN; 1825 mcp->mb[0] = MBC_LIP_FULL_LOGIN;
1826 mcp->mb[1] = 0; 1826 mcp->mb[1] = IS_QLA24XX(ha) || IS_QLA54XX(ha) ? BIT_3: 0;
1827 mcp->mb[2] = 0xff; 1827 mcp->mb[2] = 0;
1828 mcp->mb[3] = 0; 1828 mcp->mb[3] = 0;
1829 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0; 1829 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
1830 mcp->in_mb = MBX_0; 1830 mcp->in_mb = MBX_0;
@@ -2486,7 +2486,7 @@ qla2x00_trace_control(scsi_qla_host_t *ha, uint16_t ctrl, dma_addr_t eft_dma,
2486 mcp->mb[4] = LSW(MSD(eft_dma)); 2486 mcp->mb[4] = LSW(MSD(eft_dma));
2487 mcp->mb[5] = MSW(MSD(eft_dma)); 2487 mcp->mb[5] = MSW(MSD(eft_dma));
2488 mcp->mb[6] = buffers; 2488 mcp->mb[6] = buffers;
2489 mcp->mb[7] = buffers; 2489 mcp->mb[7] = 0;
2490 mcp->out_mb |= MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2; 2490 mcp->out_mb |= MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2;
2491 } 2491 }
2492 mcp->tov = 30; 2492 mcp->tov = 30;
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index d03523d3bf38..d6445ae841ba 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -1037,48 +1037,49 @@ eh_host_reset_lock:
1037static int 1037static int
1038qla2x00_loop_reset(scsi_qla_host_t *ha) 1038qla2x00_loop_reset(scsi_qla_host_t *ha)
1039{ 1039{
1040 int status = QLA_SUCCESS; 1040 int ret;
1041 struct fc_port *fcport; 1041 struct fc_port *fcport;
1042 1042
1043 if (ha->flags.enable_lip_full_login) {
1044 ret = qla2x00_full_login_lip(ha);
1045 if (ret != QLA_SUCCESS) {
1046 DEBUG2_3(printk("%s(%ld): bus_reset failed: "
1047 "full_login_lip=%d.\n", __func__, ha->host_no,
1048 ret));
1049 }
1050 atomic_set(&ha->loop_state, LOOP_DOWN);
1051 atomic_set(&ha->loop_down_timer, LOOP_DOWN_TIME);
1052 qla2x00_mark_all_devices_lost(ha, 0);
1053 qla2x00_wait_for_loop_ready(ha);
1054 }
1055
1043 if (ha->flags.enable_lip_reset) { 1056 if (ha->flags.enable_lip_reset) {
1044 status = qla2x00_lip_reset(ha); 1057 ret = qla2x00_lip_reset(ha);
1058 if (ret != QLA_SUCCESS) {
1059 DEBUG2_3(printk("%s(%ld): bus_reset failed: "
1060 "lip_reset=%d.\n", __func__, ha->host_no, ret));
1061 }
1062 qla2x00_wait_for_loop_ready(ha);
1045 } 1063 }
1046 1064
1047 if (status == QLA_SUCCESS && ha->flags.enable_target_reset) { 1065 if (ha->flags.enable_target_reset) {
1048 list_for_each_entry(fcport, &ha->fcports, list) { 1066 list_for_each_entry(fcport, &ha->fcports, list) {
1049 if (fcport->port_type != FCT_TARGET) 1067 if (fcport->port_type != FCT_TARGET)
1050 continue; 1068 continue;
1051 1069
1052 status = qla2x00_device_reset(ha, fcport); 1070 ret = qla2x00_device_reset(ha, fcport);
1053 if (status != QLA_SUCCESS) 1071 if (ret != QLA_SUCCESS) {
1054 break; 1072 DEBUG2_3(printk("%s(%ld): bus_reset failed: "
1073 "target_reset=%d d_id=%x.\n", __func__,
1074 ha->host_no, ret, fcport->d_id.b24));
1075 }
1055 } 1076 }
1056 } 1077 }
1057 1078
1058 if (status == QLA_SUCCESS &&
1059 ((!ha->flags.enable_target_reset &&
1060 !ha->flags.enable_lip_reset) ||
1061 ha->flags.enable_lip_full_login)) {
1062
1063 status = qla2x00_full_login_lip(ha);
1064 }
1065
1066 /* Issue marker command only when we are going to start the I/O */ 1079 /* Issue marker command only when we are going to start the I/O */
1067 ha->marker_needed = 1; 1080 ha->marker_needed = 1;
1068 1081
1069 if (status) { 1082 return QLA_SUCCESS;
1070 /* Empty */
1071 DEBUG2_3(printk("%s(%ld): **** FAILED ****\n",
1072 __func__,
1073 ha->host_no));
1074 } else {
1075 /* Empty */
1076 DEBUG3(printk("%s(%ld): exiting normally.\n",
1077 __func__,
1078 ha->host_no));
1079 }
1080
1081 return(status);
1082} 1083}
1083 1084
1084/* 1085/*
@@ -1413,7 +1414,9 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
1413 1414
1414 sht = &qla2x00_driver_template; 1415 sht = &qla2x00_driver_template;
1415 if (pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2422 || 1416 if (pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2422 ||
1416 pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2432) 1417 pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2432 ||
1418 pdev->device == PCI_DEVICE_ID_QLOGIC_ISP5422 ||
1419 pdev->device == PCI_DEVICE_ID_QLOGIC_ISP5432)
1417 sht = &qla24xx_driver_template; 1420 sht = &qla24xx_driver_template;
1418 host = scsi_host_alloc(sht, sizeof(scsi_qla_host_t)); 1421 host = scsi_host_alloc(sht, sizeof(scsi_qla_host_t));
1419 if (host == NULL) { 1422 if (host == NULL) {
diff --git a/drivers/scsi/qla2xxx/qla_version.h b/drivers/scsi/qla2xxx/qla_version.h
index 1fa0bce6b24e..459e0d6bd2b4 100644
--- a/drivers/scsi/qla2xxx/qla_version.h
+++ b/drivers/scsi/qla2xxx/qla_version.h
@@ -7,7 +7,7 @@
7/* 7/*
8 * Driver version 8 * Driver version
9 */ 9 */
10#define QLA2XXX_VERSION "8.01.07-k3" 10#define QLA2XXX_VERSION "8.01.07-k4"
11 11
12#define QLA_DRIVER_MAJOR_VER 8 12#define QLA_DRIVER_MAJOR_VER 8
13#define QLA_DRIVER_MINOR_VER 1 13#define QLA_DRIVER_MINOR_VER 1
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index 14e635aa44ce..b83d03c4deef 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -133,12 +133,10 @@ struct async_scan_data {
133/** 133/**
134 * scsi_complete_async_scans - Wait for asynchronous scans to complete 134 * scsi_complete_async_scans - Wait for asynchronous scans to complete
135 * 135 *
136 * Asynchronous scans add themselves to the scanning_hosts list. Once 136 * When this function returns, any host which started scanning before
137 * that list is empty, we know that the scans are complete. Rather than 137 * this function was called will have finished its scan. Hosts which
138 * waking up periodically to check the state of the list, we pretend to be 138 * started scanning after this function was called may or may not have
139 * a scanning task by adding ourselves at the end of the list and going to 139 * finished.
140 * sleep. When the task before us wakes us up, we take ourselves off the
141 * list and return.
142 */ 140 */
143int scsi_complete_async_scans(void) 141int scsi_complete_async_scans(void)
144{ 142{
@@ -171,6 +169,11 @@ int scsi_complete_async_scans(void)
171 169
172 spin_lock(&async_scan_lock); 170 spin_lock(&async_scan_lock);
173 list_del(&data->list); 171 list_del(&data->list);
172 if (!list_empty(&scanning_hosts)) {
173 struct async_scan_data *next = list_entry(scanning_hosts.next,
174 struct async_scan_data, list);
175 complete(&next->prev_finished);
176 }
174 done: 177 done:
175 spin_unlock(&async_scan_lock); 178 spin_unlock(&async_scan_lock);
176 179
@@ -739,6 +742,14 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result,
739 sdev->no_uld_attach = 1; 742 sdev->no_uld_attach = 1;
740 743
741 switch (sdev->type = (inq_result[0] & 0x1f)) { 744 switch (sdev->type = (inq_result[0] & 0x1f)) {
745 case TYPE_RBC:
746 /* RBC devices can return SCSI-3 compliance and yet
747 * still not support REPORT LUNS, so make them act as
748 * BLIST_NOREPORTLUN unless BLIST_REPORTLUN2 is
749 * specifically set */
750 if ((*bflags & BLIST_REPORTLUN2) == 0)
751 *bflags |= BLIST_NOREPORTLUN;
752 /* fall through */
742 case TYPE_TAPE: 753 case TYPE_TAPE:
743 case TYPE_DISK: 754 case TYPE_DISK:
744 case TYPE_PRINTER: 755 case TYPE_PRINTER:
@@ -749,11 +760,17 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result,
749 case TYPE_ENCLOSURE: 760 case TYPE_ENCLOSURE:
750 case TYPE_COMM: 761 case TYPE_COMM:
751 case TYPE_RAID: 762 case TYPE_RAID:
752 case TYPE_RBC:
753 sdev->writeable = 1; 763 sdev->writeable = 1;
754 break; 764 break;
755 case TYPE_WORM:
756 case TYPE_ROM: 765 case TYPE_ROM:
766 /* MMC devices can return SCSI-3 compliance and yet
767 * still not support REPORT LUNS, so make them act as
768 * BLIST_NOREPORTLUN unless BLIST_REPORTLUN2 is
769 * specifically set */
770 if ((*bflags & BLIST_REPORTLUN2) == 0)
771 *bflags |= BLIST_NOREPORTLUN;
772 /* fall through */
773 case TYPE_WORM:
757 sdev->writeable = 0; 774 sdev->writeable = 0;
758 break; 775 break;
759 default: 776 default:
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
index 9c22f1342715..ce0d14af33c8 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -1416,7 +1416,7 @@ static __init int iscsi_transport_init(void)
1416{ 1416{
1417 int err; 1417 int err;
1418 1418
1419 printk(KERN_INFO "Loading iSCSI transport class v%s.", 1419 printk(KERN_INFO "Loading iSCSI transport class v%s.\n",
1420 ISCSI_TRANSPORT_VERSION); 1420 ISCSI_TRANSPORT_VERSION);
1421 1421
1422 err = class_register(&iscsi_transport_class); 1422 err = class_register(&iscsi_transport_class);
diff --git a/drivers/scsi/scsi_transport_spi.c b/drivers/scsi/scsi_transport_spi.c
index 3fded4831460..014d7fea1ff3 100644
--- a/drivers/scsi/scsi_transport_spi.c
+++ b/drivers/scsi/scsi_transport_spi.c
@@ -122,7 +122,7 @@ static int spi_execute(struct scsi_device *sdev, const void *cmd,
122 if (!sshdr) 122 if (!sshdr)
123 sshdr = &sshdr_tmp; 123 sshdr = &sshdr_tmp;
124 124
125 if (scsi_normalize_sense(sense, sizeof(*sense), 125 if (scsi_normalize_sense(sense, SCSI_SENSE_BUFFERSIZE,
126 sshdr) 126 sshdr)
127 && sshdr->sense_key == UNIT_ATTENTION) 127 && sshdr->sense_key == UNIT_ATTENTION)
128 continue; 128 continue;
diff --git a/drivers/scsi/seagate.c b/drivers/scsi/seagate.c
index 5ffec2721b28..ff62e9708e1c 100644
--- a/drivers/scsi/seagate.c
+++ b/drivers/scsi/seagate.c
@@ -114,6 +114,7 @@
114#define DPRINTK( when, msg... ) do { if ( (DEBUG & (when)) == (when) ) printk( msg ); } while (0) 114#define DPRINTK( when, msg... ) do { if ( (DEBUG & (when)) == (when) ) printk( msg ); } while (0)
115#else 115#else
116#define DPRINTK( when, msg... ) do { } while (0) 116#define DPRINTK( when, msg... ) do { } while (0)
117#define DEBUG 0
117#endif 118#endif
118#define DANY( msg... ) DPRINTK( 0xffff, msg ); 119#define DANY( msg... ) DPRINTK( 0xffff, msg );
119 120
@@ -523,7 +524,7 @@ int __init seagate_st0x_detect (struct scsi_host_template * tpnt)
523#ifdef ARBITRATE 524#ifdef ARBITRATE
524 " ARBITRATE" 525 " ARBITRATE"
525#endif 526#endif
526#ifdef DEBUG 527#if DEBUG
527 " DEBUG" 528 " DEBUG"
528#endif 529#endif
529#ifdef FAST 530#ifdef FAST
@@ -733,7 +734,7 @@ static int internal_command (unsigned char target, unsigned char lun,
733 unsigned char *data = NULL; 734 unsigned char *data = NULL;
734 struct scatterlist *buffer = NULL; 735 struct scatterlist *buffer = NULL;
735 int clock, temp, nobuffs = 0, done = 0, len = 0; 736 int clock, temp, nobuffs = 0, done = 0, len = 0;
736#ifdef DEBUG 737#if DEBUG
737 int transfered = 0, phase = 0, newphase; 738 int transfered = 0, phase = 0, newphase;
738#endif 739#endif
739 register unsigned char status_read; 740 register unsigned char status_read;
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index fae6e95a6298..89e9b36b1788 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -468,7 +468,7 @@ static int sr_block_ioctl(struct inode *inode, struct file *file, unsigned cmd,
468 } 468 }
469 469
470 ret = cdrom_ioctl(file, &cd->cdi, inode, cmd, arg); 470 ret = cdrom_ioctl(file, &cd->cdi, inode, cmd, arg);
471 if (ret != ENOSYS) 471 if (ret != -ENOSYS)
472 return ret; 472 return ret;
473 473
474 /* 474 /*
diff --git a/drivers/usb/core/Kconfig b/drivers/usb/core/Kconfig
index f8324d8d06ac..3e66b2a9974a 100644
--- a/drivers/usb/core/Kconfig
+++ b/drivers/usb/core/Kconfig
@@ -72,22 +72,6 @@ config USB_SUSPEND
72 72
73 If you are unsure about this, say N here. 73 If you are unsure about this, say N here.
74 74
75config USB_MULTITHREAD_PROBE
76 bool "USB Multi-threaded probe (EXPERIMENTAL)"
77 depends on USB && EXPERIMENTAL
78 default n
79 help
80 Say Y here if you want the USB core to spawn a new thread for
81 every USB device that is probed. This can cause a small speedup
82 in boot times on systems with a lot of different USB devices.
83
84 This option should be safe to enable, but if any odd probing
85 problems are found, please disable it, or dynamically turn it
86 off in the /sys/module/usbcore/parameters/multithread_probe
87 file
88
89 When in doubt, say N.
90
91config USB_OTG 75config USB_OTG
92 bool 76 bool
93 depends on USB && EXPERIMENTAL 77 depends on USB && EXPERIMENTAL
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 2651c2e2a89f..1988224b362b 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -88,14 +88,7 @@ static DECLARE_WAIT_QUEUE_HEAD(khubd_wait);
88static struct task_struct *khubd_task; 88static struct task_struct *khubd_task;
89 89
90/* multithreaded probe logic */ 90/* multithreaded probe logic */
91static int multithread_probe = 91static int multithread_probe = 0;
92#ifdef CONFIG_USB_MULTITHREAD_PROBE
93 1;
94#else
95 0;
96#endif
97module_param(multithread_probe, bool, S_IRUGO);
98MODULE_PARM_DESC(multithread_probe, "Run each USB device probe in a new thread");
99 92
100/* cycle leds on hubs that aren't blinking for attention */ 93/* cycle leds on hubs that aren't blinking for attention */
101static int blinkenlights = 0; 94static int blinkenlights = 0;
diff --git a/drivers/usb/host/ohci-ep93xx.c b/drivers/usb/host/ohci-ep93xx.c
index 43ae696b2ec2..3348b07f0fe5 100644
--- a/drivers/usb/host/ohci-ep93xx.c
+++ b/drivers/usb/host/ohci-ep93xx.c
@@ -169,7 +169,7 @@ static int ohci_hcd_ep93xx_drv_remove(struct platform_device *pdev)
169static int ohci_hcd_ep93xx_drv_suspend(struct platform_device *pdev, pm_message_t state) 169static int ohci_hcd_ep93xx_drv_suspend(struct platform_device *pdev, pm_message_t state)
170{ 170{
171 struct usb_hcd *hcd = platform_get_drvdata(pdev); 171 struct usb_hcd *hcd = platform_get_drvdata(pdev);
172 struct ochi_hcd *ohci = hcd_to_ohci(hcd); 172 struct ohci_hcd *ohci = hcd_to_ohci(hcd);
173 173
174 if (time_before(jiffies, ohci->next_statechange)) 174 if (time_before(jiffies, ohci->next_statechange))
175 msleep(5); 175 msleep(5);
diff --git a/drivers/usb/input/Kconfig b/drivers/usb/input/Kconfig
index 258a5d09d3dc..c7d887540d8d 100644
--- a/drivers/usb/input/Kconfig
+++ b/drivers/usb/input/Kconfig
@@ -7,7 +7,7 @@ comment "USB Input Devices"
7config USB_HID 7config USB_HID
8 tristate "USB Human Interface Device (full HID) support" 8 tristate "USB Human Interface Device (full HID) support"
9 default y 9 default y
10 depends on USB 10 depends on USB && INPUT
11 select HID 11 select HID
12 ---help--- 12 ---help---
13 Say Y here if you want full HID support to connect USB keyboards, 13 Say Y here if you want full HID support to connect USB keyboards,
diff --git a/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c
index 89fa6885709b..ea3636d96e1b 100644
--- a/drivers/usb/input/hid-core.c
+++ b/drivers/usb/input/hid-core.c
@@ -106,18 +106,18 @@ static void hid_reset(struct work_struct *work)
106 106
107 if (test_bit(HID_CLEAR_HALT, &usbhid->iofl)) { 107 if (test_bit(HID_CLEAR_HALT, &usbhid->iofl)) {
108 dev_dbg(&usbhid->intf->dev, "clear halt\n"); 108 dev_dbg(&usbhid->intf->dev, "clear halt\n");
109 rc = usb_clear_halt(to_usb_device(hid->dev), usbhid->urbin->pipe); 109 rc = usb_clear_halt(hid_to_usb_dev(hid), usbhid->urbin->pipe);
110 clear_bit(HID_CLEAR_HALT, &usbhid->iofl); 110 clear_bit(HID_CLEAR_HALT, &usbhid->iofl);
111 hid_start_in(hid); 111 hid_start_in(hid);
112 } 112 }
113 113
114 else if (test_bit(HID_RESET_PENDING, &usbhid->iofl)) { 114 else if (test_bit(HID_RESET_PENDING, &usbhid->iofl)) {
115 dev_dbg(&usbhid->intf->dev, "resetting device\n"); 115 dev_dbg(&usbhid->intf->dev, "resetting device\n");
116 rc = rc_lock = usb_lock_device_for_reset(to_usb_device(hid->dev), usbhid->intf); 116 rc = rc_lock = usb_lock_device_for_reset(hid_to_usb_dev(hid), usbhid->intf);
117 if (rc_lock >= 0) { 117 if (rc_lock >= 0) {
118 rc = usb_reset_composite_device(to_usb_device(hid->dev), usbhid->intf); 118 rc = usb_reset_composite_device(hid_to_usb_dev(hid), usbhid->intf);
119 if (rc_lock) 119 if (rc_lock)
120 usb_unlock_device(to_usb_device(hid->dev)); 120 usb_unlock_device(hid_to_usb_dev(hid));
121 } 121 }
122 clear_bit(HID_RESET_PENDING, &usbhid->iofl); 122 clear_bit(HID_RESET_PENDING, &usbhid->iofl);
123 } 123 }
@@ -129,8 +129,8 @@ static void hid_reset(struct work_struct *work)
129 break; 129 break;
130 default: 130 default:
131 err("can't reset device, %s-%s/input%d, status %d", 131 err("can't reset device, %s-%s/input%d, status %d",
132 to_usb_device(hid->dev)->bus->bus_name, 132 hid_to_usb_dev(hid)->bus->bus_name,
133 to_usb_device(hid->dev)->devpath, 133 hid_to_usb_dev(hid)->devpath,
134 usbhid->ifnum, rc); 134 usbhid->ifnum, rc);
135 /* FALLTHROUGH */ 135 /* FALLTHROUGH */
136 case -EHOSTUNREACH: 136 case -EHOSTUNREACH:
@@ -217,8 +217,8 @@ static void hid_irq_in(struct urb *urb)
217 clear_bit(HID_IN_RUNNING, &usbhid->iofl); 217 clear_bit(HID_IN_RUNNING, &usbhid->iofl);
218 if (status != -EPERM) { 218 if (status != -EPERM) {
219 err("can't resubmit intr, %s-%s/input%d, status %d", 219 err("can't resubmit intr, %s-%s/input%d, status %d",
220 to_usb_device(hid->dev)->bus->bus_name, 220 hid_to_usb_dev(hid)->bus->bus_name,
221 to_usb_device(hid->dev)->devpath, 221 hid_to_usb_dev(hid)->devpath,
222 usbhid->ifnum, status); 222 usbhid->ifnum, status);
223 hid_io_error(hid); 223 hid_io_error(hid);
224 } 224 }
@@ -251,7 +251,7 @@ static int hid_submit_out(struct hid_device *hid)
251 251
252 hid_output_report(report, usbhid->outbuf); 252 hid_output_report(report, usbhid->outbuf);
253 usbhid->urbout->transfer_buffer_length = ((report->size - 1) >> 3) + 1 + (report->id > 0); 253 usbhid->urbout->transfer_buffer_length = ((report->size - 1) >> 3) + 1 + (report->id > 0);
254 usbhid->urbout->dev = to_usb_device(hid->dev); 254 usbhid->urbout->dev = hid_to_usb_dev(hid);
255 255
256 dbg("submitting out urb"); 256 dbg("submitting out urb");
257 257
@@ -276,13 +276,13 @@ static int hid_submit_ctrl(struct hid_device *hid)
276 len = ((report->size - 1) >> 3) + 1 + (report->id > 0); 276 len = ((report->size - 1) >> 3) + 1 + (report->id > 0);
277 if (dir == USB_DIR_OUT) { 277 if (dir == USB_DIR_OUT) {
278 hid_output_report(report, usbhid->ctrlbuf); 278 hid_output_report(report, usbhid->ctrlbuf);
279 usbhid->urbctrl->pipe = usb_sndctrlpipe(to_usb_device(hid->dev), 0); 279 usbhid->urbctrl->pipe = usb_sndctrlpipe(hid_to_usb_dev(hid), 0);
280 usbhid->urbctrl->transfer_buffer_length = len; 280 usbhid->urbctrl->transfer_buffer_length = len;
281 } else { 281 } else {
282 int maxpacket, padlen; 282 int maxpacket, padlen;
283 283
284 usbhid->urbctrl->pipe = usb_rcvctrlpipe(to_usb_device(hid->dev), 0); 284 usbhid->urbctrl->pipe = usb_rcvctrlpipe(hid_to_usb_dev(hid), 0);
285 maxpacket = usb_maxpacket(to_usb_device(hid->dev), usbhid->urbctrl->pipe, 0); 285 maxpacket = usb_maxpacket(hid_to_usb_dev(hid), usbhid->urbctrl->pipe, 0);
286 if (maxpacket > 0) { 286 if (maxpacket > 0) {
287 padlen = (len + maxpacket - 1) / maxpacket; 287 padlen = (len + maxpacket - 1) / maxpacket;
288 padlen *= maxpacket; 288 padlen *= maxpacket;
@@ -292,7 +292,7 @@ static int hid_submit_ctrl(struct hid_device *hid)
292 padlen = 0; 292 padlen = 0;
293 usbhid->urbctrl->transfer_buffer_length = padlen; 293 usbhid->urbctrl->transfer_buffer_length = padlen;
294 } 294 }
295 usbhid->urbctrl->dev = to_usb_device(hid->dev); 295 usbhid->urbctrl->dev = hid_to_usb_dev(hid);
296 296
297 usbhid->cr->bRequestType = USB_TYPE_CLASS | USB_RECIP_INTERFACE | dir; 297 usbhid->cr->bRequestType = USB_TYPE_CLASS | USB_RECIP_INTERFACE | dir;
298 usbhid->cr->bRequest = (dir == USB_DIR_OUT) ? HID_REQ_SET_REPORT : HID_REQ_GET_REPORT; 298 usbhid->cr->bRequest = (dir == USB_DIR_OUT) ? HID_REQ_SET_REPORT : HID_REQ_GET_REPORT;
@@ -582,6 +582,8 @@ void usbhid_init_reports(struct hid_device *hid)
582} 582}
583 583
584#define USB_VENDOR_ID_GTCO 0x078c 584#define USB_VENDOR_ID_GTCO 0x078c
585#define USB_VENDOR_ID_GTCO_IPANEL_1 0x08ca
586#define USB_VENDOR_ID_GTCO_IPANEL_2 0x5543
585#define USB_DEVICE_ID_GTCO_90 0x0090 587#define USB_DEVICE_ID_GTCO_90 0x0090
586#define USB_DEVICE_ID_GTCO_100 0x0100 588#define USB_DEVICE_ID_GTCO_100 0x0100
587#define USB_DEVICE_ID_GTCO_101 0x0101 589#define USB_DEVICE_ID_GTCO_101 0x0101
@@ -627,6 +629,9 @@ void usbhid_init_reports(struct hid_device *hid)
627#define USB_DEVICE_ID_GTCO_1004 0x1004 629#define USB_DEVICE_ID_GTCO_1004 0x1004
628#define USB_DEVICE_ID_GTCO_1005 0x1005 630#define USB_DEVICE_ID_GTCO_1005 0x1005
629#define USB_DEVICE_ID_GTCO_1006 0x1006 631#define USB_DEVICE_ID_GTCO_1006 0x1006
632#define USB_DEVICE_ID_GTCO_10 0x0010
633#define USB_DEVICE_ID_GTCO_8 0x0008
634#define USB_DEVICE_ID_GTCO_d 0x000d
630 635
631#define USB_VENDOR_ID_WACOM 0x056a 636#define USB_VENDOR_ID_WACOM 0x056a
632 637
@@ -791,6 +796,9 @@ void usbhid_init_reports(struct hid_device *hid)
791#define USB_VENDOR_ID_LOGITECH 0x046d 796#define USB_VENDOR_ID_LOGITECH 0x046d
792#define USB_DEVICE_ID_LOGITECH_USB_RECEIVER 0xc101 797#define USB_DEVICE_ID_LOGITECH_USB_RECEIVER 0xc101
793 798
799#define USB_VENDOR_ID_IMATION 0x0718
800#define USB_DEVICE_ID_DISC_STAKKA 0xd000
801
794/* 802/*
795 * Alphabetically sorted blacklist by quirk type. 803 * Alphabetically sorted blacklist by quirk type.
796 */ 804 */
@@ -875,6 +883,10 @@ static const struct hid_blacklist {
875 { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1004, HID_QUIRK_IGNORE }, 883 { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1004, HID_QUIRK_IGNORE },
876 { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1005, HID_QUIRK_IGNORE }, 884 { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1005, HID_QUIRK_IGNORE },
877 { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1006, HID_QUIRK_IGNORE }, 885 { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1006, HID_QUIRK_IGNORE },
886 { USB_VENDOR_ID_GTCO_IPANEL_1, USB_DEVICE_ID_GTCO_10, HID_QUIRK_IGNORE },
887 { USB_VENDOR_ID_GTCO_IPANEL_2, USB_DEVICE_ID_GTCO_8, HID_QUIRK_IGNORE },
888 { USB_VENDOR_ID_GTCO_IPANEL_2, USB_DEVICE_ID_GTCO_d, HID_QUIRK_IGNORE },
889 { USB_VENDOR_ID_IMATION, USB_DEVICE_ID_DISC_STAKKA, HID_QUIRK_IGNORE },
878 { USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO, HID_QUIRK_IGNORE }, 890 { USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO, HID_QUIRK_IGNORE },
879 { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CASSY, HID_QUIRK_IGNORE }, 891 { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CASSY, HID_QUIRK_IGNORE },
880 { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POCKETCASSY, HID_QUIRK_IGNORE }, 892 { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POCKETCASSY, HID_QUIRK_IGNORE },
@@ -951,7 +963,7 @@ static const struct hid_blacklist {
951 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD}, 963 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
952 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_POWERBOOK_HAS_FN }, 964 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_POWERBOOK_HAS_FN },
953 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_POWERBOOK_HAS_FN }, 965 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_POWERBOOK_HAS_FN },
954 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_POWERBOOK_HAS_FN }, 966 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
955 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_POWERBOOK_HAS_FN }, 967 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_POWERBOOK_HAS_FN },
956 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN }, 968 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN },
957 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN }, 969 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN },
@@ -1187,7 +1199,7 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf)
1187 1199
1188 hid->version = le16_to_cpu(hdesc->bcdHID); 1200 hid->version = le16_to_cpu(hdesc->bcdHID);
1189 hid->country = hdesc->bCountryCode; 1201 hid->country = hdesc->bCountryCode;
1190 hid->dev = &dev->dev; 1202 hid->dev = &intf->dev;
1191 usbhid->intf = intf; 1203 usbhid->intf = intf;
1192 usbhid->ifnum = interface->desc.bInterfaceNumber; 1204 usbhid->ifnum = interface->desc.bInterfaceNumber;
1193 1205
@@ -1282,7 +1294,7 @@ static void hid_disconnect(struct usb_interface *intf)
1282 usb_free_urb(usbhid->urbctrl); 1294 usb_free_urb(usbhid->urbctrl);
1283 usb_free_urb(usbhid->urbout); 1295 usb_free_urb(usbhid->urbout);
1284 1296
1285 hid_free_buffers(to_usb_device(hid->dev), hid); 1297 hid_free_buffers(hid_to_usb_dev(hid), hid);
1286 hid_free_device(hid); 1298 hid_free_device(hid);
1287} 1299}
1288 1300
diff --git a/drivers/usb/input/hid-ff.c b/drivers/usb/input/hid-ff.c
index f8f660ee3fac..59ed65e7a621 100644
--- a/drivers/usb/input/hid-ff.c
+++ b/drivers/usb/input/hid-ff.c
@@ -33,6 +33,7 @@
33#include <linux/usb.h> 33#include <linux/usb.h>
34 34
35#include <linux/hid.h> 35#include <linux/hid.h>
36#include "usbhid.h"
36 37
37/* 38/*
38 * This table contains pointers to initializers. To add support for new 39 * This table contains pointers to initializers. To add support for new
@@ -70,8 +71,8 @@ static struct hid_ff_initializer inits[] = {
70int hid_ff_init(struct hid_device* hid) 71int hid_ff_init(struct hid_device* hid)
71{ 72{
72 struct hid_ff_initializer *init; 73 struct hid_ff_initializer *init;
73 int vendor = le16_to_cpu(to_usb_device(hid->dev)->descriptor.idVendor); 74 int vendor = le16_to_cpu(hid_to_usb_dev(hid)->descriptor.idVendor);
74 int product = le16_to_cpu(to_usb_device(hid->dev)->descriptor.idProduct); 75 int product = le16_to_cpu(hid_to_usb_dev(hid)->descriptor.idProduct);
75 76
76 for (init = inits; init->idVendor; init++) 77 for (init = inits; init->idVendor; init++)
77 if (init->idVendor == vendor && init->idProduct == product) 78 if (init->idVendor == vendor && init->idProduct == product)
diff --git a/drivers/usb/input/hiddev.c b/drivers/usb/input/hiddev.c
index 114d6c9f64b1..a8b3d66cd498 100644
--- a/drivers/usb/input/hiddev.c
+++ b/drivers/usb/input/hiddev.c
@@ -384,7 +384,7 @@ static int hiddev_ioctl(struct inode *inode, struct file *file, unsigned int cmd
384 struct hiddev_list *list = file->private_data; 384 struct hiddev_list *list = file->private_data;
385 struct hiddev *hiddev = list->hiddev; 385 struct hiddev *hiddev = list->hiddev;
386 struct hid_device *hid = hiddev->hid; 386 struct hid_device *hid = hiddev->hid;
387 struct usb_device *dev = to_usb_device(hid->dev); 387 struct usb_device *dev = hid_to_usb_dev(hid);
388 struct hiddev_collection_info cinfo; 388 struct hiddev_collection_info cinfo;
389 struct hiddev_report_info rinfo; 389 struct hiddev_report_info rinfo;
390 struct hiddev_field_info finfo; 390 struct hiddev_field_info finfo;
diff --git a/drivers/usb/input/usbhid.h b/drivers/usb/input/usbhid.h
index 830107e5251f..0023f96d4294 100644
--- a/drivers/usb/input/usbhid.h
+++ b/drivers/usb/input/usbhid.h
@@ -80,5 +80,8 @@ struct usbhid_device {
80 80
81}; 81};
82 82
83#define hid_to_usb_dev(hid_dev) \
84 container_of(hid_dev->dev->parent, struct usb_device, dev)
85
83#endif 86#endif
84 87
diff --git a/drivers/usb/input/usbtouchscreen.c b/drivers/usb/input/usbtouchscreen.c
index 7f3c57da9bc0..86e37a20f8e5 100644
--- a/drivers/usb/input/usbtouchscreen.c
+++ b/drivers/usb/input/usbtouchscreen.c
@@ -66,7 +66,7 @@ struct usbtouch_device_info {
66 66
67 void (*process_pkt) (struct usbtouch_usb *usbtouch, unsigned char *pkt, int len); 67 void (*process_pkt) (struct usbtouch_usb *usbtouch, unsigned char *pkt, int len);
68 int (*get_pkt_len) (unsigned char *pkt, int len); 68 int (*get_pkt_len) (unsigned char *pkt, int len);
69 int (*read_data) (unsigned char *pkt, int *x, int *y, int *touch, int *press); 69 int (*read_data) (struct usbtouch_usb *usbtouch, unsigned char *pkt);
70 int (*init) (struct usbtouch_usb *usbtouch); 70 int (*init) (struct usbtouch_usb *usbtouch);
71}; 71};
72 72
@@ -85,6 +85,9 @@ struct usbtouch_usb {
85 struct usbtouch_device_info *type; 85 struct usbtouch_device_info *type;
86 char name[128]; 86 char name[128];
87 char phys[64]; 87 char phys[64];
88
89 int x, y;
90 int touch, press;
88}; 91};
89 92
90 93
@@ -161,14 +164,14 @@ static struct usb_device_id usbtouch_devices[] = {
161#define EGALAX_PKT_TYPE_REPT 0x80 164#define EGALAX_PKT_TYPE_REPT 0x80
162#define EGALAX_PKT_TYPE_DIAG 0x0A 165#define EGALAX_PKT_TYPE_DIAG 0x0A
163 166
164static int egalax_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) 167static int egalax_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
165{ 168{
166 if ((pkt[0] & EGALAX_PKT_TYPE_MASK) != EGALAX_PKT_TYPE_REPT) 169 if ((pkt[0] & EGALAX_PKT_TYPE_MASK) != EGALAX_PKT_TYPE_REPT)
167 return 0; 170 return 0;
168 171
169 *x = ((pkt[3] & 0x0F) << 7) | (pkt[4] & 0x7F); 172 dev->x = ((pkt[3] & 0x0F) << 7) | (pkt[4] & 0x7F);
170 *y = ((pkt[1] & 0x0F) << 7) | (pkt[2] & 0x7F); 173 dev->y = ((pkt[1] & 0x0F) << 7) | (pkt[2] & 0x7F);
171 *touch = pkt[0] & 0x01; 174 dev->touch = pkt[0] & 0x01;
172 175
173 return 1; 176 return 1;
174} 177}
@@ -195,11 +198,11 @@ static int egalax_get_pkt_len(unsigned char *buf, int len)
195 * PanJit Part 198 * PanJit Part
196 */ 199 */
197#ifdef CONFIG_USB_TOUCHSCREEN_PANJIT 200#ifdef CONFIG_USB_TOUCHSCREEN_PANJIT
198static int panjit_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) 201static int panjit_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
199{ 202{
200 *x = ((pkt[2] & 0x0F) << 8) | pkt[1]; 203 dev->x = ((pkt[2] & 0x0F) << 8) | pkt[1];
201 *y = ((pkt[4] & 0x0F) << 8) | pkt[3]; 204 dev->y = ((pkt[4] & 0x0F) << 8) | pkt[3];
202 *touch = pkt[0] & 0x01; 205 dev->touch = pkt[0] & 0x01;
203 206
204 return 1; 207 return 1;
205} 208}
@@ -215,11 +218,11 @@ static int panjit_read_data(unsigned char *pkt, int *x, int *y, int *touch, int
215#define MTOUCHUSB_RESET 7 218#define MTOUCHUSB_RESET 7
216#define MTOUCHUSB_REQ_CTRLLR_ID 10 219#define MTOUCHUSB_REQ_CTRLLR_ID 10
217 220
218static int mtouch_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) 221static int mtouch_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
219{ 222{
220 *x = (pkt[8] << 8) | pkt[7]; 223 dev->x = (pkt[8] << 8) | pkt[7];
221 *y = (pkt[10] << 8) | pkt[9]; 224 dev->y = (pkt[10] << 8) | pkt[9];
222 *touch = (pkt[2] & 0x40) ? 1 : 0; 225 dev->touch = (pkt[2] & 0x40) ? 1 : 0;
223 226
224 return 1; 227 return 1;
225} 228}
@@ -260,14 +263,32 @@ static int mtouch_init(struct usbtouch_usb *usbtouch)
260 * ITM Part 263 * ITM Part
261 */ 264 */
262#ifdef CONFIG_USB_TOUCHSCREEN_ITM 265#ifdef CONFIG_USB_TOUCHSCREEN_ITM
263static int itm_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) 266static int itm_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
264{ 267{
265 *x = ((pkt[0] & 0x1F) << 7) | (pkt[3] & 0x7F); 268 int touch;
266 *y = ((pkt[1] & 0x1F) << 7) | (pkt[4] & 0x7F); 269 /*
267 *press = ((pkt[2] & 0x01) << 7) | (pkt[5] & 0x7F); 270 * ITM devices report invalid x/y data if not touched.
268 *touch = ~pkt[7] & 0x20; 271 * if the screen was touched before but is not touched any more
272 * report touch as 0 with the last valid x/y data once. then stop
273 * reporting data until touched again.
274 */
275 dev->press = ((pkt[2] & 0x01) << 7) | (pkt[5] & 0x7F);
276
277 touch = ~pkt[7] & 0x20;
278 if (!touch) {
279 if (dev->touch) {
280 dev->touch = 0;
281 return 1;
282 }
269 283
270 return *touch; 284 return 0;
285 }
286
287 dev->x = ((pkt[0] & 0x1F) << 7) | (pkt[3] & 0x7F);
288 dev->y = ((pkt[1] & 0x1F) << 7) | (pkt[4] & 0x7F);
289 dev->touch = touch;
290
291 return 1;
271} 292}
272#endif 293#endif
273 294
@@ -276,7 +297,7 @@ static int itm_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *pr
276 * eTurboTouch part 297 * eTurboTouch part
277 */ 298 */
278#ifdef CONFIG_USB_TOUCHSCREEN_ETURBO 299#ifdef CONFIG_USB_TOUCHSCREEN_ETURBO
279static int eturbo_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) 300static int eturbo_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
280{ 301{
281 unsigned int shift; 302 unsigned int shift;
282 303
@@ -285,9 +306,9 @@ static int eturbo_read_data(unsigned char *pkt, int *x, int *y, int *touch, int
285 return 0; 306 return 0;
286 307
287 shift = (6 - (pkt[0] & 0x03)); 308 shift = (6 - (pkt[0] & 0x03));
288 *x = ((pkt[3] << 7) | pkt[4]) >> shift; 309 dev->x = ((pkt[3] << 7) | pkt[4]) >> shift;
289 *y = ((pkt[1] << 7) | pkt[2]) >> shift; 310 dev->y = ((pkt[1] << 7) | pkt[2]) >> shift;
290 *touch = (pkt[0] & 0x10) ? 1 : 0; 311 dev->touch = (pkt[0] & 0x10) ? 1 : 0;
291 312
292 return 1; 313 return 1;
293} 314}
@@ -307,14 +328,14 @@ static int eturbo_get_pkt_len(unsigned char *buf, int len)
307 * Gunze part 328 * Gunze part
308 */ 329 */
309#ifdef CONFIG_USB_TOUCHSCREEN_GUNZE 330#ifdef CONFIG_USB_TOUCHSCREEN_GUNZE
310static int gunze_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) 331static int gunze_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
311{ 332{
312 if (!(pkt[0] & 0x80) || ((pkt[1] | pkt[2] | pkt[3]) & 0x80)) 333 if (!(pkt[0] & 0x80) || ((pkt[1] | pkt[2] | pkt[3]) & 0x80))
313 return 0; 334 return 0;
314 335
315 *x = ((pkt[0] & 0x1F) << 7) | (pkt[2] & 0x7F); 336 dev->x = ((pkt[0] & 0x1F) << 7) | (pkt[2] & 0x7F);
316 *y = ((pkt[1] & 0x1F) << 7) | (pkt[3] & 0x7F); 337 dev->y = ((pkt[1] & 0x1F) << 7) | (pkt[3] & 0x7F);
317 *touch = pkt[0] & 0x20; 338 dev->touch = pkt[0] & 0x20;
318 339
319 return 1; 340 return 1;
320} 341}
@@ -383,11 +404,11 @@ static int dmc_tsc10_init(struct usbtouch_usb *usbtouch)
383} 404}
384 405
385 406
386static int dmc_tsc10_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) 407static int dmc_tsc10_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
387{ 408{
388 *x = ((pkt[2] & 0x03) << 8) | pkt[1]; 409 dev->x = ((pkt[2] & 0x03) << 8) | pkt[1];
389 *y = ((pkt[4] & 0x03) << 8) | pkt[3]; 410 dev->y = ((pkt[4] & 0x03) << 8) | pkt[3];
390 *touch = pkt[0] & 0x01; 411 dev->touch = pkt[0] & 0x01;
391 412
392 return 1; 413 return 1;
393} 414}
@@ -492,23 +513,22 @@ static struct usbtouch_device_info usbtouch_dev_info[] = {
492static void usbtouch_process_pkt(struct usbtouch_usb *usbtouch, 513static void usbtouch_process_pkt(struct usbtouch_usb *usbtouch,
493 unsigned char *pkt, int len) 514 unsigned char *pkt, int len)
494{ 515{
495 int x, y, touch, press;
496 struct usbtouch_device_info *type = usbtouch->type; 516 struct usbtouch_device_info *type = usbtouch->type;
497 517
498 if (!type->read_data(pkt, &x, &y, &touch, &press)) 518 if (!type->read_data(usbtouch, pkt))
499 return; 519 return;
500 520
501 input_report_key(usbtouch->input, BTN_TOUCH, touch); 521 input_report_key(usbtouch->input, BTN_TOUCH, usbtouch->touch);
502 522
503 if (swap_xy) { 523 if (swap_xy) {
504 input_report_abs(usbtouch->input, ABS_X, y); 524 input_report_abs(usbtouch->input, ABS_X, usbtouch->y);
505 input_report_abs(usbtouch->input, ABS_Y, x); 525 input_report_abs(usbtouch->input, ABS_Y, usbtouch->x);
506 } else { 526 } else {
507 input_report_abs(usbtouch->input, ABS_X, x); 527 input_report_abs(usbtouch->input, ABS_X, usbtouch->x);
508 input_report_abs(usbtouch->input, ABS_Y, y); 528 input_report_abs(usbtouch->input, ABS_Y, usbtouch->y);
509 } 529 }
510 if (type->max_press) 530 if (type->max_press)
511 input_report_abs(usbtouch->input, ABS_PRESSURE, press); 531 input_report_abs(usbtouch->input, ABS_PRESSURE, usbtouch->press);
512 input_sync(usbtouch->input); 532 input_sync(usbtouch->input);
513} 533}
514 534
diff --git a/drivers/usb/net/asix.c b/drivers/usb/net/asix.c
index f538013965b0..896449f0cf85 100644
--- a/drivers/usb/net/asix.c
+++ b/drivers/usb/net/asix.c
@@ -898,7 +898,7 @@ static int ax88772_link_reset(struct usbnet *dev)
898 898
899static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf) 899static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
900{ 900{
901 int ret; 901 int ret, embd_phy;
902 void *buf; 902 void *buf;
903 u16 rx_ctl; 903 u16 rx_ctl;
904 struct asix_data *data = (struct asix_data *)&dev->data; 904 struct asix_data *data = (struct asix_data *)&dev->data;
@@ -919,13 +919,15 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
919 AX_GPIO_RSE | AX_GPIO_GPO_2 | AX_GPIO_GPO2EN, 5)) < 0) 919 AX_GPIO_RSE | AX_GPIO_GPO_2 | AX_GPIO_GPO2EN, 5)) < 0)
920 goto out2; 920 goto out2;
921 921
922 /* 0x10 is the phy id of the embedded 10/100 ethernet phy */
923 embd_phy = ((asix_get_phy_addr(dev) & 0x1f) == 0x10 ? 1 : 0);
922 if ((ret = asix_write_cmd(dev, AX_CMD_SW_PHY_SELECT, 924 if ((ret = asix_write_cmd(dev, AX_CMD_SW_PHY_SELECT,
923 1, 0, 0, buf)) < 0) { 925 embd_phy, 0, 0, buf)) < 0) {
924 dbg("Select PHY #1 failed: %d", ret); 926 dbg("Select PHY #1 failed: %d", ret);
925 goto out2; 927 goto out2;
926 } 928 }
927 929
928 if ((ret = asix_sw_reset(dev, AX_SWRESET_IPPD)) < 0) 930 if ((ret = asix_sw_reset(dev, AX_SWRESET_IPPD | AX_SWRESET_PRL)) < 0)
929 goto out2; 931 goto out2;
930 932
931 msleep(150); 933 msleep(150);
@@ -933,8 +935,14 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
933 goto out2; 935 goto out2;
934 936
935 msleep(150); 937 msleep(150);
936 if ((ret = asix_sw_reset(dev, AX_SWRESET_IPRL | AX_SWRESET_PRL)) < 0) 938 if (embd_phy) {
937 goto out2; 939 if ((ret = asix_sw_reset(dev, AX_SWRESET_IPRL)) < 0)
940 goto out2;
941 }
942 else {
943 if ((ret = asix_sw_reset(dev, AX_SWRESET_PRTE)) < 0)
944 goto out2;
945 }
938 946
939 msleep(150); 947 msleep(150);
940 rx_ctl = asix_read_rx_ctl(dev); 948 rx_ctl = asix_read_rx_ctl(dev);
diff --git a/drivers/usb/net/rndis_host.c b/drivers/usb/net/rndis_host.c
index ea5f44de3de2..a322a16d9cf8 100644
--- a/drivers/usb/net/rndis_host.c
+++ b/drivers/usb/net/rndis_host.c
@@ -379,6 +379,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf)
379{ 379{
380 int retval; 380 int retval;
381 struct net_device *net = dev->net; 381 struct net_device *net = dev->net;
382 struct cdc_state *info = (void *) &dev->data;
382 union { 383 union {
383 void *buf; 384 void *buf;
384 struct rndis_msg_hdr *header; 385 struct rndis_msg_hdr *header;
@@ -397,7 +398,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf)
397 return -ENOMEM; 398 return -ENOMEM;
398 retval = usbnet_generic_cdc_bind(dev, intf); 399 retval = usbnet_generic_cdc_bind(dev, intf);
399 if (retval < 0) 400 if (retval < 0)
400 goto done; 401 goto fail;
401 402
402 net->hard_header_len += sizeof (struct rndis_data_hdr); 403 net->hard_header_len += sizeof (struct rndis_data_hdr);
403 404
@@ -412,10 +413,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf)
412 if (unlikely(retval < 0)) { 413 if (unlikely(retval < 0)) {
413 /* it might not even be an RNDIS device!! */ 414 /* it might not even be an RNDIS device!! */
414 dev_err(&intf->dev, "RNDIS init failed, %d\n", retval); 415 dev_err(&intf->dev, "RNDIS init failed, %d\n", retval);
415fail: 416 goto fail_and_release;
416 usb_driver_release_interface(driver_of(intf),
417 ((struct cdc_state *)&(dev->data))->data);
418 goto done;
419 } 417 }
420 dev->hard_mtu = le32_to_cpu(u.init_c->max_transfer_size); 418 dev->hard_mtu = le32_to_cpu(u.init_c->max_transfer_size);
421 /* REVISIT: peripheral "alignment" request is ignored ... */ 419 /* REVISIT: peripheral "alignment" request is ignored ... */
@@ -431,7 +429,7 @@ fail:
431 retval = rndis_command(dev, u.header); 429 retval = rndis_command(dev, u.header);
432 if (unlikely(retval < 0)) { 430 if (unlikely(retval < 0)) {
433 dev_err(&intf->dev, "rndis get ethaddr, %d\n", retval); 431 dev_err(&intf->dev, "rndis get ethaddr, %d\n", retval);
434 goto fail; 432 goto fail_and_release;
435 } 433 }
436 tmp = le32_to_cpu(u.get_c->offset); 434 tmp = le32_to_cpu(u.get_c->offset);
437 if (unlikely((tmp + 8) > (1024 - ETH_ALEN) 435 if (unlikely((tmp + 8) > (1024 - ETH_ALEN)
@@ -439,7 +437,7 @@ fail:
439 dev_err(&intf->dev, "rndis ethaddr off %d len %d ?\n", 437 dev_err(&intf->dev, "rndis ethaddr off %d len %d ?\n",
440 tmp, le32_to_cpu(u.get_c->len)); 438 tmp, le32_to_cpu(u.get_c->len));
441 retval = -EDOM; 439 retval = -EDOM;
442 goto fail; 440 goto fail_and_release;
443 } 441 }
444 memcpy(net->dev_addr, tmp + (char *)&u.get_c->request_id, ETH_ALEN); 442 memcpy(net->dev_addr, tmp + (char *)&u.get_c->request_id, ETH_ALEN);
445 443
@@ -455,11 +453,18 @@ fail:
455 retval = rndis_command(dev, u.header); 453 retval = rndis_command(dev, u.header);
456 if (unlikely(retval < 0)) { 454 if (unlikely(retval < 0)) {
457 dev_err(&intf->dev, "rndis set packet filter, %d\n", retval); 455 dev_err(&intf->dev, "rndis set packet filter, %d\n", retval);
458 goto fail; 456 goto fail_and_release;
459 } 457 }
460 458
461 retval = 0; 459 retval = 0;
462done: 460
461 kfree(u.buf);
462 return retval;
463
464fail_and_release:
465 usb_set_intfdata(info->data, NULL);
466 usb_driver_release_interface(driver_of(intf), info->data);
467fail:
463 kfree(u.buf); 468 kfree(u.buf);
464 return retval; 469 return retval;
465} 470}
diff --git a/drivers/usb/serial/funsoft.c b/drivers/usb/serial/funsoft.c
index 31501c9361b9..2bebd63d5ed1 100644
--- a/drivers/usb/serial/funsoft.c
+++ b/drivers/usb/serial/funsoft.c
@@ -27,7 +27,7 @@ MODULE_DEVICE_TABLE(usb, id_table);
27static int funsoft_ioctl(struct usb_serial_port *port, struct file *file, 27static int funsoft_ioctl(struct usb_serial_port *port, struct file *file,
28 unsigned int cmd, unsigned long arg) 28 unsigned int cmd, unsigned long arg)
29{ 29{
30 struct termios t; 30 struct ktermios t;
31 31
32 dbg("%s - port %d, cmd 0x%04x", __FUNCTION__, port->number, cmd); 32 dbg("%s - port %d, cmd 0x%04x", __FUNCTION__, port->number, cmd);
33 33
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 5ca04e82ea19..0fed43a96871 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -78,6 +78,7 @@ static int option_send_setup(struct usb_serial_port *port);
78#define OPTION_PRODUCT_FUSION2 0x6300 78#define OPTION_PRODUCT_FUSION2 0x6300
79#define OPTION_PRODUCT_COBRA 0x6500 79#define OPTION_PRODUCT_COBRA 0x6500
80#define OPTION_PRODUCT_COBRA2 0x6600 80#define OPTION_PRODUCT_COBRA2 0x6600
81#define OPTION_PRODUCT_GTMAX36 0x6701
81#define HUAWEI_PRODUCT_E600 0x1001 82#define HUAWEI_PRODUCT_E600 0x1001
82#define HUAWEI_PRODUCT_E220 0x1003 83#define HUAWEI_PRODUCT_E220 0x1003
83#define AUDIOVOX_PRODUCT_AIRCARD 0x0112 84#define AUDIOVOX_PRODUCT_AIRCARD 0x0112
@@ -90,6 +91,7 @@ static struct usb_device_id option_ids[] = {
90 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_FUSION2) }, 91 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_FUSION2) },
91 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA) }, 92 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA) },
92 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA2) }, 93 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA2) },
94 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_GTMAX36) },
93 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) }, 95 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) },
94 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220) }, 96 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220) },
95 { USB_DEVICE(AUDIOVOX_VENDOR_ID, AUDIOVOX_PRODUCT_AIRCARD) }, 97 { USB_DEVICE(AUDIOVOX_VENDOR_ID, AUDIOVOX_PRODUCT_AIRCARD) },
@@ -104,6 +106,7 @@ static struct usb_device_id option_ids1[] = {
104 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_FUSION2) }, 106 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_FUSION2) },
105 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA) }, 107 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA) },
106 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA2) }, 108 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA2) },
109 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_GTMAX36) },
107 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) }, 110 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) },
108 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220) }, 111 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220) },
109 { USB_DEVICE(AUDIOVOX_VENDOR_ID, AUDIOVOX_PRODUCT_AIRCARD) }, 112 { USB_DEVICE(AUDIOVOX_VENDOR_ID, AUDIOVOX_PRODUCT_AIRCARD) },
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
index cddef3efba0a..b49f2a78189e 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -197,6 +197,13 @@ UNUSUAL_DEV( 0x0421, 0x047c, 0x0370, 0x0370,
197 US_SC_DEVICE, US_PR_DEVICE, NULL, 197 US_SC_DEVICE, US_PR_DEVICE, NULL,
198 US_FL_MAX_SECTORS_64 ), 198 US_FL_MAX_SECTORS_64 ),
199 199
200/* Reported by Manuel Osdoba <manuel.osdoba@tu-ilmenau.de> */
201UNUSUAL_DEV( 0x0421, 0x0492, 0x0452, 0x0452,
202 "Nokia",
203 "Nokia 6233",
204 US_SC_DEVICE, US_PR_DEVICE, NULL,
205 US_FL_MAX_SECTORS_64 ),
206
200/* Reported by Alex Corcoles <alex@corcoles.net> */ 207/* Reported by Alex Corcoles <alex@corcoles.net> */
201UNUSUAL_DEV( 0x0421, 0x0495, 0x0370, 0x0370, 208UNUSUAL_DEV( 0x0421, 0x0495, 0x0370, 0x0370,
202 "Nokia", 209 "Nokia",
@@ -254,6 +261,18 @@ UNUSUAL_DEV( 0x045a, 0x5210, 0x0101, 0x0101,
254 US_SC_SCSI, US_PR_KARMA, rio_karma_init, 0), 261 US_SC_SCSI, US_PR_KARMA, rio_karma_init, 0),
255#endif 262#endif
256 263
264/*
265 * This virtual floppy is found in Sun equipment (x4600, x4200m2, etc.)
266 * Reported by Pete Zaitcev <zaitcev@redhat.com>
267 * This device chokes on both version of MODE SENSE which we have, so
268 * use_10_for_ms is not effective, and we use US_FL_NO_WP_DETECT.
269 */
270UNUSUAL_DEV( 0x046b, 0xff40, 0x0100, 0x0100,
271 "AMI",
272 "Virtual Floppy",
273 US_SC_DEVICE, US_PR_DEVICE, NULL,
274 US_FL_NO_WP_DETECT),
275
257/* Patch submitted by Philipp Friedrich <philipp@void.at> */ 276/* Patch submitted by Philipp Friedrich <philipp@void.at> */
258UNUSUAL_DEV( 0x0482, 0x0100, 0x0100, 0x0100, 277UNUSUAL_DEV( 0x0482, 0x0100, 0x0100, 0x0100,
259 "Kyocera", 278 "Kyocera",
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 8b18e43b82fe..d9bdf2b3ade2 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -146,7 +146,7 @@ static int blk_end_aio(struct bio *bio, unsigned int bytes_done, int error)
146 iocb->ki_nbytes = -EIO; 146 iocb->ki_nbytes = -EIO;
147 147
148 if (atomic_dec_and_test(bio_count)) { 148 if (atomic_dec_and_test(bio_count)) {
149 if (iocb->ki_nbytes < 0) 149 if ((long)iocb->ki_nbytes < 0)
150 aio_complete(iocb, iocb->ki_nbytes, 0); 150 aio_complete(iocb, iocb->ki_nbytes, 0);
151 else 151 else
152 aio_complete(iocb, iocb->ki_left, 0); 152 aio_complete(iocb, iocb->ki_left, 0);
@@ -190,6 +190,12 @@ static struct page *blk_get_page(unsigned long addr, size_t count, int rw,
190 return pvec->page[pvec->idx++]; 190 return pvec->page[pvec->idx++];
191} 191}
192 192
193/* return a page back to pvec array */
194static void blk_unget_page(struct page *page, struct pvec *pvec)
195{
196 pvec->page[--pvec->idx] = page;
197}
198
193static ssize_t 199static ssize_t
194blkdev_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov, 200blkdev_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
195 loff_t pos, unsigned long nr_segs) 201 loff_t pos, unsigned long nr_segs)
@@ -278,6 +284,8 @@ same_bio:
278 count = min(count, nbytes); 284 count = min(count, nbytes);
279 goto same_bio; 285 goto same_bio;
280 } 286 }
287 } else {
288 blk_unget_page(page, &pvec);
281 } 289 }
282 290
283 /* bio is ready, submit it */ 291 /* bio is ready, submit it */
diff --git a/fs/jffs/jffs_fm.c b/fs/jffs/jffs_fm.c
index 077258b2103e..5a95fbdd6fdb 100644
--- a/fs/jffs/jffs_fm.c
+++ b/fs/jffs/jffs_fm.c
@@ -17,6 +17,7 @@
17 * 17 *
18 */ 18 */
19#include <linux/slab.h> 19#include <linux/slab.h>
20#include <linux/err.h>
20#include <linux/blkdev.h> 21#include <linux/blkdev.h>
21#include <linux/jffs.h> 22#include <linux/jffs.h>
22#include "jffs_fm.h" 23#include "jffs_fm.h"
@@ -104,7 +105,7 @@ jffs_build_begin(struct jffs_control *c, int unit)
104 105
105 mtd = get_mtd_device(NULL, unit); 106 mtd = get_mtd_device(NULL, unit);
106 107
107 if (!mtd) { 108 if (IS_ERR(mtd)) {
108 kfree(fmc); 109 kfree(fmc);
109 DJM(no_jffs_fmcontrol--); 110 DJM(no_jffs_fmcontrol--);
110 return NULL; 111 return NULL;
diff --git a/fs/jffs2/debug.c b/fs/jffs2/debug.c
index 72b4fc13a106..4189e4a36050 100644
--- a/fs/jffs2/debug.c
+++ b/fs/jffs2/debug.c
@@ -178,8 +178,8 @@ __jffs2_dbg_acct_paranoia_check_nolock(struct jffs2_sb_info *c,
178 while (ref2) { 178 while (ref2) {
179 uint32_t totlen = ref_totlen(c, jeb, ref2); 179 uint32_t totlen = ref_totlen(c, jeb, ref2);
180 180
181 if (ref2->flash_offset < jeb->offset || 181 if (ref_offset(ref2) < jeb->offset ||
182 ref2->flash_offset > jeb->offset + c->sector_size) { 182 ref_offset(ref2) > jeb->offset + c->sector_size) {
183 JFFS2_ERROR("node_ref %#08x shouldn't be in block at %#08x.\n", 183 JFFS2_ERROR("node_ref %#08x shouldn't be in block at %#08x.\n",
184 ref_offset(ref2), jeb->offset); 184 ref_offset(ref2), jeb->offset);
185 goto error; 185 goto error;
diff --git a/fs/jffs2/debug.h b/fs/jffs2/debug.h
index 3daf3bca0376..f89c85d5a3f8 100644
--- a/fs/jffs2/debug.h
+++ b/fs/jffs2/debug.h
@@ -13,6 +13,7 @@
13#ifndef _JFFS2_DEBUG_H_ 13#ifndef _JFFS2_DEBUG_H_
14#define _JFFS2_DEBUG_H_ 14#define _JFFS2_DEBUG_H_
15 15
16#include <linux/sched.h>
16 17
17#ifndef CONFIG_JFFS2_FS_DEBUG 18#ifndef CONFIG_JFFS2_FS_DEBUG
18#define CONFIG_JFFS2_FS_DEBUG 0 19#define CONFIG_JFFS2_FS_DEBUG 0
diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c
index 7bc1a4201c0c..abb90c0c09cc 100644
--- a/fs/jffs2/fs.c
+++ b/fs/jffs2/fs.c
@@ -502,12 +502,11 @@ int jffs2_do_fill_super(struct super_block *sb, void *data, int silent)
502 if (ret) 502 if (ret)
503 return ret; 503 return ret;
504 504
505 c->inocache_list = kmalloc(INOCACHE_HASHSIZE * sizeof(struct jffs2_inode_cache *), GFP_KERNEL); 505 c->inocache_list = kcalloc(INOCACHE_HASHSIZE, sizeof(struct jffs2_inode_cache *), GFP_KERNEL);
506 if (!c->inocache_list) { 506 if (!c->inocache_list) {
507 ret = -ENOMEM; 507 ret = -ENOMEM;
508 goto out_wbuf; 508 goto out_wbuf;
509 } 509 }
510 memset(c->inocache_list, 0, INOCACHE_HASHSIZE * sizeof(struct jffs2_inode_cache *));
511 510
512 jffs2_init_xattr_subsystem(c); 511 jffs2_init_xattr_subsystem(c);
513 512
diff --git a/fs/jffs2/gc.c b/fs/jffs2/gc.c
index daff3341ff92..3a3cf225981f 100644
--- a/fs/jffs2/gc.c
+++ b/fs/jffs2/gc.c
@@ -838,6 +838,8 @@ static int jffs2_garbage_collect_deletion_dirent(struct jffs2_sb_info *c, struct
838 838
839 for (raw = f->inocache->nodes; raw != (void *)f->inocache; raw = raw->next_in_ino) { 839 for (raw = f->inocache->nodes; raw != (void *)f->inocache; raw = raw->next_in_ino) {
840 840
841 cond_resched();
842
841 /* We only care about obsolete ones */ 843 /* We only care about obsolete ones */
842 if (!(ref_obsolete(raw))) 844 if (!(ref_obsolete(raw)))
843 continue; 845 continue;
diff --git a/fs/jffs2/nodelist.h b/fs/jffs2/nodelist.h
index 0ddfd70307fb..4178b4b55948 100644
--- a/fs/jffs2/nodelist.h
+++ b/fs/jffs2/nodelist.h
@@ -294,23 +294,21 @@ static inline int jffs2_encode_dev(union jffs2_device_node *jdev, dev_t rdev)
294 294
295static inline struct jffs2_node_frag *frag_first(struct rb_root *root) 295static inline struct jffs2_node_frag *frag_first(struct rb_root *root)
296{ 296{
297 struct rb_node *node = root->rb_node; 297 struct rb_node *node = rb_first(root);
298 298
299 if (!node) 299 if (!node)
300 return NULL; 300 return NULL;
301 while(node->rb_left) 301
302 node = node->rb_left;
303 return rb_entry(node, struct jffs2_node_frag, rb); 302 return rb_entry(node, struct jffs2_node_frag, rb);
304} 303}
305 304
306static inline struct jffs2_node_frag *frag_last(struct rb_root *root) 305static inline struct jffs2_node_frag *frag_last(struct rb_root *root)
307{ 306{
308 struct rb_node *node = root->rb_node; 307 struct rb_node *node = rb_last(root);
309 308
310 if (!node) 309 if (!node)
311 return NULL; 310 return NULL;
312 while(node->rb_right) 311
313 node = node->rb_right;
314 return rb_entry(node, struct jffs2_node_frag, rb); 312 return rb_entry(node, struct jffs2_node_frag, rb);
315} 313}
316 314
diff --git a/fs/jffs2/readinode.c b/fs/jffs2/readinode.c
index 266423b2709d..58a0b912e9d0 100644
--- a/fs/jffs2/readinode.c
+++ b/fs/jffs2/readinode.c
@@ -944,13 +944,12 @@ int jffs2_do_read_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
944int jffs2_do_crccheck_inode(struct jffs2_sb_info *c, struct jffs2_inode_cache *ic) 944int jffs2_do_crccheck_inode(struct jffs2_sb_info *c, struct jffs2_inode_cache *ic)
945{ 945{
946 struct jffs2_raw_inode n; 946 struct jffs2_raw_inode n;
947 struct jffs2_inode_info *f = kmalloc(sizeof(*f), GFP_KERNEL); 947 struct jffs2_inode_info *f = kzalloc(sizeof(*f), GFP_KERNEL);
948 int ret; 948 int ret;
949 949
950 if (!f) 950 if (!f)
951 return -ENOMEM; 951 return -ENOMEM;
952 952
953 memset(f, 0, sizeof(*f));
954 init_MUTEX_LOCKED(&f->sem); 953 init_MUTEX_LOCKED(&f->sem);
955 f->inocache = ic; 954 f->inocache = ic;
956 955
diff --git a/fs/jffs2/scan.c b/fs/jffs2/scan.c
index e2413466ddd5..3af746eaff0e 100644
--- a/fs/jffs2/scan.c
+++ b/fs/jffs2/scan.c
@@ -128,17 +128,19 @@ int jffs2_scan_medium(struct jffs2_sb_info *c)
128 } 128 }
129 129
130 if (jffs2_sum_active()) { 130 if (jffs2_sum_active()) {
131 s = kmalloc(sizeof(struct jffs2_summary), GFP_KERNEL); 131 s = kzalloc(sizeof(struct jffs2_summary), GFP_KERNEL);
132 if (!s) { 132 if (!s) {
133 kfree(flashbuf);
133 JFFS2_WARNING("Can't allocate memory for summary\n"); 134 JFFS2_WARNING("Can't allocate memory for summary\n");
134 return -ENOMEM; 135 return -ENOMEM;
135 } 136 }
136 memset(s, 0, sizeof(struct jffs2_summary));
137 } 137 }
138 138
139 for (i=0; i<c->nr_blocks; i++) { 139 for (i=0; i<c->nr_blocks; i++) {
140 struct jffs2_eraseblock *jeb = &c->blocks[i]; 140 struct jffs2_eraseblock *jeb = &c->blocks[i];
141 141
142 cond_resched();
143
142 /* reset summary info for next eraseblock scan */ 144 /* reset summary info for next eraseblock scan */
143 jffs2_sum_reset_collected(s); 145 jffs2_sum_reset_collected(s);
144 146
diff --git a/fs/jffs2/summary.c b/fs/jffs2/summary.c
index e52cef526d90..25265965bdc1 100644
--- a/fs/jffs2/summary.c
+++ b/fs/jffs2/summary.c
@@ -26,15 +26,13 @@
26 26
27int jffs2_sum_init(struct jffs2_sb_info *c) 27int jffs2_sum_init(struct jffs2_sb_info *c)
28{ 28{
29 c->summary = kmalloc(sizeof(struct jffs2_summary), GFP_KERNEL); 29 c->summary = kzalloc(sizeof(struct jffs2_summary), GFP_KERNEL);
30 30
31 if (!c->summary) { 31 if (!c->summary) {
32 JFFS2_WARNING("Can't allocate memory for summary information!\n"); 32 JFFS2_WARNING("Can't allocate memory for summary information!\n");
33 return -ENOMEM; 33 return -ENOMEM;
34 } 34 }
35 35
36 memset(c->summary, 0, sizeof(struct jffs2_summary));
37
38 c->summary->sum_buf = vmalloc(c->sector_size); 36 c->summary->sum_buf = vmalloc(c->sector_size);
39 37
40 if (!c->summary->sum_buf) { 38 if (!c->summary->sum_buf) {
@@ -398,6 +396,8 @@ static int jffs2_sum_process_sum_data(struct jffs2_sb_info *c, struct jffs2_eras
398 for (i=0; i<je32_to_cpu(summary->sum_num); i++) { 396 for (i=0; i<je32_to_cpu(summary->sum_num); i++) {
399 dbg_summary("processing summary index %d\n", i); 397 dbg_summary("processing summary index %d\n", i);
400 398
399 cond_resched();
400
401 /* Make sure there's a spare ref for dirty space */ 401 /* Make sure there's a spare ref for dirty space */
402 err = jffs2_prealloc_raw_node_refs(c, jeb, 2); 402 err = jffs2_prealloc_raw_node_refs(c, jeb, 2);
403 if (err) 403 if (err)
diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c
index 7deb78254021..08a0e6c49e61 100644
--- a/fs/jffs2/super.c
+++ b/fs/jffs2/super.c
@@ -17,6 +17,7 @@
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/list.h> 18#include <linux/list.h>
19#include <linux/fs.h> 19#include <linux/fs.h>
20#include <linux/err.h>
20#include <linux/mount.h> 21#include <linux/mount.h>
21#include <linux/jffs2.h> 22#include <linux/jffs2.h>
22#include <linux/pagemap.h> 23#include <linux/pagemap.h>
@@ -184,9 +185,9 @@ static int jffs2_get_sb_mtdnr(struct file_system_type *fs_type,
184 struct mtd_info *mtd; 185 struct mtd_info *mtd;
185 186
186 mtd = get_mtd_device(NULL, mtdnr); 187 mtd = get_mtd_device(NULL, mtdnr);
187 if (!mtd) { 188 if (IS_ERR(mtd)) {
188 D1(printk(KERN_DEBUG "jffs2: MTD device #%u doesn't appear to exist\n", mtdnr)); 189 D1(printk(KERN_DEBUG "jffs2: MTD device #%u doesn't appear to exist\n", mtdnr));
189 return -EINVAL; 190 return PTR_ERR(mtd);
190 } 191 }
191 192
192 return jffs2_get_sb_mtd(fs_type, flags, dev_name, data, mtd, mnt); 193 return jffs2_get_sb_mtd(fs_type, flags, dev_name, data, mtd, mnt);
@@ -221,7 +222,7 @@ static int jffs2_get_sb(struct file_system_type *fs_type,
221 D1(printk(KERN_DEBUG "jffs2_get_sb(): mtd:%%s, name \"%s\"\n", dev_name+4)); 222 D1(printk(KERN_DEBUG "jffs2_get_sb(): mtd:%%s, name \"%s\"\n", dev_name+4));
222 for (mtdnr = 0; mtdnr < MAX_MTD_DEVICES; mtdnr++) { 223 for (mtdnr = 0; mtdnr < MAX_MTD_DEVICES; mtdnr++) {
223 mtd = get_mtd_device(NULL, mtdnr); 224 mtd = get_mtd_device(NULL, mtdnr);
224 if (mtd) { 225 if (!IS_ERR(mtd)) {
225 if (!strcmp(mtd->name, dev_name+4)) 226 if (!strcmp(mtd->name, dev_name+4))
226 return jffs2_get_sb_mtd(fs_type, flags, dev_name, data, mtd, mnt); 227 return jffs2_get_sb_mtd(fs_type, flags, dev_name, data, mtd, mnt);
227 put_mtd_device(mtd); 228 put_mtd_device(mtd);
diff --git a/fs/jffs2/symlink.c b/fs/jffs2/symlink.c
index fc211b6e9b03..b90d5aa3d969 100644
--- a/fs/jffs2/symlink.c
+++ b/fs/jffs2/symlink.c
@@ -51,7 +51,7 @@ static void *jffs2_follow_link(struct dentry *dentry, struct nameidata *nd)
51 */ 51 */
52 52
53 if (!p) { 53 if (!p) {
54 printk(KERN_ERR "jffs2_follow_link(): can't find symlink taerget\n"); 54 printk(KERN_ERR "jffs2_follow_link(): can't find symlink target\n");
55 p = ERR_PTR(-EIO); 55 p = ERR_PTR(-EIO);
56 } 56 }
57 D1(printk(KERN_DEBUG "jffs2_follow_link(): target path is '%s'\n", (char *) f->target)); 57 D1(printk(KERN_DEBUG "jffs2_follow_link(): target path is '%s'\n", (char *) f->target));
diff --git a/fs/jffs2/wbuf.c b/fs/jffs2/wbuf.c
index 70707309dfa1..9c99859f5edd 100644
--- a/fs/jffs2/wbuf.c
+++ b/fs/jffs2/wbuf.c
@@ -969,8 +969,7 @@ int jffs2_check_oob_empty(struct jffs2_sb_info *c,
969 int oobsize = c->mtd->oobsize; 969 int oobsize = c->mtd->oobsize;
970 struct mtd_oob_ops ops; 970 struct mtd_oob_ops ops;
971 971
972 ops.len = NR_OOB_SCAN_PAGES * oobsize; 972 ops.ooblen = NR_OOB_SCAN_PAGES * oobsize;
973 ops.ooblen = oobsize;
974 ops.oobbuf = c->oobbuf; 973 ops.oobbuf = c->oobbuf;
975 ops.ooboffs = 0; 974 ops.ooboffs = 0;
976 ops.datbuf = NULL; 975 ops.datbuf = NULL;
@@ -983,10 +982,10 @@ int jffs2_check_oob_empty(struct jffs2_sb_info *c,
983 return ret; 982 return ret;
984 } 983 }
985 984
986 if (ops.retlen < ops.len) { 985 if (ops.oobretlen < ops.ooblen) {
987 D1(printk(KERN_WARNING "jffs2_check_oob_empty(): Read OOB " 986 D1(printk(KERN_WARNING "jffs2_check_oob_empty(): Read OOB "
988 "returned short read (%zd bytes not %d) for block " 987 "returned short read (%zd bytes not %d) for block "
989 "at %08x\n", ops.retlen, ops.len, jeb->offset)); 988 "at %08x\n", ops.oobretlen, ops.ooblen, jeb->offset));
990 return -EIO; 989 return -EIO;
991 } 990 }
992 991
@@ -1005,7 +1004,7 @@ int jffs2_check_oob_empty(struct jffs2_sb_info *c,
1005 } 1004 }
1006 1005
1007 /* we know, we are aligned :) */ 1006 /* we know, we are aligned :) */
1008 for (page = oobsize; page < ops.len; page += sizeof(long)) { 1007 for (page = oobsize; page < ops.ooblen; page += sizeof(long)) {
1009 long dat = *(long *)(&ops.oobbuf[page]); 1008 long dat = *(long *)(&ops.oobbuf[page]);
1010 if(dat != -1) 1009 if(dat != -1)
1011 return 1; 1010 return 1;
@@ -1033,7 +1032,6 @@ int jffs2_check_nand_cleanmarker (struct jffs2_sb_info *c,
1033 return 2; 1032 return 2;
1034 } 1033 }
1035 1034
1036 ops.len = oobsize;
1037 ops.ooblen = oobsize; 1035 ops.ooblen = oobsize;
1038 ops.oobbuf = c->oobbuf; 1036 ops.oobbuf = c->oobbuf;
1039 ops.ooboffs = 0; 1037 ops.ooboffs = 0;
@@ -1048,10 +1046,10 @@ int jffs2_check_nand_cleanmarker (struct jffs2_sb_info *c,
1048 return ret; 1046 return ret;
1049 } 1047 }
1050 1048
1051 if (ops.retlen < ops.len) { 1049 if (ops.oobretlen < ops.ooblen) {
1052 D1 (printk (KERN_WARNING "jffs2_check_nand_cleanmarker(): " 1050 D1 (printk (KERN_WARNING "jffs2_check_nand_cleanmarker(): "
1053 "Read OOB return short read (%zd bytes not %d) " 1051 "Read OOB return short read (%zd bytes not %d) "
1054 "for block at %08x\n", ops.retlen, ops.len, 1052 "for block at %08x\n", ops.oobretlen, ops.ooblen,
1055 jeb->offset)); 1053 jeb->offset));
1056 return -EIO; 1054 return -EIO;
1057 } 1055 }
@@ -1090,8 +1088,7 @@ int jffs2_write_nand_cleanmarker(struct jffs2_sb_info *c,
1090 n.nodetype = cpu_to_je16(JFFS2_NODETYPE_CLEANMARKER); 1088 n.nodetype = cpu_to_je16(JFFS2_NODETYPE_CLEANMARKER);
1091 n.totlen = cpu_to_je32(8); 1089 n.totlen = cpu_to_je32(8);
1092 1090
1093 ops.len = c->fsdata_len; 1091 ops.ooblen = c->fsdata_len;
1094 ops.ooblen = c->fsdata_len;;
1095 ops.oobbuf = (uint8_t *)&n; 1092 ops.oobbuf = (uint8_t *)&n;
1096 ops.ooboffs = c->fsdata_pos; 1093 ops.ooboffs = c->fsdata_pos;
1097 ops.datbuf = NULL; 1094 ops.datbuf = NULL;
@@ -1105,10 +1102,10 @@ int jffs2_write_nand_cleanmarker(struct jffs2_sb_info *c,
1105 jeb->offset, ret)); 1102 jeb->offset, ret));
1106 return ret; 1103 return ret;
1107 } 1104 }
1108 if (ops.retlen != ops.len) { 1105 if (ops.oobretlen != ops.ooblen) {
1109 D1(printk(KERN_WARNING "jffs2_write_nand_cleanmarker(): " 1106 D1(printk(KERN_WARNING "jffs2_write_nand_cleanmarker(): "
1110 "Short write for block at %08x: %zd not %d\n", 1107 "Short write for block at %08x: %zd not %d\n",
1111 jeb->offset, ops.retlen, ops.len)); 1108 jeb->offset, ops.oobretlen, ops.ooblen));
1112 return -EIO; 1109 return -EIO;
1113 } 1110 }
1114 return 0; 1111 return 0;
diff --git a/fs/jffs2/xattr.c b/fs/jffs2/xattr.c
index 4da09ce1d1f5..4bb3f1897330 100644
--- a/fs/jffs2/xattr.c
+++ b/fs/jffs2/xattr.c
@@ -399,8 +399,6 @@ static void unrefer_xattr_datum(struct jffs2_sb_info *c, struct jffs2_xattr_datu
399{ 399{
400 /* must be called under down_write(xattr_sem) */ 400 /* must be called under down_write(xattr_sem) */
401 if (atomic_dec_and_lock(&xd->refcnt, &c->erase_completion_lock)) { 401 if (atomic_dec_and_lock(&xd->refcnt, &c->erase_completion_lock)) {
402 uint32_t xid = xd->xid, version = xd->version;
403
404 unload_xattr_datum(c, xd); 402 unload_xattr_datum(c, xd);
405 xd->flags |= JFFS2_XFLAGS_DEAD; 403 xd->flags |= JFFS2_XFLAGS_DEAD;
406 if (xd->node == (void *)xd) { 404 if (xd->node == (void *)xd) {
@@ -411,7 +409,8 @@ static void unrefer_xattr_datum(struct jffs2_sb_info *c, struct jffs2_xattr_datu
411 } 409 }
412 spin_unlock(&c->erase_completion_lock); 410 spin_unlock(&c->erase_completion_lock);
413 411
414 dbg_xattr("xdatum(xid=%u, version=%u) was removed.\n", xid, version); 412 dbg_xattr("xdatum(xid=%u, version=%u) was removed.\n",
413 xd->xid, xd->version);
415 } 414 }
416} 415}
417 416
diff --git a/fs/ntfs/ChangeLog b/fs/ntfs/ChangeLog
index 35cc4b1d60f7..af4ef808fa94 100644
--- a/fs/ntfs/ChangeLog
+++ b/fs/ntfs/ChangeLog
@@ -17,6 +17,13 @@ ToDo/Notes:
17 happen is unclear however so it is worth waiting until someone hits 17 happen is unclear however so it is worth waiting until someone hits
18 the problem. 18 the problem.
19 19
202.1.28 - Fix a deadlock.
21
22 - Fix deadlock in fs/ntfs/inode.c::ntfs_put_inode(). Thanks to Sergey
23 Vlasov for the report and detailed analysis of the deadlock. The fix
24 involved getting rid of ntfs_put_inode() altogether and hence NTFS no
25 longer has a ->put_inode super operation.
26
202.1.27 - Various bug fixes and cleanups. 272.1.27 - Various bug fixes and cleanups.
21 28
22 - Fix two compiler warnings on Alpha. Thanks to Andrew Morton for 29 - Fix two compiler warnings on Alpha. Thanks to Andrew Morton for
diff --git a/fs/ntfs/Makefile b/fs/ntfs/Makefile
index e27b4eacffbf..825508385565 100644
--- a/fs/ntfs/Makefile
+++ b/fs/ntfs/Makefile
@@ -6,7 +6,7 @@ ntfs-objs := aops.o attrib.o collate.o compress.o debug.o dir.o file.o \
6 index.o inode.o mft.o mst.o namei.o runlist.o super.o sysctl.o \ 6 index.o inode.o mft.o mst.o namei.o runlist.o super.o sysctl.o \
7 unistr.o upcase.o 7 unistr.o upcase.o
8 8
9EXTRA_CFLAGS = -DNTFS_VERSION=\"2.1.27\" 9EXTRA_CFLAGS = -DNTFS_VERSION=\"2.1.28\"
10 10
11ifeq ($(CONFIG_NTFS_DEBUG),y) 11ifeq ($(CONFIG_NTFS_DEBUG),y)
12EXTRA_CFLAGS += -DDEBUG 12EXTRA_CFLAGS += -DDEBUG
diff --git a/fs/ntfs/dir.c b/fs/ntfs/dir.c
index 8296c29ae3b8..74f99a6a369b 100644
--- a/fs/ntfs/dir.c
+++ b/fs/ntfs/dir.c
@@ -1,7 +1,7 @@
1/** 1/**
2 * dir.c - NTFS kernel directory operations. Part of the Linux-NTFS project. 2 * dir.c - NTFS kernel directory operations. Part of the Linux-NTFS project.
3 * 3 *
4 * Copyright (c) 2001-2005 Anton Altaparmakov 4 * Copyright (c) 2001-2007 Anton Altaparmakov
5 * Copyright (c) 2002 Richard Russon 5 * Copyright (c) 2002 Richard Russon
6 * 6 *
7 * This program/include file is free software; you can redistribute it and/or 7 * This program/include file is free software; you can redistribute it and/or
@@ -1249,16 +1249,12 @@ skip_index_root:
1249 /* Get the offset into the index allocation attribute. */ 1249 /* Get the offset into the index allocation attribute. */
1250 ia_pos = (s64)fpos - vol->mft_record_size; 1250 ia_pos = (s64)fpos - vol->mft_record_size;
1251 ia_mapping = vdir->i_mapping; 1251 ia_mapping = vdir->i_mapping;
1252 bmp_vi = ndir->itype.index.bmp_ino; 1252 ntfs_debug("Inode 0x%lx, getting index bitmap.", vdir->i_ino);
1253 if (unlikely(!bmp_vi)) { 1253 bmp_vi = ntfs_attr_iget(vdir, AT_BITMAP, I30, 4);
1254 ntfs_debug("Inode 0x%lx, regetting index bitmap.", vdir->i_ino); 1254 if (IS_ERR(bmp_vi)) {
1255 bmp_vi = ntfs_attr_iget(vdir, AT_BITMAP, I30, 4); 1255 ntfs_error(sb, "Failed to get bitmap attribute.");
1256 if (IS_ERR(bmp_vi)) { 1256 err = PTR_ERR(bmp_vi);
1257 ntfs_error(sb, "Failed to get bitmap attribute."); 1257 goto err_out;
1258 err = PTR_ERR(bmp_vi);
1259 goto err_out;
1260 }
1261 ndir->itype.index.bmp_ino = bmp_vi;
1262 } 1258 }
1263 bmp_mapping = bmp_vi->i_mapping; 1259 bmp_mapping = bmp_vi->i_mapping;
1264 /* Get the starting bitmap bit position and sanity check it. */ 1260 /* Get the starting bitmap bit position and sanity check it. */
@@ -1266,7 +1262,7 @@ skip_index_root:
1266 if (unlikely(bmp_pos >> 3 >= i_size_read(bmp_vi))) { 1262 if (unlikely(bmp_pos >> 3 >= i_size_read(bmp_vi))) {
1267 ntfs_error(sb, "Current index allocation position exceeds " 1263 ntfs_error(sb, "Current index allocation position exceeds "
1268 "index bitmap size."); 1264 "index bitmap size.");
1269 goto err_out; 1265 goto iput_err_out;
1270 } 1266 }
1271 /* Get the starting bit position in the current bitmap page. */ 1267 /* Get the starting bit position in the current bitmap page. */
1272 cur_bmp_pos = bmp_pos & ((PAGE_CACHE_SIZE * 8) - 1); 1268 cur_bmp_pos = bmp_pos & ((PAGE_CACHE_SIZE * 8) - 1);
@@ -1282,7 +1278,7 @@ get_next_bmp_page:
1282 ntfs_error(sb, "Reading index bitmap failed."); 1278 ntfs_error(sb, "Reading index bitmap failed.");
1283 err = PTR_ERR(bmp_page); 1279 err = PTR_ERR(bmp_page);
1284 bmp_page = NULL; 1280 bmp_page = NULL;
1285 goto err_out; 1281 goto iput_err_out;
1286 } 1282 }
1287 bmp = (u8*)page_address(bmp_page); 1283 bmp = (u8*)page_address(bmp_page);
1288 /* Find next index block in use. */ 1284 /* Find next index block in use. */
@@ -1429,6 +1425,7 @@ find_next_index_buffer:
1429 /* @ia_page is already unlocked in this case. */ 1425 /* @ia_page is already unlocked in this case. */
1430 ntfs_unmap_page(ia_page); 1426 ntfs_unmap_page(ia_page);
1431 ntfs_unmap_page(bmp_page); 1427 ntfs_unmap_page(bmp_page);
1428 iput(bmp_vi);
1432 goto abort; 1429 goto abort;
1433 } 1430 }
1434 } 1431 }
@@ -1439,6 +1436,7 @@ unm_EOD:
1439 ntfs_unmap_page(ia_page); 1436 ntfs_unmap_page(ia_page);
1440 } 1437 }
1441 ntfs_unmap_page(bmp_page); 1438 ntfs_unmap_page(bmp_page);
1439 iput(bmp_vi);
1442EOD: 1440EOD:
1443 /* We are finished, set fpos to EOD. */ 1441 /* We are finished, set fpos to EOD. */
1444 fpos = i_size + vol->mft_record_size; 1442 fpos = i_size + vol->mft_record_size;
@@ -1455,8 +1453,11 @@ done:
1455 filp->f_pos = fpos; 1453 filp->f_pos = fpos;
1456 return 0; 1454 return 0;
1457err_out: 1455err_out:
1458 if (bmp_page) 1456 if (bmp_page) {
1459 ntfs_unmap_page(bmp_page); 1457 ntfs_unmap_page(bmp_page);
1458iput_err_out:
1459 iput(bmp_vi);
1460 }
1460 if (ia_page) { 1461 if (ia_page) {
1461 unlock_page(ia_page); 1462 unlock_page(ia_page);
1462 ntfs_unmap_page(ia_page); 1463 ntfs_unmap_page(ia_page);
@@ -1529,14 +1530,22 @@ static int ntfs_dir_open(struct inode *vi, struct file *filp)
1529static int ntfs_dir_fsync(struct file *filp, struct dentry *dentry, 1530static int ntfs_dir_fsync(struct file *filp, struct dentry *dentry,
1530 int datasync) 1531 int datasync)
1531{ 1532{
1532 struct inode *vi = dentry->d_inode; 1533 struct inode *bmp_vi, *vi = dentry->d_inode;
1533 ntfs_inode *ni = NTFS_I(vi);
1534 int err, ret; 1534 int err, ret;
1535 ntfs_attr na;
1535 1536
1536 ntfs_debug("Entering for inode 0x%lx.", vi->i_ino); 1537 ntfs_debug("Entering for inode 0x%lx.", vi->i_ino);
1537 BUG_ON(!S_ISDIR(vi->i_mode)); 1538 BUG_ON(!S_ISDIR(vi->i_mode));
1538 if (NInoIndexAllocPresent(ni) && ni->itype.index.bmp_ino) 1539 /* If the bitmap attribute inode is in memory sync it, too. */
1539 write_inode_now(ni->itype.index.bmp_ino, !datasync); 1540 na.mft_no = vi->i_ino;
1541 na.type = AT_BITMAP;
1542 na.name = I30;
1543 na.name_len = 4;
1544 bmp_vi = ilookup5(vi->i_sb, vi->i_ino, (test_t)ntfs_test_inode, &na);
1545 if (bmp_vi) {
1546 write_inode_now(bmp_vi, !datasync);
1547 iput(bmp_vi);
1548 }
1540 ret = ntfs_write_inode(vi, 1); 1549 ret = ntfs_write_inode(vi, 1);
1541 write_inode_now(vi, !datasync); 1550 write_inode_now(vi, !datasync);
1542 err = sync_blockdev(vi->i_sb->s_bdev); 1551 err = sync_blockdev(vi->i_sb->s_bdev);
diff --git a/fs/ntfs/inode.c b/fs/ntfs/inode.c
index 247989891b4b..f8bf8da67ee8 100644
--- a/fs/ntfs/inode.c
+++ b/fs/ntfs/inode.c
@@ -1,7 +1,7 @@
1/** 1/**
2 * inode.c - NTFS kernel inode handling. Part of the Linux-NTFS project. 2 * inode.c - NTFS kernel inode handling. Part of the Linux-NTFS project.
3 * 3 *
4 * Copyright (c) 2001-2006 Anton Altaparmakov 4 * Copyright (c) 2001-2007 Anton Altaparmakov
5 * 5 *
6 * This program/include file is free software; you can redistribute it and/or 6 * This program/include file is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as published 7 * modify it under the terms of the GNU General Public License as published
@@ -95,7 +95,7 @@ int ntfs_test_inode(struct inode *vi, ntfs_attr *na)
95 * If initializing the normal file/directory inode, set @na->type to AT_UNUSED. 95 * If initializing the normal file/directory inode, set @na->type to AT_UNUSED.
96 * In that case, @na->name and @na->name_len should be set to NULL and 0, 96 * In that case, @na->name and @na->name_len should be set to NULL and 0,
97 * respectively. Although that is not strictly necessary as 97 * respectively. Although that is not strictly necessary as
98 * ntfs_read_inode_locked() will fill them in later. 98 * ntfs_read_locked_inode() will fill them in later.
99 * 99 *
100 * Return 0 on success and -errno on error. 100 * Return 0 on success and -errno on error.
101 * 101 *
@@ -171,8 +171,8 @@ static int ntfs_read_locked_index_inode(struct inode *base_vi,
171struct inode *ntfs_iget(struct super_block *sb, unsigned long mft_no) 171struct inode *ntfs_iget(struct super_block *sb, unsigned long mft_no)
172{ 172{
173 struct inode *vi; 173 struct inode *vi;
174 ntfs_attr na;
175 int err; 174 int err;
175 ntfs_attr na;
176 176
177 na.mft_no = mft_no; 177 na.mft_no = mft_no;
178 na.type = AT_UNUSED; 178 na.type = AT_UNUSED;
@@ -229,8 +229,8 @@ struct inode *ntfs_attr_iget(struct inode *base_vi, ATTR_TYPE type,
229 ntfschar *name, u32 name_len) 229 ntfschar *name, u32 name_len)
230{ 230{
231 struct inode *vi; 231 struct inode *vi;
232 ntfs_attr na;
233 int err; 232 int err;
233 ntfs_attr na;
234 234
235 /* Make sure no one calls ntfs_attr_iget() for indices. */ 235 /* Make sure no one calls ntfs_attr_iget() for indices. */
236 BUG_ON(type == AT_INDEX_ALLOCATION); 236 BUG_ON(type == AT_INDEX_ALLOCATION);
@@ -287,8 +287,8 @@ struct inode *ntfs_index_iget(struct inode *base_vi, ntfschar *name,
287 u32 name_len) 287 u32 name_len)
288{ 288{
289 struct inode *vi; 289 struct inode *vi;
290 ntfs_attr na;
291 int err; 290 int err;
291 ntfs_attr na;
292 292
293 na.mft_no = base_vi->i_ino; 293 na.mft_no = base_vi->i_ino;
294 na.type = AT_INDEX_ALLOCATION; 294 na.type = AT_INDEX_ALLOCATION;
@@ -402,7 +402,6 @@ void __ntfs_init_inode(struct super_block *sb, ntfs_inode *ni)
402 ntfs_init_runlist(&ni->attr_list_rl); 402 ntfs_init_runlist(&ni->attr_list_rl);
403 lockdep_set_class(&ni->attr_list_rl.lock, 403 lockdep_set_class(&ni->attr_list_rl.lock,
404 &attr_list_rl_lock_class); 404 &attr_list_rl_lock_class);
405 ni->itype.index.bmp_ino = NULL;
406 ni->itype.index.block_size = 0; 405 ni->itype.index.block_size = 0;
407 ni->itype.index.vcn_size = 0; 406 ni->itype.index.vcn_size = 0;
408 ni->itype.index.collation_rule = 0; 407 ni->itype.index.collation_rule = 0;
@@ -546,6 +545,7 @@ static int ntfs_read_locked_inode(struct inode *vi)
546{ 545{
547 ntfs_volume *vol = NTFS_SB(vi->i_sb); 546 ntfs_volume *vol = NTFS_SB(vi->i_sb);
548 ntfs_inode *ni; 547 ntfs_inode *ni;
548 struct inode *bvi;
549 MFT_RECORD *m; 549 MFT_RECORD *m;
550 ATTR_RECORD *a; 550 ATTR_RECORD *a;
551 STANDARD_INFORMATION *si; 551 STANDARD_INFORMATION *si;
@@ -780,7 +780,6 @@ skip_attr_list_load:
780 */ 780 */
781 if (S_ISDIR(vi->i_mode)) { 781 if (S_ISDIR(vi->i_mode)) {
782 loff_t bvi_size; 782 loff_t bvi_size;
783 struct inode *bvi;
784 ntfs_inode *bni; 783 ntfs_inode *bni;
785 INDEX_ROOT *ir; 784 INDEX_ROOT *ir;
786 u8 *ir_end, *index_end; 785 u8 *ir_end, *index_end;
@@ -985,13 +984,12 @@ skip_attr_list_load:
985 err = PTR_ERR(bvi); 984 err = PTR_ERR(bvi);
986 goto unm_err_out; 985 goto unm_err_out;
987 } 986 }
988 ni->itype.index.bmp_ino = bvi;
989 bni = NTFS_I(bvi); 987 bni = NTFS_I(bvi);
990 if (NInoCompressed(bni) || NInoEncrypted(bni) || 988 if (NInoCompressed(bni) || NInoEncrypted(bni) ||
991 NInoSparse(bni)) { 989 NInoSparse(bni)) {
992 ntfs_error(vi->i_sb, "$BITMAP attribute is compressed " 990 ntfs_error(vi->i_sb, "$BITMAP attribute is compressed "
993 "and/or encrypted and/or sparse."); 991 "and/or encrypted and/or sparse.");
994 goto unm_err_out; 992 goto iput_unm_err_out;
995 } 993 }
996 /* Consistency check bitmap size vs. index allocation size. */ 994 /* Consistency check bitmap size vs. index allocation size. */
997 bvi_size = i_size_read(bvi); 995 bvi_size = i_size_read(bvi);
@@ -1000,8 +998,10 @@ skip_attr_list_load:
1000 ntfs_error(vi->i_sb, "Index bitmap too small (0x%llx) " 998 ntfs_error(vi->i_sb, "Index bitmap too small (0x%llx) "
1001 "for index allocation (0x%llx).", 999 "for index allocation (0x%llx).",
1002 bvi_size << 3, vi->i_size); 1000 bvi_size << 3, vi->i_size);
1003 goto unm_err_out; 1001 goto iput_unm_err_out;
1004 } 1002 }
1003 /* No longer need the bitmap attribute inode. */
1004 iput(bvi);
1005skip_large_dir_stuff: 1005skip_large_dir_stuff:
1006 /* Setup the operations for this inode. */ 1006 /* Setup the operations for this inode. */
1007 vi->i_op = &ntfs_dir_inode_ops; 1007 vi->i_op = &ntfs_dir_inode_ops;
@@ -1176,7 +1176,8 @@ no_data_attr_special_case:
1176 vi->i_blocks = ni->allocated_size >> 9; 1176 vi->i_blocks = ni->allocated_size >> 9;
1177 ntfs_debug("Done."); 1177 ntfs_debug("Done.");
1178 return 0; 1178 return 0;
1179 1179iput_unm_err_out:
1180 iput(bvi);
1180unm_err_out: 1181unm_err_out:
1181 if (!err) 1182 if (!err)
1182 err = -EIO; 1183 err = -EIO;
@@ -1697,7 +1698,7 @@ static int ntfs_read_locked_index_inode(struct inode *base_vi, struct inode *vi)
1697 vi->i_size); 1698 vi->i_size);
1698 goto iput_unm_err_out; 1699 goto iput_unm_err_out;
1699 } 1700 }
1700 ni->itype.index.bmp_ino = bvi; 1701 iput(bvi);
1701skip_large_index_stuff: 1702skip_large_index_stuff:
1702 /* Setup the operations for this index inode. */ 1703 /* Setup the operations for this index inode. */
1703 vi->i_op = NULL; 1704 vi->i_op = NULL;
@@ -1714,7 +1715,6 @@ skip_large_index_stuff:
1714 1715
1715 ntfs_debug("Done."); 1716 ntfs_debug("Done.");
1716 return 0; 1717 return 0;
1717
1718iput_unm_err_out: 1718iput_unm_err_out:
1719 iput(bvi); 1719 iput(bvi);
1720unm_err_out: 1720unm_err_out:
@@ -2191,37 +2191,6 @@ err_out:
2191 return -1; 2191 return -1;
2192} 2192}
2193 2193
2194/**
2195 * ntfs_put_inode - handler for when the inode reference count is decremented
2196 * @vi: vfs inode
2197 *
2198 * The VFS calls ntfs_put_inode() every time the inode reference count (i_count)
2199 * is about to be decremented (but before the decrement itself.
2200 *
2201 * If the inode @vi is a directory with two references, one of which is being
2202 * dropped, we need to put the attribute inode for the directory index bitmap,
2203 * if it is present, otherwise the directory inode would remain pinned for
2204 * ever.
2205 */
2206void ntfs_put_inode(struct inode *vi)
2207{
2208 if (S_ISDIR(vi->i_mode) && atomic_read(&vi->i_count) == 2) {
2209 ntfs_inode *ni = NTFS_I(vi);
2210 if (NInoIndexAllocPresent(ni)) {
2211 struct inode *bvi = NULL;
2212 mutex_lock(&vi->i_mutex);
2213 if (atomic_read(&vi->i_count) == 2) {
2214 bvi = ni->itype.index.bmp_ino;
2215 if (bvi)
2216 ni->itype.index.bmp_ino = NULL;
2217 }
2218 mutex_unlock(&vi->i_mutex);
2219 if (bvi)
2220 iput(bvi);
2221 }
2222 }
2223}
2224
2225static void __ntfs_clear_inode(ntfs_inode *ni) 2194static void __ntfs_clear_inode(ntfs_inode *ni)
2226{ 2195{
2227 /* Free all alocated memory. */ 2196 /* Free all alocated memory. */
@@ -2287,18 +2256,6 @@ void ntfs_clear_big_inode(struct inode *vi)
2287{ 2256{
2288 ntfs_inode *ni = NTFS_I(vi); 2257 ntfs_inode *ni = NTFS_I(vi);
2289 2258
2290 /*
2291 * If the inode @vi is an index inode we need to put the attribute
2292 * inode for the index bitmap, if it is present, otherwise the index
2293 * inode would disappear and the attribute inode for the index bitmap
2294 * would no longer be referenced from anywhere and thus it would remain
2295 * pinned for ever.
2296 */
2297 if (NInoAttr(ni) && (ni->type == AT_INDEX_ALLOCATION) &&
2298 NInoIndexAllocPresent(ni) && ni->itype.index.bmp_ino) {
2299 iput(ni->itype.index.bmp_ino);
2300 ni->itype.index.bmp_ino = NULL;
2301 }
2302#ifdef NTFS_RW 2259#ifdef NTFS_RW
2303 if (NInoDirty(ni)) { 2260 if (NInoDirty(ni)) {
2304 bool was_bad = (is_bad_inode(vi)); 2261 bool was_bad = (is_bad_inode(vi));
diff --git a/fs/ntfs/inode.h b/fs/ntfs/inode.h
index f088291e017c..117eaf8032a3 100644
--- a/fs/ntfs/inode.h
+++ b/fs/ntfs/inode.h
@@ -2,7 +2,7 @@
2 * inode.h - Defines for inode structures NTFS Linux kernel driver. Part of 2 * inode.h - Defines for inode structures NTFS Linux kernel driver. Part of
3 * the Linux-NTFS project. 3 * the Linux-NTFS project.
4 * 4 *
5 * Copyright (c) 2001-2005 Anton Altaparmakov 5 * Copyright (c) 2001-2007 Anton Altaparmakov
6 * Copyright (c) 2002 Richard Russon 6 * Copyright (c) 2002 Richard Russon
7 * 7 *
8 * This program/include file is free software; you can redistribute it and/or 8 * This program/include file is free software; you can redistribute it and/or
@@ -101,8 +101,6 @@ struct _ntfs_inode {
101 runlist attr_list_rl; /* Run list for the attribute list value. */ 101 runlist attr_list_rl; /* Run list for the attribute list value. */
102 union { 102 union {
103 struct { /* It is a directory, $MFT, or an index inode. */ 103 struct { /* It is a directory, $MFT, or an index inode. */
104 struct inode *bmp_ino; /* Attribute inode for the
105 index $BITMAP. */
106 u32 block_size; /* Size of an index block. */ 104 u32 block_size; /* Size of an index block. */
107 u32 vcn_size; /* Size of a vcn in this 105 u32 vcn_size; /* Size of a vcn in this
108 index. */ 106 index. */
@@ -300,8 +298,6 @@ extern void ntfs_clear_extent_inode(ntfs_inode *ni);
300 298
301extern int ntfs_read_inode_mount(struct inode *vi); 299extern int ntfs_read_inode_mount(struct inode *vi);
302 300
303extern void ntfs_put_inode(struct inode *vi);
304
305extern int ntfs_show_options(struct seq_file *sf, struct vfsmount *mnt); 301extern int ntfs_show_options(struct seq_file *sf, struct vfsmount *mnt);
306 302
307#ifdef NTFS_RW 303#ifdef NTFS_RW
diff --git a/fs/ntfs/super.c b/fs/ntfs/super.c
index 03a391ac7145..babf94d90def 100644
--- a/fs/ntfs/super.c
+++ b/fs/ntfs/super.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * super.c - NTFS kernel super block handling. Part of the Linux-NTFS project. 2 * super.c - NTFS kernel super block handling. Part of the Linux-NTFS project.
3 * 3 *
4 * Copyright (c) 2001-2006 Anton Altaparmakov 4 * Copyright (c) 2001-2007 Anton Altaparmakov
5 * Copyright (c) 2001,2002 Richard Russon 5 * Copyright (c) 2001,2002 Richard Russon
6 * 6 *
7 * This program/include file is free software; you can redistribute it and/or 7 * This program/include file is free software; you can redistribute it and/or
@@ -2702,9 +2702,6 @@ static int ntfs_statfs(struct dentry *dentry, struct kstatfs *sfs)
2702static struct super_operations ntfs_sops = { 2702static struct super_operations ntfs_sops = {
2703 .alloc_inode = ntfs_alloc_big_inode, /* VFS: Allocate new inode. */ 2703 .alloc_inode = ntfs_alloc_big_inode, /* VFS: Allocate new inode. */
2704 .destroy_inode = ntfs_destroy_big_inode, /* VFS: Deallocate inode. */ 2704 .destroy_inode = ntfs_destroy_big_inode, /* VFS: Deallocate inode. */
2705 .put_inode = ntfs_put_inode, /* VFS: Called just before
2706 the inode reference count
2707 is decreased. */
2708#ifdef NTFS_RW 2705#ifdef NTFS_RW
2709 //.dirty_inode = NULL, /* VFS: Called from 2706 //.dirty_inode = NULL, /* VFS: Called from
2710 // __mark_inode_dirty(). */ 2707 // __mark_inode_dirty(). */
@@ -3261,7 +3258,7 @@ static void __exit exit_ntfs_fs(void)
3261} 3258}
3262 3259
3263MODULE_AUTHOR("Anton Altaparmakov <aia21@cantab.net>"); 3260MODULE_AUTHOR("Anton Altaparmakov <aia21@cantab.net>");
3264MODULE_DESCRIPTION("NTFS 1.2/3.x driver - Copyright (c) 2001-2006 Anton Altaparmakov"); 3261MODULE_DESCRIPTION("NTFS 1.2/3.x driver - Copyright (c) 2001-2007 Anton Altaparmakov");
3265MODULE_VERSION(NTFS_VERSION); 3262MODULE_VERSION(NTFS_VERSION);
3266MODULE_LICENSE("GPL"); 3263MODULE_LICENSE("GPL");
3267#ifdef DEBUG 3264#ifdef DEBUG
diff --git a/fs/ocfs2/export.c b/fs/ocfs2/export.c
index 06be6e774cf9..56e1fefc1205 100644
--- a/fs/ocfs2/export.c
+++ b/fs/ocfs2/export.c
@@ -60,14 +60,11 @@ static struct dentry *ocfs2_get_dentry(struct super_block *sb, void *vobjp)
60 60
61 inode = ocfs2_iget(OCFS2_SB(sb), handle->ih_blkno, 0); 61 inode = ocfs2_iget(OCFS2_SB(sb), handle->ih_blkno, 0);
62 62
63 if (IS_ERR(inode)) { 63 if (IS_ERR(inode))
64 mlog_errno(PTR_ERR(inode));
65 return (void *)inode; 64 return (void *)inode;
66 }
67 65
68 if (handle->ih_generation != inode->i_generation) { 66 if (handle->ih_generation != inode->i_generation) {
69 iput(inode); 67 iput(inode);
70 mlog_errno(-ESTALE);
71 return ERR_PTR(-ESTALE); 68 return ERR_PTR(-ESTALE);
72 } 69 }
73 70
diff --git a/fs/ocfs2/inode.c b/fs/ocfs2/inode.c
index e4d91493d7d7..28ab56f2b98c 100644
--- a/fs/ocfs2/inode.c
+++ b/fs/ocfs2/inode.c
@@ -146,7 +146,6 @@ struct inode *ocfs2_iget(struct ocfs2_super *osb, u64 blkno, int flags)
146 if (is_bad_inode(inode)) { 146 if (is_bad_inode(inode)) {
147 iput(inode); 147 iput(inode);
148 inode = ERR_PTR(-ESTALE); 148 inode = ERR_PTR(-ESTALE);
149 mlog_errno(PTR_ERR(inode));
150 goto bail; 149 goto bail;
151 } 150 }
152 151
@@ -155,8 +154,7 @@ bail:
155 mlog(0, "returning inode with number %llu\n", 154 mlog(0, "returning inode with number %llu\n",
156 (unsigned long long)OCFS2_I(inode)->ip_blkno); 155 (unsigned long long)OCFS2_I(inode)->ip_blkno);
157 mlog_exit_ptr(inode); 156 mlog_exit_ptr(inode);
158 } else 157 }
159 mlog_errno(PTR_ERR(inode));
160 158
161 return inode; 159 return inode;
162} 160}
@@ -247,7 +245,7 @@ int ocfs2_populate_inode(struct inode *inode, struct ocfs2_dinode *fe,
247 * today. change if needed. */ 245 * today. change if needed. */
248 if (!OCFS2_IS_VALID_DINODE(fe) || 246 if (!OCFS2_IS_VALID_DINODE(fe) ||
249 !(fe->i_flags & cpu_to_le32(OCFS2_VALID_FL))) { 247 !(fe->i_flags & cpu_to_le32(OCFS2_VALID_FL))) {
250 mlog(ML_ERROR, "Invalid dinode: i_ino=%lu, i_blkno=%llu, " 248 mlog(0, "Invalid dinode: i_ino=%lu, i_blkno=%llu, "
251 "signature = %.*s, flags = 0x%x\n", 249 "signature = %.*s, flags = 0x%x\n",
252 inode->i_ino, 250 inode->i_ino,
253 (unsigned long long)le64_to_cpu(fe->i_blkno), 7, 251 (unsigned long long)le64_to_cpu(fe->i_blkno), 7,
@@ -478,11 +476,8 @@ static int ocfs2_read_locked_inode(struct inode *inode,
478 S_ISBLK(le16_to_cpu(fe->i_mode))) 476 S_ISBLK(le16_to_cpu(fe->i_mode)))
479 inode->i_rdev = huge_decode_dev(le64_to_cpu(fe->id1.dev1.i_rdev)); 477 inode->i_rdev = huge_decode_dev(le64_to_cpu(fe->id1.dev1.i_rdev));
480 478
481 if (ocfs2_populate_inode(inode, fe, 0) < 0) { 479 if (ocfs2_populate_inode(inode, fe, 0) < 0)
482 mlog(ML_ERROR, "populate failed! i_blkno=%llu, i_ino=%lu\n",
483 (unsigned long long)fe->i_blkno, inode->i_ino);
484 goto bail; 480 goto bail;
485 }
486 481
487 BUG_ON(args->fi_blkno != le64_to_cpu(fe->i_blkno)); 482 BUG_ON(args->fi_blkno != le64_to_cpu(fe->i_blkno));
488 483
diff --git a/fs/ocfs2/namei.c b/fs/ocfs2/namei.c
index 9637039c2633..f3d7803b4b46 100644
--- a/fs/ocfs2/namei.c
+++ b/fs/ocfs2/namei.c
@@ -932,14 +932,15 @@ static int ocfs2_unlink(struct inode *dir,
932 goto leave; 932 goto leave;
933 } 933 }
934 934
935 if (S_ISDIR(inode->i_mode)) { 935 dir->i_ctime = dir->i_mtime = CURRENT_TIME;
936 if (S_ISDIR(inode->i_mode))
936 drop_nlink(dir); 937 drop_nlink(dir);
937 status = ocfs2_mark_inode_dirty(handle, dir, 938
938 parent_node_bh); 939 status = ocfs2_mark_inode_dirty(handle, dir, parent_node_bh);
939 if (status < 0) { 940 if (status < 0) {
940 mlog_errno(status); 941 mlog_errno(status);
942 if (S_ISDIR(inode->i_mode))
941 inc_nlink(dir); 943 inc_nlink(dir);
942 }
943 } 944 }
944 945
945leave: 946leave:
@@ -1068,6 +1069,7 @@ static int ocfs2_rename(struct inode *old_dir,
1068 char orphan_name[OCFS2_ORPHAN_NAMELEN + 1]; 1069 char orphan_name[OCFS2_ORPHAN_NAMELEN + 1];
1069 struct buffer_head *orphan_entry_bh = NULL; 1070 struct buffer_head *orphan_entry_bh = NULL;
1070 struct buffer_head *newfe_bh = NULL; 1071 struct buffer_head *newfe_bh = NULL;
1072 struct buffer_head *old_inode_bh = NULL;
1071 struct buffer_head *insert_entry_bh = NULL; 1073 struct buffer_head *insert_entry_bh = NULL;
1072 struct ocfs2_super *osb = NULL; 1074 struct ocfs2_super *osb = NULL;
1073 u64 newfe_blkno; 1075 u64 newfe_blkno;
@@ -1079,7 +1081,7 @@ static int ocfs2_rename(struct inode *old_dir,
1079 struct buffer_head *new_de_bh = NULL, *old_de_bh = NULL; // bhs for above 1081 struct buffer_head *new_de_bh = NULL, *old_de_bh = NULL; // bhs for above
1080 struct buffer_head *old_inode_de_bh = NULL; // if old_dentry is a dir, 1082 struct buffer_head *old_inode_de_bh = NULL; // if old_dentry is a dir,
1081 // this is the 1st dirent bh 1083 // this is the 1st dirent bh
1082 nlink_t old_dir_nlink = old_dir->i_nlink, new_dir_nlink = new_dir->i_nlink; 1084 nlink_t old_dir_nlink = old_dir->i_nlink;
1083 1085
1084 /* At some point it might be nice to break this function up a 1086 /* At some point it might be nice to break this function up a
1085 * bit. */ 1087 * bit. */
@@ -1139,12 +1141,11 @@ static int ocfs2_rename(struct inode *old_dir,
1139 } 1141 }
1140 1142
1141 /* 1143 /*
1142 * Though we don't require an inode meta data update if 1144 * Aside from allowing a meta data update, the locking here
1143 * old_inode is not a directory, we lock anyway here to ensure 1145 * also ensures that the vote thread on other nodes won't have
1144 * the vote thread on other nodes won't have to concurrently 1146 * to concurrently downconvert the inode and the dentry locks.
1145 * downconvert the inode and the dentry locks.
1146 */ 1147 */
1147 status = ocfs2_meta_lock(old_inode, NULL, 1); 1148 status = ocfs2_meta_lock(old_inode, &old_inode_bh, 1);
1148 if (status < 0) { 1149 if (status < 0) {
1149 if (status != -ENOENT) 1150 if (status != -ENOENT)
1150 mlog_errno(status); 1151 mlog_errno(status);
@@ -1355,6 +1356,7 @@ static int ocfs2_rename(struct inode *old_dir,
1355 1356
1356 old_inode->i_ctime = CURRENT_TIME; 1357 old_inode->i_ctime = CURRENT_TIME;
1357 mark_inode_dirty(old_inode); 1358 mark_inode_dirty(old_inode);
1359 ocfs2_mark_inode_dirty(handle, old_inode, old_inode_bh);
1358 1360
1359 /* now that the name has been added to new_dir, remove the old name */ 1361 /* now that the name has been added to new_dir, remove the old name */
1360 status = ocfs2_delete_entry(handle, old_dir, old_de, old_de_bh); 1362 status = ocfs2_delete_entry(handle, old_dir, old_de, old_de_bh);
@@ -1384,27 +1386,22 @@ static int ocfs2_rename(struct inode *old_dir,
1384 } 1386 }
1385 } 1387 }
1386 mark_inode_dirty(old_dir); 1388 mark_inode_dirty(old_dir);
1387 if (new_inode) 1389 ocfs2_mark_inode_dirty(handle, old_dir, old_dir_bh);
1390 if (new_inode) {
1388 mark_inode_dirty(new_inode); 1391 mark_inode_dirty(new_inode);
1392 ocfs2_mark_inode_dirty(handle, new_inode, newfe_bh);
1393 }
1389 1394
1390 if (old_dir != new_dir) 1395 if (old_dir != new_dir) {
1391 if (new_dir_nlink != new_dir->i_nlink) { 1396 /* Keep the same times on both directories.*/
1392 if (!new_dir_bh) { 1397 new_dir->i_ctime = new_dir->i_mtime = old_dir->i_ctime;
1393 mlog(ML_ERROR, "need to change nlink for new " 1398
1394 "dir %llu from %d to %d but bh is NULL\n", 1399 /*
1395 (unsigned long long)OCFS2_I(new_dir)->ip_blkno, 1400 * This will also pick up the i_nlink change from the
1396 (int)new_dir_nlink, new_dir->i_nlink); 1401 * block above.
1397 } else { 1402 */
1398 struct ocfs2_dinode *fe; 1403 ocfs2_mark_inode_dirty(handle, new_dir, new_dir_bh);
1399 status = ocfs2_journal_access(handle, 1404 }
1400 new_dir,
1401 new_dir_bh,
1402 OCFS2_JOURNAL_ACCESS_WRITE);
1403 fe = (struct ocfs2_dinode *) new_dir_bh->b_data;
1404 fe->i_links_count = cpu_to_le16(new_dir->i_nlink);
1405 status = ocfs2_journal_dirty(handle, new_dir_bh);
1406 }
1407 }
1408 1405
1409 if (old_dir_nlink != old_dir->i_nlink) { 1406 if (old_dir_nlink != old_dir->i_nlink) {
1410 if (!old_dir_bh) { 1407 if (!old_dir_bh) {
@@ -1455,6 +1452,8 @@ bail:
1455 iput(new_inode); 1452 iput(new_inode);
1456 if (newfe_bh) 1453 if (newfe_bh)
1457 brelse(newfe_bh); 1454 brelse(newfe_bh);
1455 if (old_inode_bh)
1456 brelse(old_inode_bh);
1458 if (old_dir_bh) 1457 if (old_dir_bh)
1459 brelse(old_dir_bh); 1458 brelse(old_dir_bh);
1460 if (new_dir_bh) 1459 if (new_dir_bh)
@@ -1826,6 +1825,13 @@ static int __ocfs2_add_entry(handle_t *handle,
1826 (le16_to_cpu(de->rec_len) >= rec_len)) || 1825 (le16_to_cpu(de->rec_len) >= rec_len)) ||
1827 (le16_to_cpu(de->rec_len) >= 1826 (le16_to_cpu(de->rec_len) >=
1828 (OCFS2_DIR_REC_LEN(de->name_len) + rec_len))) { 1827 (OCFS2_DIR_REC_LEN(de->name_len) + rec_len))) {
1828 dir->i_mtime = dir->i_ctime = CURRENT_TIME;
1829 retval = ocfs2_mark_inode_dirty(handle, dir, parent_fe_bh);
1830 if (retval < 0) {
1831 mlog_errno(retval);
1832 goto bail;
1833 }
1834
1829 status = ocfs2_journal_access(handle, dir, insert_bh, 1835 status = ocfs2_journal_access(handle, dir, insert_bh,
1830 OCFS2_JOURNAL_ACCESS_WRITE); 1836 OCFS2_JOURNAL_ACCESS_WRITE);
1831 /* By now the buffer is marked for journaling */ 1837 /* By now the buffer is marked for journaling */
@@ -1848,7 +1854,6 @@ static int __ocfs2_add_entry(handle_t *handle,
1848 de->name_len = namelen; 1854 de->name_len = namelen;
1849 memcpy(de->name, name, namelen); 1855 memcpy(de->name, name, namelen);
1850 1856
1851 dir->i_mtime = dir->i_ctime = CURRENT_TIME;
1852 dir->i_version++; 1857 dir->i_version++;
1853 status = ocfs2_journal_dirty(handle, insert_bh); 1858 status = ocfs2_journal_dirty(handle, insert_bh);
1854 retval = 0; 1859 retval = 0;
diff --git a/fs/ocfs2/ocfs2_fs.h b/fs/ocfs2/ocfs2_fs.h
index b5c68567077e..c99e9058c198 100644
--- a/fs/ocfs2/ocfs2_fs.h
+++ b/fs/ocfs2/ocfs2_fs.h
@@ -85,7 +85,7 @@
85#define OCFS2_CLEAR_INCOMPAT_FEATURE(sb,mask) \ 85#define OCFS2_CLEAR_INCOMPAT_FEATURE(sb,mask) \
86 OCFS2_SB(sb)->s_feature_incompat &= ~(mask) 86 OCFS2_SB(sb)->s_feature_incompat &= ~(mask)
87 87
88#define OCFS2_FEATURE_COMPAT_SUPP 0 88#define OCFS2_FEATURE_COMPAT_SUPP OCFS2_FEATURE_COMPAT_BACKUP_SB
89#define OCFS2_FEATURE_INCOMPAT_SUPP OCFS2_FEATURE_INCOMPAT_LOCAL_MOUNT 89#define OCFS2_FEATURE_INCOMPAT_SUPP OCFS2_FEATURE_INCOMPAT_LOCAL_MOUNT
90#define OCFS2_FEATURE_RO_COMPAT_SUPP 0 90#define OCFS2_FEATURE_RO_COMPAT_SUPP 0
91 91
@@ -110,6 +110,20 @@
110#define OCFS2_FEATURE_INCOMPAT_SPARSE_ALLOC 0x0010 110#define OCFS2_FEATURE_INCOMPAT_SPARSE_ALLOC 0x0010
111 111
112/* 112/*
113 * backup superblock flag is used to indicate that this volume
114 * has backup superblocks.
115 */
116#define OCFS2_FEATURE_COMPAT_BACKUP_SB 0x0001
117
118/* The byte offset of the first backup block will be 1G.
119 * The following will be 4G, 16G, 64G, 256G and 1T.
120 */
121#define OCFS2_BACKUP_SB_START 1 << 30
122
123/* the max backup superblock nums */
124#define OCFS2_MAX_BACKUP_SUPERBLOCKS 6
125
126/*
113 * Flags on ocfs2_dinode.i_flags 127 * Flags on ocfs2_dinode.i_flags
114 */ 128 */
115#define OCFS2_VALID_FL (0x00000001) /* Inode is valid */ 129#define OCFS2_VALID_FL (0x00000001) /* Inode is valid */
@@ -566,6 +580,20 @@ static inline int ocfs2_truncate_recs_per_inode(struct super_block *sb)
566 580
567 return size / sizeof(struct ocfs2_truncate_rec); 581 return size / sizeof(struct ocfs2_truncate_rec);
568} 582}
583
584static inline u64 ocfs2_backup_super_blkno(struct super_block *sb, int index)
585{
586 u64 offset = OCFS2_BACKUP_SB_START;
587
588 if (index >= 0 && index < OCFS2_MAX_BACKUP_SUPERBLOCKS) {
589 offset <<= (2 * index);
590 offset /= sb->s_blocksize;
591 return offset;
592 }
593
594 return 0;
595
596}
569#else 597#else
570static inline int ocfs2_fast_symlink_chars(int blocksize) 598static inline int ocfs2_fast_symlink_chars(int blocksize)
571{ 599{
@@ -631,6 +659,19 @@ static inline int ocfs2_truncate_recs_per_inode(int blocksize)
631 659
632 return size / sizeof(struct ocfs2_truncate_rec); 660 return size / sizeof(struct ocfs2_truncate_rec);
633} 661}
662
663static inline uint64_t ocfs2_backup_super_blkno(int blocksize, int index)
664{
665 uint64_t offset = OCFS2_BACKUP_SB_START;
666
667 if (index >= 0 && index < OCFS2_MAX_BACKUP_SUPERBLOCKS) {
668 offset <<= (2 * index);
669 offset /= blocksize;
670 return offset;
671 }
672
673 return 0;
674}
634#endif /* __KERNEL__ */ 675#endif /* __KERNEL__ */
635 676
636 677
diff --git a/fs/ocfs2/symlink.c b/fs/ocfs2/symlink.c
index 957d6878b03e..03b0191534d5 100644
--- a/fs/ocfs2/symlink.c
+++ b/fs/ocfs2/symlink.c
@@ -158,8 +158,7 @@ static void *ocfs2_follow_link(struct dentry *dentry,
158 } 158 }
159 159
160 status = vfs_follow_link(nd, link); 160 status = vfs_follow_link(nd, link);
161 if (status && status != -ENOENT) 161
162 mlog_errno(status);
163bail: 162bail:
164 if (page) { 163 if (page) {
165 kunmap(page); 164 kunmap(page);
diff --git a/fs/reiserfs/file.c b/fs/reiserfs/file.c
index 99b6f329ba23..5109f1d5e7ff 100644
--- a/fs/reiserfs/file.c
+++ b/fs/reiserfs/file.c
@@ -48,6 +48,11 @@ static int reiserfs_file_release(struct inode *inode, struct file *filp)
48 } 48 }
49 49
50 mutex_lock(&inode->i_mutex); 50 mutex_lock(&inode->i_mutex);
51
52 mutex_lock(&(REISERFS_I(inode)->i_mmap));
53 if (REISERFS_I(inode)->i_flags & i_ever_mapped)
54 REISERFS_I(inode)->i_flags &= ~i_pack_on_close_mask;
55
51 reiserfs_write_lock(inode->i_sb); 56 reiserfs_write_lock(inode->i_sb);
52 /* freeing preallocation only involves relogging blocks that 57 /* freeing preallocation only involves relogging blocks that
53 * are already in the current transaction. preallocation gets 58 * are already in the current transaction. preallocation gets
@@ -100,11 +105,24 @@ static int reiserfs_file_release(struct inode *inode, struct file *filp)
100 err = reiserfs_truncate_file(inode, 0); 105 err = reiserfs_truncate_file(inode, 0);
101 } 106 }
102 out: 107 out:
108 mutex_unlock(&(REISERFS_I(inode)->i_mmap));
103 mutex_unlock(&inode->i_mutex); 109 mutex_unlock(&inode->i_mutex);
104 reiserfs_write_unlock(inode->i_sb); 110 reiserfs_write_unlock(inode->i_sb);
105 return err; 111 return err;
106} 112}
107 113
114static int reiserfs_file_mmap(struct file *file, struct vm_area_struct *vma)
115{
116 struct inode *inode;
117
118 inode = file->f_path.dentry->d_inode;
119 mutex_lock(&(REISERFS_I(inode)->i_mmap));
120 REISERFS_I(inode)->i_flags |= i_ever_mapped;
121 mutex_unlock(&(REISERFS_I(inode)->i_mmap));
122
123 return generic_file_mmap(file, vma);
124}
125
108static void reiserfs_vfs_truncate_file(struct inode *inode) 126static void reiserfs_vfs_truncate_file(struct inode *inode)
109{ 127{
110 reiserfs_truncate_file(inode, 1); 128 reiserfs_truncate_file(inode, 1);
@@ -1527,7 +1545,7 @@ const struct file_operations reiserfs_file_operations = {
1527#ifdef CONFIG_COMPAT 1545#ifdef CONFIG_COMPAT
1528 .compat_ioctl = reiserfs_compat_ioctl, 1546 .compat_ioctl = reiserfs_compat_ioctl,
1529#endif 1547#endif
1530 .mmap = generic_file_mmap, 1548 .mmap = reiserfs_file_mmap,
1531 .open = generic_file_open, 1549 .open = generic_file_open,
1532 .release = reiserfs_file_release, 1550 .release = reiserfs_file_release,
1533 .fsync = reiserfs_sync_file, 1551 .fsync = reiserfs_sync_file,
diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c
index f3d1c4a77979..9fcbfe316977 100644
--- a/fs/reiserfs/inode.c
+++ b/fs/reiserfs/inode.c
@@ -1125,6 +1125,7 @@ static void init_inode(struct inode *inode, struct treepath *path)
1125 REISERFS_I(inode)->i_prealloc_count = 0; 1125 REISERFS_I(inode)->i_prealloc_count = 0;
1126 REISERFS_I(inode)->i_trans_id = 0; 1126 REISERFS_I(inode)->i_trans_id = 0;
1127 REISERFS_I(inode)->i_jl = NULL; 1127 REISERFS_I(inode)->i_jl = NULL;
1128 mutex_init(&(REISERFS_I(inode)->i_mmap));
1128 reiserfs_init_acl_access(inode); 1129 reiserfs_init_acl_access(inode);
1129 reiserfs_init_acl_default(inode); 1130 reiserfs_init_acl_default(inode);
1130 reiserfs_init_xattr_rwsem(inode); 1131 reiserfs_init_xattr_rwsem(inode);
@@ -1832,6 +1833,7 @@ int reiserfs_new_inode(struct reiserfs_transaction_handle *th,
1832 REISERFS_I(inode)->i_attrs = 1833 REISERFS_I(inode)->i_attrs =
1833 REISERFS_I(dir)->i_attrs & REISERFS_INHERIT_MASK; 1834 REISERFS_I(dir)->i_attrs & REISERFS_INHERIT_MASK;
1834 sd_attrs_to_i_attrs(REISERFS_I(inode)->i_attrs, inode); 1835 sd_attrs_to_i_attrs(REISERFS_I(inode)->i_attrs, inode);
1836 mutex_init(&(REISERFS_I(inode)->i_mmap));
1835 reiserfs_init_acl_access(inode); 1837 reiserfs_init_acl_access(inode);
1836 reiserfs_init_acl_default(inode); 1838 reiserfs_init_acl_default(inode);
1837 reiserfs_init_xattr_rwsem(inode); 1839 reiserfs_init_xattr_rwsem(inode);
diff --git a/include/asm-i386/processor.h b/include/asm-i386/processor.h
index a52d65440429..359f10b54f59 100644
--- a/include/asm-i386/processor.h
+++ b/include/asm-i386/processor.h
@@ -743,6 +743,7 @@ extern void enable_sep_cpu(void);
743extern int sysenter_setup(void); 743extern int sysenter_setup(void);
744 744
745extern int init_gdt(int cpu, struct task_struct *idle); 745extern int init_gdt(int cpu, struct task_struct *idle);
746extern void cpu_set_gdt(int);
746extern void secondary_cpu_init(void); 747extern void secondary_cpu_init(void);
747 748
748#endif /* __ASM_I386_PROCESSOR_H */ 749#endif /* __ASM_I386_PROCESSOR_H */
diff --git a/include/asm-ia64/checksum.h b/include/asm-ia64/checksum.h
index 2b78582cbd61..97af155057e4 100644
--- a/include/asm-ia64/checksum.h
+++ b/include/asm-ia64/checksum.h
@@ -72,8 +72,8 @@ static inline __sum16 csum_fold(__wsum csum)
72 72
73#define _HAVE_ARCH_IPV6_CSUM 1 73#define _HAVE_ARCH_IPV6_CSUM 1
74struct in6_addr; 74struct in6_addr;
75extern unsigned short int csum_ipv6_magic(struct in6_addr *saddr, 75extern __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
76 struct in6_addr *daddr, __u32 len, unsigned short proto, 76 const struct in6_addr *daddr, __u32 len, unsigned short proto,
77 unsigned int csum); 77 __wsum csum);
78 78
79#endif /* _ASM_IA64_CHECKSUM_H */ 79#endif /* _ASM_IA64_CHECKSUM_H */
diff --git a/include/asm-mips/irqflags.h b/include/asm-mips/irqflags.h
index 46bf5de5ac72..af3b07dfad4b 100644
--- a/include/asm-mips/irqflags.h
+++ b/include/asm-mips/irqflags.h
@@ -15,6 +15,27 @@
15 15
16#include <asm/hazards.h> 16#include <asm/hazards.h>
17 17
18/*
19 * CONFIG_MIPS_MT_SMTC_INSTANT_REPLAY does prompt replay of deferred IPIs,
20 * at the cost of branch and call overhead on each local_irq_restore()
21 */
22
23#ifdef CONFIG_MIPS_MT_SMTC_INSTANT_REPLAY
24
25extern void smtc_ipi_replay(void);
26
27#define irq_restore_epilog(flags) \
28do { \
29 if (!(flags & 0x0400)) \
30 smtc_ipi_replay(); \
31} while (0)
32
33#else
34
35#define irq_restore_epilog(ignore) do { } while (0)
36
37#endif /* CONFIG_MIPS_MT_SMTC_INSTANT_REPLAY */
38
18__asm__ ( 39__asm__ (
19 " .macro raw_local_irq_enable \n" 40 " .macro raw_local_irq_enable \n"
20 " .set push \n" 41 " .set push \n"
@@ -193,6 +214,7 @@ do { \
193 : "=r" (__tmp1) \ 214 : "=r" (__tmp1) \
194 : "0" (flags) \ 215 : "0" (flags) \
195 : "memory"); \ 216 : "memory"); \
217 irq_restore_epilog(flags); \
196} while(0) 218} while(0)
197 219
198static inline int raw_irqs_disabled_flags(unsigned long flags) 220static inline int raw_irqs_disabled_flags(unsigned long flags)
diff --git a/include/asm-powerpc/atomic.h b/include/asm-powerpc/atomic.h
index 53283e2540b3..f038e33e6d48 100644
--- a/include/asm-powerpc/atomic.h
+++ b/include/asm-powerpc/atomic.h
@@ -207,7 +207,8 @@ static __inline__ int atomic_add_unless(atomic_t *v, int a, int u)
207 207
208/* 208/*
209 * Atomically test *v and decrement if it is greater than 0. 209 * Atomically test *v and decrement if it is greater than 0.
210 * The function returns the old value of *v minus 1. 210 * The function returns the old value of *v minus 1, even if
211 * the atomic variable, v, was not decremented.
211 */ 212 */
212static __inline__ int atomic_dec_if_positive(atomic_t *v) 213static __inline__ int atomic_dec_if_positive(atomic_t *v)
213{ 214{
@@ -216,14 +217,15 @@ static __inline__ int atomic_dec_if_positive(atomic_t *v)
216 __asm__ __volatile__( 217 __asm__ __volatile__(
217 LWSYNC_ON_SMP 218 LWSYNC_ON_SMP
218"1: lwarx %0,0,%1 # atomic_dec_if_positive\n\ 219"1: lwarx %0,0,%1 # atomic_dec_if_positive\n\
219 addic. %0,%0,-1\n\ 220 cmpwi %0,1\n\
221 addi %0,%0,-1\n\
220 blt- 2f\n" 222 blt- 2f\n"
221 PPC405_ERR77(0,%1) 223 PPC405_ERR77(0,%1)
222" stwcx. %0,0,%1\n\ 224" stwcx. %0,0,%1\n\
223 bne- 1b" 225 bne- 1b"
224 ISYNC_ON_SMP 226 ISYNC_ON_SMP
225 "\n\ 227 "\n\
2262:" : "=&r" (t) 2282:" : "=&b" (t)
227 : "r" (&v->counter) 229 : "r" (&v->counter)
228 : "cc", "memory"); 230 : "cc", "memory");
229 231
diff --git a/include/linux/Kbuild b/include/linux/Kbuild
index 862e483cce8a..8c634f9df39f 100644
--- a/include/linux/Kbuild
+++ b/include/linux/Kbuild
@@ -129,7 +129,6 @@ header-y += posix_types.h
129header-y += ppdev.h 129header-y += ppdev.h
130header-y += prctl.h 130header-y += prctl.h
131header-y += ps2esdi.h 131header-y += ps2esdi.h
132header-y += qic117.h
133header-y += qnxtypes.h 132header-y += qnxtypes.h
134header-y += quotaio_v1.h 133header-y += quotaio_v1.h
135header-y += quotaio_v2.h 134header-y += quotaio_v2.h
diff --git a/include/linux/hid-debug.h b/include/linux/hid-debug.h
index f04d6d75c098..8e4dbb51fc70 100644
--- a/include/linux/hid-debug.h
+++ b/include/linux/hid-debug.h
@@ -700,9 +700,10 @@ static char *keys[KEY_MAX + 1] = {
700 700
701static char *relatives[REL_MAX + 1] = { 701static char *relatives[REL_MAX + 1] = {
702 [REL_X] = "X", [REL_Y] = "Y", 702 [REL_X] = "X", [REL_Y] = "Y",
703 [REL_Z] = "Z", [REL_HWHEEL] = "HWheel", 703 [REL_Z] = "Z", [REL_RX] = "Rx",
704 [REL_DIAL] = "Dial", [REL_WHEEL] = "Wheel", 704 [REL_RY] = "Ry", [REL_RZ] = "Rz",
705 [REL_MISC] = "Misc", 705 [REL_HWHEEL] = "HWheel", [REL_DIAL] = "Dial",
706 [REL_WHEEL] = "Wheel", [REL_MISC] = "Misc",
706}; 707};
707 708
708static char *absolutes[ABS_MAX + 1] = { 709static char *absolutes[ABS_MAX + 1] = {
diff --git a/include/linux/libata.h b/include/linux/libata.h
index ab2754830322..e53a13ba7f78 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -1143,6 +1143,7 @@ static inline void ata_tf_init(struct ata_device *dev, struct ata_taskfile *tf)
1143 1143
1144static inline void ata_qc_reinit(struct ata_queued_cmd *qc) 1144static inline void ata_qc_reinit(struct ata_queued_cmd *qc)
1145{ 1145{
1146 qc->dma_dir = DMA_NONE;
1146 qc->__sg = NULL; 1147 qc->__sg = NULL;
1147 qc->flags = 0; 1148 qc->flags = 0;
1148 qc->cursect = qc->cursg = qc->cursg_ofs = 0; 1149 qc->cursect = qc->cursg = qc->cursg_ofs = 0;
diff --git a/include/linux/mmc/mmc.h b/include/linux/mmc/mmc.h
index a3594dfd6963..bcf24909d677 100644
--- a/include/linux/mmc/mmc.h
+++ b/include/linux/mmc/mmc.h
@@ -42,7 +42,7 @@ struct mmc_command {
42#define MMC_RSP_R1B (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE|MMC_RSP_BUSY) 42#define MMC_RSP_R1B (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE|MMC_RSP_BUSY)
43#define MMC_RSP_R2 (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC) 43#define MMC_RSP_R2 (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC)
44#define MMC_RSP_R3 (MMC_RSP_PRESENT) 44#define MMC_RSP_R3 (MMC_RSP_PRESENT)
45#define MMC_RSP_R6 (MMC_RSP_PRESENT|MMC_RSP_CRC) 45#define MMC_RSP_R6 (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE)
46 46
47#define mmc_resp_type(cmd) ((cmd)->flags & (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC|MMC_RSP_BUSY|MMC_RSP_OPCODE)) 47#define mmc_resp_type(cmd) ((cmd)->flags & (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC|MMC_RSP_BUSY|MMC_RSP_OPCODE))
48 48
diff --git a/include/linux/mtd/blktrans.h b/include/linux/mtd/blktrans.h
index 72fc68c5ee96..9a6e2f953cba 100644
--- a/include/linux/mtd/blktrans.h
+++ b/include/linux/mtd/blktrans.h
@@ -24,7 +24,6 @@ struct mtd_blktrans_dev {
24 struct mtd_info *mtd; 24 struct mtd_info *mtd;
25 struct mutex lock; 25 struct mutex lock;
26 int devnum; 26 int devnum;
27 int blksize;
28 unsigned long size; 27 unsigned long size;
29 int readonly; 28 int readonly;
30 void *blkcore_priv; /* gendisk in 2.5, devfs_handle in 2.4 */ 29 void *blkcore_priv; /* gendisk in 2.5, devfs_handle in 2.4 */
@@ -36,6 +35,8 @@ struct mtd_blktrans_ops {
36 char *name; 35 char *name;
37 int major; 36 int major;
38 int part_bits; 37 int part_bits;
38 int blksize;
39 int blkshift;
39 40
40 /* Access functions */ 41 /* Access functions */
41 int (*readsect)(struct mtd_blktrans_dev *dev, 42 int (*readsect)(struct mtd_blktrans_dev *dev,
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h
index 94a443d45258..d644e57703ad 100644
--- a/include/linux/mtd/mtd.h
+++ b/include/linux/mtd/mtd.h
@@ -23,7 +23,7 @@
23 23
24#define MTD_CHAR_MAJOR 90 24#define MTD_CHAR_MAJOR 90
25#define MTD_BLOCK_MAJOR 31 25#define MTD_BLOCK_MAJOR 31
26#define MAX_MTD_DEVICES 16 26#define MAX_MTD_DEVICES 32
27 27
28#define MTD_ERASE_PENDING 0x01 28#define MTD_ERASE_PENDING 0x01
29#define MTD_ERASING 0x02 29#define MTD_ERASING 0x02
@@ -75,15 +75,12 @@ typedef enum {
75 * struct mtd_oob_ops - oob operation operands 75 * struct mtd_oob_ops - oob operation operands
76 * @mode: operation mode 76 * @mode: operation mode
77 * 77 *
78 * @len: number of bytes to write/read. When a data buffer is given 78 * @len: number of data bytes to write/read
79 * (datbuf != NULL) this is the number of data bytes. When
80 * no data buffer is available this is the number of oob bytes.
81 * 79 *
82 * @retlen: number of bytes written/read. When a data buffer is given 80 * @retlen: number of data bytes written/read
83 * (datbuf != NULL) this is the number of data bytes. When
84 * no data buffer is available this is the number of oob bytes.
85 * 81 *
86 * @ooblen: number of oob bytes per page 82 * @ooblen: number of oob bytes to write/read
83 * @oobretlen: number of oob bytes written/read
87 * @ooboffs: offset of oob data in the oob area (only relevant when 84 * @ooboffs: offset of oob data in the oob area (only relevant when
88 * mode = MTD_OOB_PLACE) 85 * mode = MTD_OOB_PLACE)
89 * @datbuf: data buffer - if NULL only oob data are read/written 86 * @datbuf: data buffer - if NULL only oob data are read/written
@@ -94,6 +91,7 @@ struct mtd_oob_ops {
94 size_t len; 91 size_t len;
95 size_t retlen; 92 size_t retlen;
96 size_t ooblen; 93 size_t ooblen;
94 size_t oobretlen;
97 uint32_t ooboffs; 95 uint32_t ooboffs;
98 uint8_t *datbuf; 96 uint8_t *datbuf;
99 uint8_t *oobbuf; 97 uint8_t *oobbuf;
@@ -202,11 +200,20 @@ struct mtd_info {
202 200
203 /* ECC status information */ 201 /* ECC status information */
204 struct mtd_ecc_stats ecc_stats; 202 struct mtd_ecc_stats ecc_stats;
203 /* Subpage shift (NAND) */
204 int subpage_sft;
205 205
206 void *priv; 206 void *priv;
207 207
208 struct module *owner; 208 struct module *owner;
209 int usecount; 209 int usecount;
210
211 /* If the driver is something smart, like UBI, it may need to maintain
212 * its own reference counting. The below functions are only for driver.
213 * The driver may register its callbacks. These callbacks are not
214 * supposed to be called by MTD users */
215 int (*get_device) (struct mtd_info *mtd);
216 void (*put_device) (struct mtd_info *mtd);
210}; 217};
211 218
212 219
@@ -216,6 +223,7 @@ extern int add_mtd_device(struct mtd_info *mtd);
216extern int del_mtd_device (struct mtd_info *mtd); 223extern int del_mtd_device (struct mtd_info *mtd);
217 224
218extern struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num); 225extern struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num);
226extern struct mtd_info *get_mtd_device_nm(const char *name);
219 227
220extern void put_mtd_device(struct mtd_info *mtd); 228extern void put_mtd_device(struct mtd_info *mtd);
221 229
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
index 8b3ef4187219..2071b02f0526 100644
--- a/include/linux/mtd/nand.h
+++ b/include/linux/mtd/nand.h
@@ -166,6 +166,9 @@ typedef enum {
166 * for all large page devices, as they do not support 166 * for all large page devices, as they do not support
167 * autoincrement.*/ 167 * autoincrement.*/
168#define NAND_NO_READRDY 0x00000100 168#define NAND_NO_READRDY 0x00000100
169/* Chip does not allow subpage writes */
170#define NAND_NO_SUBPAGE_WRITE 0x00000200
171
169 172
170/* Options valid for Samsung large page devices */ 173/* Options valid for Samsung large page devices */
171#define NAND_SAMSUNG_LP_OPTIONS \ 174#define NAND_SAMSUNG_LP_OPTIONS \
@@ -193,6 +196,9 @@ typedef enum {
193/* Nand scan has allocated controller struct */ 196/* Nand scan has allocated controller struct */
194#define NAND_CONTROLLER_ALLOC 0x80000000 197#define NAND_CONTROLLER_ALLOC 0x80000000
195 198
199/* Cell info constants */
200#define NAND_CI_CHIPNR_MSK 0x03
201#define NAND_CI_CELLTYPE_MSK 0x0C
196 202
197/* 203/*
198 * nand_state_t - chip states 204 * nand_state_t - chip states
@@ -286,9 +292,7 @@ struct nand_ecc_ctrl {
286 * struct nand_buffers - buffer structure for read/write 292 * struct nand_buffers - buffer structure for read/write
287 * @ecccalc: buffer for calculated ecc 293 * @ecccalc: buffer for calculated ecc
288 * @ecccode: buffer for ecc read from flash 294 * @ecccode: buffer for ecc read from flash
289 * @oobwbuf: buffer for write oob data
290 * @databuf: buffer for data - dynamically sized 295 * @databuf: buffer for data - dynamically sized
291 * @oobrbuf: buffer to read oob data
292 * 296 *
293 * Do not change the order of buffers. databuf and oobrbuf must be in 297 * Do not change the order of buffers. databuf and oobrbuf must be in
294 * consecutive order. 298 * consecutive order.
@@ -296,9 +300,7 @@ struct nand_ecc_ctrl {
296struct nand_buffers { 300struct nand_buffers {
297 uint8_t ecccalc[NAND_MAX_OOBSIZE]; 301 uint8_t ecccalc[NAND_MAX_OOBSIZE];
298 uint8_t ecccode[NAND_MAX_OOBSIZE]; 302 uint8_t ecccode[NAND_MAX_OOBSIZE];
299 uint8_t oobwbuf[NAND_MAX_OOBSIZE]; 303 uint8_t databuf[NAND_MAX_PAGESIZE + NAND_MAX_OOBSIZE];
300 uint8_t databuf[NAND_MAX_PAGESIZE];
301 uint8_t oobrbuf[NAND_MAX_OOBSIZE];
302}; 304};
303 305
304/** 306/**
@@ -345,6 +347,7 @@ struct nand_buffers {
345 * @chipsize: [INTERN] the size of one chip for multichip arrays 347 * @chipsize: [INTERN] the size of one chip for multichip arrays
346 * @pagemask: [INTERN] page number mask = number of (pages / chip) - 1 348 * @pagemask: [INTERN] page number mask = number of (pages / chip) - 1
347 * @pagebuf: [INTERN] holds the pagenumber which is currently in data_buf 349 * @pagebuf: [INTERN] holds the pagenumber which is currently in data_buf
350 * @subpagesize: [INTERN] holds the subpagesize
348 * @ecclayout: [REPLACEABLE] the default ecc placement scheme 351 * @ecclayout: [REPLACEABLE] the default ecc placement scheme
349 * @bbt: [INTERN] bad block table pointer 352 * @bbt: [INTERN] bad block table pointer
350 * @bbt_td: [REPLACEABLE] bad block table descriptor for flash lookup 353 * @bbt_td: [REPLACEABLE] bad block table descriptor for flash lookup
@@ -392,6 +395,8 @@ struct nand_chip {
392 unsigned long chipsize; 395 unsigned long chipsize;
393 int pagemask; 396 int pagemask;
394 int pagebuf; 397 int pagebuf;
398 int subpagesize;
399 uint8_t cellinfo;
395 int badblockpos; 400 int badblockpos;
396 401
397 nand_state_t state; 402 nand_state_t state;
diff --git a/include/linux/mtd/onenand.h b/include/linux/mtd/onenand.h
index 6f045b586e76..f775a7af3890 100644
--- a/include/linux/mtd/onenand.h
+++ b/include/linux/mtd/onenand.h
@@ -13,6 +13,7 @@
13#define __LINUX_MTD_ONENAND_H 13#define __LINUX_MTD_ONENAND_H
14 14
15#include <linux/spinlock.h> 15#include <linux/spinlock.h>
16#include <linux/completion.h>
16#include <linux/mtd/onenand_regs.h> 17#include <linux/mtd/onenand_regs.h>
17#include <linux/mtd/bbm.h> 18#include <linux/mtd/bbm.h>
18 19
@@ -33,7 +34,6 @@ typedef enum {
33 FL_WRITING, 34 FL_WRITING,
34 FL_ERASING, 35 FL_ERASING,
35 FL_SYNCING, 36 FL_SYNCING,
36 FL_UNLOCKING,
37 FL_LOCKING, 37 FL_LOCKING,
38 FL_RESETING, 38 FL_RESETING,
39 FL_OTPING, 39 FL_OTPING,
@@ -88,6 +88,7 @@ struct onenand_bufferram {
88 * operation is in progress 88 * operation is in progress
89 * @state: [INTERN] the current state of the OneNAND device 89 * @state: [INTERN] the current state of the OneNAND device
90 * @page_buf: data buffer 90 * @page_buf: data buffer
91 * @subpagesize: [INTERN] holds the subpagesize
91 * @ecclayout: [REPLACEABLE] the default ecc placement scheme 92 * @ecclayout: [REPLACEABLE] the default ecc placement scheme
92 * @bbm: [REPLACEABLE] pointer to Bad Block Management 93 * @bbm: [REPLACEABLE] pointer to Bad Block Management
93 * @priv: [OPTIONAL] pointer to private chip date 94 * @priv: [OPTIONAL] pointer to private chip date
@@ -120,11 +121,15 @@ struct onenand_chip {
120 int (*block_markbad)(struct mtd_info *mtd, loff_t ofs); 121 int (*block_markbad)(struct mtd_info *mtd, loff_t ofs);
121 int (*scan_bbt)(struct mtd_info *mtd); 122 int (*scan_bbt)(struct mtd_info *mtd);
122 123
124 struct completion complete;
125 int irq;
126
123 spinlock_t chip_lock; 127 spinlock_t chip_lock;
124 wait_queue_head_t wq; 128 wait_queue_head_t wq;
125 onenand_state_t state; 129 onenand_state_t state;
126 unsigned char *page_buf; 130 unsigned char *page_buf;
127 131
132 int subpagesize;
128 struct nand_ecclayout *ecclayout; 133 struct nand_ecclayout *ecclayout;
129 134
130 void *bbm; 135 void *bbm;
@@ -138,6 +143,7 @@ struct onenand_chip {
138#define ONENAND_CURRENT_BUFFERRAM(this) (this->bufferram_index) 143#define ONENAND_CURRENT_BUFFERRAM(this) (this->bufferram_index)
139#define ONENAND_NEXT_BUFFERRAM(this) (this->bufferram_index ^ 1) 144#define ONENAND_NEXT_BUFFERRAM(this) (this->bufferram_index ^ 1)
140#define ONENAND_SET_NEXT_BUFFERRAM(this) (this->bufferram_index ^= 1) 145#define ONENAND_SET_NEXT_BUFFERRAM(this) (this->bufferram_index ^= 1)
146#define ONENAND_SET_PREV_BUFFERRAM(this) (this->bufferram_index ^= 1)
141 147
142#define ONENAND_GET_SYS_CFG1(this) \ 148#define ONENAND_GET_SYS_CFG1(this) \
143 (this->read_word(this->base + ONENAND_REG_SYS_CFG1)) 149 (this->read_word(this->base + ONENAND_REG_SYS_CFG1))
diff --git a/include/linux/mtd/onenand_regs.h b/include/linux/mtd/onenand_regs.h
index 9e409fe6ded6..e31c8f5d4271 100644
--- a/include/linux/mtd/onenand_regs.h
+++ b/include/linux/mtd/onenand_regs.h
@@ -179,6 +179,7 @@
179 * ECC Status Reigser FF00h (R) 179 * ECC Status Reigser FF00h (R)
180 */ 180 */
181#define ONENAND_ECC_1BIT (1 << 0) 181#define ONENAND_ECC_1BIT (1 << 0)
182#define ONENAND_ECC_1BIT_ALL (0x5555)
182#define ONENAND_ECC_2BIT (1 << 1) 183#define ONENAND_ECC_2BIT (1 << 1)
183#define ONENAND_ECC_2BIT_ALL (0xAAAA) 184#define ONENAND_ECC_2BIT_ALL (0xAAAA)
184 185
diff --git a/include/linux/mtio.h b/include/linux/mtio.h
index 8c66151821e3..6f8d2d45a8fb 100644
--- a/include/linux/mtio.h
+++ b/include/linux/mtio.h
@@ -10,7 +10,6 @@
10 10
11#include <linux/types.h> 11#include <linux/types.h>
12#include <linux/ioctl.h> 12#include <linux/ioctl.h>
13#include <linux/qic117.h>
14 13
15/* 14/*
16 * Structures and definitions for mag tape io control commands 15 * Structures and definitions for mag tape io control commands
@@ -116,32 +115,6 @@ struct mtget {
116#define MT_ISFTAPE_UNKNOWN 0x800000 /* obsolete */ 115#define MT_ISFTAPE_UNKNOWN 0x800000 /* obsolete */
117#define MT_ISFTAPE_FLAG 0x800000 116#define MT_ISFTAPE_FLAG 0x800000
118 117
119struct mt_tape_info {
120 long t_type; /* device type id (mt_type) */
121 char *t_name; /* descriptive name */
122};
123
124#define MT_TAPE_INFO { \
125 {MT_ISUNKNOWN, "Unknown type of tape device"}, \
126 {MT_ISQIC02, "Generic QIC-02 tape streamer"}, \
127 {MT_ISWT5150, "Wangtek 5150, QIC-150"}, \
128 {MT_ISARCHIVE_5945L2, "Archive 5945L-2"}, \
129 {MT_ISCMSJ500, "CMS Jumbo 500"}, \
130 {MT_ISTDC3610, "Tandberg TDC 3610, QIC-24"}, \
131 {MT_ISARCHIVE_VP60I, "Archive VP60i, QIC-02"}, \
132 {MT_ISARCHIVE_2150L, "Archive Viper 2150L"}, \
133 {MT_ISARCHIVE_2060L, "Archive Viper 2060L"}, \
134 {MT_ISARCHIVESC499, "Archive SC-499 QIC-36 controller"}, \
135 {MT_ISQIC02_ALL_FEATURES, "Generic QIC-02 tape, all features"}, \
136 {MT_ISWT5099EEN24, "Wangtek 5099-een24, 60MB"}, \
137 {MT_ISTEAC_MT2ST, "Teac MT-2ST 155mb data cassette drive"}, \
138 {MT_ISEVEREX_FT40A, "Everex FT40A, QIC-40"}, \
139 {MT_ISONSTREAM_SC, "OnStream SC-, DI-, DP-, or USB tape drive"}, \
140 {MT_ISSCSI1, "Generic SCSI-1 tape"}, \
141 {MT_ISSCSI2, "Generic SCSI-2 tape"}, \
142 {0, NULL} \
143}
144
145 118
146/* structure for MTIOCPOS - mag tape get position command */ 119/* structure for MTIOCPOS - mag tape get position command */
147 120
@@ -150,130 +123,11 @@ struct mtpos {
150}; 123};
151 124
152 125
153/* structure for MTIOCVOLINFO, query information about the volume
154 * currently positioned at (zftape)
155 */
156struct mtvolinfo {
157 unsigned int mt_volno; /* vol-number */
158 unsigned int mt_blksz; /* blocksize used when recording */
159 unsigned int mt_rawsize; /* raw tape space consumed, in kb */
160 unsigned int mt_size; /* volume size after decompression, in kb */
161 unsigned int mt_cmpr:1; /* this volume has been compressed */
162};
163
164/* raw access to a floppy drive, read and write an arbitrary segment.
165 * For ftape/zftape to support formatting etc.
166 */
167#define MT_FT_RD_SINGLE 0
168#define MT_FT_RD_AHEAD 1
169#define MT_FT_WR_ASYNC 0 /* start tape only when all buffers are full */
170#define MT_FT_WR_MULTI 1 /* start tape, continue until buffers are empty */
171#define MT_FT_WR_SINGLE 2 /* write a single segment and stop afterwards */
172#define MT_FT_WR_DELETE 3 /* write deleted data marks, one segment at time */
173
174struct mtftseg
175{
176 unsigned mt_segno; /* the segment to read or write */
177 unsigned mt_mode; /* modes for read/write (sync/async etc.) */
178 int mt_result; /* result of r/w request, not of the ioctl */
179 void __user *mt_data; /* User space buffer: must be 29kb */
180};
181
182/* get tape capacity (ftape/zftape)
183 */
184struct mttapesize {
185 unsigned long mt_capacity; /* entire, uncompressed capacity
186 * of a cartridge
187 */
188 unsigned long mt_used; /* what has been used so far, raw
189 * uncompressed amount
190 */
191};
192
193/* possible values of the ftfmt_op field
194 */
195#define FTFMT_SET_PARMS 1 /* set software parms */
196#define FTFMT_GET_PARMS 2 /* get software parms */
197#define FTFMT_FORMAT_TRACK 3 /* start formatting a tape track */
198#define FTFMT_STATUS 4 /* monitor formatting a tape track */
199#define FTFMT_VERIFY 5 /* verify the given segment */
200
201struct ftfmtparms {
202 unsigned char ft_qicstd; /* QIC-40/QIC-80/QIC-3010/QIC-3020 */
203 unsigned char ft_fmtcode; /* Refer to the QIC specs */
204 unsigned char ft_fhm; /* floppy head max */
205 unsigned char ft_ftm; /* floppy track max */
206 unsigned short ft_spt; /* segments per track */
207 unsigned short ft_tpc; /* tracks per cartridge */
208};
209
210struct ftfmttrack {
211 unsigned int ft_track; /* track to format */
212 unsigned char ft_gap3; /* size of gap3, for FORMAT_TRK */
213};
214
215struct ftfmtstatus {
216 unsigned int ft_segment; /* segment currently being formatted */
217};
218
219struct ftfmtverify {
220 unsigned int ft_segment; /* segment to verify */
221 unsigned long ft_bsm; /* bsm as result of VERIFY cmd */
222};
223
224struct mtftformat {
225 unsigned int fmt_op; /* operation to perform */
226 union fmt_arg {
227 struct ftfmtparms fmt_parms; /* format parameters */
228 struct ftfmttrack fmt_track; /* ctrl while formatting */
229 struct ftfmtstatus fmt_status;
230 struct ftfmtverify fmt_verify; /* for verifying */
231 } fmt_arg;
232};
233
234struct mtftcmd {
235 unsigned int ft_wait_before; /* timeout to wait for drive to get ready
236 * before command is sent. Milliseconds
237 */
238 qic117_cmd_t ft_cmd; /* command to send */
239 unsigned char ft_parm_cnt; /* zero: no parm is sent. */
240 unsigned char ft_parms[3]; /* parameter(s) to send to
241 * the drive. The parms are nibbles
242 * driver sends cmd + 2 step pulses */
243 unsigned int ft_result_bits; /* if non zero, number of bits
244 * returned by the tape drive
245 */
246 unsigned int ft_result; /* the result returned by the tape drive*/
247 unsigned int ft_wait_after; /* timeout to wait for drive to get ready
248 * after command is sent. 0: don't wait */
249 int ft_status; /* status returned by ready wait
250 * undefined if timeout was 0.
251 */
252 int ft_error; /* error code if error status was set by
253 * command
254 */
255};
256
257/* mag tape io control commands */ 126/* mag tape io control commands */
258#define MTIOCTOP _IOW('m', 1, struct mtop) /* do a mag tape op */ 127#define MTIOCTOP _IOW('m', 1, struct mtop) /* do a mag tape op */
259#define MTIOCGET _IOR('m', 2, struct mtget) /* get tape status */ 128#define MTIOCGET _IOR('m', 2, struct mtget) /* get tape status */
260#define MTIOCPOS _IOR('m', 3, struct mtpos) /* get tape position */ 129#define MTIOCPOS _IOR('m', 3, struct mtpos) /* get tape position */
261 130
262/* The next two are used by the QIC-02 driver for runtime reconfiguration.
263 * See tpqic02.h for struct mtconfiginfo.
264 */
265#define MTIOCGETCONFIG _IOR('m', 4, struct mtconfiginfo) /* get tape config */
266#define MTIOCSETCONFIG _IOW('m', 5, struct mtconfiginfo) /* set tape config */
267
268/* the next six are used by the floppy ftape drivers and its frontends
269 * sorry, but MTIOCTOP commands are write only.
270 */
271#define MTIOCRDFTSEG _IOWR('m', 6, struct mtftseg) /* read a segment */
272#define MTIOCWRFTSEG _IOWR('m', 7, struct mtftseg) /* write a segment */
273#define MTIOCVOLINFO _IOR('m', 8, struct mtvolinfo) /* info about volume */
274#define MTIOCGETSIZE _IOR('m', 9, struct mttapesize)/* get cartridge size*/
275#define MTIOCFTFORMAT _IOWR('m', 10, struct mtftformat) /* format ftape */
276#define MTIOCFTCMD _IOWR('m', 11, struct mtftcmd) /* send QIC-117 cmd */
277 131
278/* Generic Mag Tape (device independent) status macros for examining 132/* Generic Mag Tape (device independent) status macros for examining
279 * mt_gstat -- HP-UX compatible. 133 * mt_gstat -- HP-UX compatible.
diff --git a/include/linux/netfilter_ipv4/ip_tables.h b/include/linux/netfilter_ipv4/ip_tables.h
index 4f06dad0bde9..98d566c5e32a 100644
--- a/include/linux/netfilter_ipv4/ip_tables.h
+++ b/include/linux/netfilter_ipv4/ip_tables.h
@@ -28,7 +28,7 @@
28#include <linux/netfilter/x_tables.h> 28#include <linux/netfilter/x_tables.h>
29 29
30#define IPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN 30#define IPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
31#define IPT_TABLE_MAXNAMELEN XT_FUNCTION_MAXNAMELEN 31#define IPT_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN
32#define ipt_match xt_match 32#define ipt_match xt_match
33#define ipt_target xt_target 33#define ipt_target xt_target
34#define ipt_table xt_table 34#define ipt_table xt_table
diff --git a/include/linux/qic117.h b/include/linux/qic117.h
deleted file mode 100644
index 07b537e5d359..000000000000
--- a/include/linux/qic117.h
+++ /dev/null
@@ -1,290 +0,0 @@
1#ifndef _QIC117_H
2#define _QIC117_H
3
4/*
5 * Copyright (C) 1993-1996 Bas Laarhoven,
6 * (C) 1997 Claus-Justus Heine.
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2, or (at your option)
11 any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program; see the file COPYING. If not, write to
20 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
21
22 *
23 * $Source: /homes/cvs/ftape-stacked/include/linux/qic117.h,v $
24 * $Revision: 1.2 $
25 * $Date: 1997/10/05 19:19:32 $
26 *
27 * This file contains QIC-117 spec. related definitions for the
28 * QIC-40/80/3010/3020 floppy-tape driver "ftape" for Linux.
29 *
30 * These data were taken from the Quarter-Inch Cartridge
31 * Drive Standards, Inc. document titled:
32 * `Common Command Set Interface Specification for Flexible
33 * Disk Controller Based Minicartridge Tape Drives'
34 * document QIC-117 Revision J, 28 Aug 96.
35 * For more information, contact:
36 * Quarter-Inch Cartridge Drive Standards, Inc.
37 * 311 East Carrillo Street
38 * Santa Barbara, California 93101
39 * Telephone (805) 963-3853
40 * Fax (805) 962-1541
41 * WWW http://www.qic.org
42 *
43 * Current QIC standard revisions (of interest) are:
44 * QIC-40-MC, Rev. M, 2 Sep 92.
45 * QIC-80-MC, Rev. N, 20 Mar 96.
46 * QIC-80-MC, Rev. K, 15 Dec 94.
47 * QIC-113, Rev. G, 15 Jun 95.
48 * QIC-117, Rev. J, 28 Aug 96.
49 * QIC-122, Rev. B, 6 Mar 91.
50 * QIC-130, Rev. C, 2 Sep 92.
51 * QIC-3010-MC, Rev. F, 14 Jun 95.
52 * QIC-3020-MC, Rev. G, 31 Aug 95.
53 * QIC-CRF3, Rev. B, 15 Jun 95.
54 * */
55
56/*
57 * QIC-117 common command set rev. J.
58 * These commands are sent to the tape unit
59 * as number of pulses over the step line.
60 */
61
62typedef enum {
63 QIC_NO_COMMAND = 0,
64 QIC_RESET = 1,
65 QIC_REPORT_NEXT_BIT = 2,
66 QIC_PAUSE = 3,
67 QIC_MICRO_STEP_PAUSE = 4,
68 QIC_ALTERNATE_TIMEOUT = 5,
69 QIC_REPORT_DRIVE_STATUS = 6,
70 QIC_REPORT_ERROR_CODE = 7,
71 QIC_REPORT_DRIVE_CONFIGURATION = 8,
72 QIC_REPORT_ROM_VERSION = 9,
73 QIC_LOGICAL_FORWARD = 10,
74 QIC_PHYSICAL_REVERSE = 11,
75 QIC_PHYSICAL_FORWARD = 12,
76 QIC_SEEK_HEAD_TO_TRACK = 13,
77 QIC_SEEK_LOAD_POINT = 14,
78 QIC_ENTER_FORMAT_MODE = 15,
79 QIC_WRITE_REFERENCE_BURST = 16,
80 QIC_ENTER_VERIFY_MODE = 17,
81 QIC_STOP_TAPE = 18,
82/* commands 19-20: reserved */
83 QIC_MICRO_STEP_HEAD_UP = 21,
84 QIC_MICRO_STEP_HEAD_DOWN = 22,
85 QIC_SOFT_SELECT = 23,
86 QIC_SOFT_DESELECT = 24,
87 QIC_SKIP_REVERSE = 25,
88 QIC_SKIP_FORWARD = 26,
89 QIC_SELECT_RATE = 27,
90/* command 27, in ccs2: Select Rate or Format */
91 QIC_ENTER_DIAGNOSTIC_1 = 28,
92 QIC_ENTER_DIAGNOSTIC_2 = 29,
93 QIC_ENTER_PRIMARY_MODE = 30,
94/* command 31: vendor unique */
95 QIC_REPORT_VENDOR_ID = 32,
96 QIC_REPORT_TAPE_STATUS = 33,
97 QIC_SKIP_EXTENDED_REVERSE = 34,
98 QIC_SKIP_EXTENDED_FORWARD = 35,
99 QIC_CALIBRATE_TAPE_LENGTH = 36,
100 QIC_REPORT_FORMAT_SEGMENTS = 37,
101 QIC_SET_FORMAT_SEGMENTS = 38,
102/* commands 39-45: reserved */
103 QIC_PHANTOM_SELECT = 46,
104 QIC_PHANTOM_DESELECT = 47
105} qic117_cmd_t;
106
107typedef enum {
108 discretional = 0, required, ccs1, ccs2
109} qic_compatibility;
110
111typedef enum {
112 unused, mode, motion, report
113} command_types;
114
115struct qic117_command_table {
116 char *name;
117 __u8 mask;
118 __u8 state;
119 __u8 cmd_type;
120 __u8 non_intr;
121 __u8 level;
122};
123
124#define QIC117_COMMANDS {\
125/* command mask state cmd_type */\
126/* | name | | | non_intr */\
127/* | | | | | | level */\
128/* 0*/ {NULL, 0x00, 0x00, mode, 0, discretional},\
129/* 1*/ {"soft reset", 0x00, 0x00, motion, 1, required},\
130/* 2*/ {"report next bit", 0x00, 0x00, report, 0, required},\
131/* 3*/ {"pause", 0x36, 0x24, motion, 1, required},\
132/* 4*/ {"micro step pause", 0x36, 0x24, motion, 1, required},\
133/* 5*/ {"alternate command timeout", 0x00, 0x00, mode, 0, required},\
134/* 6*/ {"report drive status", 0x00, 0x00, report, 0, required},\
135/* 7*/ {"report error code", 0x01, 0x01, report, 0, required},\
136/* 8*/ {"report drive configuration",0x00, 0x00, report, 0, required},\
137/* 9*/ {"report rom version", 0x00, 0x00, report, 0, required},\
138/*10*/ {"logical forward", 0x37, 0x25, motion, 0, required},\
139/*11*/ {"physical reverse", 0x17, 0x05, motion, 0, required},\
140/*12*/ {"physical forward", 0x17, 0x05, motion, 0, required},\
141/*13*/ {"seek head to track", 0x37, 0x25, motion, 0, required},\
142/*14*/ {"seek load point", 0x17, 0x05, motion, 1, required},\
143/*15*/ {"enter format mode", 0x1f, 0x05, mode, 0, required},\
144/*16*/ {"write reference burst", 0x1f, 0x05, motion, 1, required},\
145/*17*/ {"enter verify mode", 0x37, 0x25, mode, 0, required},\
146/*18*/ {"stop tape", 0x00, 0x00, motion, 1, required},\
147/*19*/ {"reserved (19)", 0x00, 0x00, unused, 0, discretional},\
148/*20*/ {"reserved (20)", 0x00, 0x00, unused, 0, discretional},\
149/*21*/ {"micro step head up", 0x02, 0x00, motion, 0, required},\
150/*22*/ {"micro step head down", 0x02, 0x00, motion, 0, required},\
151/*23*/ {"soft select", 0x00, 0x00, mode, 0, discretional},\
152/*24*/ {"soft deselect", 0x00, 0x00, mode, 0, discretional},\
153/*25*/ {"skip segments reverse", 0x36, 0x24, motion, 1, required},\
154/*26*/ {"skip segments forward", 0x36, 0x24, motion, 1, required},\
155/*27*/ {"select rate or format", 0x03, 0x01, mode, 0, required /* [ccs2] */},\
156/*28*/ {"enter diag mode 1", 0x00, 0x00, mode, 0, discretional},\
157/*29*/ {"enter diag mode 2", 0x00, 0x00, mode, 0, discretional},\
158/*30*/ {"enter primary mode", 0x00, 0x00, mode, 0, required},\
159/*31*/ {"vendor unique (31)", 0x00, 0x00, unused, 0, discretional},\
160/*32*/ {"report vendor id", 0x00, 0x00, report, 0, required},\
161/*33*/ {"report tape status", 0x04, 0x04, report, 0, ccs1},\
162/*34*/ {"skip extended reverse", 0x36, 0x24, motion, 1, ccs1},\
163/*35*/ {"skip extended forward", 0x36, 0x24, motion, 1, ccs1},\
164/*36*/ {"calibrate tape length", 0x17, 0x05, motion, 1, ccs2},\
165/*37*/ {"report format segments", 0x17, 0x05, report, 0, ccs2},\
166/*38*/ {"set format segments", 0x17, 0x05, mode, 0, ccs2},\
167/*39*/ {"reserved (39)", 0x00, 0x00, unused, 0, discretional},\
168/*40*/ {"vendor unique (40)", 0x00, 0x00, unused, 0, discretional},\
169/*41*/ {"vendor unique (41)", 0x00, 0x00, unused, 0, discretional},\
170/*42*/ {"vendor unique (42)", 0x00, 0x00, unused, 0, discretional},\
171/*43*/ {"vendor unique (43)", 0x00, 0x00, unused, 0, discretional},\
172/*44*/ {"vendor unique (44)", 0x00, 0x00, unused, 0, discretional},\
173/*45*/ {"vendor unique (45)", 0x00, 0x00, unused, 0, discretional},\
174/*46*/ {"phantom select", 0x00, 0x00, mode, 0, discretional},\
175/*47*/ {"phantom deselect", 0x00, 0x00, mode, 0, discretional},\
176}
177
178/*
179 * Status bits returned by QIC_REPORT_DRIVE_STATUS
180 */
181
182#define QIC_STATUS_READY 0x01 /* Drive is ready or idle. */
183#define QIC_STATUS_ERROR 0x02 /* Error detected, must read
184 error code to clear this */
185#define QIC_STATUS_CARTRIDGE_PRESENT 0x04 /* Tape is present */
186#define QIC_STATUS_WRITE_PROTECT 0x08 /* Tape is write protected */
187#define QIC_STATUS_NEW_CARTRIDGE 0x10 /* New cartridge inserted, must
188 read error status to clear. */
189#define QIC_STATUS_REFERENCED 0x20 /* Cartridge appears to have been
190 formatted. */
191#define QIC_STATUS_AT_BOT 0x40 /* Cartridge is at physical
192 beginning of tape. */
193#define QIC_STATUS_AT_EOT 0x80 /* Cartridge is at physical end
194 of tape. */
195/*
196 * Status bits returned by QIC_REPORT_DRIVE_CONFIGURATION
197 */
198
199#define QIC_CONFIG_RATE_MASK 0x18
200#define QIC_CONFIG_RATE_SHIFT 3
201#define QIC_CONFIG_RATE_250 0
202#define QIC_CONFIG_RATE_500 2
203#define QIC_CONFIG_RATE_1000 3
204#define QIC_CONFIG_RATE_2000 1
205#define QIC_CONFIG_RATE_4000 0 /* since QIC-117 Rev. J */
206
207#define QIC_CONFIG_LONG 0x40 /* Extra Length Tape Detected */
208#define QIC_CONFIG_80 0x80 /* QIC-80 detected. */
209
210/*
211 * Status bits returned by QIC_REPORT_TAPE_STATUS
212 */
213
214#define QIC_TAPE_STD_MASK 0x0f
215#define QIC_TAPE_QIC40 0x01
216#define QIC_TAPE_QIC80 0x02
217#define QIC_TAPE_QIC3020 0x03
218#define QIC_TAPE_QIC3010 0x04
219
220#define QIC_TAPE_LEN_MASK 0x70
221#define QIC_TAPE_205FT 0x10
222#define QIC_TAPE_307FT 0x20
223#define QIC_TAPE_VARIABLE 0x30
224#define QIC_TAPE_1100FT 0x40
225#define QIC_TAPE_FLEX 0x60
226
227#define QIC_TAPE_WIDE 0x80
228
229/* Define a value (in feet) slightly higher than
230 * the possible maximum tape length.
231 */
232#define QIC_TOP_TAPE_LEN 1500
233
234/*
235 * Errors: List of error codes, and their severity.
236 */
237
238typedef struct {
239 char *message; /* Text describing the error. */
240 unsigned int fatal:1; /* Non-zero if the error is fatal. */
241} ftape_error;
242
243#define QIC117_ERRORS {\
244 /* 0*/ { "No error", 0, },\
245 /* 1*/ { "Command Received while Drive Not Ready", 0, },\
246 /* 2*/ { "Cartridge Not Present or Removed", 1, },\
247 /* 3*/ { "Motor Speed Error (not within 1%)", 1, },\
248 /* 4*/ { "Motor Speed Fault (jammed, or gross speed error", 1, },\
249 /* 5*/ { "Cartridge Write Protected", 1, },\
250 /* 6*/ { "Undefined or Reserved Command Code", 1, },\
251 /* 7*/ { "Illegal Track Address Specified for Seek", 1, },\
252 /* 8*/ { "Illegal Command in Report Subcontext", 0, },\
253 /* 9*/ { "Illegal Entry into a Diagnostic Mode", 1, },\
254 /*10*/ { "Broken Tape Detected (based on hole sensor)", 1, },\
255 /*11*/ { "Warning--Read Gain Setting Error", 1, },\
256 /*12*/ { "Command Received While Error Status Pending (obs)", 1, },\
257 /*13*/ { "Command Received While New Cartridge Pending", 1, },\
258 /*14*/ { "Command Illegal or Undefined in Primary Mode", 1, },\
259 /*15*/ { "Command Illegal or Undefined in Format Mode", 1, },\
260 /*16*/ { "Command Illegal or Undefined in Verify Mode", 1, },\
261 /*17*/ { "Logical Forward Not at Logical BOT or no Format Segments in Format Mode", 1, },\
262 /*18*/ { "Logical EOT Before All Segments generated", 1, },\
263 /*19*/ { "Command Illegal When Cartridge Not Referenced", 1, },\
264 /*20*/ { "Self-Diagnostic Failed (cannot be cleared)", 1, },\
265 /*21*/ { "Warning EEPROM Not Initialized, Defaults Set", 1, },\
266 /*22*/ { "EEPROM Corrupted or Hardware Failure", 1, },\
267 /*23*/ { "Motion Time-out Error", 1, },\
268 /*24*/ { "Data Segment Too Long -- Logical Forward or Pause", 1, },\
269 /*25*/ { "Transmit Overrun (obs)", 1, },\
270 /*26*/ { "Power On Reset Occurred", 0, },\
271 /*27*/ { "Software Reset Occurred", 0, },\
272 /*28*/ { "Diagnostic Mode 1 Error", 1, },\
273 /*29*/ { "Diagnostic Mode 2 Error", 1, },\
274 /*30*/ { "Command Received During Non-Interruptible Process", 1, },\
275 /*31*/ { "Rate or Format Selection Error", 1, },\
276 /*32*/ { "Illegal Command While in High Speed Mode", 1, },\
277 /*33*/ { "Illegal Seek Segment Value", 1, },\
278 /*34*/ { "Invalid Media", 1, },\
279 /*35*/ { "Head Positioning Failure", 1, },\
280 /*36*/ { "Write Reference Burst Failure", 1, },\
281 /*37*/ { "Prom Code Missing", 1, },\
282 /*38*/ { "Invalid Format", 1, },\
283 /*39*/ { "EOT/BOT System Failure", 1, },\
284 /*40*/ { "Prom A Checksum Error", 1, },\
285 /*41*/ { "Drive Wakeup Reset Occurred", 1, },\
286 /*42*/ { "Prom B Checksum Error", 1, },\
287 /*43*/ { "Illegal Entry into Format Mode", 1, },\
288}
289
290#endif /* _QIC117_H */
diff --git a/include/linux/reiserfs_fs_i.h b/include/linux/reiserfs_fs_i.h
index 5b3b297aa2c5..ce3663fb0101 100644
--- a/include/linux/reiserfs_fs_i.h
+++ b/include/linux/reiserfs_fs_i.h
@@ -25,6 +25,7 @@ typedef enum {
25 i_link_saved_truncate_mask = 0x0020, 25 i_link_saved_truncate_mask = 0x0020,
26 i_has_xattr_dir = 0x0040, 26 i_has_xattr_dir = 0x0040,
27 i_data_log = 0x0080, 27 i_data_log = 0x0080,
28 i_ever_mapped = 0x0100
28} reiserfs_inode_flags; 29} reiserfs_inode_flags;
29 30
30struct reiserfs_inode_info { 31struct reiserfs_inode_info {
@@ -52,6 +53,7 @@ struct reiserfs_inode_info {
52 ** flushed */ 53 ** flushed */
53 unsigned long i_trans_id; 54 unsigned long i_trans_id;
54 struct reiserfs_journal_list *i_jl; 55 struct reiserfs_journal_list *i_jl;
56 struct mutex i_mmap;
55#ifdef CONFIG_REISERFS_FS_POSIX_ACL 57#ifdef CONFIG_REISERFS_FS_POSIX_ACL
56 struct posix_acl *i_acl_access; 58 struct posix_acl *i_acl_access;
57 struct posix_acl *i_acl_default; 59 struct posix_acl *i_acl_default;
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index 5cb380a559fd..d94e2683be52 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -662,6 +662,15 @@ typedef __u64 v4l2_std_id;
662#define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000) 662#define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000)
663#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000) 663#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000)
664 664
665/* FIXME:
666 Although std_id is 64 bits, there is an issue on PPC32 architecture that
667 makes switch(__u64) to break. So, there's a hack on v4l2-common.c rounding
668 this value to 32 bits.
669 As, currently, the max value is for V4L2_STD_ATSC_16_VSB (30 bits wide),
670 it should work fine. However, if needed to add more than two standards,
671 v4l2-common.c should be fixed.
672 */
673
665/* some merged standards */ 674/* some merged standards */
666#define V4L2_STD_MN (V4L2_STD_PAL_M|V4L2_STD_PAL_N|V4L2_STD_PAL_Nc|V4L2_STD_NTSC) 675#define V4L2_STD_MN (V4L2_STD_PAL_M|V4L2_STD_PAL_N|V4L2_STD_PAL_Nc|V4L2_STD_NTSC)
667#define V4L2_STD_B (V4L2_STD_PAL_B|V4L2_STD_PAL_B1|V4L2_STD_SECAM_B) 676#define V4L2_STD_B (V4L2_STD_PAL_B|V4L2_STD_PAL_B1|V4L2_STD_SECAM_B)
diff --git a/include/net/netfilter/nf_conntrack_compat.h b/include/net/netfilter/nf_conntrack_compat.h
index b9ce5c80d9d5..6f84c1f7fcd4 100644
--- a/include/net/netfilter/nf_conntrack_compat.h
+++ b/include/net/netfilter/nf_conntrack_compat.h
@@ -6,6 +6,7 @@
6#if defined(CONFIG_IP_NF_CONNTRACK) || defined(CONFIG_IP_NF_CONNTRACK_MODULE) 6#if defined(CONFIG_IP_NF_CONNTRACK) || defined(CONFIG_IP_NF_CONNTRACK_MODULE)
7 7
8#include <linux/netfilter_ipv4/ip_conntrack.h> 8#include <linux/netfilter_ipv4/ip_conntrack.h>
9#include <linux/socket.h>
9 10
10#ifdef CONFIG_IP_NF_CONNTRACK_MARK 11#ifdef CONFIG_IP_NF_CONNTRACK_MARK
11static inline u_int32_t *nf_ct_get_mark(const struct sk_buff *skb, 12static inline u_int32_t *nf_ct_get_mark(const struct sk_buff *skb,
diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h
index 3269ed1cc222..73cb9943c8a8 100644
--- a/include/net/sctp/sm.h
+++ b/include/net/sctp/sm.h
@@ -134,6 +134,7 @@ sctp_state_fn_t sctp_sf_violation;
134sctp_state_fn_t sctp_sf_discard_chunk; 134sctp_state_fn_t sctp_sf_discard_chunk;
135sctp_state_fn_t sctp_sf_do_5_2_1_siminit; 135sctp_state_fn_t sctp_sf_do_5_2_1_siminit;
136sctp_state_fn_t sctp_sf_do_5_2_2_dupinit; 136sctp_state_fn_t sctp_sf_do_5_2_2_dupinit;
137sctp_state_fn_t sctp_sf_do_5_2_3_initack;
137sctp_state_fn_t sctp_sf_do_5_2_4_dupcook; 138sctp_state_fn_t sctp_sf_do_5_2_4_dupcook;
138sctp_state_fn_t sctp_sf_unk_chunk; 139sctp_state_fn_t sctp_sf_unk_chunk;
139sctp_state_fn_t sctp_sf_do_8_5_1_E_sa; 140sctp_state_fn_t sctp_sf_do_8_5_1_E_sa;
diff --git a/ipc/shm.c b/ipc/shm.c
index 6d16bb6de7d2..f8e10a25ad7d 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -279,7 +279,7 @@ static int newseg (struct ipc_namespace *ns, key_t key, int shmflg, size_t size)
279 if (size < SHMMIN || size > ns->shm_ctlmax) 279 if (size < SHMMIN || size > ns->shm_ctlmax)
280 return -EINVAL; 280 return -EINVAL;
281 281
282 if (ns->shm_tot + numpages >= ns->shm_ctlall) 282 if (ns->shm_tot + numpages > ns->shm_ctlall)
283 return -ENOSPC; 283 return -ENOSPC;
284 284
285 shp = ipc_rcu_alloc(sizeof(*shp)); 285 shp = ipc_rcu_alloc(sizeof(*shp));
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index b385878c6e80..8b961adc3bd2 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -315,6 +315,9 @@ int setup_irq(unsigned int irq, struct irqaction *new)
315 /* Undo nested disables: */ 315 /* Undo nested disables: */
316 desc->depth = 1; 316 desc->depth = 1;
317 } 317 }
318 /* Reset broken irq detection when installing new handler */
319 desc->irq_count = 0;
320 desc->irqs_unhandled = 0;
318 spin_unlock_irqrestore(&desc->lock, flags); 321 spin_unlock_irqrestore(&desc->lock, flags);
319 322
320 new->irq = irq; 323 new->irq = irq;
diff --git a/kernel/profile.c b/kernel/profile.c
index a6574a18514e..d6579d511069 100644
--- a/kernel/profile.c
+++ b/kernel/profile.c
@@ -331,7 +331,6 @@ out:
331 local_irq_restore(flags); 331 local_irq_restore(flags);
332 put_cpu(); 332 put_cpu();
333} 333}
334EXPORT_SYMBOL_GPL(profile_hits);
335 334
336static int __devinit profile_cpu_callback(struct notifier_block *info, 335static int __devinit profile_cpu_callback(struct notifier_block *info,
337 unsigned long action, void *__cpu) 336 unsigned long action, void *__cpu)
@@ -401,6 +400,8 @@ void profile_hits(int type, void *__pc, unsigned int nr_hits)
401} 400}
402#endif /* !CONFIG_SMP */ 401#endif /* !CONFIG_SMP */
403 402
403EXPORT_SYMBOL_GPL(profile_hits);
404
404void profile_tick(int type) 405void profile_tick(int type)
405{ 406{
406 struct pt_regs *regs = get_irq_regs(); 407 struct pt_regs *regs = get_irq_regs();
diff --git a/kernel/sys.c b/kernel/sys.c
index c7675c1bfdf2..6e2101dec0fc 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -323,11 +323,18 @@ EXPORT_SYMBOL_GPL(blocking_notifier_chain_unregister);
323int blocking_notifier_call_chain(struct blocking_notifier_head *nh, 323int blocking_notifier_call_chain(struct blocking_notifier_head *nh,
324 unsigned long val, void *v) 324 unsigned long val, void *v)
325{ 325{
326 int ret; 326 int ret = NOTIFY_DONE;
327 327
328 down_read(&nh->rwsem); 328 /*
329 ret = notifier_call_chain(&nh->head, val, v); 329 * We check the head outside the lock, but if this access is
330 up_read(&nh->rwsem); 330 * racy then it does not matter what the result of the test
331 * is, we re-check the list after having taken the lock anyway:
332 */
333 if (rcu_dereference(nh->head)) {
334 down_read(&nh->rwsem);
335 ret = notifier_call_chain(&nh->head, val, v);
336 up_read(&nh->rwsem);
337 }
331 return ret; 338 return ret;
332} 339}
333 340
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index da9463946556..c2aec0e1090d 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -884,6 +884,10 @@ asmlinkage long sys_mbind(unsigned long start, unsigned long len,
884 err = get_nodes(&nodes, nmask, maxnode); 884 err = get_nodes(&nodes, nmask, maxnode);
885 if (err) 885 if (err)
886 return err; 886 return err;
887#ifdef CONFIG_CPUSETS
888 /* Restrict the nodes to the allowed nodes in the cpuset */
889 nodes_and(nodes, nodes, current->mems_allowed);
890#endif
887 return do_mbind(start, len, mode, &nodes, flags); 891 return do_mbind(start, len, mode, &nodes, flags);
888} 892}
889 893
diff --git a/net/core/flow.c b/net/core/flow.c
index d137f971f97d..5d25697920b1 100644
--- a/net/core/flow.c
+++ b/net/core/flow.c
@@ -231,22 +231,16 @@ nocache:
231 231
232 err = resolver(key, family, dir, &obj, &obj_ref); 232 err = resolver(key, family, dir, &obj, &obj_ref);
233 233
234 if (fle) { 234 if (fle && !err) {
235 if (err) { 235 fle->genid = atomic_read(&flow_cache_genid);
236 /* Force security policy check on next lookup */ 236
237 *head = fle->next; 237 if (fle->object)
238 flow_entry_kill(cpu, fle); 238 atomic_dec(fle->object_ref);
239 } else { 239
240 fle->genid = atomic_read(&flow_cache_genid); 240 fle->object = obj;
241 241 fle->object_ref = obj_ref;
242 if (fle->object) 242 if (obj)
243 atomic_dec(fle->object_ref); 243 atomic_inc(fle->object_ref);
244
245 fle->object = obj;
246 fle->object_ref = obj_ref;
247 if (obj)
248 atomic_inc(fle->object_ref);
249 }
250 } 244 }
251 local_bh_enable(); 245 local_bh_enable();
252 246
diff --git a/net/ipv4/netfilter/ip_conntrack_netlink.c b/net/ipv4/netfilter/ip_conntrack_netlink.c
index 5fcf91d617cd..6f31fad9be13 100644
--- a/net/ipv4/netfilter/ip_conntrack_netlink.c
+++ b/net/ipv4/netfilter/ip_conntrack_netlink.c
@@ -959,7 +959,7 @@ ctnetlink_create_conntrack(struct nfattr *cda[],
959 if (cda[CTA_PROTOINFO-1]) { 959 if (cda[CTA_PROTOINFO-1]) {
960 err = ctnetlink_change_protoinfo(ct, cda); 960 err = ctnetlink_change_protoinfo(ct, cda);
961 if (err < 0) 961 if (err < 0)
962 return err; 962 goto err;
963 } 963 }
964 964
965#if defined(CONFIG_IP_NF_CONNTRACK_MARK) 965#if defined(CONFIG_IP_NF_CONNTRACK_MARK)
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index c701f6abbfc1..5c16e24a6061 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -4420,9 +4420,11 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
4420 * But, this leaves one open to an easy denial of 4420 * But, this leaves one open to an easy denial of
4421 * service attack, and SYN cookies can't defend 4421 * service attack, and SYN cookies can't defend
4422 * against this problem. So, we drop the data 4422 * against this problem. So, we drop the data
4423 * in the interest of security over speed. 4423 * in the interest of security over speed unless
4424 * it's still in use.
4424 */ 4425 */
4425 goto discard; 4426 kfree_skb(skb);
4427 return 0;
4426 } 4428 }
4427 goto discard; 4429 goto discard;
4428 4430
diff --git a/net/ipv4/tcp_probe.c b/net/ipv4/tcp_probe.c
index f230eeecf092..41c157848181 100644
--- a/net/ipv4/tcp_probe.c
+++ b/net/ipv4/tcp_probe.c
@@ -30,7 +30,7 @@
30 30
31#include <net/tcp.h> 31#include <net/tcp.h>
32 32
33MODULE_AUTHOR("Stephen Hemminger <shemminger@osdl.org>"); 33MODULE_AUTHOR("Stephen Hemminger <shemminger@linux-foundation.org>");
34MODULE_DESCRIPTION("TCP cwnd snooper"); 34MODULE_DESCRIPTION("TCP cwnd snooper");
35MODULE_LICENSE("GPL"); 35MODULE_LICENSE("GPL");
36 36
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 171e5b55d7d6..2a7e4618f526 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -341,6 +341,7 @@ void in6_dev_finish_destroy(struct inet6_dev *idev)
341static struct inet6_dev * ipv6_add_dev(struct net_device *dev) 341static struct inet6_dev * ipv6_add_dev(struct net_device *dev)
342{ 342{
343 struct inet6_dev *ndev; 343 struct inet6_dev *ndev;
344 struct in6_addr maddr;
344 345
345 ASSERT_RTNL(); 346 ASSERT_RTNL();
346 347
@@ -425,6 +426,11 @@ static struct inet6_dev * ipv6_add_dev(struct net_device *dev)
425#endif 426#endif
426 /* protected by rtnl_lock */ 427 /* protected by rtnl_lock */
427 rcu_assign_pointer(dev->ip6_ptr, ndev); 428 rcu_assign_pointer(dev->ip6_ptr, ndev);
429
430 /* Join all-node multicast group */
431 ipv6_addr_all_nodes(&maddr);
432 ipv6_dev_mc_inc(dev, &maddr);
433
428 return ndev; 434 return ndev;
429} 435}
430 436
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
index a1c231a04ac2..882cde4b4047 100644
--- a/net/ipv6/mcast.c
+++ b/net/ipv6/mcast.c
@@ -2258,8 +2258,6 @@ void ipv6_mc_up(struct inet6_dev *idev)
2258 2258
2259void ipv6_mc_init_dev(struct inet6_dev *idev) 2259void ipv6_mc_init_dev(struct inet6_dev *idev)
2260{ 2260{
2261 struct in6_addr maddr;
2262
2263 write_lock_bh(&idev->lock); 2261 write_lock_bh(&idev->lock);
2264 rwlock_init(&idev->mc_lock); 2262 rwlock_init(&idev->mc_lock);
2265 idev->mc_gq_running = 0; 2263 idev->mc_gq_running = 0;
@@ -2275,10 +2273,6 @@ void ipv6_mc_init_dev(struct inet6_dev *idev)
2275 idev->mc_maxdelay = IGMP6_UNSOLICITED_IVAL; 2273 idev->mc_maxdelay = IGMP6_UNSOLICITED_IVAL;
2276 idev->mc_v1_seen = 0; 2274 idev->mc_v1_seen = 0;
2277 write_unlock_bh(&idev->lock); 2275 write_unlock_bh(&idev->lock);
2278
2279 /* Add all-nodes address. */
2280 ipv6_addr_all_nodes(&maddr);
2281 ipv6_dev_mc_inc(idev->dev, &maddr);
2282} 2276}
2283 2277
2284/* 2278/*
diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c
index bd1d2de75e45..811e3e782f0f 100644
--- a/net/netfilter/nf_conntrack_netlink.c
+++ b/net/netfilter/nf_conntrack_netlink.c
@@ -981,7 +981,7 @@ ctnetlink_create_conntrack(struct nfattr *cda[],
981 if (cda[CTA_PROTOINFO-1]) { 981 if (cda[CTA_PROTOINFO-1]) {
982 err = ctnetlink_change_protoinfo(ct, cda); 982 err = ctnetlink_change_protoinfo(ct, cda);
983 if (err < 0) 983 if (err < 0)
984 return err; 984 goto err;
985 } 985 }
986 986
987#if defined(CONFIG_NF_CONNTRACK_MARK) 987#if defined(CONFIG_NF_CONNTRACK_MARK)
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c
index 167d888d1df2..0b1ddb1005ac 100644
--- a/net/sctp/sm_make_chunk.c
+++ b/net/sctp/sm_make_chunk.c
@@ -1562,7 +1562,7 @@ static int sctp_process_missing_param(const struct sctp_association *asoc,
1562 if (*errp) { 1562 if (*errp) {
1563 report.num_missing = htonl(1); 1563 report.num_missing = htonl(1);
1564 report.type = paramtype; 1564 report.type = paramtype;
1565 sctp_init_cause(*errp, SCTP_ERROR_INV_PARAM, 1565 sctp_init_cause(*errp, SCTP_ERROR_MISS_PARAM,
1566 &report, sizeof(report)); 1566 &report, sizeof(report));
1567 } 1567 }
1568 1568
@@ -1775,7 +1775,9 @@ int sctp_verify_init(const struct sctp_association *asoc,
1775 1775
1776 /* Verify stream values are non-zero. */ 1776 /* Verify stream values are non-zero. */
1777 if ((0 == peer_init->init_hdr.num_outbound_streams) || 1777 if ((0 == peer_init->init_hdr.num_outbound_streams) ||
1778 (0 == peer_init->init_hdr.num_inbound_streams)) { 1778 (0 == peer_init->init_hdr.num_inbound_streams) ||
1779 (0 == peer_init->init_hdr.init_tag) ||
1780 (SCTP_DEFAULT_MINWINDOW > ntohl(peer_init->init_hdr.a_rwnd))) {
1779 1781
1780 sctp_process_inv_mandatory(asoc, chunk, errp); 1782 sctp_process_inv_mandatory(asoc, chunk, errp);
1781 return 0; 1783 return 0;
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
index 7bbc6156e455..8bd30976cdee 100644
--- a/net/sctp/sm_sideeffect.c
+++ b/net/sctp/sm_sideeffect.c
@@ -217,7 +217,7 @@ static int sctp_gen_sack(struct sctp_association *asoc, int force,
217 217
218 asoc->peer.sack_needed = 0; 218 asoc->peer.sack_needed = 0;
219 219
220 error = sctp_outq_tail(&asoc->outqueue, sack); 220 sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(sack));
221 221
222 /* Stop the SACK timer. */ 222 /* Stop the SACK timer. */
223 sctp_add_cmd_sf(commands, SCTP_CMD_TIMER_STOP, 223 sctp_add_cmd_sf(commands, SCTP_CMD_TIMER_STOP,
diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c
index aa51d190bfb2..fce1f602cde2 100644
--- a/net/sctp/sm_statefuns.c
+++ b/net/sctp/sm_statefuns.c
@@ -440,7 +440,6 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(const struct sctp_endpoint *ep,
440{ 440{
441 struct sctp_chunk *chunk = arg; 441 struct sctp_chunk *chunk = arg;
442 sctp_init_chunk_t *initchunk; 442 sctp_init_chunk_t *initchunk;
443 __u32 init_tag;
444 struct sctp_chunk *err_chunk; 443 struct sctp_chunk *err_chunk;
445 struct sctp_packet *packet; 444 struct sctp_packet *packet;
446 sctp_error_t error; 445 sctp_error_t error;
@@ -462,24 +461,6 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(const struct sctp_endpoint *ep,
462 /* Grab the INIT header. */ 461 /* Grab the INIT header. */
463 chunk->subh.init_hdr = (sctp_inithdr_t *) chunk->skb->data; 462 chunk->subh.init_hdr = (sctp_inithdr_t *) chunk->skb->data;
464 463
465 init_tag = ntohl(chunk->subh.init_hdr->init_tag);
466
467 /* Verification Tag: 3.3.3
468 * If the value of the Initiate Tag in a received INIT ACK
469 * chunk is found to be 0, the receiver MUST treat it as an
470 * error and close the association by transmitting an ABORT.
471 */
472 if (!init_tag) {
473 struct sctp_chunk *reply = sctp_make_abort(asoc, chunk, 0);
474 if (!reply)
475 goto nomem;
476
477 sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(reply));
478 return sctp_stop_t1_and_abort(commands, SCTP_ERROR_INV_PARAM,
479 ECONNREFUSED, asoc,
480 chunk->transport);
481 }
482
483 /* Verify the INIT chunk before processing it. */ 464 /* Verify the INIT chunk before processing it. */
484 err_chunk = NULL; 465 err_chunk = NULL;
485 if (!sctp_verify_init(asoc, chunk->chunk_hdr->type, 466 if (!sctp_verify_init(asoc, chunk->chunk_hdr->type,
@@ -1553,6 +1534,28 @@ sctp_disposition_t sctp_sf_do_5_2_2_dupinit(const struct sctp_endpoint *ep,
1553} 1534}
1554 1535
1555 1536
1537/*
1538 * Unexpected INIT-ACK handler.
1539 *
1540 * Section 5.2.3
1541 * If an INIT ACK received by an endpoint in any state other than the
1542 * COOKIE-WAIT state, the endpoint should discard the INIT ACK chunk.
1543 * An unexpected INIT ACK usually indicates the processing of an old or
1544 * duplicated INIT chunk.
1545*/
1546sctp_disposition_t sctp_sf_do_5_2_3_initack(const struct sctp_endpoint *ep,
1547 const struct sctp_association *asoc,
1548 const sctp_subtype_t type,
1549 void *arg, sctp_cmd_seq_t *commands)
1550{
1551 /* Per the above section, we'll discard the chunk if we have an
1552 * endpoint. If this is an OOTB INIT-ACK, treat it as such.
1553 */
1554 if (ep == sctp_sk((sctp_get_ctl_sock()))->ep)
1555 return sctp_sf_ootb(ep, asoc, type, arg, commands);
1556 else
1557 return sctp_sf_discard_chunk(ep, asoc, type, arg, commands);
1558}
1556 1559
1557/* Unexpected COOKIE-ECHO handler for peer restart (Table 2, action 'A') 1560/* Unexpected COOKIE-ECHO handler for peer restart (Table 2, action 'A')
1558 * 1561 *
diff --git a/net/sctp/sm_statetable.c b/net/sctp/sm_statetable.c
index 733dd87b3a7d..5f6cc7aa661b 100644
--- a/net/sctp/sm_statetable.c
+++ b/net/sctp/sm_statetable.c
@@ -152,7 +152,7 @@ const sctp_sm_table_entry_t *sctp_sm_lookup_event(sctp_event_t event_type,
152 /* SCTP_STATE_EMPTY */ \ 152 /* SCTP_STATE_EMPTY */ \
153 TYPE_SCTP_FUNC(sctp_sf_ootb), \ 153 TYPE_SCTP_FUNC(sctp_sf_ootb), \
154 /* SCTP_STATE_CLOSED */ \ 154 /* SCTP_STATE_CLOSED */ \
155 TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \ 155 TYPE_SCTP_FUNC(sctp_sf_do_5_2_3_initack), \
156 /* SCTP_STATE_COOKIE_WAIT */ \ 156 /* SCTP_STATE_COOKIE_WAIT */ \
157 TYPE_SCTP_FUNC(sctp_sf_do_5_1C_ack), \ 157 TYPE_SCTP_FUNC(sctp_sf_do_5_1C_ack), \
158 /* SCTP_STATE_COOKIE_ECHOED */ \ 158 /* SCTP_STATE_COOKIE_ECHOED */ \
diff --git a/net/x25/x25_dev.c b/net/x25/x25_dev.c
index 47b68a301677..328d80f000ad 100644
--- a/net/x25/x25_dev.c
+++ b/net/x25/x25_dev.c
@@ -56,6 +56,7 @@ static int x25_receive_data(struct sk_buff *skb, struct x25_neigh *nb)
56 sk_add_backlog(sk, skb); 56 sk_add_backlog(sk, skb);
57 } 57 }
58 bh_unlock_sock(sk); 58 bh_unlock_sock(sk);
59 sock_put(sk);
59 return queued; 60 return queued;
60 } 61 }
61 62
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index bebd40e5a62e..b7e537fe2d75 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -650,19 +650,18 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl)
650 struct xfrm_policy *pol; 650 struct xfrm_policy *pol;
651 struct xfrm_policy *delpol; 651 struct xfrm_policy *delpol;
652 struct hlist_head *chain; 652 struct hlist_head *chain;
653 struct hlist_node *entry, *newpos, *last; 653 struct hlist_node *entry, *newpos;
654 struct dst_entry *gc_list; 654 struct dst_entry *gc_list;
655 655
656 write_lock_bh(&xfrm_policy_lock); 656 write_lock_bh(&xfrm_policy_lock);
657 chain = policy_hash_bysel(&policy->selector, policy->family, dir); 657 chain = policy_hash_bysel(&policy->selector, policy->family, dir);
658 delpol = NULL; 658 delpol = NULL;
659 newpos = NULL; 659 newpos = NULL;
660 last = NULL;
661 hlist_for_each_entry(pol, entry, chain, bydst) { 660 hlist_for_each_entry(pol, entry, chain, bydst) {
662 if (!delpol && 661 if (pol->type == policy->type &&
663 pol->type == policy->type &&
664 !selector_cmp(&pol->selector, &policy->selector) && 662 !selector_cmp(&pol->selector, &policy->selector) &&
665 xfrm_sec_ctx_match(pol->security, policy->security)) { 663 xfrm_sec_ctx_match(pol->security, policy->security) &&
664 !WARN_ON(delpol)) {
666 if (excl) { 665 if (excl) {
667 write_unlock_bh(&xfrm_policy_lock); 666 write_unlock_bh(&xfrm_policy_lock);
668 return -EEXIST; 667 return -EEXIST;
@@ -671,17 +670,12 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl)
671 if (policy->priority > pol->priority) 670 if (policy->priority > pol->priority)
672 continue; 671 continue;
673 } else if (policy->priority >= pol->priority) { 672 } else if (policy->priority >= pol->priority) {
674 last = &pol->bydst; 673 newpos = &pol->bydst;
675 continue; 674 continue;
676 } 675 }
677 if (!newpos)
678 newpos = &pol->bydst;
679 if (delpol) 676 if (delpol)
680 break; 677 break;
681 last = &pol->bydst;
682 } 678 }
683 if (!newpos)
684 newpos = last;
685 if (newpos) 679 if (newpos)
686 hlist_add_after(newpos, &policy->bydst); 680 hlist_add_after(newpos, &policy->bydst);
687 else 681 else
diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c
index 3eb1fa9f0de1..ff0393317f39 100644
--- a/security/selinux/ss/services.c
+++ b/security/selinux/ss/services.c
@@ -1299,6 +1299,7 @@ int security_load_policy(void *data, size_t len)
1299 avc_ss_reset(seqno); 1299 avc_ss_reset(seqno);
1300 selnl_notify_policyload(seqno); 1300 selnl_notify_policyload(seqno);
1301 selinux_netlbl_cache_invalidate(); 1301 selinux_netlbl_cache_invalidate();
1302 atomic_inc(&flow_cache_genid);
1302 return 0; 1303 return 0;
1303 } 1304 }
1304 1305
@@ -1354,6 +1355,7 @@ int security_load_policy(void *data, size_t len)
1354 avc_ss_reset(seqno); 1355 avc_ss_reset(seqno);
1355 selnl_notify_policyload(seqno); 1356 selnl_notify_policyload(seqno);
1356 selinux_netlbl_cache_invalidate(); 1357 selinux_netlbl_cache_invalidate();
1358 atomic_inc(&flow_cache_genid);
1357 1359
1358 return 0; 1360 return 0;
1359 1361
@@ -1853,6 +1855,7 @@ out:
1853 if (!rc) { 1855 if (!rc) {
1854 avc_ss_reset(seqno); 1856 avc_ss_reset(seqno);
1855 selnl_notify_policyload(seqno); 1857 selnl_notify_policyload(seqno);
1858 atomic_inc(&flow_cache_genid);
1856 } 1859 }
1857 return rc; 1860 return rc;
1858} 1861}
diff --git a/sound/usb/usx2y/usbusx2yaudio.c b/sound/usb/usx2y/usbusx2yaudio.c
index 367f8a32a665..0a352e46862f 100644
--- a/sound/usb/usx2y/usbusx2yaudio.c
+++ b/sound/usb/usx2y/usbusx2yaudio.c
@@ -322,7 +322,7 @@ static void i_usX2Y_urb_complete(struct urb *urb)
322 usX2Y_error_urb_status(usX2Y, subs, urb); 322 usX2Y_error_urb_status(usX2Y, subs, urb);
323 return; 323 return;
324 } 324 }
325 if (likely(urb->start_frame == usX2Y->wait_iso_frame)) 325 if (likely((urb->start_frame & 0xFFFF) == (usX2Y->wait_iso_frame & 0xFFFF)))
326 subs->completed_urb = urb; 326 subs->completed_urb = urb;
327 else { 327 else {
328 usX2Y_error_sequence(usX2Y, subs, urb); 328 usX2Y_error_sequence(usX2Y, subs, urb);
diff --git a/sound/usb/usx2y/usx2yhwdeppcm.c b/sound/usb/usx2y/usx2yhwdeppcm.c
index 8f3e35e24e72..a5e7bcd7ca2e 100644
--- a/sound/usb/usx2y/usx2yhwdeppcm.c
+++ b/sound/usb/usx2y/usx2yhwdeppcm.c
@@ -243,7 +243,7 @@ static void i_usX2Y_usbpcm_urb_complete(struct urb *urb)
243 usX2Y_error_urb_status(usX2Y, subs, urb); 243 usX2Y_error_urb_status(usX2Y, subs, urb);
244 return; 244 return;
245 } 245 }
246 if (likely(urb->start_frame == usX2Y->wait_iso_frame)) 246 if (likely((urb->start_frame & 0xFFFF) == (usX2Y->wait_iso_frame & 0xFFFF)))
247 subs->completed_urb = urb; 247 subs->completed_urb = urb;
248 else { 248 else {
249 usX2Y_error_sequence(usX2Y, subs, urb); 249 usX2Y_error_sequence(usX2Y, subs, urb);