aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/00-INDEX2
-rw-r--r--Documentation/cdrom/ide-cd18
-rw-r--r--Documentation/ide/00-INDEX12
-rw-r--r--Documentation/ide/ide.txt (renamed from Documentation/ide.txt)20
-rw-r--r--Documentation/kernel-parameters.txt8
-rw-r--r--Documentation/pci.txt4
-rw-r--r--Documentation/scheduler/sched-stats.txt2
-rw-r--r--Documentation/vm/slub.txt4
-rw-r--r--Makefile2
-rw-r--r--arch/alpha/kernel/pci_iommu.c15
-rw-r--r--arch/blackfin/kernel/fixed_code.S12
-rw-r--r--arch/blackfin/mach-bf548/boards/ezkit.c4
-rw-r--r--arch/blackfin/mach-common/entry.S5
-rw-r--r--arch/ia64/hp/common/hwsw_iommu.c2
-rw-r--r--arch/ia64/hp/common/sba_iommu.c36
-rw-r--r--arch/ia64/hp/sim/simeth.c2
-rw-r--r--arch/ia64/hp/sim/simserial.c2
-rw-r--r--arch/ia64/ia32/sys_ia32.c7
-rw-r--r--arch/ia64/kernel/crash.c2
-rw-r--r--arch/ia64/kernel/efi.c32
-rw-r--r--arch/ia64/kernel/iosapic.c24
-rw-r--r--arch/ia64/kernel/irq_ia64.c8
-rw-r--r--arch/ia64/kernel/kprobes.c2
-rw-r--r--arch/ia64/kernel/mca.c73
-rw-r--r--arch/ia64/kernel/module.c22
-rw-r--r--arch/ia64/kernel/perfmon.c4
-rw-r--r--arch/ia64/kernel/perfmon_default_smpl.c4
-rw-r--r--arch/ia64/kernel/ptrace.c327
-rw-r--r--arch/ia64/kernel/setup.c8
-rw-r--r--arch/ia64/kernel/unaligned.c6
-rw-r--r--arch/ia64/kernel/unwind.c102
-rw-r--r--arch/ia64/mm/fault.c2
-rw-r--r--arch/ia64/mm/init.c2
-rw-r--r--arch/ia64/pci/fixup.c2
-rw-r--r--arch/ia64/pci/pci.c4
-rw-r--r--arch/ia64/sn/kernel/huberror.c4
-rw-r--r--arch/ia64/sn/kernel/io_acpi_init.c36
-rw-r--r--arch/ia64/sn/kernel/io_common.c2
-rw-r--r--arch/ia64/sn/kernel/io_init.c4
-rw-r--r--arch/ia64/sn/kernel/mca.c2
-rw-r--r--arch/ia64/sn/pci/pci_dma.c6
-rw-r--r--arch/ia64/sn/pci/tioca_provider.c12
-rw-r--r--arch/ia64/sn/pci/tioce_provider.c4
-rw-r--r--arch/sh/Kconfig7
-rw-r--r--arch/sh/Makefile1
-rw-r--r--arch/sh/boards/hp6xx/hp6xx_apm.c22
-rw-r--r--arch/sh/boards/renesas/sh7710voipgw/Makefile1
-rw-r--r--arch/sh/boards/renesas/sh7710voipgw/setup.c94
-rw-r--r--arch/sh/boards/renesas/x3proto/ilsel.c2
-rw-r--r--arch/sh/boards/superh/microdev/io.c2
-rw-r--r--arch/sh/configs/r7780mp_defconfig91
-rw-r--r--arch/sh/configs/se7780_defconfig646
-rw-r--r--arch/sh/configs/sh7710voipgw_defconfig595
-rw-r--r--arch/sh/kernel/cpu/init.c2
-rw-r--r--arch/sh/kernel/cpu/sh4/sq.c4
-rw-r--r--arch/sh/kernel/cpu/sh5/unwind.c2
-rw-r--r--arch/sh/kernel/io_trapped.c2
-rw-r--r--arch/sh/kernel/sh_ksyms_32.c5
-rw-r--r--arch/sh/kernel/sh_ksyms_64.c1
-rw-r--r--arch/sh/kernel/timers/timer-cmt.c2
-rw-r--r--arch/sh/kernel/timers/timer-mtu2.c2
-rw-r--r--arch/sh/kernel/topology.c2
-rw-r--r--arch/sh/kernel/traps_64.c2
-rw-r--r--arch/sh/lib64/c-checksum.c2
-rw-r--r--arch/sh/lib64/udelay.c21
-rw-r--r--arch/sh/mm/Kconfig2
-rw-r--r--arch/sh/mm/init.c2
-rw-r--r--arch/sh/mm/ioremap_32.c2
-rw-r--r--arch/sh/mm/ioremap_64.c4
-rw-r--r--arch/sh/mm/pg-sh7705.c1
-rw-r--r--arch/sh/mm/tlbflush_64.c6
-rw-r--r--arch/sh/tools/mach-types1
-rw-r--r--arch/x86/boot/vesa.h9
-rw-r--r--arch/x86/boot/video-vesa.c2
-rw-r--r--arch/x86/ia32/ia32_signal.c4
-rw-r--r--arch/x86/kernel/i387.c2
-rw-r--r--arch/x86/kernel/ptrace.c10
-rw-r--r--arch/x86/kernel/reboot.c6
-rw-r--r--arch/x86/kernel/signal_32.c4
-rw-r--r--arch/x86/kernel/signal_64.c2
-rw-r--r--arch/x86/kernel/step.c4
-rw-r--r--crypto/Kconfig1
-rw-r--r--crypto/Makefile4
-rw-r--r--crypto/ablkcipher.c3
-rw-r--r--crypto/blkcipher.c29
-rw-r--r--crypto/chainiv.c10
-rw-r--r--crypto/digest.c2
-rw-r--r--crypto/eseqiv.c10
-rw-r--r--crypto/xcbc.c6
-rw-r--r--crypto/xts.c13
-rw-r--r--drivers/bluetooth/hci_usb.c1
-rw-r--r--drivers/char/esp.c1
-rw-r--r--drivers/char/riscom8.c6
-rw-r--r--drivers/gpio/pca953x.c1
-rw-r--r--drivers/ide/Kconfig30
-rw-r--r--drivers/ide/ide-cd_ioctl.c4
-rw-r--r--drivers/ide/ide-dma.c2
-rw-r--r--drivers/ide/ide.c4
-rw-r--r--drivers/input/serio/i8042.h2
-rw-r--r--drivers/isdn/gigaset/common.c6
-rw-r--r--drivers/md/bitmap.c4
-rw-r--r--drivers/md/md.c2
-rw-r--r--drivers/memstick/Kconfig2
-rw-r--r--drivers/memstick/core/memstick.c33
-rw-r--r--drivers/memstick/core/mspro_block.c106
-rw-r--r--drivers/memstick/host/Kconfig10
-rw-r--r--drivers/memstick/host/Makefile6
-rw-r--r--drivers/memstick/host/jmb38x_ms.c945
-rw-r--r--drivers/memstick/host/tifm_ms.c569
-rw-r--r--drivers/misc/tifm_7xx1.c2
-rw-r--r--drivers/serial/of_serial.c2
-rw-r--r--drivers/video/Kconfig13
-rw-r--r--drivers/video/Makefile1
-rw-r--r--drivers/video/bf54x-lq043fb.c6
-rw-r--r--drivers/video/bfin-t350mcqb-fb.c685
-rw-r--r--drivers/video/hitfb.c4
-rw-r--r--drivers/video/mbx/mbxfb.c2
-rw-r--r--drivers/video/pvr2fb.c12
-rw-r--r--drivers/video/stifb.c22
-rw-r--r--drivers/video/tridentfb.c14
-rw-r--r--fs/nfs/dir.c2
-rw-r--r--fs/nfs/inode.c6
-rw-r--r--fs/nfs/write.c2
-rw-r--r--fs/xfs/xfs_iget.c1
-rw-r--r--fs/xfs/xfs_trans_ail.c17
-rw-r--r--include/asm-blackfin/mmu_context.h2
-rw-r--r--include/asm-blackfin/unistd.h6
-rw-r--r--include/asm-ia64/kprobes.h2
-rw-r--r--include/asm-ia64/ptrace.h9
-rw-r--r--include/asm-mn10300/Kbuild4
-rw-r--r--include/asm-sh/delay.h5
-rw-r--r--include/asm-x86/Kbuild1
-rw-r--r--include/crypto/internal/skcipher.h6
-rw-r--r--include/linux/memstick.h132
-rw-r--r--include/linux/nfs_fs.h1
-rw-r--r--include/linux/pci.h4
-rw-r--r--include/linux/pci_ids.h1
-rw-r--r--include/linux/sched.h4
-rw-r--r--include/linux/slab_def.h4
-rw-r--r--include/linux/tifm.h2
-rw-r--r--include/linux/time.h4
-rw-r--r--include/linux/timex.h9
-rw-r--r--init/Kconfig34
-rw-r--r--ipc/shm.c5
-rw-r--r--kernel/Kconfig.preempt15
-rw-r--r--kernel/exit.c2
-rw-r--r--kernel/module.c15
-rw-r--r--kernel/sched.c54
-rw-r--r--kernel/sched_fair.c14
-rw-r--r--kernel/sched_rt.c6
-rw-r--r--kernel/time/ntp.c23
-rw-r--r--kernel/time/tick-sched.c2
-rw-r--r--kernel/time/timekeeping.c6
-rw-r--r--mm/filemap.c23
-rw-r--r--mm/hugetlb.c13
-rw-r--r--mm/mempolicy.c7
-rw-r--r--mm/slab.c9
-rw-r--r--mm/slub.c13
-rw-r--r--net/sunrpc/xprtrdma/transport.c6
159 files changed, 3444 insertions, 2022 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX
index 30b327a116..042073f656 100644
--- a/Documentation/00-INDEX
+++ b/Documentation/00-INDEX
@@ -183,8 +183,6 @@ i386/
183 - directory with info about Linux on Intel 32 bit architecture. 183 - directory with info about Linux on Intel 32 bit architecture.
184ia64/ 184ia64/
185 - directory with info about Linux on Intel 64 bit architecture. 185 - directory with info about Linux on Intel 64 bit architecture.
186ide.txt
187 - important info for users of ATA devices (IDE/EIDE disks and CD-ROMS).
188infiniband/ 186infiniband/
189 - directory with documents concerning Linux InfiniBand support. 187 - directory with documents concerning Linux InfiniBand support.
190initrd.txt 188initrd.txt
diff --git a/Documentation/cdrom/ide-cd b/Documentation/cdrom/ide-cd
index 29721bfcde..91c0dcc6fa 100644
--- a/Documentation/cdrom/ide-cd
+++ b/Documentation/cdrom/ide-cd
@@ -45,7 +45,7 @@ This driver provides the following features:
45--------------- 45---------------
46 46
470. The ide-cd relies on the ide disk driver. See 470. The ide-cd relies on the ide disk driver. See
48 Documentation/ide.txt for up-to-date information on the ide 48 Documentation/ide/ide.txt for up-to-date information on the ide
49 driver. 49 driver.
50 50
511. Make sure that the ide and ide-cd drivers are compiled into the 511. Make sure that the ide and ide-cd drivers are compiled into the
@@ -64,7 +64,7 @@ This driver provides the following features:
64 64
65 Depending on what type of IDE interface you have, you may need to 65 Depending on what type of IDE interface you have, you may need to
66 specify additional configuration options. See 66 specify additional configuration options. See
67 Documentation/ide.txt. 67 Documentation/ide/ide.txt.
68 68
692. You should also ensure that the iso9660 filesystem is either 692. You should also ensure that the iso9660 filesystem is either
70 compiled into the kernel or available as a loadable module. You 70 compiled into the kernel or available as a loadable module. You
@@ -84,7 +84,7 @@ This driver provides the following features:
84 on the primary IDE interface are called `hda' and `hdb', 84 on the primary IDE interface are called `hda' and `hdb',
85 respectively. The drives on the secondary interface are called 85 respectively. The drives on the secondary interface are called
86 `hdc' and `hdd'. (Interfaces at other locations get other letters 86 `hdc' and `hdd'. (Interfaces at other locations get other letters
87 in the third position; see Documentation/ide.txt.) 87 in the third position; see Documentation/ide/ide.txt.)
88 88
89 If you want your CDROM drive to be found automatically by the 89 If you want your CDROM drive to be found automatically by the
90 driver, you should make sure your IDE interface uses either the 90 driver, you should make sure your IDE interface uses either the
@@ -93,7 +93,7 @@ This driver provides the following features:
93 be jumpered as `master'. (If for some reason you cannot configure 93 be jumpered as `master'. (If for some reason you cannot configure
94 your system in this manner, you can probably still use the driver. 94 your system in this manner, you can probably still use the driver.
95 You may have to pass extra configuration information to the kernel 95 You may have to pass extra configuration information to the kernel
96 when you boot, however. See Documentation/ide.txt for more 96 when you boot, however. See Documentation/ide/ide.txt for more
97 information.) 97 information.)
98 98
994. Boot the system. If the drive is recognized, you should see a 994. Boot the system. If the drive is recognized, you should see a
@@ -201,7 +201,7 @@ TEST
201This section discusses some common problems encountered when trying to 201This section discusses some common problems encountered when trying to
202use the driver, and some possible solutions. Note that if you are 202use the driver, and some possible solutions. Note that if you are
203experiencing problems, you should probably also review 203experiencing problems, you should probably also review
204Documentation/ide.txt for current information about the underlying 204Documentation/ide/ide.txt for current information about the underlying
205IDE support code. Some of these items apply only to earlier versions 205IDE support code. Some of these items apply only to earlier versions
206of the driver, but are mentioned here for completeness. 206of the driver, but are mentioned here for completeness.
207 207
@@ -211,7 +211,7 @@ from the driver.
211a. Drive is not detected during booting. 211a. Drive is not detected during booting.
212 212
213 - Review the configuration instructions above and in 213 - Review the configuration instructions above and in
214 Documentation/ide.txt, and check how your hardware is 214 Documentation/ide/ide.txt, and check how your hardware is
215 configured. 215 configured.
216 216
217 - If your drive is the only device on an IDE interface, it should 217 - If your drive is the only device on an IDE interface, it should
@@ -219,7 +219,7 @@ a. Drive is not detected during booting.
219 219
220 - If your IDE interface is not at the standard addresses of 0x170 220 - If your IDE interface is not at the standard addresses of 0x170
221 or 0x1f0, you'll need to explicitly inform the driver using a 221 or 0x1f0, you'll need to explicitly inform the driver using a
222 lilo option. See Documentation/ide.txt. (This feature was 222 lilo option. See Documentation/ide/ide.txt. (This feature was
223 added around kernel version 1.3.30.) 223 added around kernel version 1.3.30.)
224 224
225 - If the autoprobing is not finding your drive, you can tell the 225 - If the autoprobing is not finding your drive, you can tell the
@@ -245,7 +245,7 @@ a. Drive is not detected during booting.
245 Support for some interfaces needing extra initialization is 245 Support for some interfaces needing extra initialization is
246 provided in later 1.3.x kernels. You may need to turn on 246 provided in later 1.3.x kernels. You may need to turn on
247 additional kernel configuration options to get them to work; 247 additional kernel configuration options to get them to work;
248 see Documentation/ide.txt. 248 see Documentation/ide/ide.txt.
249 249
250 Even if support is not available for your interface, you may be 250 Even if support is not available for your interface, you may be
251 able to get it to work with the following procedure. First boot 251 able to get it to work with the following procedure. First boot
@@ -299,7 +299,7 @@ c. System hangups.
299 be worked around by specifying the `serialize' option when 299 be worked around by specifying the `serialize' option when
300 booting. Recent kernels should be able to detect the need for 300 booting. Recent kernels should be able to detect the need for
301 this automatically in most cases, but the detection is not 301 this automatically in most cases, but the detection is not
302 foolproof. See Documentation/ide.txt for more information 302 foolproof. See Documentation/ide/ide.txt for more information
303 about the `serialize' option and the CMD640B. 303 about the `serialize' option and the CMD640B.
304 304
305 - Note that many MS-DOS CDROM drivers will work with such buggy 305 - Note that many MS-DOS CDROM drivers will work with such buggy
diff --git a/Documentation/ide/00-INDEX b/Documentation/ide/00-INDEX
new file mode 100644
index 0000000000..d6b778842b
--- /dev/null
+++ b/Documentation/ide/00-INDEX
@@ -0,0 +1,12 @@
100-INDEX
2 - this file
3ChangeLog.ide-cd.1994-2004
4 - ide-cd changelog
5ChangeLog.ide-floppy.1996-2002
6 - ide-floppy changelog
7ChangeLog.ide-tape.1995-2002
8 - ide-tape changelog
9ide-tape.txt
10 - info on the IDE ATAPI streaming tape driver
11ide.txt
12 - important info for users of ATA devices (IDE/EIDE disks and CD-ROMS).
diff --git a/Documentation/ide.txt b/Documentation/ide/ide.txt
index bcd7cd1278..e3b3425328 100644
--- a/Documentation/ide.txt
+++ b/Documentation/ide/ide.txt
@@ -3,11 +3,11 @@
3 3
4============================================================================== 4==============================================================================
5 5
6 6
7 The hdparm utility can be used to control various IDE features on a 7 The hdparm utility can be used to control various IDE features on a
8 running system. It is packaged separately. Please Look for it on popular 8 running system. It is packaged separately. Please Look for it on popular
9 linux FTP sites. 9 linux FTP sites.
10 10
11 11
12 12
13*** IMPORTANT NOTICES: BUGGY IDE CHIPSETS CAN CORRUPT DATA!! 13*** IMPORTANT NOTICES: BUGGY IDE CHIPSETS CAN CORRUPT DATA!!
@@ -51,7 +51,7 @@ Common pitfalls:
51 51
52================================================================================ 52================================================================================
53 53
54This is the multiple IDE interface driver, as evolved from hd.c. 54This is the multiple IDE interface driver, as evolved from hd.c.
55 55
56It supports up to 9 IDE interfaces per default, on one or more IRQs (usually 56It supports up to 9 IDE interfaces per default, on one or more IRQs (usually
5714 & 15). There can be up to two drives per interface, as per the ATA-6 spec. 5714 & 15). There can be up to two drives per interface, as per the ATA-6 spec.
@@ -215,17 +215,17 @@ Summary of ide driver parameters for kernel command line
215-------------------------------------------------------- 215--------------------------------------------------------
216 216
217 "hdx=" is recognized for all "x" from "a" to "h", such as "hdc". 217 "hdx=" is recognized for all "x" from "a" to "h", such as "hdc".
218 218
219 "idex=" is recognized for all "x" from "0" to "3", such as "ide1". 219 "idex=" is recognized for all "x" from "0" to "3", such as "ide1".
220 220
221 "hdx=noprobe" : drive may be present, but do not probe for it 221 "hdx=noprobe" : drive may be present, but do not probe for it
222 222
223 "hdx=none" : drive is NOT present, ignore cmos and do not probe 223 "hdx=none" : drive is NOT present, ignore cmos and do not probe
224 224
225 "hdx=nowerr" : ignore the WRERR_STAT bit on this drive 225 "hdx=nowerr" : ignore the WRERR_STAT bit on this drive
226 226
227 "hdx=cdrom" : drive is present, and is a cdrom drive 227 "hdx=cdrom" : drive is present, and is a cdrom drive
228 228
229 "hdx=cyl,head,sect" : disk drive is present, with specified geometry 229 "hdx=cyl,head,sect" : disk drive is present, with specified geometry
230 230
231 "hdx=remap" : remap access of sector 0 to sector 1 (for EZDrive) 231 "hdx=remap" : remap access of sector 0 to sector 1 (for EZDrive)
@@ -261,7 +261,7 @@ Summary of ide driver parameters for kernel command line
261 "idex=base" : probe for an interface at the addr specified, 261 "idex=base" : probe for an interface at the addr specified,
262 where "base" is usually 0x1f0 or 0x170 262 where "base" is usually 0x1f0 or 0x170
263 and "ctl" is assumed to be "base"+0x206 263 and "ctl" is assumed to be "base"+0x206
264 264
265 "idex=base,ctl" : specify both base and ctl 265 "idex=base,ctl" : specify both base and ctl
266 266
267 "idex=base,ctl,irq" : specify base, ctl, and irq number 267 "idex=base,ctl,irq" : specify base, ctl, and irq number
@@ -272,7 +272,7 @@ Summary of ide driver parameters for kernel command line
272 to take effect. 272 to take effect.
273 273
274 "idex=four" : four drives on idex and ide(x^1) share same ports 274 "idex=four" : four drives on idex and ide(x^1) share same ports
275 275
276 "idex=reset" : reset interface after probe 276 "idex=reset" : reset interface after probe
277 277
278 "idex=ata66" : informs the interface that it has an 80c cable 278 "idex=ata66" : informs the interface that it has an 80c cable
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 9a5b6658c6..533e67febf 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -712,7 +712,7 @@ and is between 256 and 4096 characters. It is defined in the file
712 Format: <cyl>,<head>,<sect> 712 Format: <cyl>,<head>,<sect>
713 713
714 hd?= [HW] (E)IDE subsystem 714 hd?= [HW] (E)IDE subsystem
715 hd?lun= See Documentation/ide.txt. 715 hd?lun= See Documentation/ide/ide.txt.
716 716
717 highmem=nn[KMG] [KNL,BOOT] forces the highmem zone to have an exact 717 highmem=nn[KMG] [KNL,BOOT] forces the highmem zone to have an exact
718 size of <nn>. This works even on boxes that have no 718 size of <nn>. This works even on boxes that have no
@@ -766,14 +766,14 @@ and is between 256 and 4096 characters. It is defined in the file
766 766
767 ide= [HW] (E)IDE subsystem 767 ide= [HW] (E)IDE subsystem
768 Format: ide=nodma or ide=doubler or ide=reverse 768 Format: ide=nodma or ide=doubler or ide=reverse
769 See Documentation/ide.txt. 769 See Documentation/ide/ide.txt.
770 770
771 ide?= [HW] (E)IDE subsystem 771 ide?= [HW] (E)IDE subsystem
772 Format: ide?=noprobe or chipset specific parameters. 772 Format: ide?=noprobe or chipset specific parameters.
773 See Documentation/ide.txt. 773 See Documentation/ide/ide.txt.
774 774
775 idebus= [HW] (E)IDE subsystem - VLB/PCI bus speed 775 idebus= [HW] (E)IDE subsystem - VLB/PCI bus speed
776 See Documentation/ide.txt. 776 See Documentation/ide/ide.txt.
777 777
778 idle= [X86] 778 idle= [X86]
779 Format: idle=poll or idle=mwait 779 Format: idle=poll or idle=mwait
diff --git a/Documentation/pci.txt b/Documentation/pci.txt
index bb7bd27d46..d2c2e6e2b2 100644
--- a/Documentation/pci.txt
+++ b/Documentation/pci.txt
@@ -123,7 +123,7 @@ initialization with a pointer to a structure describing the driver
123 123
124 124
125The ID table is an array of struct pci_device_id entries ending with an 125The ID table is an array of struct pci_device_id entries ending with an
126all-zero entry; use of the macro DECLARE_PCI_DEVICE_TABLE is the preferred 126all-zero entry; use of the macro DEFINE_PCI_DEVICE_TABLE is the preferred
127method of declaring the table. Each entry consists of: 127method of declaring the table. Each entry consists of:
128 128
129 vendor,device Vendor and device ID to match (or PCI_ANY_ID) 129 vendor,device Vendor and device ID to match (or PCI_ANY_ID)
@@ -193,7 +193,7 @@ Tips on when/where to use the above attributes:
193 o Do not mark the struct pci_driver. 193 o Do not mark the struct pci_driver.
194 194
195 o The ID table array should be marked __devinitconst; this is done 195 o The ID table array should be marked __devinitconst; this is done
196 automatically if the table is declared with DECLARE_PCI_DEVICE_TABLE(). 196 automatically if the table is declared with DEFINE_PCI_DEVICE_TABLE().
197 197
198 o The probe() and remove() functions should be marked __devinit 198 o The probe() and remove() functions should be marked __devinit
199 and __devexit respectively. All initialization functions 199 and __devexit respectively. All initialization functions
diff --git a/Documentation/scheduler/sched-stats.txt b/Documentation/scheduler/sched-stats.txt
index 442e14d35d..01e69404ee 100644
--- a/Documentation/scheduler/sched-stats.txt
+++ b/Documentation/scheduler/sched-stats.txt
@@ -142,7 +142,7 @@ of idleness (idle, busy, and newly idle):
142 142
143/proc/<pid>/schedstat 143/proc/<pid>/schedstat
144---------------- 144----------------
145schedstats also adds a new /proc/<pid/schedstat file to include some of 145schedstats also adds a new /proc/<pid>/schedstat file to include some of
146the same information on a per-process level. There are three fields in 146the same information on a per-process level. There are three fields in
147this file correlating for that process to: 147this file correlating for that process to:
148 1) time spent on the cpu 148 1) time spent on the cpu
diff --git a/Documentation/vm/slub.txt b/Documentation/vm/slub.txt
index dcf8bcf846..7c13f22a0c 100644
--- a/Documentation/vm/slub.txt
+++ b/Documentation/vm/slub.txt
@@ -50,14 +50,14 @@ F.e. in order to boot just with sanity checks and red zoning one would specify:
50 50
51Trying to find an issue in the dentry cache? Try 51Trying to find an issue in the dentry cache? Try
52 52
53 slub_debug=,dentry_cache 53 slub_debug=,dentry
54 54
55to only enable debugging on the dentry cache. 55to only enable debugging on the dentry cache.
56 56
57Red zoning and tracking may realign the slab. We can just apply sanity checks 57Red zoning and tracking may realign the slab. We can just apply sanity checks
58to the dentry cache with 58to the dentry cache with
59 59
60 slub_debug=F,dentry_cache 60 slub_debug=F,dentry
61 61
62In case you forgot to enable debugging on the kernel command line: It is 62In case you forgot to enable debugging on the kernel command line: It is
63possible to enable debugging manually when the kernel is up. Look at the 63possible to enable debugging manually when the kernel is up. Look at the
diff --git a/Makefile b/Makefile
index ae78a31a9d..0eb23e5bfc 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
1VERSION = 2 1VERSION = 2
2PATCHLEVEL = 6 2PATCHLEVEL = 6
3SUBLEVEL = 25 3SUBLEVEL = 25
4EXTRAVERSION = -rc4 4EXTRAVERSION = -rc5
5NAME = Funky Weasel is Jiggy wit it 5NAME = Funky Weasel is Jiggy wit it
6 6
7# *DOCUMENTATION* 7# *DOCUMENTATION*
diff --git a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c
index be6fa105cd..e07a23fc5b 100644
--- a/arch/alpha/kernel/pci_iommu.c
+++ b/arch/alpha/kernel/pci_iommu.c
@@ -144,15 +144,14 @@ iommu_arena_find_pages(struct device *dev, struct pci_iommu_arena *arena,
144 unsigned long base; 144 unsigned long base;
145 unsigned long boundary_size; 145 unsigned long boundary_size;
146 146
147 BUG_ON(arena->dma_base & ~PAGE_MASK);
148 base = arena->dma_base >> PAGE_SHIFT; 147 base = arena->dma_base >> PAGE_SHIFT;
149 if (dev) 148 if (dev) {
150 boundary_size = ALIGN(dma_get_max_seg_size(dev) + 1, PAGE_SIZE) 149 boundary_size = dma_get_seg_boundary(dev) + 1;
151 >> PAGE_SHIFT; 150 BUG_ON(!is_power_of_2(boundary_size));
152 else 151 boundary_size >>= PAGE_SHIFT;
153 boundary_size = ALIGN(1UL << 32, PAGE_SIZE) >> PAGE_SHIFT; 152 } else {
154 153 boundary_size = 1UL << (32 - PAGE_SHIFT);
155 BUG_ON(!is_power_of_2(boundary_size)); 154 }
156 155
157 /* Search forward for the first mask-aligned sequence of N free ptes */ 156 /* Search forward for the first mask-aligned sequence of N free ptes */
158 ptes = arena->ptes; 157 ptes = arena->ptes;
diff --git a/arch/blackfin/kernel/fixed_code.S b/arch/blackfin/kernel/fixed_code.S
index 90262691b1..5ed47228a3 100644
--- a/arch/blackfin/kernel/fixed_code.S
+++ b/arch/blackfin/kernel/fixed_code.S
@@ -101,9 +101,9 @@ ENDPROC (_atomic_ior32)
101 101
102.align 16 102.align 16
103 /* 103 /*
104 * Atomic ior, 32 bit. 104 * Atomic and, 32 bit.
105 * Inputs: P0: memory address to use 105 * Inputs: P0: memory address to use
106 * R0: value to ior 106 * R0: value to and
107 * Outputs: R0: new contents of the memory address. 107 * Outputs: R0: new contents of the memory address.
108 * R1: previous contents of the memory address. 108 * R1: previous contents of the memory address.
109 */ 109 */
@@ -112,13 +112,13 @@ ENTRY(_atomic_and32)
112 R0 = R1 & R0; 112 R0 = R1 & R0;
113 [P0] = R0; 113 [P0] = R0;
114 rts; 114 rts;
115ENDPROC (_atomic_ior32) 115ENDPROC (_atomic_and32)
116 116
117.align 16 117.align 16
118 /* 118 /*
119 * Atomic ior, 32 bit. 119 * Atomic xor, 32 bit.
120 * Inputs: P0: memory address to use 120 * Inputs: P0: memory address to use
121 * R0: value to ior 121 * R0: value to xor
122 * Outputs: R0: new contents of the memory address. 122 * Outputs: R0: new contents of the memory address.
123 * R1: previous contents of the memory address. 123 * R1: previous contents of the memory address.
124 */ 124 */
@@ -127,7 +127,7 @@ ENTRY(_atomic_xor32)
127 R0 = R1 ^ R0; 127 R0 = R1 ^ R0;
128 [P0] = R0; 128 [P0] = R0;
129 rts; 129 rts;
130ENDPROC (_atomic_ior32) 130ENDPROC (_atomic_xor32)
131 131
132.align 16 132.align 16
133 /* 133 /*
diff --git a/arch/blackfin/mach-bf548/boards/ezkit.c b/arch/blackfin/mach-bf548/boards/ezkit.c
index a0950c1fd8..40846aa034 100644
--- a/arch/blackfin/mach-bf548/boards/ezkit.c
+++ b/arch/blackfin/mach-bf548/boards/ezkit.c
@@ -323,7 +323,7 @@ static struct platform_device bf5xx_nand_device = {
323}; 323};
324#endif 324#endif
325 325
326#if defined(CONFIG_SDH_BFIN) || defined(CONFIG_SDH_BFIN) 326#if defined(CONFIG_SDH_BFIN) || defined(CONFIG_SDH_BFIN_MODULE)
327static struct platform_device bf54x_sdh_device = { 327static struct platform_device bf54x_sdh_device = {
328 .name = "bfin-sdh", 328 .name = "bfin-sdh",
329 .id = 0, 329 .id = 0,
@@ -636,7 +636,7 @@ static struct platform_device *ezkit_devices[] __initdata = {
636 &bf5xx_nand_device, 636 &bf5xx_nand_device,
637#endif 637#endif
638 638
639#if defined(CONFIG_SDH_BFIN) || defined(CONFIG_SDH_BFIN) 639#if defined(CONFIG_SDH_BFIN) || defined(CONFIG_SDH_BFIN_MODULE)
640 &bf54x_sdh_device, 640 &bf54x_sdh_device,
641#endif 641#endif
642 642
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S
index 2cbb7a0bc3..cee54cebbc 100644
--- a/arch/blackfin/mach-common/entry.S
+++ b/arch/blackfin/mach-common/entry.S
@@ -1369,7 +1369,7 @@ ENTRY(_sys_call_table)
1369 .long _sys_epoll_pwait 1369 .long _sys_epoll_pwait
1370 .long _sys_utimensat 1370 .long _sys_utimensat
1371 .long _sys_signalfd 1371 .long _sys_signalfd
1372 .long _sys_ni_syscall 1372 .long _sys_timerfd_create
1373 .long _sys_eventfd /* 350 */ 1373 .long _sys_eventfd /* 350 */
1374 .long _sys_pread64 1374 .long _sys_pread64
1375 .long _sys_pwrite64 1375 .long _sys_pwrite64
@@ -1378,6 +1378,9 @@ ENTRY(_sys_call_table)
1378 .long _sys_get_robust_list /* 355 */ 1378 .long _sys_get_robust_list /* 355 */
1379 .long _sys_fallocate 1379 .long _sys_fallocate
1380 .long _sys_semtimedop 1380 .long _sys_semtimedop
1381 .long _sys_timerfd_settime
1382 .long _sys_timerfd_gettime
1383
1381 .rept NR_syscalls-(.-_sys_call_table)/4 1384 .rept NR_syscalls-(.-_sys_call_table)/4
1382 .long _sys_ni_syscall 1385 .long _sys_ni_syscall
1383 .endr 1386 .endr
diff --git a/arch/ia64/hp/common/hwsw_iommu.c b/arch/ia64/hp/common/hwsw_iommu.c
index 94e57109fa..8f6bcfe1da 100644
--- a/arch/ia64/hp/common/hwsw_iommu.c
+++ b/arch/ia64/hp/common/hwsw_iommu.c
@@ -71,7 +71,7 @@ hwsw_init (void)
71#ifdef CONFIG_IA64_GENERIC 71#ifdef CONFIG_IA64_GENERIC
72 /* Better to have normal DMA than panic */ 72 /* Better to have normal DMA than panic */
73 printk(KERN_WARNING "%s: Failed to initialize software I/O TLB," 73 printk(KERN_WARNING "%s: Failed to initialize software I/O TLB,"
74 " reverting to hpzx1 platform vector\n", __FUNCTION__); 74 " reverting to hpzx1 platform vector\n", __func__);
75 machvec_init("hpzx1"); 75 machvec_init("hpzx1");
76#else 76#else
77 panic("Unable to initialize software I/O TLB services"); 77 panic("Unable to initialize software I/O TLB services");
diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c
index a94445422c..523eae6d3e 100644
--- a/arch/ia64/hp/common/sba_iommu.c
+++ b/arch/ia64/hp/common/sba_iommu.c
@@ -529,7 +529,7 @@ sba_search_bitmap(struct ioc *ioc, unsigned long bits_wanted, int use_hint)
529 base_mask = RESMAP_MASK(bits_wanted); 529 base_mask = RESMAP_MASK(bits_wanted);
530 mask = base_mask << bitshiftcnt; 530 mask = base_mask << bitshiftcnt;
531 531
532 DBG_RES("%s() o %ld %p", __FUNCTION__, o, res_ptr); 532 DBG_RES("%s() o %ld %p", __func__, o, res_ptr);
533 for(; res_ptr < res_end ; res_ptr++) 533 for(; res_ptr < res_end ; res_ptr++)
534 { 534 {
535 DBG_RES(" %p %lx %lx\n", res_ptr, mask, *res_ptr); 535 DBG_RES(" %p %lx %lx\n", res_ptr, mask, *res_ptr);
@@ -679,7 +679,7 @@ sba_alloc_range(struct ioc *ioc, size_t size)
679#endif 679#endif
680 680
681 DBG_RES("%s(%x) %d -> %lx hint %x/%x\n", 681 DBG_RES("%s(%x) %d -> %lx hint %x/%x\n",
682 __FUNCTION__, size, pages_needed, pide, 682 __func__, size, pages_needed, pide,
683 (uint) ((unsigned long) ioc->res_hint - (unsigned long) ioc->res_map), 683 (uint) ((unsigned long) ioc->res_hint - (unsigned long) ioc->res_map),
684 ioc->res_bitshift ); 684 ioc->res_bitshift );
685 685
@@ -722,8 +722,8 @@ sba_free_range(struct ioc *ioc, dma_addr_t iova, size_t size)
722 m = RESMAP_MASK(bits_not_wanted) << (pide & (BITS_PER_LONG - 1)); 722 m = RESMAP_MASK(bits_not_wanted) << (pide & (BITS_PER_LONG - 1));
723 bits_not_wanted = 0; 723 bits_not_wanted = 0;
724 724
725 DBG_RES("%s( ,%x,%x) %x/%lx %x %p %lx\n", __FUNCTION__, (uint) iova, size, 725 DBG_RES("%s( ,%x,%x) %x/%lx %x %p %lx\n", __func__, (uint) iova, size,
726 bits_not_wanted, m, pide, res_ptr, *res_ptr); 726 bits_not_wanted, m, pide, res_ptr, *res_ptr);
727 727
728 ASSERT(m != 0); 728 ASSERT(m != 0);
729 ASSERT(bits_not_wanted); 729 ASSERT(bits_not_wanted);
@@ -940,8 +940,7 @@ sba_map_single(struct device *dev, void *addr, size_t size, int dir)
940 940
941 iovp = (dma_addr_t) pide << iovp_shift; 941 iovp = (dma_addr_t) pide << iovp_shift;
942 942
943 DBG_RUN("%s() 0x%p -> 0x%lx\n", 943 DBG_RUN("%s() 0x%p -> 0x%lx\n", __func__, addr, (long) iovp | offset);
944 __FUNCTION__, addr, (long) iovp | offset);
945 944
946 pdir_start = &(ioc->pdir_base[pide]); 945 pdir_start = &(ioc->pdir_base[pide]);
947 946
@@ -1029,8 +1028,7 @@ void sba_unmap_single(struct device *dev, dma_addr_t iova, size_t size, int dir)
1029#endif 1028#endif
1030 offset = iova & ~iovp_mask; 1029 offset = iova & ~iovp_mask;
1031 1030
1032 DBG_RUN("%s() iovp 0x%lx/%x\n", 1031 DBG_RUN("%s() iovp 0x%lx/%x\n", __func__, (long) iova, size);
1033 __FUNCTION__, (long) iova, size);
1034 1032
1035 iova ^= offset; /* clear offset bits */ 1033 iova ^= offset; /* clear offset bits */
1036 size += offset; 1034 size += offset;
@@ -1404,7 +1402,7 @@ int sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents, int di
1404 struct scatterlist *sg; 1402 struct scatterlist *sg;
1405#endif 1403#endif
1406 1404
1407 DBG_RUN_SG("%s() START %d entries\n", __FUNCTION__, nents); 1405 DBG_RUN_SG("%s() START %d entries\n", __func__, nents);
1408 ioc = GET_IOC(dev); 1406 ioc = GET_IOC(dev);
1409 ASSERT(ioc); 1407 ASSERT(ioc);
1410 1408
@@ -1468,7 +1466,7 @@ int sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents, int di
1468#endif 1466#endif
1469 1467
1470 ASSERT(coalesced == filled); 1468 ASSERT(coalesced == filled);
1471 DBG_RUN_SG("%s() DONE %d mappings\n", __FUNCTION__, filled); 1469 DBG_RUN_SG("%s() DONE %d mappings\n", __func__, filled);
1472 1470
1473 return filled; 1471 return filled;
1474} 1472}
@@ -1491,7 +1489,7 @@ void sba_unmap_sg (struct device *dev, struct scatterlist *sglist, int nents, in
1491#endif 1489#endif
1492 1490
1493 DBG_RUN_SG("%s() START %d entries, %p,%x\n", 1491 DBG_RUN_SG("%s() START %d entries, %p,%x\n",
1494 __FUNCTION__, nents, sba_sg_address(sglist), sglist->length); 1492 __func__, nents, sba_sg_address(sglist), sglist->length);
1495 1493
1496#ifdef ASSERT_PDIR_SANITY 1494#ifdef ASSERT_PDIR_SANITY
1497 ioc = GET_IOC(dev); 1495 ioc = GET_IOC(dev);
@@ -1509,7 +1507,7 @@ void sba_unmap_sg (struct device *dev, struct scatterlist *sglist, int nents, in
1509 nents--; 1507 nents--;
1510 } 1508 }
1511 1509
1512 DBG_RUN_SG("%s() DONE (nents %d)\n", __FUNCTION__, nents); 1510 DBG_RUN_SG("%s() DONE (nents %d)\n", __func__, nents);
1513 1511
1514#ifdef ASSERT_PDIR_SANITY 1512#ifdef ASSERT_PDIR_SANITY
1515 spin_lock_irqsave(&ioc->res_lock, flags); 1513 spin_lock_irqsave(&ioc->res_lock, flags);
@@ -1546,7 +1544,7 @@ ioc_iova_init(struct ioc *ioc)
1546 ioc->iov_size = ~ioc->imask + 1; 1544 ioc->iov_size = ~ioc->imask + 1;
1547 1545
1548 DBG_INIT("%s() hpa %p IOV base 0x%lx mask 0x%lx (%dMB)\n", 1546 DBG_INIT("%s() hpa %p IOV base 0x%lx mask 0x%lx (%dMB)\n",
1549 __FUNCTION__, ioc->ioc_hpa, ioc->ibase, ioc->imask, 1547 __func__, ioc->ioc_hpa, ioc->ibase, ioc->imask,
1550 ioc->iov_size >> 20); 1548 ioc->iov_size >> 20);
1551 1549
1552 switch (iovp_size) { 1550 switch (iovp_size) {
@@ -1569,7 +1567,7 @@ ioc_iova_init(struct ioc *ioc)
1569 1567
1570 memset(ioc->pdir_base, 0, ioc->pdir_size); 1568 memset(ioc->pdir_base, 0, ioc->pdir_size);
1571 1569
1572 DBG_INIT("%s() IOV page size %ldK pdir %p size %x\n", __FUNCTION__, 1570 DBG_INIT("%s() IOV page size %ldK pdir %p size %x\n", __func__,
1573 iovp_size >> 10, ioc->pdir_base, ioc->pdir_size); 1571 iovp_size >> 10, ioc->pdir_base, ioc->pdir_size);
1574 1572
1575 ASSERT(ALIGN((unsigned long) ioc->pdir_base, 4*1024) == (unsigned long) ioc->pdir_base); 1573 ASSERT(ALIGN((unsigned long) ioc->pdir_base, 4*1024) == (unsigned long) ioc->pdir_base);
@@ -1612,7 +1610,7 @@ ioc_iova_init(struct ioc *ioc)
1612 1610
1613 prefetch_spill_page = virt_to_phys(addr); 1611 prefetch_spill_page = virt_to_phys(addr);
1614 1612
1615 DBG_INIT("%s() prefetch spill addr: 0x%lx\n", __FUNCTION__, prefetch_spill_page); 1613 DBG_INIT("%s() prefetch spill addr: 0x%lx\n", __func__, prefetch_spill_page);
1616 } 1614 }
1617 /* 1615 /*
1618 ** Set all the PDIR entries valid w/ the spill page as the target 1616 ** Set all the PDIR entries valid w/ the spill page as the target
@@ -1641,7 +1639,7 @@ ioc_resource_init(struct ioc *ioc)
1641 /* resource map size dictated by pdir_size */ 1639 /* resource map size dictated by pdir_size */
1642 ioc->res_size = ioc->pdir_size / PDIR_ENTRY_SIZE; /* entries */ 1640 ioc->res_size = ioc->pdir_size / PDIR_ENTRY_SIZE; /* entries */
1643 ioc->res_size >>= 3; /* convert bit count to byte count */ 1641 ioc->res_size >>= 3; /* convert bit count to byte count */
1644 DBG_INIT("%s() res_size 0x%x\n", __FUNCTION__, ioc->res_size); 1642 DBG_INIT("%s() res_size 0x%x\n", __func__, ioc->res_size);
1645 1643
1646 ioc->res_map = (char *) __get_free_pages(GFP_KERNEL, 1644 ioc->res_map = (char *) __get_free_pages(GFP_KERNEL,
1647 get_order(ioc->res_size)); 1645 get_order(ioc->res_size));
@@ -1664,7 +1662,7 @@ ioc_resource_init(struct ioc *ioc)
1664 | prefetch_spill_page); 1662 | prefetch_spill_page);
1665#endif 1663#endif
1666 1664
1667 DBG_INIT("%s() res_map %x %p\n", __FUNCTION__, 1665 DBG_INIT("%s() res_map %x %p\n", __func__,
1668 ioc->res_size, (void *) ioc->res_map); 1666 ioc->res_size, (void *) ioc->res_map);
1669} 1667}
1670 1668
@@ -1767,7 +1765,7 @@ ioc_init(u64 hpa, void *handle)
1767 iovp_size = (1 << iovp_shift); 1765 iovp_size = (1 << iovp_shift);
1768 iovp_mask = ~(iovp_size - 1); 1766 iovp_mask = ~(iovp_size - 1);
1769 1767
1770 DBG_INIT("%s: PAGE_SIZE %ldK, iovp_size %ldK\n", __FUNCTION__, 1768 DBG_INIT("%s: PAGE_SIZE %ldK, iovp_size %ldK\n", __func__,
1771 PAGE_SIZE >> 10, iovp_size >> 10); 1769 PAGE_SIZE >> 10, iovp_size >> 10);
1772 1770
1773 if (!ioc->name) { 1771 if (!ioc->name) {
@@ -2137,7 +2135,7 @@ sba_page_override(char *str)
2137 break; 2135 break;
2138 default: 2136 default:
2139 printk("%s: unknown/unsupported iommu page size %ld\n", 2137 printk("%s: unknown/unsupported iommu page size %ld\n",
2140 __FUNCTION__, page_size); 2138 __func__, page_size);
2141 } 2139 }
2142 2140
2143 return 1; 2141 return 1;
diff --git a/arch/ia64/hp/sim/simeth.c b/arch/ia64/hp/sim/simeth.c
index 9898febf60..969fe9f443 100644
--- a/arch/ia64/hp/sim/simeth.c
+++ b/arch/ia64/hp/sim/simeth.c
@@ -222,7 +222,7 @@ simeth_probe1(void)
222 } 222 }
223 223
224 if ((rc = assign_irq_vector(AUTO_ASSIGN)) < 0) 224 if ((rc = assign_irq_vector(AUTO_ASSIGN)) < 0)
225 panic("%s: out of interrupt vectors!\n", __FUNCTION__); 225 panic("%s: out of interrupt vectors!\n", __func__);
226 dev->irq = rc; 226 dev->irq = rc;
227 227
228 /* 228 /*
diff --git a/arch/ia64/hp/sim/simserial.c b/arch/ia64/hp/sim/simserial.c
index ef252df50e..eb0c32a85f 100644
--- a/arch/ia64/hp/sim/simserial.c
+++ b/arch/ia64/hp/sim/simserial.c
@@ -1000,7 +1000,7 @@ simrs_init (void)
1000 if (!state->irq) { 1000 if (!state->irq) {
1001 if ((rc = assign_irq_vector(AUTO_ASSIGN)) < 0) 1001 if ((rc = assign_irq_vector(AUTO_ASSIGN)) < 0)
1002 panic("%s: out of interrupt vectors!\n", 1002 panic("%s: out of interrupt vectors!\n",
1003 __FUNCTION__); 1003 __func__);
1004 state->irq = rc; 1004 state->irq = rc;
1005 ia64_ssc_connect_irq(KEYBOARD_INTR, state->irq); 1005 ia64_ssc_connect_irq(KEYBOARD_INTR, state->irq);
1006 } 1006 }
diff --git a/arch/ia64/ia32/sys_ia32.c b/arch/ia64/ia32/sys_ia32.c
index d025a22eb2..b1bf51fe97 100644
--- a/arch/ia64/ia32/sys_ia32.c
+++ b/arch/ia64/ia32/sys_ia32.c
@@ -32,13 +32,8 @@
32#include <linux/shm.h> 32#include <linux/shm.h>
33#include <linux/slab.h> 33#include <linux/slab.h>
34#include <linux/uio.h> 34#include <linux/uio.h>
35#include <linux/nfs_fs.h> 35#include <linux/socket.h>
36#include <linux/quota.h> 36#include <linux/quota.h>
37#include <linux/sunrpc/svc.h>
38#include <linux/nfsd/nfsd.h>
39#include <linux/nfsd/cache.h>
40#include <linux/nfsd/xdr.h>
41#include <linux/nfsd/syscall.h>
42#include <linux/poll.h> 37#include <linux/poll.h>
43#include <linux/eventpoll.h> 38#include <linux/eventpoll.h>
44#include <linux/personality.h> 39#include <linux/personality.h>
diff --git a/arch/ia64/kernel/crash.c b/arch/ia64/kernel/crash.c
index f1cf2df97a..fbe742ad2f 100644
--- a/arch/ia64/kernel/crash.c
+++ b/arch/ia64/kernel/crash.c
@@ -155,7 +155,7 @@ kdump_init_notifier(struct notifier_block *self, unsigned long val, void *data)
155 if (val == DIE_INIT_MONARCH_LEAVE) 155 if (val == DIE_INIT_MONARCH_LEAVE)
156 ia64_mca_printk(KERN_NOTICE 156 ia64_mca_printk(KERN_NOTICE
157 "%s: kdump not configured\n", 157 "%s: kdump not configured\n",
158 __FUNCTION__); 158 __func__);
159 return NOTIFY_DONE; 159 return NOTIFY_DONE;
160 } 160 }
161 161
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index 919070a9ae..728d7247a1 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -379,8 +379,8 @@ efi_get_pal_addr (void)
379 * a dedicated ITR for the PAL code. 379 * a dedicated ITR for the PAL code.
380 */ 380 */
381 if ((vaddr & mask) == (KERNEL_START & mask)) { 381 if ((vaddr & mask) == (KERNEL_START & mask)) {
382 printk(KERN_INFO "%s: no need to install ITR for " 382 printk(KERN_INFO "%s: no need to install ITR for PAL code\n",
383 "PAL code\n", __FUNCTION__); 383 __func__);
384 continue; 384 continue;
385 } 385 }
386 386
@@ -399,7 +399,7 @@ efi_get_pal_addr (void)
399 return __va(md->phys_addr); 399 return __va(md->phys_addr);
400 } 400 }
401 printk(KERN_WARNING "%s: no PAL-code memory-descriptor found\n", 401 printk(KERN_WARNING "%s: no PAL-code memory-descriptor found\n",
402 __FUNCTION__); 402 __func__);
403 return NULL; 403 return NULL;
404} 404}
405 405
@@ -543,12 +543,30 @@ efi_init (void)
543 for (i = 0, p = efi_map_start; p < efi_map_end; 543 for (i = 0, p = efi_map_start; p < efi_map_end;
544 ++i, p += efi_desc_size) 544 ++i, p += efi_desc_size)
545 { 545 {
546 const char *unit;
547 unsigned long size;
548
546 md = p; 549 md = p;
547 printk("mem%02u: type=%u, attr=0x%lx, " 550 size = md->num_pages << EFI_PAGE_SHIFT;
548 "range=[0x%016lx-0x%016lx) (%luMB)\n", 551
552 if ((size >> 40) > 0) {
553 size >>= 40;
554 unit = "TB";
555 } else if ((size >> 30) > 0) {
556 size >>= 30;
557 unit = "GB";
558 } else if ((size >> 20) > 0) {
559 size >>= 20;
560 unit = "MB";
561 } else {
562 size >>= 10;
563 unit = "KB";
564 }
565
566 printk("mem%02d: type=%2u, attr=0x%016lx, "
567 "range=[0x%016lx-0x%016lx) (%4lu%s)\n",
549 i, md->type, md->attribute, md->phys_addr, 568 i, md->type, md->attribute, md->phys_addr,
550 md->phys_addr + efi_md_size(md), 569 md->phys_addr + efi_md_size(md), size, unit);
551 md->num_pages >> (20 - EFI_PAGE_SHIFT));
552 } 570 }
553 } 571 }
554#endif 572#endif
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c
index 7b3292282d..082c31dcfd 100644
--- a/arch/ia64/kernel/iosapic.c
+++ b/arch/ia64/kernel/iosapic.c
@@ -534,7 +534,7 @@ iosapic_reassign_vector (int irq)
534 if (iosapic_intr_info[irq].count) { 534 if (iosapic_intr_info[irq].count) {
535 new_irq = create_irq(); 535 new_irq = create_irq();
536 if (new_irq < 0) 536 if (new_irq < 0)
537 panic("%s: out of interrupt vectors!\n", __FUNCTION__); 537 panic("%s: out of interrupt vectors!\n", __func__);
538 printk(KERN_INFO "Reassigning vector %d to %d\n", 538 printk(KERN_INFO "Reassigning vector %d to %d\n",
539 irq_to_vector(irq), irq_to_vector(new_irq)); 539 irq_to_vector(irq), irq_to_vector(new_irq));
540 memcpy(&iosapic_intr_info[new_irq], &iosapic_intr_info[irq], 540 memcpy(&iosapic_intr_info[new_irq], &iosapic_intr_info[irq],
@@ -599,7 +599,7 @@ register_intr (unsigned int gsi, int irq, unsigned char delivery,
599 index = find_iosapic(gsi); 599 index = find_iosapic(gsi);
600 if (index < 0) { 600 if (index < 0) {
601 printk(KERN_WARNING "%s: No IOSAPIC for GSI %u\n", 601 printk(KERN_WARNING "%s: No IOSAPIC for GSI %u\n",
602 __FUNCTION__, gsi); 602 __func__, gsi);
603 return -ENODEV; 603 return -ENODEV;
604 } 604 }
605 605
@@ -608,7 +608,7 @@ register_intr (unsigned int gsi, int irq, unsigned char delivery,
608 rte = iosapic_alloc_rte(); 608 rte = iosapic_alloc_rte();
609 if (!rte) { 609 if (!rte) {
610 printk(KERN_WARNING "%s: cannot allocate memory\n", 610 printk(KERN_WARNING "%s: cannot allocate memory\n",
611 __FUNCTION__); 611 __func__);
612 return -ENOMEM; 612 return -ENOMEM;
613 } 613 }
614 614
@@ -625,7 +625,7 @@ register_intr (unsigned int gsi, int irq, unsigned char delivery,
625 (info->trigger != trigger || info->polarity != polarity)){ 625 (info->trigger != trigger || info->polarity != polarity)){
626 printk (KERN_WARNING 626 printk (KERN_WARNING
627 "%s: cannot override the interrupt\n", 627 "%s: cannot override the interrupt\n",
628 __FUNCTION__); 628 __func__);
629 return -EINVAL; 629 return -EINVAL;
630 } 630 }
631 rte->refcnt++; 631 rte->refcnt++;
@@ -647,7 +647,7 @@ register_intr (unsigned int gsi, int irq, unsigned char delivery,
647 if (idesc->chip != &no_irq_type) 647 if (idesc->chip != &no_irq_type)
648 printk(KERN_WARNING 648 printk(KERN_WARNING
649 "%s: changing vector %d from %s to %s\n", 649 "%s: changing vector %d from %s to %s\n",
650 __FUNCTION__, irq_to_vector(irq), 650 __func__, irq_to_vector(irq),
651 idesc->chip->name, irq_type->name); 651 idesc->chip->name, irq_type->name);
652 idesc->chip = irq_type; 652 idesc->chip = irq_type;
653 } 653 }
@@ -920,7 +920,7 @@ iosapic_register_platform_intr (u32 int_type, unsigned int gsi,
920 case ACPI_INTERRUPT_INIT: 920 case ACPI_INTERRUPT_INIT:
921 irq = create_irq(); 921 irq = create_irq();
922 if (irq < 0) 922 if (irq < 0)
923 panic("%s: out of interrupt vectors!\n", __FUNCTION__); 923 panic("%s: out of interrupt vectors!\n", __func__);
924 vector = irq_to_vector(irq); 924 vector = irq_to_vector(irq);
925 delivery = IOSAPIC_INIT; 925 delivery = IOSAPIC_INIT;
926 break; 926 break;
@@ -931,7 +931,7 @@ iosapic_register_platform_intr (u32 int_type, unsigned int gsi,
931 mask = 1; 931 mask = 1;
932 break; 932 break;
933 default: 933 default:
934 printk(KERN_ERR "%s: invalid int type 0x%x\n", __FUNCTION__, 934 printk(KERN_ERR "%s: invalid int type 0x%x\n", __func__,
935 int_type); 935 int_type);
936 return -1; 936 return -1;
937 } 937 }
@@ -996,7 +996,7 @@ iosapic_system_init (int system_pcat_compat)
996 */ 996 */
997 printk(KERN_INFO 997 printk(KERN_INFO
998 "%s: Disabling PC-AT compatible 8259 interrupts\n", 998 "%s: Disabling PC-AT compatible 8259 interrupts\n",
999 __FUNCTION__); 999 __func__);
1000 outb(0xff, 0xA1); 1000 outb(0xff, 0xA1);
1001 outb(0xff, 0x21); 1001 outb(0xff, 0x21);
1002 } 1002 }
@@ -1011,7 +1011,7 @@ iosapic_alloc (void)
1011 if (!iosapic_lists[index].addr) 1011 if (!iosapic_lists[index].addr)
1012 return index; 1012 return index;
1013 1013
1014 printk(KERN_WARNING "%s: failed to allocate iosapic\n", __FUNCTION__); 1014 printk(KERN_WARNING "%s: failed to allocate iosapic\n", __func__);
1015 return -1; 1015 return -1;
1016} 1016}
1017 1017
@@ -1109,14 +1109,14 @@ iosapic_remove (unsigned int gsi_base)
1109 index = find_iosapic(gsi_base); 1109 index = find_iosapic(gsi_base);
1110 if (index < 0) { 1110 if (index < 0) {
1111 printk(KERN_WARNING "%s: No IOSAPIC for GSI base %u\n", 1111 printk(KERN_WARNING "%s: No IOSAPIC for GSI base %u\n",
1112 __FUNCTION__, gsi_base); 1112 __func__, gsi_base);
1113 goto out; 1113 goto out;
1114 } 1114 }
1115 1115
1116 if (iosapic_lists[index].rtes_inuse) { 1116 if (iosapic_lists[index].rtes_inuse) {
1117 err = -EBUSY; 1117 err = -EBUSY;
1118 printk(KERN_WARNING "%s: IOSAPIC for GSI base %u is busy\n", 1118 printk(KERN_WARNING "%s: IOSAPIC for GSI base %u is busy\n",
1119 __FUNCTION__, gsi_base); 1119 __func__, gsi_base);
1120 goto out; 1120 goto out;
1121 } 1121 }
1122 1122
@@ -1137,7 +1137,7 @@ map_iosapic_to_node(unsigned int gsi_base, int node)
1137 index = find_iosapic(gsi_base); 1137 index = find_iosapic(gsi_base);
1138 if (index < 0) { 1138 if (index < 0) {
1139 printk(KERN_WARNING "%s: No IOSAPIC for GSI %u\n", 1139 printk(KERN_WARNING "%s: No IOSAPIC for GSI %u\n",
1140 __FUNCTION__, gsi_base); 1140 __func__, gsi_base);
1141 return; 1141 return;
1142 } 1142 }
1143 iosapic_lists[index].node = node; 1143 iosapic_lists[index].node = node;
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c
index 2b8cf6e85a..d8be23fbe6 100644
--- a/arch/ia64/kernel/irq_ia64.c
+++ b/arch/ia64/kernel/irq_ia64.c
@@ -507,7 +507,7 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs)
507 if (unlikely(irq < 0)) { 507 if (unlikely(irq < 0)) {
508 printk(KERN_ERR "%s: Unexpected interrupt " 508 printk(KERN_ERR "%s: Unexpected interrupt "
509 "vector %d on CPU %d is not mapped " 509 "vector %d on CPU %d is not mapped "
510 "to any IRQ!\n", __FUNCTION__, vector, 510 "to any IRQ!\n", __func__, vector,
511 smp_processor_id()); 511 smp_processor_id());
512 } else 512 } else
513 generic_handle_irq(irq); 513 generic_handle_irq(irq);
@@ -572,7 +572,7 @@ void ia64_process_pending_intr(void)
572 if (unlikely(irq < 0)) { 572 if (unlikely(irq < 0)) {
573 printk(KERN_ERR "%s: Unexpected interrupt " 573 printk(KERN_ERR "%s: Unexpected interrupt "
574 "vector %d on CPU %d not being mapped " 574 "vector %d on CPU %d not being mapped "
575 "to any IRQ!!\n", __FUNCTION__, vector, 575 "to any IRQ!!\n", __func__, vector,
576 smp_processor_id()); 576 smp_processor_id());
577 } else { 577 } else {
578 vectors_in_migration[irq]=0; 578 vectors_in_migration[irq]=0;
@@ -666,11 +666,7 @@ ia64_send_ipi (int cpu, int vector, int delivery_mode, int redirect)
666 unsigned long ipi_data; 666 unsigned long ipi_data;
667 unsigned long phys_cpu_id; 667 unsigned long phys_cpu_id;
668 668
669#ifdef CONFIG_SMP
670 phys_cpu_id = cpu_physical_id(cpu); 669 phys_cpu_id = cpu_physical_id(cpu);
671#else
672 phys_cpu_id = (ia64_getreg(_IA64_REG_CR_LID) >> 16) & 0xffff;
673#endif
674 670
675 /* 671 /*
676 * cpu number is in 8bit ID and 8bit EID 672 * cpu number is in 8bit ID and 8bit EID
diff --git a/arch/ia64/kernel/kprobes.c b/arch/ia64/kernel/kprobes.c
index 615c3d2b63..8d9a446a0d 100644
--- a/arch/ia64/kernel/kprobes.c
+++ b/arch/ia64/kernel/kprobes.c
@@ -838,7 +838,7 @@ out:
838 return 1; 838 return 1;
839} 839}
840 840
841int __kprobes kprobes_fault_handler(struct pt_regs *regs, int trapnr) 841int __kprobes kprobe_fault_handler(struct pt_regs *regs, int trapnr)
842{ 842{
843 struct kprobe *cur = kprobe_running(); 843 struct kprobe *cur = kprobe_running();
844 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); 844 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c
index 6e17aed531..6c18221dba 100644
--- a/arch/ia64/kernel/mca.c
+++ b/arch/ia64/kernel/mca.c
@@ -413,8 +413,8 @@ ia64_log_get(int sal_info_type, u8 **buffer, int irq_safe)
413 IA64_LOG_INDEX_INC(sal_info_type); 413 IA64_LOG_INDEX_INC(sal_info_type);
414 IA64_LOG_UNLOCK(sal_info_type); 414 IA64_LOG_UNLOCK(sal_info_type);
415 if (irq_safe) { 415 if (irq_safe) {
416 IA64_MCA_DEBUG("%s: SAL error record type %d retrieved. " 416 IA64_MCA_DEBUG("%s: SAL error record type %d retrieved. Record length = %ld\n",
417 "Record length = %ld\n", __FUNCTION__, sal_info_type, total_len); 417 __func__, sal_info_type, total_len);
418 } 418 }
419 *buffer = (u8 *) log_buffer; 419 *buffer = (u8 *) log_buffer;
420 return total_len; 420 return total_len;
@@ -518,7 +518,7 @@ ia64_mca_cpe_int_handler (int cpe_irq, void *arg)
518 static DEFINE_SPINLOCK(cpe_history_lock); 518 static DEFINE_SPINLOCK(cpe_history_lock);
519 519
520 IA64_MCA_DEBUG("%s: received interrupt vector = %#x on CPU %d\n", 520 IA64_MCA_DEBUG("%s: received interrupt vector = %#x on CPU %d\n",
521 __FUNCTION__, cpe_irq, smp_processor_id()); 521 __func__, cpe_irq, smp_processor_id());
522 522
523 /* SAL spec states this should run w/ interrupts enabled */ 523 /* SAL spec states this should run w/ interrupts enabled */
524 local_irq_enable(); 524 local_irq_enable();
@@ -594,7 +594,7 @@ ia64_mca_register_cpev (int cpev)
594 } 594 }
595 595
596 IA64_MCA_DEBUG("%s: corrected platform error " 596 IA64_MCA_DEBUG("%s: corrected platform error "
597 "vector %#x registered\n", __FUNCTION__, cpev); 597 "vector %#x registered\n", __func__, cpev);
598} 598}
599#endif /* CONFIG_ACPI */ 599#endif /* CONFIG_ACPI */
600 600
@@ -621,12 +621,11 @@ ia64_mca_cmc_vector_setup (void)
621 cmcv.cmcv_vector = IA64_CMC_VECTOR; 621 cmcv.cmcv_vector = IA64_CMC_VECTOR;
622 ia64_setreg(_IA64_REG_CR_CMCV, cmcv.cmcv_regval); 622 ia64_setreg(_IA64_REG_CR_CMCV, cmcv.cmcv_regval);
623 623
624 IA64_MCA_DEBUG("%s: CPU %d corrected " 624 IA64_MCA_DEBUG("%s: CPU %d corrected machine check vector %#x registered.\n",
625 "machine check vector %#x registered.\n", 625 __func__, smp_processor_id(), IA64_CMC_VECTOR);
626 __FUNCTION__, smp_processor_id(), IA64_CMC_VECTOR);
627 626
628 IA64_MCA_DEBUG("%s: CPU %d CMCV = %#016lx\n", 627 IA64_MCA_DEBUG("%s: CPU %d CMCV = %#016lx\n",
629 __FUNCTION__, smp_processor_id(), ia64_getreg(_IA64_REG_CR_CMCV)); 628 __func__, smp_processor_id(), ia64_getreg(_IA64_REG_CR_CMCV));
630} 629}
631 630
632/* 631/*
@@ -651,9 +650,8 @@ ia64_mca_cmc_vector_disable (void *dummy)
651 cmcv.cmcv_mask = 1; /* Mask/disable interrupt */ 650 cmcv.cmcv_mask = 1; /* Mask/disable interrupt */
652 ia64_setreg(_IA64_REG_CR_CMCV, cmcv.cmcv_regval); 651 ia64_setreg(_IA64_REG_CR_CMCV, cmcv.cmcv_regval);
653 652
654 IA64_MCA_DEBUG("%s: CPU %d corrected " 653 IA64_MCA_DEBUG("%s: CPU %d corrected machine check vector %#x disabled.\n",
655 "machine check vector %#x disabled.\n", 654 __func__, smp_processor_id(), cmcv.cmcv_vector);
656 __FUNCTION__, smp_processor_id(), cmcv.cmcv_vector);
657} 655}
658 656
659/* 657/*
@@ -678,9 +676,8 @@ ia64_mca_cmc_vector_enable (void *dummy)
678 cmcv.cmcv_mask = 0; /* Unmask/enable interrupt */ 676 cmcv.cmcv_mask = 0; /* Unmask/enable interrupt */
679 ia64_setreg(_IA64_REG_CR_CMCV, cmcv.cmcv_regval); 677 ia64_setreg(_IA64_REG_CR_CMCV, cmcv.cmcv_regval);
680 678
681 IA64_MCA_DEBUG("%s: CPU %d corrected " 679 IA64_MCA_DEBUG("%s: CPU %d corrected machine check vector %#x enabled.\n",
682 "machine check vector %#x enabled.\n", 680 __func__, smp_processor_id(), cmcv.cmcv_vector);
683 __FUNCTION__, smp_processor_id(), cmcv.cmcv_vector);
684} 681}
685 682
686/* 683/*
@@ -767,7 +764,7 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg)
767 local_irq_save(flags); 764 local_irq_save(flags);
768 if (notify_die(DIE_MCA_RENDZVOUS_ENTER, "MCA", get_irq_regs(), 765 if (notify_die(DIE_MCA_RENDZVOUS_ENTER, "MCA", get_irq_regs(),
769 (long)&nd, 0, 0) == NOTIFY_STOP) 766 (long)&nd, 0, 0) == NOTIFY_STOP)
770 ia64_mca_spin(__FUNCTION__); 767 ia64_mca_spin(__func__);
771 768
772 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_DONE; 769 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_DONE;
773 /* Register with the SAL monarch that the slave has 770 /* Register with the SAL monarch that the slave has
@@ -777,7 +774,7 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg)
777 774
778 if (notify_die(DIE_MCA_RENDZVOUS_PROCESS, "MCA", get_irq_regs(), 775 if (notify_die(DIE_MCA_RENDZVOUS_PROCESS, "MCA", get_irq_regs(),
779 (long)&nd, 0, 0) == NOTIFY_STOP) 776 (long)&nd, 0, 0) == NOTIFY_STOP)
780 ia64_mca_spin(__FUNCTION__); 777 ia64_mca_spin(__func__);
781 778
782 /* Wait for the monarch cpu to exit. */ 779 /* Wait for the monarch cpu to exit. */
783 while (monarch_cpu != -1) 780 while (monarch_cpu != -1)
@@ -785,7 +782,7 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg)
785 782
786 if (notify_die(DIE_MCA_RENDZVOUS_LEAVE, "MCA", get_irq_regs(), 783 if (notify_die(DIE_MCA_RENDZVOUS_LEAVE, "MCA", get_irq_regs(),
787 (long)&nd, 0, 0) == NOTIFY_STOP) 784 (long)&nd, 0, 0) == NOTIFY_STOP)
788 ia64_mca_spin(__FUNCTION__); 785 ia64_mca_spin(__func__);
789 786
790 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_NOTDONE; 787 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_NOTDONE;
791 /* Enable all interrupts */ 788 /* Enable all interrupts */
@@ -1230,7 +1227,7 @@ ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw,
1230 1227
1231 if (notify_die(DIE_MCA_MONARCH_ENTER, "MCA", regs, (long)&nd, 0, 0) 1228 if (notify_die(DIE_MCA_MONARCH_ENTER, "MCA", regs, (long)&nd, 0, 0)
1232 == NOTIFY_STOP) 1229 == NOTIFY_STOP)
1233 ia64_mca_spin(__FUNCTION__); 1230 ia64_mca_spin(__func__);
1234 1231
1235 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_CONCURRENT_MCA; 1232 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_CONCURRENT_MCA;
1236 if (sos->monarch) { 1233 if (sos->monarch) {
@@ -1246,7 +1243,7 @@ ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw,
1246 ia64_mca_wakeup_all(); 1243 ia64_mca_wakeup_all();
1247 if (notify_die(DIE_MCA_MONARCH_PROCESS, "MCA", regs, (long)&nd, 0, 0) 1244 if (notify_die(DIE_MCA_MONARCH_PROCESS, "MCA", regs, (long)&nd, 0, 0)
1248 == NOTIFY_STOP) 1245 == NOTIFY_STOP)
1249 ia64_mca_spin(__FUNCTION__); 1246 ia64_mca_spin(__func__);
1250 } else { 1247 } else {
1251 while (cpu_isset(cpu, mca_cpu)) 1248 while (cpu_isset(cpu, mca_cpu))
1252 cpu_relax(); /* spin until monarch wakes us */ 1249 cpu_relax(); /* spin until monarch wakes us */
@@ -1276,7 +1273,7 @@ ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw,
1276 } 1273 }
1277 if (notify_die(DIE_MCA_MONARCH_LEAVE, "MCA", regs, (long)&nd, 0, recover) 1274 if (notify_die(DIE_MCA_MONARCH_LEAVE, "MCA", regs, (long)&nd, 0, recover)
1278 == NOTIFY_STOP) 1275 == NOTIFY_STOP)
1279 ia64_mca_spin(__FUNCTION__); 1276 ia64_mca_spin(__func__);
1280 1277
1281 1278
1282 if (atomic_dec_return(&mca_count) > 0) { 1279 if (atomic_dec_return(&mca_count) > 0) {
@@ -1328,7 +1325,7 @@ ia64_mca_cmc_int_handler(int cmc_irq, void *arg)
1328 static DEFINE_SPINLOCK(cmc_history_lock); 1325 static DEFINE_SPINLOCK(cmc_history_lock);
1329 1326
1330 IA64_MCA_DEBUG("%s: received interrupt vector = %#x on CPU %d\n", 1327 IA64_MCA_DEBUG("%s: received interrupt vector = %#x on CPU %d\n",
1331 __FUNCTION__, cmc_irq, smp_processor_id()); 1328 __func__, cmc_irq, smp_processor_id());
1332 1329
1333 /* SAL spec states this should run w/ interrupts enabled */ 1330 /* SAL spec states this should run w/ interrupts enabled */
1334 local_irq_enable(); 1331 local_irq_enable();
@@ -1614,7 +1611,7 @@ ia64_init_handler(struct pt_regs *regs, struct switch_stack *sw,
1614 */ 1611 */
1615 if (!sos->monarch && atomic_add_return(1, &slaves) == num_online_cpus()) { 1612 if (!sos->monarch && atomic_add_return(1, &slaves) == num_online_cpus()) {
1616 mprintk(KERN_WARNING "%s: Promoting cpu %d to monarch.\n", 1613 mprintk(KERN_WARNING "%s: Promoting cpu %d to monarch.\n",
1617 __FUNCTION__, cpu); 1614 __func__, cpu);
1618 atomic_dec(&slaves); 1615 atomic_dec(&slaves);
1619 sos->monarch = 1; 1616 sos->monarch = 1;
1620 } 1617 }
@@ -1626,7 +1623,7 @@ ia64_init_handler(struct pt_regs *regs, struct switch_stack *sw,
1626 */ 1623 */
1627 if (sos->monarch && atomic_add_return(1, &monarchs) > 1) { 1624 if (sos->monarch && atomic_add_return(1, &monarchs) > 1) {
1628 mprintk(KERN_WARNING "%s: Demoting cpu %d to slave.\n", 1625 mprintk(KERN_WARNING "%s: Demoting cpu %d to slave.\n",
1629 __FUNCTION__, cpu); 1626 __func__, cpu);
1630 atomic_dec(&monarchs); 1627 atomic_dec(&monarchs);
1631 sos->monarch = 0; 1628 sos->monarch = 0;
1632 } 1629 }
@@ -1637,15 +1634,15 @@ ia64_init_handler(struct pt_regs *regs, struct switch_stack *sw,
1637 cpu_relax(); /* spin until monarch enters */ 1634 cpu_relax(); /* spin until monarch enters */
1638 if (notify_die(DIE_INIT_SLAVE_ENTER, "INIT", regs, (long)&nd, 0, 0) 1635 if (notify_die(DIE_INIT_SLAVE_ENTER, "INIT", regs, (long)&nd, 0, 0)
1639 == NOTIFY_STOP) 1636 == NOTIFY_STOP)
1640 ia64_mca_spin(__FUNCTION__); 1637 ia64_mca_spin(__func__);
1641 if (notify_die(DIE_INIT_SLAVE_PROCESS, "INIT", regs, (long)&nd, 0, 0) 1638 if (notify_die(DIE_INIT_SLAVE_PROCESS, "INIT", regs, (long)&nd, 0, 0)
1642 == NOTIFY_STOP) 1639 == NOTIFY_STOP)
1643 ia64_mca_spin(__FUNCTION__); 1640 ia64_mca_spin(__func__);
1644 while (monarch_cpu != -1) 1641 while (monarch_cpu != -1)
1645 cpu_relax(); /* spin until monarch leaves */ 1642 cpu_relax(); /* spin until monarch leaves */
1646 if (notify_die(DIE_INIT_SLAVE_LEAVE, "INIT", regs, (long)&nd, 0, 0) 1643 if (notify_die(DIE_INIT_SLAVE_LEAVE, "INIT", regs, (long)&nd, 0, 0)
1647 == NOTIFY_STOP) 1644 == NOTIFY_STOP)
1648 ia64_mca_spin(__FUNCTION__); 1645 ia64_mca_spin(__func__);
1649 mprintk("Slave on cpu %d returning to normal service.\n", cpu); 1646 mprintk("Slave on cpu %d returning to normal service.\n", cpu);
1650 set_curr_task(cpu, previous_current); 1647 set_curr_task(cpu, previous_current);
1651 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_NOTDONE; 1648 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_NOTDONE;
@@ -1656,7 +1653,7 @@ ia64_init_handler(struct pt_regs *regs, struct switch_stack *sw,
1656 monarch_cpu = cpu; 1653 monarch_cpu = cpu;
1657 if (notify_die(DIE_INIT_MONARCH_ENTER, "INIT", regs, (long)&nd, 0, 0) 1654 if (notify_die(DIE_INIT_MONARCH_ENTER, "INIT", regs, (long)&nd, 0, 0)
1658 == NOTIFY_STOP) 1655 == NOTIFY_STOP)
1659 ia64_mca_spin(__FUNCTION__); 1656 ia64_mca_spin(__func__);
1660 1657
1661 /* 1658 /*
1662 * Wait for a bit. On some machines (e.g., HP's zx2000 and zx6000, INIT can be 1659 * Wait for a bit. On some machines (e.g., HP's zx2000 and zx6000, INIT can be
@@ -1673,10 +1670,10 @@ ia64_init_handler(struct pt_regs *regs, struct switch_stack *sw,
1673 */ 1670 */
1674 if (notify_die(DIE_INIT_MONARCH_PROCESS, "INIT", regs, (long)&nd, 0, 0) 1671 if (notify_die(DIE_INIT_MONARCH_PROCESS, "INIT", regs, (long)&nd, 0, 0)
1675 == NOTIFY_STOP) 1672 == NOTIFY_STOP)
1676 ia64_mca_spin(__FUNCTION__); 1673 ia64_mca_spin(__func__);
1677 if (notify_die(DIE_INIT_MONARCH_LEAVE, "INIT", regs, (long)&nd, 0, 0) 1674 if (notify_die(DIE_INIT_MONARCH_LEAVE, "INIT", regs, (long)&nd, 0, 0)
1678 == NOTIFY_STOP) 1675 == NOTIFY_STOP)
1679 ia64_mca_spin(__FUNCTION__); 1676 ia64_mca_spin(__func__);
1680 mprintk("\nINIT dump complete. Monarch on cpu %d returning to normal service.\n", cpu); 1677 mprintk("\nINIT dump complete. Monarch on cpu %d returning to normal service.\n", cpu);
1681 atomic_dec(&monarchs); 1678 atomic_dec(&monarchs);
1682 set_curr_task(cpu, previous_current); 1679 set_curr_task(cpu, previous_current);
@@ -1884,7 +1881,7 @@ ia64_mca_init(void)
1884 .priority = 0/* we need to notified last */ 1881 .priority = 0/* we need to notified last */
1885 }; 1882 };
1886 1883
1887 IA64_MCA_DEBUG("%s: begin\n", __FUNCTION__); 1884 IA64_MCA_DEBUG("%s: begin\n", __func__);
1888 1885
1889 /* Clear the Rendez checkin flag for all cpus */ 1886 /* Clear the Rendez checkin flag for all cpus */
1890 for(i = 0 ; i < NR_CPUS; i++) 1887 for(i = 0 ; i < NR_CPUS; i++)
@@ -1928,7 +1925,7 @@ ia64_mca_init(void)
1928 return; 1925 return;
1929 } 1926 }
1930 1927
1931 IA64_MCA_DEBUG("%s: registered MCA rendezvous spinloop and wakeup mech.\n", __FUNCTION__); 1928 IA64_MCA_DEBUG("%s: registered MCA rendezvous spinloop and wakeup mech.\n", __func__);
1932 1929
1933 ia64_mc_info.imi_mca_handler = ia64_tpa(mca_hldlr_ptr->fp); 1930 ia64_mc_info.imi_mca_handler = ia64_tpa(mca_hldlr_ptr->fp);
1934 /* 1931 /*
@@ -1949,7 +1946,7 @@ ia64_mca_init(void)
1949 return; 1946 return;
1950 } 1947 }
1951 1948
1952 IA64_MCA_DEBUG("%s: registered OS MCA handler with SAL at 0x%lx, gp = 0x%lx\n", __FUNCTION__, 1949 IA64_MCA_DEBUG("%s: registered OS MCA handler with SAL at 0x%lx, gp = 0x%lx\n", __func__,
1953 ia64_mc_info.imi_mca_handler, ia64_tpa(mca_hldlr_ptr->gp)); 1950 ia64_mc_info.imi_mca_handler, ia64_tpa(mca_hldlr_ptr->gp));
1954 1951
1955 /* 1952 /*
@@ -1961,7 +1958,7 @@ ia64_mca_init(void)
1961 ia64_mc_info.imi_slave_init_handler = ia64_tpa(init_hldlr_ptr_slave->fp); 1958 ia64_mc_info.imi_slave_init_handler = ia64_tpa(init_hldlr_ptr_slave->fp);
1962 ia64_mc_info.imi_slave_init_handler_size = 0; 1959 ia64_mc_info.imi_slave_init_handler_size = 0;
1963 1960
1964 IA64_MCA_DEBUG("%s: OS INIT handler at %lx\n", __FUNCTION__, 1961 IA64_MCA_DEBUG("%s: OS INIT handler at %lx\n", __func__,
1965 ia64_mc_info.imi_monarch_init_handler); 1962 ia64_mc_info.imi_monarch_init_handler);
1966 1963
1967 /* Register the os init handler with SAL */ 1964 /* Register the os init handler with SAL */
@@ -1982,7 +1979,7 @@ ia64_mca_init(void)
1982 return; 1979 return;
1983 } 1980 }
1984 1981
1985 IA64_MCA_DEBUG("%s: registered OS INIT handler with SAL\n", __FUNCTION__); 1982 IA64_MCA_DEBUG("%s: registered OS INIT handler with SAL\n", __func__);
1986 1983
1987 /* 1984 /*
1988 * Configure the CMCI/P vector and handler. Interrupts for CMC are 1985 * Configure the CMCI/P vector and handler. Interrupts for CMC are
@@ -2042,7 +2039,7 @@ ia64_mca_late_init(void)
2042 cmc_polling_enabled = 0; 2039 cmc_polling_enabled = 0;
2043 schedule_work(&cmc_enable_work); 2040 schedule_work(&cmc_enable_work);
2044 2041
2045 IA64_MCA_DEBUG("%s: CMCI/P setup and enabled.\n", __FUNCTION__); 2042 IA64_MCA_DEBUG("%s: CMCI/P setup and enabled.\n", __func__);
2046 2043
2047#ifdef CONFIG_ACPI 2044#ifdef CONFIG_ACPI
2048 /* Setup the CPEI/P vector and handler */ 2045 /* Setup the CPEI/P vector and handler */
@@ -2065,17 +2062,17 @@ ia64_mca_late_init(void)
2065 ia64_cpe_irq = irq; 2062 ia64_cpe_irq = irq;
2066 ia64_mca_register_cpev(cpe_vector); 2063 ia64_mca_register_cpev(cpe_vector);
2067 IA64_MCA_DEBUG("%s: CPEI/P setup and enabled.\n", 2064 IA64_MCA_DEBUG("%s: CPEI/P setup and enabled.\n",
2068 __FUNCTION__); 2065 __func__);
2069 return 0; 2066 return 0;
2070 } 2067 }
2071 printk(KERN_ERR "%s: Failed to find irq for CPE " 2068 printk(KERN_ERR "%s: Failed to find irq for CPE "
2072 "interrupt handler, vector %d\n", 2069 "interrupt handler, vector %d\n",
2073 __FUNCTION__, cpe_vector); 2070 __func__, cpe_vector);
2074 } 2071 }
2075 /* If platform doesn't support CPEI, get the timer going. */ 2072 /* If platform doesn't support CPEI, get the timer going. */
2076 if (cpe_poll_enabled) { 2073 if (cpe_poll_enabled) {
2077 ia64_mca_cpe_poll(0UL); 2074 ia64_mca_cpe_poll(0UL);
2078 IA64_MCA_DEBUG("%s: CPEP setup and enabled.\n", __FUNCTION__); 2075 IA64_MCA_DEBUG("%s: CPEP setup and enabled.\n", __func__);
2079 } 2076 }
2080 } 2077 }
2081#endif 2078#endif
diff --git a/arch/ia64/kernel/module.c b/arch/ia64/kernel/module.c
index e58f4367cf..e83e2ea3b3 100644
--- a/arch/ia64/kernel/module.c
+++ b/arch/ia64/kernel/module.c
@@ -493,7 +493,7 @@ module_frob_arch_sections (Elf_Ehdr *ehdr, Elf_Shdr *sechdrs, char *secstrings,
493 mod->arch.opd->sh_addralign = 8; 493 mod->arch.opd->sh_addralign = 8;
494 mod->arch.opd->sh_size = fdescs * sizeof(struct fdesc); 494 mod->arch.opd->sh_size = fdescs * sizeof(struct fdesc);
495 DEBUGP("%s: core.plt=%lx, init.plt=%lx, got=%lx, fdesc=%lx\n", 495 DEBUGP("%s: core.plt=%lx, init.plt=%lx, got=%lx, fdesc=%lx\n",
496 __FUNCTION__, mod->arch.core_plt->sh_size, mod->arch.init_plt->sh_size, 496 __func__, mod->arch.core_plt->sh_size, mod->arch.init_plt->sh_size,
497 mod->arch.got->sh_size, mod->arch.opd->sh_size); 497 mod->arch.got->sh_size, mod->arch.opd->sh_size);
498 return 0; 498 return 0;
499} 499}
@@ -585,7 +585,7 @@ get_plt (struct module *mod, const struct insn *insn, uint64_t value, int *okp)
585#if ARCH_MODULE_DEBUG 585#if ARCH_MODULE_DEBUG
586 if (plt_target(plt) != target_ip) { 586 if (plt_target(plt) != target_ip) {
587 printk("%s: mistargeted PLT: wanted %lx, got %lx\n", 587 printk("%s: mistargeted PLT: wanted %lx, got %lx\n",
588 __FUNCTION__, target_ip, plt_target(plt)); 588 __func__, target_ip, plt_target(plt));
589 *okp = 0; 589 *okp = 0;
590 return 0; 590 return 0;
591 } 591 }
@@ -703,7 +703,7 @@ do_reloc (struct module *mod, uint8_t r_type, Elf64_Sym *sym, uint64_t addend,
703 if (r_type == R_IA64_PCREL21BI) { 703 if (r_type == R_IA64_PCREL21BI) {
704 if (!is_internal(mod, val)) { 704 if (!is_internal(mod, val)) {
705 printk(KERN_ERR "%s: %s reloc against non-local symbol (%lx)\n", 705 printk(KERN_ERR "%s: %s reloc against non-local symbol (%lx)\n",
706 __FUNCTION__, reloc_name[r_type], val); 706 __func__, reloc_name[r_type], val);
707 return -ENOEXEC; 707 return -ENOEXEC;
708 } 708 }
709 format = RF_INSN21B; 709 format = RF_INSN21B;
@@ -737,7 +737,7 @@ do_reloc (struct module *mod, uint8_t r_type, Elf64_Sym *sym, uint64_t addend,
737 case R_IA64_LDXMOV: 737 case R_IA64_LDXMOV:
738 if (gp_addressable(mod, val)) { 738 if (gp_addressable(mod, val)) {
739 /* turn "ld8" into "mov": */ 739 /* turn "ld8" into "mov": */
740 DEBUGP("%s: patching ld8 at %p to mov\n", __FUNCTION__, location); 740 DEBUGP("%s: patching ld8 at %p to mov\n", __func__, location);
741 ia64_patch((u64) location, 0x1fff80fe000UL, 0x10000000000UL); 741 ia64_patch((u64) location, 0x1fff80fe000UL, 0x10000000000UL);
742 } 742 }
743 return 0; 743 return 0;
@@ -771,7 +771,7 @@ do_reloc (struct module *mod, uint8_t r_type, Elf64_Sym *sym, uint64_t addend,
771 if (!ok) 771 if (!ok)
772 return -ENOEXEC; 772 return -ENOEXEC;
773 773
774 DEBUGP("%s: [%p]<-%016lx = %s(%lx)\n", __FUNCTION__, location, val, 774 DEBUGP("%s: [%p]<-%016lx = %s(%lx)\n", __func__, location, val,
775 reloc_name[r_type] ? reloc_name[r_type] : "?", sym->st_value + addend); 775 reloc_name[r_type] ? reloc_name[r_type] : "?", sym->st_value + addend);
776 776
777 switch (format) { 777 switch (format) {
@@ -807,7 +807,7 @@ apply_relocate_add (Elf64_Shdr *sechdrs, const char *strtab, unsigned int symind
807 Elf64_Shdr *target_sec; 807 Elf64_Shdr *target_sec;
808 int ret; 808 int ret;
809 809
810 DEBUGP("%s: applying section %u (%u relocs) to %u\n", __FUNCTION__, 810 DEBUGP("%s: applying section %u (%u relocs) to %u\n", __func__,
811 relsec, n, sechdrs[relsec].sh_info); 811 relsec, n, sechdrs[relsec].sh_info);
812 812
813 target_sec = sechdrs + sechdrs[relsec].sh_info; 813 target_sec = sechdrs + sechdrs[relsec].sh_info;
@@ -835,7 +835,7 @@ apply_relocate_add (Elf64_Shdr *sechdrs, const char *strtab, unsigned int symind
835 gp = mod->core_size / 2; 835 gp = mod->core_size / 2;
836 gp = (uint64_t) mod->module_core + ((gp + 7) & -8); 836 gp = (uint64_t) mod->module_core + ((gp + 7) & -8);
837 mod->arch.gp = gp; 837 mod->arch.gp = gp;
838 DEBUGP("%s: placing gp at 0x%lx\n", __FUNCTION__, gp); 838 DEBUGP("%s: placing gp at 0x%lx\n", __func__, gp);
839 } 839 }
840 840
841 for (i = 0; i < n; i++) { 841 for (i = 0; i < n; i++) {
@@ -903,7 +903,7 @@ register_unwind_table (struct module *mod)
903 init = start + num_core; 903 init = start + num_core;
904 } 904 }
905 905
906 DEBUGP("%s: name=%s, gp=%lx, num_init=%lu, num_core=%lu\n", __FUNCTION__, 906 DEBUGP("%s: name=%s, gp=%lx, num_init=%lu, num_core=%lu\n", __func__,
907 mod->name, mod->arch.gp, num_init, num_core); 907 mod->name, mod->arch.gp, num_init, num_core);
908 908
909 /* 909 /*
@@ -912,13 +912,13 @@ register_unwind_table (struct module *mod)
912 if (num_core > 0) { 912 if (num_core > 0) {
913 mod->arch.core_unw_table = unw_add_unwind_table(mod->name, 0, mod->arch.gp, 913 mod->arch.core_unw_table = unw_add_unwind_table(mod->name, 0, mod->arch.gp,
914 core, core + num_core); 914 core, core + num_core);
915 DEBUGP("%s: core: handle=%p [%p-%p)\n", __FUNCTION__, 915 DEBUGP("%s: core: handle=%p [%p-%p)\n", __func__,
916 mod->arch.core_unw_table, core, core + num_core); 916 mod->arch.core_unw_table, core, core + num_core);
917 } 917 }
918 if (num_init > 0) { 918 if (num_init > 0) {
919 mod->arch.init_unw_table = unw_add_unwind_table(mod->name, 0, mod->arch.gp, 919 mod->arch.init_unw_table = unw_add_unwind_table(mod->name, 0, mod->arch.gp,
920 init, init + num_init); 920 init, init + num_init);
921 DEBUGP("%s: init: handle=%p [%p-%p)\n", __FUNCTION__, 921 DEBUGP("%s: init: handle=%p [%p-%p)\n", __func__,
922 mod->arch.init_unw_table, init, init + num_init); 922 mod->arch.init_unw_table, init, init + num_init);
923 } 923 }
924} 924}
@@ -926,7 +926,7 @@ register_unwind_table (struct module *mod)
926int 926int
927module_finalize (const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, struct module *mod) 927module_finalize (const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, struct module *mod)
928{ 928{
929 DEBUGP("%s: init: entry=%p\n", __FUNCTION__, mod->init); 929 DEBUGP("%s: init: entry=%p\n", __func__, mod->init);
930 if (mod->arch.unwind) 930 if (mod->arch.unwind)
931 register_unwind_table(mod); 931 register_unwind_table(mod);
932 return 0; 932 return 0;
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c
index f6b99719f1..a2aabfdc80 100644
--- a/arch/ia64/kernel/perfmon.c
+++ b/arch/ia64/kernel/perfmon.c
@@ -227,12 +227,12 @@
227#ifdef PFM_DEBUGGING 227#ifdef PFM_DEBUGGING
228#define DPRINT(a) \ 228#define DPRINT(a) \
229 do { \ 229 do { \
230 if (unlikely(pfm_sysctl.debug >0)) { printk("%s.%d: CPU%d [%d] ", __FUNCTION__, __LINE__, smp_processor_id(), task_pid_nr(current)); printk a; } \ 230 if (unlikely(pfm_sysctl.debug >0)) { printk("%s.%d: CPU%d [%d] ", __func__, __LINE__, smp_processor_id(), task_pid_nr(current)); printk a; } \
231 } while (0) 231 } while (0)
232 232
233#define DPRINT_ovfl(a) \ 233#define DPRINT_ovfl(a) \
234 do { \ 234 do { \
235 if (unlikely(pfm_sysctl.debug > 0 && pfm_sysctl.debug_ovfl >0)) { printk("%s.%d: CPU%d [%d] ", __FUNCTION__, __LINE__, smp_processor_id(), task_pid_nr(current)); printk a; } \ 235 if (unlikely(pfm_sysctl.debug > 0 && pfm_sysctl.debug_ovfl >0)) { printk("%s.%d: CPU%d [%d] ", __func__, __LINE__, smp_processor_id(), task_pid_nr(current)); printk a; } \
236 } while (0) 236 } while (0)
237#endif 237#endif
238 238
diff --git a/arch/ia64/kernel/perfmon_default_smpl.c b/arch/ia64/kernel/perfmon_default_smpl.c
index a7af1cb419..5f637bbfcc 100644
--- a/arch/ia64/kernel/perfmon_default_smpl.c
+++ b/arch/ia64/kernel/perfmon_default_smpl.c
@@ -24,12 +24,12 @@ MODULE_LICENSE("GPL");
24#ifdef DEFAULT_DEBUG 24#ifdef DEFAULT_DEBUG
25#define DPRINT(a) \ 25#define DPRINT(a) \
26 do { \ 26 do { \
27 if (unlikely(pfm_sysctl.debug >0)) { printk("%s.%d: CPU%d ", __FUNCTION__, __LINE__, smp_processor_id()); printk a; } \ 27 if (unlikely(pfm_sysctl.debug >0)) { printk("%s.%d: CPU%d ", __func__, __LINE__, smp_processor_id()); printk a; } \
28 } while (0) 28 } while (0)
29 29
30#define DPRINT_ovfl(a) \ 30#define DPRINT_ovfl(a) \
31 do { \ 31 do { \
32 if (unlikely(pfm_sysctl.debug > 0 && pfm_sysctl.debug_ovfl >0)) { printk("%s.%d: CPU%d ", __FUNCTION__, __LINE__, smp_processor_id()); printk a; } \ 32 if (unlikely(pfm_sysctl.debug > 0 && pfm_sysctl.debug_ovfl >0)) { printk("%s.%d: CPU%d ", __func__, __LINE__, smp_processor_id()); printk a; } \
33 } while (0) 33 } while (0)
34 34
35#else 35#else
diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c
index 331d6768b5..ab784ec431 100644
--- a/arch/ia64/kernel/ptrace.c
+++ b/arch/ia64/kernel/ptrace.c
@@ -698,52 +698,6 @@ thread_matches (struct task_struct *thread, unsigned long addr)
698} 698}
699 699
700/* 700/*
701 * GDB apparently wants to be able to read the register-backing store
702 * of any thread when attached to a given process. If we are peeking
703 * or poking an address that happens to reside in the kernel-backing
704 * store of another thread, we need to attach to that thread, because
705 * otherwise we end up accessing stale data.
706 *
707 * task_list_lock must be read-locked before calling this routine!
708 */
709static struct task_struct *
710find_thread_for_addr (struct task_struct *child, unsigned long addr)
711{
712 struct task_struct *p;
713 struct mm_struct *mm;
714 struct list_head *this, *next;
715 int mm_users;
716
717 if (!(mm = get_task_mm(child)))
718 return child;
719
720 /* -1 because of our get_task_mm(): */
721 mm_users = atomic_read(&mm->mm_users) - 1;
722 if (mm_users <= 1)
723 goto out; /* not multi-threaded */
724
725 /*
726 * Traverse the current process' children list. Every task that
727 * one attaches to becomes a child. And it is only attached children
728 * of the debugger that are of interest (ptrace_check_attach checks
729 * for this).
730 */
731 list_for_each_safe(this, next, &current->children) {
732 p = list_entry(this, struct task_struct, sibling);
733 if (p->tgid != child->tgid)
734 continue;
735 if (thread_matches(p, addr)) {
736 child = p;
737 goto out;
738 }
739 }
740
741 out:
742 mmput(mm);
743 return child;
744}
745
746/*
747 * Write f32-f127 back to task->thread.fph if it has been modified. 701 * Write f32-f127 back to task->thread.fph if it has been modified.
748 */ 702 */
749inline void 703inline void
@@ -826,14 +780,14 @@ convert_to_non_syscall (struct task_struct *child, struct pt_regs *pt,
826 if ((long)((unsigned long)child + IA64_STK_OFFSET - sp) 780 if ((long)((unsigned long)child + IA64_STK_OFFSET - sp)
827 < IA64_PT_REGS_SIZE) { 781 < IA64_PT_REGS_SIZE) {
828 dprintk("ptrace.%s: ran off the top of the kernel " 782 dprintk("ptrace.%s: ran off the top of the kernel "
829 "stack\n", __FUNCTION__); 783 "stack\n", __func__);
830 return; 784 return;
831 } 785 }
832 if (unw_get_pr (&prev_info, &pr) < 0) { 786 if (unw_get_pr (&prev_info, &pr) < 0) {
833 unw_get_rp(&prev_info, &ip); 787 unw_get_rp(&prev_info, &ip);
834 dprintk("ptrace.%s: failed to read " 788 dprintk("ptrace.%s: failed to read "
835 "predicate register (ip=0x%lx)\n", 789 "predicate register (ip=0x%lx)\n",
836 __FUNCTION__, ip); 790 __func__, ip);
837 return; 791 return;
838 } 792 }
839 if (unw_is_intr_frame(&info) 793 if (unw_is_intr_frame(&info)
@@ -908,7 +862,7 @@ static int
908access_uarea (struct task_struct *child, unsigned long addr, 862access_uarea (struct task_struct *child, unsigned long addr,
909 unsigned long *data, int write_access) 863 unsigned long *data, int write_access)
910{ 864{
911 unsigned long *ptr, regnum, urbs_end, rnat_addr, cfm; 865 unsigned long *ptr, regnum, urbs_end, cfm;
912 struct switch_stack *sw; 866 struct switch_stack *sw;
913 struct pt_regs *pt; 867 struct pt_regs *pt;
914# define pt_reg_addr(pt, reg) ((void *) \ 868# define pt_reg_addr(pt, reg) ((void *) \
@@ -1011,14 +965,9 @@ access_uarea (struct task_struct *child, unsigned long addr,
1011 * the kernel was entered. 965 * the kernel was entered.
1012 * 966 *
1013 * Furthermore, when changing the contents of 967 * Furthermore, when changing the contents of
1014 * PT_AR_BSP (or PT_CFM) we MUST copy any 968 * PT_AR_BSP (or PT_CFM) while the task is
1015 * users-level stacked registers that are 969 * blocked in a system call, convert the state
1016 * stored on the kernel stack back to 970 * so that the non-system-call exit
1017 * user-space because otherwise, we might end
1018 * up clobbering kernel stacked registers.
1019 * Also, if this happens while the task is
1020 * blocked in a system call, which convert the
1021 * state such that the non-system-call exit
1022 * path is used. This ensures that the proper 971 * path is used. This ensures that the proper
1023 * state will be picked up when resuming 972 * state will be picked up when resuming
1024 * execution. However, it *also* means that 973 * execution. However, it *also* means that
@@ -1035,10 +984,6 @@ access_uarea (struct task_struct *child, unsigned long addr,
1035 urbs_end = ia64_get_user_rbs_end(child, pt, &cfm); 984 urbs_end = ia64_get_user_rbs_end(child, pt, &cfm);
1036 if (write_access) { 985 if (write_access) {
1037 if (*data != urbs_end) { 986 if (*data != urbs_end) {
1038 if (ia64_sync_user_rbs(child, sw,
1039 pt->ar_bspstore,
1040 urbs_end) < 0)
1041 return -1;
1042 if (in_syscall(pt)) 987 if (in_syscall(pt))
1043 convert_to_non_syscall(child, 988 convert_to_non_syscall(child,
1044 pt, 989 pt,
@@ -1058,10 +1003,6 @@ access_uarea (struct task_struct *child, unsigned long addr,
1058 urbs_end = ia64_get_user_rbs_end(child, pt, &cfm); 1003 urbs_end = ia64_get_user_rbs_end(child, pt, &cfm);
1059 if (write_access) { 1004 if (write_access) {
1060 if (((cfm ^ *data) & PFM_MASK) != 0) { 1005 if (((cfm ^ *data) & PFM_MASK) != 0) {
1061 if (ia64_sync_user_rbs(child, sw,
1062 pt->ar_bspstore,
1063 urbs_end) < 0)
1064 return -1;
1065 if (in_syscall(pt)) 1006 if (in_syscall(pt))
1066 convert_to_non_syscall(child, 1007 convert_to_non_syscall(child,
1067 pt, 1008 pt,
@@ -1093,16 +1034,8 @@ access_uarea (struct task_struct *child, unsigned long addr,
1093 return 0; 1034 return 0;
1094 1035
1095 case PT_AR_RNAT: 1036 case PT_AR_RNAT:
1096 urbs_end = ia64_get_user_rbs_end(child, pt, NULL); 1037 ptr = pt_reg_addr(pt, ar_rnat);
1097 rnat_addr = (long) ia64_rse_rnat_addr((long *) 1038 break;
1098 urbs_end);
1099 if (write_access)
1100 return ia64_poke(child, sw, urbs_end,
1101 rnat_addr, *data);
1102 else
1103 return ia64_peek(child, sw, urbs_end,
1104 rnat_addr, data);
1105
1106 case PT_R1: 1039 case PT_R1:
1107 ptr = pt_reg_addr(pt, r1); 1040 ptr = pt_reg_addr(pt, r1);
1108 break; 1041 break;
@@ -1521,215 +1454,97 @@ ptrace_setregs (struct task_struct *child, struct pt_all_user_regs __user *ppr)
1521 return ret; 1454 return ret;
1522} 1455}
1523 1456
1524/*
1525 * Called by kernel/ptrace.c when detaching..
1526 *
1527 * Make sure the single step bit is not set.
1528 */
1529void 1457void
1530ptrace_disable (struct task_struct *child) 1458user_enable_single_step (struct task_struct *child)
1531{ 1459{
1532 struct ia64_psr *child_psr = ia64_psr(task_pt_regs(child)); 1460 struct ia64_psr *child_psr = ia64_psr(task_pt_regs(child));
1533 1461
1534 /* make sure the single step/taken-branch trap bits are not set: */ 1462 set_tsk_thread_flag(child, TIF_SINGLESTEP);
1535 clear_tsk_thread_flag(child, TIF_SINGLESTEP); 1463 child_psr->ss = 1;
1536 child_psr->ss = 0;
1537 child_psr->tb = 0;
1538} 1464}
1539 1465
1540asmlinkage long 1466void
1541sys_ptrace (long request, pid_t pid, unsigned long addr, unsigned long data) 1467user_enable_block_step (struct task_struct *child)
1542{ 1468{
1543 struct pt_regs *pt; 1469 struct ia64_psr *child_psr = ia64_psr(task_pt_regs(child));
1544 unsigned long urbs_end, peek_or_poke;
1545 struct task_struct *child;
1546 struct switch_stack *sw;
1547 long ret;
1548 struct unw_frame_info info;
1549 1470
1550 lock_kernel(); 1471 set_tsk_thread_flag(child, TIF_SINGLESTEP);
1551 ret = -EPERM; 1472 child_psr->tb = 1;
1552 if (request == PTRACE_TRACEME) { 1473}
1553 ret = ptrace_traceme();
1554 goto out;
1555 }
1556 1474
1557 peek_or_poke = (request == PTRACE_PEEKTEXT 1475void
1558 || request == PTRACE_PEEKDATA 1476user_disable_single_step (struct task_struct *child)
1559 || request == PTRACE_POKETEXT 1477{
1560 || request == PTRACE_POKEDATA); 1478 struct ia64_psr *child_psr = ia64_psr(task_pt_regs(child));
1561 ret = -ESRCH;
1562 read_lock(&tasklist_lock);
1563 {
1564 child = find_task_by_pid(pid);
1565 if (child) {
1566 if (peek_or_poke)
1567 child = find_thread_for_addr(child, addr);
1568 get_task_struct(child);
1569 }
1570 }
1571 read_unlock(&tasklist_lock);
1572 if (!child)
1573 goto out;
1574 ret = -EPERM;
1575 if (pid == 1) /* no messing around with init! */
1576 goto out_tsk;
1577
1578 if (request == PTRACE_ATTACH) {
1579 ret = ptrace_attach(child);
1580 if (!ret)
1581 arch_ptrace_attach(child);
1582 goto out_tsk;
1583 }
1584 1479
1585 ret = ptrace_check_attach(child, request == PTRACE_KILL); 1480 /* make sure the single step/taken-branch trap bits are not set: */
1586 if (ret < 0) 1481 clear_tsk_thread_flag(child, TIF_SINGLESTEP);
1587 goto out_tsk; 1482 child_psr->ss = 0;
1483 child_psr->tb = 0;
1484}
1588 1485
1589 pt = task_pt_regs(child); 1486/*
1590 sw = (struct switch_stack *) (child->thread.ksp + 16); 1487 * Called by kernel/ptrace.c when detaching..
1488 *
1489 * Make sure the single step bit is not set.
1490 */
1491void
1492ptrace_disable (struct task_struct *child)
1493{
1494 user_disable_single_step(child);
1495}
1591 1496
1497long
1498arch_ptrace (struct task_struct *child, long request, long addr, long data)
1499{
1592 switch (request) { 1500 switch (request) {
1593 case PTRACE_PEEKTEXT: 1501 case PTRACE_PEEKTEXT:
1594 case PTRACE_PEEKDATA: 1502 case PTRACE_PEEKDATA:
1595 /* read word at location addr */ 1503 /* read word at location addr */
1596 urbs_end = ia64_get_user_rbs_end(child, pt, NULL); 1504 if (access_process_vm(child, addr, &data, sizeof(data), 0)
1597 ret = ia64_peek(child, sw, urbs_end, addr, &data); 1505 != sizeof(data))
1598 if (ret == 0) { 1506 return -EIO;
1599 ret = data; 1507 /* ensure return value is not mistaken for error code */
1600 /* ensure "ret" is not mistaken as an error code: */ 1508 force_successful_syscall_return();
1601 force_successful_syscall_return(); 1509 return data;
1602 }
1603 goto out_tsk;
1604
1605 case PTRACE_POKETEXT:
1606 case PTRACE_POKEDATA:
1607 /* write the word at location addr */
1608 urbs_end = ia64_get_user_rbs_end(child, pt, NULL);
1609 ret = ia64_poke(child, sw, urbs_end, addr, data);
1610
1611 /* Make sure user RBS has the latest data */
1612 unw_init_from_blocked_task(&info, child);
1613 do_sync_rbs(&info, ia64_sync_user_rbs);
1614 1510
1615 goto out_tsk; 1511 /* PTRACE_POKETEXT and PTRACE_POKEDATA is handled
1512 * by the generic ptrace_request().
1513 */
1616 1514
1617 case PTRACE_PEEKUSR: 1515 case PTRACE_PEEKUSR:
1618 /* read the word at addr in the USER area */ 1516 /* read the word at addr in the USER area */
1619 if (access_uarea(child, addr, &data, 0) < 0) { 1517 if (access_uarea(child, addr, &data, 0) < 0)
1620 ret = -EIO; 1518 return -EIO;
1621 goto out_tsk; 1519 /* ensure return value is not mistaken for error code */
1622 }
1623 ret = data;
1624 /* ensure "ret" is not mistaken as an error code */
1625 force_successful_syscall_return(); 1520 force_successful_syscall_return();
1626 goto out_tsk; 1521 return data;
1627 1522
1628 case PTRACE_POKEUSR: 1523 case PTRACE_POKEUSR:
1629 /* write the word at addr in the USER area */ 1524 /* write the word at addr in the USER area */
1630 if (access_uarea(child, addr, &data, 1) < 0) { 1525 if (access_uarea(child, addr, &data, 1) < 0)
1631 ret = -EIO; 1526 return -EIO;
1632 goto out_tsk; 1527 return 0;
1633 }
1634 ret = 0;
1635 goto out_tsk;
1636 1528
1637 case PTRACE_OLD_GETSIGINFO: 1529 case PTRACE_OLD_GETSIGINFO:
1638 /* for backwards-compatibility */ 1530 /* for backwards-compatibility */
1639 ret = ptrace_request(child, PTRACE_GETSIGINFO, addr, data); 1531 return ptrace_request(child, PTRACE_GETSIGINFO, addr, data);
1640 goto out_tsk;
1641 1532
1642 case PTRACE_OLD_SETSIGINFO: 1533 case PTRACE_OLD_SETSIGINFO:
1643 /* for backwards-compatibility */ 1534 /* for backwards-compatibility */
1644 ret = ptrace_request(child, PTRACE_SETSIGINFO, addr, data); 1535 return ptrace_request(child, PTRACE_SETSIGINFO, addr, data);
1645 goto out_tsk;
1646
1647 case PTRACE_SYSCALL:
1648 /* continue and stop at next (return from) syscall */
1649 case PTRACE_CONT:
1650 /* restart after signal. */
1651 ret = -EIO;
1652 if (!valid_signal(data))
1653 goto out_tsk;
1654 if (request == PTRACE_SYSCALL)
1655 set_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
1656 else
1657 clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
1658 child->exit_code = data;
1659 1536
1660 /* 1537 case PTRACE_GETREGS:
1661 * Make sure the single step/taken-branch trap bits 1538 return ptrace_getregs(child,
1662 * are not set: 1539 (struct pt_all_user_regs __user *) data);
1663 */
1664 clear_tsk_thread_flag(child, TIF_SINGLESTEP);
1665 ia64_psr(pt)->ss = 0;
1666 ia64_psr(pt)->tb = 0;
1667 1540
1668 wake_up_process(child); 1541 case PTRACE_SETREGS:
1669 ret = 0; 1542 return ptrace_setregs(child,
1670 goto out_tsk; 1543 (struct pt_all_user_regs __user *) data);
1671 1544
1672 case PTRACE_KILL: 1545 default:
1673 /* 1546 return ptrace_request(child, request, addr, data);
1674 * Make the child exit. Best I can do is send it a
1675 * sigkill. Perhaps it should be put in the status
1676 * that it wants to exit.
1677 */
1678 if (child->exit_state == EXIT_ZOMBIE)
1679 /* already dead */
1680 goto out_tsk;
1681 child->exit_code = SIGKILL;
1682
1683 ptrace_disable(child);
1684 wake_up_process(child);
1685 ret = 0;
1686 goto out_tsk;
1687
1688 case PTRACE_SINGLESTEP:
1689 /* let child execute for one instruction */
1690 case PTRACE_SINGLEBLOCK:
1691 ret = -EIO;
1692 if (!valid_signal(data))
1693 goto out_tsk;
1694
1695 clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
1696 set_tsk_thread_flag(child, TIF_SINGLESTEP);
1697 if (request == PTRACE_SINGLESTEP) {
1698 ia64_psr(pt)->ss = 1;
1699 } else {
1700 ia64_psr(pt)->tb = 1;
1701 }
1702 child->exit_code = data;
1703
1704 /* give it a chance to run. */
1705 wake_up_process(child);
1706 ret = 0;
1707 goto out_tsk;
1708
1709 case PTRACE_DETACH:
1710 /* detach a process that was attached. */
1711 ret = ptrace_detach(child, data);
1712 goto out_tsk;
1713
1714 case PTRACE_GETREGS:
1715 ret = ptrace_getregs(child,
1716 (struct pt_all_user_regs __user *) data);
1717 goto out_tsk;
1718
1719 case PTRACE_SETREGS:
1720 ret = ptrace_setregs(child,
1721 (struct pt_all_user_regs __user *) data);
1722 goto out_tsk;
1723
1724 default:
1725 ret = ptrace_request(child, request, addr, data);
1726 goto out_tsk;
1727 } 1547 }
1728 out_tsk:
1729 put_task_struct(child);
1730 out:
1731 unlock_kernel();
1732 return ret;
1733} 1548}
1734 1549
1735 1550
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index ebd1a09f32..4aa9eaea76 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -690,7 +690,7 @@ get_model_name(__u8 family, __u8 model)
690 if (overflow++ == 0) 690 if (overflow++ == 0)
691 printk(KERN_ERR 691 printk(KERN_ERR
692 "%s: Table overflow. Some processor model information will be missing\n", 692 "%s: Table overflow. Some processor model information will be missing\n",
693 __FUNCTION__); 693 __func__);
694 return "Unknown"; 694 return "Unknown";
695} 695}
696 696
@@ -785,7 +785,7 @@ get_max_cacheline_size (void)
785 status = ia64_pal_cache_summary(&levels, &unique_caches); 785 status = ia64_pal_cache_summary(&levels, &unique_caches);
786 if (status != 0) { 786 if (status != 0) {
787 printk(KERN_ERR "%s: ia64_pal_cache_summary() failed (status=%ld)\n", 787 printk(KERN_ERR "%s: ia64_pal_cache_summary() failed (status=%ld)\n",
788 __FUNCTION__, status); 788 __func__, status);
789 max = SMP_CACHE_BYTES; 789 max = SMP_CACHE_BYTES;
790 /* Safest setup for "flush_icache_range()" */ 790 /* Safest setup for "flush_icache_range()" */
791 ia64_i_cache_stride_shift = I_CACHE_STRIDE_SHIFT; 791 ia64_i_cache_stride_shift = I_CACHE_STRIDE_SHIFT;
@@ -798,7 +798,7 @@ get_max_cacheline_size (void)
798 if (status != 0) { 798 if (status != 0) {
799 printk(KERN_ERR 799 printk(KERN_ERR
800 "%s: ia64_pal_cache_config_info(l=%lu, 2) failed (status=%ld)\n", 800 "%s: ia64_pal_cache_config_info(l=%lu, 2) failed (status=%ld)\n",
801 __FUNCTION__, l, status); 801 __func__, l, status);
802 max = SMP_CACHE_BYTES; 802 max = SMP_CACHE_BYTES;
803 /* The safest setup for "flush_icache_range()" */ 803 /* The safest setup for "flush_icache_range()" */
804 cci.pcci_stride = I_CACHE_STRIDE_SHIFT; 804 cci.pcci_stride = I_CACHE_STRIDE_SHIFT;
@@ -814,7 +814,7 @@ get_max_cacheline_size (void)
814 if (status != 0) { 814 if (status != 0) {
815 printk(KERN_ERR 815 printk(KERN_ERR
816 "%s: ia64_pal_cache_config_info(l=%lu, 1) failed (status=%ld)\n", 816 "%s: ia64_pal_cache_config_info(l=%lu, 1) failed (status=%ld)\n",
817 __FUNCTION__, l, status); 817 __func__, l, status);
818 /* The safest setup for "flush_icache_range()" */ 818 /* The safest setup for "flush_icache_range()" */
819 cci.pcci_stride = I_CACHE_STRIDE_SHIFT; 819 cci.pcci_stride = I_CACHE_STRIDE_SHIFT;
820 } 820 }
diff --git a/arch/ia64/kernel/unaligned.c b/arch/ia64/kernel/unaligned.c
index 52f70bbc19..6903361d11 100644
--- a/arch/ia64/kernel/unaligned.c
+++ b/arch/ia64/kernel/unaligned.c
@@ -28,7 +28,7 @@ extern int die_if_kernel(char *str, struct pt_regs *regs, long err);
28#undef DEBUG_UNALIGNED_TRAP 28#undef DEBUG_UNALIGNED_TRAP
29 29
30#ifdef DEBUG_UNALIGNED_TRAP 30#ifdef DEBUG_UNALIGNED_TRAP
31# define DPRINT(a...) do { printk("%s %u: ", __FUNCTION__, __LINE__); printk (a); } while (0) 31# define DPRINT(a...) do { printk("%s %u: ", __func__, __LINE__); printk (a); } while (0)
32# define DDUMP(str,vp,len) dump(str, vp, len) 32# define DDUMP(str,vp,len) dump(str, vp, len)
33 33
34static void 34static void
@@ -674,7 +674,7 @@ emulate_load_updates (update_t type, load_store_t ld, struct pt_regs *regs, unsi
674 * just in case. 674 * just in case.
675 */ 675 */
676 if (ld.x6_op == 1 || ld.x6_op == 3) { 676 if (ld.x6_op == 1 || ld.x6_op == 3) {
677 printk(KERN_ERR "%s: register update on speculative load, error\n", __FUNCTION__); 677 printk(KERN_ERR "%s: register update on speculative load, error\n", __func__);
678 if (die_if_kernel("unaligned reference on speculative load with register update\n", 678 if (die_if_kernel("unaligned reference on speculative load with register update\n",
679 regs, 30)) 679 regs, 30))
680 return; 680 return;
@@ -1104,7 +1104,7 @@ emulate_load_floatpair (unsigned long ifa, load_store_t ld, struct pt_regs *regs
1104 */ 1104 */
1105 if (ld.x6_op == 1 || ld.x6_op == 3) 1105 if (ld.x6_op == 1 || ld.x6_op == 3)
1106 printk(KERN_ERR "%s: register update on speculative load pair, error\n", 1106 printk(KERN_ERR "%s: register update on speculative load pair, error\n",
1107 __FUNCTION__); 1107 __func__);
1108 1108
1109 setreg(ld.r3, ifa, 0, regs); 1109 setreg(ld.r3, ifa, 0, regs);
1110 } 1110 }
diff --git a/arch/ia64/kernel/unwind.c b/arch/ia64/kernel/unwind.c
index c1bdb51318..67810b77d9 100644
--- a/arch/ia64/kernel/unwind.c
+++ b/arch/ia64/kernel/unwind.c
@@ -257,7 +257,7 @@ pt_regs_off (unsigned long reg)
257 off = unw.pt_regs_offsets[reg]; 257 off = unw.pt_regs_offsets[reg];
258 258
259 if (off < 0) { 259 if (off < 0) {
260 UNW_DPRINT(0, "unwind.%s: bad scratch reg r%lu\n", __FUNCTION__, reg); 260 UNW_DPRINT(0, "unwind.%s: bad scratch reg r%lu\n", __func__, reg);
261 off = 0; 261 off = 0;
262 } 262 }
263 return (unsigned long) off; 263 return (unsigned long) off;
@@ -268,13 +268,13 @@ get_scratch_regs (struct unw_frame_info *info)
268{ 268{
269 if (!info->pt) { 269 if (!info->pt) {
270 /* This should not happen with valid unwind info. */ 270 /* This should not happen with valid unwind info. */
271 UNW_DPRINT(0, "unwind.%s: bad unwind info: resetting info->pt\n", __FUNCTION__); 271 UNW_DPRINT(0, "unwind.%s: bad unwind info: resetting info->pt\n", __func__);
272 if (info->flags & UNW_FLAG_INTERRUPT_FRAME) 272 if (info->flags & UNW_FLAG_INTERRUPT_FRAME)
273 info->pt = (unsigned long) ((struct pt_regs *) info->psp - 1); 273 info->pt = (unsigned long) ((struct pt_regs *) info->psp - 1);
274 else 274 else
275 info->pt = info->sp - 16; 275 info->pt = info->sp - 16;
276 } 276 }
277 UNW_DPRINT(3, "unwind.%s: sp 0x%lx pt 0x%lx\n", __FUNCTION__, info->sp, info->pt); 277 UNW_DPRINT(3, "unwind.%s: sp 0x%lx pt 0x%lx\n", __func__, info->sp, info->pt);
278 return (struct pt_regs *) info->pt; 278 return (struct pt_regs *) info->pt;
279} 279}
280 280
@@ -294,7 +294,7 @@ unw_access_gr (struct unw_frame_info *info, int regnum, unsigned long *val, char
294 return 0; 294 return 0;
295 } 295 }
296 UNW_DPRINT(0, "unwind.%s: trying to access non-existent r%u\n", 296 UNW_DPRINT(0, "unwind.%s: trying to access non-existent r%u\n",
297 __FUNCTION__, regnum); 297 __func__, regnum);
298 return -1; 298 return -1;
299 } 299 }
300 300
@@ -341,7 +341,7 @@ unw_access_gr (struct unw_frame_info *info, int regnum, unsigned long *val, char
341 { 341 {
342 UNW_DPRINT(0, "unwind.%s: %p outside of regstk " 342 UNW_DPRINT(0, "unwind.%s: %p outside of regstk "
343 "[0x%lx-0x%lx)\n", 343 "[0x%lx-0x%lx)\n",
344 __FUNCTION__, (void *) addr, 344 __func__, (void *) addr,
345 info->regstk.limit, 345 info->regstk.limit,
346 info->regstk.top); 346 info->regstk.top);
347 return -1; 347 return -1;
@@ -374,7 +374,7 @@ unw_access_gr (struct unw_frame_info *info, int regnum, unsigned long *val, char
374 || (unsigned long) addr >= info->regstk.top) 374 || (unsigned long) addr >= info->regstk.top)
375 { 375 {
376 UNW_DPRINT(0, "unwind.%s: ignoring attempt to access register outside " 376 UNW_DPRINT(0, "unwind.%s: ignoring attempt to access register outside "
377 "of rbs\n", __FUNCTION__); 377 "of rbs\n", __func__);
378 return -1; 378 return -1;
379 } 379 }
380 if ((unsigned long) nat_addr >= info->regstk.top) 380 if ((unsigned long) nat_addr >= info->regstk.top)
@@ -385,7 +385,7 @@ unw_access_gr (struct unw_frame_info *info, int regnum, unsigned long *val, char
385 if (write) { 385 if (write) {
386 if (read_only(addr)) { 386 if (read_only(addr)) {
387 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n", 387 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n",
388 __FUNCTION__); 388 __func__);
389 } else { 389 } else {
390 *addr = *val; 390 *addr = *val;
391 if (*nat) 391 if (*nat)
@@ -427,13 +427,13 @@ unw_access_br (struct unw_frame_info *info, int regnum, unsigned long *val, int
427 427
428 default: 428 default:
429 UNW_DPRINT(0, "unwind.%s: trying to access non-existent b%u\n", 429 UNW_DPRINT(0, "unwind.%s: trying to access non-existent b%u\n",
430 __FUNCTION__, regnum); 430 __func__, regnum);
431 return -1; 431 return -1;
432 } 432 }
433 if (write) 433 if (write)
434 if (read_only(addr)) { 434 if (read_only(addr)) {
435 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n", 435 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n",
436 __FUNCTION__); 436 __func__);
437 } else 437 } else
438 *addr = *val; 438 *addr = *val;
439 else 439 else
@@ -450,7 +450,7 @@ unw_access_fr (struct unw_frame_info *info, int regnum, struct ia64_fpreg *val,
450 450
451 if ((unsigned) (regnum - 2) >= 126) { 451 if ((unsigned) (regnum - 2) >= 126) {
452 UNW_DPRINT(0, "unwind.%s: trying to access non-existent f%u\n", 452 UNW_DPRINT(0, "unwind.%s: trying to access non-existent f%u\n",
453 __FUNCTION__, regnum); 453 __func__, regnum);
454 return -1; 454 return -1;
455 } 455 }
456 456
@@ -482,7 +482,7 @@ unw_access_fr (struct unw_frame_info *info, int regnum, struct ia64_fpreg *val,
482 if (write) 482 if (write)
483 if (read_only(addr)) { 483 if (read_only(addr)) {
484 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n", 484 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n",
485 __FUNCTION__); 485 __func__);
486 } else 486 } else
487 *addr = *val; 487 *addr = *val;
488 else 488 else
@@ -572,14 +572,14 @@ unw_access_ar (struct unw_frame_info *info, int regnum, unsigned long *val, int
572 572
573 default: 573 default:
574 UNW_DPRINT(0, "unwind.%s: trying to access non-existent ar%u\n", 574 UNW_DPRINT(0, "unwind.%s: trying to access non-existent ar%u\n",
575 __FUNCTION__, regnum); 575 __func__, regnum);
576 return -1; 576 return -1;
577 } 577 }
578 578
579 if (write) { 579 if (write) {
580 if (read_only(addr)) { 580 if (read_only(addr)) {
581 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n", 581 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n",
582 __FUNCTION__); 582 __func__);
583 } else 583 } else
584 *addr = *val; 584 *addr = *val;
585 } else 585 } else
@@ -600,7 +600,7 @@ unw_access_pr (struct unw_frame_info *info, unsigned long *val, int write)
600 if (write) { 600 if (write) {
601 if (read_only(addr)) { 601 if (read_only(addr)) {
602 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n", 602 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n",
603 __FUNCTION__); 603 __func__);
604 } else 604 } else
605 *addr = *val; 605 *addr = *val;
606 } else 606 } else
@@ -699,7 +699,7 @@ decode_abreg (unsigned char abreg, int memory)
699 default: 699 default:
700 break; 700 break;
701 } 701 }
702 UNW_DPRINT(0, "unwind.%s: bad abreg=0x%x\n", __FUNCTION__, abreg); 702 UNW_DPRINT(0, "unwind.%s: bad abreg=0x%x\n", __func__, abreg);
703 return UNW_REG_LC; 703 return UNW_REG_LC;
704} 704}
705 705
@@ -739,7 +739,7 @@ spill_next_when (struct unw_reg_info **regp, struct unw_reg_info *lim, unw_word
739 return; 739 return;
740 } 740 }
741 } 741 }
742 UNW_DPRINT(0, "unwind.%s: excess spill!\n", __FUNCTION__); 742 UNW_DPRINT(0, "unwind.%s: excess spill!\n", __func__);
743} 743}
744 744
745static inline void 745static inline void
@@ -855,11 +855,11 @@ desc_abi (unsigned char abi, unsigned char context, struct unw_state_record *sr)
855{ 855{
856 if (abi == 3 && context == 'i') { 856 if (abi == 3 && context == 'i') {
857 sr->flags |= UNW_FLAG_INTERRUPT_FRAME; 857 sr->flags |= UNW_FLAG_INTERRUPT_FRAME;
858 UNW_DPRINT(3, "unwind.%s: interrupt frame\n", __FUNCTION__); 858 UNW_DPRINT(3, "unwind.%s: interrupt frame\n", __func__);
859 } 859 }
860 else 860 else
861 UNW_DPRINT(0, "unwind%s: ignoring unwabi(abi=0x%x,context=0x%x)\n", 861 UNW_DPRINT(0, "unwind%s: ignoring unwabi(abi=0x%x,context=0x%x)\n",
862 __FUNCTION__, abi, context); 862 __func__, abi, context);
863} 863}
864 864
865static inline void 865static inline void
@@ -1347,7 +1347,7 @@ script_emit (struct unw_script *script, struct unw_insn insn)
1347{ 1347{
1348 if (script->count >= UNW_MAX_SCRIPT_LEN) { 1348 if (script->count >= UNW_MAX_SCRIPT_LEN) {
1349 UNW_DPRINT(0, "unwind.%s: script exceeds maximum size of %u instructions!\n", 1349 UNW_DPRINT(0, "unwind.%s: script exceeds maximum size of %u instructions!\n",
1350 __FUNCTION__, UNW_MAX_SCRIPT_LEN); 1350 __func__, UNW_MAX_SCRIPT_LEN);
1351 return; 1351 return;
1352 } 1352 }
1353 script->insn[script->count++] = insn; 1353 script->insn[script->count++] = insn;
@@ -1389,7 +1389,7 @@ emit_nat_info (struct unw_state_record *sr, int i, struct unw_script *script)
1389 1389
1390 default: 1390 default:
1391 UNW_DPRINT(0, "unwind.%s: don't know how to emit nat info for where = %u\n", 1391 UNW_DPRINT(0, "unwind.%s: don't know how to emit nat info for where = %u\n",
1392 __FUNCTION__, r->where); 1392 __func__, r->where);
1393 return; 1393 return;
1394 } 1394 }
1395 insn.opc = opc; 1395 insn.opc = opc;
@@ -1446,7 +1446,7 @@ compile_reg (struct unw_state_record *sr, int i, struct unw_script *script)
1446 val = offsetof(struct pt_regs, f6) + 16*(rval - 6); 1446 val = offsetof(struct pt_regs, f6) + 16*(rval - 6);
1447 else 1447 else
1448 UNW_DPRINT(0, "unwind.%s: kernel may not touch f%lu\n", 1448 UNW_DPRINT(0, "unwind.%s: kernel may not touch f%lu\n",
1449 __FUNCTION__, rval); 1449 __func__, rval);
1450 } 1450 }
1451 break; 1451 break;
1452 1452
@@ -1474,7 +1474,7 @@ compile_reg (struct unw_state_record *sr, int i, struct unw_script *script)
1474 1474
1475 default: 1475 default:
1476 UNW_DPRINT(0, "unwind%s: register %u has unexpected `where' value of %u\n", 1476 UNW_DPRINT(0, "unwind%s: register %u has unexpected `where' value of %u\n",
1477 __FUNCTION__, i, r->where); 1477 __func__, i, r->where);
1478 break; 1478 break;
1479 } 1479 }
1480 insn.opc = opc; 1480 insn.opc = opc;
@@ -1547,10 +1547,10 @@ build_script (struct unw_frame_info *info)
1547 r->when = UNW_WHEN_NEVER; 1547 r->when = UNW_WHEN_NEVER;
1548 sr.pr_val = info->pr; 1548 sr.pr_val = info->pr;
1549 1549
1550 UNW_DPRINT(3, "unwind.%s: ip 0x%lx\n", __FUNCTION__, ip); 1550 UNW_DPRINT(3, "unwind.%s: ip 0x%lx\n", __func__, ip);
1551 script = script_new(ip); 1551 script = script_new(ip);
1552 if (!script) { 1552 if (!script) {
1553 UNW_DPRINT(0, "unwind.%s: failed to create unwind script\n", __FUNCTION__); 1553 UNW_DPRINT(0, "unwind.%s: failed to create unwind script\n", __func__);
1554 STAT(unw.stat.script.build_time += ia64_get_itc() - start); 1554 STAT(unw.stat.script.build_time += ia64_get_itc() - start);
1555 return NULL; 1555 return NULL;
1556 } 1556 }
@@ -1569,7 +1569,7 @@ build_script (struct unw_frame_info *info)
1569 if (!e) { 1569 if (!e) {
1570 /* no info, return default unwinder (leaf proc, no mem stack, no saved regs) */ 1570 /* no info, return default unwinder (leaf proc, no mem stack, no saved regs) */
1571 UNW_DPRINT(1, "unwind.%s: no unwind info for ip=0x%lx (prev ip=0x%lx)\n", 1571 UNW_DPRINT(1, "unwind.%s: no unwind info for ip=0x%lx (prev ip=0x%lx)\n",
1572 __FUNCTION__, ip, unw.cache[info->prev_script].ip); 1572 __func__, ip, unw.cache[info->prev_script].ip);
1573 sr.curr.reg[UNW_REG_RP].where = UNW_WHERE_BR; 1573 sr.curr.reg[UNW_REG_RP].where = UNW_WHERE_BR;
1574 sr.curr.reg[UNW_REG_RP].when = -1; 1574 sr.curr.reg[UNW_REG_RP].when = -1;
1575 sr.curr.reg[UNW_REG_RP].val = 0; 1575 sr.curr.reg[UNW_REG_RP].val = 0;
@@ -1618,13 +1618,13 @@ build_script (struct unw_frame_info *info)
1618 sr.curr.reg[UNW_REG_RP].when = -1; 1618 sr.curr.reg[UNW_REG_RP].when = -1;
1619 sr.curr.reg[UNW_REG_RP].val = sr.return_link_reg; 1619 sr.curr.reg[UNW_REG_RP].val = sr.return_link_reg;
1620 UNW_DPRINT(1, "unwind.%s: using default for rp at ip=0x%lx where=%d val=0x%lx\n", 1620 UNW_DPRINT(1, "unwind.%s: using default for rp at ip=0x%lx where=%d val=0x%lx\n",
1621 __FUNCTION__, ip, sr.curr.reg[UNW_REG_RP].where, 1621 __func__, ip, sr.curr.reg[UNW_REG_RP].where,
1622 sr.curr.reg[UNW_REG_RP].val); 1622 sr.curr.reg[UNW_REG_RP].val);
1623 } 1623 }
1624 1624
1625#ifdef UNW_DEBUG 1625#ifdef UNW_DEBUG
1626 UNW_DPRINT(1, "unwind.%s: state record for func 0x%lx, t=%u:\n", 1626 UNW_DPRINT(1, "unwind.%s: state record for func 0x%lx, t=%u:\n",
1627 __FUNCTION__, table->segment_base + e->start_offset, sr.when_target); 1627 __func__, table->segment_base + e->start_offset, sr.when_target);
1628 for (r = sr.curr.reg; r < sr.curr.reg + UNW_NUM_REGS; ++r) { 1628 for (r = sr.curr.reg; r < sr.curr.reg + UNW_NUM_REGS; ++r) {
1629 if (r->where != UNW_WHERE_NONE || r->when != UNW_WHEN_NEVER) { 1629 if (r->where != UNW_WHERE_NONE || r->when != UNW_WHEN_NEVER) {
1630 UNW_DPRINT(1, " %s <- ", unw.preg_name[r - sr.curr.reg]); 1630 UNW_DPRINT(1, " %s <- ", unw.preg_name[r - sr.curr.reg]);
@@ -1746,7 +1746,7 @@ run_script (struct unw_script *script, struct unw_frame_info *state)
1746 } else { 1746 } else {
1747 s[dst] = 0; 1747 s[dst] = 0;
1748 UNW_DPRINT(0, "unwind.%s: no state->pt, dst=%ld, val=%ld\n", 1748 UNW_DPRINT(0, "unwind.%s: no state->pt, dst=%ld, val=%ld\n",
1749 __FUNCTION__, dst, val); 1749 __func__, dst, val);
1750 } 1750 }
1751 break; 1751 break;
1752 1752
@@ -1756,7 +1756,7 @@ run_script (struct unw_script *script, struct unw_frame_info *state)
1756 else { 1756 else {
1757 s[dst] = 0; 1757 s[dst] = 0;
1758 UNW_DPRINT(0, "unwind.%s: UNW_INSN_MOVE_CONST bad val=%ld\n", 1758 UNW_DPRINT(0, "unwind.%s: UNW_INSN_MOVE_CONST bad val=%ld\n",
1759 __FUNCTION__, val); 1759 __func__, val);
1760 } 1760 }
1761 break; 1761 break;
1762 1762
@@ -1791,7 +1791,7 @@ run_script (struct unw_script *script, struct unw_frame_info *state)
1791 || s[val] < TASK_SIZE) 1791 || s[val] < TASK_SIZE)
1792 { 1792 {
1793 UNW_DPRINT(0, "unwind.%s: rejecting bad psp=0x%lx\n", 1793 UNW_DPRINT(0, "unwind.%s: rejecting bad psp=0x%lx\n",
1794 __FUNCTION__, s[val]); 1794 __func__, s[val]);
1795 break; 1795 break;
1796 } 1796 }
1797#endif 1797#endif
@@ -1825,7 +1825,7 @@ find_save_locs (struct unw_frame_info *info)
1825 if ((info->ip & (local_cpu_data->unimpl_va_mask | 0xf)) || info->ip < TASK_SIZE) { 1825 if ((info->ip & (local_cpu_data->unimpl_va_mask | 0xf)) || info->ip < TASK_SIZE) {
1826 /* don't let obviously bad addresses pollute the cache */ 1826 /* don't let obviously bad addresses pollute the cache */
1827 /* FIXME: should really be level 0 but it occurs too often. KAO */ 1827 /* FIXME: should really be level 0 but it occurs too often. KAO */
1828 UNW_DPRINT(1, "unwind.%s: rejecting bad ip=0x%lx\n", __FUNCTION__, info->ip); 1828 UNW_DPRINT(1, "unwind.%s: rejecting bad ip=0x%lx\n", __func__, info->ip);
1829 info->rp_loc = NULL; 1829 info->rp_loc = NULL;
1830 return -1; 1830 return -1;
1831 } 1831 }
@@ -1838,7 +1838,7 @@ find_save_locs (struct unw_frame_info *info)
1838 spin_unlock_irqrestore(&unw.lock, flags); 1838 spin_unlock_irqrestore(&unw.lock, flags);
1839 UNW_DPRINT(0, 1839 UNW_DPRINT(0,
1840 "unwind.%s: failed to locate/build unwind script for ip %lx\n", 1840 "unwind.%s: failed to locate/build unwind script for ip %lx\n",
1841 __FUNCTION__, info->ip); 1841 __func__, info->ip);
1842 return -1; 1842 return -1;
1843 } 1843 }
1844 have_write_lock = 1; 1844 have_write_lock = 1;
@@ -1882,21 +1882,21 @@ unw_unwind (struct unw_frame_info *info)
1882 if (!unw_valid(info, info->rp_loc)) { 1882 if (!unw_valid(info, info->rp_loc)) {
1883 /* FIXME: should really be level 0 but it occurs too often. KAO */ 1883 /* FIXME: should really be level 0 but it occurs too often. KAO */
1884 UNW_DPRINT(1, "unwind.%s: failed to locate return link (ip=0x%lx)!\n", 1884 UNW_DPRINT(1, "unwind.%s: failed to locate return link (ip=0x%lx)!\n",
1885 __FUNCTION__, info->ip); 1885 __func__, info->ip);
1886 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); 1886 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags));
1887 return -1; 1887 return -1;
1888 } 1888 }
1889 /* restore the ip */ 1889 /* restore the ip */
1890 ip = info->ip = *info->rp_loc; 1890 ip = info->ip = *info->rp_loc;
1891 if (ip < GATE_ADDR) { 1891 if (ip < GATE_ADDR) {
1892 UNW_DPRINT(2, "unwind.%s: reached user-space (ip=0x%lx)\n", __FUNCTION__, ip); 1892 UNW_DPRINT(2, "unwind.%s: reached user-space (ip=0x%lx)\n", __func__, ip);
1893 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); 1893 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags));
1894 return -1; 1894 return -1;
1895 } 1895 }
1896 1896
1897 /* validate the previous stack frame pointer */ 1897 /* validate the previous stack frame pointer */
1898 if (!unw_valid(info, info->pfs_loc)) { 1898 if (!unw_valid(info, info->pfs_loc)) {
1899 UNW_DPRINT(0, "unwind.%s: failed to locate ar.pfs!\n", __FUNCTION__); 1899 UNW_DPRINT(0, "unwind.%s: failed to locate ar.pfs!\n", __func__);
1900 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); 1900 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags));
1901 return -1; 1901 return -1;
1902 } 1902 }
@@ -1912,13 +1912,13 @@ unw_unwind (struct unw_frame_info *info)
1912 num_regs = *info->cfm_loc & 0x7f; /* size of frame */ 1912 num_regs = *info->cfm_loc & 0x7f; /* size of frame */
1913 info->pfs_loc = 1913 info->pfs_loc =
1914 (unsigned long *) (info->pt + offsetof(struct pt_regs, ar_pfs)); 1914 (unsigned long *) (info->pt + offsetof(struct pt_regs, ar_pfs));
1915 UNW_DPRINT(3, "unwind.%s: interrupt_frame pt 0x%lx\n", __FUNCTION__, info->pt); 1915 UNW_DPRINT(3, "unwind.%s: interrupt_frame pt 0x%lx\n", __func__, info->pt);
1916 } else 1916 } else
1917 num_regs = (*info->cfm_loc >> 7) & 0x7f; /* size of locals */ 1917 num_regs = (*info->cfm_loc >> 7) & 0x7f; /* size of locals */
1918 info->bsp = (unsigned long) ia64_rse_skip_regs((unsigned long *) info->bsp, -num_regs); 1918 info->bsp = (unsigned long) ia64_rse_skip_regs((unsigned long *) info->bsp, -num_regs);
1919 if (info->bsp < info->regstk.limit || info->bsp > info->regstk.top) { 1919 if (info->bsp < info->regstk.limit || info->bsp > info->regstk.top) {
1920 UNW_DPRINT(0, "unwind.%s: bsp (0x%lx) out of range [0x%lx-0x%lx]\n", 1920 UNW_DPRINT(0, "unwind.%s: bsp (0x%lx) out of range [0x%lx-0x%lx]\n",
1921 __FUNCTION__, info->bsp, info->regstk.limit, info->regstk.top); 1921 __func__, info->bsp, info->regstk.limit, info->regstk.top);
1922 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); 1922 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags));
1923 return -1; 1923 return -1;
1924 } 1924 }
@@ -1927,14 +1927,14 @@ unw_unwind (struct unw_frame_info *info)
1927 info->sp = info->psp; 1927 info->sp = info->psp;
1928 if (info->sp < info->memstk.top || info->sp > info->memstk.limit) { 1928 if (info->sp < info->memstk.top || info->sp > info->memstk.limit) {
1929 UNW_DPRINT(0, "unwind.%s: sp (0x%lx) out of range [0x%lx-0x%lx]\n", 1929 UNW_DPRINT(0, "unwind.%s: sp (0x%lx) out of range [0x%lx-0x%lx]\n",
1930 __FUNCTION__, info->sp, info->memstk.top, info->memstk.limit); 1930 __func__, info->sp, info->memstk.top, info->memstk.limit);
1931 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); 1931 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags));
1932 return -1; 1932 return -1;
1933 } 1933 }
1934 1934
1935 if (info->ip == prev_ip && info->sp == prev_sp && info->bsp == prev_bsp) { 1935 if (info->ip == prev_ip && info->sp == prev_sp && info->bsp == prev_bsp) {
1936 UNW_DPRINT(0, "unwind.%s: ip, sp, bsp unchanged; stopping here (ip=0x%lx)\n", 1936 UNW_DPRINT(0, "unwind.%s: ip, sp, bsp unchanged; stopping here (ip=0x%lx)\n",
1937 __FUNCTION__, ip); 1937 __func__, ip);
1938 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); 1938 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags));
1939 return -1; 1939 return -1;
1940 } 1940 }
@@ -1961,7 +1961,7 @@ unw_unwind_to_user (struct unw_frame_info *info)
1961 if ((long)((unsigned long)info->task + IA64_STK_OFFSET - sp) 1961 if ((long)((unsigned long)info->task + IA64_STK_OFFSET - sp)
1962 < IA64_PT_REGS_SIZE) { 1962 < IA64_PT_REGS_SIZE) {
1963 UNW_DPRINT(0, "unwind.%s: ran off the top of the kernel stack\n", 1963 UNW_DPRINT(0, "unwind.%s: ran off the top of the kernel stack\n",
1964 __FUNCTION__); 1964 __func__);
1965 break; 1965 break;
1966 } 1966 }
1967 if (unw_is_intr_frame(info) && 1967 if (unw_is_intr_frame(info) &&
@@ -1971,13 +1971,13 @@ unw_unwind_to_user (struct unw_frame_info *info)
1971 unw_get_rp(info, &ip); 1971 unw_get_rp(info, &ip);
1972 UNW_DPRINT(0, "unwind.%s: failed to read " 1972 UNW_DPRINT(0, "unwind.%s: failed to read "
1973 "predicate register (ip=0x%lx)\n", 1973 "predicate register (ip=0x%lx)\n",
1974 __FUNCTION__, ip); 1974 __func__, ip);
1975 return -1; 1975 return -1;
1976 } 1976 }
1977 } while (unw_unwind(info) >= 0); 1977 } while (unw_unwind(info) >= 0);
1978 unw_get_ip(info, &ip); 1978 unw_get_ip(info, &ip);
1979 UNW_DPRINT(0, "unwind.%s: failed to unwind to user-level (ip=0x%lx)\n", 1979 UNW_DPRINT(0, "unwind.%s: failed to unwind to user-level (ip=0x%lx)\n",
1980 __FUNCTION__, ip); 1980 __func__, ip);
1981 return -1; 1981 return -1;
1982} 1982}
1983EXPORT_SYMBOL(unw_unwind_to_user); 1983EXPORT_SYMBOL(unw_unwind_to_user);
@@ -2028,7 +2028,7 @@ init_frame_info (struct unw_frame_info *info, struct task_struct *t,
2028 " pr 0x%lx\n" 2028 " pr 0x%lx\n"
2029 " sw 0x%lx\n" 2029 " sw 0x%lx\n"
2030 " sp 0x%lx\n", 2030 " sp 0x%lx\n",
2031 __FUNCTION__, (unsigned long) t, rbslimit, rbstop, stktop, stklimit, 2031 __func__, (unsigned long) t, rbslimit, rbstop, stktop, stklimit,
2032 info->pr, (unsigned long) info->sw, info->sp); 2032 info->pr, (unsigned long) info->sw, info->sp);
2033 STAT(unw.stat.api.init_time += ia64_get_itc() - start; local_irq_restore(flags)); 2033 STAT(unw.stat.api.init_time += ia64_get_itc() - start; local_irq_restore(flags));
2034} 2034}
@@ -2047,7 +2047,7 @@ unw_init_frame_info (struct unw_frame_info *info, struct task_struct *t, struct
2047 " bsp 0x%lx\n" 2047 " bsp 0x%lx\n"
2048 " sol 0x%lx\n" 2048 " sol 0x%lx\n"
2049 " ip 0x%lx\n", 2049 " ip 0x%lx\n",
2050 __FUNCTION__, info->bsp, sol, info->ip); 2050 __func__, info->bsp, sol, info->ip);
2051 find_save_locs(info); 2051 find_save_locs(info);
2052} 2052}
2053 2053
@@ -2058,7 +2058,7 @@ unw_init_from_blocked_task (struct unw_frame_info *info, struct task_struct *t)
2058{ 2058{
2059 struct switch_stack *sw = (struct switch_stack *) (t->thread.ksp + 16); 2059 struct switch_stack *sw = (struct switch_stack *) (t->thread.ksp + 16);
2060 2060
2061 UNW_DPRINT(1, "unwind.%s\n", __FUNCTION__); 2061 UNW_DPRINT(1, "unwind.%s\n", __func__);
2062 unw_init_frame_info(info, t, sw); 2062 unw_init_frame_info(info, t, sw);
2063} 2063}
2064EXPORT_SYMBOL(unw_init_from_blocked_task); 2064EXPORT_SYMBOL(unw_init_from_blocked_task);
@@ -2088,7 +2088,7 @@ unw_add_unwind_table (const char *name, unsigned long segment_base, unsigned lon
2088 2088
2089 if (end - start <= 0) { 2089 if (end - start <= 0) {
2090 UNW_DPRINT(0, "unwind.%s: ignoring attempt to insert empty unwind table\n", 2090 UNW_DPRINT(0, "unwind.%s: ignoring attempt to insert empty unwind table\n",
2091 __FUNCTION__); 2091 __func__);
2092 return NULL; 2092 return NULL;
2093 } 2093 }
2094 2094
@@ -2119,14 +2119,14 @@ unw_remove_unwind_table (void *handle)
2119 2119
2120 if (!handle) { 2120 if (!handle) {
2121 UNW_DPRINT(0, "unwind.%s: ignoring attempt to remove non-existent unwind table\n", 2121 UNW_DPRINT(0, "unwind.%s: ignoring attempt to remove non-existent unwind table\n",
2122 __FUNCTION__); 2122 __func__);
2123 return; 2123 return;
2124 } 2124 }
2125 2125
2126 table = handle; 2126 table = handle;
2127 if (table == &unw.kernel_table) { 2127 if (table == &unw.kernel_table) {
2128 UNW_DPRINT(0, "unwind.%s: sorry, freeing the kernel's unwind table is a " 2128 UNW_DPRINT(0, "unwind.%s: sorry, freeing the kernel's unwind table is a "
2129 "no-can-do!\n", __FUNCTION__); 2129 "no-can-do!\n", __func__);
2130 return; 2130 return;
2131 } 2131 }
2132 2132
@@ -2139,7 +2139,7 @@ unw_remove_unwind_table (void *handle)
2139 break; 2139 break;
2140 if (!prev) { 2140 if (!prev) {
2141 UNW_DPRINT(0, "unwind.%s: failed to find unwind table %p\n", 2141 UNW_DPRINT(0, "unwind.%s: failed to find unwind table %p\n",
2142 __FUNCTION__, (void *) table); 2142 __func__, (void *) table);
2143 spin_unlock_irqrestore(&unw.lock, flags); 2143 spin_unlock_irqrestore(&unw.lock, flags);
2144 return; 2144 return;
2145 } 2145 }
@@ -2185,7 +2185,7 @@ create_gate_table (void)
2185 } 2185 }
2186 2186
2187 if (!punw) { 2187 if (!punw) {
2188 printk("%s: failed to find gate DSO's unwind table!\n", __FUNCTION__); 2188 printk("%s: failed to find gate DSO's unwind table!\n", __func__);
2189 return 0; 2189 return 0;
2190 } 2190 }
2191 2191
@@ -2202,7 +2202,7 @@ create_gate_table (void)
2202 unw.gate_table = kmalloc(size, GFP_KERNEL); 2202 unw.gate_table = kmalloc(size, GFP_KERNEL);
2203 if (!unw.gate_table) { 2203 if (!unw.gate_table) {
2204 unw.gate_table_size = 0; 2204 unw.gate_table_size = 0;
2205 printk(KERN_ERR "%s: unable to create unwind data for gate page!\n", __FUNCTION__); 2205 printk(KERN_ERR "%s: unable to create unwind data for gate page!\n", __func__);
2206 return 0; 2206 return 0;
2207 } 2207 }
2208 unw.gate_table_size = size; 2208 unw.gate_table_size = size;
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
index 3e69881648..23088bed11 100644
--- a/arch/ia64/mm/fault.c
+++ b/arch/ia64/mm/fault.c
@@ -26,7 +26,7 @@ static inline int notify_page_fault(struct pt_regs *regs, int trap)
26 if (!user_mode(regs)) { 26 if (!user_mode(regs)) {
27 /* kprobe_running() needs smp_processor_id() */ 27 /* kprobe_running() needs smp_processor_id() */
28 preempt_disable(); 28 preempt_disable();
29 if (kprobe_running() && kprobes_fault_handler(regs, trap)) 29 if (kprobe_running() && kprobe_fault_handler(regs, trap))
30 ret = 1; 30 ret = 1;
31 preempt_enable(); 31 preempt_enable();
32 } 32 }
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
index 25aef6211a..a4ca657c72 100644
--- a/arch/ia64/mm/init.c
+++ b/arch/ia64/mm/init.c
@@ -714,7 +714,7 @@ int arch_add_memory(int nid, u64 start, u64 size)
714 714
715 if (ret) 715 if (ret)
716 printk("%s: Problem encountered in __add_pages() as ret=%d\n", 716 printk("%s: Problem encountered in __add_pages() as ret=%d\n",
717 __FUNCTION__, ret); 717 __func__, ret);
718 718
719 return ret; 719 return ret;
720} 720}
diff --git a/arch/ia64/pci/fixup.c b/arch/ia64/pci/fixup.c
index 245dc1fedc..f5959c0c18 100644
--- a/arch/ia64/pci/fixup.c
+++ b/arch/ia64/pci/fixup.c
@@ -63,7 +63,7 @@ static void __devinit pci_fixup_video(struct pci_dev *pdev)
63 pci_read_config_word(pdev, PCI_COMMAND, &config); 63 pci_read_config_word(pdev, PCI_COMMAND, &config);
64 if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) { 64 if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
65 pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW; 65 pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;
66 printk(KERN_DEBUG "Boot video device is %s\n", pci_name(pdev)); 66 dev_printk(KERN_DEBUG, &pdev->dev, "Boot video device\n");
67 } 67 }
68} 68}
69DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_video); 69DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_video);
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
index 8fd7e82519..e282c348dc 100644
--- a/arch/ia64/pci/pci.c
+++ b/arch/ia64/pci/pci.c
@@ -765,7 +765,7 @@ static void __init set_pci_cacheline_size(void)
765 status = ia64_pal_cache_summary(&levels, &unique_caches); 765 status = ia64_pal_cache_summary(&levels, &unique_caches);
766 if (status != 0) { 766 if (status != 0) {
767 printk(KERN_ERR "%s: ia64_pal_cache_summary() failed " 767 printk(KERN_ERR "%s: ia64_pal_cache_summary() failed "
768 "(status=%ld)\n", __FUNCTION__, status); 768 "(status=%ld)\n", __func__, status);
769 return; 769 return;
770 } 770 }
771 771
@@ -773,7 +773,7 @@ static void __init set_pci_cacheline_size(void)
773 /* cache_type (data_or_unified)= */ 2, &cci); 773 /* cache_type (data_or_unified)= */ 2, &cci);
774 if (status != 0) { 774 if (status != 0) {
775 printk(KERN_ERR "%s: ia64_pal_cache_config_info() failed " 775 printk(KERN_ERR "%s: ia64_pal_cache_config_info() failed "
776 "(status=%ld)\n", __FUNCTION__, status); 776 "(status=%ld)\n", __func__, status);
777 return; 777 return;
778 } 778 }
779 pci_cache_line_size = (1 << cci.pcci_line_size) / 4; 779 pci_cache_line_size = (1 << cci.pcci_line_size) / 4;
diff --git a/arch/ia64/sn/kernel/huberror.c b/arch/ia64/sn/kernel/huberror.c
index b663168da5..0101c7924a 100644
--- a/arch/ia64/sn/kernel/huberror.c
+++ b/arch/ia64/sn/kernel/huberror.c
@@ -37,7 +37,7 @@ static irqreturn_t hub_eint_handler(int irq, void *arg)
37 (u64) nasid, 0, 0, 0, 0, 0, 0); 37 (u64) nasid, 0, 0, 0, 0, 0, 0);
38 38
39 if ((int)ret_stuff.v0) 39 if ((int)ret_stuff.v0)
40 panic("%s: Fatal %s Error", __FUNCTION__, 40 panic("%s: Fatal %s Error", __func__,
41 ((nasid & 1) ? "TIO" : "HUBII")); 41 ((nasid & 1) ? "TIO" : "HUBII"));
42 42
43 if (!(nasid & 1)) /* Not a TIO, handle CRB errors */ 43 if (!(nasid & 1)) /* Not a TIO, handle CRB errors */
@@ -48,7 +48,7 @@ static irqreturn_t hub_eint_handler(int irq, void *arg)
48 (u64) nasid, 0, 0, 0, 0, 0, 0); 48 (u64) nasid, 0, 0, 0, 0, 0, 0);
49 49
50 if ((int)ret_stuff.v0) 50 if ((int)ret_stuff.v0)
51 panic("%s: Fatal TIO Error", __FUNCTION__); 51 panic("%s: Fatal TIO Error", __func__);
52 } else 52 } else
53 bte_error_handler((unsigned long)NODEPDA(nasid_to_cnodeid(nasid))); 53 bte_error_handler((unsigned long)NODEPDA(nasid_to_cnodeid(nasid)));
54 54
diff --git a/arch/ia64/sn/kernel/io_acpi_init.c b/arch/ia64/sn/kernel/io_acpi_init.c
index 3c7178f5dc..6568942a95 100644
--- a/arch/ia64/sn/kernel/io_acpi_init.c
+++ b/arch/ia64/sn/kernel/io_acpi_init.c
@@ -133,7 +133,7 @@ sn_get_bussoft_ptr(struct pci_bus *bus)
133 if (ACPI_FAILURE(status)) { 133 if (ACPI_FAILURE(status)) {
134 printk(KERN_ERR "%s: " 134 printk(KERN_ERR "%s: "
135 "acpi_get_vendor_resource() failed (0x%x) for: ", 135 "acpi_get_vendor_resource() failed (0x%x) for: ",
136 __FUNCTION__, status); 136 __func__, status);
137 acpi_ns_print_node_pathname(handle, NULL); 137 acpi_ns_print_node_pathname(handle, NULL);
138 printk("\n"); 138 printk("\n");
139 return NULL; 139 return NULL;
@@ -145,7 +145,7 @@ sn_get_bussoft_ptr(struct pci_bus *bus)
145 sizeof(struct pcibus_bussoft *)) { 145 sizeof(struct pcibus_bussoft *)) {
146 printk(KERN_ERR 146 printk(KERN_ERR
147 "%s: Invalid vendor data length %d\n", 147 "%s: Invalid vendor data length %d\n",
148 __FUNCTION__, vendor->byte_length); 148 __func__, vendor->byte_length);
149 kfree(buffer.pointer); 149 kfree(buffer.pointer);
150 return NULL; 150 return NULL;
151 } 151 }
@@ -184,7 +184,7 @@ sn_extract_device_info(acpi_handle handle, struct pcidev_info **pcidev_info,
184 if (ACPI_FAILURE(status)) { 184 if (ACPI_FAILURE(status)) {
185 printk(KERN_ERR 185 printk(KERN_ERR
186 "%s: acpi_get_vendor_resource() failed (0x%x) for: ", 186 "%s: acpi_get_vendor_resource() failed (0x%x) for: ",
187 __FUNCTION__, status); 187 __func__, status);
188 acpi_ns_print_node_pathname(handle, NULL); 188 acpi_ns_print_node_pathname(handle, NULL);
189 printk("\n"); 189 printk("\n");
190 return 1; 190 return 1;
@@ -196,7 +196,7 @@ sn_extract_device_info(acpi_handle handle, struct pcidev_info **pcidev_info,
196 sizeof(struct pci_devdev_info *)) { 196 sizeof(struct pci_devdev_info *)) {
197 printk(KERN_ERR 197 printk(KERN_ERR
198 "%s: Invalid vendor data length: %d for: ", 198 "%s: Invalid vendor data length: %d for: ",
199 __FUNCTION__, vendor->byte_length); 199 __func__, vendor->byte_length);
200 acpi_ns_print_node_pathname(handle, NULL); 200 acpi_ns_print_node_pathname(handle, NULL);
201 printk("\n"); 201 printk("\n");
202 ret = 1; 202 ret = 1;
@@ -205,7 +205,7 @@ sn_extract_device_info(acpi_handle handle, struct pcidev_info **pcidev_info,
205 205
206 pcidev_ptr = kzalloc(sizeof(struct pcidev_info), GFP_KERNEL); 206 pcidev_ptr = kzalloc(sizeof(struct pcidev_info), GFP_KERNEL);
207 if (!pcidev_ptr) 207 if (!pcidev_ptr)
208 panic("%s: Unable to alloc memory for pcidev_info", __FUNCTION__); 208 panic("%s: Unable to alloc memory for pcidev_info", __func__);
209 209
210 memcpy(&addr, vendor->byte_data, sizeof(struct pcidev_info *)); 210 memcpy(&addr, vendor->byte_data, sizeof(struct pcidev_info *));
211 pcidev_prom_ptr = __va(addr); 211 pcidev_prom_ptr = __va(addr);
@@ -214,7 +214,7 @@ sn_extract_device_info(acpi_handle handle, struct pcidev_info **pcidev_info,
214 /* Get the IRQ info */ 214 /* Get the IRQ info */
215 irq_info = kzalloc(sizeof(struct sn_irq_info), GFP_KERNEL); 215 irq_info = kzalloc(sizeof(struct sn_irq_info), GFP_KERNEL);
216 if (!irq_info) 216 if (!irq_info)
217 panic("%s: Unable to alloc memory for sn_irq_info", __FUNCTION__); 217 panic("%s: Unable to alloc memory for sn_irq_info", __func__);
218 218
219 if (pcidev_ptr->pdi_sn_irq_info) { 219 if (pcidev_ptr->pdi_sn_irq_info) {
220 irq_info_prom = __va(pcidev_ptr->pdi_sn_irq_info); 220 irq_info_prom = __va(pcidev_ptr->pdi_sn_irq_info);
@@ -249,10 +249,10 @@ get_host_devfn(acpi_handle device_handle, acpi_handle rootbus_handle)
249 status = acpi_get_parent(child, &parent); 249 status = acpi_get_parent(child, &parent);
250 if (ACPI_FAILURE(status)) { 250 if (ACPI_FAILURE(status)) {
251 printk(KERN_ERR "%s: acpi_get_parent() failed " 251 printk(KERN_ERR "%s: acpi_get_parent() failed "
252 "(0x%x) for: ", __FUNCTION__, status); 252 "(0x%x) for: ", __func__, status);
253 acpi_ns_print_node_pathname(child, NULL); 253 acpi_ns_print_node_pathname(child, NULL);
254 printk("\n"); 254 printk("\n");
255 panic("%s: Unable to find host devfn\n", __FUNCTION__); 255 panic("%s: Unable to find host devfn\n", __func__);
256 } 256 }
257 if (parent == rootbus_handle) 257 if (parent == rootbus_handle)
258 break; 258 break;
@@ -260,7 +260,7 @@ get_host_devfn(acpi_handle device_handle, acpi_handle rootbus_handle)
260 } 260 }
261 if (!child) { 261 if (!child) {
262 printk(KERN_ERR "%s: Unable to find root bus for: ", 262 printk(KERN_ERR "%s: Unable to find root bus for: ",
263 __FUNCTION__); 263 __func__);
264 acpi_ns_print_node_pathname(device_handle, NULL); 264 acpi_ns_print_node_pathname(device_handle, NULL);
265 printk("\n"); 265 printk("\n");
266 BUG(); 266 BUG();
@@ -269,10 +269,10 @@ get_host_devfn(acpi_handle device_handle, acpi_handle rootbus_handle)
269 status = acpi_evaluate_integer(child, METHOD_NAME__ADR, NULL, &adr); 269 status = acpi_evaluate_integer(child, METHOD_NAME__ADR, NULL, &adr);
270 if (ACPI_FAILURE(status)) { 270 if (ACPI_FAILURE(status)) {
271 printk(KERN_ERR "%s: Unable to get _ADR (0x%x) for: ", 271 printk(KERN_ERR "%s: Unable to get _ADR (0x%x) for: ",
272 __FUNCTION__, status); 272 __func__, status);
273 acpi_ns_print_node_pathname(child, NULL); 273 acpi_ns_print_node_pathname(child, NULL);
274 printk("\n"); 274 printk("\n");
275 panic("%s: Unable to find host devfn\n", __FUNCTION__); 275 panic("%s: Unable to find host devfn\n", __func__);
276 } 276 }
277 277
278 slot = (adr >> 16) & 0xffff; 278 slot = (adr >> 16) & 0xffff;
@@ -308,7 +308,7 @@ find_matching_device(acpi_handle handle, u32 lvl, void *context, void **rv)
308 if (ACPI_FAILURE(status)) { 308 if (ACPI_FAILURE(status)) {
309 printk(KERN_ERR 309 printk(KERN_ERR
310 "%s: acpi_get_parent() failed (0x%x) for: ", 310 "%s: acpi_get_parent() failed (0x%x) for: ",
311 __FUNCTION__, status); 311 __func__, status);
312 acpi_ns_print_node_pathname(handle, NULL); 312 acpi_ns_print_node_pathname(handle, NULL);
313 printk("\n"); 313 printk("\n");
314 return AE_OK; 314 return AE_OK;
@@ -318,7 +318,7 @@ find_matching_device(acpi_handle handle, u32 lvl, void *context, void **rv)
318 if (ACPI_FAILURE(status)) { 318 if (ACPI_FAILURE(status)) {
319 printk(KERN_ERR 319 printk(KERN_ERR
320 "%s: Failed to find _BBN in parent of: ", 320 "%s: Failed to find _BBN in parent of: ",
321 __FUNCTION__); 321 __func__);
322 acpi_ns_print_node_pathname(handle, NULL); 322 acpi_ns_print_node_pathname(handle, NULL);
323 printk("\n"); 323 printk("\n");
324 return AE_OK; 324 return AE_OK;
@@ -358,14 +358,14 @@ sn_acpi_get_pcidev_info(struct pci_dev *dev, struct pcidev_info **pcidev_info,
358 if (segment != pci_domain_nr(dev)) { 358 if (segment != pci_domain_nr(dev)) {
359 printk(KERN_ERR 359 printk(KERN_ERR
360 "%s: Segment number mismatch, 0x%lx vs 0x%x for: ", 360 "%s: Segment number mismatch, 0x%lx vs 0x%x for: ",
361 __FUNCTION__, segment, pci_domain_nr(dev)); 361 __func__, segment, pci_domain_nr(dev));
362 acpi_ns_print_node_pathname(rootbus_handle, NULL); 362 acpi_ns_print_node_pathname(rootbus_handle, NULL);
363 printk("\n"); 363 printk("\n");
364 return 1; 364 return 1;
365 } 365 }
366 } else { 366 } else {
367 printk(KERN_ERR "%s: Unable to get __SEG from: ", 367 printk(KERN_ERR "%s: Unable to get __SEG from: ",
368 __FUNCTION__); 368 __func__);
369 acpi_ns_print_node_pathname(rootbus_handle, NULL); 369 acpi_ns_print_node_pathname(rootbus_handle, NULL);
370 printk("\n"); 370 printk("\n");
371 return 1; 371 return 1;
@@ -386,7 +386,7 @@ sn_acpi_get_pcidev_info(struct pci_dev *dev, struct pcidev_info **pcidev_info,
386 if (!pcidev_match.handle) { 386 if (!pcidev_match.handle) {
387 printk(KERN_ERR 387 printk(KERN_ERR
388 "%s: Could not find matching ACPI device for %s.\n", 388 "%s: Could not find matching ACPI device for %s.\n",
389 __FUNCTION__, pci_name(dev)); 389 __func__, pci_name(dev));
390 return 1; 390 return 1;
391 } 391 }
392 392
@@ -422,7 +422,7 @@ sn_acpi_slot_fixup(struct pci_dev *dev)
422 422
423 if (sn_acpi_get_pcidev_info(dev, &pcidev_info, &sn_irq_info)) { 423 if (sn_acpi_get_pcidev_info(dev, &pcidev_info, &sn_irq_info)) {
424 panic("%s: Failure obtaining pcidev_info for %s\n", 424 panic("%s: Failure obtaining pcidev_info for %s\n",
425 __FUNCTION__, pci_name(dev)); 425 __func__, pci_name(dev));
426 } 426 }
427 427
428 if (pcidev_info->pdi_pio_mapped_addr[PCI_ROM_RESOURCE]) { 428 if (pcidev_info->pdi_pio_mapped_addr[PCI_ROM_RESOURCE]) {
@@ -463,7 +463,7 @@ sn_acpi_bus_fixup(struct pci_bus *bus)
463 printk(KERN_ERR 463 printk(KERN_ERR
464 "%s: 0x%04x:0x%02x Unable to " 464 "%s: 0x%04x:0x%02x Unable to "
465 "obtain prom_bussoft_ptr\n", 465 "obtain prom_bussoft_ptr\n",
466 __FUNCTION__, pci_domain_nr(bus), bus->number); 466 __func__, pci_domain_nr(bus), bus->number);
467 return; 467 return;
468 } 468 }
469 sn_common_bus_fixup(bus, prom_bussoft_ptr); 469 sn_common_bus_fixup(bus, prom_bussoft_ptr);
diff --git a/arch/ia64/sn/kernel/io_common.c b/arch/ia64/sn/kernel/io_common.c
index c4eb84f9e7..8a924a5661 100644
--- a/arch/ia64/sn/kernel/io_common.c
+++ b/arch/ia64/sn/kernel/io_common.c
@@ -364,7 +364,7 @@ void sn_bus_store_sysdata(struct pci_dev *dev)
364 364
365 element = kzalloc(sizeof(struct sysdata_el), GFP_KERNEL); 365 element = kzalloc(sizeof(struct sysdata_el), GFP_KERNEL);
366 if (!element) { 366 if (!element) {
367 dev_dbg(&dev->dev, "%s: out of memory!\n", __FUNCTION__); 367 dev_dbg(&dev->dev, "%s: out of memory!\n", __func__);
368 return; 368 return;
369 } 369 }
370 element->sysdata = SN_PCIDEV_INFO(dev); 370 element->sysdata = SN_PCIDEV_INFO(dev);
diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c
index 906b93674b..c3aa851d1c 100644
--- a/arch/ia64/sn/kernel/io_init.c
+++ b/arch/ia64/sn/kernel/io_init.c
@@ -209,11 +209,11 @@ sn_io_slot_fixup(struct pci_dev *dev)
209 209
210 pcidev_info = kzalloc(sizeof(struct pcidev_info), GFP_KERNEL); 210 pcidev_info = kzalloc(sizeof(struct pcidev_info), GFP_KERNEL);
211 if (!pcidev_info) 211 if (!pcidev_info)
212 panic("%s: Unable to alloc memory for pcidev_info", __FUNCTION__); 212 panic("%s: Unable to alloc memory for pcidev_info", __func__);
213 213
214 sn_irq_info = kzalloc(sizeof(struct sn_irq_info), GFP_KERNEL); 214 sn_irq_info = kzalloc(sizeof(struct sn_irq_info), GFP_KERNEL);
215 if (!sn_irq_info) 215 if (!sn_irq_info)
216 panic("%s: Unable to alloc memory for sn_irq_info", __FUNCTION__); 216 panic("%s: Unable to alloc memory for sn_irq_info", __func__);
217 217
218 /* Call to retrieve pci device information needed by kernel. */ 218 /* Call to retrieve pci device information needed by kernel. */
219 status = sal_get_pcidev_info((u64) pci_domain_nr(dev), 219 status = sal_get_pcidev_info((u64) pci_domain_nr(dev),
diff --git a/arch/ia64/sn/kernel/mca.c b/arch/ia64/sn/kernel/mca.c
index 868c9aa64f..27793f7aa9 100644
--- a/arch/ia64/sn/kernel/mca.c
+++ b/arch/ia64/sn/kernel/mca.c
@@ -100,7 +100,7 @@ sn_platform_plat_specific_err_print(const u8 * sect_header, u8 ** oemdata,
100 if (!newbuf) { 100 if (!newbuf) {
101 mutex_unlock(&sn_oemdata_mutex); 101 mutex_unlock(&sn_oemdata_mutex);
102 printk(KERN_ERR "%s: unable to extend sn_oemdata\n", 102 printk(KERN_ERR "%s: unable to extend sn_oemdata\n",
103 __FUNCTION__); 103 __func__);
104 return 1; 104 return 1;
105 } 105 }
106 vfree(*sn_oemdata); 106 vfree(*sn_oemdata);
diff --git a/arch/ia64/sn/pci/pci_dma.c b/arch/ia64/sn/pci/pci_dma.c
index 511db2fd7b..18b94b792d 100644
--- a/arch/ia64/sn/pci/pci_dma.c
+++ b/arch/ia64/sn/pci/pci_dma.c
@@ -116,7 +116,7 @@ void *sn_dma_alloc_coherent(struct device *dev, size_t size,
116 *dma_handle = provider->dma_map_consistent(pdev, phys_addr, size, 116 *dma_handle = provider->dma_map_consistent(pdev, phys_addr, size,
117 SN_DMA_ADDR_PHYS); 117 SN_DMA_ADDR_PHYS);
118 if (!*dma_handle) { 118 if (!*dma_handle) {
119 printk(KERN_ERR "%s: out of ATEs\n", __FUNCTION__); 119 printk(KERN_ERR "%s: out of ATEs\n", __func__);
120 free_pages((unsigned long)cpuaddr, get_order(size)); 120 free_pages((unsigned long)cpuaddr, get_order(size));
121 return NULL; 121 return NULL;
122 } 122 }
@@ -179,7 +179,7 @@ dma_addr_t sn_dma_map_single(struct device *dev, void *cpu_addr, size_t size,
179 phys_addr = __pa(cpu_addr); 179 phys_addr = __pa(cpu_addr);
180 dma_addr = provider->dma_map(pdev, phys_addr, size, SN_DMA_ADDR_PHYS); 180 dma_addr = provider->dma_map(pdev, phys_addr, size, SN_DMA_ADDR_PHYS);
181 if (!dma_addr) { 181 if (!dma_addr) {
182 printk(KERN_ERR "%s: out of ATEs\n", __FUNCTION__); 182 printk(KERN_ERR "%s: out of ATEs\n", __func__);
183 return 0; 183 return 0;
184 } 184 }
185 return dma_addr; 185 return dma_addr;
@@ -266,7 +266,7 @@ int sn_dma_map_sg(struct device *dev, struct scatterlist *sgl, int nhwentries,
266 SN_DMA_ADDR_PHYS); 266 SN_DMA_ADDR_PHYS);
267 267
268 if (!sg->dma_address) { 268 if (!sg->dma_address) {
269 printk(KERN_ERR "%s: out of ATEs\n", __FUNCTION__); 269 printk(KERN_ERR "%s: out of ATEs\n", __func__);
270 270
271 /* 271 /*
272 * Free any successfully allocated entries. 272 * Free any successfully allocated entries.
diff --git a/arch/ia64/sn/pci/tioca_provider.c b/arch/ia64/sn/pci/tioca_provider.c
index ef048a6747..529462c015 100644
--- a/arch/ia64/sn/pci/tioca_provider.c
+++ b/arch/ia64/sn/pci/tioca_provider.c
@@ -88,7 +88,7 @@ tioca_gart_init(struct tioca_kernel *tioca_kern)
88 break; 88 break;
89 default: 89 default:
90 printk(KERN_ERR "%s: Invalid CA_APERATURE_SIZE " 90 printk(KERN_ERR "%s: Invalid CA_APERATURE_SIZE "
91 "0x%lx\n", __FUNCTION__, (ulong) CA_APERATURE_SIZE); 91 "0x%lx\n", __func__, (ulong) CA_APERATURE_SIZE);
92 return -1; 92 return -1;
93 } 93 }
94 94
@@ -124,7 +124,7 @@ tioca_gart_init(struct tioca_kernel *tioca_kern)
124 if (!tmp) { 124 if (!tmp) {
125 printk(KERN_ERR "%s: Could not allocate " 125 printk(KERN_ERR "%s: Could not allocate "
126 "%lu bytes (order %d) for GART\n", 126 "%lu bytes (order %d) for GART\n",
127 __FUNCTION__, 127 __func__,
128 tioca_kern->ca_gart_size, 128 tioca_kern->ca_gart_size,
129 get_order(tioca_kern->ca_gart_size)); 129 get_order(tioca_kern->ca_gart_size));
130 return -ENOMEM; 130 return -ENOMEM;
@@ -341,7 +341,7 @@ tioca_dma_d48(struct pci_dev *pdev, u64 paddr)
341 341
342 if (node_upper > 64) { 342 if (node_upper > 64) {
343 printk(KERN_ERR "%s: coretalk addr 0x%p node id out " 343 printk(KERN_ERR "%s: coretalk addr 0x%p node id out "
344 "of range\n", __FUNCTION__, (void *)ct_addr); 344 "of range\n", __func__, (void *)ct_addr);
345 return 0; 345 return 0;
346 } 346 }
347 347
@@ -349,7 +349,7 @@ tioca_dma_d48(struct pci_dev *pdev, u64 paddr)
349 if (node_upper != (agp_dma_extn >> CA_AGP_DMA_NODE_ID_SHFT)) { 349 if (node_upper != (agp_dma_extn >> CA_AGP_DMA_NODE_ID_SHFT)) {
350 printk(KERN_ERR "%s: coretalk upper node (%u) " 350 printk(KERN_ERR "%s: coretalk upper node (%u) "
351 "mismatch with ca_agp_dma_addr_extn (%lu)\n", 351 "mismatch with ca_agp_dma_addr_extn (%lu)\n",
352 __FUNCTION__, 352 __func__,
353 node_upper, (agp_dma_extn >> CA_AGP_DMA_NODE_ID_SHFT)); 353 node_upper, (agp_dma_extn >> CA_AGP_DMA_NODE_ID_SHFT));
354 return 0; 354 return 0;
355 } 355 }
@@ -597,7 +597,7 @@ tioca_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
597 if (is_shub1() && sn_sal_rev() < 0x0406) { 597 if (is_shub1() && sn_sal_rev() < 0x0406) {
598 printk 598 printk
599 (KERN_ERR "%s: SGI prom rev 4.06 or greater required " 599 (KERN_ERR "%s: SGI prom rev 4.06 or greater required "
600 "for tioca support\n", __FUNCTION__); 600 "for tioca support\n", __func__);
601 return NULL; 601 return NULL;
602 } 602 }
603 603
@@ -651,7 +651,7 @@ tioca_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
651 printk(KERN_WARNING 651 printk(KERN_WARNING
652 "%s: Unable to get irq %d. " 652 "%s: Unable to get irq %d. "
653 "Error interrupts won't be routed for TIOCA bus %d\n", 653 "Error interrupts won't be routed for TIOCA bus %d\n",
654 __FUNCTION__, SGI_TIOCA_ERROR, 654 __func__, SGI_TIOCA_ERROR,
655 (int)tioca_common->ca_common.bs_persist_busnum); 655 (int)tioca_common->ca_common.bs_persist_busnum);
656 656
657 sn_set_err_irq_affinity(SGI_TIOCA_ERROR); 657 sn_set_err_irq_affinity(SGI_TIOCA_ERROR);
diff --git a/arch/ia64/sn/pci/tioce_provider.c b/arch/ia64/sn/pci/tioce_provider.c
index 999f14f986..9b3c113730 100644
--- a/arch/ia64/sn/pci/tioce_provider.c
+++ b/arch/ia64/sn/pci/tioce_provider.c
@@ -494,7 +494,7 @@ tioce_dma_unmap(struct pci_dev *pdev, dma_addr_t bus_addr, int dir)
494 if (&map->ce_dmamap_list == &ce_kern->ce_dmamap_list) { 494 if (&map->ce_dmamap_list == &ce_kern->ce_dmamap_list) {
495 printk(KERN_WARNING 495 printk(KERN_WARNING
496 "%s: %s - no map found for bus_addr 0x%lx\n", 496 "%s: %s - no map found for bus_addr 0x%lx\n",
497 __FUNCTION__, pci_name(pdev), bus_addr); 497 __func__, pci_name(pdev), bus_addr);
498 } else if (--map->refcnt == 0) { 498 } else if (--map->refcnt == 0) {
499 for (i = 0; i < map->ate_count; i++) { 499 for (i = 0; i < map->ate_count; i++) {
500 map->ate_shadow[i] = 0; 500 map->ate_shadow[i] = 0;
@@ -1030,7 +1030,7 @@ tioce_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
1030 "%s: Unable to get irq %d. " 1030 "%s: Unable to get irq %d. "
1031 "Error interrupts won't be routed for " 1031 "Error interrupts won't be routed for "
1032 "TIOCE bus %04x:%02x\n", 1032 "TIOCE bus %04x:%02x\n",
1033 __FUNCTION__, SGI_PCIASIC_ERROR, 1033 __func__, SGI_PCIASIC_ERROR,
1034 tioce_common->ce_pcibus.bs_persist_segment, 1034 tioce_common->ce_pcibus.bs_persist_segment,
1035 tioce_common->ce_pcibus.bs_persist_busnum); 1035 tioce_common->ce_pcibus.bs_persist_busnum);
1036 1036
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index 783cfbbf87..95b7534e9e 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -456,13 +456,6 @@ config SH_SECUREEDGE5410
456 This includes both the OEM SecureEdge products as well as the 456 This includes both the OEM SecureEdge products as well as the
457 SME product line. 457 SME product line.
458 458
459config SH_7710VOIPGW
460 bool "SH7710-VOIP-GW"
461 depends on CPU_SUBTYPE_SH7710
462 help
463 Select this option to build a kernel for the SH7710 based
464 VOIP GW.
465
466config SH_RTS7751R2D 459config SH_RTS7751R2D
467 bool "RTS7751R2D" 460 bool "RTS7751R2D"
468 depends on CPU_SUBTYPE_SH7751R 461 depends on CPU_SUBTYPE_SH7751R
diff --git a/arch/sh/Makefile b/arch/sh/Makefile
index 81381e5773..c510c22514 100644
--- a/arch/sh/Makefile
+++ b/arch/sh/Makefile
@@ -118,7 +118,6 @@ machdir-$(CONFIG_SH_EDOSK7705) += renesas/edosk7705
118machdir-$(CONFIG_SH_HIGHLANDER) += renesas/r7780rp 118machdir-$(CONFIG_SH_HIGHLANDER) += renesas/r7780rp
119machdir-$(CONFIG_SH_MIGOR) += renesas/migor 119machdir-$(CONFIG_SH_MIGOR) += renesas/migor
120machdir-$(CONFIG_SH_SDK7780) += renesas/sdk7780 120machdir-$(CONFIG_SH_SDK7780) += renesas/sdk7780
121machdir-$(CONFIG_SH_7710VOIPGW) += renesas/sh7710voipgw
122machdir-$(CONFIG_SH_X3PROTO) += renesas/x3proto 121machdir-$(CONFIG_SH_X3PROTO) += renesas/x3proto
123machdir-$(CONFIG_SH_SH4202_MICRODEV) += superh/microdev 122machdir-$(CONFIG_SH_SH4202_MICRODEV) += superh/microdev
124machdir-$(CONFIG_SH_LANDISK) += landisk 123machdir-$(CONFIG_SH_LANDISK) += landisk
diff --git a/arch/sh/boards/hp6xx/hp6xx_apm.c b/arch/sh/boards/hp6xx/hp6xx_apm.c
index 640ca2a74f..177f4f028e 100644
--- a/arch/sh/boards/hp6xx/hp6xx_apm.c
+++ b/arch/sh/boards/hp6xx/hp6xx_apm.c
@@ -2,6 +2,7 @@
2 * bios-less APM driver for hp680 2 * bios-less APM driver for hp680
3 * 3 *
4 * Copyright 2005 (c) Andriy Skulysh <askulysh@gmail.com> 4 * Copyright 2005 (c) Andriy Skulysh <askulysh@gmail.com>
5 * Copyright 2008 (c) Kristoffer Ericson <kristoffer.ericson@gmail.com>
5 * 6 *
6 * This program is free software; you can redistribute it and/or 7 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License. 8 * modify it under the terms of the GNU General Public License.
@@ -15,17 +16,19 @@
15#include <asm/adc.h> 16#include <asm/adc.h>
16#include <asm/hp6xx.h> 17#include <asm/hp6xx.h>
17 18
18#define SH7709_PGDR 0xa400012c 19/* percentage values */
19
20#define APM_CRITICAL 10 20#define APM_CRITICAL 10
21#define APM_LOW 30 21#define APM_LOW 30
22 22
23/* resonably sane values */
23#define HP680_BATTERY_MAX 898 24#define HP680_BATTERY_MAX 898
24#define HP680_BATTERY_MIN 486 25#define HP680_BATTERY_MIN 486
25#define HP680_BATTERY_AC_ON 1023 26#define HP680_BATTERY_AC_ON 1023
26 27
27#define MODNAME "hp6x0_apm" 28#define MODNAME "hp6x0_apm"
28 29
30#define PGDR 0xa400012c
31
29static void hp6x0_apm_get_power_status(struct apm_power_info *info) 32static void hp6x0_apm_get_power_status(struct apm_power_info *info)
30{ 33{
31 int battery, backup, charging, percentage; 34 int battery, backup, charging, percentage;
@@ -38,17 +41,26 @@ static void hp6x0_apm_get_power_status(struct apm_power_info *info)
38 percentage = 100 * (battery - HP680_BATTERY_MIN) / 41 percentage = 100 * (battery - HP680_BATTERY_MIN) /
39 (HP680_BATTERY_MAX - HP680_BATTERY_MIN); 42 (HP680_BATTERY_MAX - HP680_BATTERY_MIN);
40 43
44 /* % of full battery */
45 info->battery_life = percentage;
46
47 /* We want our estimates in minutes */
48 info->units = 0;
49
50 /* Extremely(!!) rough estimate, we will replace this with a datalist later on */
51 info->time = (2 * battery);
52
41 info->ac_line_status = (battery > HP680_BATTERY_AC_ON) ? 53 info->ac_line_status = (battery > HP680_BATTERY_AC_ON) ?
42 APM_AC_ONLINE : APM_AC_OFFLINE; 54 APM_AC_ONLINE : APM_AC_OFFLINE;
43 55
44 pgdr = ctrl_inb(SH7709_PGDR); 56 pgdr = ctrl_inb(PGDR);
45 if (pgdr & PGDR_MAIN_BATTERY_OUT) { 57 if (pgdr & PGDR_MAIN_BATTERY_OUT) {
46 info->battery_status = APM_BATTERY_STATUS_NOT_PRESENT; 58 info->battery_status = APM_BATTERY_STATUS_NOT_PRESENT;
47 info->battery_flag = 0x80; 59 info->battery_flag = 0x80;
48 } else if (charging < 8) { 60 } else if (charging < 8) {
49 info->battery_status = APM_BATTERY_STATUS_CHARGING; 61 info->battery_status = APM_BATTERY_STATUS_CHARGING;
50 info->battery_flag = 0x08; 62 info->battery_flag = 0x08;
51 info->ac_line_status = 0xff; 63 info->ac_line_status = 0x01;
52 } else if (percentage <= APM_CRITICAL) { 64 } else if (percentage <= APM_CRITICAL) {
53 info->battery_status = APM_BATTERY_STATUS_CRITICAL; 65 info->battery_status = APM_BATTERY_STATUS_CRITICAL;
54 info->battery_flag = 0x04; 66 info->battery_flag = 0x04;
@@ -59,8 +71,6 @@ static void hp6x0_apm_get_power_status(struct apm_power_info *info)
59 info->battery_status = APM_BATTERY_STATUS_HIGH; 71 info->battery_status = APM_BATTERY_STATUS_HIGH;
60 info->battery_flag = 0x01; 72 info->battery_flag = 0x01;
61 } 73 }
62
63 info->units = 0;
64} 74}
65 75
66static irqreturn_t hp6x0_apm_interrupt(int irq, void *dev) 76static irqreturn_t hp6x0_apm_interrupt(int irq, void *dev)
diff --git a/arch/sh/boards/renesas/sh7710voipgw/Makefile b/arch/sh/boards/renesas/sh7710voipgw/Makefile
deleted file mode 100644
index 7703756763..0000000000
--- a/arch/sh/boards/renesas/sh7710voipgw/Makefile
+++ /dev/null
@@ -1 +0,0 @@
1obj-y := setup.o
diff --git a/arch/sh/boards/renesas/sh7710voipgw/setup.c b/arch/sh/boards/renesas/sh7710voipgw/setup.c
deleted file mode 100644
index 0d56fd83bc..0000000000
--- a/arch/sh/boards/renesas/sh7710voipgw/setup.c
+++ /dev/null
@@ -1,94 +0,0 @@
1/*
2 * Renesas Technology SH7710 VoIP Gateway
3 *
4 * Copyright (C) 2006 Ranjit Deshpande
5 * Kenati Technologies Inc.
6 *
7 * May be copied or modified under the terms of the GNU General Public
8 * License. See linux/COPYING for more information.
9 */
10#include <linux/init.h>
11#include <asm/machvec.h>
12#include <asm/irq.h>
13#include <asm/io.h>
14
15static struct ipr_data sh7710voipgw_ipr_map[] = {
16 { TIMER2_IRQ, TIMER2_IPR_ADDR, TIMER2_IPR_POS, TIMER2_PRIORITY },
17 { WDT_IRQ, WDT_IPR_ADDR, WDT_IPR_POS, WDT_PRIORITY },
18
19 /* SCIF0 */
20 { SCIF0_ERI_IRQ, SCIF0_IPR_ADDR, SCIF0_IPR_POS, SCIF0_PRIORITY },
21 { SCIF0_RXI_IRQ, SCIF0_IPR_ADDR, SCIF0_IPR_POS, SCIF0_PRIORITY },
22 { SCIF0_BRI_IRQ, SCIF0_IPR_ADDR, SCIF0_IPR_POS, SCIF0_PRIORITY },
23 { SCIF0_TXI_IRQ, SCIF0_IPR_ADDR, SCIF0_IPR_POS, SCIF0_PRIORITY },
24
25 /* DMAC-1 */
26 { DMTE0_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY },
27 { DMTE1_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY },
28 { DMTE2_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY },
29 { DMTE3_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY },
30
31 /* DMAC-2 */
32 { DMTE4_IRQ, DMA2_IPR_ADDR, DMA2_IPR_POS, DMA2_PRIORITY },
33 { DMTE4_IRQ, DMA2_IPR_ADDR, DMA2_IPR_POS, DMA2_PRIORITY },
34
35 /* IPSEC */
36 { IPSEC_IRQ, IPSEC_IPR_ADDR, IPSEC_IPR_POS, IPSEC_PRIORITY },
37
38 /* EDMAC */
39 { EDMAC0_IRQ, EDMAC0_IPR_ADDR, EDMAC0_IPR_POS, EDMAC0_PRIORITY },
40 { EDMAC1_IRQ, EDMAC1_IPR_ADDR, EDMAC1_IPR_POS, EDMAC1_PRIORITY },
41 { EDMAC2_IRQ, EDMAC2_IPR_ADDR, EDMAC2_IPR_POS, EDMAC2_PRIORITY },
42
43 /* SIOF0 */
44 { SIOF0_ERI_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS, SIOF0_PRIORITY },
45 { SIOF0_TXI_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS, SIOF0_PRIORITY },
46 { SIOF0_RXI_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS, SIOF0_PRIORITY },
47 { SIOF0_CCI_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS, SIOF0_PRIORITY },
48
49 /* SIOF1 */
50 { SIOF1_ERI_IRQ, SIOF1_IPR_ADDR, SIOF1_IPR_POS, SIOF1_PRIORITY },
51 { SIOF1_TXI_IRQ, SIOF1_IPR_ADDR, SIOF1_IPR_POS, SIOF1_PRIORITY },
52 { SIOF1_RXI_IRQ, SIOF1_IPR_ADDR, SIOF1_IPR_POS, SIOF1_PRIORITY },
53 { SIOF1_CCI_IRQ, SIOF1_IPR_ADDR, SIOF1_IPR_POS, SIOF1_PRIORITY },
54
55 /* SLIC IRQ's */
56 { IRQ1_IRQ, IRQ1_IPR_ADDR, IRQ1_IPR_POS, IRQ1_PRIORITY },
57 { IRQ2_IRQ, IRQ2_IPR_ADDR, IRQ2_IPR_POS, IRQ2_PRIORITY },
58};
59
60/*
61 * Initialize IRQ setting
62 */
63static void __init sh7710voipgw_init_irq(void)
64{
65 /* Disable all interrupts in IPR registers */
66 ctrl_outw(0x0, INTC_IPRA);
67 ctrl_outw(0x0, INTC_IPRB);
68 ctrl_outw(0x0, INTC_IPRC);
69 ctrl_outw(0x0, INTC_IPRD);
70 ctrl_outw(0x0, INTC_IPRE);
71 ctrl_outw(0x0, INTC_IPRF);
72 ctrl_outw(0x0, INTC_IPRG);
73 ctrl_outw(0x0, INTC_IPRH);
74 ctrl_outw(0x0, INTC_IPRI);
75
76 /* Ack all interrupt sources in the IRR0 register */
77 ctrl_outb(0x3f, INTC_IRR0);
78
79 /* Use IRQ0 - IRQ3 as active low interrupt lines i.e. disable
80 * IRL mode.
81 */
82 ctrl_outw(0x2aa, INTC_ICR1);
83
84 make_ipr_irq(sh7710voipgw_ipr_map, ARRAY_SIZE(sh7710voipgw_ipr_map));
85}
86
87/*
88 * The Machine Vector
89 */
90static struct sh_machine_vector mv_sh7710voipgw __initmv = {
91 .mv_name = "SH7710 VoIP Gateway",
92 .mv_nr_irqs = 104,
93 .mv_init_irq = sh7710voipgw_init_irq,
94};
diff --git a/arch/sh/boards/renesas/x3proto/ilsel.c b/arch/sh/boards/renesas/x3proto/ilsel.c
index 6d4454fef9..b5c673c393 100644
--- a/arch/sh/boards/renesas/x3proto/ilsel.c
+++ b/arch/sh/boards/renesas/x3proto/ilsel.c
@@ -68,7 +68,7 @@ static void __ilsel_enable(ilsel_source_t set, unsigned int bit)
68 shift = mk_ilsel_shift(bit); 68 shift = mk_ilsel_shift(bit);
69 69
70 pr_debug("%s: bit#%d: addr - 0x%08lx (shift %d, set %d)\n", 70 pr_debug("%s: bit#%d: addr - 0x%08lx (shift %d, set %d)\n",
71 __FUNCTION__, bit, addr, shift, set); 71 __func__, bit, addr, shift, set);
72 72
73 tmp = ctrl_inw(addr); 73 tmp = ctrl_inw(addr);
74 tmp &= ~(0xf << shift); 74 tmp &= ~(0xf << shift);
diff --git a/arch/sh/boards/superh/microdev/io.c b/arch/sh/boards/superh/microdev/io.c
index b704e20d7e..9f8a540f7e 100644
--- a/arch/sh/boards/superh/microdev/io.c
+++ b/arch/sh/boards/superh/microdev/io.c
@@ -127,7 +127,7 @@ static unsigned long microdev_isa_port2addr(unsigned long offset)
127 * safe default. 127 * safe default.
128 */ 128 */
129 printk("Warning: unexpected port in %s( offset = 0x%lx )\n", 129 printk("Warning: unexpected port in %s( offset = 0x%lx )\n",
130 __FUNCTION__, offset); 130 __func__, offset);
131 result = PVR; 131 result = PVR;
132 } 132 }
133 133
diff --git a/arch/sh/configs/r7780mp_defconfig b/arch/sh/configs/r7780mp_defconfig
index 2ad804ec92..1a072615ff 100644
--- a/arch/sh/configs/r7780mp_defconfig
+++ b/arch/sh/configs/r7780mp_defconfig
@@ -1,9 +1,10 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.24-rc2 3# Linux kernel version: 2.6.25-rc4
4# Tue Nov 13 20:32:39 2007 4# Thu Mar 6 15:39:59 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 8CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_BUG=y 9CONFIG_GENERIC_BUG=y
9CONFIG_GENERIC_FIND_NEXT_BIT=y 10CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -19,6 +20,8 @@ CONFIG_LOCKDEP_SUPPORT=y
19# CONFIG_ARCH_HAS_ILOG2_U32 is not set 20# CONFIG_ARCH_HAS_ILOG2_U32 is not set
20# CONFIG_ARCH_HAS_ILOG2_U64 is not set 21# CONFIG_ARCH_HAS_ILOG2_U64 is not set
21CONFIG_ARCH_NO_VIRT_TO_BUS=y 22CONFIG_ARCH_NO_VIRT_TO_BUS=y
23CONFIG_ARCH_SUPPORTS_AOUT=y
24CONFIG_IO_TRAPPED=y
22CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
23 26
24# 27#
@@ -37,17 +40,20 @@ CONFIG_SYSVIPC_SYSCTL=y
37CONFIG_BSD_PROCESS_ACCT=y 40CONFIG_BSD_PROCESS_ACCT=y
38# CONFIG_BSD_PROCESS_ACCT_V3 is not set 41# CONFIG_BSD_PROCESS_ACCT_V3 is not set
39# CONFIG_TASKSTATS is not set 42# CONFIG_TASKSTATS is not set
40# CONFIG_USER_NS is not set
41# CONFIG_AUDIT is not set 43# CONFIG_AUDIT is not set
42CONFIG_IKCONFIG=y 44CONFIG_IKCONFIG=y
43CONFIG_IKCONFIG_PROC=y 45CONFIG_IKCONFIG_PROC=y
44CONFIG_LOG_BUF_SHIFT=14 46CONFIG_LOG_BUF_SHIFT=14
45# CONFIG_CGROUPS is not set 47# CONFIG_CGROUPS is not set
48CONFIG_GROUP_SCHED=y
46CONFIG_FAIR_GROUP_SCHED=y 49CONFIG_FAIR_GROUP_SCHED=y
47CONFIG_FAIR_USER_SCHED=y 50# CONFIG_RT_GROUP_SCHED is not set
48# CONFIG_FAIR_CGROUP_SCHED is not set 51CONFIG_USER_SCHED=y
49# CONFIG_SYSFS_DEPRECATED is not set 52# CONFIG_CGROUP_SCHED is not set
53CONFIG_SYSFS_DEPRECATED=y
54CONFIG_SYSFS_DEPRECATED_V2=y
50# CONFIG_RELAY is not set 55# CONFIG_RELAY is not set
56# CONFIG_NAMESPACES is not set
51# CONFIG_BLK_DEV_INITRD is not set 57# CONFIG_BLK_DEV_INITRD is not set
52CONFIG_CC_OPTIMIZE_FOR_SIZE=y 58CONFIG_CC_OPTIMIZE_FOR_SIZE=y
53CONFIG_SYSCTL=y 59CONFIG_SYSCTL=y
@@ -61,17 +67,27 @@ CONFIG_HOTPLUG=y
61CONFIG_PRINTK=y 67CONFIG_PRINTK=y
62CONFIG_BUG=y 68CONFIG_BUG=y
63CONFIG_ELF_CORE=y 69CONFIG_ELF_CORE=y
70CONFIG_COMPAT_BRK=y
64CONFIG_BASE_FULL=y 71CONFIG_BASE_FULL=y
65# CONFIG_FUTEX is not set 72# CONFIG_FUTEX is not set
66CONFIG_ANON_INODES=y 73CONFIG_ANON_INODES=y
67# CONFIG_EPOLL is not set 74# CONFIG_EPOLL is not set
68CONFIG_SIGNALFD=y 75CONFIG_SIGNALFD=y
76CONFIG_TIMERFD=y
69CONFIG_EVENTFD=y 77CONFIG_EVENTFD=y
70CONFIG_SHMEM=y 78CONFIG_SHMEM=y
71CONFIG_VM_EVENT_COUNTERS=y 79CONFIG_VM_EVENT_COUNTERS=y
72CONFIG_SLAB=y 80CONFIG_SLAB=y
73# CONFIG_SLUB is not set 81# CONFIG_SLUB is not set
74# CONFIG_SLOB is not set 82# CONFIG_SLOB is not set
83CONFIG_PROFILING=y
84# CONFIG_MARKERS is not set
85CONFIG_OPROFILE=m
86CONFIG_HAVE_OPROFILE=y
87# CONFIG_HAVE_KPROBES is not set
88# CONFIG_HAVE_KRETPROBES is not set
89CONFIG_PROC_PAGE_MONITOR=y
90CONFIG_SLABINFO=y
75# CONFIG_TINY_SHMEM is not set 91# CONFIG_TINY_SHMEM is not set
76CONFIG_BASE_SMALL=0 92CONFIG_BASE_SMALL=0
77CONFIG_MODULES=y 93CONFIG_MODULES=y
@@ -98,6 +114,8 @@ CONFIG_IOSCHED_NOOP=y
98# CONFIG_DEFAULT_CFQ is not set 114# CONFIG_DEFAULT_CFQ is not set
99CONFIG_DEFAULT_NOOP=y 115CONFIG_DEFAULT_NOOP=y
100CONFIG_DEFAULT_IOSCHED="noop" 116CONFIG_DEFAULT_IOSCHED="noop"
117CONFIG_CLASSIC_RCU=y
118# CONFIG_PREEMPT_RCU is not set
101 119
102# 120#
103# System type 121# System type
@@ -105,7 +123,9 @@ CONFIG_DEFAULT_IOSCHED="noop"
105CONFIG_CPU_SH4=y 123CONFIG_CPU_SH4=y
106CONFIG_CPU_SH4A=y 124CONFIG_CPU_SH4A=y
107# CONFIG_CPU_SUBTYPE_SH7619 is not set 125# CONFIG_CPU_SUBTYPE_SH7619 is not set
126# CONFIG_CPU_SUBTYPE_SH7203 is not set
108# CONFIG_CPU_SUBTYPE_SH7206 is not set 127# CONFIG_CPU_SUBTYPE_SH7206 is not set
128# CONFIG_CPU_SUBTYPE_SH7263 is not set
109# CONFIG_CPU_SUBTYPE_SH7705 is not set 129# CONFIG_CPU_SUBTYPE_SH7705 is not set
110# CONFIG_CPU_SUBTYPE_SH7706 is not set 130# CONFIG_CPU_SUBTYPE_SH7706 is not set
111# CONFIG_CPU_SUBTYPE_SH7707 is not set 131# CONFIG_CPU_SUBTYPE_SH7707 is not set
@@ -114,6 +134,7 @@ CONFIG_CPU_SH4A=y
114# CONFIG_CPU_SUBTYPE_SH7710 is not set 134# CONFIG_CPU_SUBTYPE_SH7710 is not set
115# CONFIG_CPU_SUBTYPE_SH7712 is not set 135# CONFIG_CPU_SUBTYPE_SH7712 is not set
116# CONFIG_CPU_SUBTYPE_SH7720 is not set 136# CONFIG_CPU_SUBTYPE_SH7720 is not set
137# CONFIG_CPU_SUBTYPE_SH7721 is not set
117# CONFIG_CPU_SUBTYPE_SH7750 is not set 138# CONFIG_CPU_SUBTYPE_SH7750 is not set
118# CONFIG_CPU_SUBTYPE_SH7091 is not set 139# CONFIG_CPU_SUBTYPE_SH7091 is not set
119# CONFIG_CPU_SUBTYPE_SH7750R is not set 140# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -122,12 +143,16 @@ CONFIG_CPU_SH4A=y
122# CONFIG_CPU_SUBTYPE_SH7751R is not set 143# CONFIG_CPU_SUBTYPE_SH7751R is not set
123# CONFIG_CPU_SUBTYPE_SH7760 is not set 144# CONFIG_CPU_SUBTYPE_SH7760 is not set
124# CONFIG_CPU_SUBTYPE_SH4_202 is not set 145# CONFIG_CPU_SUBTYPE_SH4_202 is not set
146# CONFIG_CPU_SUBTYPE_SH7763 is not set
125# CONFIG_CPU_SUBTYPE_SH7770 is not set 147# CONFIG_CPU_SUBTYPE_SH7770 is not set
126CONFIG_CPU_SUBTYPE_SH7780=y 148CONFIG_CPU_SUBTYPE_SH7780=y
127# CONFIG_CPU_SUBTYPE_SH7785 is not set 149# CONFIG_CPU_SUBTYPE_SH7785 is not set
128# CONFIG_CPU_SUBTYPE_SHX3 is not set 150# CONFIG_CPU_SUBTYPE_SHX3 is not set
129# CONFIG_CPU_SUBTYPE_SH7343 is not set 151# CONFIG_CPU_SUBTYPE_SH7343 is not set
130# CONFIG_CPU_SUBTYPE_SH7722 is not set 152# CONFIG_CPU_SUBTYPE_SH7722 is not set
153# CONFIG_CPU_SUBTYPE_SH7366 is not set
154# CONFIG_CPU_SUBTYPE_SH5_101 is not set
155# CONFIG_CPU_SUBTYPE_SH5_103 is not set
131 156
132# 157#
133# Memory management options 158# Memory management options
@@ -137,7 +162,8 @@ CONFIG_MMU=y
137CONFIG_PAGE_OFFSET=0x80000000 162CONFIG_PAGE_OFFSET=0x80000000
138CONFIG_MEMORY_START=0x08000000 163CONFIG_MEMORY_START=0x08000000
139CONFIG_MEMORY_SIZE=0x08000000 164CONFIG_MEMORY_SIZE=0x08000000
140# CONFIG_32BIT is not set 165CONFIG_29BIT=y
166# CONFIG_PMB is not set
141CONFIG_VSYSCALL=y 167CONFIG_VSYSCALL=y
142CONFIG_ARCH_FLATMEM_ENABLE=y 168CONFIG_ARCH_FLATMEM_ENABLE=y
143CONFIG_ARCH_SPARSEMEM_ENABLE=y 169CONFIG_ARCH_SPARSEMEM_ENABLE=y
@@ -153,6 +179,7 @@ CONFIG_HUGETLB_PAGE_SIZE_64K=y
153# CONFIG_HUGETLB_PAGE_SIZE_1MB is not set 179# CONFIG_HUGETLB_PAGE_SIZE_1MB is not set
154# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set 180# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set
155# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set 181# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set
182# CONFIG_HUGETLB_PAGE_SIZE_512MB is not set
156CONFIG_SELECT_MEMORY_MODEL=y 183CONFIG_SELECT_MEMORY_MODEL=y
157CONFIG_FLATMEM_MANUAL=y 184CONFIG_FLATMEM_MANUAL=y
158# CONFIG_DISCONTIGMEM_MANUAL is not set 185# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -190,6 +217,7 @@ CONFIG_CPU_HAS_FPU=y
190# Board support 217# Board support
191# 218#
192# CONFIG_SH_7780_SOLUTION_ENGINE is not set 219# CONFIG_SH_7780_SOLUTION_ENGINE is not set
220# CONFIG_SH_SDK7780 is not set
193CONFIG_SH_HIGHLANDER=y 221CONFIG_SH_HIGHLANDER=y
194# CONFIG_SH_R7780RP is not set 222# CONFIG_SH_R7780RP is not set
195CONFIG_SH_R7780MP=y 223CONFIG_SH_R7780MP=y
@@ -234,12 +262,13 @@ CONFIG_HZ_250=y
234# CONFIG_HZ_300 is not set 262# CONFIG_HZ_300 is not set
235# CONFIG_HZ_1000 is not set 263# CONFIG_HZ_1000 is not set
236CONFIG_HZ=250 264CONFIG_HZ=250
265# CONFIG_SCHED_HRTICK is not set
237CONFIG_KEXEC=y 266CONFIG_KEXEC=y
238# CONFIG_CRASH_DUMP is not set 267# CONFIG_CRASH_DUMP is not set
239# CONFIG_PREEMPT_NONE is not set 268# CONFIG_PREEMPT_NONE is not set
240# CONFIG_PREEMPT_VOLUNTARY is not set 269# CONFIG_PREEMPT_VOLUNTARY is not set
241CONFIG_PREEMPT=y 270CONFIG_PREEMPT=y
242CONFIG_PREEMPT_BKL=y 271CONFIG_RCU_TRACE=y
243CONFIG_GUSA=y 272CONFIG_GUSA=y
244 273
245# 274#
@@ -284,6 +313,7 @@ CONFIG_XFRM=y
284# CONFIG_XFRM_USER is not set 313# CONFIG_XFRM_USER is not set
285# CONFIG_XFRM_SUB_POLICY is not set 314# CONFIG_XFRM_SUB_POLICY is not set
286# CONFIG_XFRM_MIGRATE is not set 315# CONFIG_XFRM_MIGRATE is not set
316# CONFIG_XFRM_STATISTICS is not set
287# CONFIG_NET_KEY is not set 317# CONFIG_NET_KEY is not set
288CONFIG_INET=y 318CONFIG_INET=y
289# CONFIG_IP_MULTICAST is not set 319# CONFIG_IP_MULTICAST is not set
@@ -344,6 +374,7 @@ CONFIG_LLC=m
344# 374#
345# CONFIG_NET_PKTGEN is not set 375# CONFIG_NET_PKTGEN is not set
346# CONFIG_HAMRADIO is not set 376# CONFIG_HAMRADIO is not set
377# CONFIG_CAN is not set
347# CONFIG_IRDA is not set 378# CONFIG_IRDA is not set
348# CONFIG_BT is not set 379# CONFIG_BT is not set
349# CONFIG_AF_RXRPC is not set 380# CONFIG_AF_RXRPC is not set
@@ -386,7 +417,7 @@ CONFIG_BLK_DEV=y
386CONFIG_BLK_DEV_RAM=y 417CONFIG_BLK_DEV_RAM=y
387CONFIG_BLK_DEV_RAM_COUNT=16 418CONFIG_BLK_DEV_RAM_COUNT=16
388CONFIG_BLK_DEV_RAM_SIZE=4096 419CONFIG_BLK_DEV_RAM_SIZE=4096
389CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 420# CONFIG_BLK_DEV_XIP is not set
390# CONFIG_CDROM_PKTCDVD is not set 421# CONFIG_CDROM_PKTCDVD is not set
391# CONFIG_ATA_OVER_ETH is not set 422# CONFIG_ATA_OVER_ETH is not set
392CONFIG_MISC_DEVICES=y 423CONFIG_MISC_DEVICES=y
@@ -394,6 +425,8 @@ CONFIG_MISC_DEVICES=y
394CONFIG_EEPROM_93CX6=y 425CONFIG_EEPROM_93CX6=y
395# CONFIG_SGI_IOC4 is not set 426# CONFIG_SGI_IOC4 is not set
396# CONFIG_TIFM_CORE is not set 427# CONFIG_TIFM_CORE is not set
428# CONFIG_ENCLOSURE_SERVICES is not set
429CONFIG_HAVE_IDE=y
397# CONFIG_IDE is not set 430# CONFIG_IDE is not set
398 431
399# 432#
@@ -453,6 +486,7 @@ CONFIG_SCSI_LOWLEVEL=y
453# CONFIG_SCSI_IPS is not set 486# CONFIG_SCSI_IPS is not set
454# CONFIG_SCSI_INITIO is not set 487# CONFIG_SCSI_INITIO is not set
455# CONFIG_SCSI_INIA100 is not set 488# CONFIG_SCSI_INIA100 is not set
489# CONFIG_SCSI_MVSAS is not set
456# CONFIG_SCSI_STEX is not set 490# CONFIG_SCSI_STEX is not set
457# CONFIG_SCSI_SYM53C8XX_2 is not set 491# CONFIG_SCSI_SYM53C8XX_2 is not set
458# CONFIG_SCSI_IPR is not set 492# CONFIG_SCSI_IPR is not set
@@ -506,6 +540,7 @@ CONFIG_SATA_SIL=y
506# CONFIG_PATA_MPIIX is not set 540# CONFIG_PATA_MPIIX is not set
507# CONFIG_PATA_OLDPIIX is not set 541# CONFIG_PATA_OLDPIIX is not set
508# CONFIG_PATA_NETCELL is not set 542# CONFIG_PATA_NETCELL is not set
543# CONFIG_PATA_NINJA32 is not set
509# CONFIG_PATA_NS87410 is not set 544# CONFIG_PATA_NS87410 is not set
510# CONFIG_PATA_NS87415 is not set 545# CONFIG_PATA_NS87415 is not set
511# CONFIG_PATA_OPTI is not set 546# CONFIG_PATA_OPTI is not set
@@ -538,7 +573,6 @@ CONFIG_NETDEVICES=y
538# CONFIG_EQUALIZER is not set 573# CONFIG_EQUALIZER is not set
539# CONFIG_TUN is not set 574# CONFIG_TUN is not set
540# CONFIG_VETH is not set 575# CONFIG_VETH is not set
541# CONFIG_IP1000 is not set
542# CONFIG_ARCNET is not set 576# CONFIG_ARCNET is not set
543# CONFIG_PHYLIB is not set 577# CONFIG_PHYLIB is not set
544CONFIG_NET_ETHERNET=y 578CONFIG_NET_ETHERNET=y
@@ -551,7 +585,6 @@ CONFIG_AX88796_93CX6=y
551# CONFIG_CASSINI is not set 585# CONFIG_CASSINI is not set
552# CONFIG_NET_VENDOR_3COM is not set 586# CONFIG_NET_VENDOR_3COM is not set
553# CONFIG_SMC91X is not set 587# CONFIG_SMC91X is not set
554# CONFIG_SMC911X is not set
555# CONFIG_NET_TULIP is not set 588# CONFIG_NET_TULIP is not set
556# CONFIG_HP100 is not set 589# CONFIG_HP100 is not set
557# CONFIG_IBM_NEW_EMAC_ZMII is not set 590# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -576,6 +609,7 @@ CONFIG_8139TOO=m
576# CONFIG_8139TOO_TUNE_TWISTER is not set 609# CONFIG_8139TOO_TUNE_TWISTER is not set
577CONFIG_8139TOO_8129=y 610CONFIG_8139TOO_8129=y
578# CONFIG_8139_OLD_RX_RESET is not set 611# CONFIG_8139_OLD_RX_RESET is not set
612# CONFIG_R6040 is not set
579# CONFIG_SIS900 is not set 613# CONFIG_SIS900 is not set
580# CONFIG_EPIC100 is not set 614# CONFIG_EPIC100 is not set
581# CONFIG_SUNDANCE is not set 615# CONFIG_SUNDANCE is not set
@@ -591,6 +625,9 @@ CONFIG_E1000=m
591# CONFIG_E1000_NAPI is not set 625# CONFIG_E1000_NAPI is not set
592# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set 626# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
593# CONFIG_E1000E is not set 627# CONFIG_E1000E is not set
628# CONFIG_E1000E_ENABLED is not set
629# CONFIG_IP1000 is not set
630# CONFIG_IGB is not set
594# CONFIG_NS83820 is not set 631# CONFIG_NS83820 is not set
595# CONFIG_HAMACHI is not set 632# CONFIG_HAMACHI is not set
596# CONFIG_YELLOWFIN is not set 633# CONFIG_YELLOWFIN is not set
@@ -616,6 +653,7 @@ CONFIG_NETDEV_10000=y
616# CONFIG_NIU is not set 653# CONFIG_NIU is not set
617# CONFIG_MLX4_CORE is not set 654# CONFIG_MLX4_CORE is not set
618# CONFIG_TEHUTI is not set 655# CONFIG_TEHUTI is not set
656# CONFIG_BNX2X is not set
619# CONFIG_TR is not set 657# CONFIG_TR is not set
620 658
621# 659#
@@ -629,7 +667,6 @@ CONFIG_NETDEV_10000=y
629# CONFIG_PPP is not set 667# CONFIG_PPP is not set
630# CONFIG_SLIP is not set 668# CONFIG_SLIP is not set
631# CONFIG_NET_FC is not set 669# CONFIG_NET_FC is not set
632# CONFIG_SHAPER is not set
633# CONFIG_NETCONSOLE is not set 670# CONFIG_NETCONSOLE is not set
634# CONFIG_NETPOLL is not set 671# CONFIG_NETPOLL is not set
635# CONFIG_NET_POLL_CONTROLLER is not set 672# CONFIG_NET_POLL_CONTROLLER is not set
@@ -686,6 +723,7 @@ CONFIG_SERIO_LIBPS2=y
686# 723#
687# CONFIG_VT is not set 724# CONFIG_VT is not set
688# CONFIG_SERIAL_NONSTANDARD is not set 725# CONFIG_SERIAL_NONSTANDARD is not set
726# CONFIG_NOZOMI is not set
689 727
690# 728#
691# Serial drivers 729# Serial drivers
@@ -722,6 +760,7 @@ CONFIG_DEVPORT=y
722# CONFIG_POWER_SUPPLY is not set 760# CONFIG_POWER_SUPPLY is not set
723CONFIG_HWMON=y 761CONFIG_HWMON=y
724# CONFIG_HWMON_VID is not set 762# CONFIG_HWMON_VID is not set
763# CONFIG_SENSORS_I5K_AMB is not set
725# CONFIG_SENSORS_F71805F is not set 764# CONFIG_SENSORS_F71805F is not set
726# CONFIG_SENSORS_F71882FG is not set 765# CONFIG_SENSORS_F71882FG is not set
727# CONFIG_SENSORS_IT87 is not set 766# CONFIG_SENSORS_IT87 is not set
@@ -736,6 +775,7 @@ CONFIG_HWMON=y
736# CONFIG_SENSORS_W83627HF is not set 775# CONFIG_SENSORS_W83627HF is not set
737# CONFIG_SENSORS_W83627EHF is not set 776# CONFIG_SENSORS_W83627EHF is not set
738# CONFIG_HWMON_DEBUG_CHIP is not set 777# CONFIG_HWMON_DEBUG_CHIP is not set
778CONFIG_THERMAL=y
739# CONFIG_WATCHDOG is not set 779# CONFIG_WATCHDOG is not set
740 780
741# 781#
@@ -800,12 +840,9 @@ CONFIG_USB_ARCH_HAS_EHCI=y
800# 840#
801# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 841# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
802# 842#
803
804#
805# USB Gadget Support
806#
807# CONFIG_USB_GADGET is not set 843# CONFIG_USB_GADGET is not set
808# CONFIG_MMC is not set 844# CONFIG_MMC is not set
845# CONFIG_MEMSTICK is not set
809# CONFIG_NEW_LEDS is not set 846# CONFIG_NEW_LEDS is not set
810# CONFIG_INFINIBAND is not set 847# CONFIG_INFINIBAND is not set
811CONFIG_RTC_LIB=y 848CONFIG_RTC_LIB=y
@@ -830,9 +867,10 @@ CONFIG_RTC_INTF_DEV=y
830# 867#
831# Platform RTC drivers 868# Platform RTC drivers
832# 869#
870# CONFIG_RTC_DRV_DS1511 is not set
833# CONFIG_RTC_DRV_DS1553 is not set 871# CONFIG_RTC_DRV_DS1553 is not set
834# CONFIG_RTC_DRV_STK17TA8 is not set
835# CONFIG_RTC_DRV_DS1742 is not set 872# CONFIG_RTC_DRV_DS1742 is not set
873# CONFIG_RTC_DRV_STK17TA8 is not set
836# CONFIG_RTC_DRV_M48T86 is not set 874# CONFIG_RTC_DRV_M48T86 is not set
837# CONFIG_RTC_DRV_M48T59 is not set 875# CONFIG_RTC_DRV_M48T59 is not set
838# CONFIG_RTC_DRV_V3020 is not set 876# CONFIG_RTC_DRV_V3020 is not set
@@ -867,12 +905,10 @@ CONFIG_FS_POSIX_ACL=y
867# CONFIG_XFS_FS is not set 905# CONFIG_XFS_FS is not set
868# CONFIG_GFS2_FS is not set 906# CONFIG_GFS2_FS is not set
869# CONFIG_OCFS2_FS is not set 907# CONFIG_OCFS2_FS is not set
870CONFIG_MINIX_FS=y 908CONFIG_DNOTIFY=y
871# CONFIG_ROMFS_FS is not set
872CONFIG_INOTIFY=y 909CONFIG_INOTIFY=y
873CONFIG_INOTIFY_USER=y 910CONFIG_INOTIFY_USER=y
874# CONFIG_QUOTA is not set 911# CONFIG_QUOTA is not set
875CONFIG_DNOTIFY=y
876# CONFIG_AUTOFS_FS is not set 912# CONFIG_AUTOFS_FS is not set
877# CONFIG_AUTOFS4_FS is not set 913# CONFIG_AUTOFS4_FS is not set
878CONFIG_FUSE_FS=m 914CONFIG_FUSE_FS=m
@@ -920,8 +956,10 @@ CONFIG_CONFIGFS_FS=m
920# CONFIG_EFS_FS is not set 956# CONFIG_EFS_FS is not set
921# CONFIG_CRAMFS is not set 957# CONFIG_CRAMFS is not set
922# CONFIG_VXFS_FS is not set 958# CONFIG_VXFS_FS is not set
959CONFIG_MINIX_FS=y
923# CONFIG_HPFS_FS is not set 960# CONFIG_HPFS_FS is not set
924# CONFIG_QNX4FS_FS is not set 961# CONFIG_QNX4FS_FS is not set
962# CONFIG_ROMFS_FS is not set
925# CONFIG_SYSV_FS is not set 963# CONFIG_SYSV_FS is not set
926# CONFIG_UFS_FS is not set 964# CONFIG_UFS_FS is not set
927CONFIG_NETWORK_FILESYSTEMS=y 965CONFIG_NETWORK_FILESYSTEMS=y
@@ -997,10 +1035,6 @@ CONFIG_NLS_ISO8859_1=y
997# CONFIG_NLS_KOI8_U is not set 1035# CONFIG_NLS_KOI8_U is not set
998# CONFIG_NLS_UTF8 is not set 1036# CONFIG_NLS_UTF8 is not set
999# CONFIG_DLM is not set 1037# CONFIG_DLM is not set
1000CONFIG_INSTRUMENTATION=y
1001CONFIG_PROFILING=y
1002CONFIG_OPROFILE=m
1003# CONFIG_MARKERS is not set
1004 1038
1005# 1039#
1006# Kernel hacking 1040# Kernel hacking
@@ -1035,9 +1069,9 @@ CONFIG_DEBUG_INFO=y
1035# CONFIG_DEBUG_LIST is not set 1069# CONFIG_DEBUG_LIST is not set
1036# CONFIG_DEBUG_SG is not set 1070# CONFIG_DEBUG_SG is not set
1037# CONFIG_FRAME_POINTER is not set 1071# CONFIG_FRAME_POINTER is not set
1038CONFIG_FORCED_INLINING=y
1039# CONFIG_BOOT_PRINTK_DELAY is not set 1072# CONFIG_BOOT_PRINTK_DELAY is not set
1040# CONFIG_RCU_TORTURE_TEST is not set 1073# CONFIG_RCU_TORTURE_TEST is not set
1074# CONFIG_BACKTRACE_SELF_TEST is not set
1041# CONFIG_FAULT_INJECTION is not set 1075# CONFIG_FAULT_INJECTION is not set
1042# CONFIG_SAMPLES is not set 1076# CONFIG_SAMPLES is not set
1043CONFIG_SH_STANDARD_BIOS=y 1077CONFIG_SH_STANDARD_BIOS=y
@@ -1059,6 +1093,7 @@ CONFIG_DEBUG_STACKOVERFLOW=y
1059CONFIG_CRYPTO=y 1093CONFIG_CRYPTO=y
1060CONFIG_CRYPTO_ALGAPI=y 1094CONFIG_CRYPTO_ALGAPI=y
1061CONFIG_CRYPTO_BLKCIPHER=y 1095CONFIG_CRYPTO_BLKCIPHER=y
1096# CONFIG_CRYPTO_SEQIV is not set
1062CONFIG_CRYPTO_HASH=y 1097CONFIG_CRYPTO_HASH=y
1063CONFIG_CRYPTO_MANAGER=y 1098CONFIG_CRYPTO_MANAGER=y
1064CONFIG_CRYPTO_HMAC=y 1099CONFIG_CRYPTO_HMAC=y
@@ -1077,6 +1112,9 @@ CONFIG_CRYPTO_CBC=y
1077CONFIG_CRYPTO_PCBC=m 1112CONFIG_CRYPTO_PCBC=m
1078# CONFIG_CRYPTO_LRW is not set 1113# CONFIG_CRYPTO_LRW is not set
1079# CONFIG_CRYPTO_XTS is not set 1114# CONFIG_CRYPTO_XTS is not set
1115# CONFIG_CRYPTO_CTR is not set
1116# CONFIG_CRYPTO_GCM is not set
1117# CONFIG_CRYPTO_CCM is not set
1080# CONFIG_CRYPTO_CRYPTD is not set 1118# CONFIG_CRYPTO_CRYPTD is not set
1081CONFIG_CRYPTO_DES=y 1119CONFIG_CRYPTO_DES=y
1082# CONFIG_CRYPTO_FCRYPT is not set 1120# CONFIG_CRYPTO_FCRYPT is not set
@@ -1091,13 +1129,16 @@ CONFIG_CRYPTO_DES=y
1091# CONFIG_CRYPTO_KHAZAD is not set 1129# CONFIG_CRYPTO_KHAZAD is not set
1092# CONFIG_CRYPTO_ANUBIS is not set 1130# CONFIG_CRYPTO_ANUBIS is not set
1093# CONFIG_CRYPTO_SEED is not set 1131# CONFIG_CRYPTO_SEED is not set
1132# CONFIG_CRYPTO_SALSA20 is not set
1094# CONFIG_CRYPTO_DEFLATE is not set 1133# CONFIG_CRYPTO_DEFLATE is not set
1095# CONFIG_CRYPTO_MICHAEL_MIC is not set 1134# CONFIG_CRYPTO_MICHAEL_MIC is not set
1096# CONFIG_CRYPTO_CRC32C is not set 1135# CONFIG_CRYPTO_CRC32C is not set
1097# CONFIG_CRYPTO_CAMELLIA is not set 1136# CONFIG_CRYPTO_CAMELLIA is not set
1098# CONFIG_CRYPTO_TEST is not set 1137# CONFIG_CRYPTO_TEST is not set
1099# CONFIG_CRYPTO_AUTHENC is not set 1138# CONFIG_CRYPTO_AUTHENC is not set
1139# CONFIG_CRYPTO_LZO is not set
1100CONFIG_CRYPTO_HW=y 1140CONFIG_CRYPTO_HW=y
1141# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1101 1142
1102# 1143#
1103# Library routines 1144# Library routines
diff --git a/arch/sh/configs/se7780_defconfig b/arch/sh/configs/se7780_defconfig
index f68743dc39..30f5ee40c3 100644
--- a/arch/sh/configs/se7780_defconfig
+++ b/arch/sh/configs/se7780_defconfig
@@ -1,9 +1,10 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.21-rc3 3# Linux kernel version: 2.6.25-rc3
4# Thu Mar 15 14:06:20 2007 4# Thu Feb 28 10:18:04 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 8CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_BUG=y 9CONFIG_GENERIC_BUG=y
9CONFIG_GENERIC_FIND_NEXT_BIT=y 10CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -11,38 +12,44 @@ CONFIG_GENERIC_HWEIGHT=y
11CONFIG_GENERIC_HARDIRQS=y 12CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y 13CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_GENERIC_CALIBRATE_DELAY=y 14CONFIG_GENERIC_CALIBRATE_DELAY=y
14# CONFIG_GENERIC_TIME is not set 15CONFIG_GENERIC_TIME=y
16CONFIG_GENERIC_CLOCKEVENTS=y
17CONFIG_SYS_SUPPORTS_PCI=y
15CONFIG_STACKTRACE_SUPPORT=y 18CONFIG_STACKTRACE_SUPPORT=y
16CONFIG_LOCKDEP_SUPPORT=y 19CONFIG_LOCKDEP_SUPPORT=y
17# CONFIG_ARCH_HAS_ILOG2_U32 is not set 20# CONFIG_ARCH_HAS_ILOG2_U32 is not set
18# CONFIG_ARCH_HAS_ILOG2_U64 is not set 21# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_ARCH_NO_VIRT_TO_BUS=y
23CONFIG_ARCH_SUPPORTS_AOUT=y
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20 25
21# 26#
22# Code maturity level options 27# General setup
23# 28#
24# CONFIG_EXPERIMENTAL is not set 29# CONFIG_EXPERIMENTAL is not set
25CONFIG_BROKEN_ON_SMP=y 30CONFIG_BROKEN_ON_SMP=y
26CONFIG_INIT_ENV_ARG_LIMIT=32 31CONFIG_INIT_ENV_ARG_LIMIT=32
27
28#
29# General setup
30#
31CONFIG_LOCALVERSION="" 32CONFIG_LOCALVERSION=""
32CONFIG_LOCALVERSION_AUTO=y 33CONFIG_LOCALVERSION_AUTO=y
33# CONFIG_SWAP is not set 34# CONFIG_SWAP is not set
34CONFIG_SYSVIPC=y 35CONFIG_SYSVIPC=y
35# CONFIG_IPC_NS is not set
36CONFIG_SYSVIPC_SYSCTL=y 36CONFIG_SYSVIPC_SYSCTL=y
37# CONFIG_BSD_PROCESS_ACCT is not set 37# CONFIG_BSD_PROCESS_ACCT is not set
38# CONFIG_TASKSTATS is not set 38# CONFIG_TASKSTATS is not set
39# CONFIG_UTS_NS is not set
40# CONFIG_AUDIT is not set 39# CONFIG_AUDIT is not set
41CONFIG_IKCONFIG=y 40CONFIG_IKCONFIG=y
42CONFIG_IKCONFIG_PROC=y 41CONFIG_IKCONFIG_PROC=y
42CONFIG_LOG_BUF_SHIFT=14
43# CONFIG_CGROUPS is not set
44CONFIG_GROUP_SCHED=y
45CONFIG_FAIR_GROUP_SCHED=y
46CONFIG_USER_SCHED=y
47# CONFIG_CGROUP_SCHED is not set
43CONFIG_SYSFS_DEPRECATED=y 48CONFIG_SYSFS_DEPRECATED=y
44# CONFIG_RELAY is not set 49# CONFIG_RELAY is not set
50# CONFIG_NAMESPACES is not set
45# CONFIG_BLK_DEV_INITRD is not set 51# CONFIG_BLK_DEV_INITRD is not set
52CONFIG_CC_OPTIMIZE_FOR_SIZE=y
46CONFIG_SYSCTL=y 53CONFIG_SYSCTL=y
47CONFIG_EMBEDDED=y 54CONFIG_EMBEDDED=y
48CONFIG_UID16=y 55CONFIG_UID16=y
@@ -52,31 +59,36 @@ CONFIG_SYSCTL_SYSCALL=y
52CONFIG_PRINTK=y 59CONFIG_PRINTK=y
53CONFIG_BUG=y 60CONFIG_BUG=y
54CONFIG_ELF_CORE=y 61CONFIG_ELF_CORE=y
62CONFIG_COMPAT_BRK=y
55CONFIG_BASE_FULL=y 63CONFIG_BASE_FULL=y
56CONFIG_FUTEX=y 64CONFIG_FUTEX=y
65CONFIG_ANON_INODES=y
57# CONFIG_EPOLL is not set 66# CONFIG_EPOLL is not set
67CONFIG_SIGNALFD=y
68CONFIG_TIMERFD=y
69CONFIG_EVENTFD=y
58CONFIG_SHMEM=y 70CONFIG_SHMEM=y
59CONFIG_SLAB=y
60CONFIG_VM_EVENT_COUNTERS=y 71CONFIG_VM_EVENT_COUNTERS=y
72CONFIG_SLAB=y
73# CONFIG_SLUB is not set
74# CONFIG_SLOB is not set
75# CONFIG_PROFILING is not set
76# CONFIG_MARKERS is not set
77CONFIG_HAVE_OPROFILE=y
78# CONFIG_HAVE_KPROBES is not set
79CONFIG_PROC_PAGE_MONITOR=y
80CONFIG_SLABINFO=y
61CONFIG_RT_MUTEXES=y 81CONFIG_RT_MUTEXES=y
62# CONFIG_TINY_SHMEM is not set 82# CONFIG_TINY_SHMEM is not set
63CONFIG_BASE_SMALL=0 83CONFIG_BASE_SMALL=0
64# CONFIG_SLOB is not set
65
66#
67# Loadable module support
68#
69CONFIG_MODULES=y 84CONFIG_MODULES=y
70CONFIG_MODULE_UNLOAD=y 85CONFIG_MODULE_UNLOAD=y
71# CONFIG_MODVERSIONS is not set 86# CONFIG_MODVERSIONS is not set
72# CONFIG_MODULE_SRCVERSION_ALL is not set 87# CONFIG_MODULE_SRCVERSION_ALL is not set
73CONFIG_KMOD=y 88CONFIG_KMOD=y
74
75#
76# Block layer
77#
78CONFIG_BLOCK=y 89CONFIG_BLOCK=y
79# CONFIG_LBD is not set 90# CONFIG_LBD is not set
91# CONFIG_BLK_DEV_IO_TRACE is not set
80# CONFIG_LSF is not set 92# CONFIG_LSF is not set
81 93
82# 94#
@@ -91,68 +103,27 @@ CONFIG_DEFAULT_DEADLINE=y
91# CONFIG_DEFAULT_CFQ is not set 103# CONFIG_DEFAULT_CFQ is not set
92# CONFIG_DEFAULT_NOOP is not set 104# CONFIG_DEFAULT_NOOP is not set
93CONFIG_DEFAULT_IOSCHED="deadline" 105CONFIG_DEFAULT_IOSCHED="deadline"
106CONFIG_CLASSIC_RCU=y
107# CONFIG_PREEMPT_RCU is not set
94 108
95# 109#
96# System type 110# System type
97# 111#
98CONFIG_SOLUTION_ENGINE=y
99# CONFIG_SH_SOLUTION_ENGINE is not set
100# CONFIG_SH_7751_SOLUTION_ENGINE is not set
101CONFIG_SH_7780_SOLUTION_ENGINE=y
102# CONFIG_SH_7300_SOLUTION_ENGINE is not set
103# CONFIG_SH_7343_SOLUTION_ENGINE is not set
104# CONFIG_SH_73180_SOLUTION_ENGINE is not set
105# CONFIG_SH_7751_SYSTEMH is not set
106# CONFIG_SH_HP6XX is not set
107# CONFIG_SH_SATURN is not set
108# CONFIG_SH_DREAMCAST is not set
109# CONFIG_SH_MPC1211 is not set
110# CONFIG_SH_SH03 is not set
111# CONFIG_SH_SECUREEDGE5410 is not set
112# CONFIG_SH_HS7751RVOIP is not set
113# CONFIG_SH_7710VOIPGW is not set
114# CONFIG_SH_RTS7751R2D is not set
115# CONFIG_SH_HIGHLANDER is not set
116# CONFIG_SH_EDOSK7705 is not set
117# CONFIG_SH_SH4202_MICRODEV is not set
118# CONFIG_SH_LANDISK is not set
119# CONFIG_SH_TITAN is not set
120# CONFIG_SH_SHMIN is not set
121# CONFIG_SH_7206_SOLUTION_ENGINE is not set
122# CONFIG_SH_7619_SOLUTION_ENGINE is not set
123# CONFIG_SH_UNKNOWN is not set
124
125#
126# Processor selection
127#
128CONFIG_CPU_SH4=y 112CONFIG_CPU_SH4=y
129CONFIG_CPU_SH4A=y 113CONFIG_CPU_SH4A=y
130
131#
132# SH-2 Processor Support
133#
134# CONFIG_CPU_SUBTYPE_SH7604 is not set
135# CONFIG_CPU_SUBTYPE_SH7619 is not set 114# CONFIG_CPU_SUBTYPE_SH7619 is not set
136 115# CONFIG_CPU_SUBTYPE_SH7203 is not set
137#
138# SH-2A Processor Support
139#
140# CONFIG_CPU_SUBTYPE_SH7206 is not set 116# CONFIG_CPU_SUBTYPE_SH7206 is not set
141 117# CONFIG_CPU_SUBTYPE_SH7263 is not set
142#
143# SH-3 Processor Support
144#
145# CONFIG_CPU_SUBTYPE_SH7300 is not set
146# CONFIG_CPU_SUBTYPE_SH7705 is not set 118# CONFIG_CPU_SUBTYPE_SH7705 is not set
147# CONFIG_CPU_SUBTYPE_SH7706 is not set 119# CONFIG_CPU_SUBTYPE_SH7706 is not set
148# CONFIG_CPU_SUBTYPE_SH7707 is not set 120# CONFIG_CPU_SUBTYPE_SH7707 is not set
149# CONFIG_CPU_SUBTYPE_SH7708 is not set 121# CONFIG_CPU_SUBTYPE_SH7708 is not set
150# CONFIG_CPU_SUBTYPE_SH7709 is not set 122# CONFIG_CPU_SUBTYPE_SH7709 is not set
151# CONFIG_CPU_SUBTYPE_SH7710 is not set 123# CONFIG_CPU_SUBTYPE_SH7710 is not set
152 124# CONFIG_CPU_SUBTYPE_SH7712 is not set
153# 125# CONFIG_CPU_SUBTYPE_SH7720 is not set
154# SH-4 Processor Support 126# CONFIG_CPU_SUBTYPE_SH7721 is not set
155#
156# CONFIG_CPU_SUBTYPE_SH7750 is not set 127# CONFIG_CPU_SUBTYPE_SH7750 is not set
157# CONFIG_CPU_SUBTYPE_SH7091 is not set 128# CONFIG_CPU_SUBTYPE_SH7091 is not set
158# CONFIG_CPU_SUBTYPE_SH7750R is not set 129# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -161,52 +132,58 @@ CONFIG_CPU_SH4A=y
161# CONFIG_CPU_SUBTYPE_SH7751R is not set 132# CONFIG_CPU_SUBTYPE_SH7751R is not set
162# CONFIG_CPU_SUBTYPE_SH7760 is not set 133# CONFIG_CPU_SUBTYPE_SH7760 is not set
163# CONFIG_CPU_SUBTYPE_SH4_202 is not set 134# CONFIG_CPU_SUBTYPE_SH4_202 is not set
164 135# CONFIG_CPU_SUBTYPE_SH7763 is not set
165#
166# ST40 Processor Support
167#
168# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
169# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
170
171#
172# SH-4A Processor Support
173#
174# CONFIG_CPU_SUBTYPE_SH7770 is not set 136# CONFIG_CPU_SUBTYPE_SH7770 is not set
175CONFIG_CPU_SUBTYPE_SH7780=y 137CONFIG_CPU_SUBTYPE_SH7780=y
176# CONFIG_CPU_SUBTYPE_SH7785 is not set 138# CONFIG_CPU_SUBTYPE_SH7785 is not set
177 139# CONFIG_CPU_SUBTYPE_SHX3 is not set
178#
179# SH4AL-DSP Processor Support
180#
181# CONFIG_CPU_SUBTYPE_SH73180 is not set
182# CONFIG_CPU_SUBTYPE_SH7343 is not set 140# CONFIG_CPU_SUBTYPE_SH7343 is not set
183# CONFIG_CPU_SUBTYPE_SH7722 is not set 141# CONFIG_CPU_SUBTYPE_SH7722 is not set
142# CONFIG_CPU_SUBTYPE_SH7366 is not set
143# CONFIG_CPU_SUBTYPE_SH5_101 is not set
144# CONFIG_CPU_SUBTYPE_SH5_103 is not set
184 145
185# 146#
186# Memory management options 147# Memory management options
187# 148#
149CONFIG_QUICKLIST=y
188CONFIG_MMU=y 150CONFIG_MMU=y
189CONFIG_PAGE_OFFSET=0x80000000 151CONFIG_PAGE_OFFSET=0x80000000
190CONFIG_MEMORY_START=0x08000000 152CONFIG_MEMORY_START=0x08000000
191CONFIG_MEMORY_SIZE=0x08000000 153CONFIG_MEMORY_SIZE=0x08000000
192CONFIG_32BIT=y 154CONFIG_29BIT=y
155# CONFIG_PMB is not set
193CONFIG_VSYSCALL=y 156CONFIG_VSYSCALL=y
157CONFIG_ARCH_FLATMEM_ENABLE=y
158CONFIG_ARCH_SPARSEMEM_ENABLE=y
159CONFIG_ARCH_SPARSEMEM_DEFAULT=y
160CONFIG_MAX_ACTIVE_REGIONS=1
161CONFIG_ARCH_POPULATES_NODE_MAP=y
162CONFIG_ARCH_SELECT_MEMORY_MODEL=y
163CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
194CONFIG_PAGE_SIZE_4KB=y 164CONFIG_PAGE_SIZE_4KB=y
195# CONFIG_PAGE_SIZE_8KB is not set 165# CONFIG_PAGE_SIZE_8KB is not set
196# CONFIG_PAGE_SIZE_64KB is not set 166# CONFIG_PAGE_SIZE_64KB is not set
197CONFIG_FLATMEM=y 167CONFIG_SELECT_MEMORY_MODEL=y
198CONFIG_FLAT_NODE_MEM_MAP=y 168# CONFIG_FLATMEM_MANUAL is not set
199# CONFIG_SPARSEMEM_STATIC is not set 169# CONFIG_DISCONTIGMEM_MANUAL is not set
170CONFIG_SPARSEMEM_MANUAL=y
171CONFIG_SPARSEMEM=y
172CONFIG_HAVE_MEMORY_PRESENT=y
173CONFIG_SPARSEMEM_STATIC=y
174# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
200CONFIG_SPLIT_PTLOCK_CPUS=4 175CONFIG_SPLIT_PTLOCK_CPUS=4
201# CONFIG_RESOURCES_64BIT is not set 176# CONFIG_RESOURCES_64BIT is not set
202CONFIG_ZONE_DMA_FLAG=0 177CONFIG_ZONE_DMA_FLAG=0
178CONFIG_NR_QUICK=2
203 179
204# 180#
205# Cache configuration 181# Cache configuration
206# 182#
207# CONFIG_SH_DIRECT_MAPPED is not set 183# CONFIG_SH_DIRECT_MAPPED is not set
208# CONFIG_SH_WRITETHROUGH is not set 184CONFIG_CACHE_WRITEBACK=y
209# CONFIG_SH_OCRAM is not set 185# CONFIG_CACHE_WRITETHROUGH is not set
186# CONFIG_CACHE_OFF is not set
210 187
211# 188#
212# Processor features 189# Processor features
@@ -214,20 +191,29 @@ CONFIG_ZONE_DMA_FLAG=0
214CONFIG_CPU_LITTLE_ENDIAN=y 191CONFIG_CPU_LITTLE_ENDIAN=y
215# CONFIG_CPU_BIG_ENDIAN is not set 192# CONFIG_CPU_BIG_ENDIAN is not set
216CONFIG_SH_FPU=y 193CONFIG_SH_FPU=y
217# CONFIG_SH_DSP is not set
218# CONFIG_SH_STORE_QUEUES is not set 194# CONFIG_SH_STORE_QUEUES is not set
219CONFIG_CPU_HAS_INTEVT=y 195CONFIG_CPU_HAS_INTEVT=y
220CONFIG_CPU_HAS_INTC2_IRQ=y
221CONFIG_CPU_HAS_INTC_IRQ=y
222CONFIG_CPU_HAS_SR_RB=y 196CONFIG_CPU_HAS_SR_RB=y
197CONFIG_CPU_HAS_FPU=y
198
199#
200# Board support
201#
202CONFIG_SOLUTION_ENGINE=y
203CONFIG_SH_7780_SOLUTION_ENGINE=y
204# CONFIG_SH_SDK7780 is not set
205# CONFIG_SH_HIGHLANDER is not set
223 206
224# 207#
225# Timer and clock configuration 208# Timer and clock configuration
226# 209#
227CONFIG_SH_TMU=y 210CONFIG_SH_TMU=y
228CONFIG_SH_TIMER_IRQ=28 211CONFIG_SH_TIMER_IRQ=28
229# CONFIG_NO_IDLE_HZ is not set
230CONFIG_SH_PCLK_FREQ=33333333 212CONFIG_SH_PCLK_FREQ=33333333
213# CONFIG_TICK_ONESHOT is not set
214# CONFIG_NO_HZ is not set
215# CONFIG_HIGH_RES_TIMERS is not set
216CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
231 217
232# 218#
233# CPU Frequency scaling 219# CPU Frequency scaling
@@ -242,7 +228,6 @@ CONFIG_SH_PCLK_FREQ=33333333
242# 228#
243# Companion Chips 229# Companion Chips
244# 230#
245# CONFIG_HD6446X_SERIES is not set
246 231
247# 232#
248# Additional SuperH Device Drivers 233# Additional SuperH Device Drivers
@@ -258,40 +243,36 @@ CONFIG_HZ_250=y
258# CONFIG_HZ_300 is not set 243# CONFIG_HZ_300 is not set
259# CONFIG_HZ_1000 is not set 244# CONFIG_HZ_1000 is not set
260CONFIG_HZ=250 245CONFIG_HZ=250
261# CONFIG_SMP is not set 246# CONFIG_SCHED_HRTICK is not set
262CONFIG_PREEMPT_NONE=y 247CONFIG_PREEMPT_NONE=y
263# CONFIG_PREEMPT_VOLUNTARY is not set 248# CONFIG_PREEMPT_VOLUNTARY is not set
264# CONFIG_PREEMPT is not set 249# CONFIG_PREEMPT is not set
250CONFIG_RCU_TRACE=y
251CONFIG_GUSA=y
265 252
266# 253#
267# Boot options 254# Boot options
268# 255#
269CONFIG_ZERO_PAGE_OFFSET=0x00001000 256CONFIG_ZERO_PAGE_OFFSET=0x00001000
270CONFIG_BOOT_LINK_OFFSET=0x00810000 257CONFIG_BOOT_LINK_OFFSET=0x00810000
271# CONFIG_UBC_WAKEUP is not set 258CONFIG_CMDLINE_BOOL=y
272# CONFIG_CMDLINE_BOOL is not set 259CONFIG_CMDLINE="console=ttySC0.115200 root=/dev/sda1"
273 260
274# 261#
275# Bus options 262# Bus options
276# 263#
264# CONFIG_CF_ENABLER is not set
277CONFIG_PCI=y 265CONFIG_PCI=y
278CONFIG_SH_PCIDMA_NONCOHERENT=y 266CONFIG_SH_PCIDMA_NONCOHERENT=y
279CONFIG_PCI_AUTO=y 267CONFIG_PCI_AUTO=y
280CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 268CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
281 269# CONFIG_ARCH_SUPPORTS_MSI is not set
282# 270CONFIG_PCI_LEGACY=y
283# PCCARD (PCMCIA/CardBus) support
284#
285
286#
287# PCI Hotplug Support
288#
289 271
290# 272#
291# Executable file formats 273# Executable file formats
292# 274#
293CONFIG_BINFMT_ELF=y 275CONFIG_BINFMT_ELF=y
294# CONFIG_BINFMT_FLAT is not set
295# CONFIG_BINFMT_MISC is not set 276# CONFIG_BINFMT_MISC is not set
296 277
297# 278#
@@ -302,7 +283,6 @@ CONFIG_NET=y
302# 283#
303# Networking options 284# Networking options
304# 285#
305# CONFIG_NETDEBUG is not set
306CONFIG_PACKET=y 286CONFIG_PACKET=y
307# CONFIG_PACKET_MMAP is not set 287# CONFIG_PACKET_MMAP is not set
308CONFIG_UNIX=y 288CONFIG_UNIX=y
@@ -329,6 +309,7 @@ CONFIG_IP_PNP=y
329CONFIG_INET_XFRM_MODE_TRANSPORT=y 309CONFIG_INET_XFRM_MODE_TRANSPORT=y
330CONFIG_INET_XFRM_MODE_TUNNEL=y 310CONFIG_INET_XFRM_MODE_TUNNEL=y
331CONFIG_INET_XFRM_MODE_BEET=y 311CONFIG_INET_XFRM_MODE_BEET=y
312# CONFIG_INET_LRO is not set
332CONFIG_INET_DIAG=y 313CONFIG_INET_DIAG=y
333CONFIG_INET_TCP_DIAG=y 314CONFIG_INET_TCP_DIAG=y
334# CONFIG_TCP_CONG_ADVANCED is not set 315# CONFIG_TCP_CONG_ADVANCED is not set
@@ -349,16 +330,13 @@ CONFIG_IPV6=y
349# CONFIG_IPV6_TUNNEL is not set 330# CONFIG_IPV6_TUNNEL is not set
350# CONFIG_NETWORK_SECMARK is not set 331# CONFIG_NETWORK_SECMARK is not set
351# CONFIG_NETFILTER is not set 332# CONFIG_NETFILTER is not set
333# CONFIG_ATM is not set
352# CONFIG_BRIDGE is not set 334# CONFIG_BRIDGE is not set
353# CONFIG_VLAN_8021Q is not set 335# CONFIG_VLAN_8021Q is not set
354# CONFIG_DECNET is not set 336# CONFIG_DECNET is not set
355# CONFIG_LLC2 is not set 337# CONFIG_LLC2 is not set
356# CONFIG_IPX is not set 338# CONFIG_IPX is not set
357# CONFIG_ATALK is not set 339# CONFIG_ATALK is not set
358
359#
360# QoS and/or fair queueing
361#
362# CONFIG_NET_SCHED is not set 340# CONFIG_NET_SCHED is not set
363 341
364# 342#
@@ -366,9 +344,18 @@ CONFIG_IPV6=y
366# 344#
367# CONFIG_NET_PKTGEN is not set 345# CONFIG_NET_PKTGEN is not set
368# CONFIG_HAMRADIO is not set 346# CONFIG_HAMRADIO is not set
347# CONFIG_CAN is not set
369# CONFIG_IRDA is not set 348# CONFIG_IRDA is not set
370# CONFIG_BT is not set 349# CONFIG_BT is not set
350
351#
352# Wireless
353#
354# CONFIG_CFG80211 is not set
355# CONFIG_WIRELESS_EXT is not set
356# CONFIG_MAC80211 is not set
371# CONFIG_IEEE80211 is not set 357# CONFIG_IEEE80211 is not set
358# CONFIG_RFKILL is not set
372 359
373# 360#
374# Device Drivers 361# Device Drivers
@@ -380,15 +367,7 @@ CONFIG_IPV6=y
380CONFIG_STANDALONE=y 367CONFIG_STANDALONE=y
381# CONFIG_PREVENT_FIRMWARE_BUILD is not set 368# CONFIG_PREVENT_FIRMWARE_BUILD is not set
382# CONFIG_SYS_HYPERVISOR is not set 369# CONFIG_SYS_HYPERVISOR is not set
383
384#
385# Connector - unified userspace <-> kernelspace linker
386#
387# CONFIG_CONNECTOR is not set 370# CONFIG_CONNECTOR is not set
388
389#
390# Memory Technology Devices (MTD)
391#
392CONFIG_MTD=y 371CONFIG_MTD=y
393# CONFIG_MTD_DEBUG is not set 372# CONFIG_MTD_DEBUG is not set
394# CONFIG_MTD_CONCAT is not set 373# CONFIG_MTD_CONCAT is not set
@@ -407,6 +386,7 @@ CONFIG_MTD_BLOCK=y
407# CONFIG_INFTL is not set 386# CONFIG_INFTL is not set
408# CONFIG_RFD_FTL is not set 387# CONFIG_RFD_FTL is not set
409# CONFIG_SSFDC is not set 388# CONFIG_SSFDC is not set
389# CONFIG_MTD_OOPS is not set
410 390
411# 391#
412# RAM/ROM/Flash chip drivers 392# RAM/ROM/Flash chip drivers
@@ -437,13 +417,13 @@ CONFIG_MTD_CFI_UTIL=y
437# CONFIG_MTD_RAM is not set 417# CONFIG_MTD_RAM is not set
438CONFIG_MTD_ROM=y 418CONFIG_MTD_ROM=y
439# CONFIG_MTD_ABSENT is not set 419# CONFIG_MTD_ABSENT is not set
440# CONFIG_MTD_OBSOLETE_CHIPS is not set
441 420
442# 421#
443# Mapping drivers for chip access 422# Mapping drivers for chip access
444# 423#
445# CONFIG_MTD_COMPLEX_MAPPINGS is not set 424# CONFIG_MTD_COMPLEX_MAPPINGS is not set
446# CONFIG_MTD_PHYSMAP is not set 425# CONFIG_MTD_PHYSMAP is not set
426# CONFIG_MTD_INTEL_VR_NOR is not set
447# CONFIG_MTD_PLATRAM is not set 427# CONFIG_MTD_PLATRAM is not set
448 428
449# 429#
@@ -461,31 +441,15 @@ CONFIG_MTD_ROM=y
461# CONFIG_MTD_DOC2000 is not set 441# CONFIG_MTD_DOC2000 is not set
462# CONFIG_MTD_DOC2001 is not set 442# CONFIG_MTD_DOC2001 is not set
463# CONFIG_MTD_DOC2001PLUS is not set 443# CONFIG_MTD_DOC2001PLUS is not set
464
465#
466# NAND Flash Device Drivers
467#
468# CONFIG_MTD_NAND is not set 444# CONFIG_MTD_NAND is not set
469
470#
471# OneNAND Flash Device Drivers
472#
473# CONFIG_MTD_ONENAND is not set 445# CONFIG_MTD_ONENAND is not set
474 446
475# 447#
476# Parallel port support 448# UBI - Unsorted block images
477# 449#
450# CONFIG_MTD_UBI is not set
478# CONFIG_PARPORT is not set 451# CONFIG_PARPORT is not set
479 452CONFIG_BLK_DEV=y
480#
481# Plug and Play support
482#
483# CONFIG_PNPACPI is not set
484
485#
486# Block devices
487#
488# CONFIG_BLK_CPQ_DA is not set
489# CONFIG_BLK_CPQ_CISS_DA is not set 453# CONFIG_BLK_CPQ_CISS_DA is not set
490# CONFIG_BLK_DEV_DAC960 is not set 454# CONFIG_BLK_DEV_DAC960 is not set
491# CONFIG_BLK_DEV_COW_COMMON is not set 455# CONFIG_BLK_DEV_COW_COMMON is not set
@@ -497,15 +461,12 @@ CONFIG_BLK_DEV_LOOP=y
497# CONFIG_BLK_DEV_RAM is not set 461# CONFIG_BLK_DEV_RAM is not set
498# CONFIG_CDROM_PKTCDVD is not set 462# CONFIG_CDROM_PKTCDVD is not set
499# CONFIG_ATA_OVER_ETH is not set 463# CONFIG_ATA_OVER_ETH is not set
500 464CONFIG_MISC_DEVICES=y
501# 465# CONFIG_PHANTOM is not set
502# Misc devices 466# CONFIG_EEPROM_93CX6 is not set
503#
504# CONFIG_SGI_IOC4 is not set 467# CONFIG_SGI_IOC4 is not set
505 468# CONFIG_ENCLOSURE_SERVICES is not set
506# 469CONFIG_HAVE_IDE=y
507# ATA/ATAPI/MFM/RLL support
508#
509# CONFIG_IDE is not set 470# CONFIG_IDE is not set
510 471
511# 472#
@@ -513,6 +474,7 @@ CONFIG_BLK_DEV_LOOP=y
513# 474#
514# CONFIG_RAID_ATTRS is not set 475# CONFIG_RAID_ATTRS is not set
515CONFIG_SCSI=y 476CONFIG_SCSI=y
477CONFIG_SCSI_DMA=y
516# CONFIG_SCSI_NETLINK is not set 478# CONFIG_SCSI_NETLINK is not set
517CONFIG_SCSI_PROC_FS=y 479CONFIG_SCSI_PROC_FS=y
518 480
@@ -533,6 +495,7 @@ CONFIG_CHR_DEV_SG=y
533# CONFIG_SCSI_CONSTANTS is not set 495# CONFIG_SCSI_CONSTANTS is not set
534# CONFIG_SCSI_LOGGING is not set 496# CONFIG_SCSI_LOGGING is not set
535# CONFIG_SCSI_SCAN_ASYNC is not set 497# CONFIG_SCSI_SCAN_ASYNC is not set
498CONFIG_SCSI_WAIT_SCAN=m
536 499
537# 500#
538# SCSI Transports 501# SCSI Transports
@@ -540,12 +503,9 @@ CONFIG_CHR_DEV_SG=y
540# CONFIG_SCSI_SPI_ATTRS is not set 503# CONFIG_SCSI_SPI_ATTRS is not set
541# CONFIG_SCSI_FC_ATTRS is not set 504# CONFIG_SCSI_FC_ATTRS is not set
542# CONFIG_SCSI_ISCSI_ATTRS is not set 505# CONFIG_SCSI_ISCSI_ATTRS is not set
543# CONFIG_SCSI_SAS_ATTRS is not set
544# CONFIG_SCSI_SAS_LIBSAS is not set 506# CONFIG_SCSI_SAS_LIBSAS is not set
545 507# CONFIG_SCSI_SRP_ATTRS is not set
546# 508CONFIG_SCSI_LOWLEVEL=y
547# SCSI low-level drivers
548#
549# CONFIG_ISCSI_TCP is not set 509# CONFIG_ISCSI_TCP is not set
550# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 510# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
551# CONFIG_SCSI_3W_9XXX is not set 511# CONFIG_SCSI_3W_9XXX is not set
@@ -555,7 +515,6 @@ CONFIG_CHR_DEV_SG=y
555# CONFIG_SCSI_AIC7XXX_OLD is not set 515# CONFIG_SCSI_AIC7XXX_OLD is not set
556# CONFIG_SCSI_AIC79XX is not set 516# CONFIG_SCSI_AIC79XX is not set
557# CONFIG_SCSI_AIC94XX is not set 517# CONFIG_SCSI_AIC94XX is not set
558# CONFIG_SCSI_DPT_I2O is not set
559# CONFIG_SCSI_ARCMSR is not set 518# CONFIG_SCSI_ARCMSR is not set
560# CONFIG_MEGARAID_NEWGEN is not set 519# CONFIG_MEGARAID_NEWGEN is not set
561# CONFIG_MEGARAID_LEGACY is not set 520# CONFIG_MEGARAID_LEGACY is not set
@@ -566,6 +525,7 @@ CONFIG_CHR_DEV_SG=y
566# CONFIG_SCSI_IPS is not set 525# CONFIG_SCSI_IPS is not set
567# CONFIG_SCSI_INITIO is not set 526# CONFIG_SCSI_INITIO is not set
568# CONFIG_SCSI_INIA100 is not set 527# CONFIG_SCSI_INIA100 is not set
528# CONFIG_SCSI_MVSAS is not set
569# CONFIG_SCSI_STEX is not set 529# CONFIG_SCSI_STEX is not set
570# CONFIG_SCSI_SYM53C8XX_2 is not set 530# CONFIG_SCSI_SYM53C8XX_2 is not set
571# CONFIG_SCSI_IPR is not set 531# CONFIG_SCSI_IPR is not set
@@ -577,10 +537,6 @@ CONFIG_CHR_DEV_SG=y
577# CONFIG_SCSI_NSP32 is not set 537# CONFIG_SCSI_NSP32 is not set
578# CONFIG_SCSI_DEBUG is not set 538# CONFIG_SCSI_DEBUG is not set
579# CONFIG_SCSI_SRP is not set 539# CONFIG_SCSI_SRP is not set
580
581#
582# Serial ATA (prod) and Parallel ATA (experimental) drivers
583#
584CONFIG_ATA=y 540CONFIG_ATA=y
585# CONFIG_ATA_NONSTANDARD is not set 541# CONFIG_ATA_NONSTANDARD is not set
586# CONFIG_SATA_AHCI is not set 542# CONFIG_SATA_AHCI is not set
@@ -597,62 +553,48 @@ CONFIG_SATA_SIL=y
597# CONFIG_SATA_VIA is not set 553# CONFIG_SATA_VIA is not set
598# CONFIG_SATA_VITESSE is not set 554# CONFIG_SATA_VITESSE is not set
599# CONFIG_PATA_AMD is not set 555# CONFIG_PATA_AMD is not set
556# CONFIG_PATA_ARTOP is not set
557# CONFIG_PATA_ATIIXP is not set
558# CONFIG_PATA_CMD64X is not set
600# CONFIG_PATA_CS5520 is not set 559# CONFIG_PATA_CS5520 is not set
601# CONFIG_PATA_EFAR is not set 560# CONFIG_PATA_EFAR is not set
602# CONFIG_ATA_GENERIC is not set 561# CONFIG_ATA_GENERIC is not set
562# CONFIG_PATA_HPT366 is not set
603# CONFIG_PATA_HPT3X3 is not set 563# CONFIG_PATA_HPT3X3 is not set
564# CONFIG_PATA_IT821X is not set
604# CONFIG_PATA_JMICRON is not set 565# CONFIG_PATA_JMICRON is not set
605# CONFIG_PATA_TRIFLEX is not set 566# CONFIG_PATA_TRIFLEX is not set
606# CONFIG_PATA_MARVELL is not set 567# CONFIG_PATA_MARVELL is not set
607# CONFIG_PATA_MPIIX is not set 568# CONFIG_PATA_MPIIX is not set
569# CONFIG_PATA_OLDPIIX is not set
608# CONFIG_PATA_NETCELL is not set 570# CONFIG_PATA_NETCELL is not set
609# CONFIG_PATA_RZ1000 is not set 571# CONFIG_PATA_RZ1000 is not set
572# CONFIG_PATA_SERVERWORKS is not set
610# CONFIG_PATA_PDC2027X is not set 573# CONFIG_PATA_PDC2027X is not set
611# CONFIG_PATA_SIL680 is not set 574# CONFIG_PATA_SIL680 is not set
612# CONFIG_PATA_VIA is not set 575# CONFIG_PATA_VIA is not set
613# CONFIG_PATA_WINBOND is not set 576# CONFIG_PATA_WINBOND is not set
614# CONFIG_PATA_PLATFORM is not set 577# CONFIG_PATA_PLATFORM is not set
615
616#
617# Multi-device support (RAID and LVM)
618#
619# CONFIG_MD is not set 578# CONFIG_MD is not set
620
621#
622# Fusion MPT device support
623#
624# CONFIG_FUSION is not set 579# CONFIG_FUSION is not set
625# CONFIG_FUSION_SPI is not set
626# CONFIG_FUSION_FC is not set
627# CONFIG_FUSION_SAS is not set
628 580
629# 581#
630# IEEE 1394 (FireWire) support 582# IEEE 1394 (FireWire) support
631# 583#
632# CONFIG_IEEE1394 is not set
633 584
634# 585#
635# I2O device support 586# An alternative FireWire stack is available with EXPERIMENTAL=y
636# 587#
588# CONFIG_IEEE1394 is not set
637# CONFIG_I2O is not set 589# CONFIG_I2O is not set
638
639#
640# Network device support
641#
642CONFIG_NETDEVICES=y 590CONFIG_NETDEVICES=y
591# CONFIG_NETDEVICES_MULTIQUEUE is not set
643# CONFIG_DUMMY is not set 592# CONFIG_DUMMY is not set
644# CONFIG_BONDING is not set 593# CONFIG_BONDING is not set
645# CONFIG_EQUALIZER is not set 594# CONFIG_EQUALIZER is not set
646# CONFIG_TUN is not set 595# CONFIG_TUN is not set
647 596# CONFIG_VETH is not set
648#
649# ARCnet devices
650#
651# CONFIG_ARCNET is not set 597# CONFIG_ARCNET is not set
652
653#
654# PHY device support
655#
656CONFIG_PHYLIB=y 598CONFIG_PHYLIB=y
657 599
658# 600#
@@ -666,85 +608,59 @@ CONFIG_PHYLIB=y
666# CONFIG_VITESSE_PHY is not set 608# CONFIG_VITESSE_PHY is not set
667CONFIG_SMSC_PHY=y 609CONFIG_SMSC_PHY=y
668# CONFIG_BROADCOM_PHY is not set 610# CONFIG_BROADCOM_PHY is not set
611# CONFIG_ICPLUS_PHY is not set
612# CONFIG_REALTEK_PHY is not set
669# CONFIG_FIXED_PHY is not set 613# CONFIG_FIXED_PHY is not set
670 614# CONFIG_MDIO_BITBANG is not set
671#
672# Ethernet (10 or 100Mbit)
673#
674CONFIG_NET_ETHERNET=y 615CONFIG_NET_ETHERNET=y
675CONFIG_MII=y 616CONFIG_MII=y
617# CONFIG_AX88796 is not set
676# CONFIG_STNIC is not set 618# CONFIG_STNIC is not set
677# CONFIG_HAPPYMEAL is not set 619# CONFIG_HAPPYMEAL is not set
678# CONFIG_SUNGEM is not set 620# CONFIG_SUNGEM is not set
679# CONFIG_CASSINI is not set 621# CONFIG_CASSINI is not set
680# CONFIG_NET_VENDOR_3COM is not set 622# CONFIG_NET_VENDOR_3COM is not set
681CONFIG_SMC91X=y 623CONFIG_SMC91X=y
682
683#
684# Tulip family network device support
685#
686# CONFIG_NET_TULIP is not set 624# CONFIG_NET_TULIP is not set
687# CONFIG_HP100 is not set 625# CONFIG_HP100 is not set
626# CONFIG_IBM_NEW_EMAC_ZMII is not set
627# CONFIG_IBM_NEW_EMAC_RGMII is not set
628# CONFIG_IBM_NEW_EMAC_TAH is not set
629# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
688CONFIG_NET_PCI=y 630CONFIG_NET_PCI=y
689# CONFIG_PCNET32 is not set 631# CONFIG_PCNET32 is not set
690# CONFIG_AMD8111_ETH is not set 632# CONFIG_AMD8111_ETH is not set
691# CONFIG_ADAPTEC_STARFIRE is not set 633# CONFIG_ADAPTEC_STARFIRE is not set
692# CONFIG_B44 is not set 634# CONFIG_B44 is not set
693# CONFIG_FORCEDETH is not set 635# CONFIG_FORCEDETH is not set
694# CONFIG_DGRS is not set
695# CONFIG_EEPRO100 is not set 636# CONFIG_EEPRO100 is not set
696# CONFIG_E100 is not set 637# CONFIG_E100 is not set
697# CONFIG_FEALNX is not set 638# CONFIG_FEALNX is not set
698# CONFIG_NATSEMI is not set 639# CONFIG_NATSEMI is not set
699# CONFIG_NE2K_PCI is not set 640# CONFIG_NE2K_PCI is not set
700# CONFIG_8139TOO is not set 641# CONFIG_8139TOO is not set
642# CONFIG_R6040 is not set
701# CONFIG_SIS900 is not set 643# CONFIG_SIS900 is not set
702# CONFIG_EPIC100 is not set 644# CONFIG_EPIC100 is not set
703# CONFIG_SUNDANCE is not set 645# CONFIG_SUNDANCE is not set
704# CONFIG_TLAN is not set 646# CONFIG_TLAN is not set
705# CONFIG_VIA_RHINE is not set 647# CONFIG_VIA_RHINE is not set
706 648# CONFIG_NETDEV_1000 is not set
707# 649# CONFIG_NETDEV_10000 is not set
708# Ethernet (1000 Mbit)
709#
710# CONFIG_ACENIC is not set
711# CONFIG_DL2K is not set
712# CONFIG_E1000 is not set
713# CONFIG_NS83820 is not set
714# CONFIG_HAMACHI is not set
715# CONFIG_R8169 is not set
716# CONFIG_SIS190 is not set
717# CONFIG_SKGE is not set
718# CONFIG_SKY2 is not set
719# CONFIG_SK98LIN is not set
720# CONFIG_VIA_VELOCITY is not set
721# CONFIG_TIGON3 is not set
722# CONFIG_BNX2 is not set
723# CONFIG_QLA3XXX is not set
724
725#
726# Ethernet (10000 Mbit)
727#
728# CONFIG_CHELSIO_T1 is not set
729# CONFIG_CHELSIO_T3 is not set
730# CONFIG_IXGB is not set
731# CONFIG_S2IO is not set
732# CONFIG_MYRI10GE is not set
733# CONFIG_NETXEN_NIC is not set
734
735#
736# Token Ring devices
737#
738# CONFIG_TR is not set 650# CONFIG_TR is not set
739 651
740# 652#
741# Wireless LAN (non-hamradio) 653# Wireless LAN
742# 654#
743# CONFIG_NET_RADIO is not set 655# CONFIG_WLAN_PRE80211 is not set
656# CONFIG_WLAN_80211 is not set
744 657
745# 658#
746# Wan interfaces 659# USB Network Adapters
747# 660#
661# CONFIG_USB_KAWETH is not set
662# CONFIG_USB_PEGASUS is not set
663# CONFIG_USB_USBNET is not set
748# CONFIG_WAN is not set 664# CONFIG_WAN is not set
749# CONFIG_FDDI is not set 665# CONFIG_FDDI is not set
750# CONFIG_PPP is not set 666# CONFIG_PPP is not set
@@ -752,15 +668,7 @@ CONFIG_NET_PCI=y
752# CONFIG_NET_FC is not set 668# CONFIG_NET_FC is not set
753# CONFIG_NETPOLL is not set 669# CONFIG_NETPOLL is not set
754# CONFIG_NET_POLL_CONTROLLER is not set 670# CONFIG_NET_POLL_CONTROLLER is not set
755
756#
757# ISDN subsystem
758#
759# CONFIG_ISDN is not set 671# CONFIG_ISDN is not set
760
761#
762# Telephony Support
763#
764# CONFIG_PHONE is not set 672# CONFIG_PHONE is not set
765 673
766# 674#
@@ -768,6 +676,7 @@ CONFIG_NET_PCI=y
768# 676#
769CONFIG_INPUT=y 677CONFIG_INPUT=y
770# CONFIG_INPUT_FF_MEMLESS is not set 678# CONFIG_INPUT_FF_MEMLESS is not set
679# CONFIG_INPUT_POLLDEV is not set
771 680
772# 681#
773# Userland interfaces 682# Userland interfaces
@@ -777,7 +686,6 @@ CONFIG_INPUT_MOUSEDEV=y
777CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 686CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
778CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 687CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
779# CONFIG_INPUT_JOYDEV is not set 688# CONFIG_INPUT_JOYDEV is not set
780# CONFIG_INPUT_TSDEV is not set
781# CONFIG_INPUT_EVDEV is not set 689# CONFIG_INPUT_EVDEV is not set
782# CONFIG_INPUT_EVBUG is not set 690# CONFIG_INPUT_EVBUG is not set
783 691
@@ -787,6 +695,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
787# CONFIG_INPUT_KEYBOARD is not set 695# CONFIG_INPUT_KEYBOARD is not set
788# CONFIG_INPUT_MOUSE is not set 696# CONFIG_INPUT_MOUSE is not set
789# CONFIG_INPUT_JOYSTICK is not set 697# CONFIG_INPUT_JOYSTICK is not set
698# CONFIG_INPUT_TABLET is not set
790# CONFIG_INPUT_TOUCHSCREEN is not set 699# CONFIG_INPUT_TOUCHSCREEN is not set
791# CONFIG_INPUT_MISC is not set 700# CONFIG_INPUT_MISC is not set
792 701
@@ -821,31 +730,12 @@ CONFIG_SERIAL_CORE_CONSOLE=y
821# CONFIG_SERIAL_JSM is not set 730# CONFIG_SERIAL_JSM is not set
822CONFIG_UNIX98_PTYS=y 731CONFIG_UNIX98_PTYS=y
823# CONFIG_LEGACY_PTYS is not set 732# CONFIG_LEGACY_PTYS is not set
824
825#
826# IPMI
827#
828# CONFIG_IPMI_HANDLER is not set 733# CONFIG_IPMI_HANDLER is not set
829
830#
831# Watchdog Cards
832#
833# CONFIG_WATCHDOG is not set
834# CONFIG_HW_RANDOM is not set 734# CONFIG_HW_RANDOM is not set
835# CONFIG_GEN_RTC is not set
836# CONFIG_DTLK is not set
837# CONFIG_R3964 is not set 735# CONFIG_R3964 is not set
838# CONFIG_APPLICOM is not set 736# CONFIG_APPLICOM is not set
839# CONFIG_DRM is not set
840# CONFIG_RAW_DRIVER is not set 737# CONFIG_RAW_DRIVER is not set
841 738CONFIG_DEVPORT=y
842#
843# TPM devices
844#
845
846#
847# I2C support
848#
849# CONFIG_I2C is not set 739# CONFIG_I2C is not set
850 740
851# 741#
@@ -853,18 +743,27 @@ CONFIG_UNIX98_PTYS=y
853# 743#
854# CONFIG_SPI is not set 744# CONFIG_SPI is not set
855# CONFIG_SPI_MASTER is not set 745# CONFIG_SPI_MASTER is not set
856
857#
858# Dallas's 1-wire bus
859#
860# CONFIG_W1 is not set 746# CONFIG_W1 is not set
861 747# CONFIG_POWER_SUPPLY is not set
862#
863# Hardware Monitoring support
864#
865CONFIG_HWMON=y 748CONFIG_HWMON=y
866# CONFIG_HWMON_VID is not set 749# CONFIG_HWMON_VID is not set
750# CONFIG_SENSORS_IT87 is not set
751# CONFIG_SENSORS_PC87360 is not set
752# CONFIG_SENSORS_SIS5595 is not set
753# CONFIG_SENSORS_SMSC47M1 is not set
754# CONFIG_SENSORS_VIA686A is not set
755# CONFIG_SENSORS_VT8231 is not set
756# CONFIG_SENSORS_W83627HF is not set
757# CONFIG_SENSORS_W83627EHF is not set
867# CONFIG_HWMON_DEBUG_CHIP is not set 758# CONFIG_HWMON_DEBUG_CHIP is not set
759CONFIG_THERMAL=y
760# CONFIG_WATCHDOG is not set
761
762#
763# Sonics Silicon Backplane
764#
765CONFIG_SSB_POSSIBLE=y
766# CONFIG_SSB is not set
868 767
869# 768#
870# Multifunction device drivers 769# Multifunction device drivers
@@ -875,23 +774,27 @@ CONFIG_HWMON=y
875# Multimedia devices 774# Multimedia devices
876# 775#
877# CONFIG_VIDEO_DEV is not set 776# CONFIG_VIDEO_DEV is not set
878 777# CONFIG_DVB_CORE is not set
879# 778# CONFIG_DAB is not set
880# Digital Video Broadcasting Devices
881#
882# CONFIG_DVB is not set
883# CONFIG_USB_DABUSB is not set
884 779
885# 780#
886# Graphics support 781# Graphics support
887# 782#
888# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 783# CONFIG_DRM is not set
784# CONFIG_VGASTATE is not set
785# CONFIG_VIDEO_OUTPUT_CONTROL is not set
889CONFIG_FB=y 786CONFIG_FB=y
890CONFIG_FIRMWARE_EDID=y 787CONFIG_FIRMWARE_EDID=y
891# CONFIG_FB_DDC is not set 788# CONFIG_FB_DDC is not set
892# CONFIG_FB_CFB_FILLRECT is not set 789# CONFIG_FB_CFB_FILLRECT is not set
893# CONFIG_FB_CFB_COPYAREA is not set 790# CONFIG_FB_CFB_COPYAREA is not set
894# CONFIG_FB_CFB_IMAGEBLIT is not set 791# CONFIG_FB_CFB_IMAGEBLIT is not set
792# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
793# CONFIG_FB_SYS_FILLRECT is not set
794# CONFIG_FB_SYS_COPYAREA is not set
795# CONFIG_FB_SYS_IMAGEBLIT is not set
796# CONFIG_FB_SYS_FOPS is not set
797CONFIG_FB_DEFERRED_IO=y
895# CONFIG_FB_SVGALIB is not set 798# CONFIG_FB_SVGALIB is not set
896# CONFIG_FB_MACMODES is not set 799# CONFIG_FB_MACMODES is not set
897# CONFIG_FB_BACKLIGHT is not set 800# CONFIG_FB_BACKLIGHT is not set
@@ -899,14 +802,13 @@ CONFIG_FIRMWARE_EDID=y
899# CONFIG_FB_TILEBLITTING is not set 802# CONFIG_FB_TILEBLITTING is not set
900 803
901# 804#
902# Frambuffer hardware drivers 805# Frame buffer hardware drivers
903# 806#
904# CONFIG_FB_CIRRUS is not set 807# CONFIG_FB_CIRRUS is not set
905# CONFIG_FB_PM2 is not set 808# CONFIG_FB_PM2 is not set
906# CONFIG_FB_CYBER2000 is not set 809# CONFIG_FB_CYBER2000 is not set
907# CONFIG_FB_ASILIANT is not set 810# CONFIG_FB_ASILIANT is not set
908# CONFIG_FB_IMSTT is not set 811# CONFIG_FB_IMSTT is not set
909# CONFIG_FB_EPSON1355 is not set
910# CONFIG_FB_S1D13XXX is not set 812# CONFIG_FB_S1D13XXX is not set
911# CONFIG_FB_NVIDIA is not set 813# CONFIG_FB_NVIDIA is not set
912# CONFIG_FB_RIVA is not set 814# CONFIG_FB_RIVA is not set
@@ -920,22 +822,27 @@ CONFIG_FIRMWARE_EDID=y
920# CONFIG_FB_KYRO is not set 822# CONFIG_FB_KYRO is not set
921# CONFIG_FB_3DFX is not set 823# CONFIG_FB_3DFX is not set
922# CONFIG_FB_VOODOO1 is not set 824# CONFIG_FB_VOODOO1 is not set
825# CONFIG_FB_VT8623 is not set
923# CONFIG_FB_TRIDENT is not set 826# CONFIG_FB_TRIDENT is not set
827# CONFIG_FB_ARK is not set
924# CONFIG_FB_VIRTUAL is not set 828# CONFIG_FB_VIRTUAL is not set
829# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
830
831#
832# Display device support
833#
834# CONFIG_DISPLAY_SUPPORT is not set
925 835
926# 836#
927# Console display driver support 837# Console display driver support
928# 838#
929CONFIG_DUMMY_CONSOLE=y 839CONFIG_DUMMY_CONSOLE=y
930CONFIG_FRAMEBUFFER_CONSOLE=y 840CONFIG_FRAMEBUFFER_CONSOLE=y
841# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
931# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set 842# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
932# CONFIG_FONTS is not set 843# CONFIG_FONTS is not set
933CONFIG_FONT_8x8=y 844CONFIG_FONT_8x8=y
934CONFIG_FONT_8x16=y 845CONFIG_FONT_8x16=y
935
936#
937# Logo configuration
938#
939CONFIG_LOGO=y 846CONFIG_LOGO=y
940# CONFIG_LOGO_LINUX_MONO is not set 847# CONFIG_LOGO_LINUX_MONO is not set
941# CONFIG_LOGO_LINUX_VGA16 is not set 848# CONFIG_LOGO_LINUX_VGA16 is not set
@@ -958,39 +865,38 @@ CONFIG_SOUND=y
958# Open Sound System 865# Open Sound System
959# 866#
960CONFIG_SOUND_PRIME=y 867CONFIG_SOUND_PRIME=y
961# CONFIG_OBSOLETE_OSS is not set
962# CONFIG_SOUND_BT878 is not set
963# CONFIG_SOUND_ICH is not set
964# CONFIG_SOUND_TRIDENT is not set 868# CONFIG_SOUND_TRIDENT is not set
965# CONFIG_SOUND_MSNDCLAS is not set 869# CONFIG_SOUND_MSNDCLAS is not set
966# CONFIG_SOUND_MSNDPIN is not set 870# CONFIG_SOUND_MSNDPIN is not set
967# CONFIG_SOUND_VIA82CXXX is not set 871CONFIG_HID_SUPPORT=y
968
969#
970# HID Devices
971#
972CONFIG_HID=y 872CONFIG_HID=y
973# CONFIG_HID_DEBUG is not set 873# CONFIG_HID_DEBUG is not set
874# CONFIG_HIDRAW is not set
974 875
975# 876#
976# USB support 877# USB Input Devices
977# 878#
879CONFIG_USB_HID=y
880# CONFIG_USB_HIDINPUT_POWERBOOK is not set
881# CONFIG_USB_HIDDEV is not set
882CONFIG_USB_SUPPORT=y
978CONFIG_USB_ARCH_HAS_HCD=y 883CONFIG_USB_ARCH_HAS_HCD=y
979CONFIG_USB_ARCH_HAS_OHCI=y 884CONFIG_USB_ARCH_HAS_OHCI=y
980CONFIG_USB_ARCH_HAS_EHCI=y 885CONFIG_USB_ARCH_HAS_EHCI=y
981CONFIG_USB=y 886CONFIG_USB=y
982CONFIG_USB_DEBUG=y 887# CONFIG_USB_DEBUG is not set
888# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
983 889
984# 890#
985# Miscellaneous USB options 891# Miscellaneous USB options
986# 892#
987CONFIG_USB_DEVICEFS=y 893CONFIG_USB_DEVICEFS=y
894# CONFIG_USB_DEVICE_CLASS is not set
988 895
989# 896#
990# USB Host Controller Drivers 897# USB Host Controller Drivers
991# 898#
992CONFIG_USB_EHCI_HCD=y 899CONFIG_USB_EHCI_HCD=y
993# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
994# CONFIG_USB_ISP116X_HCD is not set 900# CONFIG_USB_ISP116X_HCD is not set
995CONFIG_USB_OHCI_HCD=y 901CONFIG_USB_OHCI_HCD=y
996# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 902# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
@@ -998,6 +904,7 @@ CONFIG_USB_OHCI_HCD=y
998CONFIG_USB_OHCI_LITTLE_ENDIAN=y 904CONFIG_USB_OHCI_LITTLE_ENDIAN=y
999# CONFIG_USB_UHCI_HCD is not set 905# CONFIG_USB_UHCI_HCD is not set
1000# CONFIG_USB_SL811_HCD is not set 906# CONFIG_USB_SL811_HCD is not set
907# CONFIG_USB_R8A66597_HCD is not set
1001 908
1002# 909#
1003# USB Device Class drivers 910# USB Device Class drivers
@@ -1015,49 +922,20 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1015CONFIG_USB_STORAGE=y 922CONFIG_USB_STORAGE=y
1016# CONFIG_USB_STORAGE_DEBUG is not set 923# CONFIG_USB_STORAGE_DEBUG is not set
1017# CONFIG_USB_STORAGE_FREECOM is not set 924# CONFIG_USB_STORAGE_FREECOM is not set
925# CONFIG_USB_STORAGE_ISD200 is not set
1018# CONFIG_USB_STORAGE_DPCM is not set 926# CONFIG_USB_STORAGE_DPCM is not set
1019# CONFIG_USB_STORAGE_KARMA is not set 927# CONFIG_USB_STORAGE_KARMA is not set
1020# CONFIG_USB_LIBUSUAL is not set 928# CONFIG_USB_LIBUSUAL is not set
1021 929
1022# 930#
1023# USB Input Devices
1024#
1025CONFIG_USB_HID=y
1026# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1027# CONFIG_USB_HIDDEV is not set
1028# CONFIG_USB_AIPTEK is not set
1029# CONFIG_USB_WACOM is not set
1030# CONFIG_USB_ACECAD is not set
1031# CONFIG_USB_KBTAB is not set
1032# CONFIG_USB_POWERMATE is not set
1033# CONFIG_USB_TOUCHSCREEN is not set
1034# CONFIG_USB_XPAD is not set
1035# CONFIG_USB_ATI_REMOTE is not set
1036# CONFIG_USB_ATI_REMOTE2 is not set
1037# CONFIG_USB_APPLETOUCH is not set
1038# CONFIG_USB_GTCO is not set
1039
1040#
1041# USB Imaging devices 931# USB Imaging devices
1042# 932#
1043# CONFIG_USB_MICROTEK is not set 933# CONFIG_USB_MICROTEK is not set
1044
1045#
1046# USB Network Adapters
1047#
1048# CONFIG_USB_KAWETH is not set
1049# CONFIG_USB_PEGASUS is not set
1050# CONFIG_USB_USBNET_MII is not set
1051# CONFIG_USB_USBNET is not set
1052CONFIG_USB_MON=y 934CONFIG_USB_MON=y
1053 935
1054# 936#
1055# USB port drivers 937# USB port drivers
1056# 938#
1057
1058#
1059# USB Serial Converter support
1060#
1061# CONFIG_USB_SERIAL is not set 939# CONFIG_USB_SERIAL is not set
1062 940
1063# 941#
@@ -1078,67 +956,17 @@ CONFIG_USB_MON=y
1078# CONFIG_USB_LD is not set 956# CONFIG_USB_LD is not set
1079# CONFIG_USB_TRANCEVIBRATOR is not set 957# CONFIG_USB_TRANCEVIBRATOR is not set
1080# CONFIG_USB_IOWARRIOR is not set 958# CONFIG_USB_IOWARRIOR is not set
1081
1082#
1083# USB DSL modem support
1084#
1085
1086#
1087# USB Gadget Support
1088#
1089# CONFIG_USB_GADGET is not set 959# CONFIG_USB_GADGET is not set
1090
1091#
1092# MMC/SD Card support
1093#
1094# CONFIG_MMC is not set 960# CONFIG_MMC is not set
1095 961# CONFIG_MEMSTICK is not set
1096#
1097# LED devices
1098#
1099# CONFIG_NEW_LEDS is not set 962# CONFIG_NEW_LEDS is not set
1100
1101#
1102# LED drivers
1103#
1104
1105#
1106# LED Triggers
1107#
1108
1109#
1110# InfiniBand support
1111#
1112# CONFIG_INFINIBAND is not set 963# CONFIG_INFINIBAND is not set
964# CONFIG_RTC_CLASS is not set
1113 965
1114# 966#
1115# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 967# Userspace I/O
1116#
1117
1118#
1119# Real Time Clock
1120#
1121
1122#
1123# DMA Engine support
1124#
1125# CONFIG_DMA_ENGINE is not set
1126
1127#
1128# DMA Clients
1129#
1130
1131#
1132# DMA Devices
1133#
1134
1135#
1136# Auxiliary Display support
1137#
1138
1139#
1140# Virtualization
1141# 968#
969# CONFIG_UIO is not set
1142 970
1143# 971#
1144# File systems 972# File systems
@@ -1151,12 +979,11 @@ CONFIG_EXT2_FS=y
1151# CONFIG_JFS_FS is not set 979# CONFIG_JFS_FS is not set
1152# CONFIG_FS_POSIX_ACL is not set 980# CONFIG_FS_POSIX_ACL is not set
1153# CONFIG_XFS_FS is not set 981# CONFIG_XFS_FS is not set
1154# CONFIG_MINIX_FS is not set 982# CONFIG_OCFS2_FS is not set
1155# CONFIG_ROMFS_FS is not set 983# CONFIG_DNOTIFY is not set
1156CONFIG_INOTIFY=y 984CONFIG_INOTIFY=y
1157CONFIG_INOTIFY_USER=y 985CONFIG_INOTIFY_USER=y
1158# CONFIG_QUOTA is not set 986# CONFIG_QUOTA is not set
1159# CONFIG_DNOTIFY is not set
1160# CONFIG_AUTOFS_FS is not set 987# CONFIG_AUTOFS_FS is not set
1161# CONFIG_AUTOFS4_FS is not set 988# CONFIG_AUTOFS4_FS is not set
1162# CONFIG_FUSE_FS is not set 989# CONFIG_FUSE_FS is not set
@@ -1181,14 +1008,14 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1181# Pseudo filesystems 1008# Pseudo filesystems
1182# 1009#
1183CONFIG_PROC_FS=y 1010CONFIG_PROC_FS=y
1184# CONFIG_PROC_KCORE is not set 1011CONFIG_PROC_KCORE=y
1185CONFIG_PROC_SYSCTL=y 1012CONFIG_PROC_SYSCTL=y
1186# CONFIG_SYSFS is not set 1013CONFIG_SYSFS=y
1187CONFIG_TMPFS=y 1014CONFIG_TMPFS=y
1188# CONFIG_TMPFS_POSIX_ACL is not set 1015# CONFIG_TMPFS_POSIX_ACL is not set
1189# CONFIG_HUGETLBFS is not set 1016# CONFIG_HUGETLBFS is not set
1190# CONFIG_HUGETLB_PAGE is not set 1017# CONFIG_HUGETLB_PAGE is not set
1191CONFIG_RAMFS=y 1018# CONFIG_CONFIGFS_FS is not set
1192 1019
1193# 1020#
1194# Miscellaneous filesystems 1021# Miscellaneous filesystems
@@ -1197,14 +1024,13 @@ CONFIG_RAMFS=y
1197# CONFIG_JFFS2_FS is not set 1024# CONFIG_JFFS2_FS is not set
1198CONFIG_CRAMFS=y 1025CONFIG_CRAMFS=y
1199# CONFIG_VXFS_FS is not set 1026# CONFIG_VXFS_FS is not set
1027# CONFIG_MINIX_FS is not set
1200# CONFIG_HPFS_FS is not set 1028# CONFIG_HPFS_FS is not set
1201# CONFIG_QNX4FS_FS is not set 1029# CONFIG_QNX4FS_FS is not set
1030# CONFIG_ROMFS_FS is not set
1202# CONFIG_SYSV_FS is not set 1031# CONFIG_SYSV_FS is not set
1203# CONFIG_UFS_FS is not set 1032# CONFIG_UFS_FS is not set
1204 1033CONFIG_NETWORK_FILESYSTEMS=y
1205#
1206# Network File Systems
1207#
1208CONFIG_NFS_FS=y 1034CONFIG_NFS_FS=y
1209CONFIG_NFS_V3=y 1035CONFIG_NFS_V3=y
1210# CONFIG_NFS_V3_ACL is not set 1036# CONFIG_NFS_V3_ACL is not set
@@ -1225,10 +1051,6 @@ CONFIG_SUNRPC=y
1225# 1051#
1226# CONFIG_PARTITION_ADVANCED is not set 1052# CONFIG_PARTITION_ADVANCED is not set
1227CONFIG_MSDOS_PARTITION=y 1053CONFIG_MSDOS_PARTITION=y
1228
1229#
1230# Native Language Support
1231#
1232CONFIG_NLS=y 1054CONFIG_NLS=y
1233CONFIG_NLS_DEFAULT="iso8859-1" 1055CONFIG_NLS_DEFAULT="iso8859-1"
1234# CONFIG_NLS_CODEPAGE_437 is not set 1056# CONFIG_NLS_CODEPAGE_437 is not set
@@ -1275,13 +1097,15 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1275# 1097#
1276CONFIG_TRACE_IRQFLAGS_SUPPORT=y 1098CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1277# CONFIG_PRINTK_TIME is not set 1099# CONFIG_PRINTK_TIME is not set
1100CONFIG_ENABLE_WARN_DEPRECATED=y
1278CONFIG_ENABLE_MUST_CHECK=y 1101CONFIG_ENABLE_MUST_CHECK=y
1279# CONFIG_MAGIC_SYSRQ is not set 1102# CONFIG_MAGIC_SYSRQ is not set
1280# CONFIG_UNUSED_SYMBOLS is not set 1103# CONFIG_UNUSED_SYMBOLS is not set
1104CONFIG_DEBUG_FS=y
1281# CONFIG_HEADERS_CHECK is not set 1105# CONFIG_HEADERS_CHECK is not set
1282# CONFIG_DEBUG_KERNEL is not set 1106# CONFIG_DEBUG_KERNEL is not set
1283CONFIG_LOG_BUF_SHIFT=14
1284# CONFIG_DEBUG_BUGVERBOSE is not set 1107# CONFIG_DEBUG_BUGVERBOSE is not set
1108# CONFIG_SAMPLES is not set
1285# CONFIG_SH_STANDARD_BIOS is not set 1109# CONFIG_SH_STANDARD_BIOS is not set
1286# CONFIG_EARLY_SCIF_CONSOLE is not set 1110# CONFIG_EARLY_SCIF_CONSOLE is not set
1287# CONFIG_SH_KGDB is not set 1111# CONFIG_SH_KGDB is not set
@@ -1290,11 +1114,48 @@ CONFIG_LOG_BUF_SHIFT=14
1290# Security options 1114# Security options
1291# 1115#
1292# CONFIG_KEYS is not set 1116# CONFIG_KEYS is not set
1293 1117# CONFIG_SECURITY is not set
1294# 1118CONFIG_CRYPTO=y
1295# Cryptographic options 1119# CONFIG_CRYPTO_SEQIV is not set
1296# 1120# CONFIG_CRYPTO_MANAGER is not set
1297# CONFIG_CRYPTO is not set 1121# CONFIG_CRYPTO_HMAC is not set
1122# CONFIG_CRYPTO_NULL is not set
1123# CONFIG_CRYPTO_MD4 is not set
1124# CONFIG_CRYPTO_MD5 is not set
1125# CONFIG_CRYPTO_SHA1 is not set
1126# CONFIG_CRYPTO_SHA256 is not set
1127# CONFIG_CRYPTO_SHA512 is not set
1128# CONFIG_CRYPTO_WP512 is not set
1129# CONFIG_CRYPTO_TGR192 is not set
1130# CONFIG_CRYPTO_ECB is not set
1131# CONFIG_CRYPTO_CBC is not set
1132# CONFIG_CRYPTO_PCBC is not set
1133# CONFIG_CRYPTO_CTR is not set
1134# CONFIG_CRYPTO_GCM is not set
1135# CONFIG_CRYPTO_CCM is not set
1136# CONFIG_CRYPTO_CRYPTD is not set
1137# CONFIG_CRYPTO_DES is not set
1138# CONFIG_CRYPTO_FCRYPT is not set
1139# CONFIG_CRYPTO_BLOWFISH is not set
1140# CONFIG_CRYPTO_TWOFISH is not set
1141# CONFIG_CRYPTO_SERPENT is not set
1142# CONFIG_CRYPTO_AES is not set
1143# CONFIG_CRYPTO_CAST5 is not set
1144# CONFIG_CRYPTO_CAST6 is not set
1145# CONFIG_CRYPTO_TEA is not set
1146# CONFIG_CRYPTO_ARC4 is not set
1147# CONFIG_CRYPTO_KHAZAD is not set
1148# CONFIG_CRYPTO_ANUBIS is not set
1149# CONFIG_CRYPTO_SEED is not set
1150# CONFIG_CRYPTO_DEFLATE is not set
1151# CONFIG_CRYPTO_MICHAEL_MIC is not set
1152# CONFIG_CRYPTO_CRC32C is not set
1153# CONFIG_CRYPTO_CAMELLIA is not set
1154# CONFIG_CRYPTO_TEST is not set
1155# CONFIG_CRYPTO_AUTHENC is not set
1156# CONFIG_CRYPTO_LZO is not set
1157CONFIG_CRYPTO_HW=y
1158# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1298 1159
1299# 1160#
1300# Library routines 1161# Library routines
@@ -1302,9 +1163,12 @@ CONFIG_LOG_BUF_SHIFT=14
1302CONFIG_BITREVERSE=y 1163CONFIG_BITREVERSE=y
1303# CONFIG_CRC_CCITT is not set 1164# CONFIG_CRC_CCITT is not set
1304# CONFIG_CRC16 is not set 1165# CONFIG_CRC16 is not set
1166# CONFIG_CRC_ITU_T is not set
1305CONFIG_CRC32=y 1167CONFIG_CRC32=y
1168# CONFIG_CRC7 is not set
1306# CONFIG_LIBCRC32C is not set 1169# CONFIG_LIBCRC32C is not set
1307CONFIG_ZLIB_INFLATE=y 1170CONFIG_ZLIB_INFLATE=y
1308CONFIG_PLIST=y 1171CONFIG_PLIST=y
1309CONFIG_HAS_IOMEM=y 1172CONFIG_HAS_IOMEM=y
1310CONFIG_HAS_IOPORT=y 1173CONFIG_HAS_IOPORT=y
1174CONFIG_HAS_DMA=y
diff --git a/arch/sh/configs/sh7710voipgw_defconfig b/arch/sh/configs/sh7710voipgw_defconfig
index 9380c32116..37e49a5892 100644
--- a/arch/sh/configs/sh7710voipgw_defconfig
+++ b/arch/sh/configs/sh7710voipgw_defconfig
@@ -1,40 +1,55 @@
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.25-rc4
4# Tue Oct 3 12:48:56 2006 4# Thu Mar 6 16:02:29 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 8CONFIG_RWSEM_GENERIC_SPINLOCK=y
9CONFIG_GENERIC_BUG=y
8CONFIG_GENERIC_FIND_NEXT_BIT=y 10CONFIG_GENERIC_FIND_NEXT_BIT=y
9CONFIG_GENERIC_HWEIGHT=y 11CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_HARDIRQS=y 12CONFIG_GENERIC_HARDIRQS=y
11CONFIG_GENERIC_IRQ_PROBE=y 13CONFIG_GENERIC_IRQ_PROBE=y
12CONFIG_GENERIC_CALIBRATE_DELAY=y 14CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_TIME=y
16CONFIG_GENERIC_CLOCKEVENTS=y
17CONFIG_STACKTRACE_SUPPORT=y
18CONFIG_LOCKDEP_SUPPORT=y
19# CONFIG_ARCH_HAS_ILOG2_U32 is not set
20# CONFIG_ARCH_HAS_ILOG2_U64 is not set
21CONFIG_ARCH_NO_VIRT_TO_BUS=y
22CONFIG_ARCH_SUPPORTS_AOUT=y
13CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
14 24
15# 25#
16# Code maturity level options 26# General setup
17# 27#
18CONFIG_EXPERIMENTAL=y 28CONFIG_EXPERIMENTAL=y
19CONFIG_BROKEN_ON_SMP=y 29CONFIG_BROKEN_ON_SMP=y
20CONFIG_INIT_ENV_ARG_LIMIT=32 30CONFIG_INIT_ENV_ARG_LIMIT=32
21
22#
23# General setup
24#
25CONFIG_LOCALVERSION="" 31CONFIG_LOCALVERSION=""
26CONFIG_LOCALVERSION_AUTO=y 32CONFIG_LOCALVERSION_AUTO=y
27# CONFIG_SWAP is not set 33# CONFIG_SWAP is not set
28CONFIG_SYSVIPC=y 34CONFIG_SYSVIPC=y
29# CONFIG_IPC_NS is not set 35CONFIG_SYSVIPC_SYSCTL=y
30CONFIG_POSIX_MQUEUE=y 36CONFIG_POSIX_MQUEUE=y
31# CONFIG_BSD_PROCESS_ACCT is not set 37# CONFIG_BSD_PROCESS_ACCT is not set
32# CONFIG_TASKSTATS is not set 38# CONFIG_TASKSTATS is not set
33# CONFIG_UTS_NS is not set
34# CONFIG_AUDIT is not set 39# CONFIG_AUDIT is not set
35# CONFIG_IKCONFIG is not set 40# CONFIG_IKCONFIG is not set
41CONFIG_LOG_BUF_SHIFT=14
42# CONFIG_CGROUPS is not set
43CONFIG_GROUP_SCHED=y
44CONFIG_FAIR_GROUP_SCHED=y
45# CONFIG_RT_GROUP_SCHED is not set
46CONFIG_USER_SCHED=y
47# CONFIG_CGROUP_SCHED is not set
48CONFIG_SYSFS_DEPRECATED=y
49CONFIG_SYSFS_DEPRECATED_V2=y
36# CONFIG_RELAY is not set 50# CONFIG_RELAY is not set
37CONFIG_INITRAMFS_SOURCE="" 51# CONFIG_NAMESPACES is not set
52# CONFIG_BLK_DEV_INITRD is not set
38CONFIG_CC_OPTIMIZE_FOR_SIZE=y 53CONFIG_CC_OPTIMIZE_FOR_SIZE=y
39CONFIG_SYSCTL=y 54CONFIG_SYSCTL=y
40CONFIG_EMBEDDED=y 55CONFIG_EMBEDDED=y
@@ -46,33 +61,39 @@ CONFIG_HOTPLUG=y
46CONFIG_PRINTK=y 61CONFIG_PRINTK=y
47CONFIG_BUG=y 62CONFIG_BUG=y
48CONFIG_ELF_CORE=y 63CONFIG_ELF_CORE=y
64CONFIG_COMPAT_BRK=y
49CONFIG_BASE_FULL=y 65CONFIG_BASE_FULL=y
50# CONFIG_FUTEX is not set 66# CONFIG_FUTEX is not set
67CONFIG_ANON_INODES=y
51# CONFIG_EPOLL is not set 68# CONFIG_EPOLL is not set
69CONFIG_SIGNALFD=y
70CONFIG_TIMERFD=y
71CONFIG_EVENTFD=y
52# CONFIG_SHMEM is not set 72# CONFIG_SHMEM is not set
53CONFIG_SLAB=y
54CONFIG_VM_EVENT_COUNTERS=y 73CONFIG_VM_EVENT_COUNTERS=y
74CONFIG_SLAB=y
75# CONFIG_SLUB is not set
76# CONFIG_SLOB is not set
77# CONFIG_PROFILING is not set
78# CONFIG_MARKERS is not set
79CONFIG_HAVE_OPROFILE=y
80# CONFIG_HAVE_KPROBES is not set
81# CONFIG_HAVE_KRETPROBES is not set
82CONFIG_PROC_PAGE_MONITOR=y
83CONFIG_SLABINFO=y
55CONFIG_TINY_SHMEM=y 84CONFIG_TINY_SHMEM=y
56CONFIG_BASE_SMALL=0 85CONFIG_BASE_SMALL=0
57# CONFIG_SLOB is not set
58
59#
60# Loadable module support
61#
62CONFIG_MODULES=y 86CONFIG_MODULES=y
63CONFIG_MODULE_UNLOAD=y 87CONFIG_MODULE_UNLOAD=y
64CONFIG_MODULE_FORCE_UNLOAD=y 88CONFIG_MODULE_FORCE_UNLOAD=y
65# CONFIG_MODVERSIONS is not set 89# CONFIG_MODVERSIONS is not set
66# CONFIG_MODULE_SRCVERSION_ALL is not set 90# CONFIG_MODULE_SRCVERSION_ALL is not set
67# CONFIG_KMOD is not set 91# CONFIG_KMOD is not set
68
69#
70# Block layer
71#
72CONFIG_BLOCK=y 92CONFIG_BLOCK=y
73# CONFIG_LBD is not set 93# CONFIG_LBD is not set
74# CONFIG_BLK_DEV_IO_TRACE is not set 94# CONFIG_BLK_DEV_IO_TRACE is not set
75# CONFIG_LSF is not set 95# CONFIG_LSF is not set
96# CONFIG_BLK_DEV_BSG is not set
76 97
77# 98#
78# IO Schedulers 99# IO Schedulers
@@ -86,59 +107,26 @@ CONFIG_DEFAULT_DEADLINE=y
86# CONFIG_DEFAULT_CFQ is not set 107# CONFIG_DEFAULT_CFQ is not set
87# CONFIG_DEFAULT_NOOP is not set 108# CONFIG_DEFAULT_NOOP is not set
88CONFIG_DEFAULT_IOSCHED="deadline" 109CONFIG_DEFAULT_IOSCHED="deadline"
110CONFIG_CLASSIC_RCU=y
111# CONFIG_PREEMPT_RCU is not set
89 112
90# 113#
91# System type 114# System type
92# 115#
93# CONFIG_SH_SOLUTION_ENGINE is not set
94# CONFIG_SH_7751_SOLUTION_ENGINE is not set
95# CONFIG_SH_7300_SOLUTION_ENGINE is not set
96# CONFIG_SH_7343_SOLUTION_ENGINE is not set
97# CONFIG_SH_73180_SOLUTION_ENGINE is not set
98# CONFIG_SH_7751_SYSTEMH is not set
99# CONFIG_SH_HP6XX is not set
100# CONFIG_SH_EC3104 is not set
101# CONFIG_SH_SATURN is not set
102# CONFIG_SH_DREAMCAST is not set
103# CONFIG_SH_BIGSUR is not set
104# CONFIG_SH_MPC1211 is not set
105# CONFIG_SH_SH03 is not set
106# CONFIG_SH_SECUREEDGE5410 is not set
107# CONFIG_SH_HS7751RVOIP is not set
108CONFIG_SH_7710VOIPGW=y
109# CONFIG_SH_RTS7751R2D is not set
110# CONFIG_SH_R7780RP is not set
111# CONFIG_SH_EDOSK7705 is not set
112# CONFIG_SH_SH4202_MICRODEV is not set
113# CONFIG_SH_LANDISK is not set
114# CONFIG_SH_TITAN is not set
115# CONFIG_SH_SHMIN is not set
116# CONFIG_SH_UNKNOWN is not set
117
118#
119# Processor selection
120#
121CONFIG_CPU_SH3=y 116CONFIG_CPU_SH3=y
122 117# CONFIG_CPU_SUBTYPE_SH7619 is not set
123# 118# CONFIG_CPU_SUBTYPE_SH7203 is not set
124# SH-2 Processor Support 119# CONFIG_CPU_SUBTYPE_SH7206 is not set
125# 120# CONFIG_CPU_SUBTYPE_SH7263 is not set
126# CONFIG_CPU_SUBTYPE_SH7604 is not set
127
128#
129# SH-3 Processor Support
130#
131# CONFIG_CPU_SUBTYPE_SH7300 is not set
132# CONFIG_CPU_SUBTYPE_SH7705 is not set 121# CONFIG_CPU_SUBTYPE_SH7705 is not set
133# CONFIG_CPU_SUBTYPE_SH7706 is not set 122# CONFIG_CPU_SUBTYPE_SH7706 is not set
134# CONFIG_CPU_SUBTYPE_SH7707 is not set 123# CONFIG_CPU_SUBTYPE_SH7707 is not set
135# CONFIG_CPU_SUBTYPE_SH7708 is not set 124# CONFIG_CPU_SUBTYPE_SH7708 is not set
136# CONFIG_CPU_SUBTYPE_SH7709 is not set 125# CONFIG_CPU_SUBTYPE_SH7709 is not set
137CONFIG_CPU_SUBTYPE_SH7710=y 126CONFIG_CPU_SUBTYPE_SH7710=y
138 127# CONFIG_CPU_SUBTYPE_SH7712 is not set
139# 128# CONFIG_CPU_SUBTYPE_SH7720 is not set
140# SH-4 Processor Support 129# CONFIG_CPU_SUBTYPE_SH7721 is not set
141#
142# CONFIG_CPU_SUBTYPE_SH7750 is not set 130# CONFIG_CPU_SUBTYPE_SH7750 is not set
143# CONFIG_CPU_SUBTYPE_SH7091 is not set 131# CONFIG_CPU_SUBTYPE_SH7091 is not set
144# CONFIG_CPU_SUBTYPE_SH7750R is not set 132# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -147,65 +135,84 @@ CONFIG_CPU_SUBTYPE_SH7710=y
147# CONFIG_CPU_SUBTYPE_SH7751R is not set 135# CONFIG_CPU_SUBTYPE_SH7751R is not set
148# CONFIG_CPU_SUBTYPE_SH7760 is not set 136# CONFIG_CPU_SUBTYPE_SH7760 is not set
149# CONFIG_CPU_SUBTYPE_SH4_202 is not set 137# CONFIG_CPU_SUBTYPE_SH4_202 is not set
150 138# CONFIG_CPU_SUBTYPE_SH7763 is not set
151#
152# ST40 Processor Support
153#
154# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
155# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
156
157#
158# SH-4A Processor Support
159#
160# CONFIG_CPU_SUBTYPE_SH7770 is not set 139# CONFIG_CPU_SUBTYPE_SH7770 is not set
161# CONFIG_CPU_SUBTYPE_SH7780 is not set 140# CONFIG_CPU_SUBTYPE_SH7780 is not set
162 141# CONFIG_CPU_SUBTYPE_SH7785 is not set
163# 142# CONFIG_CPU_SUBTYPE_SHX3 is not set
164# SH4AL-DSP Processor Support
165#
166# CONFIG_CPU_SUBTYPE_SH73180 is not set
167# CONFIG_CPU_SUBTYPE_SH7343 is not set 143# CONFIG_CPU_SUBTYPE_SH7343 is not set
144# CONFIG_CPU_SUBTYPE_SH7722 is not set
145# CONFIG_CPU_SUBTYPE_SH7366 is not set
146# CONFIG_CPU_SUBTYPE_SH5_101 is not set
147# CONFIG_CPU_SUBTYPE_SH5_103 is not set
168 148
169# 149#
170# Memory management options 150# Memory management options
171# 151#
152CONFIG_QUICKLIST=y
172CONFIG_MMU=y 153CONFIG_MMU=y
173CONFIG_PAGE_OFFSET=0x80000000 154CONFIG_PAGE_OFFSET=0x80000000
174CONFIG_MEMORY_START=0x0c000000 155CONFIG_MEMORY_START=0x0c000000
175CONFIG_MEMORY_SIZE=0x00800000 156CONFIG_MEMORY_SIZE=0x00800000
157CONFIG_29BIT=y
176CONFIG_VSYSCALL=y 158CONFIG_VSYSCALL=y
159CONFIG_ARCH_FLATMEM_ENABLE=y
160CONFIG_ARCH_SPARSEMEM_ENABLE=y
161CONFIG_ARCH_SPARSEMEM_DEFAULT=y
162CONFIG_MAX_ACTIVE_REGIONS=1
163CONFIG_ARCH_POPULATES_NODE_MAP=y
164CONFIG_ARCH_SELECT_MEMORY_MODEL=y
165CONFIG_PAGE_SIZE_4KB=y
166# CONFIG_PAGE_SIZE_8KB is not set
167# CONFIG_PAGE_SIZE_64KB is not set
177CONFIG_SELECT_MEMORY_MODEL=y 168CONFIG_SELECT_MEMORY_MODEL=y
178CONFIG_FLATMEM_MANUAL=y 169CONFIG_FLATMEM_MANUAL=y
179# CONFIG_DISCONTIGMEM_MANUAL is not set 170# CONFIG_DISCONTIGMEM_MANUAL is not set
180# CONFIG_SPARSEMEM_MANUAL is not set 171# CONFIG_SPARSEMEM_MANUAL is not set
181CONFIG_FLATMEM=y 172CONFIG_FLATMEM=y
182CONFIG_FLAT_NODE_MEM_MAP=y 173CONFIG_FLAT_NODE_MEM_MAP=y
183# CONFIG_SPARSEMEM_STATIC is not set 174CONFIG_SPARSEMEM_STATIC=y
175# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
184CONFIG_SPLIT_PTLOCK_CPUS=4 176CONFIG_SPLIT_PTLOCK_CPUS=4
185# CONFIG_RESOURCES_64BIT is not set 177# CONFIG_RESOURCES_64BIT is not set
178CONFIG_ZONE_DMA_FLAG=0
179CONFIG_NR_QUICK=2
186 180
187# 181#
188# Cache configuration 182# Cache configuration
189# 183#
190# CONFIG_SH_DIRECT_MAPPED is not set 184# CONFIG_SH_DIRECT_MAPPED is not set
191# CONFIG_SH_WRITETHROUGH is not set 185CONFIG_CACHE_WRITEBACK=y
192# CONFIG_SH_OCRAM is not set 186# CONFIG_CACHE_WRITETHROUGH is not set
187# CONFIG_CACHE_OFF is not set
193 188
194# 189#
195# Processor features 190# Processor features
196# 191#
197CONFIG_CPU_LITTLE_ENDIAN=y 192CONFIG_CPU_LITTLE_ENDIAN=y
193# CONFIG_CPU_BIG_ENDIAN is not set
198# CONFIG_SH_FPU_EMU is not set 194# CONFIG_SH_FPU_EMU is not set
199CONFIG_SH_DSP=y 195CONFIG_SH_DSP=y
200# CONFIG_SH_ADC is not set 196# CONFIG_SH_ADC is not set
201CONFIG_CPU_HAS_INTEVT=y 197CONFIG_CPU_HAS_INTEVT=y
202CONFIG_CPU_HAS_SR_RB=y 198CONFIG_CPU_HAS_SR_RB=y
199CONFIG_CPU_HAS_DSP=y
203 200
204# 201#
205# Timer support 202# Board support
203#
204# CONFIG_SH_SOLUTION_ENGINE is not set
205
206#
207# Timer and clock configuration
206# 208#
207CONFIG_SH_TMU=y 209CONFIG_SH_TMU=y
210CONFIG_SH_TIMER_IRQ=16
208CONFIG_SH_PCLK_FREQ=32768000 211CONFIG_SH_PCLK_FREQ=32768000
212# CONFIG_TICK_ONESHOT is not set
213# CONFIG_NO_HZ is not set
214# CONFIG_HIGH_RES_TIMERS is not set
215CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
209 216
210# 217#
211# CPU Frequency scaling 218# CPU Frequency scaling
@@ -220,56 +227,51 @@ CONFIG_SH_PCLK_FREQ=32768000
220# 227#
221# Companion Chips 228# Companion Chips
222# 229#
223# CONFIG_HD6446X_SERIES is not set 230
231#
232# Additional SuperH Device Drivers
233#
234# CONFIG_HEARTBEAT is not set
235# CONFIG_PUSH_SWITCH is not set
224 236
225# 237#
226# Kernel features 238# Kernel features
227# 239#
228# CONFIG_HZ_100 is not set 240# CONFIG_HZ_100 is not set
229CONFIG_HZ_250=y 241CONFIG_HZ_250=y
242# CONFIG_HZ_300 is not set
230# CONFIG_HZ_1000 is not set 243# CONFIG_HZ_1000 is not set
231CONFIG_HZ=250 244CONFIG_HZ=250
245# CONFIG_SCHED_HRTICK is not set
232# CONFIG_KEXEC is not set 246# CONFIG_KEXEC is not set
233# CONFIG_SMP is not set 247# CONFIG_CRASH_DUMP is not set
234CONFIG_PREEMPT_NONE=y 248CONFIG_PREEMPT_NONE=y
235# CONFIG_PREEMPT_VOLUNTARY is not set 249# CONFIG_PREEMPT_VOLUNTARY is not set
236# CONFIG_PREEMPT is not set 250# CONFIG_PREEMPT is not set
251CONFIG_RCU_TRACE=y
252CONFIG_GUSA=y
253# CONFIG_GUSA_RB is not set
237 254
238# 255#
239# Boot options 256# Boot options
240# 257#
241CONFIG_ZERO_PAGE_OFFSET=0x00001000 258CONFIG_ZERO_PAGE_OFFSET=0x00001000
242CONFIG_BOOT_LINK_OFFSET=0x00800000 259CONFIG_BOOT_LINK_OFFSET=0x00800000
243# CONFIG_UBC_WAKEUP is not set
244# CONFIG_CMDLINE_BOOL is not set 260# CONFIG_CMDLINE_BOOL is not set
245 261
246# 262#
247# Bus options 263# Bus options
248# 264#
249# CONFIG_PCI is not set 265# CONFIG_ARCH_SUPPORTS_MSI is not set
250
251#
252# PCCARD (PCMCIA/CardBus) support
253#
254# CONFIG_PCCARD is not set 266# CONFIG_PCCARD is not set
255 267
256# 268#
257# PCI Hotplug Support
258#
259
260#
261# Executable file formats 269# Executable file formats
262# 270#
263CONFIG_BINFMT_ELF=y 271CONFIG_BINFMT_ELF=y
264# CONFIG_BINFMT_FLAT is not set
265# CONFIG_BINFMT_MISC is not set 272# CONFIG_BINFMT_MISC is not set
266 273
267# 274#
268# Power management options (EXPERIMENTAL)
269#
270# CONFIG_PM is not set
271
272#
273# Networking 275# Networking
274# 276#
275CONFIG_NET=y 277CONFIG_NET=y
@@ -277,13 +279,14 @@ CONFIG_NET=y
277# 279#
278# Networking options 280# Networking options
279# 281#
280# CONFIG_NETDEBUG is not set
281CONFIG_PACKET=y 282CONFIG_PACKET=y
282# CONFIG_PACKET_MMAP is not set 283# CONFIG_PACKET_MMAP is not set
283CONFIG_UNIX=y 284CONFIG_UNIX=y
284CONFIG_XFRM=y 285CONFIG_XFRM=y
285# CONFIG_XFRM_USER is not set 286# CONFIG_XFRM_USER is not set
286# CONFIG_XFRM_SUB_POLICY is not set 287# CONFIG_XFRM_SUB_POLICY is not set
288# CONFIG_XFRM_MIGRATE is not set
289# CONFIG_XFRM_STATISTICS is not set
287# CONFIG_NET_KEY is not set 290# CONFIG_NET_KEY is not set
288CONFIG_INET=y 291CONFIG_INET=y
289# CONFIG_IP_MULTICAST is not set 292# CONFIG_IP_MULTICAST is not set
@@ -301,14 +304,13 @@ CONFIG_SYN_COOKIES=y
301# CONFIG_INET_TUNNEL is not set 304# CONFIG_INET_TUNNEL is not set
302CONFIG_INET_XFRM_MODE_TRANSPORT=y 305CONFIG_INET_XFRM_MODE_TRANSPORT=y
303CONFIG_INET_XFRM_MODE_TUNNEL=y 306CONFIG_INET_XFRM_MODE_TUNNEL=y
307CONFIG_INET_XFRM_MODE_BEET=y
308# CONFIG_INET_LRO is not set
304# CONFIG_INET_DIAG is not set 309# CONFIG_INET_DIAG is not set
305# CONFIG_TCP_CONG_ADVANCED is not set 310# CONFIG_TCP_CONG_ADVANCED is not set
306CONFIG_TCP_CONG_CUBIC=y 311CONFIG_TCP_CONG_CUBIC=y
307CONFIG_DEFAULT_TCP_CONG="cubic" 312CONFIG_DEFAULT_TCP_CONG="cubic"
308 313# CONFIG_TCP_MD5SIG is not set
309#
310# IP: Virtual Server Configuration
311#
312# CONFIG_IP_VS is not set 314# CONFIG_IP_VS is not set
313# CONFIG_IPV6 is not set 315# CONFIG_IPV6 is not set
314# CONFIG_INET6_XFRM_TUNNEL is not set 316# CONFIG_INET6_XFRM_TUNNEL is not set
@@ -316,44 +318,24 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
316# CONFIG_NETWORK_SECMARK is not set 318# CONFIG_NETWORK_SECMARK is not set
317CONFIG_NETFILTER=y 319CONFIG_NETFILTER=y
318# CONFIG_NETFILTER_DEBUG is not set 320# CONFIG_NETFILTER_DEBUG is not set
321CONFIG_NETFILTER_ADVANCED=y
319 322
320# 323#
321# Core Netfilter Configuration 324# Core Netfilter Configuration
322# 325#
323# CONFIG_NETFILTER_NETLINK is not set 326# CONFIG_NETFILTER_NETLINK_QUEUE is not set
327# CONFIG_NETFILTER_NETLINK_LOG is not set
328# CONFIG_NF_CONNTRACK is not set
324# CONFIG_NETFILTER_XTABLES is not set 329# CONFIG_NETFILTER_XTABLES is not set
325 330
326# 331#
327# IP: Netfilter Configuration 332# IP: Netfilter Configuration
328# 333#
329CONFIG_IP_NF_CONNTRACK=y
330# CONFIG_IP_NF_CT_ACCT is not set
331# CONFIG_IP_NF_CONNTRACK_MARK is not set
332# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
333# CONFIG_IP_NF_CT_PROTO_SCTP is not set
334CONFIG_IP_NF_FTP=m
335# CONFIG_IP_NF_IRC is not set
336# CONFIG_IP_NF_NETBIOS_NS is not set
337# CONFIG_IP_NF_TFTP is not set
338# CONFIG_IP_NF_AMANDA is not set
339CONFIG_IP_NF_PPTP=m
340# CONFIG_IP_NF_H323 is not set
341# CONFIG_IP_NF_SIP is not set
342# CONFIG_IP_NF_QUEUE is not set 334# CONFIG_IP_NF_QUEUE is not set
343 335# CONFIG_IP_NF_IPTABLES is not set
344# 336# CONFIG_IP_NF_ARPTABLES is not set
345# DCCP Configuration (EXPERIMENTAL)
346#
347# CONFIG_IP_DCCP is not set 337# CONFIG_IP_DCCP is not set
348
349#
350# SCTP Configuration (EXPERIMENTAL)
351#
352# CONFIG_IP_SCTP is not set 338# CONFIG_IP_SCTP is not set
353
354#
355# TIPC Configuration (EXPERIMENTAL)
356#
357# CONFIG_TIPC is not set 339# CONFIG_TIPC is not set
358# CONFIG_ATM is not set 340# CONFIG_ATM is not set
359# CONFIG_BRIDGE is not set 341# CONFIG_BRIDGE is not set
@@ -366,14 +348,7 @@ CONFIG_IP_NF_PPTP=m
366# CONFIG_LAPB is not set 348# CONFIG_LAPB is not set
367# CONFIG_ECONET is not set 349# CONFIG_ECONET is not set
368# CONFIG_WAN_ROUTER is not set 350# CONFIG_WAN_ROUTER is not set
369
370#
371# QoS and/or fair queueing
372#
373CONFIG_NET_SCHED=y 351CONFIG_NET_SCHED=y
374CONFIG_NET_SCH_CLK_JIFFIES=y
375# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
376# CONFIG_NET_SCH_CLK_CPU is not set
377 352
378# 353#
379# Queueing/Scheduling 354# Queueing/Scheduling
@@ -382,6 +357,7 @@ CONFIG_NET_SCH_CBQ=y
382# CONFIG_NET_SCH_HTB is not set 357# CONFIG_NET_SCH_HTB is not set
383# CONFIG_NET_SCH_HFSC is not set 358# CONFIG_NET_SCH_HFSC is not set
384# CONFIG_NET_SCH_PRIO is not set 359# CONFIG_NET_SCH_PRIO is not set
360# CONFIG_NET_SCH_RR is not set
385# CONFIG_NET_SCH_RED is not set 361# CONFIG_NET_SCH_RED is not set
386# CONFIG_NET_SCH_SFQ is not set 362# CONFIG_NET_SCH_SFQ is not set
387# CONFIG_NET_SCH_TEQL is not set 363# CONFIG_NET_SCH_TEQL is not set
@@ -389,7 +365,6 @@ CONFIG_NET_SCH_CBQ=y
389# CONFIG_NET_SCH_GRED is not set 365# CONFIG_NET_SCH_GRED is not set
390# CONFIG_NET_SCH_DSMARK is not set 366# CONFIG_NET_SCH_DSMARK is not set
391# CONFIG_NET_SCH_NETEM is not set 367# CONFIG_NET_SCH_NETEM is not set
392CONFIG_NET_SCH_INGRESS=y
393 368
394# 369#
395# Classification 370# Classification
@@ -405,20 +380,31 @@ CONFIG_NET_CLS_U32=y
405# CONFIG_CLS_U32_MARK is not set 380# CONFIG_CLS_U32_MARK is not set
406# CONFIG_NET_CLS_RSVP is not set 381# CONFIG_NET_CLS_RSVP is not set
407# CONFIG_NET_CLS_RSVP6 is not set 382# CONFIG_NET_CLS_RSVP6 is not set
383# CONFIG_NET_CLS_FLOW is not set
408# CONFIG_NET_EMATCH is not set 384# CONFIG_NET_EMATCH is not set
409# CONFIG_NET_CLS_ACT is not set 385# CONFIG_NET_CLS_ACT is not set
410CONFIG_NET_CLS_POLICE=y
411# CONFIG_NET_CLS_IND is not set 386# CONFIG_NET_CLS_IND is not set
412CONFIG_NET_ESTIMATOR=y 387CONFIG_NET_SCH_FIFO=y
413 388
414# 389#
415# Network testing 390# Network testing
416# 391#
417# CONFIG_NET_PKTGEN is not set 392# CONFIG_NET_PKTGEN is not set
418# CONFIG_HAMRADIO is not set 393# CONFIG_HAMRADIO is not set
394# CONFIG_CAN is not set
419# CONFIG_IRDA is not set 395# CONFIG_IRDA is not set
420# CONFIG_BT is not set 396# CONFIG_BT is not set
397# CONFIG_AF_RXRPC is not set
398
399#
400# Wireless
401#
402# CONFIG_CFG80211 is not set
403# CONFIG_WIRELESS_EXT is not set
404# CONFIG_MAC80211 is not set
421# CONFIG_IEEE80211 is not set 405# CONFIG_IEEE80211 is not set
406# CONFIG_RFKILL is not set
407# CONFIG_NET_9P is not set
422 408
423# 409#
424# Device Drivers 410# Device Drivers
@@ -427,19 +413,12 @@ CONFIG_NET_ESTIMATOR=y
427# 413#
428# Generic Driver Options 414# Generic Driver Options
429# 415#
416CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
430CONFIG_STANDALONE=y 417CONFIG_STANDALONE=y
431CONFIG_PREVENT_FIRMWARE_BUILD=y 418CONFIG_PREVENT_FIRMWARE_BUILD=y
432CONFIG_FW_LOADER=y 419CONFIG_FW_LOADER=y
433# CONFIG_SYS_HYPERVISOR is not set 420# CONFIG_SYS_HYPERVISOR is not set
434
435#
436# Connector - unified userspace <-> kernelspace linker
437#
438# CONFIG_CONNECTOR is not set 421# CONFIG_CONNECTOR is not set
439
440#
441# Memory Technology Devices (MTD)
442#
443CONFIG_MTD=y 422CONFIG_MTD=y
444# CONFIG_MTD_DEBUG is not set 423# CONFIG_MTD_DEBUG is not set
445# CONFIG_MTD_CONCAT is not set 424# CONFIG_MTD_CONCAT is not set
@@ -451,12 +430,14 @@ CONFIG_MTD_PARTITIONS=y
451# User Modules And Translation Layers 430# User Modules And Translation Layers
452# 431#
453CONFIG_MTD_CHAR=y 432CONFIG_MTD_CHAR=y
433CONFIG_MTD_BLKDEVS=y
454CONFIG_MTD_BLOCK=y 434CONFIG_MTD_BLOCK=y
455# CONFIG_FTL is not set 435# CONFIG_FTL is not set
456# CONFIG_NFTL is not set 436# CONFIG_NFTL is not set
457# CONFIG_INFTL is not set 437# CONFIG_INFTL is not set
458# CONFIG_RFD_FTL is not set 438# CONFIG_RFD_FTL is not set
459# CONFIG_SSFDC is not set 439# CONFIG_SSFDC is not set
440# CONFIG_MTD_OOPS is not set
460 441
461# 442#
462# RAM/ROM/Flash chip drivers 443# RAM/ROM/Flash chip drivers
@@ -482,7 +463,6 @@ CONFIG_MTD_CFI_UTIL=y
482CONFIG_MTD_RAM=y 463CONFIG_MTD_RAM=y
483# CONFIG_MTD_ROM is not set 464# CONFIG_MTD_ROM is not set
484# CONFIG_MTD_ABSENT is not set 465# CONFIG_MTD_ABSENT is not set
485# CONFIG_MTD_OBSOLETE_CHIPS is not set
486 466
487# 467#
488# Mapping drivers for chip access 468# Mapping drivers for chip access
@@ -505,40 +485,25 @@ CONFIG_MTD_RAM=y
505# CONFIG_MTD_DOC2000 is not set 485# CONFIG_MTD_DOC2000 is not set
506# CONFIG_MTD_DOC2001 is not set 486# CONFIG_MTD_DOC2001 is not set
507# CONFIG_MTD_DOC2001PLUS is not set 487# CONFIG_MTD_DOC2001PLUS is not set
508
509#
510# NAND Flash Device Drivers
511#
512# CONFIG_MTD_NAND is not set 488# CONFIG_MTD_NAND is not set
513
514#
515# OneNAND Flash Device Drivers
516#
517# CONFIG_MTD_ONENAND is not set 489# CONFIG_MTD_ONENAND is not set
518 490
519# 491#
520# Parallel port support 492# UBI - Unsorted block images
521# 493#
494# CONFIG_MTD_UBI is not set
522# CONFIG_PARPORT is not set 495# CONFIG_PARPORT is not set
523 496CONFIG_BLK_DEV=y
524#
525# Plug and Play support
526#
527
528#
529# Block devices
530#
531# CONFIG_BLK_DEV_COW_COMMON is not set 497# CONFIG_BLK_DEV_COW_COMMON is not set
532# CONFIG_BLK_DEV_LOOP is not set 498# CONFIG_BLK_DEV_LOOP is not set
533# CONFIG_BLK_DEV_NBD is not set 499# CONFIG_BLK_DEV_NBD is not set
534# CONFIG_BLK_DEV_RAM is not set 500# CONFIG_BLK_DEV_RAM is not set
535# CONFIG_BLK_DEV_INITRD is not set
536# CONFIG_CDROM_PKTCDVD is not set 501# CONFIG_CDROM_PKTCDVD is not set
537# CONFIG_ATA_OVER_ETH is not set 502# CONFIG_ATA_OVER_ETH is not set
538 503CONFIG_MISC_DEVICES=y
539# 504# CONFIG_EEPROM_93CX6 is not set
540# ATA/ATAPI/MFM/RLL support 505# CONFIG_ENCLOSURE_SERVICES is not set
541# 506CONFIG_HAVE_IDE=y
542# CONFIG_IDE is not set 507# CONFIG_IDE is not set
543 508
544# 509#
@@ -546,104 +511,59 @@ CONFIG_MTD_RAM=y
546# 511#
547# CONFIG_RAID_ATTRS is not set 512# CONFIG_RAID_ATTRS is not set
548# CONFIG_SCSI is not set 513# CONFIG_SCSI is not set
514# CONFIG_SCSI_DMA is not set
549# CONFIG_SCSI_NETLINK is not set 515# CONFIG_SCSI_NETLINK is not set
550
551#
552# Serial ATA (prod) and Parallel ATA (experimental) drivers
553#
554# CONFIG_ATA is not set 516# CONFIG_ATA is not set
555
556#
557# Multi-device support (RAID and LVM)
558#
559# CONFIG_MD is not set 517# CONFIG_MD is not set
560
561#
562# Fusion MPT device support
563#
564# CONFIG_FUSION is not set
565
566#
567# IEEE 1394 (FireWire) support
568#
569
570#
571# I2O device support
572#
573
574#
575# Network device support
576#
577CONFIG_NETDEVICES=y 518CONFIG_NETDEVICES=y
519# CONFIG_NETDEVICES_MULTIQUEUE is not set
578# CONFIG_DUMMY is not set 520# CONFIG_DUMMY is not set
579# CONFIG_BONDING is not set 521# CONFIG_BONDING is not set
522# CONFIG_MACVLAN is not set
580# CONFIG_EQUALIZER is not set 523# CONFIG_EQUALIZER is not set
581# CONFIG_TUN is not set 524# CONFIG_TUN is not set
582 525# CONFIG_VETH is not set
583#
584# PHY device support
585#
586# CONFIG_PHYLIB is not set 526# CONFIG_PHYLIB is not set
587
588#
589# Ethernet (10 or 100Mbit)
590#
591CONFIG_NET_ETHERNET=y 527CONFIG_NET_ETHERNET=y
592# CONFIG_MII is not set 528# CONFIG_MII is not set
529# CONFIG_AX88796 is not set
593# CONFIG_STNIC is not set 530# CONFIG_STNIC is not set
594# CONFIG_SMC91X is not set 531# CONFIG_SMC91X is not set
532# CONFIG_IBM_NEW_EMAC_ZMII is not set
533# CONFIG_IBM_NEW_EMAC_RGMII is not set
534# CONFIG_IBM_NEW_EMAC_TAH is not set
535# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
536# CONFIG_B44 is not set
537CONFIG_NETDEV_1000=y
538# CONFIG_E1000E_ENABLED is not set
539CONFIG_NETDEV_10000=y
595 540
596# 541#
597# Ethernet (1000 Mbit) 542# Wireless LAN
598#
599
600#
601# Ethernet (10000 Mbit)
602#
603
604#
605# Token Ring devices
606#
607
608#
609# Wireless LAN (non-hamradio)
610#
611# CONFIG_NET_RADIO is not set
612
613#
614# Wan interfaces
615# 543#
544# CONFIG_WLAN_PRE80211 is not set
545# CONFIG_WLAN_80211 is not set
616# CONFIG_WAN is not set 546# CONFIG_WAN is not set
617# CONFIG_PPP is not set 547# CONFIG_PPP is not set
618# CONFIG_SLIP is not set 548# CONFIG_SLIP is not set
619# CONFIG_SHAPER is not set
620# CONFIG_NETCONSOLE is not set 549# CONFIG_NETCONSOLE is not set
621# CONFIG_NETPOLL is not set 550# CONFIG_NETPOLL is not set
622# CONFIG_NET_POLL_CONTROLLER is not set 551# CONFIG_NET_POLL_CONTROLLER is not set
623
624#
625# ISDN subsystem
626#
627# CONFIG_ISDN is not set 552# CONFIG_ISDN is not set
628
629#
630# Telephony Support
631#
632CONFIG_PHONE=y 553CONFIG_PHONE=y
633# CONFIG_PHONE_IXJ is not set
634 554
635# 555#
636# Input device support 556# Input device support
637# 557#
638CONFIG_INPUT=y 558CONFIG_INPUT=y
639# CONFIG_INPUT_FF_MEMLESS is not set 559# CONFIG_INPUT_FF_MEMLESS is not set
560# CONFIG_INPUT_POLLDEV is not set
640 561
641# 562#
642# Userland interfaces 563# Userland interfaces
643# 564#
644# CONFIG_INPUT_MOUSEDEV is not set 565# CONFIG_INPUT_MOUSEDEV is not set
645# CONFIG_INPUT_JOYDEV is not set 566# CONFIG_INPUT_JOYDEV is not set
646# CONFIG_INPUT_TSDEV is not set
647# CONFIG_INPUT_EVDEV is not set 567# CONFIG_INPUT_EVDEV is not set
648# CONFIG_INPUT_EVBUG is not set 568# CONFIG_INPUT_EVBUG is not set
649 569
@@ -653,6 +573,7 @@ CONFIG_INPUT=y
653# CONFIG_INPUT_KEYBOARD is not set 573# CONFIG_INPUT_KEYBOARD is not set
654# CONFIG_INPUT_MOUSE is not set 574# CONFIG_INPUT_MOUSE is not set
655# CONFIG_INPUT_JOYSTICK is not set 575# CONFIG_INPUT_JOYSTICK is not set
576# CONFIG_INPUT_TABLET is not set
656# CONFIG_INPUT_TOUCHSCREEN is not set 577# CONFIG_INPUT_TOUCHSCREEN is not set
657# CONFIG_INPUT_MISC is not set 578# CONFIG_INPUT_MISC is not set
658 579
@@ -684,35 +605,11 @@ CONFIG_SERIAL_CORE_CONSOLE=y
684# CONFIG_UNIX98_PTYS is not set 605# CONFIG_UNIX98_PTYS is not set
685CONFIG_LEGACY_PTYS=y 606CONFIG_LEGACY_PTYS=y
686CONFIG_LEGACY_PTY_COUNT=256 607CONFIG_LEGACY_PTY_COUNT=256
687
688#
689# IPMI
690#
691# CONFIG_IPMI_HANDLER is not set 608# CONFIG_IPMI_HANDLER is not set
692
693#
694# Watchdog Cards
695#
696# CONFIG_WATCHDOG is not set
697CONFIG_HW_RANDOM=y 609CONFIG_HW_RANDOM=y
698# CONFIG_GEN_RTC is not set
699# CONFIG_DTLK is not set
700# CONFIG_R3964 is not set 610# CONFIG_R3964 is not set
701
702#
703# Ftape, the floppy tape device driver
704#
705# CONFIG_RAW_DRIVER is not set 611# CONFIG_RAW_DRIVER is not set
706
707#
708# TPM devices
709#
710# CONFIG_TCG_TPM is not set 612# CONFIG_TCG_TPM is not set
711# CONFIG_TELCLOCK is not set
712
713#
714# I2C support
715#
716# CONFIG_I2C is not set 613# CONFIG_I2C is not set
717 614
718# 615#
@@ -720,119 +617,86 @@ CONFIG_HW_RANDOM=y
720# 617#
721# CONFIG_SPI is not set 618# CONFIG_SPI is not set
722# CONFIG_SPI_MASTER is not set 619# CONFIG_SPI_MASTER is not set
620# CONFIG_W1 is not set
621# CONFIG_POWER_SUPPLY is not set
622# CONFIG_HWMON is not set
623CONFIG_THERMAL=y
624# CONFIG_WATCHDOG is not set
723 625
724# 626#
725# Dallas's 1-wire bus 627# Sonics Silicon Backplane
726#
727
728#
729# Hardware Monitoring support
730# 628#
731# CONFIG_HWMON is not set 629CONFIG_SSB_POSSIBLE=y
732# CONFIG_HWMON_VID is not set 630# CONFIG_SSB is not set
733 631
734# 632#
735# Misc devices 633# Multifunction device drivers
736# 634#
635# CONFIG_MFD_SM501 is not set
737 636
738# 637#
739# Multimedia devices 638# Multimedia devices
740# 639#
741# CONFIG_VIDEO_DEV is not set 640# CONFIG_VIDEO_DEV is not set
742CONFIG_VIDEO_V4L2=y 641# CONFIG_DVB_CORE is not set
743 642# CONFIG_DAB is not set
744#
745# Digital Video Broadcasting Devices
746#
747# CONFIG_DVB is not set
748 643
749# 644#
750# Graphics support 645# Graphics support
751# 646#
752CONFIG_FIRMWARE_EDID=y 647# CONFIG_VGASTATE is not set
648# CONFIG_VIDEO_OUTPUT_CONTROL is not set
753# CONFIG_FB is not set 649# CONFIG_FB is not set
754# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 650# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
755 651
756# 652#
757# Sound 653# Display device support
758# 654#
759# CONFIG_SOUND is not set 655# CONFIG_DISPLAY_SUPPORT is not set
760 656
761# 657#
762# USB support 658# Sound
763# 659#
764# CONFIG_USB_ARCH_HAS_HCD is not set 660# CONFIG_SOUND is not set
661CONFIG_HID_SUPPORT=y
662CONFIG_HID=y
663# CONFIG_HID_DEBUG is not set
664# CONFIG_HIDRAW is not set
665CONFIG_USB_SUPPORT=y
666CONFIG_USB_ARCH_HAS_HCD=y
765# CONFIG_USB_ARCH_HAS_OHCI is not set 667# CONFIG_USB_ARCH_HAS_OHCI is not set
766# CONFIG_USB_ARCH_HAS_EHCI is not set 668# CONFIG_USB_ARCH_HAS_EHCI is not set
669# CONFIG_USB is not set
767 670
768# 671#
769# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 672# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
770# 673#
771
772#
773# USB Gadget Support
774#
775# CONFIG_USB_GADGET is not set 674# CONFIG_USB_GADGET is not set
776
777#
778# MMC/SD Card support
779#
780# CONFIG_MMC is not set 675# CONFIG_MMC is not set
781 676# CONFIG_MEMSTICK is not set
782#
783# LED devices
784#
785# CONFIG_NEW_LEDS is not set 677# CONFIG_NEW_LEDS is not set
786
787#
788# LED drivers
789#
790
791#
792# LED Triggers
793#
794
795#
796# InfiniBand support
797#
798
799#
800# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
801#
802
803#
804# Real Time Clock
805#
806# CONFIG_RTC_CLASS is not set 678# CONFIG_RTC_CLASS is not set
807 679
808# 680#
809# DMA Engine support 681# Userspace I/O
810#
811# CONFIG_DMA_ENGINE is not set
812
813#
814# DMA Clients
815#
816
817#
818# DMA Devices
819# 682#
683# CONFIG_UIO is not set
820 684
821# 685#
822# File systems 686# File systems
823# 687#
824# CONFIG_EXT2_FS is not set 688# CONFIG_EXT2_FS is not set
825# CONFIG_EXT3_FS is not set 689# CONFIG_EXT3_FS is not set
690# CONFIG_EXT4DEV_FS is not set
826# CONFIG_REISERFS_FS is not set 691# CONFIG_REISERFS_FS is not set
827# CONFIG_JFS_FS is not set 692# CONFIG_JFS_FS is not set
828# CONFIG_FS_POSIX_ACL is not set 693# CONFIG_FS_POSIX_ACL is not set
829# CONFIG_XFS_FS is not set 694# CONFIG_XFS_FS is not set
695# CONFIG_GFS2_FS is not set
830# CONFIG_OCFS2_FS is not set 696# CONFIG_OCFS2_FS is not set
831# CONFIG_MINIX_FS is not set 697# CONFIG_DNOTIFY is not set
832# CONFIG_ROMFS_FS is not set
833# CONFIG_INOTIFY is not set 698# CONFIG_INOTIFY is not set
834# CONFIG_QUOTA is not set 699# CONFIG_QUOTA is not set
835# CONFIG_DNOTIFY is not set
836# CONFIG_AUTOFS_FS is not set 700# CONFIG_AUTOFS_FS is not set
837# CONFIG_AUTOFS4_FS is not set 701# CONFIG_AUTOFS4_FS is not set
838# CONFIG_FUSE_FS is not set 702# CONFIG_FUSE_FS is not set
@@ -861,7 +725,6 @@ CONFIG_TMPFS=y
861# CONFIG_TMPFS_POSIX_ACL is not set 725# CONFIG_TMPFS_POSIX_ACL is not set
862# CONFIG_HUGETLBFS is not set 726# CONFIG_HUGETLBFS is not set
863# CONFIG_HUGETLB_PAGE is not set 727# CONFIG_HUGETLB_PAGE is not set
864CONFIG_RAMFS=y
865# CONFIG_CONFIGFS_FS is not set 728# CONFIG_CONFIGFS_FS is not set
866 729
867# 730#
@@ -874,26 +737,26 @@ CONFIG_RAMFS=y
874# CONFIG_BEFS_FS is not set 737# CONFIG_BEFS_FS is not set
875# CONFIG_BFS_FS is not set 738# CONFIG_BFS_FS is not set
876# CONFIG_EFS_FS is not set 739# CONFIG_EFS_FS is not set
877# CONFIG_JFFS_FS is not set
878CONFIG_JFFS2_FS=y 740CONFIG_JFFS2_FS=y
879CONFIG_JFFS2_FS_DEBUG=0 741CONFIG_JFFS2_FS_DEBUG=0
880CONFIG_JFFS2_FS_WRITEBUFFER=y 742CONFIG_JFFS2_FS_WRITEBUFFER=y
743# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
881# CONFIG_JFFS2_SUMMARY is not set 744# CONFIG_JFFS2_SUMMARY is not set
882# CONFIG_JFFS2_FS_XATTR is not set 745# CONFIG_JFFS2_FS_XATTR is not set
883# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set 746# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
884CONFIG_JFFS2_ZLIB=y 747CONFIG_JFFS2_ZLIB=y
748# CONFIG_JFFS2_LZO is not set
885CONFIG_JFFS2_RTIME=y 749CONFIG_JFFS2_RTIME=y
886# CONFIG_JFFS2_RUBIN is not set 750# CONFIG_JFFS2_RUBIN is not set
887# CONFIG_CRAMFS is not set 751# CONFIG_CRAMFS is not set
888# CONFIG_VXFS_FS is not set 752# CONFIG_VXFS_FS is not set
753# CONFIG_MINIX_FS is not set
889# CONFIG_HPFS_FS is not set 754# CONFIG_HPFS_FS is not set
890# CONFIG_QNX4FS_FS is not set 755# CONFIG_QNX4FS_FS is not set
756# CONFIG_ROMFS_FS is not set
891# CONFIG_SYSV_FS is not set 757# CONFIG_SYSV_FS is not set
892# CONFIG_UFS_FS is not set 758# CONFIG_UFS_FS is not set
893 759CONFIG_NETWORK_FILESYSTEMS=y
894#
895# Network File Systems
896#
897# CONFIG_NFS_FS is not set 760# CONFIG_NFS_FS is not set
898# CONFIG_NFSD is not set 761# CONFIG_NFSD is not set
899# CONFIG_SMB_FS is not set 762# CONFIG_SMB_FS is not set
@@ -901,55 +764,97 @@ CONFIG_JFFS2_RTIME=y
901# CONFIG_NCP_FS is not set 764# CONFIG_NCP_FS is not set
902# CONFIG_CODA_FS is not set 765# CONFIG_CODA_FS is not set
903# CONFIG_AFS_FS is not set 766# CONFIG_AFS_FS is not set
904# CONFIG_9P_FS is not set
905 767
906# 768#
907# Partition Types 769# Partition Types
908# 770#
909# CONFIG_PARTITION_ADVANCED is not set 771# CONFIG_PARTITION_ADVANCED is not set
910CONFIG_MSDOS_PARTITION=y 772CONFIG_MSDOS_PARTITION=y
911
912#
913# Native Language Support
914#
915# CONFIG_NLS is not set 773# CONFIG_NLS is not set
916 774# CONFIG_DLM is not set
917#
918# Profiling support
919#
920# CONFIG_PROFILING is not set
921 775
922# 776#
923# Kernel hacking 777# Kernel hacking
924# 778#
779CONFIG_TRACE_IRQFLAGS_SUPPORT=y
925# CONFIG_PRINTK_TIME is not set 780# CONFIG_PRINTK_TIME is not set
781CONFIG_ENABLE_WARN_DEPRECATED=y
926CONFIG_ENABLE_MUST_CHECK=y 782CONFIG_ENABLE_MUST_CHECK=y
927# CONFIG_MAGIC_SYSRQ is not set 783# CONFIG_MAGIC_SYSRQ is not set
928# CONFIG_UNUSED_SYMBOLS is not set 784# CONFIG_UNUSED_SYMBOLS is not set
785CONFIG_DEBUG_FS=y
786# CONFIG_HEADERS_CHECK is not set
929# CONFIG_DEBUG_KERNEL is not set 787# CONFIG_DEBUG_KERNEL is not set
930CONFIG_LOG_BUF_SHIFT=14
931# CONFIG_DEBUG_BUGVERBOSE is not set 788# CONFIG_DEBUG_BUGVERBOSE is not set
932# CONFIG_DEBUG_FS is not set 789# CONFIG_SAMPLES is not set
933# CONFIG_SH_STANDARD_BIOS is not set 790# CONFIG_SH_STANDARD_BIOS is not set
934# CONFIG_KGDB is not set 791# CONFIG_EARLY_SCIF_CONSOLE is not set
792# CONFIG_SH_KGDB is not set
935 793
936# 794#
937# Security options 795# Security options
938# 796#
939# CONFIG_KEYS is not set 797# CONFIG_KEYS is not set
940# CONFIG_SECURITY is not set 798# CONFIG_SECURITY is not set
941 799# CONFIG_SECURITY_FILE_CAPABILITIES is not set
942# 800CONFIG_CRYPTO=y
943# Cryptographic options 801# CONFIG_CRYPTO_SEQIV is not set
944# 802# CONFIG_CRYPTO_MANAGER is not set
945# CONFIG_CRYPTO is not set 803# CONFIG_CRYPTO_HMAC is not set
804# CONFIG_CRYPTO_XCBC is not set
805# CONFIG_CRYPTO_NULL is not set
806# CONFIG_CRYPTO_MD4 is not set
807# CONFIG_CRYPTO_MD5 is not set
808# CONFIG_CRYPTO_SHA1 is not set
809# CONFIG_CRYPTO_SHA256 is not set
810# CONFIG_CRYPTO_SHA512 is not set
811# CONFIG_CRYPTO_WP512 is not set
812# CONFIG_CRYPTO_TGR192 is not set
813# CONFIG_CRYPTO_GF128MUL is not set
814# CONFIG_CRYPTO_ECB is not set
815# CONFIG_CRYPTO_CBC is not set
816# CONFIG_CRYPTO_PCBC is not set
817# CONFIG_CRYPTO_LRW is not set
818# CONFIG_CRYPTO_XTS is not set
819# CONFIG_CRYPTO_CTR is not set
820# CONFIG_CRYPTO_GCM is not set
821# CONFIG_CRYPTO_CCM is not set
822# CONFIG_CRYPTO_CRYPTD is not set
823# CONFIG_CRYPTO_DES is not set
824# CONFIG_CRYPTO_FCRYPT is not set
825# CONFIG_CRYPTO_BLOWFISH is not set
826# CONFIG_CRYPTO_TWOFISH is not set
827# CONFIG_CRYPTO_SERPENT is not set
828# CONFIG_CRYPTO_AES is not set
829# CONFIG_CRYPTO_CAST5 is not set
830# CONFIG_CRYPTO_CAST6 is not set
831# CONFIG_CRYPTO_TEA is not set
832# CONFIG_CRYPTO_ARC4 is not set
833# CONFIG_CRYPTO_KHAZAD is not set
834# CONFIG_CRYPTO_ANUBIS is not set
835# CONFIG_CRYPTO_SEED is not set
836# CONFIG_CRYPTO_SALSA20 is not set
837# CONFIG_CRYPTO_DEFLATE is not set
838# CONFIG_CRYPTO_MICHAEL_MIC is not set
839# CONFIG_CRYPTO_CRC32C is not set
840# CONFIG_CRYPTO_CAMELLIA is not set
841# CONFIG_CRYPTO_TEST is not set
842# CONFIG_CRYPTO_AUTHENC is not set
843# CONFIG_CRYPTO_LZO is not set
844CONFIG_CRYPTO_HW=y
946 845
947# 846#
948# Library routines 847# Library routines
949# 848#
849CONFIG_BITREVERSE=y
950# CONFIG_CRC_CCITT is not set 850# CONFIG_CRC_CCITT is not set
951# CONFIG_CRC16 is not set 851# CONFIG_CRC16 is not set
852# CONFIG_CRC_ITU_T is not set
952CONFIG_CRC32=y 853CONFIG_CRC32=y
854# CONFIG_CRC7 is not set
953# CONFIG_LIBCRC32C is not set 855# CONFIG_LIBCRC32C is not set
954CONFIG_ZLIB_INFLATE=y 856CONFIG_ZLIB_INFLATE=y
955CONFIG_ZLIB_DEFLATE=y 857CONFIG_ZLIB_DEFLATE=y
858CONFIG_HAS_IOMEM=y
859CONFIG_HAS_IOPORT=y
860CONFIG_HAS_DMA=y
diff --git a/arch/sh/kernel/cpu/init.c b/arch/sh/kernel/cpu/init.c
index 80a31329ea..75fb03d356 100644
--- a/arch/sh/kernel/cpu/init.c
+++ b/arch/sh/kernel/cpu/init.c
@@ -233,7 +233,7 @@ static void __init dsp_init(void)
233 * and cache configuration in detect_cpu_and_cache_system(). 233 * and cache configuration in detect_cpu_and_cache_system().
234 */ 234 */
235 235
236asmlinkage void __cpuinit sh_cpu_init(void) 236asmlinkage void __init sh_cpu_init(void)
237{ 237{
238 current_thread_info()->cpu = hard_smp_processor_id(); 238 current_thread_info()->cpu = hard_smp_processor_id();
239 239
diff --git a/arch/sh/kernel/cpu/sh4/sq.c b/arch/sh/kernel/cpu/sh4/sq.c
index 8250e017bd..9561b02ade 100644
--- a/arch/sh/kernel/cpu/sh4/sq.c
+++ b/arch/sh/kernel/cpu/sh4/sq.c
@@ -216,7 +216,7 @@ void sq_unmap(unsigned long vaddr)
216 216
217 if (unlikely(!map)) { 217 if (unlikely(!map)) {
218 printk("%s: bad store queue address 0x%08lx\n", 218 printk("%s: bad store queue address 0x%08lx\n",
219 __FUNCTION__, vaddr); 219 __func__, vaddr);
220 return; 220 return;
221 } 221 }
222 222
@@ -233,7 +233,7 @@ void sq_unmap(unsigned long vaddr)
233 vma = remove_vm_area((void *)(map->sq_addr & PAGE_MASK)); 233 vma = remove_vm_area((void *)(map->sq_addr & PAGE_MASK));
234 if (!vma) { 234 if (!vma) {
235 printk(KERN_ERR "%s: bad address 0x%08lx\n", 235 printk(KERN_ERR "%s: bad address 0x%08lx\n",
236 __FUNCTION__, map->sq_addr); 236 __func__, map->sq_addr);
237 return; 237 return;
238 } 238 }
239 } 239 }
diff --git a/arch/sh/kernel/cpu/sh5/unwind.c b/arch/sh/kernel/cpu/sh5/unwind.c
index 119c20afd4..b205b25eaf 100644
--- a/arch/sh/kernel/cpu/sh5/unwind.c
+++ b/arch/sh/kernel/cpu/sh5/unwind.c
@@ -149,7 +149,7 @@ static int lookup_prev_stack_frame(unsigned long fp, unsigned long pc,
149 if (dest >= 63) { 149 if (dest >= 63) {
150 printk(KERN_NOTICE "%s: Invalid dest reg %d " 150 printk(KERN_NOTICE "%s: Invalid dest reg %d "
151 "specified in movi handler. Failed " 151 "specified in movi handler. Failed "
152 "opcode was 0x%lx: ", __FUNCTION__, 152 "opcode was 0x%lx: ", __func__,
153 dest, op); 153 dest, op);
154 154
155 continue; 155 continue;
diff --git a/arch/sh/kernel/io_trapped.c b/arch/sh/kernel/io_trapped.c
index 86a665d922..39cd7f3aec 100644
--- a/arch/sh/kernel/io_trapped.c
+++ b/arch/sh/kernel/io_trapped.c
@@ -32,7 +32,7 @@ EXPORT_SYMBOL_GPL(trapped_mem);
32#endif 32#endif
33static DEFINE_SPINLOCK(trapped_lock); 33static DEFINE_SPINLOCK(trapped_lock);
34 34
35int __init register_trapped_io(struct trapped_io *tiop) 35int register_trapped_io(struct trapped_io *tiop)
36{ 36{
37 struct resource *res; 37 struct resource *res;
38 unsigned long len = 0, flags = 0; 38 unsigned long len = 0, flags = 0;
diff --git a/arch/sh/kernel/sh_ksyms_32.c b/arch/sh/kernel/sh_ksyms_32.c
index e1a6de9088..d80de39032 100644
--- a/arch/sh/kernel/sh_ksyms_32.c
+++ b/arch/sh/kernel/sh_ksyms_32.c
@@ -111,9 +111,9 @@ DECLARE_EXPORT(__movmem_i4_even);
111DECLARE_EXPORT(__movmem_i4_odd); 111DECLARE_EXPORT(__movmem_i4_odd);
112DECLARE_EXPORT(__movmemSI12_i4); 112DECLARE_EXPORT(__movmemSI12_i4);
113 113
114#if (__GNUC_MINOR__ == 2 || defined(__GNUC_STM_RELEASE__)) 114#if (__GNUC_MINOR__ >= 2 || defined(__GNUC_STM_RELEASE__))
115/* 115/*
116 * GCC 4.2 emits these for division, as do GCC 4.1.x versions of the ST 116 * GCC >= 4.2 emits these for division, as do GCC 4.1.x versions of the ST
117 * compiler which include backported patches. 117 * compiler which include backported patches.
118 */ 118 */
119DECLARE_EXPORT(__sdivsi3_i4i); 119DECLARE_EXPORT(__sdivsi3_i4i);
@@ -146,5 +146,6 @@ EXPORT_SYMBOL(csum_partial_copy_generic);
146EXPORT_SYMBOL(csum_ipv6_magic); 146EXPORT_SYMBOL(csum_ipv6_magic);
147#endif 147#endif
148EXPORT_SYMBOL(clear_page); 148EXPORT_SYMBOL(clear_page);
149EXPORT_SYMBOL(copy_page);
149EXPORT_SYMBOL(__clear_user); 150EXPORT_SYMBOL(__clear_user);
150EXPORT_SYMBOL(_ebss); 151EXPORT_SYMBOL(_ebss);
diff --git a/arch/sh/kernel/sh_ksyms_64.c b/arch/sh/kernel/sh_ksyms_64.c
index 8004c38d3d..dd38a683de 100644
--- a/arch/sh/kernel/sh_ksyms_64.c
+++ b/arch/sh/kernel/sh_ksyms_64.c
@@ -42,6 +42,7 @@ EXPORT_SYMBOL(__down_trylock);
42EXPORT_SYMBOL(__up); 42EXPORT_SYMBOL(__up);
43EXPORT_SYMBOL(__put_user_asm_l); 43EXPORT_SYMBOL(__put_user_asm_l);
44EXPORT_SYMBOL(__get_user_asm_l); 44EXPORT_SYMBOL(__get_user_asm_l);
45EXPORT_SYMBOL(copy_page);
45EXPORT_SYMBOL(__copy_user); 46EXPORT_SYMBOL(__copy_user);
46EXPORT_SYMBOL(memcpy); 47EXPORT_SYMBOL(memcpy);
47EXPORT_SYMBOL(__udelay); 48EXPORT_SYMBOL(__udelay);
diff --git a/arch/sh/kernel/timers/timer-cmt.c b/arch/sh/kernel/timers/timer-cmt.c
index 71312324b5..d20c8c3758 100644
--- a/arch/sh/kernel/timers/timer-cmt.c
+++ b/arch/sh/kernel/timers/timer-cmt.c
@@ -77,7 +77,7 @@ static unsigned long cmt_timer_get_offset(void)
77 count -= LATCH; 77 count -= LATCH;
78 } else { 78 } else {
79 printk("%s (): hardware timer problem?\n", 79 printk("%s (): hardware timer problem?\n",
80 __FUNCTION__); 80 __func__);
81 } 81 }
82 } 82 }
83 } else 83 } else
diff --git a/arch/sh/kernel/timers/timer-mtu2.c b/arch/sh/kernel/timers/timer-mtu2.c
index ade9d6eb29..fe453c01f9 100644
--- a/arch/sh/kernel/timers/timer-mtu2.c
+++ b/arch/sh/kernel/timers/timer-mtu2.c
@@ -76,7 +76,7 @@ static unsigned long mtu2_timer_get_offset(void)
76 count -= LATCH; 76 count -= LATCH;
77 } else { 77 } else {
78 printk("%s (): hardware timer problem?\n", 78 printk("%s (): hardware timer problem?\n",
79 __FUNCTION__); 79 __func__);
80 } 80 }
81 } 81 }
82 } else 82 } else
diff --git a/arch/sh/kernel/topology.c b/arch/sh/kernel/topology.c
index 9b5844a1bd..0838942b70 100644
--- a/arch/sh/kernel/topology.c
+++ b/arch/sh/kernel/topology.c
@@ -29,7 +29,7 @@ static int __init topology_init(void)
29 ret = register_cpu(&per_cpu(cpu_devices, i), i); 29 ret = register_cpu(&per_cpu(cpu_devices, i), i);
30 if (unlikely(ret)) 30 if (unlikely(ret))
31 printk(KERN_WARNING "%s: register_cpu %d failed (%d)\n", 31 printk(KERN_WARNING "%s: register_cpu %d failed (%d)\n",
32 __FUNCTION__, i, ret); 32 __func__, i, ret);
33 } 33 }
34 34
35#if defined(CONFIG_NUMA) && !defined(CONFIG_SMP) 35#if defined(CONFIG_NUMA) && !defined(CONFIG_SMP)
diff --git a/arch/sh/kernel/traps_64.c b/arch/sh/kernel/traps_64.c
index a55ac81d79..1b58a74990 100644
--- a/arch/sh/kernel/traps_64.c
+++ b/arch/sh/kernel/traps_64.c
@@ -238,7 +238,7 @@ DO_ERROR(12, SIGILL, "reserved instruction", reserved_inst, current)
238/* Called with interrupts disabled */ 238/* Called with interrupts disabled */
239asmlinkage void do_exception_error(unsigned long ex, struct pt_regs *regs) 239asmlinkage void do_exception_error(unsigned long ex, struct pt_regs *regs)
240{ 240{
241 show_excp_regs(__FUNCTION__, -1, -1, regs); 241 show_excp_regs(__func__, -1, -1, regs);
242 die_if_kernel("exception", regs, ex); 242 die_if_kernel("exception", regs, ex);
243} 243}
244 244
diff --git a/arch/sh/lib64/c-checksum.c b/arch/sh/lib64/c-checksum.c
index 5dfbd8b5e5..5c284e0cff 100644
--- a/arch/sh/lib64/c-checksum.c
+++ b/arch/sh/lib64/c-checksum.c
@@ -207,7 +207,7 @@ __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr,
207 result = (result & 0xffffffff) + (result >> 32); 207 result = (result & 0xffffffff) + (result >> 32);
208 208
209 pr_debug("%s saddr %x daddr %x len %x proto %x sum %x result %08Lx\n", 209 pr_debug("%s saddr %x daddr %x len %x proto %x sum %x result %08Lx\n",
210 __FUNCTION__, saddr, daddr, len, proto, sum, result); 210 __func__, saddr, daddr, len, proto, sum, result);
211 211
212 return (__wsum)result; 212 return (__wsum)result;
213} 213}
diff --git a/arch/sh/lib64/udelay.c b/arch/sh/lib64/udelay.c
index 23c7d17fb9..d76bd80119 100644
--- a/arch/sh/lib64/udelay.c
+++ b/arch/sh/lib64/udelay.c
@@ -21,7 +21,7 @@
21 * a 1GHz box, that's about 2 seconds. 21 * a 1GHz box, that's about 2 seconds.
22 */ 22 */
23 23
24void __delay(int loops) 24void __delay(unsigned long loops)
25{ 25{
26 long long dummy; 26 long long dummy;
27 __asm__ __volatile__("gettr tr0, %1\n\t" 27 __asm__ __volatile__("gettr tr0, %1\n\t"
@@ -33,24 +33,17 @@ void __delay(int loops)
33 :"0"(loops)); 33 :"0"(loops));
34} 34}
35 35
36void __udelay(unsigned long long usecs, unsigned long lpj) 36inline void __const_udelay(unsigned long xloops)
37{ 37{
38 usecs *= (((unsigned long long) HZ << 32) / 1000000) * lpj; 38 __delay(xloops * (HZ * cpu_data[raw_smp_processor_id()].loops_per_jiffy));
39 __delay((long long) usecs >> 32);
40} 39}
41 40
42void __ndelay(unsigned long long nsecs, unsigned long lpj) 41void __udelay(unsigned long usecs)
43{ 42{
44 nsecs *= (((unsigned long long) HZ << 32) / 1000000000) * lpj; 43 __const_udelay(usecs * 0x000010c6); /* 2**32 / 1000000 */
45 __delay((long long) nsecs >> 32);
46} 44}
47 45
48void udelay(unsigned long usecs) 46void __ndelay(unsigned long nsecs)
49{ 47{
50 __udelay(usecs, cpu_data[raw_smp_processor_id()].loops_per_jiffy); 48 __const_udelay(nsecs * 0x00000005);
51}
52
53void ndelay(unsigned long nsecs)
54{
55 __ndelay(nsecs, cpu_data[raw_smp_processor_id()].loops_per_jiffy);
56} 49}
diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig
index f549b8cd25..5fd218430b 100644
--- a/arch/sh/mm/Kconfig
+++ b/arch/sh/mm/Kconfig
@@ -59,7 +59,7 @@ config 32BIT
59 59
60config PMB 60config PMB
61 bool "Support 32-bit physical addressing through PMB" 61 bool "Support 32-bit physical addressing through PMB"
62 depends on MMU && (CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785) 62 depends on MMU && EXPERIMENTAL && (CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785)
63 select 32BIT 63 select 32BIT
64 default y 64 default y
65 help 65 help
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c
index e2ed6dd252..53dde06073 100644
--- a/arch/sh/mm/init.c
+++ b/arch/sh/mm/init.c
@@ -328,7 +328,7 @@ int arch_add_memory(int nid, u64 start, u64 size)
328 /* We only have ZONE_NORMAL, so this is easy.. */ 328 /* We only have ZONE_NORMAL, so this is easy.. */
329 ret = __add_pages(pgdat->node_zones + ZONE_NORMAL, start_pfn, nr_pages); 329 ret = __add_pages(pgdat->node_zones + ZONE_NORMAL, start_pfn, nr_pages);
330 if (unlikely(ret)) 330 if (unlikely(ret))
331 printk("%s: Failed, __add_pages() == %d\n", __FUNCTION__, ret); 331 printk("%s: Failed, __add_pages() == %d\n", __func__, ret);
332 332
333 return ret; 333 return ret;
334} 334}
diff --git a/arch/sh/mm/ioremap_32.c b/arch/sh/mm/ioremap_32.c
index 0c7b7e33ab..882a32ebc6 100644
--- a/arch/sh/mm/ioremap_32.c
+++ b/arch/sh/mm/ioremap_32.c
@@ -141,7 +141,7 @@ void __iounmap(void __iomem *addr)
141 141
142 p = remove_vm_area((void *)(vaddr & PAGE_MASK)); 142 p = remove_vm_area((void *)(vaddr & PAGE_MASK));
143 if (!p) { 143 if (!p) {
144 printk(KERN_ERR "%s: bad address %p\n", __FUNCTION__, addr); 144 printk(KERN_ERR "%s: bad address %p\n", __func__, addr);
145 return; 145 return;
146 } 146 }
147 147
diff --git a/arch/sh/mm/ioremap_64.c b/arch/sh/mm/ioremap_64.c
index e27d165192..cea224c3e4 100644
--- a/arch/sh/mm/ioremap_64.c
+++ b/arch/sh/mm/ioremap_64.c
@@ -178,7 +178,7 @@ static unsigned long shmedia_alloc_io(unsigned long phys, unsigned long size,
178 } else { 178 } else {
179 if (!printed_full) { 179 if (!printed_full) {
180 printk("%s: done with statics, switching to kmalloc\n", 180 printk("%s: done with statics, switching to kmalloc\n",
181 __FUNCTION__); 181 __func__);
182 printed_full = 1; 182 printed_full = 1;
183 } 183 }
184 tlen = strlen(name); 184 tlen = strlen(name);
@@ -352,7 +352,7 @@ void onchip_unmap(unsigned long vaddr)
352 res = shmedia_find_resource(&shmedia_iomap, vaddr); 352 res = shmedia_find_resource(&shmedia_iomap, vaddr);
353 if (!res) { 353 if (!res) {
354 printk(KERN_ERR "%s: Failed to free 0x%08lx\n", 354 printk(KERN_ERR "%s: Failed to free 0x%08lx\n",
355 __FUNCTION__, vaddr); 355 __func__, vaddr);
356 return; 356 return;
357 } 357 }
358 358
diff --git a/arch/sh/mm/pg-sh7705.c b/arch/sh/mm/pg-sh7705.c
index a4b015f95a..7f885b7f8a 100644
--- a/arch/sh/mm/pg-sh7705.c
+++ b/arch/sh/mm/pg-sh7705.c
@@ -14,6 +14,7 @@
14#include <linux/mman.h> 14#include <linux/mman.h>
15#include <linux/mm.h> 15#include <linux/mm.h>
16#include <linux/threads.h> 16#include <linux/threads.h>
17#include <linux/fs.h>
17#include <asm/addrspace.h> 18#include <asm/addrspace.h>
18#include <asm/page.h> 19#include <asm/page.h>
19#include <asm/pgtable.h> 20#include <asm/pgtable.h>
diff --git a/arch/sh/mm/tlbflush_64.c b/arch/sh/mm/tlbflush_64.c
index 2a98c9ec88..7876997ba1 100644
--- a/arch/sh/mm/tlbflush_64.c
+++ b/arch/sh/mm/tlbflush_64.c
@@ -131,7 +131,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long writeaccess,
131#ifdef DEBUG_FAULT 131#ifdef DEBUG_FAULT
132 print_task(tsk); 132 print_task(tsk);
133 printk("%s:%d fault, address is 0x%08x PC %016Lx textaccess %d writeaccess %d\n", 133 printk("%s:%d fault, address is 0x%08x PC %016Lx textaccess %d writeaccess %d\n",
134 __FUNCTION__,__LINE__, 134 __func__, __LINE__,
135 address,regs->pc,textaccess,writeaccess); 135 address,regs->pc,textaccess,writeaccess);
136 show_regs(regs); 136 show_regs(regs);
137#endif 137#endif
@@ -145,7 +145,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long writeaccess,
145#ifdef DEBUG_FAULT 145#ifdef DEBUG_FAULT
146 print_task(tsk); 146 print_task(tsk);
147 printk("%s:%d fault, address is 0x%08x PC %016Lx textaccess %d writeaccess %d\n", 147 printk("%s:%d fault, address is 0x%08x PC %016Lx textaccess %d writeaccess %d\n",
148 __FUNCTION__,__LINE__, 148 __func__, __LINE__,
149 address,regs->pc,textaccess,writeaccess); 149 address,regs->pc,textaccess,writeaccess);
150 show_regs(regs); 150 show_regs(regs);
151 151
@@ -157,7 +157,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long writeaccess,
157#ifdef DEBUG_FAULT 157#ifdef DEBUG_FAULT
158 print_task(tsk); 158 print_task(tsk);
159 printk("%s:%d fault, address is 0x%08x PC %016Lx textaccess %d writeaccess %d\n", 159 printk("%s:%d fault, address is 0x%08x PC %016Lx textaccess %d writeaccess %d\n",
160 __FUNCTION__,__LINE__, 160 __func__, __LINE__,
161 address,regs->pc,textaccess,writeaccess); 161 address,regs->pc,textaccess,writeaccess);
162 show_regs(regs); 162 show_regs(regs);
163#endif 163#endif
diff --git a/arch/sh/tools/mach-types b/arch/sh/tools/mach-types
index 67997af25c..d63b93da95 100644
--- a/arch/sh/tools/mach-types
+++ b/arch/sh/tools/mach-types
@@ -38,7 +38,6 @@ R7780MP SH_R7780MP
38R7785RP SH_R7785RP 38R7785RP SH_R7785RP
39TITAN SH_TITAN 39TITAN SH_TITAN
40SHMIN SH_SHMIN 40SHMIN SH_SHMIN
417710VOIPGW SH_7710VOIPGW
42LBOXRE2 SH_LBOX_RE2 41LBOXRE2 SH_LBOX_RE2
43X3PROTO SH_X3PROTO 42X3PROTO SH_X3PROTO
44MAGICPANELR2 SH_MAGIC_PANEL_R2 43MAGICPANELR2 SH_MAGIC_PANEL_R2
diff --git a/arch/x86/boot/vesa.h b/arch/x86/boot/vesa.h
index ff5b73cd40..468e444622 100644
--- a/arch/x86/boot/vesa.h
+++ b/arch/x86/boot/vesa.h
@@ -26,17 +26,10 @@ struct vesa_general_info {
26 far_ptr video_mode_ptr; /* 14 */ 26 far_ptr video_mode_ptr; /* 14 */
27 u16 total_memory; /* 18 */ 27 u16 total_memory; /* 18 */
28 28
29 u16 oem_software_rev; /* 20 */ 29 u8 reserved[236]; /* 20 */
30 far_ptr oem_vendor_name_ptr; /* 22 */
31 far_ptr oem_product_name_ptr; /* 26 */
32 far_ptr oem_product_rev_ptr; /* 30 */
33
34 u8 reserved[222]; /* 34 */
35 u8 oem_data[256]; /* 256 */
36} __attribute__ ((packed)); 30} __attribute__ ((packed));
37 31
38#define VESA_MAGIC ('V' + ('E' << 8) + ('S' << 16) + ('A' << 24)) 32#define VESA_MAGIC ('V' + ('E' << 8) + ('S' << 16) + ('A' << 24))
39#define VBE2_MAGIC ('V' + ('B' << 8) + ('E' << 16) + ('2' << 24))
40 33
41struct vesa_mode_info { 34struct vesa_mode_info {
42 u16 mode_attr; /* 0 */ 35 u16 mode_attr; /* 0 */
diff --git a/arch/x86/boot/video-vesa.c b/arch/x86/boot/video-vesa.c
index 662dd2f130..419b5c2733 100644
--- a/arch/x86/boot/video-vesa.c
+++ b/arch/x86/boot/video-vesa.c
@@ -37,8 +37,6 @@ static int vesa_probe(void)
37 37
38 video_vesa.modes = GET_HEAP(struct mode_info, 0); 38 video_vesa.modes = GET_HEAP(struct mode_info, 0);
39 39
40 vginfo.signature = VBE2_MAGIC;
41
42 ax = 0x4f00; 40 ax = 0x4f00;
43 di = (size_t)&vginfo; 41 di = (size_t)&vginfo;
44 asm(INT10 42 asm(INT10
diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c
index 1c0503bdfb..5e7771a3ba 100644
--- a/arch/x86/ia32/ia32_signal.c
+++ b/arch/x86/ia32/ia32_signal.c
@@ -500,7 +500,7 @@ int ia32_setup_frame(int sig, struct k_sigaction *ka,
500 regs->ss = __USER32_DS; 500 regs->ss = __USER32_DS;
501 501
502 set_fs(USER_DS); 502 set_fs(USER_DS);
503 regs->flags &= ~X86_EFLAGS_TF; 503 regs->flags &= ~(X86_EFLAGS_TF | X86_EFLAGS_DF);
504 if (test_thread_flag(TIF_SINGLESTEP)) 504 if (test_thread_flag(TIF_SINGLESTEP))
505 ptrace_notify(SIGTRAP); 505 ptrace_notify(SIGTRAP);
506 506
@@ -600,7 +600,7 @@ int ia32_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
600 regs->ss = __USER32_DS; 600 regs->ss = __USER32_DS;
601 601
602 set_fs(USER_DS); 602 set_fs(USER_DS);
603 regs->flags &= ~X86_EFLAGS_TF; 603 regs->flags &= ~(X86_EFLAGS_TF | X86_EFLAGS_DF);
604 if (test_thread_flag(TIF_SINGLESTEP)) 604 if (test_thread_flag(TIF_SINGLESTEP))
605 ptrace_notify(SIGTRAP); 605 ptrace_notify(SIGTRAP);
606 606
diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c
index 60fe801575..d2e39e69aa 100644
--- a/arch/x86/kernel/i387.c
+++ b/arch/x86/kernel/i387.c
@@ -261,7 +261,7 @@ static void convert_from_fxsr(struct user_i387_ia32_struct *env,
261 } 261 }
262#else 262#else
263 env->fip = fxsave->fip; 263 env->fip = fxsave->fip;
264 env->fcs = fxsave->fcs; 264 env->fcs = (u16) fxsave->fcs | ((u32) fxsave->fop << 16);
265 env->foo = fxsave->foo; 265 env->foo = fxsave->foo;
266 env->fos = fxsave->fos; 266 env->fos = fxsave->fos;
267#endif 267#endif
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c
index f41fdc98ef..8f64abe699 100644
--- a/arch/x86/kernel/ptrace.c
+++ b/arch/x86/kernel/ptrace.c
@@ -323,6 +323,16 @@ static int putreg(struct task_struct *child,
323 return set_flags(child, value); 323 return set_flags(child, value);
324 324
325#ifdef CONFIG_X86_64 325#ifdef CONFIG_X86_64
326 /*
327 * Orig_ax is really just a flag with small positive and
328 * negative values, so make sure to always sign-extend it
329 * from 32 bits so that it works correctly regardless of
330 * whether we come from a 32-bit environment or not.
331 */
332 case offsetof(struct user_regs_struct, orig_ax):
333 value = (long) (s32) value;
334 break;
335
326 case offsetof(struct user_regs_struct,fs_base): 336 case offsetof(struct user_regs_struct,fs_base):
327 if (value >= TASK_SIZE_OF(child)) 337 if (value >= TASK_SIZE_OF(child))
328 return -EIO; 338 return -EIO;
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index 7fd6ac43e4..55ceb8cdef 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -326,6 +326,10 @@ static inline void kb_wait(void)
326 } 326 }
327} 327}
328 328
329void __attribute__((weak)) mach_reboot_fixups(void)
330{
331}
332
329static void native_machine_emergency_restart(void) 333static void native_machine_emergency_restart(void)
330{ 334{
331 int i; 335 int i;
@@ -337,6 +341,8 @@ static void native_machine_emergency_restart(void)
337 /* Could also try the reset bit in the Hammer NB */ 341 /* Could also try the reset bit in the Hammer NB */
338 switch (reboot_type) { 342 switch (reboot_type) {
339 case BOOT_KBD: 343 case BOOT_KBD:
344 mach_reboot_fixups(); /* for board specific fixups */
345
340 for (i = 0; i < 10; i++) { 346 for (i = 0; i < 10; i++) {
341 kb_wait(); 347 kb_wait();
342 udelay(50); 348 udelay(50);
diff --git a/arch/x86/kernel/signal_32.c b/arch/x86/kernel/signal_32.c
index caee1f002f..0157a6f0f4 100644
--- a/arch/x86/kernel/signal_32.c
+++ b/arch/x86/kernel/signal_32.c
@@ -407,7 +407,7 @@ static int setup_frame(int sig, struct k_sigaction *ka,
407 * The tracer may want to single-step inside the 407 * The tracer may want to single-step inside the
408 * handler too. 408 * handler too.
409 */ 409 */
410 regs->flags &= ~TF_MASK; 410 regs->flags &= ~(TF_MASK | X86_EFLAGS_DF);
411 if (test_thread_flag(TIF_SINGLESTEP)) 411 if (test_thread_flag(TIF_SINGLESTEP))
412 ptrace_notify(SIGTRAP); 412 ptrace_notify(SIGTRAP);
413 413
@@ -500,7 +500,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
500 * The tracer may want to single-step inside the 500 * The tracer may want to single-step inside the
501 * handler too. 501 * handler too.
502 */ 502 */
503 regs->flags &= ~TF_MASK; 503 regs->flags &= ~(TF_MASK | X86_EFLAGS_DF);
504 if (test_thread_flag(TIF_SINGLESTEP)) 504 if (test_thread_flag(TIF_SINGLESTEP))
505 ptrace_notify(SIGTRAP); 505 ptrace_notify(SIGTRAP);
506 506
diff --git a/arch/x86/kernel/signal_64.c b/arch/x86/kernel/signal_64.c
index 7347bb14e3..56b72fb67f 100644
--- a/arch/x86/kernel/signal_64.c
+++ b/arch/x86/kernel/signal_64.c
@@ -295,7 +295,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
295 see include/asm-x86_64/uaccess.h for details. */ 295 see include/asm-x86_64/uaccess.h for details. */
296 set_fs(USER_DS); 296 set_fs(USER_DS);
297 297
298 regs->flags &= ~X86_EFLAGS_TF; 298 regs->flags &= ~(X86_EFLAGS_TF | X86_EFLAGS_DF);
299 if (test_thread_flag(TIF_SINGLESTEP)) 299 if (test_thread_flag(TIF_SINGLESTEP))
300 ptrace_notify(SIGTRAP); 300 ptrace_notify(SIGTRAP);
301#ifdef DEBUG_SIG 301#ifdef DEBUG_SIG
diff --git a/arch/x86/kernel/step.c b/arch/x86/kernel/step.c
index 2ef1a5f8d6..9d406cdc84 100644
--- a/arch/x86/kernel/step.c
+++ b/arch/x86/kernel/step.c
@@ -166,7 +166,7 @@ static void enable_step(struct task_struct *child, bool block)
166 child->thread.debugctlmsr | DEBUGCTLMSR_BTF); 166 child->thread.debugctlmsr | DEBUGCTLMSR_BTF);
167 } else { 167 } else {
168 write_debugctlmsr(child, 168 write_debugctlmsr(child,
169 child->thread.debugctlmsr & ~TIF_DEBUGCTLMSR); 169 child->thread.debugctlmsr & ~DEBUGCTLMSR_BTF);
170 170
171 if (!child->thread.debugctlmsr) 171 if (!child->thread.debugctlmsr)
172 clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR); 172 clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR);
@@ -189,7 +189,7 @@ void user_disable_single_step(struct task_struct *child)
189 * Make sure block stepping (BTF) is disabled. 189 * Make sure block stepping (BTF) is disabled.
190 */ 190 */
191 write_debugctlmsr(child, 191 write_debugctlmsr(child,
192 child->thread.debugctlmsr & ~TIF_DEBUGCTLMSR); 192 child->thread.debugctlmsr & ~DEBUGCTLMSR_BTF);
193 193
194 if (!child->thread.debugctlmsr) 194 if (!child->thread.debugctlmsr)
195 clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR); 195 clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR);
diff --git a/crypto/Kconfig b/crypto/Kconfig
index 898acc5c19..69f1be6816 100644
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -575,6 +575,7 @@ config CRYPTO_TEST
575config CRYPTO_AUTHENC 575config CRYPTO_AUTHENC
576 tristate "Authenc support" 576 tristate "Authenc support"
577 select CRYPTO_AEAD 577 select CRYPTO_AEAD
578 select CRYPTO_BLKCIPHER
578 select CRYPTO_MANAGER 579 select CRYPTO_MANAGER
579 select CRYPTO_HASH 580 select CRYPTO_HASH
580 help 581 help
diff --git a/crypto/Makefile b/crypto/Makefile
index 48c7583799..7cf36253a7 100644
--- a/crypto/Makefile
+++ b/crypto/Makefile
@@ -12,9 +12,9 @@ obj-$(CONFIG_CRYPTO_AEAD) += aead.o
12 12
13crypto_blkcipher-objs := ablkcipher.o 13crypto_blkcipher-objs := ablkcipher.o
14crypto_blkcipher-objs += blkcipher.o 14crypto_blkcipher-objs += blkcipher.o
15crypto_blkcipher-objs += chainiv.o
16crypto_blkcipher-objs += eseqiv.o
15obj-$(CONFIG_CRYPTO_BLKCIPHER) += crypto_blkcipher.o 17obj-$(CONFIG_CRYPTO_BLKCIPHER) += crypto_blkcipher.o
16obj-$(CONFIG_CRYPTO_BLKCIPHER) += chainiv.o
17obj-$(CONFIG_CRYPTO_BLKCIPHER) += eseqiv.o
18obj-$(CONFIG_CRYPTO_SEQIV) += seqiv.o 18obj-$(CONFIG_CRYPTO_SEQIV) += seqiv.o
19 19
20crypto_hash-objs := hash.o 20crypto_hash-objs := hash.o
diff --git a/crypto/ablkcipher.c b/crypto/ablkcipher.c
index 3bcb099b4a..94140b3756 100644
--- a/crypto/ablkcipher.c
+++ b/crypto/ablkcipher.c
@@ -341,6 +341,3 @@ err:
341 return ERR_PTR(err); 341 return ERR_PTR(err);
342} 342}
343EXPORT_SYMBOL_GPL(crypto_alloc_ablkcipher); 343EXPORT_SYMBOL_GPL(crypto_alloc_ablkcipher);
344
345MODULE_LICENSE("GPL");
346MODULE_DESCRIPTION("Asynchronous block chaining cipher type");
diff --git a/crypto/blkcipher.c b/crypto/blkcipher.c
index 4a7e65c4df..185f955fb0 100644
--- a/crypto/blkcipher.c
+++ b/crypto/blkcipher.c
@@ -696,5 +696,34 @@ void skcipher_geniv_exit(struct crypto_tfm *tfm)
696} 696}
697EXPORT_SYMBOL_GPL(skcipher_geniv_exit); 697EXPORT_SYMBOL_GPL(skcipher_geniv_exit);
698 698
699static int __init blkcipher_module_init(void)
700{
701 int err;
702
703 err = chainiv_module_init();
704 if (err)
705 goto out;
706
707 err = eseqiv_module_init();
708 if (err)
709 goto eseqiv_err;
710
711out:
712 return err;
713
714eseqiv_err:
715 chainiv_module_exit();
716 goto out;
717}
718
719static void __exit blkcipher_module_exit(void)
720{
721 eseqiv_module_exit();
722 chainiv_module_exit();
723}
724
725module_init(blkcipher_module_init);
726module_exit(blkcipher_module_exit);
727
699MODULE_LICENSE("GPL"); 728MODULE_LICENSE("GPL");
700MODULE_DESCRIPTION("Generic block chaining cipher type"); 729MODULE_DESCRIPTION("Generic block chaining cipher type");
diff --git a/crypto/chainiv.c b/crypto/chainiv.c
index d17fa0454d..6da3f577e4 100644
--- a/crypto/chainiv.c
+++ b/crypto/chainiv.c
@@ -314,18 +314,12 @@ static struct crypto_template chainiv_tmpl = {
314 .module = THIS_MODULE, 314 .module = THIS_MODULE,
315}; 315};
316 316
317static int __init chainiv_module_init(void) 317int __init chainiv_module_init(void)
318{ 318{
319 return crypto_register_template(&chainiv_tmpl); 319 return crypto_register_template(&chainiv_tmpl);
320} 320}
321 321
322static void __exit chainiv_module_exit(void) 322void chainiv_module_exit(void)
323{ 323{
324 crypto_unregister_template(&chainiv_tmpl); 324 crypto_unregister_template(&chainiv_tmpl);
325} 325}
326
327module_init(chainiv_module_init);
328module_exit(chainiv_module_exit);
329
330MODULE_LICENSE("GPL");
331MODULE_DESCRIPTION("Chain IV Generator");
diff --git a/crypto/digest.c b/crypto/digest.c
index 6fd43bddd5..b526cc348b 100644
--- a/crypto/digest.c
+++ b/crypto/digest.c
@@ -21,6 +21,8 @@
21#include <linux/module.h> 21#include <linux/module.h>
22#include <linux/scatterlist.h> 22#include <linux/scatterlist.h>
23 23
24#include "internal.h"
25
24static int init(struct hash_desc *desc) 26static int init(struct hash_desc *desc)
25{ 27{
26 struct crypto_tfm *tfm = crypto_hash_tfm(desc->tfm); 28 struct crypto_tfm *tfm = crypto_hash_tfm(desc->tfm);
diff --git a/crypto/eseqiv.c b/crypto/eseqiv.c
index eb90d27ae1..b14f14e314 100644
--- a/crypto/eseqiv.c
+++ b/crypto/eseqiv.c
@@ -247,18 +247,12 @@ static struct crypto_template eseqiv_tmpl = {
247 .module = THIS_MODULE, 247 .module = THIS_MODULE,
248}; 248};
249 249
250static int __init eseqiv_module_init(void) 250int __init eseqiv_module_init(void)
251{ 251{
252 return crypto_register_template(&eseqiv_tmpl); 252 return crypto_register_template(&eseqiv_tmpl);
253} 253}
254 254
255static void __exit eseqiv_module_exit(void) 255void __exit eseqiv_module_exit(void)
256{ 256{
257 crypto_unregister_template(&eseqiv_tmpl); 257 crypto_unregister_template(&eseqiv_tmpl);
258} 258}
259
260module_init(eseqiv_module_init);
261module_exit(eseqiv_module_exit);
262
263MODULE_LICENSE("GPL");
264MODULE_DESCRIPTION("Encrypted Sequence Number IV Generator");
diff --git a/crypto/xcbc.c b/crypto/xcbc.c
index 86727403e5..2feb0f239c 100644
--- a/crypto/xcbc.c
+++ b/crypto/xcbc.c
@@ -124,6 +124,11 @@ static int crypto_xcbc_digest_update2(struct hash_desc *pdesc,
124 unsigned int offset = sg[i].offset; 124 unsigned int offset = sg[i].offset;
125 unsigned int slen = sg[i].length; 125 unsigned int slen = sg[i].length;
126 126
127 if (unlikely(slen > nbytes))
128 slen = nbytes;
129
130 nbytes -= slen;
131
127 while (slen > 0) { 132 while (slen > 0) {
128 unsigned int len = min(slen, ((unsigned int)(PAGE_SIZE)) - offset); 133 unsigned int len = min(slen, ((unsigned int)(PAGE_SIZE)) - offset);
129 char *p = crypto_kmap(pg, 0) + offset; 134 char *p = crypto_kmap(pg, 0) + offset;
@@ -177,7 +182,6 @@ static int crypto_xcbc_digest_update2(struct hash_desc *pdesc,
177 offset = 0; 182 offset = 0;
178 pg++; 183 pg++;
179 } 184 }
180 nbytes-=sg[i].length;
181 i++; 185 i++;
182 } while (nbytes>0); 186 } while (nbytes>0);
183 187
diff --git a/crypto/xts.c b/crypto/xts.c
index 8eb08bfaf7..d87b0f3102 100644
--- a/crypto/xts.c
+++ b/crypto/xts.c
@@ -77,16 +77,16 @@ static int setkey(struct crypto_tfm *parent, const u8 *key,
77} 77}
78 78
79struct sinfo { 79struct sinfo {
80 be128 t; 80 be128 *t;
81 struct crypto_tfm *tfm; 81 struct crypto_tfm *tfm;
82 void (*fn)(struct crypto_tfm *, u8 *, const u8 *); 82 void (*fn)(struct crypto_tfm *, u8 *, const u8 *);
83}; 83};
84 84
85static inline void xts_round(struct sinfo *s, void *dst, const void *src) 85static inline void xts_round(struct sinfo *s, void *dst, const void *src)
86{ 86{
87 be128_xor(dst, &s->t, src); /* PP <- T xor P */ 87 be128_xor(dst, s->t, src); /* PP <- T xor P */
88 s->fn(s->tfm, dst, dst); /* CC <- E(Key1,PP) */ 88 s->fn(s->tfm, dst, dst); /* CC <- E(Key1,PP) */
89 be128_xor(dst, dst, &s->t); /* C <- T xor CC */ 89 be128_xor(dst, dst, s->t); /* C <- T xor CC */
90} 90}
91 91
92static int crypt(struct blkcipher_desc *d, 92static int crypt(struct blkcipher_desc *d,
@@ -101,7 +101,6 @@ static int crypt(struct blkcipher_desc *d,
101 .tfm = crypto_cipher_tfm(ctx->child), 101 .tfm = crypto_cipher_tfm(ctx->child),
102 .fn = fn 102 .fn = fn
103 }; 103 };
104 be128 *iv;
105 u8 *wsrc; 104 u8 *wsrc;
106 u8 *wdst; 105 u8 *wdst;
107 106
@@ -109,20 +108,20 @@ static int crypt(struct blkcipher_desc *d,
109 if (!w->nbytes) 108 if (!w->nbytes)
110 return err; 109 return err;
111 110
111 s.t = (be128 *)w->iv;
112 avail = w->nbytes; 112 avail = w->nbytes;
113 113
114 wsrc = w->src.virt.addr; 114 wsrc = w->src.virt.addr;
115 wdst = w->dst.virt.addr; 115 wdst = w->dst.virt.addr;
116 116
117 /* calculate first value of T */ 117 /* calculate first value of T */
118 iv = (be128 *)w->iv; 118 tw(crypto_cipher_tfm(ctx->tweak), w->iv, w->iv);
119 tw(crypto_cipher_tfm(ctx->tweak), (void *)&s.t, w->iv);
120 119
121 goto first; 120 goto first;
122 121
123 for (;;) { 122 for (;;) {
124 do { 123 do {
125 gf128mul_x_ble(&s.t, &s.t); 124 gf128mul_x_ble(s.t, s.t);
126 125
127first: 126first:
128 xts_round(&s, wdst, wsrc); 127 xts_round(&s, wdst, wsrc);
diff --git a/drivers/bluetooth/hci_usb.c b/drivers/bluetooth/hci_usb.c
index 372c7ef633..f16c94cbf4 100644
--- a/drivers/bluetooth/hci_usb.c
+++ b/drivers/bluetooth/hci_usb.c
@@ -116,6 +116,7 @@ static struct usb_device_id blacklist_ids[] = {
116 { USB_DEVICE(0x0a5c, 0x2009), .driver_info = HCI_BCM92035 }, 116 { USB_DEVICE(0x0a5c, 0x2009), .driver_info = HCI_BCM92035 },
117 117
118 /* Broadcom BCM2045 */ 118 /* Broadcom BCM2045 */
119 { USB_DEVICE(0x0a5c, 0x2039), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
119 { USB_DEVICE(0x0a5c, 0x2101), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU }, 120 { USB_DEVICE(0x0a5c, 0x2101), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
120 121
121 /* IBM/Lenovo ThinkPad with Broadcom chip */ 122 /* IBM/Lenovo ThinkPad with Broadcom chip */
diff --git a/drivers/char/esp.c b/drivers/char/esp.c
index c01e26d9ee..f3fe620673 100644
--- a/drivers/char/esp.c
+++ b/drivers/char/esp.c
@@ -2484,6 +2484,7 @@ static int __init espserial_init(void)
2484 return 0; 2484 return 0;
2485 } 2485 }
2486 2486
2487 spin_lock_init(&info->lock);
2487 /* rx_trigger, tx_trigger are needed by autoconfig */ 2488 /* rx_trigger, tx_trigger are needed by autoconfig */
2488 info->config.rx_trigger = rx_trigger; 2489 info->config.rx_trigger = rx_trigger;
2489 info->config.tx_trigger = tx_trigger; 2490 info->config.tx_trigger = tx_trigger;
diff --git a/drivers/char/riscom8.c b/drivers/char/riscom8.c
index 8fc4fe4e38..589ac6f65b 100644
--- a/drivers/char/riscom8.c
+++ b/drivers/char/riscom8.c
@@ -1620,14 +1620,8 @@ static int __init rc_init_drivers(void)
1620 1620
1621static void rc_release_drivers(void) 1621static void rc_release_drivers(void)
1622{ 1622{
1623 unsigned long flags;
1624
1625 spin_lock_irqsave(&riscom_lock, flags);
1626
1627 tty_unregister_driver(riscom_driver); 1623 tty_unregister_driver(riscom_driver);
1628 put_tty_driver(riscom_driver); 1624 put_tty_driver(riscom_driver);
1629
1630 spin_unlock_irqrestore(&riscom_lock, flags);
1631} 1625}
1632 1626
1633#ifndef MODULE 1627#ifndef MODULE
diff --git a/drivers/gpio/pca953x.c b/drivers/gpio/pca953x.c
index 92583cd4bf..6e72fd3118 100644
--- a/drivers/gpio/pca953x.c
+++ b/drivers/gpio/pca953x.c
@@ -184,6 +184,7 @@ static void pca953x_setup_gpio(struct pca953x_chip *chip, int gpios)
184 gc->direction_output = pca953x_gpio_direction_output; 184 gc->direction_output = pca953x_gpio_direction_output;
185 gc->get = pca953x_gpio_get_value; 185 gc->get = pca953x_gpio_get_value;
186 gc->set = pca953x_gpio_set_value; 186 gc->set = pca953x_gpio_set_value;
187 gc->can_sleep = 1;
187 188
188 gc->base = chip->gpio_start; 189 gc->base = chip->gpio_start;
189 gc->ngpio = gpios; 190 gc->ngpio = gpios;
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig
index df752e690e..eed6d8e1b5 100644
--- a/drivers/ide/Kconfig
+++ b/drivers/ide/Kconfig
@@ -50,7 +50,7 @@ menuconfig IDE
50 To compile this driver as a module, choose M here: the 50 To compile this driver as a module, choose M here: the
51 module will be called ide. 51 module will be called ide.
52 52
53 For further information, please read <file:Documentation/ide.txt>. 53 For further information, please read <file:Documentation/ide/ide.txt>.
54 54
55 If unsure, say Y. 55 If unsure, say Y.
56 56
@@ -77,7 +77,7 @@ config BLK_DEV_IDE
77 Useful information about large (>540 MB) IDE disks, multiple 77 Useful information about large (>540 MB) IDE disks, multiple
78 interfaces, what to do if ATA/IDE devices are not automatically 78 interfaces, what to do if ATA/IDE devices are not automatically
79 detected, sound card ATA/IDE ports, module support, and other 79 detected, sound card ATA/IDE ports, module support, and other
80 topics, is contained in <file:Documentation/ide.txt>. For detailed 80 topics, is contained in <file:Documentation/ide/ide.txt>. For detailed
81 information about hard drives, consult the Disk-HOWTO and the 81 information about hard drives, consult the Disk-HOWTO and the
82 Multi-Disk-HOWTO, available from 82 Multi-Disk-HOWTO, available from
83 <http://www.tldp.org/docs.html#howto>. 83 <http://www.tldp.org/docs.html#howto>.
@@ -87,7 +87,7 @@ config BLK_DEV_IDE
87 <ftp://ibiblio.org/pub/Linux/system/hardware/>. 87 <ftp://ibiblio.org/pub/Linux/system/hardware/>.
88 88
89 To compile this driver as a module, choose M here and read 89 To compile this driver as a module, choose M here and read
90 <file:Documentation/ide.txt>. The module will be called ide-mod. 90 <file:Documentation/ide/ide.txt>. The module will be called ide-mod.
91 Do not compile this driver as a module if your root file system (the 91 Do not compile this driver as a module if your root file system (the
92 one containing the directory /) is located on an IDE device. 92 one containing the directory /) is located on an IDE device.
93 93
@@ -98,7 +98,7 @@ config BLK_DEV_IDE
98 98
99if BLK_DEV_IDE 99if BLK_DEV_IDE
100 100
101comment "Please see Documentation/ide.txt for help/info on IDE drives" 101comment "Please see Documentation/ide/ide.txt for help/info on IDE drives"
102 102
103config BLK_DEV_IDE_SATA 103config BLK_DEV_IDE_SATA
104 bool "Support for SATA (deprecated; conflicts with libata SATA driver)" 104 bool "Support for SATA (deprecated; conflicts with libata SATA driver)"
@@ -235,8 +235,8 @@ config BLK_DEV_IDETAPE
235 along with other IDE devices, as "hdb" or "hdc", or something 235 along with other IDE devices, as "hdb" or "hdc", or something
236 similar, and will be mapped to a character device such as "ht0" 236 similar, and will be mapped to a character device such as "ht0"
237 (check the boot messages with dmesg). Be sure to consult the 237 (check the boot messages with dmesg). Be sure to consult the
238 <file:drivers/ide/ide-tape.c> and <file:Documentation/ide.txt> files 238 <file:drivers/ide/ide-tape.c> and <file:Documentation/ide/ide.txt>
239 for usage information. 239 files for usage information.
240 240
241 To compile this driver as a module, choose M here: the 241 To compile this driver as a module, choose M here: the
242 module will be called ide-tape. 242 module will be called ide-tape.
@@ -358,7 +358,7 @@ config BLK_DEV_CMD640
358 358
359 The CMD640 chip is also used on add-in cards by Acculogic, and on 359 The CMD640 chip is also used on add-in cards by Acculogic, and on
360 the "CSA-6400E PCI to IDE controller" that some people have. For 360 the "CSA-6400E PCI to IDE controller" that some people have. For
361 details, read <file:Documentation/ide.txt>. 361 details, read <file:Documentation/ide/ide.txt>.
362 362
363config BLK_DEV_CMD640_ENHANCED 363config BLK_DEV_CMD640_ENHANCED
364 bool "CMD640 enhanced support" 364 bool "CMD640 enhanced support"
@@ -366,7 +366,7 @@ config BLK_DEV_CMD640_ENHANCED
366 help 366 help
367 This option includes support for setting/autotuning PIO modes and 367 This option includes support for setting/autotuning PIO modes and
368 prefetch on CMD640 IDE interfaces. For details, read 368 prefetch on CMD640 IDE interfaces. For details, read
369 <file:Documentation/ide.txt>. If you have a CMD640 IDE interface 369 <file:Documentation/ide/ide.txt>. If you have a CMD640 IDE interface
370 and your BIOS does not already do this for you, then say Y here. 370 and your BIOS does not already do this for you, then say Y here.
371 Otherwise say N. 371 Otherwise say N.
372 372
@@ -1069,9 +1069,9 @@ config BLK_DEV_ALI14XX
1069 This driver is enabled at runtime using the "ali14xx.probe" kernel 1069 This driver is enabled at runtime using the "ali14xx.probe" kernel
1070 boot parameter. It enables support for the secondary IDE interface 1070 boot parameter. It enables support for the secondary IDE interface
1071 of the ALI M1439/1443/1445/1487/1489 chipsets, and permits faster 1071 of the ALI M1439/1443/1445/1487/1489 chipsets, and permits faster
1072 I/O speeds to be set as well. See the files 1072 I/O speeds to be set as well.
1073 <file:Documentation/ide.txt> and <file:drivers/ide/legacy/ali14xx.c> 1073 See the files <file:Documentation/ide/ide.txt> and
1074 for more info. 1074 <file:drivers/ide/legacy/ali14xx.c> for more info.
1075 1075
1076config BLK_DEV_DTC2278 1076config BLK_DEV_DTC2278
1077 tristate "DTC-2278 support" 1077 tristate "DTC-2278 support"
@@ -1079,7 +1079,7 @@ config BLK_DEV_DTC2278
1079 This driver is enabled at runtime using the "dtc2278.probe" kernel 1079 This driver is enabled at runtime using the "dtc2278.probe" kernel
1080 boot parameter. It enables support for the secondary IDE interface 1080 boot parameter. It enables support for the secondary IDE interface
1081 of the DTC-2278 card, and permits faster I/O speeds to be set as 1081 of the DTC-2278 card, and permits faster I/O speeds to be set as
1082 well. See the <file:Documentation/ide.txt> and 1082 well. See the <file:Documentation/ide/ide.txt> and
1083 <file:drivers/ide/legacy/dtc2278.c> files for more info. 1083 <file:drivers/ide/legacy/dtc2278.c> files for more info.
1084 1084
1085config BLK_DEV_HT6560B 1085config BLK_DEV_HT6560B
@@ -1088,7 +1088,7 @@ config BLK_DEV_HT6560B
1088 This driver is enabled at runtime using the "ht6560b.probe" kernel 1088 This driver is enabled at runtime using the "ht6560b.probe" kernel
1089 boot parameter. It enables support for the secondary IDE interface 1089 boot parameter. It enables support for the secondary IDE interface
1090 of the Holtek card, and permits faster I/O speeds to be set as well. 1090 of the Holtek card, and permits faster I/O speeds to be set as well.
1091 See the <file:Documentation/ide.txt> and 1091 See the <file:Documentation/ide/ide.txt> and
1092 <file:drivers/ide/legacy/ht6560b.c> files for more info. 1092 <file:drivers/ide/legacy/ht6560b.c> files for more info.
1093 1093
1094config BLK_DEV_QD65XX 1094config BLK_DEV_QD65XX
@@ -1096,7 +1096,7 @@ config BLK_DEV_QD65XX
1096 help 1096 help
1097 This driver is enabled at runtime using the "qd65xx.probe" kernel 1097 This driver is enabled at runtime using the "qd65xx.probe" kernel
1098 boot parameter. It permits faster I/O speeds to be set. See the 1098 boot parameter. It permits faster I/O speeds to be set. See the
1099 <file:Documentation/ide.txt> and <file:drivers/ide/legacy/qd65xx.c> 1099 <file:Documentation/ide/ide.txt> and <file:drivers/ide/legacy/qd65xx.c>
1100 for more info. 1100 for more info.
1101 1101
1102config BLK_DEV_UMC8672 1102config BLK_DEV_UMC8672
@@ -1105,7 +1105,7 @@ config BLK_DEV_UMC8672
1105 This driver is enabled at runtime using the "umc8672.probe" kernel 1105 This driver is enabled at runtime using the "umc8672.probe" kernel
1106 boot parameter. It enables support for the secondary IDE interface 1106 boot parameter. It enables support for the secondary IDE interface
1107 of the UMC-8672, and permits faster I/O speeds to be set as well. 1107 of the UMC-8672, and permits faster I/O speeds to be set as well.
1108 See the files <file:Documentation/ide.txt> and 1108 See the files <file:Documentation/ide/ide.txt> and
1109 <file:drivers/ide/legacy/umc8672.c> for more info. 1109 <file:drivers/ide/legacy/umc8672.c> for more info.
1110 1110
1111endif 1111endif
diff --git a/drivers/ide/ide-cd_ioctl.c b/drivers/ide/ide-cd_ioctl.c
index b68284de4e..6d147ce678 100644
--- a/drivers/ide/ide-cd_ioctl.c
+++ b/drivers/ide/ide-cd_ioctl.c
@@ -457,6 +457,10 @@ int ide_cdrom_packet(struct cdrom_device_info *cdi,
457 layer. the packet must be complete, as we do not 457 layer. the packet must be complete, as we do not
458 touch it at all. */ 458 touch it at all. */
459 ide_cd_init_rq(drive, &req); 459 ide_cd_init_rq(drive, &req);
460
461 if (cgc->data_direction == CGC_DATA_WRITE)
462 req.cmd_flags |= REQ_RW;
463
460 memcpy(req.cmd, cgc->cmd, CDROM_PACKET_SIZE); 464 memcpy(req.cmd, cgc->cmd, CDROM_PACKET_SIZE);
461 if (cgc->sense) 465 if (cgc->sense)
462 memset(cgc->sense, 0, sizeof(struct request_sense)); 466 memset(cgc->sense, 0, sizeof(struct request_sense));
diff --git a/drivers/ide/ide-dma.c b/drivers/ide/ide-dma.c
index 2de99e4be5..d61e5788d3 100644
--- a/drivers/ide/ide-dma.c
+++ b/drivers/ide/ide-dma.c
@@ -713,7 +713,7 @@ static int ide_tune_dma(ide_drive_t *drive)
713 } 713 }
714 714
715 if (hwif->host_flags & IDE_HFLAG_NO_SET_MODE) 715 if (hwif->host_flags & IDE_HFLAG_NO_SET_MODE)
716 return 0; 716 return 1;
717 717
718 if (ide_set_dma_mode(drive, speed)) 718 if (ide_set_dma_mode(drive, speed))
719 return 0; 719 return 0;
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c
index fa16bc30bb..9976f9d627 100644
--- a/drivers/ide/ide.c
+++ b/drivers/ide/ide.c
@@ -667,7 +667,6 @@ int ide_register_hw(hw_regs_t *hw, void (*quirkproc)(ide_drive_t *),
667 667
668 do { 668 do {
669 hwif = ide_deprecated_find_port(hw->io_ports[IDE_DATA_OFFSET]); 669 hwif = ide_deprecated_find_port(hw->io_ports[IDE_DATA_OFFSET]);
670 index = hwif->index;
671 if (hwif) 670 if (hwif)
672 goto found; 671 goto found;
673 for (index = 0; index < MAX_HWIFS; index++) 672 for (index = 0; index < MAX_HWIFS; index++)
@@ -675,6 +674,7 @@ int ide_register_hw(hw_regs_t *hw, void (*quirkproc)(ide_drive_t *),
675 } while (retry--); 674 } while (retry--);
676 return -1; 675 return -1;
677found: 676found:
677 index = hwif->index;
678 if (hwif->present) 678 if (hwif->present)
679 ide_unregister(index, 0, 1); 679 ide_unregister(index, 0, 1);
680 else if (!hwif->hold) 680 else if (!hwif->hold)
@@ -1180,7 +1180,7 @@ static int __initdata is_chipset_set[MAX_HWIFS];
1180 * ide_setup() gets called VERY EARLY during initialization, 1180 * ide_setup() gets called VERY EARLY during initialization,
1181 * to handle kernel "command line" strings beginning with "hdx=" or "ide". 1181 * to handle kernel "command line" strings beginning with "hdx=" or "ide".
1182 * 1182 *
1183 * Remember to update Documentation/ide.txt if you change something here. 1183 * Remember to update Documentation/ide/ide.txt if you change something here.
1184 */ 1184 */
1185static int __init ide_setup(char *s) 1185static int __init ide_setup(char *s)
1186{ 1186{
diff --git a/drivers/input/serio/i8042.h b/drivers/input/serio/i8042.h
index dd22d91f8b..c972e5d03a 100644
--- a/drivers/input/serio/i8042.h
+++ b/drivers/input/serio/i8042.h
@@ -16,7 +16,7 @@
16 16
17#if defined(CONFIG_MACH_JAZZ) 17#if defined(CONFIG_MACH_JAZZ)
18#include "i8042-jazzio.h" 18#include "i8042-jazzio.h"
19#elif defined(CONFIG_SGI_IP22) 19#elif defined(CONFIG_SGI_HAS_I8042)
20#include "i8042-ip22io.h" 20#include "i8042-ip22io.h"
21#elif defined(CONFIG_PPC) 21#elif defined(CONFIG_PPC)
22#include "i8042-ppcio.h" 22#include "i8042-ppcio.h"
diff --git a/drivers/isdn/gigaset/common.c b/drivers/isdn/gigaset/common.c
index aacedec498..827c32c167 100644
--- a/drivers/isdn/gigaset/common.c
+++ b/drivers/isdn/gigaset/common.c
@@ -637,7 +637,6 @@ struct cardstate *gigaset_initcs(struct gigaset_driver *drv, int channels,
637 err("maximum number of devices exceeded"); 637 err("maximum number of devices exceeded");
638 return NULL; 638 return NULL;
639 } 639 }
640 mutex_init(&cs->mutex);
641 640
642 gig_dbg(DEBUG_INIT, "allocating bcs[0..%d]", channels - 1); 641 gig_dbg(DEBUG_INIT, "allocating bcs[0..%d]", channels - 1);
643 cs->bcs = kmalloc(channels * sizeof(struct bc_state), GFP_KERNEL); 642 cs->bcs = kmalloc(channels * sizeof(struct bc_state), GFP_KERNEL);
@@ -898,8 +897,10 @@ int gigaset_shutdown(struct cardstate *cs)
898{ 897{
899 mutex_lock(&cs->mutex); 898 mutex_lock(&cs->mutex);
900 899
901 if (!(cs->flags & VALID_MINOR)) 900 if (!(cs->flags & VALID_MINOR)) {
901 mutex_unlock(&cs->mutex);
902 return -1; 902 return -1;
903 }
903 904
904 cs->waiting = 1; 905 cs->waiting = 1;
905 906
@@ -1086,6 +1087,7 @@ struct gigaset_driver *gigaset_initdriver(unsigned minor, unsigned minors,
1086 drv->cs[i].driver = drv; 1087 drv->cs[i].driver = drv;
1087 drv->cs[i].ops = drv->ops; 1088 drv->cs[i].ops = drv->ops;
1088 drv->cs[i].minor_index = i; 1089 drv->cs[i].minor_index = i;
1090 mutex_init(&drv->cs[i].mutex);
1089 } 1091 }
1090 1092
1091 gigaset_if_initdriver(drv, procname, devname); 1093 gigaset_if_initdriver(drv, procname, devname);
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
index 831aed9c56..c14dacdacf 100644
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -1045,7 +1045,8 @@ void bitmap_daemon_work(struct bitmap *bitmap)
1045 if (bitmap == NULL) 1045 if (bitmap == NULL)
1046 return; 1046 return;
1047 if (time_before(jiffies, bitmap->daemon_lastrun + bitmap->daemon_sleep*HZ)) 1047 if (time_before(jiffies, bitmap->daemon_lastrun + bitmap->daemon_sleep*HZ))
1048 return; 1048 goto done;
1049
1049 bitmap->daemon_lastrun = jiffies; 1050 bitmap->daemon_lastrun = jiffies;
1050 if (bitmap->allclean) { 1051 if (bitmap->allclean) {
1051 bitmap->mddev->thread->timeout = MAX_SCHEDULE_TIMEOUT; 1052 bitmap->mddev->thread->timeout = MAX_SCHEDULE_TIMEOUT;
@@ -1142,6 +1143,7 @@ void bitmap_daemon_work(struct bitmap *bitmap)
1142 } 1143 }
1143 } 1144 }
1144 1145
1146 done:
1145 if (bitmap->allclean == 0) 1147 if (bitmap->allclean == 0)
1146 bitmap->mddev->thread->timeout = bitmap->daemon_sleep * HZ; 1148 bitmap->mddev->thread->timeout = bitmap->daemon_sleep * HZ;
1147} 1149}
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 827824a9f3..ccbbf63727 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -5149,7 +5149,7 @@ static int md_seq_show(struct seq_file *seq, void *v)
5149 if (mddev->ro==1) 5149 if (mddev->ro==1)
5150 seq_printf(seq, " (read-only)"); 5150 seq_printf(seq, " (read-only)");
5151 if (mddev->ro==2) 5151 if (mddev->ro==2)
5152 seq_printf(seq, "(auto-read-only)"); 5152 seq_printf(seq, " (auto-read-only)");
5153 seq_printf(seq, " %s", mddev->pers->name); 5153 seq_printf(seq, " %s", mddev->pers->name);
5154 } 5154 }
5155 5155
diff --git a/drivers/memstick/Kconfig b/drivers/memstick/Kconfig
index 1093fdb072..f0ca41c203 100644
--- a/drivers/memstick/Kconfig
+++ b/drivers/memstick/Kconfig
@@ -8,7 +8,7 @@ menuconfig MEMSTICK
8 Sony MemoryStick is a proprietary storage/extension card protocol. 8 Sony MemoryStick is a proprietary storage/extension card protocol.
9 9
10 If you want MemoryStick support, you should say Y here and also 10 If you want MemoryStick support, you should say Y here and also
11 to the specific driver for your MMC interface. 11 to the specific driver for your MemoryStick interface.
12 12
13if MEMSTICK 13if MEMSTICK
14 14
diff --git a/drivers/memstick/core/memstick.c b/drivers/memstick/core/memstick.c
index bba467fe4b..de80dba12f 100644
--- a/drivers/memstick/core/memstick.c
+++ b/drivers/memstick/core/memstick.c
@@ -18,7 +18,6 @@
18#include <linux/delay.h> 18#include <linux/delay.h>
19 19
20#define DRIVER_NAME "memstick" 20#define DRIVER_NAME "memstick"
21#define DRIVER_VERSION "0.2"
22 21
23static unsigned int cmd_retries = 3; 22static unsigned int cmd_retries = 3;
24module_param(cmd_retries, uint, 0644); 23module_param(cmd_retries, uint, 0644);
@@ -236,7 +235,7 @@ int memstick_next_req(struct memstick_host *host, struct memstick_request **mrq)
236 rc = host->card->next_request(host->card, mrq); 235 rc = host->card->next_request(host->card, mrq);
237 236
238 if (!rc) 237 if (!rc)
239 host->retries = cmd_retries; 238 host->retries = cmd_retries > 1 ? cmd_retries - 1 : 1;
240 else 239 else
241 *mrq = NULL; 240 *mrq = NULL;
242 241
@@ -271,7 +270,7 @@ void memstick_init_req_sg(struct memstick_request *mrq, unsigned char tpc,
271 mrq->data_dir = READ; 270 mrq->data_dir = READ;
272 271
273 mrq->sg = *sg; 272 mrq->sg = *sg;
274 mrq->io_type = MEMSTICK_IO_SG; 273 mrq->long_data = 1;
275 274
276 if (tpc == MS_TPC_SET_CMD || tpc == MS_TPC_EX_SET_CMD) 275 if (tpc == MS_TPC_SET_CMD || tpc == MS_TPC_EX_SET_CMD)
277 mrq->need_card_int = 1; 276 mrq->need_card_int = 1;
@@ -306,7 +305,7 @@ void memstick_init_req(struct memstick_request *mrq, unsigned char tpc,
306 if (mrq->data_dir == WRITE) 305 if (mrq->data_dir == WRITE)
307 memcpy(mrq->data, buf, mrq->data_len); 306 memcpy(mrq->data, buf, mrq->data_len);
308 307
309 mrq->io_type = MEMSTICK_IO_VAL; 308 mrq->long_data = 0;
310 309
311 if (tpc == MS_TPC_SET_CMD || tpc == MS_TPC_EX_SET_CMD) 310 if (tpc == MS_TPC_SET_CMD || tpc == MS_TPC_EX_SET_CMD)
312 mrq->need_card_int = 1; 311 mrq->need_card_int = 1;
@@ -561,6 +560,31 @@ void memstick_free_host(struct memstick_host *host)
561} 560}
562EXPORT_SYMBOL(memstick_free_host); 561EXPORT_SYMBOL(memstick_free_host);
563 562
563/**
564 * memstick_suspend_host - notify bus driver of host suspension
565 * @host - host to use
566 */
567void memstick_suspend_host(struct memstick_host *host)
568{
569 mutex_lock(&host->lock);
570 host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_OFF);
571 mutex_unlock(&host->lock);
572}
573EXPORT_SYMBOL(memstick_suspend_host);
574
575/**
576 * memstick_resume_host - notify bus driver of host resumption
577 * @host - host to use
578 */
579void memstick_resume_host(struct memstick_host *host)
580{
581 mutex_lock(&host->lock);
582 host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_ON);
583 mutex_unlock(&host->lock);
584 memstick_detect_change(host);
585}
586EXPORT_SYMBOL(memstick_resume_host);
587
564int memstick_register_driver(struct memstick_driver *drv) 588int memstick_register_driver(struct memstick_driver *drv)
565{ 589{
566 drv->driver.bus = &memstick_bus_type; 590 drv->driver.bus = &memstick_bus_type;
@@ -611,4 +635,3 @@ module_exit(memstick_exit);
611MODULE_AUTHOR("Alex Dubov"); 635MODULE_AUTHOR("Alex Dubov");
612MODULE_LICENSE("GPL"); 636MODULE_LICENSE("GPL");
613MODULE_DESCRIPTION("Sony MemoryStick core driver"); 637MODULE_DESCRIPTION("Sony MemoryStick core driver");
614MODULE_VERSION(DRIVER_VERSION);
diff --git a/drivers/memstick/core/mspro_block.c b/drivers/memstick/core/mspro_block.c
index 423ad8cf4b..1d637e4561 100644
--- a/drivers/memstick/core/mspro_block.c
+++ b/drivers/memstick/core/mspro_block.c
@@ -16,10 +16,10 @@
16#include <linux/idr.h> 16#include <linux/idr.h>
17#include <linux/hdreg.h> 17#include <linux/hdreg.h>
18#include <linux/kthread.h> 18#include <linux/kthread.h>
19#include <linux/delay.h>
19#include <linux/memstick.h> 20#include <linux/memstick.h>
20 21
21#define DRIVER_NAME "mspro_block" 22#define DRIVER_NAME "mspro_block"
22#define DRIVER_VERSION "0.2"
23 23
24static int major; 24static int major;
25module_param(major, int, 0644); 25module_param(major, int, 0644);
@@ -110,6 +110,17 @@ struct mspro_mbr {
110 unsigned int sectors_per_partition; 110 unsigned int sectors_per_partition;
111} __attribute__((packed)); 111} __attribute__((packed));
112 112
113struct mspro_specfile {
114 char name[8];
115 char ext[3];
116 unsigned char attr;
117 unsigned char reserved[10];
118 unsigned short time;
119 unsigned short date;
120 unsigned short cluster;
121 unsigned int size;
122} __attribute__((packed));
123
113struct mspro_devinfo { 124struct mspro_devinfo {
114 unsigned short cylinders; 125 unsigned short cylinders;
115 unsigned short heads; 126 unsigned short heads;
@@ -293,6 +304,20 @@ static ssize_t mspro_block_attr_show_sysinfo(struct device *dev,
293 dev_attr); 304 dev_attr);
294 struct mspro_sys_info *x_sys = x_attr->data; 305 struct mspro_sys_info *x_sys = x_attr->data;
295 ssize_t rc = 0; 306 ssize_t rc = 0;
307 int date_tz = 0, date_tz_f = 0;
308
309 if (x_sys->assembly_date[0] > 0x80U) {
310 date_tz = (~x_sys->assembly_date[0]) + 1;
311 date_tz_f = date_tz & 3;
312 date_tz >>= 2;
313 date_tz = -date_tz;
314 date_tz_f *= 15;
315 } else if (x_sys->assembly_date[0] < 0x80U) {
316 date_tz = x_sys->assembly_date[0];
317 date_tz_f = date_tz & 3;
318 date_tz >>= 2;
319 date_tz_f *= 15;
320 }
296 321
297 rc += scnprintf(buffer + rc, PAGE_SIZE - rc, "class: %x\n", 322 rc += scnprintf(buffer + rc, PAGE_SIZE - rc, "class: %x\n",
298 x_sys->class); 323 x_sys->class);
@@ -305,8 +330,8 @@ static ssize_t mspro_block_attr_show_sysinfo(struct device *dev,
305 rc += scnprintf(buffer + rc, PAGE_SIZE - rc, "page size: %x\n", 330 rc += scnprintf(buffer + rc, PAGE_SIZE - rc, "page size: %x\n",
306 be16_to_cpu(x_sys->page_size)); 331 be16_to_cpu(x_sys->page_size));
307 rc += scnprintf(buffer + rc, PAGE_SIZE - rc, "assembly date: " 332 rc += scnprintf(buffer + rc, PAGE_SIZE - rc, "assembly date: "
308 "%d %04u-%02u-%02u %02u:%02u:%02u\n", 333 "GMT%+d:%d %04u-%02u-%02u %02u:%02u:%02u\n",
309 x_sys->assembly_date[0], 334 date_tz, date_tz_f,
310 be16_to_cpu(*(unsigned short *) 335 be16_to_cpu(*(unsigned short *)
311 &x_sys->assembly_date[1]), 336 &x_sys->assembly_date[1]),
312 x_sys->assembly_date[3], x_sys->assembly_date[4], 337 x_sys->assembly_date[3], x_sys->assembly_date[4],
@@ -398,6 +423,41 @@ static ssize_t mspro_block_attr_show_mbr(struct device *dev,
398 return rc; 423 return rc;
399} 424}
400 425
426static ssize_t mspro_block_attr_show_specfile(struct device *dev,
427 struct device_attribute *attr,
428 char *buffer)
429{
430 struct mspro_sys_attr *x_attr = container_of(attr,
431 struct mspro_sys_attr,
432 dev_attr);
433 struct mspro_specfile *x_spfile = x_attr->data;
434 char name[9], ext[4];
435 ssize_t rc = 0;
436
437 memcpy(name, x_spfile->name, 8);
438 name[8] = 0;
439 memcpy(ext, x_spfile->ext, 3);
440 ext[3] = 0;
441
442 rc += scnprintf(buffer + rc, PAGE_SIZE - rc, "name: %s\n", name);
443 rc += scnprintf(buffer + rc, PAGE_SIZE - rc, "ext: %s\n", ext);
444 rc += scnprintf(buffer + rc, PAGE_SIZE - rc, "attribute: %x\n",
445 x_spfile->attr);
446 rc += scnprintf(buffer + rc, PAGE_SIZE - rc, "time: %d:%d:%d\n",
447 x_spfile->time >> 11,
448 (x_spfile->time >> 5) & 0x3f,
449 (x_spfile->time & 0x1f) * 2);
450 rc += scnprintf(buffer + rc, PAGE_SIZE - rc, "date: %d-%d-%d\n",
451 (x_spfile->date >> 9) + 1980,
452 (x_spfile->date >> 5) & 0xf,
453 x_spfile->date & 0x1f);
454 rc += scnprintf(buffer + rc, PAGE_SIZE - rc, "start cluster: %x\n",
455 x_spfile->cluster);
456 rc += scnprintf(buffer + rc, PAGE_SIZE - rc, "size: %x\n",
457 x_spfile->size);
458 return rc;
459}
460
401static ssize_t mspro_block_attr_show_devinfo(struct device *dev, 461static ssize_t mspro_block_attr_show_devinfo(struct device *dev,
402 struct device_attribute *attr, 462 struct device_attribute *attr,
403 char *buffer) 463 char *buffer)
@@ -430,6 +490,9 @@ static sysfs_show_t mspro_block_attr_show(unsigned char tag)
430 return mspro_block_attr_show_modelname; 490 return mspro_block_attr_show_modelname;
431 case MSPRO_BLOCK_ID_MBR: 491 case MSPRO_BLOCK_ID_MBR:
432 return mspro_block_attr_show_mbr; 492 return mspro_block_attr_show_mbr;
493 case MSPRO_BLOCK_ID_SPECFILEVALUES1:
494 case MSPRO_BLOCK_ID_SPECFILEVALUES2:
495 return mspro_block_attr_show_specfile;
433 case MSPRO_BLOCK_ID_DEVINFO: 496 case MSPRO_BLOCK_ID_DEVINFO:
434 return mspro_block_attr_show_devinfo; 497 return mspro_block_attr_show_devinfo;
435 default: 498 default:
@@ -629,7 +692,7 @@ static void mspro_block_process_request(struct memstick_dev *card,
629 param.system = msb->system; 692 param.system = msb->system;
630 param.data_count = cpu_to_be16(page_count); 693 param.data_count = cpu_to_be16(page_count);
631 param.data_address = cpu_to_be32((uint32_t)t_sec); 694 param.data_address = cpu_to_be32((uint32_t)t_sec);
632 param.cmd_param = 0; 695 param.tpc_param = 0;
633 696
634 msb->data_dir = rq_data_dir(req); 697 msb->data_dir = rq_data_dir(req);
635 msb->transfer_cmd = msb->data_dir == READ 698 msb->transfer_cmd = msb->data_dir == READ
@@ -758,10 +821,10 @@ static int mspro_block_switch_to_parallel(struct memstick_dev *card)
758 struct memstick_host *host = card->host; 821 struct memstick_host *host = card->host;
759 struct mspro_block_data *msb = memstick_get_drvdata(card); 822 struct mspro_block_data *msb = memstick_get_drvdata(card);
760 struct mspro_param_register param = { 823 struct mspro_param_register param = {
761 .system = 0, 824 .system = MEMSTICK_SYS_PAR4,
762 .data_count = 0, 825 .data_count = 0,
763 .data_address = 0, 826 .data_address = 0,
764 .cmd_param = 0 827 .tpc_param = 0
765 }; 828 };
766 829
767 card->next_request = h_mspro_block_req_init; 830 card->next_request = h_mspro_block_req_init;
@@ -773,8 +836,8 @@ static int mspro_block_switch_to_parallel(struct memstick_dev *card)
773 if (card->current_mrq.error) 836 if (card->current_mrq.error)
774 return card->current_mrq.error; 837 return card->current_mrq.error;
775 838
776 msb->system = 0; 839 msb->system = MEMSTICK_SYS_PAR4;
777 host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_PARALLEL); 840 host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_PAR4);
778 841
779 card->next_request = h_mspro_block_req_init; 842 card->next_request = h_mspro_block_req_init;
780 msb->mrq_handler = h_mspro_block_default; 843 msb->mrq_handler = h_mspro_block_default;
@@ -783,8 +846,24 @@ static int mspro_block_switch_to_parallel(struct memstick_dev *card)
783 wait_for_completion(&card->mrq_complete); 846 wait_for_completion(&card->mrq_complete);
784 847
785 if (card->current_mrq.error) { 848 if (card->current_mrq.error) {
786 msb->system = 0x80; 849 msb->system = MEMSTICK_SYS_SERIAL;
850 host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_OFF);
851 msleep(1000);
852 host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_ON);
787 host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_SERIAL); 853 host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_SERIAL);
854
855 if (memstick_set_rw_addr(card))
856 return card->current_mrq.error;
857
858 param.system = msb->system;
859
860 card->next_request = h_mspro_block_req_init;
861 msb->mrq_handler = h_mspro_block_default;
862 memstick_init_req(&card->current_mrq, MS_TPC_WRITE_REG, &param,
863 sizeof(param));
864 memstick_new_req(host);
865 wait_for_completion(&card->mrq_complete);
866
788 return -EFAULT; 867 return -EFAULT;
789 } 868 }
790 869
@@ -802,7 +881,7 @@ static int mspro_block_read_attributes(struct memstick_dev *card)
802 .system = msb->system, 881 .system = msb->system,
803 .data_count = cpu_to_be16(1), 882 .data_count = cpu_to_be16(1),
804 .data_address = 0, 883 .data_address = 0,
805 .cmd_param = 0 884 .tpc_param = 0
806 }; 885 };
807 struct mspro_attribute *attr = NULL; 886 struct mspro_attribute *attr = NULL;
808 struct mspro_sys_attr *s_attr = NULL; 887 struct mspro_sys_attr *s_attr = NULL;
@@ -922,7 +1001,7 @@ static int mspro_block_read_attributes(struct memstick_dev *card)
922 param.system = msb->system; 1001 param.system = msb->system;
923 param.data_count = cpu_to_be16((rc / msb->page_size) + 1); 1002 param.data_count = cpu_to_be16((rc / msb->page_size) + 1);
924 param.data_address = cpu_to_be32(addr / msb->page_size); 1003 param.data_address = cpu_to_be32(addr / msb->page_size);
925 param.cmd_param = 0; 1004 param.tpc_param = 0;
926 1005
927 sg_init_one(&msb->req_sg[0], buffer, 1006 sg_init_one(&msb->req_sg[0], buffer,
928 be16_to_cpu(param.data_count) * msb->page_size); 1007 be16_to_cpu(param.data_count) * msb->page_size);
@@ -964,7 +1043,7 @@ static int mspro_block_init_card(struct memstick_dev *card)
964 struct memstick_host *host = card->host; 1043 struct memstick_host *host = card->host;
965 int rc = 0; 1044 int rc = 0;
966 1045
967 msb->system = 0x80; 1046 msb->system = MEMSTICK_SYS_SERIAL;
968 card->reg_addr.r_offset = offsetof(struct mspro_register, status); 1047 card->reg_addr.r_offset = offsetof(struct mspro_register, status);
969 card->reg_addr.r_length = sizeof(struct ms_status_register); 1048 card->reg_addr.r_length = sizeof(struct ms_status_register);
970 card->reg_addr.w_offset = offsetof(struct mspro_register, param); 1049 card->reg_addr.w_offset = offsetof(struct mspro_register, param);
@@ -973,7 +1052,7 @@ static int mspro_block_init_card(struct memstick_dev *card)
973 if (memstick_set_rw_addr(card)) 1052 if (memstick_set_rw_addr(card))
974 return -EIO; 1053 return -EIO;
975 1054
976 if (host->caps & MEMSTICK_CAP_PARALLEL) { 1055 if (host->caps & MEMSTICK_CAP_PAR4) {
977 if (mspro_block_switch_to_parallel(card)) 1056 if (mspro_block_switch_to_parallel(card))
978 printk(KERN_WARNING "%s: could not switch to " 1057 printk(KERN_WARNING "%s: could not switch to "
979 "parallel interface\n", card->dev.bus_id); 1058 "parallel interface\n", card->dev.bus_id);
@@ -1348,4 +1427,3 @@ MODULE_LICENSE("GPL");
1348MODULE_AUTHOR("Alex Dubov"); 1427MODULE_AUTHOR("Alex Dubov");
1349MODULE_DESCRIPTION("Sony MemoryStickPro block device driver"); 1428MODULE_DESCRIPTION("Sony MemoryStickPro block device driver");
1350MODULE_DEVICE_TABLE(memstick, mspro_block_id_tbl); 1429MODULE_DEVICE_TABLE(memstick, mspro_block_id_tbl);
1351MODULE_VERSION(DRIVER_VERSION);
diff --git a/drivers/memstick/host/Kconfig b/drivers/memstick/host/Kconfig
index c002fcc3c8..4ce5c8dffb 100644
--- a/drivers/memstick/host/Kconfig
+++ b/drivers/memstick/host/Kconfig
@@ -20,3 +20,13 @@ config MEMSTICK_TIFM_MS
20 To compile this driver as a module, choose M here: the 20 To compile this driver as a module, choose M here: the
21 module will be called tifm_ms. 21 module will be called tifm_ms.
22 22
23config MEMSTICK_JMICRON_38X
24 tristate "JMicron JMB38X MemoryStick interface support (EXPERIMENTAL)"
25 depends on EXPERIMENTAL && PCI
26
27 help
28 Say Y here if you want to be able to access MemoryStick cards with
29 the JMicron(R) JMB38X MemoryStick card reader.
30
31 To compile this driver as a module, choose M here: the
32 module will be called jmb38x_ms.
diff --git a/drivers/memstick/host/Makefile b/drivers/memstick/host/Makefile
index ee666380ef..12530e4311 100644
--- a/drivers/memstick/host/Makefile
+++ b/drivers/memstick/host/Makefile
@@ -3,8 +3,8 @@
3# 3#
4 4
5ifeq ($(CONFIG_MEMSTICK_DEBUG),y) 5ifeq ($(CONFIG_MEMSTICK_DEBUG),y)
6 EXTRA_CFLAGS += -DDEBUG 6 EXTRA_CFLAGS += -DDEBUG
7endif 7endif
8 8
9obj-$(CONFIG_MEMSTICK_TIFM_MS) += tifm_ms.o 9obj-$(CONFIG_MEMSTICK_TIFM_MS) += tifm_ms.o
10 10obj-$(CONFIG_MEMSTICK_JMICRON_38X) += jmb38x_ms.o
diff --git a/drivers/memstick/host/jmb38x_ms.c b/drivers/memstick/host/jmb38x_ms.c
new file mode 100644
index 0000000000..03fe8783b1
--- /dev/null
+++ b/drivers/memstick/host/jmb38x_ms.c
@@ -0,0 +1,945 @@
1/*
2 * jmb38x_ms.c - JMicron jmb38x MemoryStick card reader
3 *
4 * Copyright (C) 2008 Alex Dubov <oakad@yahoo.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 */
11
12#include <linux/spinlock.h>
13#include <linux/interrupt.h>
14#include <linux/pci.h>
15#include <linux/delay.h>
16#include <linux/highmem.h>
17#include <linux/memstick.h>
18
19#define DRIVER_NAME "jmb38x_ms"
20
21static int no_dma;
22module_param(no_dma, bool, 0644);
23
24enum {
25 DMA_ADDRESS = 0x00,
26 BLOCK = 0x04,
27 DMA_CONTROL = 0x08,
28 TPC_P0 = 0x0c,
29 TPC_P1 = 0x10,
30 TPC = 0x14,
31 HOST_CONTROL = 0x18,
32 DATA = 0x1c,
33 STATUS = 0x20,
34 INT_STATUS = 0x24,
35 INT_STATUS_ENABLE = 0x28,
36 INT_SIGNAL_ENABLE = 0x2c,
37 TIMER = 0x30,
38 TIMER_CONTROL = 0x34,
39 PAD_OUTPUT_ENABLE = 0x38,
40 PAD_PU_PD = 0x3c,
41 CLOCK_DELAY = 0x40,
42 ADMA_ADDRESS = 0x44,
43 CLOCK_CONTROL = 0x48,
44 LED_CONTROL = 0x4c,
45 VERSION = 0x50
46};
47
48struct jmb38x_ms_host {
49 struct jmb38x_ms *chip;
50 void __iomem *addr;
51 spinlock_t lock;
52 int id;
53 char host_id[DEVICE_ID_SIZE];
54 int irq;
55 unsigned int block_pos;
56 unsigned long timeout_jiffies;
57 struct timer_list timer;
58 struct memstick_request *req;
59 unsigned char eject:1,
60 use_dma:1;
61 unsigned char cmd_flags;
62 unsigned char io_pos;
63 unsigned int io_word[2];
64};
65
66struct jmb38x_ms {
67 struct pci_dev *pdev;
68 int host_cnt;
69 struct memstick_host *hosts[];
70};
71
72#define BLOCK_COUNT_MASK 0xffff0000
73#define BLOCK_SIZE_MASK 0x00000fff
74
75#define DMA_CONTROL_ENABLE 0x00000001
76
77#define TPC_DATA_SEL 0x00008000
78#define TPC_DIR 0x00004000
79#define TPC_WAIT_INT 0x00002000
80#define TPC_GET_INT 0x00000800
81#define TPC_CODE_SZ_MASK 0x00000700
82#define TPC_DATA_SZ_MASK 0x00000007
83
84#define HOST_CONTROL_RESET_REQ 0x00008000
85#define HOST_CONTROL_REI 0x00004000
86#define HOST_CONTROL_LED 0x00000400
87#define HOST_CONTROL_FAST_CLK 0x00000200
88#define HOST_CONTROL_RESET 0x00000100
89#define HOST_CONTROL_POWER_EN 0x00000080
90#define HOST_CONTROL_CLOCK_EN 0x00000040
91#define HOST_CONTROL_IF_SHIFT 4
92
93#define HOST_CONTROL_IF_SERIAL 0x0
94#define HOST_CONTROL_IF_PAR4 0x1
95#define HOST_CONTROL_IF_PAR8 0x3
96
97#define STATUS_HAS_MEDIA 0x00000400
98#define STATUS_FIFO_EMPTY 0x00000200
99#define STATUS_FIFO_FULL 0x00000100
100
101#define INT_STATUS_TPC_ERR 0x00080000
102#define INT_STATUS_CRC_ERR 0x00040000
103#define INT_STATUS_TIMER_TO 0x00020000
104#define INT_STATUS_HSK_TO 0x00010000
105#define INT_STATUS_ANY_ERR 0x00008000
106#define INT_STATUS_FIFO_WRDY 0x00000080
107#define INT_STATUS_FIFO_RRDY 0x00000040
108#define INT_STATUS_MEDIA_OUT 0x00000010
109#define INT_STATUS_MEDIA_IN 0x00000008
110#define INT_STATUS_DMA_BOUNDARY 0x00000004
111#define INT_STATUS_EOTRAN 0x00000002
112#define INT_STATUS_EOTPC 0x00000001
113
114#define INT_STATUS_ALL 0x000f801f
115
116#define PAD_OUTPUT_ENABLE_MS 0x0F3F
117
118#define PAD_PU_PD_OFF 0x7FFF0000
119#define PAD_PU_PD_ON_MS_SOCK0 0x5f8f0000
120#define PAD_PU_PD_ON_MS_SOCK1 0x0f0f0000
121
122enum {
123 CMD_READY = 0x01,
124 FIFO_READY = 0x02,
125 REG_DATA = 0x04,
126 AUTO_GET_INT = 0x08
127};
128
129static unsigned int jmb38x_ms_read_data(struct jmb38x_ms_host *host,
130 unsigned char *buf, unsigned int length)
131{
132 unsigned int off = 0;
133
134 while (host->io_pos && length) {
135 buf[off++] = host->io_word[0] & 0xff;
136 host->io_word[0] >>= 8;
137 length--;
138 host->io_pos--;
139 }
140
141 if (!length)
142 return off;
143
144 while (!(STATUS_FIFO_EMPTY & readl(host->addr + STATUS))) {
145 if (length < 4)
146 break;
147 *(unsigned int *)(buf + off) = __raw_readl(host->addr + DATA);
148 length -= 4;
149 off += 4;
150 }
151
152 if (length
153 && !(STATUS_FIFO_EMPTY & readl(host->addr + STATUS))) {
154 host->io_word[0] = readl(host->addr + DATA);
155 for (host->io_pos = 4; host->io_pos; --host->io_pos) {
156 buf[off++] = host->io_word[0] & 0xff;
157 host->io_word[0] >>= 8;
158 length--;
159 if (!length)
160 break;
161 }
162 }
163
164 return off;
165}
166
167static unsigned int jmb38x_ms_read_reg_data(struct jmb38x_ms_host *host,
168 unsigned char *buf,
169 unsigned int length)
170{
171 unsigned int off = 0;
172
173 while (host->io_pos > 4 && length) {
174 buf[off++] = host->io_word[0] & 0xff;
175 host->io_word[0] >>= 8;
176 length--;
177 host->io_pos--;
178 }
179
180 if (!length)
181 return off;
182
183 while (host->io_pos && length) {
184 buf[off++] = host->io_word[1] & 0xff;
185 host->io_word[1] >>= 8;
186 length--;
187 host->io_pos--;
188 }
189
190 return off;
191}
192
193static unsigned int jmb38x_ms_write_data(struct jmb38x_ms_host *host,
194 unsigned char *buf,
195 unsigned int length)
196{
197 unsigned int off = 0;
198
199 if (host->io_pos) {
200 while (host->io_pos < 4 && length) {
201 host->io_word[0] |= buf[off++] << (host->io_pos * 8);
202 host->io_pos++;
203 length--;
204 }
205 }
206
207 if (host->io_pos == 4
208 && !(STATUS_FIFO_FULL & readl(host->addr + STATUS))) {
209 writel(host->io_word[0], host->addr + DATA);
210 host->io_pos = 0;
211 host->io_word[0] = 0;
212 } else if (host->io_pos) {
213 return off;
214 }
215
216 if (!length)
217 return off;
218
219 while (!(STATUS_FIFO_FULL & readl(host->addr + STATUS))) {
220 if (length < 4)
221 break;
222
223 __raw_writel(*(unsigned int *)(buf + off),
224 host->addr + DATA);
225 length -= 4;
226 off += 4;
227 }
228
229 switch (length) {
230 case 3:
231 host->io_word[0] |= buf[off + 2] << 16;
232 host->io_pos++;
233 case 2:
234 host->io_word[0] |= buf[off + 1] << 8;
235 host->io_pos++;
236 case 1:
237 host->io_word[0] |= buf[off];
238 host->io_pos++;
239 }
240
241 off += host->io_pos;
242
243 return off;
244}
245
246static unsigned int jmb38x_ms_write_reg_data(struct jmb38x_ms_host *host,
247 unsigned char *buf,
248 unsigned int length)
249{
250 unsigned int off = 0;
251
252 while (host->io_pos < 4 && length) {
253 host->io_word[0] &= ~(0xff << (host->io_pos * 8));
254 host->io_word[0] |= buf[off++] << (host->io_pos * 8);
255 host->io_pos++;
256 length--;
257 }
258
259 if (!length)
260 return off;
261
262 while (host->io_pos < 8 && length) {
263 host->io_word[1] &= ~(0xff << (host->io_pos * 8));
264 host->io_word[1] |= buf[off++] << (host->io_pos * 8);
265 host->io_pos++;
266 length--;
267 }
268
269 return off;
270}
271
272static int jmb38x_ms_transfer_data(struct jmb38x_ms_host *host)
273{
274 unsigned int length;
275 unsigned int off;
276 unsigned int t_size, p_off, p_cnt;
277 unsigned char *buf;
278 struct page *pg;
279 unsigned long flags = 0;
280
281 if (host->req->long_data) {
282 length = host->req->sg.length - host->block_pos;
283 off = host->req->sg.offset + host->block_pos;
284 } else {
285 length = host->req->data_len - host->block_pos;
286 off = 0;
287 }
288
289 while (length) {
290 if (host->req->long_data) {
291 pg = nth_page(sg_page(&host->req->sg),
292 off >> PAGE_SHIFT);
293 p_off = offset_in_page(off);
294 p_cnt = PAGE_SIZE - p_off;
295 p_cnt = min(p_cnt, length);
296
297 local_irq_save(flags);
298 buf = kmap_atomic(pg, KM_BIO_SRC_IRQ) + p_off;
299 } else {
300 buf = host->req->data + host->block_pos;
301 p_cnt = host->req->data_len - host->block_pos;
302 }
303
304 if (host->req->data_dir == WRITE)
305 t_size = !(host->cmd_flags & REG_DATA)
306 ? jmb38x_ms_write_data(host, buf, p_cnt)
307 : jmb38x_ms_write_reg_data(host, buf, p_cnt);
308 else
309 t_size = !(host->cmd_flags & REG_DATA)
310 ? jmb38x_ms_read_data(host, buf, p_cnt)
311 : jmb38x_ms_read_reg_data(host, buf, p_cnt);
312
313 if (host->req->long_data) {
314 kunmap_atomic(buf - p_off, KM_BIO_SRC_IRQ);
315 local_irq_restore(flags);
316 }
317
318 if (!t_size)
319 break;
320 host->block_pos += t_size;
321 length -= t_size;
322 off += t_size;
323 }
324
325 if (!length && host->req->data_dir == WRITE) {
326 if (host->cmd_flags & REG_DATA) {
327 writel(host->io_word[0], host->addr + TPC_P0);
328 writel(host->io_word[1], host->addr + TPC_P1);
329 } else if (host->io_pos) {
330 writel(host->io_word[0], host->addr + DATA);
331 }
332 }
333
334 return length;
335}
336
337static int jmb38x_ms_issue_cmd(struct memstick_host *msh)
338{
339 struct jmb38x_ms_host *host = memstick_priv(msh);
340 unsigned char *data;
341 unsigned int data_len, cmd, t_val;
342
343 if (!(STATUS_HAS_MEDIA & readl(host->addr + STATUS))) {
344 dev_dbg(msh->cdev.dev, "no media status\n");
345 host->req->error = -ETIME;
346 return host->req->error;
347 }
348
349 dev_dbg(msh->cdev.dev, "control %08x\n",
350 readl(host->addr + HOST_CONTROL));
351 dev_dbg(msh->cdev.dev, "status %08x\n", readl(host->addr + INT_STATUS));
352 dev_dbg(msh->cdev.dev, "hstatus %08x\n", readl(host->addr + STATUS));
353
354 host->cmd_flags = 0;
355 host->block_pos = 0;
356 host->io_pos = 0;
357 host->io_word[0] = 0;
358 host->io_word[1] = 0;
359
360 cmd = host->req->tpc << 16;
361 cmd |= TPC_DATA_SEL;
362
363 if (host->req->data_dir == READ)
364 cmd |= TPC_DIR;
365 if (host->req->need_card_int)
366 cmd |= TPC_WAIT_INT;
367 if (host->req->get_int_reg)
368 cmd |= TPC_GET_INT;
369
370 data = host->req->data;
371
372 host->use_dma = !no_dma;
373
374 if (host->req->long_data) {
375 data_len = host->req->sg.length;
376 } else {
377 data_len = host->req->data_len;
378 host->use_dma = 0;
379 }
380
381 if (data_len <= 8) {
382 cmd &= ~(TPC_DATA_SEL | 0xf);
383 host->cmd_flags |= REG_DATA;
384 cmd |= data_len & 0xf;
385 host->use_dma = 0;
386 }
387
388 if (host->use_dma) {
389 if (1 != pci_map_sg(host->chip->pdev, &host->req->sg, 1,
390 host->req->data_dir == READ
391 ? PCI_DMA_FROMDEVICE
392 : PCI_DMA_TODEVICE)) {
393 host->req->error = -ENOMEM;
394 return host->req->error;
395 }
396 data_len = sg_dma_len(&host->req->sg);
397 writel(sg_dma_address(&host->req->sg),
398 host->addr + DMA_ADDRESS);
399 writel(((1 << 16) & BLOCK_COUNT_MASK)
400 | (data_len & BLOCK_SIZE_MASK),
401 host->addr + BLOCK);
402 writel(DMA_CONTROL_ENABLE, host->addr + DMA_CONTROL);
403 } else if (!(host->cmd_flags & REG_DATA)) {
404 writel(((1 << 16) & BLOCK_COUNT_MASK)
405 | (data_len & BLOCK_SIZE_MASK),
406 host->addr + BLOCK);
407 t_val = readl(host->addr + INT_STATUS_ENABLE);
408 t_val |= host->req->data_dir == READ
409 ? INT_STATUS_FIFO_RRDY
410 : INT_STATUS_FIFO_WRDY;
411
412 writel(t_val, host->addr + INT_STATUS_ENABLE);
413 writel(t_val, host->addr + INT_SIGNAL_ENABLE);
414 } else {
415 cmd &= ~(TPC_DATA_SEL | 0xf);
416 host->cmd_flags |= REG_DATA;
417 cmd |= data_len & 0xf;
418
419 if (host->req->data_dir == WRITE) {
420 jmb38x_ms_transfer_data(host);
421 writel(host->io_word[0], host->addr + TPC_P0);
422 writel(host->io_word[1], host->addr + TPC_P1);
423 }
424 }
425
426 mod_timer(&host->timer, jiffies + host->timeout_jiffies);
427 writel(HOST_CONTROL_LED | readl(host->addr + HOST_CONTROL),
428 host->addr + HOST_CONTROL);
429 host->req->error = 0;
430
431 writel(cmd, host->addr + TPC);
432 dev_dbg(msh->cdev.dev, "executing TPC %08x, len %x\n", cmd, data_len);
433
434 return 0;
435}
436
437static void jmb38x_ms_complete_cmd(struct memstick_host *msh, int last)
438{
439 struct jmb38x_ms_host *host = memstick_priv(msh);
440 unsigned int t_val = 0;
441 int rc;
442
443 del_timer(&host->timer);
444
445 dev_dbg(msh->cdev.dev, "c control %08x\n",
446 readl(host->addr + HOST_CONTROL));
447 dev_dbg(msh->cdev.dev, "c status %08x\n",
448 readl(host->addr + INT_STATUS));
449 dev_dbg(msh->cdev.dev, "c hstatus %08x\n", readl(host->addr + STATUS));
450
451 if (host->req->get_int_reg) {
452 t_val = readl(host->addr + TPC_P0);
453 host->req->int_reg = (t_val & 0xff);
454 }
455
456 if (host->use_dma) {
457 writel(0, host->addr + DMA_CONTROL);
458 pci_unmap_sg(host->chip->pdev, &host->req->sg, 1,
459 host->req->data_dir == READ
460 ? PCI_DMA_FROMDEVICE : PCI_DMA_TODEVICE);
461 } else {
462 t_val = readl(host->addr + INT_STATUS_ENABLE);
463 if (host->req->data_dir == READ)
464 t_val &= ~INT_STATUS_FIFO_RRDY;
465 else
466 t_val &= ~INT_STATUS_FIFO_WRDY;
467
468 writel(t_val, host->addr + INT_STATUS_ENABLE);
469 writel(t_val, host->addr + INT_SIGNAL_ENABLE);
470 }
471
472 writel((~HOST_CONTROL_LED) & readl(host->addr + HOST_CONTROL),
473 host->addr + HOST_CONTROL);
474
475 if (!last) {
476 do {
477 rc = memstick_next_req(msh, &host->req);
478 } while (!rc && jmb38x_ms_issue_cmd(msh));
479 } else {
480 do {
481 rc = memstick_next_req(msh, &host->req);
482 if (!rc)
483 host->req->error = -ETIME;
484 } while (!rc);
485 }
486}
487
488static irqreturn_t jmb38x_ms_isr(int irq, void *dev_id)
489{
490 struct memstick_host *msh = dev_id;
491 struct jmb38x_ms_host *host = memstick_priv(msh);
492 unsigned int irq_status;
493
494 spin_lock(&host->lock);
495 irq_status = readl(host->addr + INT_STATUS);
496 dev_dbg(&host->chip->pdev->dev, "irq_status = %08x\n", irq_status);
497 if (irq_status == 0 || irq_status == (~0)) {
498 spin_unlock(&host->lock);
499 return IRQ_NONE;
500 }
501
502 if (host->req) {
503 if (irq_status & INT_STATUS_ANY_ERR) {
504 if (irq_status & INT_STATUS_CRC_ERR)
505 host->req->error = -EILSEQ;
506 else
507 host->req->error = -ETIME;
508 } else {
509 if (host->use_dma) {
510 if (irq_status & INT_STATUS_EOTRAN)
511 host->cmd_flags |= FIFO_READY;
512 } else {
513 if (irq_status & (INT_STATUS_FIFO_RRDY
514 | INT_STATUS_FIFO_WRDY))
515 jmb38x_ms_transfer_data(host);
516
517 if (irq_status & INT_STATUS_EOTRAN) {
518 jmb38x_ms_transfer_data(host);
519 host->cmd_flags |= FIFO_READY;
520 }
521 }
522
523 if (irq_status & INT_STATUS_EOTPC) {
524 host->cmd_flags |= CMD_READY;
525 if (host->cmd_flags & REG_DATA) {
526 if (host->req->data_dir == READ) {
527 host->io_word[0]
528 = readl(host->addr
529 + TPC_P0);
530 host->io_word[1]
531 = readl(host->addr
532 + TPC_P1);
533 host->io_pos = 8;
534
535 jmb38x_ms_transfer_data(host);
536 }
537 host->cmd_flags |= FIFO_READY;
538 }
539 }
540 }
541 }
542
543 if (irq_status & (INT_STATUS_MEDIA_IN | INT_STATUS_MEDIA_OUT)) {
544 dev_dbg(&host->chip->pdev->dev, "media changed\n");
545 memstick_detect_change(msh);
546 }
547
548 writel(irq_status, host->addr + INT_STATUS);
549
550 if (host->req
551 && (((host->cmd_flags & CMD_READY)
552 && (host->cmd_flags & FIFO_READY))
553 || host->req->error))
554 jmb38x_ms_complete_cmd(msh, 0);
555
556 spin_unlock(&host->lock);
557 return IRQ_HANDLED;
558}
559
560static void jmb38x_ms_abort(unsigned long data)
561{
562 struct memstick_host *msh = (struct memstick_host *)data;
563 struct jmb38x_ms_host *host = memstick_priv(msh);
564 unsigned long flags;
565
566 dev_dbg(&host->chip->pdev->dev, "abort\n");
567 spin_lock_irqsave(&host->lock, flags);
568 if (host->req) {
569 host->req->error = -ETIME;
570 jmb38x_ms_complete_cmd(msh, 0);
571 }
572 spin_unlock_irqrestore(&host->lock, flags);
573}
574
575static void jmb38x_ms_request(struct memstick_host *msh)
576{
577 struct jmb38x_ms_host *host = memstick_priv(msh);
578 unsigned long flags;
579 int rc;
580
581 spin_lock_irqsave(&host->lock, flags);
582 if (host->req) {
583 spin_unlock_irqrestore(&host->lock, flags);
584 BUG();
585 return;
586 }
587
588 do {
589 rc = memstick_next_req(msh, &host->req);
590 } while (!rc && jmb38x_ms_issue_cmd(msh));
591 spin_unlock_irqrestore(&host->lock, flags);
592}
593
594static void jmb38x_ms_reset(struct jmb38x_ms_host *host)
595{
596 unsigned int host_ctl = readl(host->addr + HOST_CONTROL);
597
598 writel(host_ctl | HOST_CONTROL_RESET_REQ | HOST_CONTROL_RESET,
599 host->addr + HOST_CONTROL);
600
601 while (HOST_CONTROL_RESET_REQ
602 & (host_ctl = readl(host->addr + HOST_CONTROL))) {
603 ndelay(100);
604 dev_dbg(&host->chip->pdev->dev, "reset\n");
605 }
606
607 writel(INT_STATUS_ALL, host->addr + INT_STATUS_ENABLE);
608 writel(INT_STATUS_ALL, host->addr + INT_SIGNAL_ENABLE);
609
610 dev_dbg(&host->chip->pdev->dev, "reset\n");
611}
612
613static void jmb38x_ms_set_param(struct memstick_host *msh,
614 enum memstick_param param,
615 int value)
616{
617 struct jmb38x_ms_host *host = memstick_priv(msh);
618 unsigned int host_ctl;
619 unsigned long flags;
620
621 spin_lock_irqsave(&host->lock, flags);
622
623 switch (param) {
624 case MEMSTICK_POWER:
625 if (value == MEMSTICK_POWER_ON) {
626 jmb38x_ms_reset(host);
627
628 writel(host->id ? PAD_PU_PD_ON_MS_SOCK1
629 : PAD_PU_PD_ON_MS_SOCK0,
630 host->addr + PAD_PU_PD);
631
632 writel(PAD_OUTPUT_ENABLE_MS,
633 host->addr + PAD_OUTPUT_ENABLE);
634
635 host_ctl = readl(host->addr + HOST_CONTROL);
636 host_ctl |= 7;
637 writel(host_ctl | (HOST_CONTROL_POWER_EN
638 | HOST_CONTROL_CLOCK_EN),
639 host->addr + HOST_CONTROL);
640
641 dev_dbg(&host->chip->pdev->dev, "power on\n");
642 } else if (value == MEMSTICK_POWER_OFF) {
643 writel(readl(host->addr + HOST_CONTROL)
644 & ~(HOST_CONTROL_POWER_EN
645 | HOST_CONTROL_CLOCK_EN),
646 host->addr + HOST_CONTROL);
647 writel(0, host->addr + PAD_OUTPUT_ENABLE);
648 writel(PAD_PU_PD_OFF, host->addr + PAD_PU_PD);
649 dev_dbg(&host->chip->pdev->dev, "power off\n");
650 }
651 break;
652 case MEMSTICK_INTERFACE:
653 /* jmb38x_ms_reset(host); */
654
655 host_ctl = readl(host->addr + HOST_CONTROL);
656 host_ctl &= ~(3 << HOST_CONTROL_IF_SHIFT);
657 /* host_ctl |= 7; */
658
659 if (value == MEMSTICK_SERIAL) {
660 host_ctl &= ~HOST_CONTROL_FAST_CLK;
661 host_ctl |= HOST_CONTROL_IF_SERIAL
662 << HOST_CONTROL_IF_SHIFT;
663 host_ctl |= HOST_CONTROL_REI;
664 writel(0, host->addr + CLOCK_DELAY);
665 } else if (value == MEMSTICK_PAR4) {
666 host_ctl |= HOST_CONTROL_FAST_CLK;
667 host_ctl |= HOST_CONTROL_IF_PAR4
668 << HOST_CONTROL_IF_SHIFT;
669 host_ctl &= ~HOST_CONTROL_REI;
670 writel(4, host->addr + CLOCK_DELAY);
671 } else if (value == MEMSTICK_PAR8) {
672 host_ctl |= HOST_CONTROL_FAST_CLK;
673 host_ctl |= HOST_CONTROL_IF_PAR8
674 << HOST_CONTROL_IF_SHIFT;
675 host_ctl &= ~HOST_CONTROL_REI;
676 writel(4, host->addr + CLOCK_DELAY);
677 }
678 writel(host_ctl, host->addr + HOST_CONTROL);
679 break;
680 };
681
682 spin_unlock_irqrestore(&host->lock, flags);
683}
684
685#ifdef CONFIG_PM
686
687static int jmb38x_ms_suspend(struct pci_dev *dev, pm_message_t state)
688{
689 struct jmb38x_ms *jm = pci_get_drvdata(dev);
690 int cnt;
691
692 for (cnt = 0; cnt < jm->host_cnt; ++cnt) {
693 if (!jm->hosts[cnt])
694 break;
695 memstick_suspend_host(jm->hosts[cnt]);
696 }
697
698 pci_save_state(dev);
699 pci_enable_wake(dev, pci_choose_state(dev, state), 0);
700 pci_disable_device(dev);
701 pci_set_power_state(dev, pci_choose_state(dev, state));
702 return 0;
703}
704
705static int jmb38x_ms_resume(struct pci_dev *dev)
706{
707 struct jmb38x_ms *jm = pci_get_drvdata(dev);
708 int rc;
709
710 pci_set_power_state(dev, PCI_D0);
711 pci_restore_state(dev);
712 rc = pci_enable_device(dev);
713 if (rc)
714 return rc;
715 pci_set_master(dev);
716
717 pci_read_config_dword(dev, 0xac, &rc);
718 pci_write_config_dword(dev, 0xac, rc | 0x00470000);
719
720 for (rc = 0; rc < jm->host_cnt; ++rc) {
721 if (!jm->hosts[rc])
722 break;
723 memstick_resume_host(jm->hosts[rc]);
724 memstick_detect_change(jm->hosts[rc]);
725 }
726
727 return 0;
728}
729
730#else
731
732#define jmb38x_ms_suspend NULL
733#define jmb38x_ms_resume NULL
734
735#endif /* CONFIG_PM */
736
737static int jmb38x_ms_count_slots(struct pci_dev *pdev)
738{
739 int cnt, rc = 0;
740
741 for (cnt = 0; cnt < PCI_ROM_RESOURCE; ++cnt) {
742 if (!(IORESOURCE_MEM & pci_resource_flags(pdev, cnt)))
743 break;
744
745 if (256 != pci_resource_len(pdev, cnt))
746 break;
747
748 ++rc;
749 }
750 return rc;
751}
752
753static struct memstick_host *jmb38x_ms_alloc_host(struct jmb38x_ms *jm, int cnt)
754{
755 struct memstick_host *msh;
756 struct jmb38x_ms_host *host;
757
758 msh = memstick_alloc_host(sizeof(struct jmb38x_ms_host),
759 &jm->pdev->dev);
760 if (!msh)
761 return NULL;
762
763 host = memstick_priv(msh);
764 host->chip = jm;
765 host->addr = ioremap(pci_resource_start(jm->pdev, cnt),
766 pci_resource_len(jm->pdev, cnt));
767 if (!host->addr)
768 goto err_out_free;
769
770 spin_lock_init(&host->lock);
771 host->id = cnt;
772 snprintf(host->host_id, DEVICE_ID_SIZE, DRIVER_NAME ":slot%d",
773 host->id);
774 host->irq = jm->pdev->irq;
775 host->timeout_jiffies = msecs_to_jiffies(4000);
776 msh->request = jmb38x_ms_request;
777 msh->set_param = jmb38x_ms_set_param;
778 /*
779 msh->caps = MEMSTICK_CAP_AUTO_GET_INT | MEMSTICK_CAP_PAR4
780 | MEMSTICK_CAP_PAR8;
781 */
782 msh->caps = MEMSTICK_CAP_PAR4 | MEMSTICK_CAP_PAR8;
783
784 setup_timer(&host->timer, jmb38x_ms_abort, (unsigned long)msh);
785
786 if (!request_irq(host->irq, jmb38x_ms_isr, IRQF_SHARED, host->host_id,
787 msh))
788 return msh;
789
790 iounmap(host->addr);
791err_out_free:
792 kfree(msh);
793 return NULL;
794}
795
796static void jmb38x_ms_free_host(struct memstick_host *msh)
797{
798 struct jmb38x_ms_host *host = memstick_priv(msh);
799
800 free_irq(host->irq, msh);
801 iounmap(host->addr);
802 memstick_free_host(msh);
803}
804
805static int jmb38x_ms_probe(struct pci_dev *pdev,
806 const struct pci_device_id *dev_id)
807{
808 struct jmb38x_ms *jm;
809 int pci_dev_busy = 0;
810 int rc, cnt;
811
812 rc = pci_set_dma_mask(pdev, DMA_32BIT_MASK);
813 if (rc)
814 return rc;
815
816 rc = pci_enable_device(pdev);
817 if (rc)
818 return rc;
819
820 pci_set_master(pdev);
821
822 rc = pci_request_regions(pdev, DRIVER_NAME);
823 if (rc) {
824 pci_dev_busy = 1;
825 goto err_out;
826 }
827
828 pci_read_config_dword(pdev, 0xac, &rc);
829 pci_write_config_dword(pdev, 0xac, rc | 0x00470000);
830
831 cnt = jmb38x_ms_count_slots(pdev);
832 if (!cnt) {
833 rc = -ENODEV;
834 pci_dev_busy = 1;
835 goto err_out;
836 }
837
838 jm = kzalloc(sizeof(struct jmb38x_ms)
839 + cnt * sizeof(struct memstick_host *), GFP_KERNEL);
840 if (!jm) {
841 rc = -ENOMEM;
842 goto err_out_int;
843 }
844
845 jm->pdev = pdev;
846 jm->host_cnt = cnt;
847 pci_set_drvdata(pdev, jm);
848
849 for (cnt = 0; cnt < jm->host_cnt; ++cnt) {
850 jm->hosts[cnt] = jmb38x_ms_alloc_host(jm, cnt);
851 if (!jm->hosts[cnt])
852 break;
853
854 rc = memstick_add_host(jm->hosts[cnt]);
855
856 if (rc) {
857 jmb38x_ms_free_host(jm->hosts[cnt]);
858 jm->hosts[cnt] = NULL;
859 break;
860 }
861 }
862
863 if (cnt)
864 return 0;
865
866 rc = -ENODEV;
867
868 pci_set_drvdata(pdev, NULL);
869 kfree(jm);
870err_out_int:
871 pci_release_regions(pdev);
872err_out:
873 if (!pci_dev_busy)
874 pci_disable_device(pdev);
875 return rc;
876}
877
878static void jmb38x_ms_remove(struct pci_dev *dev)
879{
880 struct jmb38x_ms *jm = pci_get_drvdata(dev);
881 struct jmb38x_ms_host *host;
882 int cnt;
883 unsigned long flags;
884
885 for (cnt = 0; cnt < jm->host_cnt; ++cnt) {
886 if (!jm->hosts[cnt])
887 break;
888
889 host = memstick_priv(jm->hosts[cnt]);
890
891 writel(0, host->addr + INT_SIGNAL_ENABLE);
892 writel(0, host->addr + INT_STATUS_ENABLE);
893 mmiowb();
894 dev_dbg(&jm->pdev->dev, "interrupts off\n");
895 spin_lock_irqsave(&host->lock, flags);
896 if (host->req) {
897 host->req->error = -ETIME;
898 jmb38x_ms_complete_cmd(jm->hosts[cnt], 1);
899 }
900 spin_unlock_irqrestore(&host->lock, flags);
901
902 memstick_remove_host(jm->hosts[cnt]);
903 dev_dbg(&jm->pdev->dev, "host removed\n");
904
905 jmb38x_ms_free_host(jm->hosts[cnt]);
906 }
907
908 pci_set_drvdata(dev, NULL);
909 pci_release_regions(dev);
910 pci_disable_device(dev);
911 kfree(jm);
912}
913
914static struct pci_device_id jmb38x_ms_id_tbl [] = {
915 { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB38X_MS, PCI_ANY_ID,
916 PCI_ANY_ID, 0, 0, 0 },
917 { }
918};
919
920static struct pci_driver jmb38x_ms_driver = {
921 .name = DRIVER_NAME,
922 .id_table = jmb38x_ms_id_tbl,
923 .probe = jmb38x_ms_probe,
924 .remove = jmb38x_ms_remove,
925 .suspend = jmb38x_ms_suspend,
926 .resume = jmb38x_ms_resume
927};
928
929static int __init jmb38x_ms_init(void)
930{
931 return pci_register_driver(&jmb38x_ms_driver);
932}
933
934static void __exit jmb38x_ms_exit(void)
935{
936 pci_unregister_driver(&jmb38x_ms_driver);
937}
938
939MODULE_AUTHOR("Alex Dubov");
940MODULE_DESCRIPTION("JMicron jmb38x MemoryStick driver");
941MODULE_LICENSE("GPL");
942MODULE_DEVICE_TABLE(pci, jmb38x_ms_id_tbl);
943
944module_init(jmb38x_ms_init);
945module_exit(jmb38x_ms_exit);
diff --git a/drivers/memstick/host/tifm_ms.c b/drivers/memstick/host/tifm_ms.c
index 4fb24215bd..2b5bf52a83 100644
--- a/drivers/memstick/host/tifm_ms.c
+++ b/drivers/memstick/host/tifm_ms.c
@@ -20,293 +20,315 @@
20#include <asm/io.h> 20#include <asm/io.h>
21 21
22#define DRIVER_NAME "tifm_ms" 22#define DRIVER_NAME "tifm_ms"
23#define DRIVER_VERSION "0.1"
24 23
25static int no_dma; 24static int no_dma;
26module_param(no_dma, bool, 0644); 25module_param(no_dma, bool, 0644);
27 26
28#define TIFM_MS_TIMEOUT 0x00100 27/*
29#define TIFM_MS_BADCRC 0x00200 28 * Some control bits of TIFM appear to conform to Sony's reference design,
30#define TIFM_MS_EOTPC 0x01000 29 * so I'm just assuming they all are.
31#define TIFM_MS_INT 0x02000 30 */
32
33/* The meaning of the bit majority in this constant is unknown. */
34#define TIFM_MS_SERIAL 0x04010
35 31
36#define TIFM_MS_SYS_LATCH 0x00100 32#define TIFM_MS_STAT_DRQ 0x04000
37#define TIFM_MS_SYS_NOT_RDY 0x00800 33#define TIFM_MS_STAT_MSINT 0x02000
38#define TIFM_MS_SYS_DATA 0x10000 34#define TIFM_MS_STAT_RDY 0x01000
35#define TIFM_MS_STAT_CRC 0x00200
36#define TIFM_MS_STAT_TOE 0x00100
37#define TIFM_MS_STAT_EMP 0x00020
38#define TIFM_MS_STAT_FUL 0x00010
39#define TIFM_MS_STAT_CED 0x00008
40#define TIFM_MS_STAT_ERR 0x00004
41#define TIFM_MS_STAT_BRQ 0x00002
42#define TIFM_MS_STAT_CNK 0x00001
43
44#define TIFM_MS_SYS_DMA 0x10000
45#define TIFM_MS_SYS_RESET 0x08000
46#define TIFM_MS_SYS_SRAC 0x04000
47#define TIFM_MS_SYS_INTEN 0x02000
48#define TIFM_MS_SYS_NOCRC 0x01000
49#define TIFM_MS_SYS_INTCLR 0x00800
50#define TIFM_MS_SYS_MSIEN 0x00400
51#define TIFM_MS_SYS_FCLR 0x00200
52#define TIFM_MS_SYS_FDIR 0x00100
53#define TIFM_MS_SYS_DAM 0x00080
54#define TIFM_MS_SYS_DRM 0x00040
55#define TIFM_MS_SYS_DRQSL 0x00020
56#define TIFM_MS_SYS_REI 0x00010
57#define TIFM_MS_SYS_REO 0x00008
58#define TIFM_MS_SYS_BSY_MASK 0x00007
59
60#define TIFM_MS_SYS_FIFO (TIFM_MS_SYS_INTEN | TIFM_MS_SYS_MSIEN \
61 | TIFM_MS_SYS_FCLR | TIFM_MS_SYS_BSY_MASK)
39 62
40/* Hardware flags */ 63/* Hardware flags */
41enum { 64enum {
42 CMD_READY = 0x0001, 65 CMD_READY = 0x01,
43 FIFO_READY = 0x0002, 66 FIFO_READY = 0x02,
44 CARD_READY = 0x0004, 67 CARD_INT = 0x04
45 DATA_CARRY = 0x0008
46}; 68};
47 69
48struct tifm_ms { 70struct tifm_ms {
49 struct tifm_dev *dev; 71 struct tifm_dev *dev;
50 unsigned short eject:1, 72 struct timer_list timer;
51 no_dma:1; 73 struct memstick_request *req;
52 unsigned short cmd_flags;
53 unsigned int mode_mask; 74 unsigned int mode_mask;
54 unsigned int block_pos; 75 unsigned int block_pos;
55 unsigned long timeout_jiffies; 76 unsigned long timeout_jiffies;
56 77 unsigned char eject:1,
57 struct timer_list timer; 78 use_dma:1;
58 struct memstick_request *req; 79 unsigned char cmd_flags;
80 unsigned char io_pos;
59 unsigned int io_word; 81 unsigned int io_word;
60}; 82};
61 83
62static void tifm_ms_read_fifo(struct tifm_ms *host, unsigned int fifo_offset, 84static unsigned int tifm_ms_read_data(struct tifm_ms *host,
63 struct page *pg, unsigned int page_off, 85 unsigned char *buf, unsigned int length)
64 unsigned int length)
65{ 86{
66 struct tifm_dev *sock = host->dev; 87 struct tifm_dev *sock = host->dev;
67 unsigned int cnt = 0, off = 0; 88 unsigned int off = 0;
68 unsigned char *buf = kmap_atomic(pg, KM_BIO_DST_IRQ) + page_off; 89
90 while (host->io_pos && length) {
91 buf[off++] = host->io_word & 0xff;
92 host->io_word >>= 8;
93 length--;
94 host->io_pos--;
95 }
69 96
70 if (host->cmd_flags & DATA_CARRY) { 97 if (!length)
71 while ((fifo_offset & 3) && length) { 98 return off;
99
100 while (!(TIFM_MS_STAT_EMP & readl(sock->addr + SOCK_MS_STATUS))) {
101 if (length < 4)
102 break;
103 *(unsigned int *)(buf + off) = __raw_readl(sock->addr
104 + SOCK_MS_DATA);
105 length -= 4;
106 off += 4;
107 }
108
109 if (length
110 && !(TIFM_MS_STAT_EMP & readl(sock->addr + SOCK_MS_STATUS))) {
111 host->io_word = readl(sock->addr + SOCK_MS_DATA);
112 for (host->io_pos = 4; host->io_pos; --host->io_pos) {
72 buf[off++] = host->io_word & 0xff; 113 buf[off++] = host->io_word & 0xff;
73 host->io_word >>= 8; 114 host->io_word >>= 8;
74 length--; 115 length--;
75 fifo_offset++; 116 if (!length)
117 break;
76 } 118 }
77 if (!(fifo_offset & 3))
78 host->cmd_flags &= ~DATA_CARRY;
79 if (!length)
80 return;
81 } 119 }
82 120
83 do { 121 return off;
84 host->io_word = readl(sock->addr + SOCK_FIFO_ACCESS
85 + fifo_offset);
86 cnt = 4;
87 while (length && cnt) {
88 buf[off++] = (host->io_word >> 8) & 0xff;
89 cnt--;
90 length--;
91 }
92 fifo_offset += 4 - cnt;
93 } while (length);
94
95 if (cnt)
96 host->cmd_flags |= DATA_CARRY;
97
98 kunmap_atomic(buf - page_off, KM_BIO_DST_IRQ);
99} 122}
100 123
101static void tifm_ms_write_fifo(struct tifm_ms *host, unsigned int fifo_offset, 124static unsigned int tifm_ms_write_data(struct tifm_ms *host,
102 struct page *pg, unsigned int page_off, 125 unsigned char *buf, unsigned int length)
103 unsigned int length)
104{ 126{
105 struct tifm_dev *sock = host->dev; 127 struct tifm_dev *sock = host->dev;
106 unsigned int cnt = 0, off = 0; 128 unsigned int off = 0;
107 unsigned char *buf = kmap_atomic(pg, KM_BIO_SRC_IRQ) + page_off;
108 129
109 if (host->cmd_flags & DATA_CARRY) { 130 if (host->io_pos) {
110 while (fifo_offset & 3) { 131 while (host->io_pos < 4 && length) {
111 host->io_word |= buf[off++] << (8 * (fifo_offset & 3)); 132 host->io_word |= buf[off++] << (host->io_pos * 8);
133 host->io_pos++;
112 length--; 134 length--;
113 fifo_offset++;
114 } 135 }
115 if (!(fifo_offset & 3)) {
116 writel(host->io_word, sock->addr + SOCK_FIFO_ACCESS
117 + fifo_offset - 4);
118
119 host->cmd_flags &= ~DATA_CARRY;
120 }
121 if (!length)
122 return;
123 } 136 }
124 137
125 do { 138 if (host->io_pos == 4
126 cnt = 4; 139 && !(TIFM_MS_STAT_FUL & readl(sock->addr + SOCK_MS_STATUS))) {
140 writel(TIFM_MS_SYS_FDIR | readl(sock->addr + SOCK_MS_SYSTEM),
141 sock->addr + SOCK_MS_SYSTEM);
142 writel(host->io_word, sock->addr + SOCK_MS_DATA);
143 host->io_pos = 0;
127 host->io_word = 0; 144 host->io_word = 0;
128 while (length && cnt) { 145 } else if (host->io_pos) {
129 host->io_word |= buf[off++] << (4 - cnt); 146 return off;
130 cnt--; 147 }
131 length--;
132 }
133 fifo_offset += 4 - cnt;
134 if (!cnt)
135 writel(host->io_word, sock->addr + SOCK_FIFO_ACCESS
136 + fifo_offset - 4);
137
138 } while (length);
139
140 if (cnt)
141 host->cmd_flags |= DATA_CARRY;
142 148
143 kunmap_atomic(buf - page_off, KM_BIO_SRC_IRQ); 149 if (!length)
144} 150 return off;
145 151
146static void tifm_ms_move_block(struct tifm_ms *host, unsigned int length) 152 while (!(TIFM_MS_STAT_FUL & readl(sock->addr + SOCK_MS_STATUS))) {
147{ 153 if (length < 4)
148 unsigned int t_size; 154 break;
149 unsigned int off = host->req->sg.offset + host->block_pos; 155 writel(TIFM_MS_SYS_FDIR | readl(sock->addr + SOCK_MS_SYSTEM),
150 unsigned int p_off, p_cnt; 156 sock->addr + SOCK_MS_SYSTEM);
151 struct page *pg; 157 __raw_writel(*(unsigned int *)(buf + off),
152 unsigned long flags; 158 sock->addr + SOCK_MS_DATA);
159 length -= 4;
160 off += 4;
161 }
153 162
154 dev_dbg(&host->dev->dev, "moving block\n"); 163 switch (length) {
155 local_irq_save(flags); 164 case 3:
156 t_size = length; 165 host->io_word |= buf[off + 2] << 16;
157 while (t_size) { 166 host->io_pos++;
158 pg = nth_page(sg_page(&host->req->sg), off >> PAGE_SHIFT); 167 case 2:
159 p_off = offset_in_page(off); 168 host->io_word |= buf[off + 1] << 8;
160 p_cnt = PAGE_SIZE - p_off; 169 host->io_pos++;
161 p_cnt = min(p_cnt, t_size); 170 case 1:
171 host->io_word |= buf[off];
172 host->io_pos++;
173 }
162 174
163 if (host->req->data_dir == WRITE) 175 off += host->io_pos;
164 tifm_ms_write_fifo(host, length - t_size,
165 pg, p_off, p_cnt);
166 else
167 tifm_ms_read_fifo(host, length - t_size,
168 pg, p_off, p_cnt);
169 176
170 t_size -= p_cnt; 177 return off;
171 }
172 local_irq_restore(flags);
173} 178}
174 179
175static int tifm_ms_transfer_data(struct tifm_ms *host, int skip) 180static unsigned int tifm_ms_transfer_data(struct tifm_ms *host)
176{ 181{
177 struct tifm_dev *sock = host->dev; 182 struct tifm_dev *sock = host->dev;
178 unsigned int length = host->req->sg.length - host->block_pos; 183 unsigned int length;
184 unsigned int off;
185 unsigned int t_size, p_off, p_cnt;
186 unsigned char *buf;
187 struct page *pg;
188 unsigned long flags = 0;
189
190 if (host->req->long_data) {
191 length = host->req->sg.length - host->block_pos;
192 off = host->req->sg.offset + host->block_pos;
193 } else {
194 length = host->req->data_len - host->block_pos;
195 off = 0;
196 }
197 dev_dbg(&sock->dev, "fifo data transfer, %d, %d\n", length,
198 host->block_pos);
199
200 while (length) {
201 if (host->req->long_data) {
202 pg = nth_page(sg_page(&host->req->sg),
203 off >> PAGE_SHIFT);
204 p_off = offset_in_page(off);
205 p_cnt = PAGE_SIZE - p_off;
206 p_cnt = min(p_cnt, length);
207
208 local_irq_save(flags);
209 buf = kmap_atomic(pg, KM_BIO_SRC_IRQ) + p_off;
210 } else {
211 buf = host->req->data + host->block_pos;
212 p_cnt = host->req->data_len - host->block_pos;
213 }
179 214
180 if (!length) 215 t_size = host->req->data_dir == WRITE
181 return 1; 216 ? tifm_ms_write_data(host, buf, p_cnt)
217 : tifm_ms_read_data(host, buf, p_cnt);
182 218
183 if (length > TIFM_FIFO_SIZE) 219 if (host->req->long_data) {
184 length = TIFM_FIFO_SIZE; 220 kunmap_atomic(buf - p_off, KM_BIO_SRC_IRQ);
221 local_irq_restore(flags);
222 }
185 223
186 if (!skip) { 224 if (!t_size)
187 tifm_ms_move_block(host, length); 225 break;
188 host->block_pos += length; 226 host->block_pos += t_size;
227 length -= t_size;
228 off += t_size;
189 } 229 }
190 230
191 if ((host->req->data_dir == READ) 231 dev_dbg(&sock->dev, "fifo data transfer, %d remaining\n", length);
192 && (host->block_pos == host->req->sg.length)) 232 if (!length && (host->req->data_dir == WRITE)) {
193 return 1; 233 if (host->io_pos) {
194 234 writel(TIFM_MS_SYS_FDIR
195 writel(ilog2(length) - 2, sock->addr + SOCK_FIFO_PAGE_SIZE); 235 | readl(sock->addr + SOCK_MS_SYSTEM),
196 if (host->req->data_dir == WRITE) 236 sock->addr + SOCK_MS_SYSTEM);
197 writel((1 << 8) | TIFM_DMA_TX, sock->addr + SOCK_DMA_CONTROL); 237 writel(host->io_word, sock->addr + SOCK_MS_DATA);
198 else 238 }
199 writel((1 << 8), sock->addr + SOCK_DMA_CONTROL); 239 writel(TIFM_MS_SYS_FDIR
240 | readl(sock->addr + SOCK_MS_SYSTEM),
241 sock->addr + SOCK_MS_SYSTEM);
242 writel(0, sock->addr + SOCK_MS_DATA);
243 } else {
244 readl(sock->addr + SOCK_MS_DATA);
245 }
200 246
201 return 0; 247 return length;
202} 248}
203 249
204static int tifm_ms_issue_cmd(struct tifm_ms *host) 250static int tifm_ms_issue_cmd(struct tifm_ms *host)
205{ 251{
206 struct tifm_dev *sock = host->dev; 252 struct tifm_dev *sock = host->dev;
207 unsigned char *data; 253 unsigned char *data;
208 unsigned int data_len = 0, cmd = 0, cmd_mask = 0, cnt, tval = 0; 254 unsigned int data_len, cmd, sys_param;
209 255
210 host->cmd_flags = 0; 256 host->cmd_flags = 0;
257 host->block_pos = 0;
258 host->io_pos = 0;
259 host->io_word = 0;
260 host->cmd_flags = 0;
211 261
212 if (host->req->io_type == MEMSTICK_IO_SG) { 262 data = host->req->data;
213 if (!host->no_dma) {
214 if (1 != tifm_map_sg(sock, &host->req->sg, 1,
215 host->req->data_dir == READ
216 ? PCI_DMA_FROMDEVICE
217 : PCI_DMA_TODEVICE)) {
218 host->req->error = -ENOMEM;
219 return host->req->error;
220 }
221 data_len = sg_dma_len(&host->req->sg);
222 } else
223 data_len = host->req->sg.length;
224
225 writel(TIFM_FIFO_INT_SETALL,
226 sock->addr + SOCK_DMA_FIFO_INT_ENABLE_CLEAR);
227 writel(TIFM_FIFO_ENABLE,
228 sock->addr + SOCK_FIFO_CONTROL);
229 writel(TIFM_FIFO_INTMASK,
230 sock->addr + SOCK_DMA_FIFO_INT_ENABLE_SET);
231 263
232 if (!host->no_dma) { 264 host->use_dma = !no_dma;
233 writel(ilog2(data_len) - 2,
234 sock->addr + SOCK_FIFO_PAGE_SIZE);
235 writel(sg_dma_address(&host->req->sg),
236 sock->addr + SOCK_DMA_ADDRESS);
237 if (host->req->data_dir == WRITE)
238 writel((1 << 8) | TIFM_DMA_TX | TIFM_DMA_EN,
239 sock->addr + SOCK_DMA_CONTROL);
240 else
241 writel((1 << 8) | TIFM_DMA_EN,
242 sock->addr + SOCK_DMA_CONTROL);
243 } else {
244 tifm_ms_transfer_data(host,
245 host->req->data_dir == READ);
246 }
247 265
248 cmd_mask = readl(sock->addr + SOCK_MS_SYSTEM); 266 if (host->req->long_data) {
249 cmd_mask |= TIFM_MS_SYS_DATA | TIFM_MS_SYS_NOT_RDY; 267 data_len = host->req->sg.length;
250 writel(cmd_mask, sock->addr + SOCK_MS_SYSTEM); 268 if (!is_power_of_2(data_len))
251 } else if (host->req->io_type == MEMSTICK_IO_VAL) { 269 host->use_dma = 0;
252 data = host->req->data; 270 } else {
253 data_len = host->req->data_len; 271 data_len = host->req->data_len;
272 host->use_dma = 0;
273 }
254 274
255 cmd_mask = host->mode_mask | 0x2607; /* unknown constant */ 275 writel(TIFM_FIFO_INT_SETALL,
256 276 sock->addr + SOCK_DMA_FIFO_INT_ENABLE_CLEAR);
257 if (host->req->data_dir == WRITE) { 277 writel(TIFM_FIFO_ENABLE,
258 cmd_mask |= TIFM_MS_SYS_LATCH; 278 sock->addr + SOCK_FIFO_CONTROL);
259 writel(cmd_mask, sock->addr + SOCK_MS_SYSTEM); 279
260 for (cnt = 0; (data_len - cnt) >= 4; cnt += 4) { 280 if (host->use_dma) {
261 writel(TIFM_MS_SYS_LATCH 281 if (1 != tifm_map_sg(sock, &host->req->sg, 1,
262 | readl(sock->addr + SOCK_MS_SYSTEM), 282 host->req->data_dir == READ
263 sock->addr + SOCK_MS_SYSTEM); 283 ? PCI_DMA_FROMDEVICE
264 __raw_writel(*(unsigned int *)(data + cnt), 284 : PCI_DMA_TODEVICE)) {
265 sock->addr + SOCK_MS_DATA); 285 host->req->error = -ENOMEM;
266 dev_dbg(&sock->dev, "writing %x\n", 286 return host->req->error;
267 *(int *)(data + cnt)); 287 }
268 } 288 data_len = sg_dma_len(&host->req->sg);
269 switch (data_len - cnt) {
270 case 3:
271 tval |= data[cnt + 2] << 16;
272 case 2:
273 tval |= data[cnt + 1] << 8;
274 case 1:
275 tval |= data[cnt];
276 writel(TIFM_MS_SYS_LATCH
277 | readl(sock->addr + SOCK_MS_SYSTEM),
278 sock->addr + SOCK_MS_SYSTEM);
279 writel(tval, sock->addr + SOCK_MS_DATA);
280 dev_dbg(&sock->dev, "writing %x\n", tval);
281 }
282 289
283 writel(TIFM_MS_SYS_LATCH 290 writel(ilog2(data_len) - 2,
284 | readl(sock->addr + SOCK_MS_SYSTEM), 291 sock->addr + SOCK_FIFO_PAGE_SIZE);
285 sock->addr + SOCK_MS_SYSTEM); 292 writel(TIFM_FIFO_INTMASK,
286 writel(0, sock->addr + SOCK_MS_DATA); 293 sock->addr + SOCK_DMA_FIFO_INT_ENABLE_SET);
287 dev_dbg(&sock->dev, "writing %x\n", 0); 294 sys_param = TIFM_DMA_EN | (1 << 8);
295 if (host->req->data_dir == WRITE)
296 sys_param |= TIFM_DMA_TX;
297
298 writel(TIFM_FIFO_INTMASK,
299 sock->addr + SOCK_DMA_FIFO_INT_ENABLE_SET);
288 300
289 } else 301 writel(sg_dma_address(&host->req->sg),
290 writel(cmd_mask, sock->addr + SOCK_MS_SYSTEM); 302 sock->addr + SOCK_DMA_ADDRESS);
303 writel(sys_param, sock->addr + SOCK_DMA_CONTROL);
304 } else {
305 writel(host->mode_mask | TIFM_MS_SYS_FIFO,
306 sock->addr + SOCK_MS_SYSTEM);
291 307
292 cmd_mask = readl(sock->addr + SOCK_MS_SYSTEM); 308 writel(TIFM_FIFO_MORE,
293 cmd_mask &= ~TIFM_MS_SYS_DATA; 309 sock->addr + SOCK_DMA_FIFO_INT_ENABLE_SET);
294 cmd_mask |= TIFM_MS_SYS_NOT_RDY; 310 }
295 dev_dbg(&sock->dev, "mask %x\n", cmd_mask);
296 writel(cmd_mask, sock->addr + SOCK_MS_SYSTEM);
297 } else
298 BUG();
299 311
300 mod_timer(&host->timer, jiffies + host->timeout_jiffies); 312 mod_timer(&host->timer, jiffies + host->timeout_jiffies);
301 writel(TIFM_CTRL_LED | readl(sock->addr + SOCK_CONTROL), 313 writel(TIFM_CTRL_LED | readl(sock->addr + SOCK_CONTROL),
302 sock->addr + SOCK_CONTROL); 314 sock->addr + SOCK_CONTROL);
303 host->req->error = 0; 315 host->req->error = 0;
304 316
317 sys_param = readl(sock->addr + SOCK_MS_SYSTEM);
318 sys_param |= TIFM_MS_SYS_INTCLR;
319
320 if (host->use_dma)
321 sys_param |= TIFM_MS_SYS_DMA;
322 else
323 sys_param &= ~TIFM_MS_SYS_DMA;
324
325 writel(sys_param, sock->addr + SOCK_MS_SYSTEM);
326
305 cmd = (host->req->tpc & 0xf) << 12; 327 cmd = (host->req->tpc & 0xf) << 12;
306 cmd |= data_len; 328 cmd |= data_len;
307 writel(cmd, sock->addr + SOCK_MS_COMMAND); 329 writel(cmd, sock->addr + SOCK_MS_COMMAND);
308 330
309 dev_dbg(&sock->dev, "executing TPC %x, %x\n", cmd, cmd_mask); 331 dev_dbg(&sock->dev, "executing TPC %x, %x\n", cmd, sys_param);
310 return 0; 332 return 0;
311} 333}
312 334
@@ -314,47 +336,20 @@ static void tifm_ms_complete_cmd(struct tifm_ms *host)
314{ 336{
315 struct tifm_dev *sock = host->dev; 337 struct tifm_dev *sock = host->dev;
316 struct memstick_host *msh = tifm_get_drvdata(sock); 338 struct memstick_host *msh = tifm_get_drvdata(sock);
317 unsigned int tval = 0, data_len;
318 unsigned char *data;
319 int rc; 339 int rc;
320 340
321 del_timer(&host->timer); 341 del_timer(&host->timer);
322 if (host->req->io_type == MEMSTICK_IO_SG) {
323 if (!host->no_dma)
324 tifm_unmap_sg(sock, &host->req->sg, 1,
325 host->req->data_dir == READ
326 ? PCI_DMA_FROMDEVICE
327 : PCI_DMA_TODEVICE);
328 } else if (host->req->io_type == MEMSTICK_IO_VAL) {
329 writel(~TIFM_MS_SYS_DATA & readl(sock->addr + SOCK_MS_SYSTEM),
330 sock->addr + SOCK_MS_SYSTEM);
331
332 data = host->req->data;
333 data_len = host->req->data_len;
334 342
335 if (host->req->data_dir == READ) { 343 if (host->use_dma)
336 for (rc = 0; (data_len - rc) >= 4; rc += 4) 344 tifm_unmap_sg(sock, &host->req->sg, 1,
337 *(int *)(data + rc) 345 host->req->data_dir == READ
338 = __raw_readl(sock->addr 346 ? PCI_DMA_FROMDEVICE
339 + SOCK_MS_DATA); 347 : PCI_DMA_TODEVICE);
340
341 if (data_len - rc)
342 tval = readl(sock->addr + SOCK_MS_DATA);
343 switch (data_len - rc) {
344 case 3:
345 data[rc + 2] = (tval >> 16) & 0xff;
346 case 2:
347 data[rc + 1] = (tval >> 8) & 0xff;
348 case 1:
349 data[rc] = tval & 0xff;
350 }
351 readl(sock->addr + SOCK_MS_DATA);
352 }
353 }
354 348
355 writel((~TIFM_CTRL_LED) & readl(sock->addr + SOCK_CONTROL), 349 writel((~TIFM_CTRL_LED) & readl(sock->addr + SOCK_CONTROL),
356 sock->addr + SOCK_CONTROL); 350 sock->addr + SOCK_CONTROL);
357 351
352 dev_dbg(&sock->dev, "TPC complete\n");
358 do { 353 do {
359 rc = memstick_next_req(msh, &host->req); 354 rc = memstick_next_req(msh, &host->req);
360 } while (!rc && tifm_ms_issue_cmd(host)); 355 } while (!rc && tifm_ms_issue_cmd(host));
@@ -365,11 +360,10 @@ static int tifm_ms_check_status(struct tifm_ms *host)
365 if (!host->req->error) { 360 if (!host->req->error) {
366 if (!(host->cmd_flags & CMD_READY)) 361 if (!(host->cmd_flags & CMD_READY))
367 return 1; 362 return 1;
368 if ((host->req->io_type == MEMSTICK_IO_SG) 363 if (!(host->cmd_flags & FIFO_READY))
369 && !(host->cmd_flags & FIFO_READY))
370 return 1; 364 return 1;
371 if (host->req->need_card_int 365 if (host->req->need_card_int
372 && !(host->cmd_flags & CARD_READY)) 366 && !(host->cmd_flags & CARD_INT))
373 return 1; 367 return 1;
374 } 368 }
375 return 0; 369 return 0;
@@ -379,18 +373,24 @@ static int tifm_ms_check_status(struct tifm_ms *host)
379static void tifm_ms_data_event(struct tifm_dev *sock) 373static void tifm_ms_data_event(struct tifm_dev *sock)
380{ 374{
381 struct tifm_ms *host; 375 struct tifm_ms *host;
382 unsigned int fifo_status = 0; 376 unsigned int fifo_status = 0, host_status = 0;
383 int rc = 1; 377 int rc = 1;
384 378
385 spin_lock(&sock->lock); 379 spin_lock(&sock->lock);
386 host = memstick_priv((struct memstick_host *)tifm_get_drvdata(sock)); 380 host = memstick_priv((struct memstick_host *)tifm_get_drvdata(sock));
387 fifo_status = readl(sock->addr + SOCK_DMA_FIFO_STATUS); 381 fifo_status = readl(sock->addr + SOCK_DMA_FIFO_STATUS);
388 dev_dbg(&sock->dev, "data event: fifo_status %x, flags %x\n", 382 host_status = readl(sock->addr + SOCK_MS_STATUS);
389 fifo_status, host->cmd_flags); 383 dev_dbg(&sock->dev,
384 "data event: fifo_status %x, host_status %x, flags %x\n",
385 fifo_status, host_status, host->cmd_flags);
390 386
391 if (host->req) { 387 if (host->req) {
392 if (fifo_status & TIFM_FIFO_READY) { 388 if (host->use_dma && (fifo_status & 1)) {
393 if (!host->no_dma || tifm_ms_transfer_data(host, 0)) { 389 host->cmd_flags |= FIFO_READY;
390 rc = tifm_ms_check_status(host);
391 }
392 if (!host->use_dma && (fifo_status & TIFM_FIFO_MORE)) {
393 if (!tifm_ms_transfer_data(host)) {
394 host->cmd_flags |= FIFO_READY; 394 host->cmd_flags |= FIFO_READY;
395 rc = tifm_ms_check_status(host); 395 rc = tifm_ms_check_status(host);
396 } 396 }
@@ -419,9 +419,9 @@ static void tifm_ms_card_event(struct tifm_dev *sock)
419 host_status, host->cmd_flags); 419 host_status, host->cmd_flags);
420 420
421 if (host->req) { 421 if (host->req) {
422 if (host_status & TIFM_MS_TIMEOUT) 422 if (host_status & TIFM_MS_STAT_TOE)
423 host->req->error = -ETIME; 423 host->req->error = -ETIME;
424 else if (host_status & TIFM_MS_BADCRC) 424 else if (host_status & TIFM_MS_STAT_CRC)
425 host->req->error = -EILSEQ; 425 host->req->error = -EILSEQ;
426 426
427 if (host->req->error) { 427 if (host->req->error) {
@@ -430,18 +430,17 @@ static void tifm_ms_card_event(struct tifm_dev *sock)
430 writel(TIFM_DMA_RESET, sock->addr + SOCK_DMA_CONTROL); 430 writel(TIFM_DMA_RESET, sock->addr + SOCK_DMA_CONTROL);
431 } 431 }
432 432
433 if (host_status & TIFM_MS_EOTPC) 433 if (host_status & TIFM_MS_STAT_RDY)
434 host->cmd_flags |= CMD_READY; 434 host->cmd_flags |= CMD_READY;
435 if (host_status & TIFM_MS_INT) 435
436 host->cmd_flags |= CARD_READY; 436 if (host_status & TIFM_MS_STAT_MSINT)
437 host->cmd_flags |= CARD_INT;
437 438
438 rc = tifm_ms_check_status(host); 439 rc = tifm_ms_check_status(host);
439 440
440 } 441 }
441 442
442 writel(TIFM_MS_SYS_NOT_RDY | readl(sock->addr + SOCK_MS_SYSTEM), 443 writel(TIFM_MS_SYS_INTCLR | readl(sock->addr + SOCK_MS_SYSTEM),
443 sock->addr + SOCK_MS_SYSTEM);
444 writel((~TIFM_MS_SYS_DATA) & readl(sock->addr + SOCK_MS_SYSTEM),
445 sock->addr + SOCK_MS_SYSTEM); 444 sock->addr + SOCK_MS_SYSTEM);
446 445
447 if (!rc) 446 if (!rc)
@@ -497,15 +496,26 @@ static void tifm_ms_set_param(struct memstick_host *msh,
497 496
498 switch (param) { 497 switch (param) {
499 case MEMSTICK_POWER: 498 case MEMSTICK_POWER:
500 /* this is set by card detection mechanism */ 499 /* also affected by media detection mechanism */
500 if (value == MEMSTICK_POWER_ON) {
501 host->mode_mask = TIFM_MS_SYS_SRAC | TIFM_MS_SYS_REI;
502 writel(TIFM_MS_SYS_RESET, sock->addr + SOCK_MS_SYSTEM);
503 writel(TIFM_MS_SYS_FCLR | TIFM_MS_SYS_INTCLR,
504 sock->addr + SOCK_MS_SYSTEM);
505 writel(0xffffffff, sock->addr + SOCK_MS_STATUS);
506 } else if (value == MEMSTICK_POWER_OFF) {
507 writel(TIFM_MS_SYS_FCLR | TIFM_MS_SYS_INTCLR,
508 sock->addr + SOCK_MS_SYSTEM);
509 writel(0xffffffff, sock->addr + SOCK_MS_STATUS);
510 }
501 break; 511 break;
502 case MEMSTICK_INTERFACE: 512 case MEMSTICK_INTERFACE:
503 if (value == MEMSTICK_SERIAL) { 513 if (value == MEMSTICK_SERIAL) {
504 host->mode_mask = TIFM_MS_SERIAL; 514 host->mode_mask = TIFM_MS_SYS_SRAC | TIFM_MS_SYS_REI;
505 writel((~TIFM_CTRL_FAST_CLK) 515 writel((~TIFM_CTRL_FAST_CLK)
506 & readl(sock->addr + SOCK_CONTROL), 516 & readl(sock->addr + SOCK_CONTROL),
507 sock->addr + SOCK_CONTROL); 517 sock->addr + SOCK_CONTROL);
508 } else if (value == MEMSTICK_PARALLEL) { 518 } else if (value == MEMSTICK_PAR4) {
509 host->mode_mask = 0; 519 host->mode_mask = 0;
510 writel(TIFM_CTRL_FAST_CLK 520 writel(TIFM_CTRL_FAST_CLK
511 | readl(sock->addr + SOCK_CONTROL), 521 | readl(sock->addr + SOCK_CONTROL),
@@ -532,21 +542,6 @@ static void tifm_ms_abort(unsigned long data)
532 tifm_eject(host->dev); 542 tifm_eject(host->dev);
533} 543}
534 544
535static int tifm_ms_initialize_host(struct tifm_ms *host)
536{
537 struct tifm_dev *sock = host->dev;
538 struct memstick_host *msh = tifm_get_drvdata(sock);
539
540 host->mode_mask = TIFM_MS_SERIAL;
541 writel(0x8000, sock->addr + SOCK_MS_SYSTEM);
542 writel(0x0200 | TIFM_MS_SYS_NOT_RDY, sock->addr + SOCK_MS_SYSTEM);
543 writel(0xffffffff, sock->addr + SOCK_MS_STATUS);
544 if (tifm_has_ms_pif(sock))
545 msh->caps |= MEMSTICK_CAP_PARALLEL;
546
547 return 0;
548}
549
550static int tifm_ms_probe(struct tifm_dev *sock) 545static int tifm_ms_probe(struct tifm_dev *sock)
551{ 546{
552 struct memstick_host *msh; 547 struct memstick_host *msh;
@@ -568,7 +563,6 @@ static int tifm_ms_probe(struct tifm_dev *sock)
568 tifm_set_drvdata(sock, msh); 563 tifm_set_drvdata(sock, msh);
569 host->dev = sock; 564 host->dev = sock;
570 host->timeout_jiffies = msecs_to_jiffies(1000); 565 host->timeout_jiffies = msecs_to_jiffies(1000);
571 host->no_dma = no_dma;
572 566
573 setup_timer(&host->timer, tifm_ms_abort, (unsigned long)host); 567 setup_timer(&host->timer, tifm_ms_abort, (unsigned long)host);
574 568
@@ -576,10 +570,10 @@ static int tifm_ms_probe(struct tifm_dev *sock)
576 msh->set_param = tifm_ms_set_param; 570 msh->set_param = tifm_ms_set_param;
577 sock->card_event = tifm_ms_card_event; 571 sock->card_event = tifm_ms_card_event;
578 sock->data_event = tifm_ms_data_event; 572 sock->data_event = tifm_ms_data_event;
579 rc = tifm_ms_initialize_host(host); 573 if (tifm_has_ms_pif(sock))
574 msh->caps |= MEMSTICK_CAP_PAR4;
580 575
581 if (!rc) 576 rc = memstick_add_host(msh);
582 rc = memstick_add_host(msh);
583 if (!rc) 577 if (!rc)
584 return 0; 578 return 0;
585 579
@@ -601,7 +595,7 @@ static void tifm_ms_remove(struct tifm_dev *sock)
601 writel(TIFM_FIFO_INT_SETALL, 595 writel(TIFM_FIFO_INT_SETALL,
602 sock->addr + SOCK_DMA_FIFO_INT_ENABLE_CLEAR); 596 sock->addr + SOCK_DMA_FIFO_INT_ENABLE_CLEAR);
603 writel(TIFM_DMA_RESET, sock->addr + SOCK_DMA_CONTROL); 597 writel(TIFM_DMA_RESET, sock->addr + SOCK_DMA_CONTROL);
604 if ((host->req->io_type == MEMSTICK_IO_SG) && !host->no_dma) 598 if (host->use_dma)
605 tifm_unmap_sg(sock, &host->req->sg, 1, 599 tifm_unmap_sg(sock, &host->req->sg, 1,
606 host->req->data_dir == READ 600 host->req->data_dir == READ
607 ? PCI_DMA_TODEVICE 601 ? PCI_DMA_TODEVICE
@@ -617,10 +611,6 @@ static void tifm_ms_remove(struct tifm_dev *sock)
617 spin_unlock_irqrestore(&sock->lock, flags); 611 spin_unlock_irqrestore(&sock->lock, flags);
618 612
619 memstick_remove_host(msh); 613 memstick_remove_host(msh);
620
621 writel(0x0200 | TIFM_MS_SYS_NOT_RDY, sock->addr + SOCK_MS_SYSTEM);
622 writel(0xffffffff, sock->addr + SOCK_MS_STATUS);
623
624 memstick_free_host(msh); 614 memstick_free_host(msh);
625} 615}
626 616
@@ -628,17 +618,17 @@ static void tifm_ms_remove(struct tifm_dev *sock)
628 618
629static int tifm_ms_suspend(struct tifm_dev *sock, pm_message_t state) 619static int tifm_ms_suspend(struct tifm_dev *sock, pm_message_t state)
630{ 620{
621 struct memstick_host *msh = tifm_get_drvdata(sock);
622
623 memstick_suspend_host(msh);
631 return 0; 624 return 0;
632} 625}
633 626
634static int tifm_ms_resume(struct tifm_dev *sock) 627static int tifm_ms_resume(struct tifm_dev *sock)
635{ 628{
636 struct memstick_host *msh = tifm_get_drvdata(sock); 629 struct memstick_host *msh = tifm_get_drvdata(sock);
637 struct tifm_ms *host = memstick_priv(msh);
638
639 tifm_ms_initialize_host(host);
640 memstick_detect_change(msh);
641 630
631 memstick_resume_host(msh);
642 return 0; 632 return 0;
643} 633}
644 634
@@ -679,7 +669,6 @@ MODULE_AUTHOR("Alex Dubov");
679MODULE_DESCRIPTION("TI FlashMedia MemoryStick driver"); 669MODULE_DESCRIPTION("TI FlashMedia MemoryStick driver");
680MODULE_LICENSE("GPL"); 670MODULE_LICENSE("GPL");
681MODULE_DEVICE_TABLE(tifm, tifm_ms_id_tbl); 671MODULE_DEVICE_TABLE(tifm, tifm_ms_id_tbl);
682MODULE_VERSION(DRIVER_VERSION);
683 672
684module_init(tifm_ms_init); 673module_init(tifm_ms_init);
685module_exit(tifm_ms_exit); 674module_exit(tifm_ms_exit);
diff --git a/drivers/misc/tifm_7xx1.c b/drivers/misc/tifm_7xx1.c
index 63a089b295..67503ea71d 100644
--- a/drivers/misc/tifm_7xx1.c
+++ b/drivers/misc/tifm_7xx1.c
@@ -368,6 +368,8 @@ static int tifm_7xx1_probe(struct pci_dev *dev,
368 goto err_out_irq; 368 goto err_out_irq;
369 369
370 writel(TIFM_IRQ_ENABLE | TIFM_IRQ_SOCKMASK((1 << fm->num_sockets) - 1), 370 writel(TIFM_IRQ_ENABLE | TIFM_IRQ_SOCKMASK((1 << fm->num_sockets) - 1),
371 fm->addr + FM_CLEAR_INTERRUPT_ENABLE);
372 writel(TIFM_IRQ_ENABLE | TIFM_IRQ_SOCKMASK((1 << fm->num_sockets) - 1),
371 fm->addr + FM_SET_INTERRUPT_ENABLE); 373 fm->addr + FM_SET_INTERRUPT_ENABLE);
372 return 0; 374 return 0;
373 375
diff --git a/drivers/serial/of_serial.c b/drivers/serial/of_serial.c
index a64d858219..c0e50a4610 100644
--- a/drivers/serial/of_serial.c
+++ b/drivers/serial/of_serial.c
@@ -138,7 +138,7 @@ static struct of_device_id __devinitdata of_platform_serial_table[] = {
138 { /* end of list */ }, 138 { /* end of list */ },
139}; 139};
140 140
141static struct of_platform_driver __devinitdata of_platform_serial_driver = { 141static struct of_platform_driver of_platform_serial_driver = {
142 .owner = THIS_MODULE, 142 .owner = THIS_MODULE,
143 .name = "of_serial", 143 .name = "of_serial",
144 .probe = of_platform_serial_probe, 144 .probe = of_platform_serial_probe,
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index 758435f8a6..e0b0580705 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -553,6 +553,19 @@ config FB_BF54X_LQ043
553 help 553 help
554 This is the framebuffer device driver for a SHARP LQ043T1DG01 TFT LCD 554 This is the framebuffer device driver for a SHARP LQ043T1DG01 TFT LCD
555 555
556config FB_BFIN_T350MCQB
557 tristate "Varitronix COG-T350MCQB TFT LCD display (BF527 EZKIT)"
558 depends on FB && BLACKFIN
559 select BFIN_GPTIMERS
560 select FB_CFB_FILLRECT
561 select FB_CFB_COPYAREA
562 select FB_CFB_IMAGEBLIT
563 help
564 This is the framebuffer device driver for a Varitronix VL-PS-COG-T350MCQB-01 display TFT LCD
565 This display is a QVGA 320x240 24-bit RGB display interfaced by an 8-bit wide PPI
566 It uses PPI[0..7] PPI_FS1, PPI_FS2 and PPI_CLK.
567
568
556config FB_STI 569config FB_STI
557 tristate "HP STI frame buffer device support" 570 tristate "HP STI frame buffer device support"
558 depends on FB && PARISC 571 depends on FB && PARISC
diff --git a/drivers/video/Makefile b/drivers/video/Makefile
index 83e02b3429..03371c7890 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
@@ -122,6 +122,7 @@ obj-$(CONFIG_FB_EFI) += efifb.o
122obj-$(CONFIG_FB_VGA16) += vga16fb.o 122obj-$(CONFIG_FB_VGA16) += vga16fb.o
123obj-$(CONFIG_FB_OF) += offb.o 123obj-$(CONFIG_FB_OF) += offb.o
124obj-$(CONFIG_FB_BF54X_LQ043) += bf54x-lq043fb.o 124obj-$(CONFIG_FB_BF54X_LQ043) += bf54x-lq043fb.o
125obj-$(CONFIG_FB_BFIN_T350MCQB) += bfin-t350mcqb-fb.o
125 126
126# the test framebuffer is last 127# the test framebuffer is last
127obj-$(CONFIG_FB_VIRTUAL) += vfb.o 128obj-$(CONFIG_FB_VIRTUAL) += vfb.o
diff --git a/drivers/video/bf54x-lq043fb.c b/drivers/video/bf54x-lq043fb.c
index 0ce791e6f7..986a550c04 100644
--- a/drivers/video/bf54x-lq043fb.c
+++ b/drivers/video/bf54x-lq043fb.c
@@ -8,7 +8,7 @@
8 * 8 *
9 * 9 *
10 * Modified: 10 * Modified:
11 * Copyright 2004-2007 Analog Devices Inc. 11 * Copyright 2007-2008 Analog Devices Inc.
12 * 12 *
13 * Bugs: Enter bugs at http://blackfin.uclinux.org/ 13 * Bugs: Enter bugs at http://blackfin.uclinux.org/
14 * 14 *
@@ -241,7 +241,7 @@ static int request_ports(struct bfin_bf54xfb_info *fbi)
241 u16 eppi_req_18[] = EPPI0_18; 241 u16 eppi_req_18[] = EPPI0_18;
242 u16 disp = fbi->mach_info->disp; 242 u16 disp = fbi->mach_info->disp;
243 243
244 if (gpio_request(disp, NULL)) { 244 if (gpio_request(disp, DRIVER_NAME)) {
245 printk(KERN_ERR "Requesting GPIO %d faild\n", disp); 245 printk(KERN_ERR "Requesting GPIO %d faild\n", disp);
246 return -EFAULT; 246 return -EFAULT;
247 } 247 }
@@ -672,7 +672,7 @@ static int __init bfin_bf54x_probe(struct platform_device *pdev)
672 &bfin_lq043fb_bl_ops); 672 &bfin_lq043fb_bl_ops);
673 bl_dev->props.max_brightness = 255; 673 bl_dev->props.max_brightness = 255;
674 674
675 lcd_dev = lcd_device_register(DRIVER_NAME, NULL, &bfin_lcd_ops); 675 lcd_dev = lcd_device_register(DRIVER_NAME, &pdev->dev, NULL, &bfin_lcd_ops);
676 lcd_dev->props.max_contrast = 255, printk(KERN_INFO "Done.\n"); 676 lcd_dev->props.max_contrast = 255, printk(KERN_INFO "Done.\n");
677#endif 677#endif
678 678
diff --git a/drivers/video/bfin-t350mcqb-fb.c b/drivers/video/bfin-t350mcqb-fb.c
new file mode 100644
index 0000000000..a2bb2de9e0
--- /dev/null
+++ b/drivers/video/bfin-t350mcqb-fb.c
@@ -0,0 +1,685 @@
1/*
2 * File: drivers/video/bfin-t350mcqb-fb.c
3 * Based on:
4 * Author: Michael Hennerich <hennerich@blackfin.uclinux.org>
5 *
6 * Created:
7 * Description: Blackfin LCD Framebufer driver
8 *
9 *
10 * Modified:
11 * Copyright 2004-2007 Analog Devices Inc.
12 *
13 * Bugs: Enter bugs at http://blackfin.uclinux.org/
14 *
15 * This program is free software; you can redistribute it and/or modify
16 * it under the terms of the GNU General Public License as published by
17 * the Free Software Foundation; either version 2 of the License, or
18 * (at your option) any later version.
19 *
20 * This program is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 * GNU General Public License for more details.
24 *
25 * You should have received a copy of the GNU General Public License
26 * along with this program; if not, see the file COPYING, or write
27 * to the Free Software Foundation, Inc.,
28 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
29 */
30
31#include <linux/module.h>
32#include <linux/kernel.h>
33#include <linux/errno.h>
34#include <linux/string.h>
35#include <linux/fb.h>
36#include <linux/init.h>
37#include <linux/types.h>
38#include <linux/interrupt.h>
39#include <linux/device.h>
40#include <linux/backlight.h>
41#include <linux/lcd.h>
42#include <linux/dma-mapping.h>
43#include <linux/platform_device.h>
44
45#include <asm/blackfin.h>
46#include <asm/irq.h>
47#include <asm/dma-mapping.h>
48#include <asm/dma.h>
49#include <asm/portmux.h>
50#include <asm/gptimers.h>
51
52#define NO_BL_SUPPORT
53
54#define LCD_X_RES 320 /* Horizontal Resolution */
55#define LCD_Y_RES 240 /* Vertical Resolution */
56#define LCD_BPP 24 /* Bit Per Pixel */
57
58#define DMA_BUS_SIZE 16
59#define LCD_CLK (12*1000*1000) /* 12MHz */
60
61#define CLOCKS_PER_PIX 3
62
63 /*
64 * HS and VS timing parameters (all in number of PPI clk ticks)
65 */
66
67#define U_LINE 1 /* Blanking Lines */
68
69#define H_ACTPIX (LCD_X_RES * CLOCKS_PER_PIX) /* active horizontal pixel */
70#define H_PERIOD (408 * CLOCKS_PER_PIX) /* HS period */
71#define H_PULSE 90 /* HS pulse width */
72#define H_START 204 /* first valid pixel */
73
74#define V_LINES (LCD_Y_RES + U_LINE) /* total vertical lines */
75#define V_PULSE (3 * H_PERIOD) /* VS pulse width (1-5 H_PERIODs) */
76#define V_PERIOD (H_PERIOD * V_LINES) /* VS period */
77
78#define ACTIVE_VIDEO_MEM_OFFSET (U_LINE * H_ACTPIX)
79
80#define BFIN_LCD_NBR_PALETTE_ENTRIES 256
81
82#define DRIVER_NAME "bfin-t350mcqb"
83static char driver_name[] = DRIVER_NAME;
84
85struct bfin_t350mcqbfb_info {
86 struct fb_info *fb;
87 struct device *dev;
88 unsigned char *fb_buffer; /* RGB Buffer */
89 dma_addr_t dma_handle;
90 int lq043_mmap;
91 int lq043_open_cnt;
92 int irq;
93 spinlock_t lock; /* lock */
94};
95
96static int nocursor;
97module_param(nocursor, int, 0644);
98MODULE_PARM_DESC(nocursor, "cursor enable/disable");
99
100#define PPI_TX_MODE 0x2
101#define PPI_XFER_TYPE_11 0xC
102#define PPI_PORT_CFG_01 0x10
103#define PPI_PACK_EN 0x80
104#define PPI_POLS_1 0x8000
105
106static void bfin_t350mcqb_config_ppi(struct bfin_t350mcqbfb_info *fbi)
107{
108 bfin_write_PPI_DELAY(H_START);
109 bfin_write_PPI_COUNT(H_ACTPIX-1);
110 bfin_write_PPI_FRAME(V_LINES);
111
112 bfin_write_PPI_CONTROL(PPI_TX_MODE | /* output mode , PORT_DIR */
113 PPI_XFER_TYPE_11 | /* sync mode XFR_TYPE */
114 PPI_PORT_CFG_01 | /* two frame sync PORT_CFG */
115 PPI_PACK_EN | /* packing enabled PACK_EN */
116 PPI_POLS_1); /* faling edge syncs POLS */
117}
118
119static inline void bfin_t350mcqb_disable_ppi(void)
120{
121 bfin_write_PPI_CONTROL(bfin_read_PPI_CONTROL() & ~PORT_EN);
122}
123
124static inline void bfin_t350mcqb_enable_ppi(void)
125{
126 bfin_write_PPI_CONTROL(bfin_read_PPI_CONTROL() | PORT_EN);
127}
128
129static void bfin_t350mcqb_start_timers(void)
130{
131 unsigned long flags;
132
133 local_irq_save(flags);
134 enable_gptimers(TIMER1bit);
135 enable_gptimers(TIMER0bit);
136 local_irq_restore(flags);
137}
138
139static void bfin_t350mcqb_stop_timers(void)
140{
141 disable_gptimers(TIMER0bit | TIMER1bit);
142
143 set_gptimer_status(0, TIMER_STATUS_TRUN0 | TIMER_STATUS_TRUN1 |
144 TIMER_STATUS_TIMIL0 | TIMER_STATUS_TIMIL1 |
145 TIMER_STATUS_TOVF0 | TIMER_STATUS_TOVF1);
146
147}
148
149static void bfin_t350mcqb_init_timers(void)
150{
151
152 bfin_t350mcqb_stop_timers();
153
154 set_gptimer_period(TIMER0_id, H_PERIOD);
155 set_gptimer_pwidth(TIMER0_id, H_PULSE);
156 set_gptimer_config(TIMER0_id, TIMER_MODE_PWM | TIMER_PERIOD_CNT |
157 TIMER_TIN_SEL | TIMER_CLK_SEL|
158 TIMER_EMU_RUN);
159
160 set_gptimer_period(TIMER1_id, V_PERIOD);
161 set_gptimer_pwidth(TIMER1_id, V_PULSE);
162 set_gptimer_config(TIMER1_id, TIMER_MODE_PWM | TIMER_PERIOD_CNT |
163 TIMER_TIN_SEL | TIMER_CLK_SEL |
164 TIMER_EMU_RUN);
165
166}
167
168static void bfin_t350mcqb_config_dma(struct bfin_t350mcqbfb_info *fbi)
169{
170
171 set_dma_config(CH_PPI,
172 set_bfin_dma_config(DIR_READ, DMA_FLOW_AUTO,
173 INTR_DISABLE, DIMENSION_2D,
174 DATA_SIZE_16,
175 DMA_NOSYNC_KEEP_DMA_BUF));
176 set_dma_x_count(CH_PPI, (LCD_X_RES * LCD_BPP) / DMA_BUS_SIZE);
177 set_dma_x_modify(CH_PPI, DMA_BUS_SIZE / 8);
178 set_dma_y_count(CH_PPI, V_LINES);
179
180 set_dma_y_modify(CH_PPI, DMA_BUS_SIZE / 8);
181 set_dma_start_addr(CH_PPI, (unsigned long)fbi->fb_buffer);
182
183}
184
185static int bfin_t350mcqb_request_ports(int action)
186{
187 u16 ppi0_req_8[] = {P_PPI0_CLK, P_PPI0_FS1, P_PPI0_FS2,
188 P_PPI0_D0, P_PPI0_D1, P_PPI0_D2,
189 P_PPI0_D3, P_PPI0_D4, P_PPI0_D5,
190 P_PPI0_D6, P_PPI0_D7, 0};
191
192 if (action) {
193 if (peripheral_request_list(ppi0_req_8, DRIVER_NAME)) {
194 printk(KERN_ERR "Requesting Peripherals faild\n");
195 return -EFAULT;
196 }
197 } else
198 peripheral_free_list(ppi0_req_8);
199
200 return 0;
201}
202
203static int bfin_t350mcqb_fb_open(struct fb_info *info, int user)
204{
205 struct bfin_t350mcqbfb_info *fbi = info->par;
206
207 spin_lock(&fbi->lock);
208 fbi->lq043_open_cnt++;
209
210 if (fbi->lq043_open_cnt <= 1) {
211
212 bfin_t350mcqb_disable_ppi();
213 SSYNC();
214
215 bfin_t350mcqb_config_dma(fbi);
216 bfin_t350mcqb_config_ppi(fbi);
217 bfin_t350mcqb_init_timers();
218
219 /* start dma */
220 enable_dma(CH_PPI);
221 bfin_t350mcqb_enable_ppi();
222 bfin_t350mcqb_start_timers();
223 }
224
225 spin_unlock(&fbi->lock);
226
227 return 0;
228}
229
230static int bfin_t350mcqb_fb_release(struct fb_info *info, int user)
231{
232 struct bfin_t350mcqbfb_info *fbi = info->par;
233
234 spin_lock(&fbi->lock);
235
236 fbi->lq043_open_cnt--;
237 fbi->lq043_mmap = 0;
238
239 if (fbi->lq043_open_cnt <= 0) {
240 bfin_t350mcqb_disable_ppi();
241 SSYNC();
242 disable_dma(CH_PPI);
243 bfin_t350mcqb_stop_timers();
244 memset(fbi->fb_buffer, 0, info->fix.smem_len);
245 }
246
247 spin_unlock(&fbi->lock);
248
249 return 0;
250}
251
252static int bfin_t350mcqb_fb_check_var(struct fb_var_screeninfo *var,
253 struct fb_info *info)
254{
255
256 if (var->bits_per_pixel != LCD_BPP) {
257 pr_debug("%s: depth not supported: %u BPP\n", __FUNCTION__,
258 var->bits_per_pixel);
259 return -EINVAL;
260 }
261
262 if (info->var.xres != var->xres || info->var.yres != var->yres ||
263 info->var.xres_virtual != var->xres_virtual ||
264 info->var.yres_virtual != var->yres_virtual) {
265 pr_debug("%s: Resolution not supported: X%u x Y%u \n",
266 __FUNCTION__, var->xres, var->yres);
267 return -EINVAL;
268 }
269
270 /*
271 * Memory limit
272 */
273
274 if ((info->fix.line_length * var->yres_virtual) > info->fix.smem_len) {
275 pr_debug("%s: Memory Limit requested yres_virtual = %u\n",
276 __FUNCTION__, var->yres_virtual);
277 return -ENOMEM;
278 }
279
280 return 0;
281}
282
283static int bfin_t350mcqb_fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
284{
285 struct bfin_t350mcqbfb_info *fbi = info->par;
286
287 if (fbi->lq043_mmap)
288 return -1;
289
290 spin_lock(&fbi->lock);
291 fbi->lq043_mmap = 1;
292 spin_unlock(&fbi->lock);
293
294 vma->vm_start = (unsigned long)(fbi->fb_buffer + ACTIVE_VIDEO_MEM_OFFSET);
295
296 vma->vm_end = vma->vm_start + info->fix.smem_len;
297 /* For those who don't understand how mmap works, go read
298 * Documentation/nommu-mmap.txt.
299 * For those that do, you will know that the VM_MAYSHARE flag
300 * must be set in the vma->vm_flags structure on noMMU
301 * Other flags can be set, and are documented in
302 * include/linux/mm.h
303 */
304 vma->vm_flags |= VM_MAYSHARE;
305
306 return 0;
307}
308
309int bfin_t350mcqb_fb_cursor(struct fb_info *info, struct fb_cursor *cursor)
310{
311 if (nocursor)
312 return 0;
313 else
314 return -EINVAL; /* just to force soft_cursor() call */
315}
316
317static int bfin_t350mcqb_fb_setcolreg(u_int regno, u_int red, u_int green,
318 u_int blue, u_int transp,
319 struct fb_info *info)
320{
321 if (regno >= BFIN_LCD_NBR_PALETTE_ENTRIES)
322 return -EINVAL;
323
324 if (info->var.grayscale) {
325 /* grayscale = 0.30*R + 0.59*G + 0.11*B */
326 red = green = blue = (red * 77 + green * 151 + blue * 28) >> 8;
327 }
328
329 if (info->fix.visual == FB_VISUAL_TRUECOLOR) {
330
331 u32 value;
332 /* Place color in the pseudopalette */
333 if (regno > 16)
334 return -EINVAL;
335
336 red >>= (16 - info->var.red.length);
337 green >>= (16 - info->var.green.length);
338 blue >>= (16 - info->var.blue.length);
339
340 value = (red << info->var.red.offset) |
341 (green << info->var.green.offset) |
342 (blue << info->var.blue.offset);
343 value &= 0xFFFFFF;
344
345 ((u32 *) (info->pseudo_palette))[regno] = value;
346
347 }
348
349 return 0;
350}
351
352static struct fb_ops bfin_t350mcqb_fb_ops = {
353 .owner = THIS_MODULE,
354 .fb_open = bfin_t350mcqb_fb_open,
355 .fb_release = bfin_t350mcqb_fb_release,
356 .fb_check_var = bfin_t350mcqb_fb_check_var,
357 .fb_fillrect = cfb_fillrect,
358 .fb_copyarea = cfb_copyarea,
359 .fb_imageblit = cfb_imageblit,
360 .fb_mmap = bfin_t350mcqb_fb_mmap,
361 .fb_cursor = bfin_t350mcqb_fb_cursor,
362 .fb_setcolreg = bfin_t350mcqb_fb_setcolreg,
363};
364
365#ifndef NO_BL_SUPPORT
366static int bl_get_brightness(struct backlight_device *bd)
367{
368 return 0;
369}
370
371static struct backlight_ops bfin_lq043fb_bl_ops = {
372 .get_brightness = bl_get_brightness,
373};
374
375static struct backlight_device *bl_dev;
376
377static int bfin_lcd_get_power(struct lcd_device *dev)
378{
379 return 0;
380}
381
382static int bfin_lcd_set_power(struct lcd_device *dev, int power)
383{
384 return 0;
385}
386
387static int bfin_lcd_get_contrast(struct lcd_device *dev)
388{
389 return 0;
390}
391
392static int bfin_lcd_set_contrast(struct lcd_device *dev, int contrast)
393{
394
395 return 0;
396}
397
398static int bfin_lcd_check_fb(struct fb_info *fi)
399{
400 if (!fi || (fi == &bfin_t350mcqb_fb))
401 return 1;
402 return 0;
403}
404
405static struct lcd_ops bfin_lcd_ops = {
406 .get_power = bfin_lcd_get_power,
407 .set_power = bfin_lcd_set_power,
408 .get_contrast = bfin_lcd_get_contrast,
409 .set_contrast = bfin_lcd_set_contrast,
410 .check_fb = bfin_lcd_check_fb,
411};
412
413static struct lcd_device *lcd_dev;
414#endif
415
416static irqreturn_t bfin_t350mcqb_irq_error(int irq, void *dev_id)
417{
418 /*struct bfin_t350mcqbfb_info *info = (struct bfin_t350mcqbfb_info *)dev_id;*/
419
420 u16 status = bfin_read_PPI_STATUS();
421 bfin_write_PPI_STATUS(0xFFFF);
422
423 if (status) {
424 bfin_t350mcqb_disable_ppi();
425 disable_dma(CH_PPI);
426
427 /* start dma */
428 enable_dma(CH_PPI);
429 bfin_t350mcqb_enable_ppi();
430 bfin_write_PPI_STATUS(0xFFFF);
431 }
432
433 return IRQ_HANDLED;
434}
435
436static int __init bfin_t350mcqb_probe(struct platform_device *pdev)
437{
438 struct bfin_t350mcqbfb_info *info;
439 struct fb_info *fbinfo;
440 int ret;
441
442 printk(KERN_INFO DRIVER_NAME ": %dx%d %d-bit RGB FrameBuffer initializing...\n",
443 LCD_X_RES, LCD_Y_RES, LCD_BPP);
444
445 if (request_dma(CH_PPI, "CH_PPI") < 0) {
446 printk(KERN_ERR DRIVER_NAME
447 ": couldn't request CH_PPI DMA\n");
448 ret = -EFAULT;
449 goto out1;
450 }
451
452 fbinfo =
453 framebuffer_alloc(sizeof(struct bfin_t350mcqbfb_info), &pdev->dev);
454 if (!fbinfo) {
455 ret = -ENOMEM;
456 goto out2;
457 }
458
459 info = fbinfo->par;
460 info->fb = fbinfo;
461 info->dev = &pdev->dev;
462
463 platform_set_drvdata(pdev, fbinfo);
464
465 strcpy(fbinfo->fix.id, driver_name);
466
467 fbinfo->fix.type = FB_TYPE_PACKED_PIXELS;
468 fbinfo->fix.type_aux = 0;
469 fbinfo->fix.xpanstep = 0;
470 fbinfo->fix.ypanstep = 0;
471 fbinfo->fix.ywrapstep = 0;
472 fbinfo->fix.accel = FB_ACCEL_NONE;
473 fbinfo->fix.visual = FB_VISUAL_TRUECOLOR;
474
475 fbinfo->var.nonstd = 0;
476 fbinfo->var.activate = FB_ACTIVATE_NOW;
477 fbinfo->var.height = -1;
478 fbinfo->var.width = -1;
479 fbinfo->var.accel_flags = 0;
480 fbinfo->var.vmode = FB_VMODE_NONINTERLACED;
481
482 fbinfo->var.xres = LCD_X_RES;
483 fbinfo->var.xres_virtual = LCD_X_RES;
484 fbinfo->var.yres = LCD_Y_RES;
485 fbinfo->var.yres_virtual = LCD_Y_RES;
486 fbinfo->var.bits_per_pixel = LCD_BPP;
487
488 fbinfo->var.red.offset = 0;
489 fbinfo->var.green.offset = 8;
490 fbinfo->var.blue.offset = 16;
491 fbinfo->var.transp.offset = 0;
492 fbinfo->var.red.length = 8;
493 fbinfo->var.green.length = 8;
494 fbinfo->var.blue.length = 8;
495 fbinfo->var.transp.length = 0;
496 fbinfo->fix.smem_len = LCD_X_RES * LCD_Y_RES * LCD_BPP / 8;
497
498 fbinfo->fix.line_length = fbinfo->var.xres_virtual *
499 fbinfo->var.bits_per_pixel / 8;
500
501
502 fbinfo->fbops = &bfin_t350mcqb_fb_ops;
503 fbinfo->flags = FBINFO_FLAG_DEFAULT;
504
505 info->fb_buffer =
506 dma_alloc_coherent(NULL, fbinfo->fix.smem_len, &info->dma_handle,
507 GFP_KERNEL);
508
509 if (NULL == info->fb_buffer) {
510 printk(KERN_ERR DRIVER_NAME
511 ": couldn't allocate dma buffer.\n");
512 ret = -ENOMEM;
513 goto out3;
514 }
515
516 memset(info->fb_buffer, 0, fbinfo->fix.smem_len);
517
518 fbinfo->screen_base = (void *)info->fb_buffer + ACTIVE_VIDEO_MEM_OFFSET;
519 fbinfo->fix.smem_start = (int)info->fb_buffer + ACTIVE_VIDEO_MEM_OFFSET;
520
521 fbinfo->fbops = &bfin_t350mcqb_fb_ops;
522
523 fbinfo->pseudo_palette = kmalloc(sizeof(u32) * 16, GFP_KERNEL);
524 if (!fbinfo->pseudo_palette) {
525 printk(KERN_ERR DRIVER_NAME
526 "Fail to allocate pseudo_palette\n");
527
528 ret = -ENOMEM;
529 goto out4;
530 }
531
532 memset(fbinfo->pseudo_palette, 0, sizeof(u32) * 16);
533
534 if (fb_alloc_cmap(&fbinfo->cmap, BFIN_LCD_NBR_PALETTE_ENTRIES, 0)
535 < 0) {
536 printk(KERN_ERR DRIVER_NAME
537 "Fail to allocate colormap (%d entries)\n",
538 BFIN_LCD_NBR_PALETTE_ENTRIES);
539 ret = -EFAULT;
540 goto out5;
541 }
542
543 if (bfin_t350mcqb_request_ports(1)) {
544 printk(KERN_ERR DRIVER_NAME ": couldn't request gpio port.\n");
545 ret = -EFAULT;
546 goto out6;
547 }
548
549 info->irq = platform_get_irq(pdev, 0);
550 if (info->irq < 0) {
551 ret = -EINVAL;
552 goto out7;
553 }
554
555 if (request_irq(info->irq, (void *)bfin_t350mcqb_irq_error, IRQF_DISABLED,
556 "PPI ERROR", info) < 0) {
557 printk(KERN_ERR DRIVER_NAME
558 ": unable to request PPI ERROR IRQ\n");
559 ret = -EFAULT;
560 goto out7;
561 }
562
563 if (register_framebuffer(fbinfo) < 0) {
564 printk(KERN_ERR DRIVER_NAME
565 ": unable to register framebuffer.\n");
566 ret = -EINVAL;
567 goto out8;
568 }
569#ifndef NO_BL_SUPPORT
570 bl_dev =
571 backlight_device_register("bf52x-bl", NULL, NULL,
572 &bfin_lq043fb_bl_ops);
573 bl_dev->props.max_brightness = 255;
574
575 lcd_dev = lcd_device_register(DRIVER_NAME, NULL, &bfin_lcd_ops);
576 lcd_dev->props.max_contrast = 255, printk(KERN_INFO "Done.\n");
577#endif
578
579 return 0;
580
581out8:
582 free_irq(info->irq, info);
583out7:
584 bfin_t350mcqb_request_ports(0);
585out6:
586 fb_dealloc_cmap(&fbinfo->cmap);
587out5:
588 kfree(fbinfo->pseudo_palette);
589out4:
590 dma_free_coherent(NULL, fbinfo->fix.smem_len, info->fb_buffer,
591 info->dma_handle);
592out3:
593 framebuffer_release(fbinfo);
594out2:
595 free_dma(CH_PPI);
596out1:
597 platform_set_drvdata(pdev, NULL);
598
599 return ret;
600}
601
602static int bfin_t350mcqb_remove(struct platform_device *pdev)
603{
604
605 struct fb_info *fbinfo = platform_get_drvdata(pdev);
606 struct bfin_t350mcqbfb_info *info = fbinfo->par;
607
608 free_dma(CH_PPI);
609 free_irq(info->irq, info);
610
611 if (info->fb_buffer != NULL)
612 dma_free_coherent(NULL, fbinfo->fix.smem_len, info->fb_buffer,
613 info->dma_handle);
614
615 kfree(fbinfo->pseudo_palette);
616 fb_dealloc_cmap(&fbinfo->cmap);
617
618#ifndef NO_BL_SUPPORT
619 lcd_device_unregister(lcd_dev);
620 backlight_device_unregister(bl_dev);
621#endif
622
623 unregister_framebuffer(fbinfo);
624
625 bfin_t350mcqb_request_ports(0);
626
627 printk(KERN_INFO DRIVER_NAME ": Unregister LCD driver.\n");
628
629 return 0;
630}
631
632#ifdef CONFIG_PM
633static int bfin_t350mcqb_suspend(struct platform_device *pdev, pm_message_t state)
634{
635 struct fb_info *fbinfo = platform_get_drvdata(pdev);
636 struct bfin_t350mcqbfb_info *info = fbinfo->par;
637
638 bfin_t350mcqb_disable_ppi();
639 disable_dma(CH_PPI);
640 bfin_write_PPI_STATUS(0xFFFF);
641
642 return 0;
643}
644
645static int bfin_t350mcqb_resume(struct platform_device *pdev)
646{
647 struct fb_info *fbinfo = platform_get_drvdata(pdev);
648 struct bfin_t350mcqbfb_info *info = fbinfo->par;
649
650 enable_dma(CH_PPI);
651 bfin_t350mcqb_enable_ppi();
652
653 return 0;
654}
655#else
656#define bfin_t350mcqb_suspend NULL
657#define bfin_t350mcqb_resume NULL
658#endif
659
660static struct platform_driver bfin_t350mcqb_driver = {
661 .probe = bfin_t350mcqb_probe,
662 .remove = bfin_t350mcqb_remove,
663 .suspend = bfin_t350mcqb_suspend,
664 .resume = bfin_t350mcqb_resume,
665 .driver = {
666 .name = DRIVER_NAME,
667 .owner = THIS_MODULE,
668 },
669};
670
671static int __devinit bfin_t350mcqb_driver_init(void)
672{
673 return platform_driver_register(&bfin_t350mcqb_driver);
674}
675
676static void __exit bfin_t350mcqb_driver_cleanup(void)
677{
678 platform_driver_unregister(&bfin_t350mcqb_driver);
679}
680
681MODULE_DESCRIPTION("Blackfin TFT LCD Driver");
682MODULE_LICENSE("GPL");
683
684module_init(bfin_t350mcqb_driver_init);
685module_exit(bfin_t350mcqb_driver_cleanup);
diff --git a/drivers/video/hitfb.c b/drivers/video/hitfb.c
index 756c0ce859..392a8be6aa 100644
--- a/drivers/video/hitfb.c
+++ b/drivers/video/hitfb.c
@@ -403,7 +403,7 @@ static int __init hitfb_probe(struct platform_device *dev)
403 return 0; 403 return 0;
404} 404}
405 405
406static int __devexit hitfb_remove(struct platform_device *dev) 406static int __exit hitfb_remove(struct platform_device *dev)
407{ 407{
408 return unregister_framebuffer(&fb_info); 408 return unregister_framebuffer(&fb_info);
409} 409}
@@ -439,7 +439,7 @@ static int hitfb_resume(struct platform_device *dev)
439 439
440static struct platform_driver hitfb_driver = { 440static struct platform_driver hitfb_driver = {
441 .probe = hitfb_probe, 441 .probe = hitfb_probe,
442 .remove = __devexit_p(hitfb_remove), 442 .remove = __exit_p(hitfb_remove),
443#ifdef CONFIG_PM 443#ifdef CONFIG_PM
444 .suspend = hitfb_suspend, 444 .suspend = hitfb_suspend,
445 .resume = hitfb_resume, 445 .resume = hitfb_resume,
diff --git a/drivers/video/mbx/mbxfb.c b/drivers/video/mbx/mbxfb.c
index 80cd117ca6..01f77bcc68 100644
--- a/drivers/video/mbx/mbxfb.c
+++ b/drivers/video/mbx/mbxfb.c
@@ -889,7 +889,7 @@ static int __devinit mbxfb_probe(struct platform_device *dev)
889 struct mbxfb_info *mfbi; 889 struct mbxfb_info *mfbi;
890 struct mbxfb_platform_data *pdata; 890 struct mbxfb_platform_data *pdata;
891 891
892 dev_dbg(dev, "mbxfb_probe\n"); 892 dev_dbg(&dev->dev, "mbxfb_probe\n");
893 893
894 pdata = dev->dev.platform_data; 894 pdata = dev->dev.platform_data;
895 if (!pdata) { 895 if (!pdata) {
diff --git a/drivers/video/pvr2fb.c b/drivers/video/pvr2fb.c
index 6a3d0b5748..8c863a7f65 100644
--- a/drivers/video/pvr2fb.c
+++ b/drivers/video/pvr2fb.c
@@ -1,16 +1,12 @@
1/* drivers/video/pvr2fb.c 1/*
2 * drivers/video/pvr2fb.c
2 * 3 *
3 * Frame buffer and fbcon support for the NEC PowerVR2 found within the Sega 4 * Frame buffer and fbcon support for the NEC PowerVR2 found within the Sega
4 * Dreamcast. 5 * Dreamcast.
5 * 6 *
6 * Copyright (c) 2001 M. R. Brown <mrbrown@0xd6.org> 7 * Copyright (c) 2001 M. R. Brown <mrbrown@0xd6.org>
7 * Copyright (c) 2001, 2002, 2003, 2004, 2005 Paul Mundt <lethal@linux-sh.org> 8 * Copyright (c) 2001 - 2008 Paul Mundt <lethal@linux-sh.org>
8 *
9 * This file is part of the LinuxDC project (linuxdc.sourceforge.net).
10 * 9 *
11 */
12
13/*
14 * This driver is mostly based on the excellent amifb and vfb sources. It uses 10 * This driver is mostly based on the excellent amifb and vfb sources. It uses
15 * an odd scheme for converting hardware values to/from framebuffer values, 11 * an odd scheme for converting hardware values to/from framebuffer values,
16 * here are some hacked-up formulas: 12 * here are some hacked-up formulas:
@@ -490,7 +486,7 @@ static int pvr2fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
490 } else { 486 } else {
491 var->sync &= ~FB_SYNC_BROADCAST; 487 var->sync &= ~FB_SYNC_BROADCAST;
492 var->vmode &= ~FB_VMODE_INTERLACED; 488 var->vmode &= ~FB_VMODE_INTERLACED;
493 var->vmode |= pvr2_var.vmode; 489 var->vmode |= FB_VMODE_NONINTERLACED;
494 } 490 }
495 491
496 if ((var->activate & FB_ACTIVATE_MASK) != FB_ACTIVATE_TEST) { 492 if ((var->activate & FB_ACTIVATE_MASK) != FB_ACTIVATE_TEST) {
diff --git a/drivers/video/stifb.c b/drivers/video/stifb.c
index e7c8db2eb4..f98be30114 100644
--- a/drivers/video/stifb.c
+++ b/drivers/video/stifb.c
@@ -505,16 +505,24 @@ ngleSetupAttrPlanes(struct stifb_info *fb, int BufferNumber)
505static void 505static void
506rattlerSetupPlanes(struct stifb_info *fb) 506rattlerSetupPlanes(struct stifb_info *fb)
507{ 507{
508 int saved_id, y;
509
510 /* Write RAMDAC pixel read mask register so all overlay
511 * planes are display-enabled. (CRX24 uses Bt462 pixel
512 * read mask register for overlay planes, not image planes).
513 */
508 CRX24_SETUP_RAMDAC(fb); 514 CRX24_SETUP_RAMDAC(fb);
509 515
510 /* replacement for: SETUP_FB(fb, CRX24_OVERLAY_PLANES); */ 516 /* change fb->id temporarily to fool SETUP_FB() */
511 WRITE_WORD(0x83000300, fb, REG_14); 517 saved_id = fb->id;
512 SETUP_HW(fb); 518 fb->id = CRX24_OVERLAY_PLANES;
513 WRITE_BYTE(1, fb, REG_16b1); 519 SETUP_FB(fb);
520 fb->id = saved_id;
521
522 for (y = 0; y < fb->info.var.yres; ++y)
523 memset(fb->info.screen_base + y * fb->info.fix.line_length,
524 0xff, fb->info.var.xres * fb->info.var.bits_per_pixel/8);
514 525
515 fb_memset((void*)fb->info.fix.smem_start, 0xff,
516 fb->info.var.yres*fb->info.fix.line_length);
517
518 CRX24_SET_OVLY_MASK(fb); 526 CRX24_SET_OVLY_MASK(fb);
519 SETUP_FB(fb); 527 SETUP_FB(fb);
520} 528}
diff --git a/drivers/video/tridentfb.c b/drivers/video/tridentfb.c
index 919ce75db9..0a4e07d43d 100644
--- a/drivers/video/tridentfb.c
+++ b/drivers/video/tridentfb.c
@@ -566,44 +566,32 @@ static inline void write3CE(int reg, unsigned char val)
566 566
567static void enable_mmio(void) 567static void enable_mmio(void)
568{ 568{
569 unsigned char tmp;
570
571 /* Goto New Mode */ 569 /* Goto New Mode */
572 outb(0x0B, 0x3C4); 570 outb(0x0B, 0x3C4);
573 inb(0x3C5); 571 inb(0x3C5);
574 572
575 /* Unprotect registers */ 573 /* Unprotect registers */
576 outb(NewMode1, 0x3C4); 574 outb(NewMode1, 0x3C4);
577 tmp = inb(0x3C5);
578 outb(0x80, 0x3C5); 575 outb(0x80, 0x3C5);
579 576
580 /* Enable MMIO */ 577 /* Enable MMIO */
581 outb(PCIReg, 0x3D4); 578 outb(PCIReg, 0x3D4);
582 outb(inb(0x3D5) | 0x01, 0x3D5); 579 outb(inb(0x3D5) | 0x01, 0x3D5);
583
584 t_outb(NewMode1, 0x3C4);
585 t_outb(tmp, 0x3C5);
586} 580}
587 581
588static void disable_mmio(void) 582static void disable_mmio(void)
589{ 583{
590 unsigned char tmp;
591
592 /* Goto New Mode */ 584 /* Goto New Mode */
593 t_outb(0x0B, 0x3C4); 585 t_outb(0x0B, 0x3C4);
594 t_inb(0x3C5); 586 t_inb(0x3C5);
595 587
596 /* Unprotect registers */ 588 /* Unprotect registers */
597 t_outb(NewMode1, 0x3C4); 589 t_outb(NewMode1, 0x3C4);
598 tmp = t_inb(0x3C5);
599 t_outb(0x80, 0x3C5); 590 t_outb(0x80, 0x3C5);
600 591
601 /* Disable MMIO */ 592 /* Disable MMIO */
602 t_outb(PCIReg, 0x3D4); 593 t_outb(PCIReg, 0x3D4);
603 t_outb(t_inb(0x3D5) & ~0x01, 0x3D5); 594 t_outb(t_inb(0x3D5) & ~0x01, 0x3D5);
604
605 outb(NewMode1, 0x3C4);
606 outb(tmp, 0x3C5);
607} 595}
608 596
609#define crtc_unlock() write3X4(CRTVSyncEnd, read3X4(CRTVSyncEnd) & 0x7F) 597#define crtc_unlock() write3X4(CRTVSyncEnd, read3X4(CRTVSyncEnd) & 0x7F)
@@ -757,7 +745,7 @@ static unsigned int __devinit get_memsize(void)
757 switch (tmp) { 745 switch (tmp) {
758 746
759 case 0x01: 747 case 0x01:
760 k = 512; 748 k = 512 * Kb;
761 break; 749 break;
762 case 0x02: 750 case 0x02:
763 k = 6 * Mb; /* XP */ 751 k = 6 * Mb; /* XP */
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index ae04892a5e..6cea7479c5 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -710,6 +710,8 @@ int nfs_lookup_verify_inode(struct inode *inode, struct nameidata *nd)
710{ 710{
711 struct nfs_server *server = NFS_SERVER(inode); 711 struct nfs_server *server = NFS_SERVER(inode);
712 712
713 if (test_bit(NFS_INO_MOUNTPOINT, &NFS_I(inode)->flags))
714 return 0;
713 if (nd != NULL) { 715 if (nd != NULL) {
714 /* VFS wants an on-the-wire revalidation */ 716 /* VFS wants an on-the-wire revalidation */
715 if (nd->flags & LOOKUP_REVAL) 717 if (nd->flags & LOOKUP_REVAL)
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
index 966a8850aa..a4c7cf2bff 100644
--- a/fs/nfs/inode.c
+++ b/fs/nfs/inode.c
@@ -299,6 +299,7 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr)
299 else 299 else
300 inode->i_op = &nfs_mountpoint_inode_operations; 300 inode->i_op = &nfs_mountpoint_inode_operations;
301 inode->i_fop = NULL; 301 inode->i_fop = NULL;
302 set_bit(NFS_INO_MOUNTPOINT, &nfsi->flags);
302 } 303 }
303 } else if (S_ISLNK(inode->i_mode)) 304 } else if (S_ISLNK(inode->i_mode))
304 inode->i_op = &nfs_symlink_inode_operations; 305 inode->i_op = &nfs_symlink_inode_operations;
@@ -1003,8 +1004,9 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr)
1003 1004
1004 server = NFS_SERVER(inode); 1005 server = NFS_SERVER(inode);
1005 /* Update the fsid? */ 1006 /* Update the fsid? */
1006 if (S_ISDIR(inode->i_mode) 1007 if (S_ISDIR(inode->i_mode) &&
1007 && !nfs_fsid_equal(&server->fsid, &fattr->fsid)) 1008 !nfs_fsid_equal(&server->fsid, &fattr->fsid) &&
1009 !test_bit(NFS_INO_MOUNTPOINT, &nfsi->flags))
1008 server->fsid = fattr->fsid; 1010 server->fsid = fattr->fsid;
1009 1011
1010 /* 1012 /*
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index f55c437124..80c61fdb27 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -734,7 +734,7 @@ int nfs_updatepage(struct file *file, struct page *page,
734 */ 734 */
735 if (nfs_write_pageuptodate(page, inode) && 735 if (nfs_write_pageuptodate(page, inode) &&
736 inode->i_flock == NULL && 736 inode->i_flock == NULL &&
737 !(file->f_mode & O_SYNC)) { 737 !(file->f_flags & O_SYNC)) {
738 count = max(count + offset, nfs_page_length(page)); 738 count = max(count + offset, nfs_page_length(page));
739 offset = 0; 739 offset = 0;
740 } 740 }
diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c
index f01b07687f..8e09b71f41 100644
--- a/fs/xfs/xfs_iget.c
+++ b/fs/xfs/xfs_iget.c
@@ -235,6 +235,7 @@ finish_inode:
235 */ 235 */
236 new_icl = kmem_zone_alloc(xfs_icluster_zone, KM_SLEEP); 236 new_icl = kmem_zone_alloc(xfs_icluster_zone, KM_SLEEP);
237 if (radix_tree_preload(GFP_KERNEL)) { 237 if (radix_tree_preload(GFP_KERNEL)) {
238 xfs_idestroy(ip);
238 delay(1); 239 delay(1);
239 goto again; 240 goto again;
240 } 241 }
diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c
index 4d6330eddc..76d470d8a1 100644
--- a/fs/xfs/xfs_trans_ail.c
+++ b/fs/xfs/xfs_trans_ail.c
@@ -261,16 +261,19 @@ xfsaild_push(
261 xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE); 261 xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE);
262 } 262 }
263 263
264 /* 264 if (!count) {
265 * We reached the target so wait a bit longer for I/O to complete and 265 /* We're past our target or empty, so idle */
266 * remove pushed items from the AIL before we start the next scan from 266 tout = 1000;
267 * the start of the AIL. 267 } else if (XFS_LSN_CMP(lsn, target) >= 0) {
268 */ 268 /*
269 if ((XFS_LSN_CMP(lsn, target) >= 0)) { 269 * We reached the target so wait a bit longer for I/O to
270 * complete and remove pushed items from the AIL before we
271 * start the next scan from the start of the AIL.
272 */
270 tout += 20; 273 tout += 20;
271 last_pushed_lsn = 0; 274 last_pushed_lsn = 0;
272 } else if ((restarts > XFS_TRANS_PUSH_AIL_RESTARTS) || 275 } else if ((restarts > XFS_TRANS_PUSH_AIL_RESTARTS) ||
273 (count && ((stuck * 100) / count > 90))) { 276 ((stuck * 100) / count > 90)) {
274 /* 277 /*
275 * Either there is a lot of contention on the AIL or we 278 * Either there is a lot of contention on the AIL or we
276 * are stuck due to operations in progress. "Stuck" in this 279 * are stuck due to operations in progress. "Stuck" in this
diff --git a/include/asm-blackfin/mmu_context.h b/include/asm-blackfin/mmu_context.h
index b5eb67596a..f55ec3c23a 100644
--- a/include/asm-blackfin/mmu_context.h
+++ b/include/asm-blackfin/mmu_context.h
@@ -73,7 +73,7 @@ static inline void destroy_context(struct mm_struct *mm)
73 struct sram_list_struct *tmp; 73 struct sram_list_struct *tmp;
74 74
75 if (current_l1_stack_save == mm->context.l1_stack_save) 75 if (current_l1_stack_save == mm->context.l1_stack_save)
76 current_l1_stack_save = 0; 76 current_l1_stack_save = NULL;
77 if (mm->context.l1_stack_save) 77 if (mm->context.l1_stack_save)
78 free_l1stack(); 78 free_l1stack();
79 79
diff --git a/include/asm-blackfin/unistd.h b/include/asm-blackfin/unistd.h
index e98167358d..c18a399f6e 100644
--- a/include/asm-blackfin/unistd.h
+++ b/include/asm-blackfin/unistd.h
@@ -361,7 +361,7 @@
361#define __NR_epoll_pwait 346 361#define __NR_epoll_pwait 346
362#define __NR_utimensat 347 362#define __NR_utimensat 347
363#define __NR_signalfd 348 363#define __NR_signalfd 348
364#define __NR_timerfd 349 364#define __NR_timerfd_create 349
365#define __NR_eventfd 350 365#define __NR_eventfd 350
366#define __NR_pread64 351 366#define __NR_pread64 351
367#define __NR_pwrite64 352 367#define __NR_pwrite64 352
@@ -370,8 +370,10 @@
370#define __NR_get_robust_list 355 370#define __NR_get_robust_list 355
371#define __NR_fallocate 356 371#define __NR_fallocate 356
372#define __NR_semtimedop 357 372#define __NR_semtimedop 357
373#define __NR_timerfd_settime 358
374#define __NR_timerfd_gettime 359
373 375
374#define __NR_syscall 358 376#define __NR_syscall 360
375#define NR_syscalls __NR_syscall 377#define NR_syscalls __NR_syscall
376 378
377/* Old optional stuff no one actually uses */ 379/* Old optional stuff no one actually uses */
diff --git a/include/asm-ia64/kprobes.h b/include/asm-ia64/kprobes.h
index 8233b3a964..d03bf9ff68 100644
--- a/include/asm-ia64/kprobes.h
+++ b/include/asm-ia64/kprobes.h
@@ -117,7 +117,7 @@ struct arch_specific_insn {
117 unsigned short slot; 117 unsigned short slot;
118}; 118};
119 119
120extern int kprobes_fault_handler(struct pt_regs *regs, int trapnr); 120extern int kprobe_fault_handler(struct pt_regs *regs, int trapnr);
121extern int kprobe_exceptions_notify(struct notifier_block *self, 121extern int kprobe_exceptions_notify(struct notifier_block *self,
122 unsigned long val, void *data); 122 unsigned long val, void *data);
123 123
diff --git a/include/asm-ia64/ptrace.h b/include/asm-ia64/ptrace.h
index 0bdce7dde1..4b2a8d40eb 100644
--- a/include/asm-ia64/ptrace.h
+++ b/include/asm-ia64/ptrace.h
@@ -233,8 +233,6 @@ struct switch_stack {
233#include <asm/current.h> 233#include <asm/current.h>
234#include <asm/page.h> 234#include <asm/page.h>
235 235
236#define __ARCH_SYS_PTRACE 1
237
238/* 236/*
239 * We use the ia64_psr(regs)->ri to determine which of the three 237 * We use the ia64_psr(regs)->ri to determine which of the three
240 * instructions in bundle (16 bytes) took the sample. Generate 238 * instructions in bundle (16 bytes) took the sample. Generate
@@ -314,6 +312,13 @@ struct switch_stack {
314 #define arch_ptrace_attach(child) \ 312 #define arch_ptrace_attach(child) \
315 ptrace_attach_sync_user_rbs(child) 313 ptrace_attach_sync_user_rbs(child)
316 314
315 #define arch_has_single_step() (1)
316 extern void user_enable_single_step(struct task_struct *);
317 extern void user_disable_single_step(struct task_struct *);
318
319 #define arch_has_block_step() (1)
320 extern void user_enable_block_step(struct task_struct *);
321
317#endif /* !__KERNEL__ */ 322#endif /* !__KERNEL__ */
318 323
319/* pt_all_user_regs is used for PTRACE_GETREGS PTRACE_SETREGS */ 324/* pt_all_user_regs is used for PTRACE_GETREGS PTRACE_SETREGS */
diff --git a/include/asm-mn10300/Kbuild b/include/asm-mn10300/Kbuild
index 79384c537d..c68e1680da 100644
--- a/include/asm-mn10300/Kbuild
+++ b/include/asm-mn10300/Kbuild
@@ -1,5 +1 @@
1include include/asm-generic/Kbuild.asm include include/asm-generic/Kbuild.asm
2
3unifdef-y += termios.h
4unifdef-y += ptrace.h
5unifdef-y += page.h
diff --git a/include/asm-sh/delay.h b/include/asm-sh/delay.h
index d5d4640410..4b16bf9b56 100644
--- a/include/asm-sh/delay.h
+++ b/include/asm-sh/delay.h
@@ -15,7 +15,6 @@ extern void __ndelay(unsigned long nsecs);
15extern void __const_udelay(unsigned long xloops); 15extern void __const_udelay(unsigned long xloops);
16extern void __delay(unsigned long loops); 16extern void __delay(unsigned long loops);
17 17
18#ifdef CONFIG_SUPERH32
19#define udelay(n) (__builtin_constant_p(n) ? \ 18#define udelay(n) (__builtin_constant_p(n) ? \
20 ((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c6ul)) : \ 19 ((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c6ul)) : \
21 __udelay(n)) 20 __udelay(n))
@@ -23,9 +22,5 @@ extern void __delay(unsigned long loops);
23#define ndelay(n) (__builtin_constant_p(n) ? \ 22#define ndelay(n) (__builtin_constant_p(n) ? \
24 ((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) : \ 23 ((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) : \
25 __ndelay(n)) 24 __ndelay(n))
26#else
27extern void udelay(unsigned long usecs);
28extern void ndelay(unsigned long nsecs);
29#endif
30 25
31#endif /* __ASM_SH_DELAY_H */ 26#endif /* __ASM_SH_DELAY_H */
diff --git a/include/asm-x86/Kbuild b/include/asm-x86/Kbuild
index b04a7ff46d..3b8160a2b4 100644
--- a/include/asm-x86/Kbuild
+++ b/include/asm-x86/Kbuild
@@ -16,7 +16,6 @@ unifdef-y += ist.h
16unifdef-y += mce.h 16unifdef-y += mce.h
17unifdef-y += msr.h 17unifdef-y += msr.h
18unifdef-y += mtrr.h 18unifdef-y += mtrr.h
19unifdef-y += page.h
20unifdef-y += posix_types_32.h 19unifdef-y += posix_types_32.h
21unifdef-y += posix_types_64.h 20unifdef-y += posix_types_64.h
22unifdef-y += ptrace.h 21unifdef-y += ptrace.h
diff --git a/include/crypto/internal/skcipher.h b/include/crypto/internal/skcipher.h
index 2ba42cd7d6..ccc32bad9a 100644
--- a/include/crypto/internal/skcipher.h
+++ b/include/crypto/internal/skcipher.h
@@ -15,6 +15,7 @@
15 15
16#include <crypto/algapi.h> 16#include <crypto/algapi.h>
17#include <crypto/skcipher.h> 17#include <crypto/skcipher.h>
18#include <linux/init.h>
18#include <linux/types.h> 19#include <linux/types.h>
19 20
20struct rtattr; 21struct rtattr;
@@ -64,6 +65,11 @@ void skcipher_geniv_free(struct crypto_instance *inst);
64int skcipher_geniv_init(struct crypto_tfm *tfm); 65int skcipher_geniv_init(struct crypto_tfm *tfm);
65void skcipher_geniv_exit(struct crypto_tfm *tfm); 66void skcipher_geniv_exit(struct crypto_tfm *tfm);
66 67
68int __init eseqiv_module_init(void);
69void __exit eseqiv_module_exit(void);
70int __init chainiv_module_init(void);
71void chainiv_module_exit(void);
72
67static inline struct crypto_ablkcipher *skcipher_geniv_cipher( 73static inline struct crypto_ablkcipher *skcipher_geniv_cipher(
68 struct crypto_ablkcipher *geniv) 74 struct crypto_ablkcipher *geniv)
69{ 75{
diff --git a/include/linux/memstick.h b/include/linux/memstick.h
index 334d059d67..b7ee258888 100644
--- a/include/linux/memstick.h
+++ b/include/linux/memstick.h
@@ -22,6 +22,8 @@ struct ms_status_register {
22 unsigned char reserved; 22 unsigned char reserved;
23 unsigned char interrupt; 23 unsigned char interrupt;
24#define MEMSTICK_INT_CMDNAK 0x0001 24#define MEMSTICK_INT_CMDNAK 0x0001
25#define MEMSTICK_INT_IOREQ 0x0008
26#define MEMSTICK_INT_IOBREQ 0x0010
25#define MEMSTICK_INT_BREQ 0x0020 27#define MEMSTICK_INT_BREQ 0x0020
26#define MEMSTICK_INT_ERR 0x0040 28#define MEMSTICK_INT_ERR 0x0040
27#define MEMSTICK_INT_CED 0x0080 29#define MEMSTICK_INT_CED 0x0080
@@ -47,13 +49,17 @@ struct ms_status_register {
47 49
48struct ms_id_register { 50struct ms_id_register {
49 unsigned char type; 51 unsigned char type;
50 unsigned char reserved; 52 unsigned char if_mode;
51 unsigned char category; 53 unsigned char category;
52 unsigned char class; 54 unsigned char class;
53} __attribute__((packed)); 55} __attribute__((packed));
54 56
55struct ms_param_register { 57struct ms_param_register {
56 unsigned char system; 58 unsigned char system;
59#define MEMSTICK_SYS_ATEN 0xc0
60#define MEMSTICK_SYS_BAMD 0x80
61#define MEMSTICK_SYS_PAM 0x08
62
57 unsigned char block_address_msb; 63 unsigned char block_address_msb;
58 unsigned short block_address; 64 unsigned short block_address;
59 unsigned char cp; 65 unsigned char cp;
@@ -90,16 +96,48 @@ struct ms_register {
90 96
91struct mspro_param_register { 97struct mspro_param_register {
92 unsigned char system; 98 unsigned char system;
99#define MEMSTICK_SYS_SERIAL 0x80
100#define MEMSTICK_SYS_PAR4 0x00
101#define MEMSTICK_SYS_PAR8 0x40
102
103 unsigned short data_count;
104 unsigned int data_address;
105 unsigned char tpc_param;
106} __attribute__((packed));
107
108struct mspro_io_info_register {
109 unsigned char version;
110 unsigned char io_category;
111 unsigned char current_req;
112 unsigned char card_opt_info;
113 unsigned char rdy_wait_time;
114} __attribute__((packed));
115
116struct mspro_io_func_register {
117 unsigned char func_enable;
118 unsigned char func_select;
119 unsigned char func_intmask;
120 unsigned char transfer_mode;
121} __attribute__((packed));
122
123struct mspro_io_cmd_register {
124 unsigned short tpc_param;
93 unsigned short data_count; 125 unsigned short data_count;
94 unsigned int data_address; 126 unsigned int data_address;
95 unsigned char cmd_param;
96} __attribute__((packed)); 127} __attribute__((packed));
97 128
98struct mspro_register { 129struct mspro_register {
99 struct ms_status_register status; 130 struct ms_status_register status;
100 struct ms_id_register id; 131 struct ms_id_register id;
101 unsigned char reserved[8]; 132 unsigned char reserved0[8];
102 struct mspro_param_register param; 133 struct mspro_param_register param;
134 unsigned char reserved1[8];
135 struct mspro_io_info_register io_info;
136 struct mspro_io_func_register io_func;
137 unsigned char reserved2[7];
138 struct mspro_io_cmd_register io_cmd;
139 unsigned char io_int;
140 unsigned char io_int_func;
103} __attribute__((packed)); 141} __attribute__((packed));
104 142
105struct ms_register_addr { 143struct ms_register_addr {
@@ -110,49 +148,55 @@ struct ms_register_addr {
110} __attribute__((packed)); 148} __attribute__((packed));
111 149
112enum { 150enum {
151 MS_TPC_READ_MG_STATUS = 0x01,
113 MS_TPC_READ_LONG_DATA = 0x02, 152 MS_TPC_READ_LONG_DATA = 0x02,
114 MS_TPC_READ_SHORT_DATA = 0x03, 153 MS_TPC_READ_SHORT_DATA = 0x03,
154 MS_TPC_READ_MG_DATA = 0x03,
115 MS_TPC_READ_REG = 0x04, 155 MS_TPC_READ_REG = 0x04,
116 MS_TPC_READ_IO_DATA = 0x05, /* unverified */ 156 MS_TPC_READ_QUAD_DATA = 0x05,
157 MS_TPC_READ_IO_DATA = 0x05,
117 MS_TPC_GET_INT = 0x07, 158 MS_TPC_GET_INT = 0x07,
118 MS_TPC_SET_RW_REG_ADRS = 0x08, 159 MS_TPC_SET_RW_REG_ADRS = 0x08,
119 MS_TPC_EX_SET_CMD = 0x09, 160 MS_TPC_EX_SET_CMD = 0x09,
120 MS_TPC_WRITE_IO_DATA = 0x0a, /* unverified */ 161 MS_TPC_WRITE_QUAD_DATA = 0x0a,
162 MS_TPC_WRITE_IO_DATA = 0x0a,
121 MS_TPC_WRITE_REG = 0x0b, 163 MS_TPC_WRITE_REG = 0x0b,
122 MS_TPC_WRITE_SHORT_DATA = 0x0c, 164 MS_TPC_WRITE_SHORT_DATA = 0x0c,
165 MS_TPC_WRITE_MG_DATA = 0x0c,
123 MS_TPC_WRITE_LONG_DATA = 0x0d, 166 MS_TPC_WRITE_LONG_DATA = 0x0d,
124 MS_TPC_SET_CMD = 0x0e 167 MS_TPC_SET_CMD = 0x0e
125}; 168};
126 169
127enum { 170enum {
128 MS_CMD_BLOCK_END = 0x33, 171 MS_CMD_BLOCK_END = 0x33,
129 MS_CMD_RESET = 0x3c, 172 MS_CMD_RESET = 0x3c,
130 MS_CMD_BLOCK_WRITE = 0x55, 173 MS_CMD_BLOCK_WRITE = 0x55,
131 MS_CMD_SLEEP = 0x5a, 174 MS_CMD_SLEEP = 0x5a,
132 MS_CMD_BLOCK_ERASE = 0x99, 175 MS_CMD_BLOCK_ERASE = 0x99,
133 MS_CMD_BLOCK_READ = 0xaa, 176 MS_CMD_BLOCK_READ = 0xaa,
134 MS_CMD_CLEAR_BUF = 0xc3, 177 MS_CMD_CLEAR_BUF = 0xc3,
135 MS_CMD_FLASH_STOP = 0xcc, 178 MS_CMD_FLASH_STOP = 0xcc,
136 MSPRO_CMD_FORMAT = 0x10, 179 MS_CMD_LOAD_ID = 0x60,
137 MSPRO_CMD_SLEEP = 0x11, 180 MS_CMD_CMP_ICV = 0x7f,
138 MSPRO_CMD_READ_DATA = 0x20, 181 MSPRO_CMD_FORMAT = 0x10,
139 MSPRO_CMD_WRITE_DATA = 0x21, 182 MSPRO_CMD_SLEEP = 0x11,
140 MSPRO_CMD_READ_ATRB = 0x24, 183 MSPRO_CMD_WAKEUP = 0x12,
141 MSPRO_CMD_STOP = 0x25, 184 MSPRO_CMD_READ_DATA = 0x20,
142 MSPRO_CMD_ERASE = 0x26, 185 MSPRO_CMD_WRITE_DATA = 0x21,
143 MSPRO_CMD_SET_IBA = 0x46, 186 MSPRO_CMD_READ_ATRB = 0x24,
144 MSPRO_CMD_SET_IBD = 0x47 187 MSPRO_CMD_STOP = 0x25,
145/* 188 MSPRO_CMD_ERASE = 0x26,
146 MSPRO_CMD_RESET 189 MSPRO_CMD_READ_QUAD = 0x27,
147 MSPRO_CMD_WAKEUP 190 MSPRO_CMD_WRITE_QUAD = 0x28,
148 MSPRO_CMD_IN_IO_DATA 191 MSPRO_CMD_SET_IBD = 0x46,
149 MSPRO_CMD_OUT_IO_DATA 192 MSPRO_CMD_GET_IBD = 0x47,
150 MSPRO_CMD_READ_IO_ATRB 193 MSPRO_CMD_IN_IO_DATA = 0xb0,
151 MSPRO_CMD_IN_IO_FIFO 194 MSPRO_CMD_OUT_IO_DATA = 0xb1,
152 MSPRO_CMD_OUT_IO_FIFO 195 MSPRO_CMD_READ_IO_ATRB = 0xb2,
153 MSPRO_CMD_IN_IOM 196 MSPRO_CMD_IN_IO_FIFO = 0xb3,
154 MSPRO_CMD_OUT_IOM 197 MSPRO_CMD_OUT_IO_FIFO = 0xb4,
155*/ 198 MSPRO_CMD_IN_IOM = 0xb5,
199 MSPRO_CMD_OUT_IOM = 0xb6,
156}; 200};
157 201
158/*** Driver structures and functions ***/ 202/*** Driver structures and functions ***/
@@ -165,7 +209,8 @@ enum memstick_param { MEMSTICK_POWER = 1, MEMSTICK_INTERFACE };
165#define MEMSTICK_POWER_ON 1 209#define MEMSTICK_POWER_ON 1
166 210
167#define MEMSTICK_SERIAL 0 211#define MEMSTICK_SERIAL 0
168#define MEMSTICK_PARALLEL 1 212#define MEMSTICK_PAR4 1
213#define MEMSTICK_PAR8 2
169 214
170struct memstick_host; 215struct memstick_host;
171struct memstick_driver; 216struct memstick_driver;
@@ -195,11 +240,7 @@ struct memstick_request {
195 unsigned char data_dir:1, 240 unsigned char data_dir:1,
196 need_card_int:1, 241 need_card_int:1,
197 get_int_reg:1, 242 get_int_reg:1,
198 io_type:2; 243 long_data:1;
199#define MEMSTICK_IO_NONE 0
200#define MEMSTICK_IO_VAL 1
201#define MEMSTICK_IO_SG 2
202
203 unsigned char int_reg; 244 unsigned char int_reg;
204 int error; 245 int error;
205 union { 246 union {
@@ -231,8 +272,9 @@ struct memstick_host {
231 struct mutex lock; 272 struct mutex lock;
232 unsigned int id; 273 unsigned int id;
233 unsigned int caps; 274 unsigned int caps;
234#define MEMSTICK_CAP_PARALLEL 1 275#define MEMSTICK_CAP_AUTO_GET_INT 1
235#define MEMSTICK_CAP_AUTO_GET_INT 2 276#define MEMSTICK_CAP_PAR4 2
277#define MEMSTICK_CAP_PAR8 4
236 278
237 struct work_struct media_checker; 279 struct work_struct media_checker;
238 struct class_device cdev; 280 struct class_device cdev;
@@ -270,6 +312,8 @@ int memstick_add_host(struct memstick_host *host);
270void memstick_remove_host(struct memstick_host *host); 312void memstick_remove_host(struct memstick_host *host);
271void memstick_free_host(struct memstick_host *host); 313void memstick_free_host(struct memstick_host *host);
272void memstick_detect_change(struct memstick_host *host); 314void memstick_detect_change(struct memstick_host *host);
315void memstick_suspend_host(struct memstick_host *host);
316void memstick_resume_host(struct memstick_host *host);
273 317
274void memstick_init_req_sg(struct memstick_request *mrq, unsigned char tpc, 318void memstick_init_req_sg(struct memstick_request *mrq, unsigned char tpc,
275 struct scatterlist *sg); 319 struct scatterlist *sg);
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
index a69ba80f2d..f4a0e4c218 100644
--- a/include/linux/nfs_fs.h
+++ b/include/linux/nfs_fs.h
@@ -195,6 +195,7 @@ struct nfs_inode {
195#define NFS_INO_ADVISE_RDPLUS (1) /* advise readdirplus */ 195#define NFS_INO_ADVISE_RDPLUS (1) /* advise readdirplus */
196#define NFS_INO_STALE (2) /* possible stale inode */ 196#define NFS_INO_STALE (2) /* possible stale inode */
197#define NFS_INO_ACL_LRU_SET (3) /* Inode is on the LRU list */ 197#define NFS_INO_ACL_LRU_SET (3) /* Inode is on the LRU list */
198#define NFS_INO_MOUNTPOINT (4) /* inode is remote mountpoint */
198 199
199static inline struct nfs_inode *NFS_I(const struct inode *inode) 200static inline struct nfs_inode *NFS_I(const struct inode *inode)
200{ 201{
diff --git a/include/linux/pci.h b/include/linux/pci.h
index f3165e7ac4..38eff19477 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -389,13 +389,13 @@ struct pci_driver {
389#define to_pci_driver(drv) container_of(drv, struct pci_driver, driver) 389#define to_pci_driver(drv) container_of(drv, struct pci_driver, driver)
390 390
391/** 391/**
392 * DECLARE_PCI_DEVICE_TABLE - macro used to describe a pci device table 392 * DEFINE_PCI_DEVICE_TABLE - macro used to describe a pci device table
393 * @_table: device table name 393 * @_table: device table name
394 * 394 *
395 * This macro is used to create a struct pci_device_id array (a device table) 395 * This macro is used to create a struct pci_device_id array (a device table)
396 * in a generic manner. 396 * in a generic manner.
397 */ 397 */
398#define DECLARE_PCI_DEVICE_TABLE(_table) \ 398#define DEFINE_PCI_DEVICE_TABLE(_table) \
399 const struct pci_device_id _table[] __devinitconst 399 const struct pci_device_id _table[] __devinitconst
400 400
401/** 401/**
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index effdb558a5..70eb3c803d 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -2184,6 +2184,7 @@
2184#define PCI_DEVICE_ID_JMICRON_JMB366 0x2366 2184#define PCI_DEVICE_ID_JMICRON_JMB366 0x2366
2185#define PCI_DEVICE_ID_JMICRON_JMB368 0x2368 2185#define PCI_DEVICE_ID_JMICRON_JMB368 0x2368
2186#define PCI_DEVICE_ID_JMICRON_JMB38X_SD 0x2381 2186#define PCI_DEVICE_ID_JMICRON_JMB38X_SD 0x2381
2187#define PCI_DEVICE_ID_JMICRON_JMB38X_MS 0x2383
2187 2188
2188#define PCI_VENDOR_ID_KORENIX 0x1982 2189#define PCI_VENDOR_ID_KORENIX 0x1982
2189#define PCI_DEVICE_ID_KORENIX_JETCARDF0 0x1600 2190#define PCI_DEVICE_ID_KORENIX_JETCARDF0 0x1600
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 9ae4030067..11d8e9a74e 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -899,6 +899,10 @@ struct sched_class {
899 int running); 899 int running);
900 void (*prio_changed) (struct rq *this_rq, struct task_struct *task, 900 void (*prio_changed) (struct rq *this_rq, struct task_struct *task,
901 int oldprio, int running); 901 int oldprio, int running);
902
903#ifdef CONFIG_FAIR_GROUP_SCHED
904 void (*moved_group) (struct task_struct *p);
905#endif
902}; 906};
903 907
904struct load_weight { 908struct load_weight {
diff --git a/include/linux/slab_def.h b/include/linux/slab_def.h
index fcc48096ee..39c3a5eb8e 100644
--- a/include/linux/slab_def.h
+++ b/include/linux/slab_def.h
@@ -41,7 +41,7 @@ static inline void *kmalloc(size_t size, gfp_t flags)
41 goto found; \ 41 goto found; \
42 else \ 42 else \
43 i++; 43 i++;
44#include "kmalloc_sizes.h" 44#include <linux/kmalloc_sizes.h>
45#undef CACHE 45#undef CACHE
46 { 46 {
47 extern void __you_cannot_kmalloc_that_much(void); 47 extern void __you_cannot_kmalloc_that_much(void);
@@ -75,7 +75,7 @@ static inline void *kmalloc_node(size_t size, gfp_t flags, int node)
75 goto found; \ 75 goto found; \
76 else \ 76 else \
77 i++; 77 i++;
78#include "kmalloc_sizes.h" 78#include <linux/kmalloc_sizes.h>
79#undef CACHE 79#undef CACHE
80 { 80 {
81 extern void __you_cannot_kmalloc_that_much(void); 81 extern void __you_cannot_kmalloc_that_much(void);
diff --git a/include/linux/tifm.h b/include/linux/tifm.h
index da76ed85f5..848c0f3925 100644
--- a/include/linux/tifm.h
+++ b/include/linux/tifm.h
@@ -70,9 +70,9 @@ enum {
70 70
71#define TIFM_FIFO_ENABLE 0x00000001 71#define TIFM_FIFO_ENABLE 0x00000001
72#define TIFM_FIFO_READY 0x00000001 72#define TIFM_FIFO_READY 0x00000001
73#define TIFM_FIFO_MORE 0x00000008
73#define TIFM_FIFO_INT_SETALL 0x0000ffff 74#define TIFM_FIFO_INT_SETALL 0x0000ffff
74#define TIFM_FIFO_INTMASK 0x00000005 75#define TIFM_FIFO_INTMASK 0x00000005
75#define TIFM_FIFO_SIZE 0x00000200
76 76
77#define TIFM_DMA_RESET 0x00000002 77#define TIFM_DMA_RESET 0x00000002
78#define TIFM_DMA_TX 0x00008000 78#define TIFM_DMA_TX 0x00008000
diff --git a/include/linux/time.h b/include/linux/time.h
index 2091a19f16..d32ef0ad4c 100644
--- a/include/linux/time.h
+++ b/include/linux/time.h
@@ -174,6 +174,10 @@ static inline void timespec_add_ns(struct timespec *a, u64 ns)
174{ 174{
175 ns += a->tv_nsec; 175 ns += a->tv_nsec;
176 while(unlikely(ns >= NSEC_PER_SEC)) { 176 while(unlikely(ns >= NSEC_PER_SEC)) {
177 /* The following asm() prevents the compiler from
178 * optimising this loop into a modulo operation. */
179 asm("" : "+r"(ns));
180
177 ns -= NSEC_PER_SEC; 181 ns -= NSEC_PER_SEC;
178 a->tv_sec++; 182 a->tv_sec++;
179 } 183 }
diff --git a/include/linux/timex.h b/include/linux/timex.h
index c3f374786a..8ea3e71ba7 100644
--- a/include/linux/timex.h
+++ b/include/linux/timex.h
@@ -232,14 +232,7 @@ static inline int ntp_synced(void)
232#else 232#else
233#define NTP_INTERVAL_FREQ (HZ) 233#define NTP_INTERVAL_FREQ (HZ)
234#endif 234#endif
235 235#define NTP_INTERVAL_LENGTH (NSEC_PER_SEC/NTP_INTERVAL_FREQ)
236#define CLOCK_TICK_OVERFLOW (LATCH * HZ - CLOCK_TICK_RATE)
237#define CLOCK_TICK_ADJUST (((s64)CLOCK_TICK_OVERFLOW * NSEC_PER_SEC) / \
238 (s64)CLOCK_TICK_RATE)
239
240/* Because using NSEC_PER_SEC would be too easy */
241#define NTP_INTERVAL_LENGTH ((((s64)TICK_USEC * NSEC_PER_USEC * USER_HZ) + \
242 CLOCK_TICK_ADJUST) / NTP_INTERVAL_FREQ)
243 236
244/* Returns how long ticks are at present, in ns / 2^(SHIFT_SCALE-10). */ 237/* Returns how long ticks are at present, in ns / 2^(SHIFT_SCALE-10). */
245extern u64 current_tick_length(void); 238extern u64 current_tick_length(void);
diff --git a/init/Kconfig b/init/Kconfig
index 074ac97f55..a97924bc5b 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -865,38 +865,10 @@ source "block/Kconfig"
865config PREEMPT_NOTIFIERS 865config PREEMPT_NOTIFIERS
866 bool 866 bool
867 867
868choice
869 prompt "RCU implementation type:"
870 default CLASSIC_RCU
871 help
872 This allows you to choose either the classic RCU implementation
873 that is designed for best read-side performance on non-realtime
874 systems, or the preemptible RCU implementation for best latency
875 on realtime systems. Note that some kernel preemption modes
876 will restrict your choice.
877
878 Select the default if you are unsure.
879
880config CLASSIC_RCU 868config CLASSIC_RCU
881 bool "Classic RCU" 869 def_bool !PREEMPT_RCU
882 help 870 help
883 This option selects the classic RCU implementation that is 871 This option selects the classic RCU implementation that is
884 designed for best read-side performance on non-realtime 872 designed for best read-side performance on non-realtime
885 systems. 873 systems. Classic RCU is the default. Note that the
886 874 PREEMPT_RCU symbol is used to select/deselect this option.
887 Say Y if you are unsure.
888
889config PREEMPT_RCU
890 bool "Preemptible RCU"
891 depends on PREEMPT
892 help
893 This option reduces the latency of the kernel by making certain
894 RCU sections preemptible. Normally RCU code is non-preemptible, if
895 this option is selected then read-only RCU sections become
896 preemptible. This helps latency, but may expose bugs due to
897 now-naive assumptions about each RCU read-side critical section
898 remaining on a given CPU through its execution.
899
900 Say N if you are unsure.
901
902endchoice
diff --git a/ipc/shm.c b/ipc/shm.c
index c47e87278a..cc63fae02f 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -271,9 +271,10 @@ static struct mempolicy *shm_get_policy(struct vm_area_struct *vma,
271 271
272 if (sfd->vm_ops->get_policy) 272 if (sfd->vm_ops->get_policy)
273 pol = sfd->vm_ops->get_policy(vma, addr); 273 pol = sfd->vm_ops->get_policy(vma, addr);
274 else if (vma->vm_policy) 274 else if (vma->vm_policy) {
275 pol = vma->vm_policy; 275 pol = vma->vm_policy;
276 else 276 mpol_get(pol); /* get_vma_policy() expects this */
277 } else
277 pol = current->mempolicy; 278 pol = current->mempolicy;
278 return pol; 279 return pol;
279} 280}
diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
index 0669b70fa6..9fdba03dc1 100644
--- a/kernel/Kconfig.preempt
+++ b/kernel/Kconfig.preempt
@@ -52,8 +52,23 @@ config PREEMPT
52 52
53endchoice 53endchoice
54 54
55config PREEMPT_RCU
56 bool "Preemptible RCU"
57 depends on PREEMPT
58 default n
59 help
60 This option reduces the latency of the kernel by making certain
61 RCU sections preemptible. Normally RCU code is non-preemptible, if
62 this option is selected then read-only RCU sections become
63 preemptible. This helps latency, but may expose bugs due to
64 now-naive assumptions about each RCU read-side critical section
65 remaining on a given CPU through its execution.
66
67 Say N if you are unsure.
68
55config RCU_TRACE 69config RCU_TRACE
56 bool "Enable tracing for RCU - currently stats in debugfs" 70 bool "Enable tracing for RCU - currently stats in debugfs"
71 depends on PREEMPT_RCU
57 select DEBUG_FS 72 select DEBUG_FS
58 default y 73 default y
59 help 74 help
diff --git a/kernel/exit.c b/kernel/exit.c
index cd20bf07e9..53872bf993 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -1378,7 +1378,7 @@ unlock_sig:
1378 if (!retval && infop) 1378 if (!retval && infop)
1379 retval = put_user(0, &infop->si_errno); 1379 retval = put_user(0, &infop->si_errno);
1380 if (!retval && infop) 1380 if (!retval && infop)
1381 retval = put_user(why, &infop->si_code); 1381 retval = put_user((short)why, &infop->si_code);
1382 if (!retval && infop) 1382 if (!retval && infop)
1383 retval = put_user(exit_code, &infop->si_status); 1383 retval = put_user(exit_code, &infop->si_status);
1384 if (!retval && infop) 1384 if (!retval && infop)
diff --git a/kernel/module.c b/kernel/module.c
index be4807fb90..5d437bffd8 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -2178,10 +2178,20 @@ sys_init_module(void __user *umod,
2178 wake_up(&module_wq); 2178 wake_up(&module_wq);
2179 return ret; 2179 return ret;
2180 } 2180 }
2181 if (ret > 0) {
2182 printk(KERN_WARNING "%s: '%s'->init suspiciously returned %d, "
2183 "it should follow 0/-E convention\n"
2184 KERN_WARNING "%s: loading module anyway...\n",
2185 __func__, mod->name, ret,
2186 __func__);
2187 dump_stack();
2188 }
2181 2189
2182 /* Now it's a first class citizen! */ 2190 /* Now it's a first class citizen! Wake up anyone waiting for it. */
2183 mutex_lock(&module_mutex);
2184 mod->state = MODULE_STATE_LIVE; 2191 mod->state = MODULE_STATE_LIVE;
2192 wake_up(&module_wq);
2193
2194 mutex_lock(&module_mutex);
2185 /* Drop initial reference. */ 2195 /* Drop initial reference. */
2186 module_put(mod); 2196 module_put(mod);
2187 unwind_remove_table(mod->unwind_info, 1); 2197 unwind_remove_table(mod->unwind_info, 1);
@@ -2190,7 +2200,6 @@ sys_init_module(void __user *umod,
2190 mod->init_size = 0; 2200 mod->init_size = 0;
2191 mod->init_text_size = 0; 2201 mod->init_text_size = 0;
2192 mutex_unlock(&module_mutex); 2202 mutex_unlock(&module_mutex);
2193 wake_up(&module_wq);
2194 2203
2195 return 0; 2204 return 0;
2196} 2205}
diff --git a/kernel/sched.c b/kernel/sched.c
index dcd553cc4e..b02e4fc256 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -4422,7 +4422,7 @@ int task_nice(const struct task_struct *p)
4422{ 4422{
4423 return TASK_NICE(p); 4423 return TASK_NICE(p);
4424} 4424}
4425EXPORT_SYMBOL_GPL(task_nice); 4425EXPORT_SYMBOL(task_nice);
4426 4426
4427/** 4427/**
4428 * idle_cpu - is a given cpu idle currently? 4428 * idle_cpu - is a given cpu idle currently?
@@ -5100,7 +5100,7 @@ long sys_sched_rr_get_interval(pid_t pid, struct timespec __user *interval)
5100 time_slice = 0; 5100 time_slice = 0;
5101 if (p->policy == SCHED_RR) { 5101 if (p->policy == SCHED_RR) {
5102 time_slice = DEF_TIMESLICE; 5102 time_slice = DEF_TIMESLICE;
5103 } else { 5103 } else if (p->policy != SCHED_FIFO) {
5104 struct sched_entity *se = &p->se; 5104 struct sched_entity *se = &p->se;
5105 unsigned long flags; 5105 unsigned long flags;
5106 struct rq *rq; 5106 struct rq *rq;
@@ -5813,6 +5813,13 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu)
5813 /* Must be high prio: stop_machine expects to yield to it. */ 5813 /* Must be high prio: stop_machine expects to yield to it. */
5814 rq = task_rq_lock(p, &flags); 5814 rq = task_rq_lock(p, &flags);
5815 __setscheduler(rq, p, SCHED_FIFO, MAX_RT_PRIO-1); 5815 __setscheduler(rq, p, SCHED_FIFO, MAX_RT_PRIO-1);
5816
5817 /* Update our root-domain */
5818 if (rq->rd) {
5819 BUG_ON(!cpu_isset(cpu, rq->rd->span));
5820 cpu_set(cpu, rq->rd->online);
5821 }
5822
5816 task_rq_unlock(rq, &flags); 5823 task_rq_unlock(rq, &flags);
5817 cpu_rq(cpu)->migration_thread = p; 5824 cpu_rq(cpu)->migration_thread = p;
5818 break; 5825 break;
@@ -5821,15 +5828,6 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu)
5821 case CPU_ONLINE_FROZEN: 5828 case CPU_ONLINE_FROZEN:
5822 /* Strictly unnecessary, as first user will wake it. */ 5829 /* Strictly unnecessary, as first user will wake it. */
5823 wake_up_process(cpu_rq(cpu)->migration_thread); 5830 wake_up_process(cpu_rq(cpu)->migration_thread);
5824
5825 /* Update our root-domain */
5826 rq = cpu_rq(cpu);
5827 spin_lock_irqsave(&rq->lock, flags);
5828 if (rq->rd) {
5829 BUG_ON(!cpu_isset(cpu, rq->rd->span));
5830 cpu_set(cpu, rq->rd->online);
5831 }
5832 spin_unlock_irqrestore(&rq->lock, flags);
5833 break; 5831 break;
5834 5832
5835#ifdef CONFIG_HOTPLUG_CPU 5833#ifdef CONFIG_HOTPLUG_CPU
@@ -6105,8 +6103,6 @@ static void rq_attach_root(struct rq *rq, struct root_domain *rd)
6105 rq->rd = rd; 6103 rq->rd = rd;
6106 6104
6107 cpu_set(rq->cpu, rd->span); 6105 cpu_set(rq->cpu, rd->span);
6108 if (cpu_isset(rq->cpu, cpu_online_map))
6109 cpu_set(rq->cpu, rd->online);
6110 6106
6111 for (class = sched_class_highest; class; class = class->next) { 6107 for (class = sched_class_highest; class; class = class->next) {
6112 if (class->join_domain) 6108 if (class->join_domain)
@@ -7625,6 +7621,11 @@ void sched_move_task(struct task_struct *tsk)
7625 7621
7626 set_task_rq(tsk, task_cpu(tsk)); 7622 set_task_rq(tsk, task_cpu(tsk));
7627 7623
7624#ifdef CONFIG_FAIR_GROUP_SCHED
7625 if (tsk->sched_class->moved_group)
7626 tsk->sched_class->moved_group(tsk);
7627#endif
7628
7628 if (on_rq) { 7629 if (on_rq) {
7629 if (unlikely(running)) 7630 if (unlikely(running))
7630 tsk->sched_class->set_curr_task(rq); 7631 tsk->sched_class->set_curr_task(rq);
@@ -7721,9 +7722,7 @@ static unsigned long to_ratio(u64 period, u64 runtime)
7721 if (runtime == RUNTIME_INF) 7722 if (runtime == RUNTIME_INF)
7722 return 1ULL << 16; 7723 return 1ULL << 16;
7723 7724
7724 runtime *= (1ULL << 16); 7725 return div64_64(runtime << 16, period);
7725 div64_64(runtime, period);
7726 return runtime;
7727} 7726}
7728 7727
7729static int __rt_schedulable(struct task_group *tg, u64 period, u64 runtime) 7728static int __rt_schedulable(struct task_group *tg, u64 period, u64 runtime)
@@ -7747,25 +7746,40 @@ static int __rt_schedulable(struct task_group *tg, u64 period, u64 runtime)
7747 return total + to_ratio(period, runtime) < global_ratio; 7746 return total + to_ratio(period, runtime) < global_ratio;
7748} 7747}
7749 7748
7749/* Must be called with tasklist_lock held */
7750static inline int tg_has_rt_tasks(struct task_group *tg)
7751{
7752 struct task_struct *g, *p;
7753 do_each_thread(g, p) {
7754 if (rt_task(p) && rt_rq_of_se(&p->rt)->tg == tg)
7755 return 1;
7756 } while_each_thread(g, p);
7757 return 0;
7758}
7759
7750int sched_group_set_rt_runtime(struct task_group *tg, long rt_runtime_us) 7760int sched_group_set_rt_runtime(struct task_group *tg, long rt_runtime_us)
7751{ 7761{
7752 u64 rt_runtime, rt_period; 7762 u64 rt_runtime, rt_period;
7753 int err = 0; 7763 int err = 0;
7754 7764
7755 rt_period = sysctl_sched_rt_period * NSEC_PER_USEC; 7765 rt_period = (u64)sysctl_sched_rt_period * NSEC_PER_USEC;
7756 rt_runtime = (u64)rt_runtime_us * NSEC_PER_USEC; 7766 rt_runtime = (u64)rt_runtime_us * NSEC_PER_USEC;
7757 if (rt_runtime_us == -1) 7767 if (rt_runtime_us == -1)
7758 rt_runtime = rt_period; 7768 rt_runtime = RUNTIME_INF;
7759 7769
7760 mutex_lock(&rt_constraints_mutex); 7770 mutex_lock(&rt_constraints_mutex);
7771 read_lock(&tasklist_lock);
7772 if (rt_runtime_us == 0 && tg_has_rt_tasks(tg)) {
7773 err = -EBUSY;
7774 goto unlock;
7775 }
7761 if (!__rt_schedulable(tg, rt_period, rt_runtime)) { 7776 if (!__rt_schedulable(tg, rt_period, rt_runtime)) {
7762 err = -EINVAL; 7777 err = -EINVAL;
7763 goto unlock; 7778 goto unlock;
7764 } 7779 }
7765 if (rt_runtime_us == -1)
7766 rt_runtime = RUNTIME_INF;
7767 tg->rt_runtime = rt_runtime; 7780 tg->rt_runtime = rt_runtime;
7768 unlock: 7781 unlock:
7782 read_unlock(&tasklist_lock);
7769 mutex_unlock(&rt_constraints_mutex); 7783 mutex_unlock(&rt_constraints_mutex);
7770 7784
7771 return err; 7785 return err;
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
index 3df4d46994..e2a5305156 100644
--- a/kernel/sched_fair.c
+++ b/kernel/sched_fair.c
@@ -1353,6 +1353,16 @@ static void set_curr_task_fair(struct rq *rq)
1353 set_next_entity(cfs_rq_of(se), se); 1353 set_next_entity(cfs_rq_of(se), se);
1354} 1354}
1355 1355
1356#ifdef CONFIG_FAIR_GROUP_SCHED
1357static void moved_group_fair(struct task_struct *p)
1358{
1359 struct cfs_rq *cfs_rq = task_cfs_rq(p);
1360
1361 update_curr(cfs_rq);
1362 place_entity(cfs_rq, &p->se, 1);
1363}
1364#endif
1365
1356/* 1366/*
1357 * All the scheduling class methods: 1367 * All the scheduling class methods:
1358 */ 1368 */
@@ -1381,6 +1391,10 @@ static const struct sched_class fair_sched_class = {
1381 1391
1382 .prio_changed = prio_changed_fair, 1392 .prio_changed = prio_changed_fair,
1383 .switched_to = switched_to_fair, 1393 .switched_to = switched_to_fair,
1394
1395#ifdef CONFIG_FAIR_GROUP_SCHED
1396 .moved_group = moved_group_fair,
1397#endif
1384}; 1398};
1385 1399
1386#ifdef CONFIG_SCHED_DEBUG 1400#ifdef CONFIG_SCHED_DEBUG
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
index 76e8285175..0a6d2e5164 100644
--- a/kernel/sched_rt.c
+++ b/kernel/sched_rt.c
@@ -1107,9 +1107,11 @@ static void prio_changed_rt(struct rq *rq, struct task_struct *p,
1107 pull_rt_task(rq); 1107 pull_rt_task(rq);
1108 /* 1108 /*
1109 * If there's a higher priority task waiting to run 1109 * If there's a higher priority task waiting to run
1110 * then reschedule. 1110 * then reschedule. Note, the above pull_rt_task
1111 * can release the rq lock and p could migrate.
1112 * Only reschedule if p is still on the same runqueue.
1111 */ 1113 */
1112 if (p->prio > rq->rt.highest_prio) 1114 if (p->prio > rq->rt.highest_prio && rq->curr == p)
1113 resched_task(p); 1115 resched_task(p);
1114#else 1116#else
1115 /* For UP simply resched on drop of prio */ 1117 /* For UP simply resched on drop of prio */
diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
index c88b5910e7..5fd9b94697 100644
--- a/kernel/time/ntp.c
+++ b/kernel/time/ntp.c
@@ -42,12 +42,13 @@ long time_esterror = NTP_PHASE_LIMIT; /* estimated error (us) */
42long time_freq; /* frequency offset (scaled ppm)*/ 42long time_freq; /* frequency offset (scaled ppm)*/
43static long time_reftime; /* time at last adjustment (s) */ 43static long time_reftime; /* time at last adjustment (s) */
44long time_adjust; 44long time_adjust;
45static long ntp_tick_adj;
45 46
46static void ntp_update_frequency(void) 47static void ntp_update_frequency(void)
47{ 48{
48 u64 second_length = (u64)(tick_usec * NSEC_PER_USEC * USER_HZ) 49 u64 second_length = (u64)(tick_usec * NSEC_PER_USEC * USER_HZ)
49 << TICK_LENGTH_SHIFT; 50 << TICK_LENGTH_SHIFT;
50 second_length += (s64)CLOCK_TICK_ADJUST << TICK_LENGTH_SHIFT; 51 second_length += (s64)ntp_tick_adj << TICK_LENGTH_SHIFT;
51 second_length += (s64)time_freq << (TICK_LENGTH_SHIFT - SHIFT_NSEC); 52 second_length += (s64)time_freq << (TICK_LENGTH_SHIFT - SHIFT_NSEC);
52 53
53 tick_length_base = second_length; 54 tick_length_base = second_length;
@@ -342,14 +343,16 @@ int do_adjtimex(struct timex *txc)
342 freq_adj = shift_right(freq_adj, time_constant * 2 + 343 freq_adj = shift_right(freq_adj, time_constant * 2 +
343 (SHIFT_PLL + 2) * 2 - SHIFT_NSEC); 344 (SHIFT_PLL + 2) * 2 - SHIFT_NSEC);
344 if (mtemp >= MINSEC && (time_status & STA_FLL || mtemp > MAXSEC)) { 345 if (mtemp >= MINSEC && (time_status & STA_FLL || mtemp > MAXSEC)) {
346 u64 utemp64;
345 temp64 = time_offset << (SHIFT_NSEC - SHIFT_FLL); 347 temp64 = time_offset << (SHIFT_NSEC - SHIFT_FLL);
346 if (time_offset < 0) { 348 if (time_offset < 0) {
347 temp64 = -temp64; 349 utemp64 = -temp64;
348 do_div(temp64, mtemp); 350 do_div(utemp64, mtemp);
349 freq_adj -= temp64; 351 freq_adj -= utemp64;
350 } else { 352 } else {
351 do_div(temp64, mtemp); 353 utemp64 = temp64;
352 freq_adj += temp64; 354 do_div(utemp64, mtemp);
355 freq_adj += utemp64;
353 } 356 }
354 } 357 }
355 freq_adj += time_freq; 358 freq_adj += time_freq;
@@ -400,3 +403,11 @@ leave: if ((time_status & (STA_UNSYNC|STA_CLOCKERR)) != 0)
400 notify_cmos_timer(); 403 notify_cmos_timer();
401 return(result); 404 return(result);
402} 405}
406
407static int __init ntp_tick_adj_setup(char *str)
408{
409 ntp_tick_adj = simple_strtol(str, NULL, 0);
410 return 1;
411}
412
413__setup("ntp_tick_adj=", ntp_tick_adj_setup);
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
index 2968298f8f..686da821d3 100644
--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -640,7 +640,7 @@ void tick_cancel_sched_timer(int cpu)
640 640
641 if (ts->sched_timer.base) 641 if (ts->sched_timer.base)
642 hrtimer_cancel(&ts->sched_timer); 642 hrtimer_cancel(&ts->sched_timer);
643 ts->tick_stopped = 0; 643
644 ts->nohz_mode = NOHZ_MODE_INACTIVE; 644 ts->nohz_mode = NOHZ_MODE_INACTIVE;
645} 645}
646#endif /* HIGH_RES_TIMERS */ 646#endif /* HIGH_RES_TIMERS */
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index 1af9fb050f..671af612b7 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -187,8 +187,7 @@ static void change_clocksource(void)
187 187
188 clock->error = 0; 188 clock->error = 0;
189 clock->xtime_nsec = 0; 189 clock->xtime_nsec = 0;
190 clocksource_calculate_interval(clock, 190 clocksource_calculate_interval(clock, NTP_INTERVAL_LENGTH);
191 (unsigned long)(current_tick_length()>>TICK_LENGTH_SHIFT));
192 191
193 tick_clock_notify(); 192 tick_clock_notify();
194 193
@@ -245,8 +244,7 @@ void __init timekeeping_init(void)
245 ntp_clear(); 244 ntp_clear();
246 245
247 clock = clocksource_get_next(); 246 clock = clocksource_get_next();
248 clocksource_calculate_interval(clock, 247 clocksource_calculate_interval(clock, NTP_INTERVAL_LENGTH);
249 (unsigned long)(current_tick_length()>>TICK_LENGTH_SHIFT));
250 clock->cycle_last = clocksource_read(clock); 248 clock->cycle_last = clocksource_read(clock);
251 249
252 xtime.tv_sec = sec; 250 xtime.tv_sec = sec;
diff --git a/mm/filemap.c b/mm/filemap.c
index 5c74b68935..df343d1e63 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -28,7 +28,6 @@
28#include <linux/backing-dev.h> 28#include <linux/backing-dev.h>
29#include <linux/pagevec.h> 29#include <linux/pagevec.h>
30#include <linux/blkdev.h> 30#include <linux/blkdev.h>
31#include <linux/backing-dev.h>
32#include <linux/security.h> 31#include <linux/security.h>
33#include <linux/syscalls.h> 32#include <linux/syscalls.h>
34#include <linux/cpuset.h> 33#include <linux/cpuset.h>
@@ -1743,21 +1742,27 @@ size_t iov_iter_copy_from_user(struct page *page,
1743} 1742}
1744EXPORT_SYMBOL(iov_iter_copy_from_user); 1743EXPORT_SYMBOL(iov_iter_copy_from_user);
1745 1744
1746static void __iov_iter_advance_iov(struct iov_iter *i, size_t bytes) 1745void iov_iter_advance(struct iov_iter *i, size_t bytes)
1747{ 1746{
1747 BUG_ON(i->count < bytes);
1748
1748 if (likely(i->nr_segs == 1)) { 1749 if (likely(i->nr_segs == 1)) {
1749 i->iov_offset += bytes; 1750 i->iov_offset += bytes;
1751 i->count -= bytes;
1750 } else { 1752 } else {
1751 const struct iovec *iov = i->iov; 1753 const struct iovec *iov = i->iov;
1752 size_t base = i->iov_offset; 1754 size_t base = i->iov_offset;
1753 1755
1754 /* 1756 /*
1755 * The !iov->iov_len check ensures we skip over unlikely 1757 * The !iov->iov_len check ensures we skip over unlikely
1756 * zero-length segments. 1758 * zero-length segments (without overruning the iovec).
1757 */ 1759 */
1758 while (bytes || !iov->iov_len) { 1760 while (bytes || unlikely(!iov->iov_len && i->count)) {
1759 int copy = min(bytes, iov->iov_len - base); 1761 int copy;
1760 1762
1763 copy = min(bytes, iov->iov_len - base);
1764 BUG_ON(!i->count || i->count < copy);
1765 i->count -= copy;
1761 bytes -= copy; 1766 bytes -= copy;
1762 base += copy; 1767 base += copy;
1763 if (iov->iov_len == base) { 1768 if (iov->iov_len == base) {
@@ -1769,14 +1774,6 @@ static void __iov_iter_advance_iov(struct iov_iter *i, size_t bytes)
1769 i->iov_offset = base; 1774 i->iov_offset = base;
1770 } 1775 }
1771} 1776}
1772
1773void iov_iter_advance(struct iov_iter *i, size_t bytes)
1774{
1775 BUG_ON(i->count < bytes);
1776
1777 __iov_iter_advance_iov(i, bytes);
1778 i->count -= bytes;
1779}
1780EXPORT_SYMBOL(iov_iter_advance); 1777EXPORT_SYMBOL(iov_iter_advance);
1781 1778
1782/* 1779/*
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index dcacc811e7..74c1b6b0b3 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -286,6 +286,12 @@ static struct page *alloc_buddy_huge_page(struct vm_area_struct *vma,
286 286
287 spin_lock(&hugetlb_lock); 287 spin_lock(&hugetlb_lock);
288 if (page) { 288 if (page) {
289 /*
290 * This page is now managed by the hugetlb allocator and has
291 * no users -- drop the buddy allocator's reference.
292 */
293 put_page_testzero(page);
294 VM_BUG_ON(page_count(page));
289 nid = page_to_nid(page); 295 nid = page_to_nid(page);
290 set_compound_page_dtor(page, free_huge_page); 296 set_compound_page_dtor(page, free_huge_page);
291 /* 297 /*
@@ -369,13 +375,14 @@ free:
369 enqueue_huge_page(page); 375 enqueue_huge_page(page);
370 else { 376 else {
371 /* 377 /*
372 * Decrement the refcount and free the page using its 378 * The page has a reference count of zero already, so
373 * destructor. This must be done with hugetlb_lock 379 * call free_huge_page directly instead of using
380 * put_page. This must be done with hugetlb_lock
374 * unlocked which is safe because free_huge_page takes 381 * unlocked which is safe because free_huge_page takes
375 * hugetlb_lock before deciding how to free the page. 382 * hugetlb_lock before deciding how to free the page.
376 */ 383 */
377 spin_unlock(&hugetlb_lock); 384 spin_unlock(&hugetlb_lock);
378 put_page(page); 385 free_huge_page(page);
379 spin_lock(&hugetlb_lock); 386 spin_lock(&hugetlb_lock);
380 } 387 }
381 } 388 }
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index 6c7ba1a63d..3c36011215 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -1296,7 +1296,9 @@ struct zonelist *huge_zonelist(struct vm_area_struct *vma, unsigned long addr,
1296 unsigned nid; 1296 unsigned nid;
1297 1297
1298 nid = interleave_nid(pol, vma, addr, HPAGE_SHIFT); 1298 nid = interleave_nid(pol, vma, addr, HPAGE_SHIFT);
1299 __mpol_free(pol); /* finished with pol */ 1299 if (unlikely(pol != &default_policy &&
1300 pol != current->mempolicy))
1301 __mpol_free(pol); /* finished with pol */
1300 return NODE_DATA(nid)->node_zonelists + gfp_zone(gfp_flags); 1302 return NODE_DATA(nid)->node_zonelists + gfp_zone(gfp_flags);
1301 } 1303 }
1302 1304
@@ -1360,6 +1362,9 @@ alloc_page_vma(gfp_t gfp, struct vm_area_struct *vma, unsigned long addr)
1360 unsigned nid; 1362 unsigned nid;
1361 1363
1362 nid = interleave_nid(pol, vma, addr, PAGE_SHIFT); 1364 nid = interleave_nid(pol, vma, addr, PAGE_SHIFT);
1365 if (unlikely(pol != &default_policy &&
1366 pol != current->mempolicy))
1367 __mpol_free(pol); /* finished with pol */
1363 return alloc_page_interleave(gfp, 0, nid); 1368 return alloc_page_interleave(gfp, 0, nid);
1364 } 1369 }
1365 zl = zonelist_policy(gfp, pol); 1370 zl = zonelist_policy(gfp, pol);
diff --git a/mm/slab.c b/mm/slab.c
index 473e6c2eae..e6c698f556 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -333,7 +333,7 @@ static __always_inline int index_of(const size_t size)
333 return i; \ 333 return i; \
334 else \ 334 else \
335 i++; 335 i++;
336#include "linux/kmalloc_sizes.h" 336#include <linux/kmalloc_sizes.h>
337#undef CACHE 337#undef CACHE
338 __bad_size(); 338 __bad_size();
339 } else 339 } else
@@ -2964,11 +2964,10 @@ static void *cache_alloc_refill(struct kmem_cache *cachep, gfp_t flags)
2964 struct array_cache *ac; 2964 struct array_cache *ac;
2965 int node; 2965 int node;
2966 2966
2967 node = numa_node_id(); 2967retry:
2968
2969 check_irq_off(); 2968 check_irq_off();
2969 node = numa_node_id();
2970 ac = cpu_cache_get(cachep); 2970 ac = cpu_cache_get(cachep);
2971retry:
2972 batchcount = ac->batchcount; 2971 batchcount = ac->batchcount;
2973 if (!ac->touched && batchcount > BATCHREFILL_LIMIT) { 2972 if (!ac->touched && batchcount > BATCHREFILL_LIMIT) {
2974 /* 2973 /*
@@ -3280,7 +3279,7 @@ retry:
3280 if (local_flags & __GFP_WAIT) 3279 if (local_flags & __GFP_WAIT)
3281 local_irq_enable(); 3280 local_irq_enable();
3282 kmem_flagcheck(cache, flags); 3281 kmem_flagcheck(cache, flags);
3283 obj = kmem_getpages(cache, flags, -1); 3282 obj = kmem_getpages(cache, local_flags, -1);
3284 if (local_flags & __GFP_WAIT) 3283 if (local_flags & __GFP_WAIT)
3285 local_irq_disable(); 3284 local_irq_disable();
3286 if (obj) { 3285 if (obj) {
diff --git a/mm/slub.c b/mm/slub.c
index 0863fd38a5..96d63eb3ab 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -1368,7 +1368,7 @@ static void deactivate_slab(struct kmem_cache *s, struct kmem_cache_cpu *c)
1368 struct page *page = c->page; 1368 struct page *page = c->page;
1369 int tail = 1; 1369 int tail = 1;
1370 1370
1371 if (c->freelist) 1371 if (page->freelist)
1372 stat(c, DEACTIVATE_REMOTE_FREES); 1372 stat(c, DEACTIVATE_REMOTE_FREES);
1373 /* 1373 /*
1374 * Merge cpu freelist into slab freelist. Typically we get here 1374 * Merge cpu freelist into slab freelist. Typically we get here
@@ -1856,12 +1856,15 @@ static unsigned long calculate_alignment(unsigned long flags,
1856 * The hardware cache alignment cannot override the specified 1856 * The hardware cache alignment cannot override the specified
1857 * alignment though. If that is greater then use it. 1857 * alignment though. If that is greater then use it.
1858 */ 1858 */
1859 if ((flags & SLAB_HWCACHE_ALIGN) && 1859 if (flags & SLAB_HWCACHE_ALIGN) {
1860 size > cache_line_size() / 2) 1860 unsigned long ralign = cache_line_size();
1861 return max_t(unsigned long, align, cache_line_size()); 1861 while (size <= ralign / 2)
1862 ralign /= 2;
1863 align = max(align, ralign);
1864 }
1862 1865
1863 if (align < ARCH_SLAB_MINALIGN) 1866 if (align < ARCH_SLAB_MINALIGN)
1864 return ARCH_SLAB_MINALIGN; 1867 align = ARCH_SLAB_MINALIGN;
1865 1868
1866 return ALIGN(align, sizeof(void *)); 1869 return ALIGN(align, sizeof(void *));
1867} 1870}
diff --git a/net/sunrpc/xprtrdma/transport.c b/net/sunrpc/xprtrdma/transport.c
index 02c522c17d..a564c1a39e 100644
--- a/net/sunrpc/xprtrdma/transport.c
+++ b/net/sunrpc/xprtrdma/transport.c
@@ -614,7 +614,11 @@ xprt_rdma_free(void *buffer)
614 return; 614 return;
615 615
616 req = container_of(buffer, struct rpcrdma_req, rl_xdr_buf[0]); 616 req = container_of(buffer, struct rpcrdma_req, rl_xdr_buf[0]);
617 r_xprt = container_of(req->rl_buffer, struct rpcrdma_xprt, rx_buf); 617 if (req->rl_iov.length == 0) { /* see allocate above */
618 r_xprt = container_of(((struct rpcrdma_req *) req->rl_buffer)->rl_buffer,
619 struct rpcrdma_xprt, rx_buf);
620 } else
621 r_xprt = container_of(req->rl_buffer, struct rpcrdma_xprt, rx_buf);
618 rep = req->rl_reply; 622 rep = req->rl_reply;
619 623
620 dprintk("RPC: %s: called on 0x%p%s\n", 624 dprintk("RPC: %s: called on 0x%p%s\n",